# 3D Scale an object in spaces other than local-space

This topic is 2449 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I've writed code for manipulating and transforming objects with on-scene manipulators like 3dsmax, maya ecc...
The translation and rotation work well in local and world spaces, but I can't figure out the scaling from a world-space manipulator.

The transform of an object is splitted in three fields:
 private Vector3 m_translation; private Quaternion m_rotation; private Vector3 m_scale; 

a final transform matrix is maded this way:
 public Matrix Transform { get { return Matrix.CreateScale(m_scale) * Matrix.CreateFromQuaternion(m_rotation) * Matrix.CreateTranslation(m_translation); } } 

Now, when I scale an object with a local-space manipulator the result is correct,
when I scale an object with a world-space manipulator the result is wrong.

I.E.:
- I rotate an object for example by 45° around the vertical axis (Y axis)
- I set the manipulator mode to world-space, so the manipulator axes are now parallel to world-space basis vectors

scaling along X axis I'm aspect that the scaling vector must show some values on X and Z components (due to previous rotation) and the object must "slide" along the world X axis, but the object scale in some strange way.

This can depend to scale-rotaton-translation sequence? i must change sequence?
It's always possible to scale an object with values specified in another than local-space?

Thanks in advance for the help...and sorry for the english

A last note: I'm using XNA 4.0, NET 4.0 and C#

1. 1
2. 2
3. 3
Rutin
18
4. 4
khawk
14
5. 5
frob
12

• 9
• 11
• 11
• 23
• 12
• ### Forum Statistics

• Total Topics
633659
• Total Posts
3013217
×