Even though the impracticality of the idea is large, the FUN and JOY of playing around in a 3D environment is still jupiter-sized.
I personally would love to try and make a simple arena shooter for me and friends to enjoy occasionaly.
Oysi's 3D Rendering & Physics Engine
- Roland_Yonaba
- Inner party member
- Posts: 1563
- Joined: Tue Jun 21, 2011 6:08 pm
- Location: Ouagadougou (Burkina Faso)
- Contact:
Re: 3D Rigid Body Physics
This guy is killing me. As if the "rendering" part was no big deal.Oysi wrote:Thanks! =D Although, if you guys are more interested in the rendering engine and less so in the physics, then prepare to be amazed.
Seriously, this looks amazing. I'll wait to have some code to try it out by myself, but it indeed looks astonishing.
Personally, I am not interested in 3D, and if I was going to dive into 3D, then I would probably not choose Löve. But anyway,
such proof-of-concepts are just brilliant, and I look forward to see how far this can go. So please, keep it up!
What would be very interesting is to share some of your techniques, math and calculations involved in this work as articles or blog posts. If you are inclined to do so, I am pretty sure it would be very learningful to others out there. By the way, is there any chance to abstract the actual code as an engine, so that others can include it as a third-party library to render their own custom "3D" scenes in their games ?
Your engine is awesome.Jasoco wrote:Well. This makes my 3D engine look like crap.
- Jasoco
- Inner party member
- Posts: 3727
- Joined: Mon Jun 22, 2009 9:35 am
- Location: Pennsylvania, USA
- Contact:
Re: 3D Rigid Body Physics
Haha. I know. I'd love to compare notes though. I notice some similarities between our engines. I'd planned on putting shadow casting sun in mine too but always thought since I like seeing the sun in the sky it would make the shadow always being cast from the faces you're looking at and everything would always be dark. But it looks odd with a sun in the distance and shadows from above like Minecraft. And since I rewrote the engine I haven't gotten around to reimplementing shadows anyway. I've been more preoccupied with my cave generation lately and haven't done any work on the 3D engine in a while. I keep having ideas for games I want to use my engine for but I can't bring myself to start coding them.Roland_Yonaba wrote:Your engine is awesome.Jasoco wrote:Well. This makes my 3D engine look like crap.
Hey, Oysi. I'd love to see some video of the engine in action. Also, on the topic of your framerate, that's pretty low. I know I get low framerate if I do too much too but I keep the number of polygons low and use 4-sided polys when I can instead of two triangles to draw less on screen. (Unless Löve actually draws two triangles when doing a 4-sided polygon anyway then I'm only saving myself trouble of coding the two triangles) I also don't bother with diffusion and shading. Keeping to a more SuperFX-like feel. In fact my engine is called "SuprEffex".
I also have texture support, it's kind of slow, but as long as I don't use too many textures it's fine. Thanks to a library created by xXxMoNkEyMaNxXx. I can even use canvases for the texture and in one case I actually draw a separate 3D world to a canvas and display it on another object in my main world.
#ExplanaBrag
My question is how did you create the scene in those screenshots? Did you use a 3D program that exports a specific file type? Because it's hard enough for me to code the objects I have now by hand. I'd kill for a 3D program that could export in a format I could use. Also, do you split your worlds up into chunks or are you rendering the entire scene at once including stuff not on screen? Man, I'd love to compare notes. I'd be interested in seeing what parallels we used. And if your camera and 2D to 3D math is any different because mine is clunky and doesn't work exactly how a 3D camera should. (Hard to explain without showing it off really.)
Re: 3D Rigid Body Physics
Yeah, but I do actually have per-pixel z-indexing. And it works perfectly, actually. It's how the shadows work, as well. The problem comes with the actual depth testing. There are these strange artefacts that occur when you write to the same canvas you are reading from, from a shader. Meaning that when I get the depth and match it against the depth already stored, I get problems when I write the stored depth back into the buffer/canvas. But my actual depth buffer works fine, here's a pic of how it's saved: (you can see the artefacts in the upper left and right corners)Jasoco wrote:Okay maybe not, but still. I see you have the same z-indexing issue as me. Not really something you can solve without actual per-pixel z-indexing. Also an early version of my engine had shadows too. But I haven't implemented them in my remade version yet.
I figured as much. Eventually, anyway. Heh, I spent hours trying to fix my thing, thinking it was something with my code. I finally realized it wasn't a problem with my code, but a problem with love. I tried it in a basic testing thingy where I drew random triangles and prioritized lighter color with a shader (so that they would appear on top), and I got the exact same artefacts.Nixola wrote:If I recall correctly, you shouldn't be using the currently set canvas like this, as it could cause this kind of issues
The code is already like an engine, excluding shadows and z buffer, where I have to manually enter all the render settings. Everything else is done from functions to my graphics lib. But like I said, I think I will upload a basic version. Containing only vec3, mat4, and some basic rendering. At least at first.Roland_Yonaba wrote:What would be very interesting is to share some of your techniques, math and calculations involved in this work as articles or blog posts. If you are inclined to do so, I am pretty sure it would be very learningful to others out there. By the way, is there any chance to abstract the actual code as an engine, so that others can include it as a third-party library to render their own custom "3D" scenes in their games ?
Well, I don't have any videos of the newest stuff. I will rewrite and optimize, as it's currently a big pile of frog legs. However, you can check out my youtube channel for some videos of some older stuff:Jasoco wrote:Hey, Oysi. I'd love to see some video of the engine in action.
https://www.youtube.com/watch?v=DDS7d9hlDk8
https://www.youtube.com/watch?v=nPa6KFRSflg (this one has cloth physics =O)
I actually used Roblox. The scene in those pictures is from a map in a game that I made years ago. The game got a bit popular, but I went away for a year, never balanced shit, and never consistently updated, so yeah. But the map I made is still nice, though. xDJasoco wrote:My question is how did you create the scene in those screenshots? Did you use a 3D program that exports a specific file type? Because it's hard enough for me to code the objects I have now by hand. I'd kill for a 3D program that could export in a format I could use. Also, do you split your worlds up into chunks or are you rendering the entire scene at once including stuff not on screen? Man, I'd love to compare notes. I'd be interested in seeing what parallels we used. And if your camera and 2D to 3D math is any different because mine is clunky and doesn't work exactly how a 3D camera should. (Hard to explain without showing it off really.)
As for how I render stuff, I would love to go in depth into that, but I feel this post is big enough as it is. My projection is rather simple (and orthodox), in that it's a simple camera:inverse() * vertex, and then do x = x/-z, y = y/-z, and some other stuff for fov and screen ratio.
Follow the potato. Achieve enlightenment.
Re: 3D Rigid Body Physics
I currently can't do all too much, as I have 4 exams coming at me in the near future, and one of them is in 12 hours. So any uploads won't happen very soon. But I did check out your engine, Jasoco. Cool stuff. And in doing so, I realized that I really fucking need some textures. So I sat down for 10 minutes, writing up a simple math problem, and boom, the textures were there. xD
I originally used a potato as the texture, but you couldn't see too much 3D in it. So I swapped to a checkers board.
And just to show some speed...
That is rendering 2000 triangles. Which is also the beauty of it. That reminds me, you talked a bit about rendering quads instead of triangles, for more speed. I guess that would somewhat work, but the thing is that triangles are much easier to work with. Especially with stuff like clipping and texture mapping.
I originally used a potato as the texture, but you couldn't see too much 3D in it. So I swapped to a checkers board.
And just to show some speed...
That is rendering 2000 triangles. Which is also the beauty of it. That reminds me, you talked a bit about rendering quads instead of triangles, for more speed. I guess that would somewhat work, but the thing is that triangles are much easier to work with. Especially with stuff like clipping and texture mapping.
Follow the potato. Achieve enlightenment.
Re: 3D Rigid Body Physics
I can't control myself. With this texture mapping, since I have the UV coordinates for each pixel, I can also do normal mapping. So I applied that to my mesh, and boom. Went from this:
To this:
Damn, I should get back to reading for my exam now...
EDIT: swapped out the pictures with ones that use backface culling and specular shading
To this:
Damn, I should get back to reading for my exam now...
EDIT: swapped out the pictures with ones that use backface culling and specular shading
Last edited by Oysi on Wed May 07, 2014 5:51 pm, edited 1 time in total.
Follow the potato. Achieve enlightenment.
- HugoBDesigner
- Party member
- Posts: 403
- Joined: Mon Feb 24, 2014 6:54 pm
- Location: Above the Pocket Dimension
- Contact:
Re: 3D Rigid Body Physics
Now you can't just "not share" it. It's WONDERFUL!
- substitute541
- Party member
- Posts: 484
- Joined: Fri Aug 24, 2012 9:04 am
- Location: Southern Leyte, Visayas, Philippines
- Contact:
Re: 3D Rigid Body Physics
This is awesome!
Reminds me of my own 3D engine which I discontinued because it sucked. I don't have my graphics card yet though, so I can't do anything that requires shaders.
Also,
Reminds me of my own 3D engine which I discontinued because it sucked. I don't have my graphics card yet though, so I can't do anything that requires shaders.
Also,
Currently designing themes for WordPress.
Sometimes lurks around the forum.
Sometimes lurks around the forum.
- Jasoco
- Inner party member
- Posts: 3727
- Joined: Mon Jun 22, 2009 9:35 am
- Location: Pennsylvania, USA
- Contact:
Re: 3D Rigid Body Physics
I eschew per pixel z-indexing and shading for pure speed. The way our SNES Star Fox forefathers did it before fancy graphics cards came along and Quake'd the world up. I use Lua for calculating everything except for the texture library which is a shader and just accepts four X,Y coordinate pairs and draws an image warped to that shape to the screen. The texture library only causes noticeable slowdown when a lot are used at once. But the original Star Fox games didn't use textures all that much nor did most of the 3D SFX games so I like sticking to that art style. Of course since each polygon is drawn as a separate shape sorted by distance from camera, it causes visual problems with complex 3D geometry, (Each polygon consists of 3-4 distances that are averaged. So some that should be both in front of and behind another polygon will end up being drawn improperly. This is fixed by breaking a polygon into smaller pieces.) but then again, so did the original SFX chip. (Believe me I've played enough Star Fox to notice these artifacts. They're rare but they happen.)
I just don't have any sort of 3D object creator so I do all my objects by hand through trial and error.
At one point I had this working:
And this was a version that has since been destroyed and not recreated yet.
I just don't have any sort of 3D object creator so I do all my objects by hand through trial and error.
That would be really cool. Maybe then I could see what I'm doing wrong and try to fix it. Though it sounds like you're using shaders to do all the 3D work. Is this correct?Oysi wrote:The code is already like an engine, excluding shadows and z buffer, where I have to manually enter all the render settings. Everything else is done from functions to my graphics lib. But like I said, I think I will upload a basic version. Containing only vec3, mat4, and some basic rendering. At least at first.
My code is always a pile of frogs legs. It would seem physics just slows things down a lot. But it's cool. I wouldn't try to make a whole game utilize it though. Sooo sloooow.Oysi wrote:Well, I don't have any videos of the newest stuff. I will rewrite and optimize, as it's currently a big pile of frog legs. However, you can check out my youtube channel for some videos of some older stuff:
https://www.youtube.com/watch?v=DDS7d9hlDk8
https://www.youtube.com/watch?v=nPa6KFRSflg (this one has cloth physics =O)
Nope. You lost me.Oysi wrote:My projection is rather simple (and orthodox), in that it's a simple camera:inverse() * vertex, and then do x = x/-z, y = y/-z, and some other stuff for fov and screen ratio.
Oh come on. Now you're just bragging. Well I can brag too.Oysi wrote:I currently can't do all too much, as I have 4 exams coming at me in the near future, and one of them is in 12 hours. So any uploads won't happen very soon. But I did check out your engine, Jasoco. Cool stuff. And in doing so, I realized that I really fucking need some textures. So I sat down for 10 minutes, writing up a simple math problem, and boom, the textures were there. xD
At one point I had this working:
And this was a version that has since been destroyed and not recreated yet.
- ArchAngel075
- Party member
- Posts: 319
- Joined: Mon Jun 24, 2013 5:16 am
Re: 3D Rigid Body Physics
Personally i WISH i had a good 3D rendering engine for LOVE, as my ultimate desired game (Agora) requires the feeling of peeking around corners ad such in a not- topdown view! (other wise doing thriller and horror is impossible)
Otherwise i can use the 3D for some effects here n there, say the baboViolent2 inspired game i am building...i need them 3D topdown walls!
BUT the most interesting piece for me is that cloth physics, im allways interested in some physics that does cool things...Heck the day i sat down and did gravitational pull from my physics class in a LOVE world i was astounded to actually have orbiting objects! (physics is fun!)
Please do keep up the work! even if its not shared code wise, just seeing it possible and happen in LUA/LOVE is a brilliant read/inspiration!
Otherwise i can use the 3D for some effects here n there, say the baboViolent2 inspired game i am building...i need them 3D topdown walls!
BUT the most interesting piece for me is that cloth physics, im allways interested in some physics that does cool things...Heck the day i sat down and did gravitational pull from my physics class in a LOVE world i was astounded to actually have orbiting objects! (physics is fun!)
Please do keep up the work! even if its not shared code wise, just seeing it possible and happen in LUA/LOVE is a brilliant read/inspiration!
Who is online
Users browsing this forum: zingo and 2 guests