如何在 Threejs 中绘制开口曲线形状

Posted

技术标签:

【中文标题】如何在 Threejs 中绘制开口曲线形状【英文标题】:How to draw open end curve shapes in Threejs 【发布时间】:2021-12-01 18:53:04 【问题描述】:

我正在使用 ExtrudeBufferGeometry 绘制曲线/多边形。 通常它总是有封闭的末端。 例如:

我的目标是画出类似的形状,但像这样开放式

请注意,我的目标不是“LINES”或“Planes”。它必须有拉伸,我只希望连续点与角度保持结合(角度可以是弧度中的任何浮点值)

【问题讨论】:

【参考方案1】:

您的解决方案在于in the ExtrudeGeometry documentation,其中指出:

使用此几何体创建网格时,如果您想为其面和拉伸侧面使用单独的材质,您可以使用一系列材质。第一种材料将应用于面部;第二种材料将应用于侧面。

因此,在生成网格时,只需传递 2 个材质,第一个带有 visible: false 的材质不会被渲染。

const geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings );

const materialFace = new THREE.MeshBasicMaterial(  visible: false  );
const materialSide = new THREE.MeshBasicMaterial(  color: 0x00ff00  );

const mesh = new THREE.Mesh( geometry, [materialFace, materialSide] ) ;

【讨论】:

我还使用了另一种方式,例如curveShape.holes.push(curveShape)。哪个有效,但必须积极创造形状。你的方法非常有效。非常感谢。 但它仍然是闭合形状。不可以用Open End创建形状吗? 抱歉,我不认为 ExtrudeGeometry 是用该功能构建的。

以上是关于如何在 Threejs 中绘制开口曲线形状的主要内容,如果未能解决你的问题,请参考以下文章

threejs+d3js 绘制3D动态数据图

如何在 html5 画布中绘制椭圆?

用 Python 绘制龙形曲线

用 Python 绘制龙形曲线

视觉高级篇26 # 如何绘制带宽度的曲线?

视觉高级篇26 # 如何绘制带宽度的曲线?