I'd like to edit an object's position, rotation, and scale vectors, then 'apply' them to the geometry, which would zero-out those vectors, but retain the transformation.
For example, let's say I import a cube with a side-length of 1. The min and max vertices of the cube are located at (0, 0, 0)
and (1, 1, 1)
. I set the object's scale to (2, 2, 2)
and then apply the transformation to the geometry.
After applying, the scale is reset to (1, 1, 1)
and the min and max vertices of the cube are (0, 0, 0)
and (2, 2, 2)
, respectively.
Is there some built-in way to do this?
Three. js uses matrices to encode 3D transformations---translations (position), rotations, and scaling. Every instance of Object3D has a matrix which stores that object's position, rotation, and scale.
applyMatrix4 ( matrix : Matrix4 ) : undefined. Applies the matrix transform to the object and updates the object's position, rotation and scale.
You can apply an object's transform to the object's geometry directly, and then reset the position, rotation, and scale like so:
object.updateMatrix();
object.geometry.applyMatrix( object.matrix );
object.position.set( 0, 0, 0 );
object.rotation.set( 0, 0, 0 );
object.scale.set( 1, 1, 1 );
object.updateMatrix();
three.js r.69
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With