【问题标题】:Three.js - call JSON model multiple timesThree.js - 多次调用 JSON 模型
【发布时间】:2016-02-06 04:26:30
【问题描述】:

如何加载一次 JSON 模型并多次将其添加到场景中?

目前,我两次调用模型。也许有人可以给我一个我正在努力完成的工作示例。

var loader = new THREE.JSONLoader();

    loader.load( "models/model1.js", meshloader1("models/model1.js"));
    loader.load( "models/model1.js", meshloader2("models/model1.js"));

        function meshloader1(fileName){
            return function(geometry){
              mesh1 = new THREE.Mesh(geometry, material);
              mesh1 .position.set( 0, 0, 0 );
              mesh1 .scale.set( 1, 1, 1 );
              scene.add(mesh1 );
            }
        }

        function meshloader2(fileName){
            return function(geometry){
              mesh2 = new THREE.Mesh(geometry, material);
              mesh2 .position.set( 0, 0, 0 );
              mesh2 .scale.set( 1, 1, 1 );
              scene.add(mesh2 );
            }
        }

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    你可以像这样在你的加载器之外定义一个geometry对象:

    var loader = new THREE.JSONLoader();
    var genericGeometry;
    
    loader.load( "models/model1.js", meshloader("models/model1.js"));
    
    function meshloader(fileName){
        return function(geometry){
            genericGeometry = geometry;
            createMeshs();
        }
    }
    
    // Since `loader.load()` method is async,
    // you need to wrap this inside a function and call it when the geometry is actually loaded
    function createMeshs(){
       var mesh1 = new THREE.Mesh(genericGeometry, material);
       mesh1.position.set( 0, 0, 0 );
       mesh1.scale.set( 1, 1, 1 );
       scene.add(mesh1);
    
       var mesh2 = new THREE.Mesh(genericGeometry, material);
       mesh2.position.set( 1, 1, 0 );
       mesh2.scale.set( 1, 1, 1 );
       scene.add(mesh2);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2015-01-14
      • 1970-01-01
      • 2015-02-26
      • 2017-03-09
      • 2017-08-10
      • 1970-01-01
      • 2017-04-20
      相关资源
      最近更新 更多