Javascript 通过修改几何体顶点创建的低多边形地形正在产生黑色小故障
我正在尝试为我的项目创建随机低多边形样式的地形。我决定最好的方式是:Javascript 通过修改几何体顶点创建的低多边形地形正在产生黑色小故障,javascript,three.js,Javascript,Three.js,我正在尝试为我的项目创建随机低多边形样式的地形。我决定最好的方式是: 创建一个BoxGeometry对象作为我的地板,并将widthSegments和heightSegments设置为大于默认值(100) 使用.vertices数组访问每个顶点 使用geomFloor.vertexts上的forEach循环迭代每个顶点 每次迭代,在到点之间生成一个随机数(顶点的最大和最小y位置) 将当前顶点的.y设置为随机数 更新顶点 这是我的流程代码: function createFloorSecondSc
BoxGeometry
对象作为我的地板,并将widthSegments
和heightSegments
设置为大于默认值(100).vertices
数组访问每个顶点geomFloor.vertexts上的forEach
循环迭代每个顶点
.y
设置为随机数function createFloorSecondScene(){
var geomFloor = new THREE.BoxGeometry(20000, 1, 20000, 100, 1, 100);
geomFloor.mergeVertices();
var randomFloorVertexPos;
geomFloor.vertices.forEach(function(floorVertex){
randomFloorVertexPos = Math.floor(Math.random() * ((0) -
(-90)) + (-90));
floorVertex.y = randomFloorVertexPos;
geomFloor.verticesNeedUpdate = true;
});
var matFloor = new THREE.MeshPhongMaterial({color:
Colors.grassGreen});
matFloor.flatShading = true;
var Floor = new THREE.Mesh(geomFloor, matFloor);
Floor.position.y = -72.5;
Floor.receiveShadow = true;
Floor.castShadow = true;
Floor.name = "floor";
scene.add(Floor);
}
问题
从下面的屏幕截图可以看出,这就是我希望地板的外观,在某些部分和某些角度,它确实按照预期工作
但是,在地板的大面积区域中,会创建这些奇怪的黑色形状,但当您使用轨道控制更改相机角度时,这些形状就会消失
我假设这是由于操纵几何体顶点的简单方法造成的,并且一些顶点可能重叠,这导致它们呈现为这样
我需要什么
- Main:修复黑色形状
- 如果可以(没有必要),请解释为什么这种情况只发生在某些地方和某些角度
- 如果我以错误的方式操纵顶点和/或有更好的方法来创建我所需要的随机低多边形地形,我将非常感谢解释正确的编码方式
切换到PlaneGeometry
应该会更容易生成地形。为什么不使用PlaneGeometry
作为基础几何体?@Mugen87最初我没有意识到PlaneGeometry
有宽度和高度段,所以我使用了BoxGeometry
,因为我知道我可以操纵它保留顶点,平面几何会更好吗?这将是一个很容易的切换。@Mugen87 Wow更改为PlaneGeometry
是解决方法。。。谢谢如果你想写一个快速的答案,我会接受它,如果不是,我会回答自己以后@JJGerrish您的问题的答案是什么?@WestLangley从@Mugen87得到了答案,原因很简单,我使用的是BoxGeometry
,而不是PlaneGeometry
(下面已经接受)