• Advertisement
Sign in to follow this  

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

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

If you intended to correct an error in the post then please contact us.

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 smile.png

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

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement