2016-03-02 31 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