Javascript 在three.js中合并多行

Javascript 在three.js中合并多行,javascript,three.js,Javascript,Three.js,我想要的将多条线合并为一条线以提高性能(线可能是直线、多段线(闭合)、圆弧、圆、椭圆)。遇到与dpatro描述相同的问题 我找到的我找到了解决方案:,我的代码如下: case "Line": var startPoint = me.stripStringToPoint(entity.StartPoint); var endPoint = me.stripStringToPoint(entity.EndPoint); var

我想要的将多条线合并为一条线以提高性能(线可能是直线、多段线(闭合)、圆弧、圆、椭圆)。遇到与dpatro描述相同的问题

我找到的我找到了解决方案:,我的代码如下:

case "Line":
            var startPoint = me.stripStringToPoint(entity.StartPoint);
            var endPoint = me.stripStringToPoint(entity.EndPoint);
            var p1 = new THREE.Vector3(startPoint[0],startPoint[1],startPoint[2]);
            var p2 = new THREE.Vector3(endPoint[0],endPoint[1],endPoint[2]);
            geometry.vertices.push(p1);
            geometry.vertices.push(p2);

            var line = new THREE.LineSegments(geometry, material);
            return line;
            break;

        case "Polyline":
            var vertices = entity.Vertices;
            var color = me.stripStringToColor(entity.Color);
            for (var j = 0, len1 = vertices.length; j < len1; j = j + 2) {
                var p = new THREE.Vector3(entity.Vertices[j], entity.Vertices[j + 1],0);
                geometry.vertices.push(p);
            }
            if ( entity.Closed === true && geometry.vertices.length >0) {
                geometry.vertices.push(new THREE.Vector3(entity.Vertices[0], entity.Vertices[1],0));
            }

            var line = new THREE.LineSegments(geometry, material);//
            return line;


var mergeGeometry = new THREE.Geometry();
mergeGeometry.merge(line.geometry, line.matrix);
scene.add(new THREE.LineSegments(mergeGeometry,material ));
案例“行”:
var startPoint=me.stripStringToPoint(entity.startPoint);
var endPoint=me.stripStringToPoint(entity.endPoint);
变量p1=新的三个向量3(起始点[0],起始点[1],起始点[2]);
var p2=新的三个向量3(端点[0],端点[1],端点[2]);
几何。顶点。推(p1);
几何。顶点。推(p2);
var line=新的三条线段(几何体、材质);
回流线;
打破
案例“多段线”:
var顶点=实体顶点;
var color=me.stripStringToColor(entity.color);
对于(var j=0,len1=顶点.length;j0){
geometry.vertices.push(新的三个.Vector3(entity.vertices[0],entity.vertices[1],0));
}
var line=新的三条线段(几何体、材质)//
回流线;
var mergeometry=new THREE.Geometry();
mergeometry.merge(line.geometry,line.matrix);
添加(新的三条线段(合并几何体、材质));

我用的是three.js r.73,而他用的是r.72,这有关系吗?需要你的帮助~

你说的“线与线之间的联系仍然存在”是什么意思?你能更清楚地了解这个问题吗?试着解释你期望的行为是什么,实际的行为是什么,以及它们之间的区别。如果我理解正确,OP是将空间上分离的线段放在一个直线对象中。这是一条线,然后有一条线连接不同的部分。相反,请使用几何体对象的内置合并功能。在自己的for循环中创建线零件。请参阅本页上的合并功能:如果必须使用OP的方法,我会将有问题的片段的材质设置为visible=false;我不知道会带来什么样的性能提升??也许OP试图简化旋转或类似操作。@JCD很抱歉我的描述不清楚,首先,我对它进行了编辑,希望它能有所帮助。@Radio我很抱歉,我不明白“相反,请使用几何体对象的内置合并功能。在它们自己的for循环中创建线条部分。”我现在使用内置的几何合并功能,以及如何在自己的for循环中创建线条部分?对不起,我误解了你的问题。我现在明白了,合并本身就是你的问题所在。我认为你需要使用不同的模式。虽然使用的是线段,但也使用了“合并”,并且可以看到线之间的连接问题。有关THREE.LineSegment的正确用法,请参见以下位置的代码行49-64: