【发布时间】:2023-01-13 14:15:10
【问题描述】:
我有一个多边形的顶点(x,y,z)作为输入。如何在 three.js 中渲染具有这些顶点的多边形? THREE.Geometry() 从三个js中移除。如何使用 bufferGeometry 或任何其他方法绘制平面多边形?现在,当我绘制带有顶点的多边形时,它会绘制不完整的网格(多边形)。以下代码用于绘制多边形。
const verticesGeometry = new THREE.BufferGeometry().setFromPoints(measurement.coordinates.map((coord) => new THREE.Vector3(coord.x, coord.y, coord.elevation)))
const polygon = new THREE.Mesh(verticesGeometry , new THREE.MeshBasicMaterial({ color: measurement.color, side: THREE.DoubleSide}))
scene.add(polygon)
随附问题的屏幕截图,这是我现在面临的问题,(3 点多边形完美工作,不止于此,渲染不完整。)提前致谢。
我也试过 THREE.ShapeGeometry() 但多边形渲染到底部,因为 THREE.shape() 只接受 VECTOR2 点。我正在传递 vector3 但它忽略了第 3 (z) 点。
let polyShape = new THREE.Shape(measurement.coordinates.map((coord) =>
new THREE.Vector3(coord.x, coord.y, coord.elevation)))
const geometry = new THREE.ShapeGeometry( polyShape )
let polygon = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({ color: measurement.color, side: THREE.DoubleSide }))
【问题讨论】:
-
在你上传第二张图片后,我可以看到你的点有很大的高度差异。您确定要二维多边形而不是一般的三角网格表面吗?
-
如图所示,我将有多个具有不同高度的多边形点。我想用网格填充多边形,如果您要参考第二张图片,我已经绘制好了。
-
所以你已经成功地绘制了多边形,但是它们渲染得太低了。然后向上移动?或者你的意思是你想让多边形跟随地形的高度?
-
对,就是这样 !!这就是我想要的,我希望多边形的点跟随地形的高度。我也已经有了特定点的高度。
-
非常感谢 @buthur,ShapeGeometry 现在正在为我工作,正如你所说,在形状几何中绘制 2d 多边形之后,我将多边形顶点更新为 vector3 点。我在答案中发布代码参考。
标签: three.js 3d geometry polygon buffer-geometry