ということで、簡単な地形エディタを作りたいと思います。したがって、mouseDown では、選択した面を上に移動させたいと考えています。交差点はうまく機能し、次のようにジオメトリを変更しようとします。
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 );