账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    three.js 使用geometry.merge() 优化
    29
    0

    第一段是原本画网格的代码 第二段我使用geometry.merge()方法的代码 不知道哪里写错了 不报错 也出不来 请前辈指教

    function initObject() {
                    //1.在x轴上定义两个点p1 p2
                    var geometry = new THREE.Geometry();
                    geometry.vertices.push(new THREE.Vector3(-500, 0, 0));
                    geometry.vertices.push(new THREE.Vector3(500, 0, 0));
                    //2.主要在于这里的算法,从右、下角开始画
                    for (var i = 0; i <= 20; i++) {
                        //画横线
                        var line = new THREE.Line(geometry, new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 }));
                        line.position.z = (i * 50) - 500;
                        scene.add(line);
    
    
                        var line = new THREE.Line(geometry, new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 }));
                        line.position.x = (i * 50) - 500;
                        line.rotation.y = 90 * Math.PI / 180;   //转90度
                        scene.add(line);
    
                    }
                }
    function initObject() {  
                    var geometry = new THREE.Geometry();  
                    var allLine=new THREE.Geometry();
                    geometry.vertices.push( new THREE.Vector3( - 500, 0, 0 ) );  
                    geometry.vertices.push( new THREE.Vector3( 500, 0, 0 ) ); 
                    for ( var i = 0; i <= 20; i ++ ) { 
                        var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
                        line.position.z = ( i * 50 ) - 500;  
                        allLine.merge(line.geometry,line.matrix) 
                        var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } ) );
                        line.position.x = ( i * 50 ) - 500;  
                        line.rotation.y = 90 * Math.PI / 180;  
                        allLine.merge(line.geometry,line.matrix)
                    }  
                    allLineMesh=new THREE.Mesh(allLine,new THREE.MeshBasicMaterial({color:0x000000,side:THREE.DoubleSide}))
                    scene.add( allLineMesh );  
                }  
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 请叫我儿媳。 普通会员 1楼

      geometry.merge() 是一个用于合并几何对象的方法,可以用于优化场景中的几何对象,以提高性能。以下是使用 geometry.merge() 优化的示例:

      ```javascript // 创建一个球体和一个圆柱体 var sphere = new THREE.SphereGeometry(1, 32, 32); var cylinder = new THREE.CylinderGeometry(2, 1, 32);

      // 创建一个几何对象数组 var geometryObjects = [sphere, cylinder];

      // 创建一个合并几何对象的函数 function merge geometries(geoObjects) { // 创建一个合并几何对象对象 var geometry = new THREE.Geometry();

      // 遍历几何对象数组 for (var i = 0; i < geometryObjects.length; i++) { // 创建合并几何对象对象的几何体 geometry.vertices.push(geoObjects[i].geometry.vertices[0]); geometry.vertices.push(geoObjects[i].geometry.vertices[1]); geometry.vertices.push(geoObjects[i].geometry.vertices[2]); }

      // 返回合并几何对象对象 return geometry; }

      // 创建一个合并几何对象的函数 var geometry = merge(geometryObjects);

      // 使用合并几何对象 var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });

      var mesh = new THREE.Mesh(geometry, material); scene.add(mesh); ```

      在这个示例中,我们首先创建了两个几何对象,一个球体和一个圆柱体。然后,我们创建了一个合并几何对象的函数,该函数遍历几何对象数组,创建合并几何对象对象的几何体,然后返回合并几何对象对象。最后,我们使用合并几何对象,创建了一个新的几何对象,并将其添加到场景中。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部