在three.js中,我想在场景中的某个位置添加一个网格
我试过了:
// mesh is a THREE.Mesh
scene is a THREE.Scene
scene.add(mesh)
scene.updateMatrixWorld(true)
mesh.matrixWorld.setPosition(new THREE.Vector3(100, 100, 100))
scene.updateMatrix()
但它没有影响任何东西。
我该怎么办 ?
在three.js中,我想在场景中的某个位置添加一个网格
我试过了:
// mesh is a THREE.Mesh
scene is a THREE.Scene
scene.add(mesh)
scene.updateMatrixWorld(true)
mesh.matrixWorld.setPosition(new THREE.Vector3(100, 100, 100))
scene.updateMatrix()
但它没有影响任何东西。
我该怎么办 ?
我建议您在这里查看文档:http://threejs.org/docs/#Reference/Objects/Mesh 正如 您在文档页面顶部看到的那样,Mesh 继承自“ Object3D ”。这意味着您可以使用 Object3D 提供的所有方法或属性。因此,单击文档页面上的“ Object3D ”链接并检查属性列表。你会发现属性“ .position ”。点击“ .position ”查看它是什么数据类型。呸..它的Vector3。
因此,请尝试执行以下操作:
//scene is a THREE.Scene
scene.add(mesh);
mesh.position.set(100, 100, 100);
我之前在github上看到过。(三.js r71)
mesh.position.set(100, 100, 100);
并且可以为个人完成
mesh.position.setX(200);
mesh.position.setZ(200);
参考:https ://threejs.org/docs/#api/math/Vector3
详细解释如下:
因为 mesh.position 是“Vector3”。Vector3() 有 setX() setY() 和 setZ() 方法。我们可以这样使用它。
mesh.position = new THREE.Vector3() ; //see position is Vector3()
vector1 = new THREE.Vector3();
mesh.position.setX(100); //or this
vector1.setX(100) // because all of them is Vector3()
camera1.position.setZ(100); // or this
light1.position.setY(100) // applicable to any object.position
我更喜欢用来Vector3
设置位置。
let group = new THREE.Group();
// position of box
let vector = new THREE.Vector3(10, 10, 10);
// add wooden Box
let woodenBox = new THREE.Mesh(boxGeometry, woodMaterial);
//update postion
woodenBox.position.copy(vector);
// add to scene
group.add(woodenBox)
this.scene.add(group);
如果有人正在寻找从 Vector3 更新位置的方法
const V3 = new THREE.Vector3(0,0,0) // Create variable in zero position
const box = new THREE.Mesh(geometry, material) // Create an object
Object.assign(box.position, V3) // Put the object in zero position
或者
const V3 = new THREE.Vector3(0,0,0) // Create variable in zero position
const box = new THREE.Mesh(geometry, material) // Create an object
box.position.copy(V3)