Exemplo n.º 1
0
		/// <summary>
		/// Set position,rotation and scale from the transform matrix
		/// This does not support mirroring, so every component of scale has to be > 0
		/// </summary>
		/// <param name="transform"></param>
		public void SetPropertiesFromMatrix(Matrix4x4 transform)
		{
			position = transform.Translation;

			// extract scale and create a rotation matrix
			Vector3 cx = transform.Col(0);
			Vector3 cy = transform.Col(1);
			Vector3 cz = transform.Col(2);

			scale.x = cx.Length;
			scale.y = cy.Length;
			scale.z = cz.Length;

			Matrix4x4 rotationMatrix = Matrix4x4.Identity();
			rotationMatrix.SetCol(0, cx/scale.x);
			rotationMatrix.SetCol(1, cy/scale.y);
			rotationMatrix.SetCol(2, cz/scale.z);
			rotation.FromMatrix(rotationMatrix);
		}