Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Selectable vertical axis #31066

Closed
erikscott128 opened this issue Aug 3, 2019 · 8 comments
Closed

Selectable vertical axis #31066

erikscott128 opened this issue Aug 3, 2019 · 8 comments

Comments

@erikscott128
Copy link

erikscott128 commented Aug 3, 2019

Godot version:
3.1

OS/device including version:
Windows

Issue description:
I am considering Godot for an upcoming project. I attempt to work with as many open source applications as I can and use Blender exclusively for non CAD-related 3D modeling. One of the biggest issues that makes me hesitate to continue using godot is the choice of axis conventions in 3d space. A lot of Godot users are Blender users, and the inconsistency between the Z and Y axes makes for a confusing transition.

My intended use for godot is visualization of flight dynamics and flight simulation. In flight dynamics, the axis convention actually has the positive z-axis pointing down for a variety of reasons. Flight dynamics equations are pretty firmly established

This brings me to my request. How difficult would it be to implement a selectable axis convention in the options menu for a project? I'm wondering if this could be a simple axis swizzel that will work behind the scenes be transparent to the user. There is precedent for this; Autodesk's Fusion360 allows the selection of a vertical axis. I would envision the user being able to select a "vertical" and "forward" (or perhaps "north") axis. The remaining axis would be determined to define a standard right-hand coordinate system.

I understand this issue/request is similar to issue #17872. The difference is I'm not suggesting that we change and enforce upon godot users a single convention, but allow the selection for a convention that works best for their purposes.

@KoBeWi
Copy link
Member

KoBeWi commented Aug 3, 2019

Also see this #8946, especially the last comment. Unlikely this happens probably.

@erikscott128
Copy link
Author

I appreciate the response KoBeWi. I did not see that issue. It's disappointing. I suppose the next question is how much money would we have to throw at this problem to make it a development priority? I know a lot of blender (and other) users would find it very useful.

@clayjohn
Copy link
Member

clayjohn commented Aug 4, 2019

@erikscott128 Its not a matter of throwing money at the problem. Development priorities are determined completely separately from funding. So, while funding is always appreciated, it can't be used to sway priorities.

Godot prioritizes elegant implementations and maintainability over all else. If you (or someone else) can implement it in a way that is elegant and easy to maintain then there should be no problem getting it merged. That being said, this is a very specific user preference that differs from the game industry standard so the standard for elegance and maintainability will be high.

edit: After further research it appears that unreal uses z-up, so calling this system the "game industry standard" is likely incorrect. That being said, the rest of the point still stands.

@Calinou
Copy link
Member

Calinou commented Aug 4, 2019

Godot prioritizes elegant implementations and maintainability over all else. If you (or someone else) can implement it in a way that is elegant and easy to maintain then there should be no problem getting it merged.

No matter the quality of the implementation, the downsides outlined in #8946 will remain. If people start changing axis directions, it could make sharing projects or tutorials more difficult.

@erikscott128
Copy link
Author

Understood, but I would argue that funding should be made to address issues people care about. I'm certainly not alone in my desire for at least a choice at making Z-up (or, perhaps making godot orientation-agnostic in the 3d space, which may be more elegant). In any case, I don't believe it's worth contributing in any form if issues I care about are not on the road map. I'm not a low-level programmer, so making such changes myself is not possible at this point

In the meantime, I probably have to do more learning about godot to understand exactly what I'm asking for. I appreciate the responses.

@clayjohn
Copy link
Member

clayjohn commented Aug 4, 2019

@erikscott128 Letting money dictate design decisions is against Godot's core philosophy.

However, if you are sitting on a pile of money, then nothing is stopping you from hiring someone to implement the features you want. Many companies do just that to prioritize features or bug fixes.

@aaronfranke
Copy link
Member

If you wish for the Z axis to be down, you can place everything under a single root node and rotate it around the X axis by 90 degrees so that Z is down and Y is backwards, or rotate it the other way so that Z is up and Y is forwards (Blender style).

This won't make it appear that way in the editor, but you can write all your code expecting it. You do really need to weigh the upsides of familiarity with flight sims and Blender, vs compatibility with every single other Godot project in existence if you need to share code. Converting coordinate systems is just a fact of life when working with any kind of space (remember Y is down in Godot's 2D...)

@aaronfranke
Copy link
Member

While this isn't on the same level of impossible as this proposal which is impossible due to these reasons, this also won't ever happen, so I'm closing this.

Even if the editor had some kind of abstraction for this, user code would still use the Y-is-up system, and it would be confusing to have a discrepancy between the editor and code. Also, if the abstraction applied to user code, then 1. that would slow down user code for no reason, and 2. it would mean any scripts copied from other projects would not work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants