Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 三.挤出缓冲几何体只有很少的多边形_Svg_Three.js_Path_Geometry_Triangulation - Fatal编程技术网

Svg 三.挤出缓冲几何体只有很少的多边形

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

我有一个带有简单矩形(作为路径)的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 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应用程序中以编程方式创建。