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 に答える