我遇到闪电和平面几何问题。 在创建具有特定高度数据的平面几何体时, 在我看来,定向光影响了 啮合。整体上还有相同的颜色:(
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
我必须创建自己的着色器,还是需要执行的选项?
亲切的问候 基督教
答案 0 :(得分:1)
你没有改变顶点法线;它们都是(0,1,0)。
此外,修改四边形的顶点时,四个顶点很可能不再是平面。这会给你带来各种各样的问题。 (谷歌非平面四边形。)
您可以通过先对PlaneGeometry
进行三角测量来避免这些问题:
THREE.GeometryUtils.triangulateQuads( geometry );
请注意,此函数会重新计算顶点法线。查看源代码,以便了解它的作用。
编辑:three.js不再支持四边形;PlaneGeometry
现已进行三角测量。
three.js r.66