0

所以,我想做一个简单的地形编辑器。因此,在 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 );
4

1 回答 1

2

查看您的代码,您似乎使用的是 R49 之前的语法。可能只是您需要将脏标志代码更新为(假设您现在使用的是更新的库!):

geo.verticesNeedUpdate = true;
geo.normalsNeedUpdate = true;
于 2012-09-14T10:46:32.473 回答