Svg 三.挤出缓冲几何体只有很少的多边形
我有一个带有简单矩形(作为路径)的SVG,我使用THREE.SVGLoader将其加载到我的应用程序中,如下所示:,并使用以下代码:Svg 三.挤出缓冲几何体只有很少的多边形,svg,three.js,path,geometry,triangulation,Svg,Three.js,Path,Geometry,Triangulation,我有一个带有简单矩形(作为路径)的SVG,我使用THREE.SVGLoader将其加载到我的应用程序中,如下所示:,并使用以下代码: const paths = paths_.paths const geometry = new THREE.Geometry() for (let i = 0; i < paths.length; i++) { const path = paths[i
const paths = paths_.paths
const geometry = new THREE.Geometry()
for (let i = 0; i < paths.length; i++) {
const path = paths[i]
const shapes = path.toShapes(false)
for (let j = 0; j < shapes.length; j++) {
const shape = shapes[j]
const shape3d = new THREE.ExtrudeBufferGeometry(shape, {
depth: 0.1,
bevelThickness: 2,
bevelSize: 1.5,
bevelSegments: 5,
bevelEnabled: true
});
const edgeGeometry = new THREE.Geometry().fromBufferGeometry(shape3d)
geometry.merge(edgeGeometry)
}
}
geometry.computeFaceNormals()
geometry.mergeVertices()
geometry.computeVertexNormals()
geometry.center()
return geometry
const paths=路径\路径
常量几何体=新的三个。几何体()
for(设i=0;i
我创建了一个几何体,并用它创建了一个3d网格
问题是,挤出BufferGeometry使用(我认为)切耳三角剖分来创建将构成路径形状的多边形,因此网格的顶面和底面上没有太多三角形
我需要很多面,因为我想使用这个库来弯曲网格,但是如果没有很多面,那就不好了,如下图所示:
我尝试了SubdivisionModifier来添加多边形,但没有成功,因为它创建了奇怪的孔和瑕疵(在这个库中有一条评论说,修改器不能很好地处理尖锐的边)
我甚至尝试使用一个CSG库,我用它将这个拉伸的网格与一个有许多线段的BoxGeometry网格相交,它工作了,但它太过创建孔和工件
似乎THREE.ExtrudeBufferGeometry创建的几何体没有100%正确的法线
一般来说,我尝试了很多方法,比如:标记、计算顶点法线、面法线、平面着色、平滑着色,更改了ExtradeBufferGeometry的所有参数,但似乎没有任何效果
任何帮助都将不胜感激 使用此解决方案:我设法使用manthrax版本的CSG库,以便将特定长方体与我的对象相交,并取回顶部和底部添加了多边形的对象:此拉伸是否需要以编程方式进行?我的第一个想法是,从Blender导入带有所需变形的模型将非常容易,但如果需要动态生成模型,这将不起作用。@Marquizzo不幸的是,它必须在web应用程序中以编程方式创建。