Three.js - 在planeGeometry上更改面部大小

时间:2016-03-02 15:06:41

标签: javascript three.js

我正在尝试通过修改顶点来更改面部坐标。 变量的值是正确的,但屏幕上没有变化。

这是plain

这是我的代码:

    var geometry = editor.selected.geometry;
    var vertices = geometry.vertices;

    vertices[1] = new THREE.Vector3(-100 / 3, 50, 0);
    vertices[5] = new THREE.Vector3(-100 / 3, 0, 0);

    var uvs = geometry.faceVertexUvs[0];

    uvs[0] = [new THREE.Vector2(0, 1), new THREE.Vector2(0, 0.5), new THREE.Vector2(1 / 6, 1)];
    uvs[1] = [new THREE.Vector2(0, 0.5), new THREE.Vector2(1 / 6, 0.5), new THREE.Vector2(1 / 6, 1)];
    uvs[2] = [new THREE.Vector2(1 / 6, 1), new THREE.Vector2(1 / 6, 0.5), new THREE.Vector2(2 / 3, 1)];
    uvs[3] = [new THREE.Vector2(1/ 6, 0.5), new THREE.Vector2(2 / 3, 0.5), new THREE.Vector2(2 / 3, 1)];

    geometry.computeVertexNormals();
    geometry.computeFaceNormals();

    geometry.__dirtyVertices = true;
    geometry.__dirtyNormals = true;

    geometry.verticesNeedUpdate = true;
    geometry.normalsNeedUpdate = true;
    geometry.uvsNeedUpdate = true;

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您正在更改位于形状边框内的顶点。这就是为什么你没有看到变化。如果您在材料上打开wireframe,您会看到顶点确实发生了变化。看看这个小提琴:

http://jsfiddle.net/g6pzvjxj/

同样适用于uvs,应该是:

var uvs = geometry.faceVertexUvs[0];