Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-编辑平面几何图形_Javascript_3d_Webgl_Three.js_Terrain - Fatal编程技术网

Javascript Three.js-编辑平面几何图形

Javascript Three.js-编辑平面几何图形,javascript,3d,webgl,three.js,terrain,Javascript,3d,Webgl,Three.js,Terrain,所以,我想做一个简单的地形编辑器。因此,在mouseDown上,我希望选定的面向上移动。 交叉点很好,我尝试修改几何体,如下所示: var intersects2 = ray.intersectObjects([plane]); if (intersects2.length > 0) { var face = intersects2[0].face; var obj1 = intersects2[0].obje

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

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

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