Three.js - Редактировать геометрию плоскости

Итак, я хочу сделать простой редактор ландшафта. Итак, на 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 );

person David Menard    schedule 14.09.2012    source источник


Ответы (1)


Глядя на ваш код, похоже, что вы используете синтаксис до R49. Возможно, вам просто нужно обновить код грязного флага (при условии, что вы сейчас используете более новую библиотеку!):

geo.verticesNeedUpdate = true;
geo.normalsNeedUpdate = true;
person Neil    schedule 14.09.2012