Nixola wrote:I don't know, Jasoco's the expert here
I would say Jasoco's is the expert in 2.5d and fake 3d. Retrotails have also some touchable work in that domain. Patalo It's perhaps more connoisseur of a more really oriented 3D field.
I was answering to tv_user
tv_user wrote:oh, you mean 2.5D?
lf = love.filesystem
ls = love.sound
la = love.audio
lp = love.physics
lt = love.thread
li = love.image
lg = love.graphics
Nixola wrote:I don't know, Jasoco's the expert here
I would say Jasoco's is the expert in 2.5d and fake 3d. Retrotails have also some touchable work in that domain. Patalo It's perhaps more connoisseur of a more really oriented 3D field.
I was answering to tv_user
tv_user wrote:oh, you mean 2.5D?
Yeah, sorry. I was also relating a bit about topic's title, previous discussion and the difficulty to clearly define a bit where are 2d/2.5/3d frontiers in LOVE.
Distorting an image would be the least 3D thing I would want. And not just for doing 3D. It can be used for 2D effects too. We just need it.
Real 3D would require actual 3D calls complete with access to 3D OpenGL features like polygon clipping and sorting.
I've done a couple "3D" demos in my day. The first being simple polygons and a Star Fox tech demo, the other a Wolfenstein-style raycasting project I will definitely get back to at some point if I ever get tired of Minecraft and am able to concentrate. I've been screwing around with 3D since my QBASIC days.
The 3D polygon stuff is simple in that you just need to take points in 3D space, run them through a few math functions to figure out where in 2D space they should be based on the camera position and objects rotation and then draw triangles using those new 2D-ized points. I believe it's how 3D was done before the advent of 3D graphics cards and drivers. Triangles are sorted by their distance from the camera in the middle of the 2D flattening process. But without clipping, you sometimes get overlapping that just looks ugly. This is best used for simple uncrowded 3D. If image distortion existed in Löve, the polygons could be textured. The hard part is optimizing it so you don't destroy your framerate. For instance, precalculate whatever you can so you don't have to recalculate it during runtime, and only recalculate when needed.
The Wolfenstein stuff is completely different. 3D is an illusion formed by scaling images based on their calculated distance from the "camera". Their X location being based on what "ray" they are located at. i.e. the engine sends out rays across your vision to find out how far away the wall is, then figures out how far along a wall segment that is, then displays the proper wall tile slice at the proper X location at the proper scale based on the distance of the segment of wall. Everybody got that? Good. The rest is pretty simple. But the rest besides that rest is a bit more difficult.
I also modified my Wolf engine to make a Mario Kart style engine which works pretty well, but never could get the physics or AI to work.
Either way, neither is really 3D. Just some fancy complicated math and shape/image drawing.
I'll just say that if you really want to do real 3D, believe it not, HTML5 is very good at doing 3D now. If you want to learn JavaScript and WebGL. But really, I don't want to learn that if I don't have to and it'd be neat if Löve could do some of that stuff out of the box.
Jasoco wrote:Distorting an image would be the least 3D thing I would want. And not just for doing 3D. It can be used for 2D effects too. We just need it.
Real 3D would require actual 3D calls complete with access to 3D OpenGL features like polygon clipping and sorting.
I've done a couple "3D" demos in my day. The first being simple polygons and a Star Fox tech demo, the other a Wolfenstein-style raycasting project I will definitely get back to at some point if I ever get tired of Minecraft and am able to concentrate. I've been screwing around with 3D since my QBASIC days.
The 3D polygon stuff is simple in that you just need to take points in 3D space, run them through a few math functions to figure out where in 2D space they should be based on the camera position and objects rotation and then draw triangles using those new 2D-ized points. I believe it's how 3D was done before the advent of 3D graphics cards and drivers. Triangles are sorted by their distance from the camera in the middle of the 2D flattening process. But without clipping, you sometimes get overlapping that just looks ugly. This is best used for simple uncrowded 3D. If image distortion existed in Löve, the polygons could be textured. The hard part is optimizing it so you don't destroy your framerate. For instance, precalculate whatever you can so you don't have to recalculate it during runtime, and only recalculate when needed.
The Wolfenstein stuff is completely different. 3D is an illusion formed by scaling images based on their calculated distance from the "camera". Their X location being based on what "ray" they are located at. i.e. the engine sends out rays across your vision to find out how far away the wall is, then figures out how far along a wall segment that is, then displays the proper wall tile slice at the proper X location at the proper scale based on the distance of the segment of wall. Everybody got that? Good. The rest is pretty simple. But the rest besides that rest is a bit more difficult.
I also modified my Wolf engine to make a Mario Kart style engine which works pretty well, but never could get the physics or AI to work.
Either way, neither is really 3D. Just some fancy complicated math and shape/image drawing.
I'll just say that if you really want to do real 3D, believe it not, HTML5 is very good at doing 3D now. If you want to learn JavaScript and WebGL. But really, I don't want to learn that if I don't have to and it'd be neat if Löve could do some of that stuff out of the box.
That's what I said! I just typed lots and lots of words because I like to do that. Lots and lots of words. It's a stream of consciousness. Words words words.
Semantics. Be it raycasting, polygon matrix transformation, raytracing, or what have you, it all gets mapped onto a 2d surface. Maybe it'll be a stereoscopic image that filtered lenses on the viewer will break down into a 3d-looking image, but supposedly like 10% of the population is stereo-blind (either by eye injuries or other depth perception medical issues) so the effect would be lost as Johnny Depp outside of a Tim Burton film.
As I was saying before, I'd love to see stuff like Raycasting, or SNES style Mode7 become a possibility. That's more accessible and probably a possible way forward for Love.
Jasoco wrote:Distorting an image would be the least 3D thing I would want. And not just for doing 3D. It can be used for 2D effects too. We just need it.
Real 3D would require actual 3D calls complete with access to 3D OpenGL features like polygon clipping and sorting....
IndieLib has some pseudo-3D features - it enables image distortion like this: you define a grid (with any 2^n number of vertexes) for an image. then you change those vertexes position thereby distorting the image. Its cool, but not essential, imo
Did my comment help/offended you? Use the Karma button!! LÖVEing each day...