Reputation: 1166
I can use position & rotation values to transform a mesh.
Ok, I see how the changes looks right but I'd want a way to transform the geometry vertices x,y,z, freeing and/or reseting the rotation & position values. I dont't know how to do it....
I have played with :
myobj.applymatrix();
myobj.matrixAutoUpdate = false;
myobj.verticesNeedUpdate;
instead of setting position & rotation, but the result is the same: Yes, the changes are right but the internal geometry did not change.
Have I to apply the geometric transform to vertices manually ?
Any help would be appreciated!
Upvotes: 3
Views: 5264
Reputation: 797
While building a ground mesh using a PlaneGeometry, adding hills using a heightmap and then getting some random vertices from the mesh geometry and adding trees after rotating the ground using
ground_mesh.rotation.set(-Math.PI / 2, 0, 0);
the mesh.geometry vertices aren't rotated along with the mesh and my trees are placed in pre-mesh-rotation positions. I found a quick and easy solution by instead rotating the mesh using
ground_mesh.geometry.rotateX(-Math.PI / 2)
and everything, including my gravity collision detection, and the random vertices all provide the expected results.
The documentation mentions that rotateX shouldn't be used during the rendering loop.
Upvotes: 0
Reputation: 104843
If you want to transform the vertices of your geometry, use this pattern:
mesh.updateMatrix();
mesh.geometry.applyMatrix( mesh.matrix );
mesh.matrix.identity();
Then reset the position
, rotation
, and scale
properties to their initial values:
mesh.position.set( 0, 0, 0 );
mesh.rotation.set( 0, 0, 0 );
mesh.scale.set( 1, 1, 1 );
three.js r.85
Upvotes: 9