Anim8or Community

General Category => Anim8or v1.0 Discussion Forum => Topic started by: davdud101 on January 30, 2021, 08:12:13 am

Title: "Join solids"-objects change their origin without changing their axis location
Post by: davdud101 on January 30, 2021, 08:12:13 am
I knew I wasn't crazy!! This is something I've been confused about for a while and I've finally found a way to replicate it. Not sure if it's meant to function this way, but basically the following steps lead up to this result:


However for some reason, this ends up with an object whose center point reads as 0,0,0, but is in fact located (as in, its axis/"crosshair" thing) at -2,28,0.

The same thing happens if I use the Join Solids command before bridging them (as of course bridging two individual meshes has the Join Solids command built in it seems). This also seems to happen in a handful of other instances, like some grouping operations and other stuff that I can't think of right now, lol

Not sure if this is meant to happen but it's been a bit of a concern of mine for a while because it makes things like manually mirroring over the axis pretty difficult because the coordinates aren't correct to the world/viewport ??? :o

File attached for reference
Title: Re: "Join solids"-objects change their origin without changing their axis location
Post by: Steve on January 30, 2021, 08:48:43 am
The axis (crosshair) is the cener of a mesh for things like rotation and scaling. It is independent of the position which is the location in world space of the point (0, 0, 0) in mesh coordinates. You can move and rotate the axis in Object/Axis mode, hot key O.
Title: Re: "Join solids"-objects change their origin without changing their axis location
Post by: Claude on January 30, 2021, 09:43:52 am
I would like to add this to Steve's explanation hoping that
it would help you understand:

In point mode, if you double
click on a point, you get its coordinates.
In object mode, if you double
click on a mesh you get a transform
(translation + rotation) to be applied
to each point of the mesh before rendering
to the viewport. Think of Location as a translation.

When you join 2 meshes, all the points coordinates
are updated by applying their mesh transform and
the new mesh transform is set to 0.
Title: Re: "Join solids"-objects change their origin without changing their axis location
Post by: davdud101 on January 30, 2021, 10:22:59 am
The axis (crosshair) is the cener of a mesh for things like rotation and scaling. It is independent of the position which is the location in world space of the point (0, 0, 0) in mesh coordinates. You can move and rotate the axis in Object/Axis mode, hot key O.

I would like to add this to Steve's explanation hoping that
it would help you understand:

In point mode, if you double
click on a point, you get its coordinates.
In object mode, if you double
click on a mesh you get a transform
(translation + rotation) to be applied
to each point of the mesh before rendering
to the viewport. Think of Location as a translation.

When you join 2 meshes, all the points coordinates
are updated by applying their mesh transform and
the new mesh transform is set to 0.



To be honest, still not sure I'm getting it  :-\ I attached an image that hopefully explains why I don't understand. I'm just confused WHAT it (the Object Location) is measuring if it's not a comparison the object's origin to the world origin.  ???

Also I get that point transformations and orientations are arbitrary compared to objects - is it because of how Object/Axis Mode and Point mode sort of "disregard" each other's transform data? I understand that I could select all the points and move them to change their position relative to the object's origin, OR that I can go to Axis Mode and transform the origin itself.
Is it related to that whole principle?
Title: Re: "Join solids"-objects change their origin without changing their axis location
Post by: Steve on January 30, 2021, 11:31:51 am
You start with two meshes. mesh06 has an origin of (-3, 28, 0) and mesh07 has an origin of (-1, 28, 0). Once you combine them, a new mesh is created, it's given the name mesh01. The origin of mesh01 is set to (0,0,0) when it's created. All points in the original 2 meshes are translated into world coordinates before they are added to mesh01.

So a point in mesh06 with the original value of (10, 20, 30), which is relative to the origin of mesh06, has a world coordinate of (7, 48, 30), equal to the point's value plus the origin of mesh06, i.e. (10, 20, 30) + (-3, 28, 0) = (-3 + 10, 28 + 20, 0 + 30).

You may be confusing the axis of the new mesh with it's origin. A meshes points are defined relative to the mesh's origin, not it's axis. The axis is created at the center of all the points in the new mesh to make operation like rotation and scaling more natural.