1

我对闪电和平面几何有疑问。在使用某些高度数据创建平面几何图形时,在我看来,定向光不会影响网格。整体颜色还是一样的:(

var geometry: THREE.PlaneGeometry
   = new THREE.PlaneGeometry(1000, 1000, 199, 199);

for (var i = 0, l = geometry.vertices.length; i < l; i++)
    geometry.vertices[i].z = this._heightmap.data[i];

var mesh = new THREE.Mesh(geometry, 
    new THREE.MeshLambertMaterial({ color: 0x1AAD2B }));

mesh.applyMatrix(new THREE.Matrix4().makeRotationX(- Math.PI / 2));

this.screen.get("Scene").add(mesh);

var light = new THREE.DirectionalLight(0xffffff, 1);

light.position.set(0.8, 0.5, 1);
light.position.normalize();
this.screen.get("Scene").add(light);

http://s14.directupload.net/images/130703/jsfx9tr3.png

我必须创建自己的着色器还是我需要执行的选项问题?

亲切的问候基督徒

4

1 回答 1

1

您没有更改顶点法线;它们都是( 0, 1, 0 )。

此外,当您修改四边形的顶点时,这四个顶点很可能不再是平面的。这会给你带来各种各样的问题。(谷歌非平面四边形。)

您可以通过对第一个进行三角测量来避免这些问题PlaneGeometry

THREE.GeometryUtils.triangulateQuads( geometry );

请注意,此函数会重新计算顶点法线。查看源代码,以便您了解它在做什么。

编辑:three.js 不再支持四边形;PlaneGeometry现在是三角化的。

三.js r.66

于 2013-07-03T19:23:28.170 回答