Godot Version
Godot 4.4
Question
Question on the showcase page. Very basic beginning help needed.
Oooh this is a cool concept! I guess this is both 2D and 3D. You will mainly work on the 3D space, then add SubViewPorts to display 2D objects. If it’s mostly 2D, then do the reverse by working mainly on the 2D space and adding a MeshTexture on a sprite for a 3D character. I haven’t tried using it like that, but I think the idea is amazing.
Sounds like 3D with 2D elements embedded into the world. But as @mrdicerack mentioned, it could just as well be the other way around. I see nothing wrong with either of these approaches.
But does it matter though? Do whatever feels and looks right to achieve what you envisioned.
Good luck and have fun! Remember to post your progress here, I’m curious to see how it looks like!
OK taking the 3D with 2D sprite option, or all-3D? If I draw a continuous steet-scape in multi-mesh and back-cull it all, does it take much more GPU work than a canvaslayer anyway? My aim is to reduce GPU work as this is likely to be played on very old technology.
Does anyone know if GPU workload is worse for a multimesh than for a canvaslayer? If using the same texture photo.
I tried using CanvasItem2D + Sprite2D but it wouldn’t take my photo as a texture, so I couldn’t use texture-repeat. I had to use Sprite3D to take the texture but that doesn’t have a texture-repeat. Hmm. Stuck. Asked for help on How to import .PNG photo as .tres resource? - #6 by oldrobcat
Solved! Seems Sprite3D doesn’t have a repeat button because it automatically repeats over a region, if a region is enabled and sized. The manual deals only with sprite-sheet instances.
Solved the texture problem too. The import default option had shifted down from Texture2D to Texture2DArray so some of my .PNGs would render and some not. Baffled me for ages.
For the record, the proper terminology is “2.5D”.
or opposite? for 3D skeleton in 2D world
I thought 2.5D refers to either a game with purely 2D graphics that mimics a 3D perspective (using layering, parallax, etc.), or a game with purely 3D graphics that incorporates a fully 2D mechanic, such as 3D models constrained to movement on the X-Y plane. Good examples are Octopath Traveler, which uses high-res 2D sprites to create a stylized illusion of depth, and Little Nightmares, which features detailed 3D models restricted to a sidescrolling gameplay. I don’t think the OP’s game quite fits this category, and it’s more accurate to say it’s either a 3D game with 2D elements or a 2D-style game implemented with some 3D components.
I’m leaning towards 3D with 2D elements now, since I discovered that Sprite3D does auto-repeat. I’m now envisaging lots of victorian-style small-pane window matrixes where the pane size and distribution auto-adjusts to any frame size. Glass and halved mullion bars as a single Sprite3D and I can have hundreds of them along the street in all shapes and scales. Sounds good!
That sounds really good! Just a heads-up about culling, 2D elements in a game can sometimes disappear from view when they’re too close to the camera. It usually has to do with things like the camera’s clipping planes or culling mask settings. You might need to tweak those properties a bit to make sure everything shows up correctly. Good luck on your game!
Thanks! I’ve found that Mesh3D has a one-side option so it doesn’t render the back. Surely can’t use much more processing than a 2D item then? And I’ll keep the cameras simple. FP.eyes view in street, fixed rostrum camera indoors.
So advise me, what’s the correct node tree for 2.5D please? Currently my scene head is Node3D > WorldEnv > Node3D > StaticBody3D+Collisn > Sprite3D but I’d like to use Node3D > WoirldEnv > Node3D, then walls > CanvasLayer > CanvasItem > Sprite2D and objects > Sprite3D.
Scene is a narrow street, so no backing. Flat or curved vertical 2D walls, curved 3D floor, 3D static objects and 3D character on a navigation path. No aerial views. No collisions either.
No idea. ![]()
I’m not a good programmer. At all.
I’m doing a mix of 2D and 3D currently; I’ve got a TileMapLayer ground (top down) with 3D models on top of it. I’m using Sprite3D mixed with the models. I also have some 2D stuff off to the side on a UI panel.
The way I’m doing it looks kind of like:
Level (Node2D)
Radar (SubViewportContainer)
View (SubViewport)
Camera (Camera2D)
Map (Sprite2D)
Blips (Node2D)
[lots of Sprite2D radar dots]
World (SubViewportContainer)
2D (SubViewport)
Camera (Camera2D)
[a stack of TileMapLayer]
3D (SubViewport)
Camera (Camera3D)
[models & Sprite3Ds]
One thing to be aware of if you’re mixing 2D and 3D is perspective camera; if you use a standard perspective projection (which you probably will), 3D stuff gets smaller in the distance, while 2D stuff doesn’t. In my case, this means I have to do some trig at runtime to make sure that the tiles in the TileMapLayer (which is effectively sitting on the 3D far plane) match up with the projection size of 3D objects at the far plane. Basically, I have to change the field of view when I zoom in or out to compensate so that my 64x64 tiles on the 2D layer match correctly on the screen with 3D objects at the far plane when I change the camera height.
I get your problem. I’ll avoid it, thanks.
After weeks of digesting Godot and Blender, I’d like feedback on my animation scheme please. I’ll be using Sprite3D, animationplayer and spritesheets. I’ve abandoned the software route as too slow and fiddly, so will use conventional camera stop-motion green-screen animation at 12FPS using 1:6 scale dolls and importing as 256x256 .PNG files into Godot. 50-100 frame sequences.
Anyone have experience of this?
Any idea how I can change the lighting direction and illumination level without having to re-shoot the scenes for every daytime and weather condition? Currently I’m thinking that’s not possible
That’s a mistake imo, especially if you need to vary the lighting.