Local Coordinates Broken?
Hi,
I've been trying to make sense for two hours of the local/world coordinates dropdown in the Motion->Transform panel. World coordinates make sense. Local coordinates not at all. As you can see in the screenshots below, I have two cubes in a group, as seen from above. The cubes are at non-symetrical position from the center of the universe.
You can see below that the local/world coordinates are the same, even though the center of the bounding box is clearly not in the same position as the center of the universe. What is happening here? I created the bounding box after moving the cubes in place.
Are local coordinates buggy? I've played around with grouping/ungrouping, moving the cubes around, and I cannot understand the logic behind local coordinates. It seems they are change depending on when the bounding box was created, the mood of the user and the phase of the moon etc...
Can somebody explain to me what is happening here?
Comments
World lets you specify the object's
arrangement relative to the universe. Use
this for absolute positioning, scaling, and
rotating operations.
• Local lets you specify the object's
arrangement relative to the center of the
object or group bounding box. For
instance, you can move the hot point out
from the center on a specific axis.
Your boxes are not a group because it shows the bounding box only around one box.
See the bounding box in the image below as it surrounds both boxes because they are in the group.
In my example the cubes also ARE in a group/bounding box. Look at the instance panels towards the right. It's because I selected the green cube inside the group that you don't see the bounding box.
As far as I can tell, the "World/Local" drop-down menu in the Properties Transform panel has no effect. It always appears to be in World mode, despite the menu choice.
Additionally, the "Mirrored Around" option doesn't seem to function properly either. It's supposed to cause the selected object or group to be mirrored around either the Hot Point or the Object Center, as chosen by the drop-down menu. However, it only mirrors around the Object Center, and only in the X-Y plane, no matter what settings you choose.
These have (mal)functioned this way since Carrara 7, and probably earlier.
Unless they are functioning is some completely unexpected way that I haven't been able to grasp, I think that they have always been broken.
I use C7.2 Pro and it seems to work for me.
In my example, I created a cube and sphere and off-set them from each other. I then grouped them. If I moved the group and had the whole group selected, then the World and Local coordinates remained the same. However, if I selected one of the objects and then toggled between world and local, then the coordinates would change. If I selected World and centered the object by moving it to the zero coordinates, the World coordinates reflected that. The local coordinates weren't zeroed.
Hmmmm... OK, I think I see.
Local coordinates are a reference to each object's position within a Group, and will only be apparent if a Group of objects is moved from its original World starting position. The Local coordinates seem to always be in relation to the Group's center, and not the Group's Hot Point (moving the Group Hot Point didn't affect the local coordinate values in my testing).
I now see why I missed noticing this previously. Thanks EP.
I wonder if I'm also missing something with the "Mirrored Around" function.
Might try switching off Open - GL and using Software settings to see if that makes a difference.
Hmmmm... OK, I think I see.
Local coordinates are a reference to each object's position within a Group, and will only be apparent if a Group of objects is moved from its original World starting position. The Local coordinates seem to always be in relation to the Group's center, and not the Group's Hot Point (moving the Group Hot Point didn't affect the local coordinate values in my testing).
I now see why I missed noticing this previously. Thanks EP.
I wonder if I'm also missing something with the "Mirrored Around" function.
Not sure about the mirrored thing. I never tried it. I figured there had to be some internal coordinates for the groups because of all the different things you can animate in groups.
I've never been able to figure out Carrara's co-ordinate system.
In other software, "world", or 'absolute' is the position of the object - or component of an object, such as a vert or face, relative to 0,0,0. Local is it's position relative to itself - or bounding box to be more precise. In "local", with the whole object, or group selected, the position should be 0,0,0 and each component should then be shown as being relative to the centre of the bounding box of the object or group.
What makes it stranger is that the assembly room and VM seem to use a different co-ordinate system.
Try doing this - insert a cube in the assembly room and zero it. Then go to the VM and insert a cube and zero that. Go back to the assembly room and the two cubes are not in the same position.
In the VM, "relative" co-ordinates of all components are always 0,0,0.
Strange, indeed!
Hi Evil Producer,
I followed along your example and explanation. When the sphere is moved, to world coordinates 0,0,0, it is true that the world and local coordiates of the sphere become different. Now what is interesting is that when the sphere is at world coordinates 0,0,0, the local coordinates seem to still be relative to the center of the bounding box BEFORE the sphere was moved.
In other words, even though the bounding box of the group has been resized after moving the sphere, the local coordinates of the sphere still refer to the center of the bounding box before the sphere was moved.
This is kind of unintuitive...
Well I did some more experimentation with this.
It seems that when a group is created, a point is pinned on the bounding box that is located at the world's 0,0,0 origin. This points sticks to the bounding box and serves as the origin for local coordinates of the goup's objects.
Now when the group is moved, the local origin stays pinned to the bounding box and the local coordinates of an object don't change, whereas the world coordinates of the objects change.
Afterwards, if an object inside a group moves, it moves both relative to the local origin and the world origin and the coordinates reflect this.
So to summarize, local coordinates are relative to a local origin which gets pinned to the bounding box when the group is created. Local coordinates have nothing to do with the center of a group. This is where the documentation (Carrara 7 manual) is wrong.
Phew :-)
Well done Zig Zag! Your testing methodology has proven to be more comprehensive than my own.
I was arranging objects around the World 0,0,0 coordinates before grouping them, so of course my group's local 0,0,0 coordinates would be at the center of the group, and I didn't notice that it was actually being set to the World 0,0,0.
I would consider this a bug, since it doesn't seem to be a very useful method of determining the Local 0,0,0, and as you mentioned, it's at odds with the manual which states "Local lets you specify the object's arrangement relative to the center of the object or group bounding box."
Hi de3an,
Is it a bug or a feature? ;-)
But it actually makes sense that local coordinates are implemented like this. Otherwise, imagine that local coordinates are based on the center of the bounding box:
In our example, say that you want to move the cube 1ft in local coordinates. So you have Local Coordinates selected in the dropdown. Then you increase or decrease the local coordinates of 1 ft. But the bounding box resizes, so the center of the box moves also, so you'd end up with the cube at another location that you intended.
IMHO the manual should be updated (if we ever get a new one that is ;-)
I see your point. To give the Local group coordinates consistency, their origin needs to be pinned to the group at the time of its creation. Which it is.
In DAZ parlance, this feature is "working as intended". :roll:
However, I think it would have caused less confusion if the developers had chosen to pin the 0,0,0 group origin to the group center at the time of its creation rather than using the world center.
Hi Dean,
In my tests the object seems to always mirror around the hot point, not the object center? But always around the XY plane, like you.