+1 vote

Hi Godot Community,

this is my first question on my very first project and I was just wondering if what I am looking for is possible in Godot. In the example-video below it already shows that it is technically possible. But since I am a bloody beginner I wanted to make sure I didn't misunderstand this concept and if I can make changes to my 3D player model later after it had animations already.

so:

I want to create a 2D world with 3D models inside of it (3D models = player, npc, properties) I have seen tutorials that show how to render a 3D model from different ankles into a 2D sprite but I'd rather have a real 3D model sitting inside the 2D world because I'd like to be able to switch the 3D model's armor for example later.

what I want to avoid: 2D sprite "player running animation" made of a follow up of multiple pictures to create 3D illussion, because if I want to change the player's look later, I'll have to render the animation again. Or maybe there is still a way to switch the 2D player's clothing even after the animations have been created? maybe I'm stressing for no reason here?

what I am aiming for: "3D model player running animation" so changes on the player could still be made after the animation has already been created.

or would it be better to have a 3D model in blender, then do the changes on the 3D model's look, and finally have it render all the animations for that model into a 2D sprite again, wouldn't that be a problem in terms of time consumption and game file size?

If something still sounds confusing I can try explaining it in a different way :)

I wanted to know if something like that would be possible for a beginner in Godot to start working with :D I saw a video on YouTube that shows what I am aiming for pretty good: https://www.youtube.com/watch?v=bsawS6q6wuE

in Engine by (16 points)

2 Answers

+4 votes
Best answer

There's 2 approaches that are "pure 2D":
1) Pre-render everything as a sprite. Do animations by playing the frames. It will use a lot of memory (especially as you add more animations) and changing clothes would be pretty much limited to changing colours.
2) Use skeleton-based animation. Here you have all the different pieces as sprites (head, body, arms, etc). This will save a ton of memory and changing clothes is as easy as swapping just the required sprites:
https://docs.godotengine.org/en/3.1/tutorials/animation/2d_skeletons.html

If you want to use a 3D model, you can render the model in a viewport, then use the resulting texture as a sprite. This is the most flexible, but also more complicated. I'm doing this now and I'm having some quality issues with the sprites.

by (58 points)
selected by

thank you very much for the explanation and the mentioned examples, since I am just about to start learning GD Script and creating the very first game this managed to help me on what to focus on when it comes to the player characters!

+1 vote

I have to admit, that I'm also still a Godot beginner but from what I see in your example video there might be a third approach thats not exactly 2D but maybe you only want to create a world that looks sort of 2d-ish.

You could create your game as real 3D world and set up the camera to use orthogonal projection which makes the scene look flat and move the camera only in two dimensions in front of your 3D scene.

One big advantage would be that your free to add animations to you character during development without having to render dozens of new images and setting them up as animation frames.
And your "2D world" has implicit paralax scolling (which I find very neat).

Of course developing a 3D game needs a slightly different "mindset" than 2D games but when you get used to it you can have a 3D scene/game that looks 2D, 2.5D (isometric) or even 3D and you could switch between the presentations in mid-game without much effort.

Changes to the player model (active weapon, clothing, etc.) would be reduced to assigning new textures or replacing a child 3D object with another one.

At least that's the approach I would attempt to use.
Hope it helps.

by (22 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.