The documentation about Transform feels very sparse. It seems to assume that once I have read about Matrix etc. then it will be obvious to me why I want a Transform and how it differs from just using Matrix multiplication. But I think I have confusion and bugs in my code because Transform is different and I don't understand the practical ramifications.

It just feels really confusing to me that anybody decided we had to have anything more than regular matrix math. What does a Transform help/add/give me?!

Is there anybody who has docs or can succinctly explain the salient differences between using Matrix math vs. a Transform? E.g. I want to draw an Asteroids spaceship that has to be (a) scaled, (b) rotated, (c) translated to show it correctly in game.

in Engine

+1 vote

A Transform is the combination of a 3x3 matrix and an origin, to be used as a single object. In other engines you can eventually find it as Matrix4, where the origin is occupying the 4th row or the 4th column. However the latter is a bit "internal" and depends on the rendering technology in use.

I deduced this information from the doc: http://docs.godotengine.org/en/latest/classes/class_transform.html
And I assume more can be found in the code, however I don't know why exactly the authors made it this way.

by (27,902 points)
selected by
+1 vote

A transform determines the position and the orientation of an object. "origin" property is a vector to the position of the object (also known as translation vector) whereas "basis" property is a rotation matrix which determines the orientation. The columns of a rotation matrix can be thought as the local axes of the coordinate system "painted" on the object, so it's typically called "basis" in game engines.

by (66 points)