如何在three.js中将x、y、z坐标数据转换为几何图形(顶点、面)?

3
我有一组[x,y,z]坐标数据,它们构成了一个空间。
例如: (0,0,-3000),(1848,0,-3000),(1848,-5177,-3000),(0,-5177,-3000), (0,0,0),(1848,0,0),(1848,-5177,0),(0,-5177,0)
我想使用three.js渲染空间坐标。我正在尝试创建一个函数来创建几何对象进行渲染。然而,设置顶点和面似乎很棘手。 是否存在一种简单的方法在three.js中呈现xyz坐标到几何体中? 或者可以绘制带有x、z的二维形状并使其成为三维形状(具有z)吗? 因为对于每个几何体,它在给定的坐标示例中都具有相同的高度。

你有一张人脸列表吗? - neeh
不,我只有一组xyz坐标数据。我想创建一个可以生成面的函数。 - hyewon330
有几种方法可以从顶点列表生成面。你的顶点数量是3的倍数吗? - neeh
这组坐标应该是顶点,但我无法想出如何从这些坐标生成三角形。 - hyewon330
一个非常简单的方法是每3个顶点生成一个面(三角形),这需要有3的倍数个顶点。 - neeh
谢谢您的评论。您知道我应该如何使用给定的坐标创建一个三的倍数个顶点吗? - hyewon330
1个回答

2

概念

要在三维空间中定义几何形状,您需要:

  • 三维空间中的点;以及
  • 关于您的点如何连接的信息。

对于任意形状,您需要指定连接3个或更多点的

或者,如果您对形状进行假设(例如,从您的示例坐标看来,您正在绘制一个竖立的盒子),则只需提供坐标。

示例

根据您上面的示例,您的盒子似乎有:

高度:3000;宽度:1848;深度:5177

这使您可以使用:

geometry = new THREE.BoxGeometry( 1848 , 3000 , 5177 );

顺便提一下:一个立方体应该有8个顶点,而不是10个。你重复包含了 [0,0,-3000] 和 [0,0,0] 两次。


感谢您的评论。我有许多空间数据集,它也可以是其他形状(例如五边形竖立盒子等)。这些坐标应该形成一个房间的形状,而房间的形状将形成一个建筑物。是否有任何方法可以绘制折线(使用x,y值)并使其成为具有给定z值(高度)的竖立盒子? - hyewon330
当我使用BoxGeometry时,我能否为盒子指定中心/位置? - hyewon330
这就是我的three.js知识的极限了,但从逻辑上讲,您要么必须在外部定义面,要么向上挤出2D形状。请查看此页面的源代码(https://stemkoski.github.io/Three.js/Shapes.html),其中包括许多基本形状。 - linuxpirates
非常感谢。帮了我很大的忙! - hyewon330
请勿明确感谢。在StackExchange上,点赞是我们表示感谢的方式。如果答案解决了您的问题,您还应该将其标记为已接受。 - linuxpirates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接