2012-09-14 5 views
0

Donc, je veux faire un simple éditeur de terrain. Donc, sur mouseDown, je veux que le visage sélectionné monte. L'intersection fonctionne très bien, et je tente de modifier la géométrie comme ceci:Three.js - Modifier la géométrie du plan

 var intersects2 = ray.intersectObjects([plane]); 
     if (intersects2.length > 0) { 
      var face = intersects2[0].face; 
      var obj1 = intersects2[0].object; 

      var geo = obj1.geometry; 

      geo.vertices[face.a].z += 50; 
      geo.vertices[100].z += 50; 
      geo.vertices[0].z += 50; 


      geo.computeVertexNormals(); 
      geo.computeFaceNormals(); 

      geo.__dirtyVertices = true; 
      geo.__dirtyNormals = true; 

      console.log(face.a); 

     } 

Le journal de la console affiche l'index du sommet correct, mais rien sur le plan se déplace. Des idées pourquoi?

Le plan est créé comme ceci:

var planegeo = new THREE.PlaneGeometry(500, 500, 10, 10); 
    planegeo.dynamic = true; 
    plane = new THREE.Mesh(planegeo, new THREE.MeshPhongMaterial({ color: 0x99ff66 })); 
    plane.receiveShadow = true; 
    scene.add(plane); 

Répondre

2

En regardant votre code, il semble que vous utilisez la syntaxe pré R49. Il se peut que vous ayez besoin de mettre à jour votre code de drapeau sale (en supposant que vous utilisez maintenant une nouvelle bibliothèque!):

geo.verticesNeedUpdate = true; 
geo.normalsNeedUpdate = true; 
Questions connexes