2016-03-02 30 views
1

我试图通过修改顶点来更改脸部坐标。 变量的值是正确的,但在屏幕上没有改变。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

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

http://jsfiddle.net/g6pzvjxj/

还为您uvs它应该是:

var uvs = geometry.faceVertexUvs[0]; 
+0

是的,谢谢,这个顶点/几何错误是只有在这里,而不是在代码中。 我知道你说的关于边界顶点,事情是 - 我在那里有两个纹理的meshFaceMaterial(请参阅原始问题中添加的图像),仍然不能看到区别... – RoeePeleg

+0

你能更新我的提琴吗? – gaitat

+0

好吧,它的工作,当我创建新的PlaneGeometry。多谢 ! – RoeePeleg