2015-03-06 2 views
1

Возможно, это вопрос начинающих, но почему самолет выглядит плоским? Почему структура плоскости не видна, только шипы по краям?Затенение самолета

http://codepen.io/asz/pen/GgXpXW

var geometry = new THREE.PlaneBufferGeometry(100, 100, 50, 50); 

var vertices = geometry.attributes.position.array; 
for (var i = -1; i < vertices.length; i += 3) { 
    vertices[i] = Math.random() * 10; 
} 

geometry.applyMatrix(new THREE.Matrix4().makeRotationX(- Math.PI/2.8)); 

var material = new THREE.MeshPhongMaterial({ ambient: 0x00ff00, color: 0x00ff00, specular: 0x00ff00, shininess: 30, shading: THREE.FlatShading }); 
var ground = new THREE.Mesh(geometry, material); 
scene.add(ground); 

ответ

4

делать с нормалей.
geometry.computeVertexNormals();

eg.

var vertices = geometry.attributes.position.array; 
for (var i = -1; i < vertices.length; i += 3) { 
    vertices[i] = Math.random() * 10; 
} 
geometry.computeVertexNormals(); 
+1

Ницца, вот codepen: http://codepen.io/anon/pen/NPLxKz – Shomz

+0

Ах, я должен пересчитать нормали каждый раз, когда я что-то изменить в геометрии? –