2012-09-14 48 views
0

所以,我想制作一个简单的地形编辑器。所以,在mouseDown上,我希望所选的人脸向上移动。 交集的伟大工程,我尝试修改几何图形像这样:Three.js - 编辑平面几何

 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); 

     } 

控制台日志显示正确的顶点指数,但没有在飞机上移动。任何想法为什么?

飞机是这样创建的:

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); 

回答

2

你的代码看,它看起来像你正在使用的语法预R49。这可能只是因为您需要更新脏标志代码(假设您现在使用的是新库!):

geo.verticesNeedUpdate = true; 
geo.normalsNeedUpdate = true;