web-dev-qa-db-fra.com

Comment puis-je définir la position d'un maillage avant de l'ajouter à la scène en three.js

Dans three.js, je veux ajouter un maillage à une position dans la scène

J'ai essayé:

// 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()

MAIS cela n'a rien affecté.

Que devrais-je faire ?

27
user1783292

je vous recommande de vérifier la documentation ici: http://threejs.org/docs/#Reference/Objects/Mesh Comme vous pouvez le voir en haut de la page docu, Mesh hérite de " Object3D ". Cela signifie que vous pouvez utiliser toutes les méthodes ou propriétés fournies par Object3D. Cliquez donc sur le lien " Object3D " sur la page docu et vérifiez la liste des propriétés. Vous trouverez la propriété ". Position ". Cliquez sur ". Position " pour voir de quel type de données il s'agit. Paha..its Vector3 .

Essayez donc de procéder comme suit:

//scene is a THREE.Scene
scene.add(mesh);
mesh.position.set(100, 100, 100);
70
chsymann

je l'ai vu sur un github plus tôt. (three.js r71)

mesh.position.set(100, 100, 100);

et peut être fait pour les particuliers

mesh.position.setX(200);  
mesh.position.setZ(200); 

référence: https://threejs.org/docs/#api/math/Vector

l'explication détaillée est ci-dessous:

puisque mesh.position est "Vector3". Vector3 () a les méthodes setX () setY () et setZ (). nous pouvons l'utiliser comme ça.

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
28
bh_earth0

Je préfère utiliser Vector3 pour définir la position.

   let group = new THREE.Group();

   // position of box
   let position = 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);
0
Hitesh Sahu