The origin is always at the coordinate [0,0,0].

So, you’ve got a bunch of different coordinate systems you have to deal with, right? There’s the world space coordinates, which has an origin at [0,0,0] in world space. Then there’s the object space coordinate system, where an object has its own origin, also at [0,0,0]. Then there’s a few other coordinate systems which the engine takes care of for us (perspective and projection matrices).

You’ve also got “model” space coordinates, where a static mesh is placed relative to an origin as well, but this is done within a modeling program such as Maya.

It’s easiest to understand these different object spaces by looking at a few different vertex positions in 3D space. Ultimately, everything gets boiled down into vertices in the graphics card and the rendering pipeline ultimately just gets one vertex position in screen space (flat X/Y coordinates on your screen).

So, let’s pretend we’re creating a super simple static mesh to represent a sphere. Let’s imagine that we’re doing this programmatically so we don’t have to monkey around with a modeling program. The sphere radius is arbitrary, so let’s pick 100. The center of the sphere is at [0,0,0]. Knowing this, we can say that the farthest X coordinate of the sphere would be [100,0,0]. The sphere is centered at the objects origin. Now, let’s say that we do a translation to the right on the X axis by 50 units. The center of the sphere is now at [50,0,0], and the farthest X coordinate is at [150,0,0]. The origin is still at [0,0,0]. If we do a rotation of the sphere, the rotation is always relative to the origin. Internally, the engine can do multiple rotations and translations, so even if you translate an object from its origin, you can still rotate it in its own local space as if it were centered at the origin. Anyways, all of these coordinates are in this spheres LOCAL space.