three.js具有自定义网格和材质的GPU实例化

时间:2018-12-20 01:06:39

标签: three.js

instances/gpu three.js example之后尝试实现GPU实例化。

但是,在我的尝试中,似乎什么也没加载:http://designs.playgami.com/webgl_loader_fbx3.html

(这是非gpu实例化版本-http://designs.playgami.com/webgl_loader_fbx2.1.html

在这里,我专门尝试只加载一次fbx模型,然后实例化。我正在尝试使用var object = new THREE.Mesh( geo );进行实例化,但是以某种方式不起作用?

  function CreateCraneScape(texturearray,squareside,armyside){
                var total = texturearray.length;
                var halfside = Math.floor(squareside*0.5);

                loader.load( '/11272018-crane.fbx', function ( geo ) {
                    var k = 0;
                    // create cranes
                    for(var i=-halfside;i<=halfside;i++){
                        for(var j=-halfside;j<=halfside;j++){
                            var object = new THREE.Mesh( geo );
                            CraneApplyTexture(object,texturearray[k]); 
                            CranePosRot(object,i,j);
                            k++;
                        }   
                    }

                    // create army
                    
                    for(var i=-(halfside+armyside);i<=(halfside+armyside);i++){ 
                            for(var j=-(halfside+armyside);j<=(halfside+armyside);j++){ 
                                if(j<-halfside||j>halfside || (i<-halfside||i>halfside)){ 
                                    var object = new THREE.Mesh( geo );
                                    CraneApplyTexture(object,''); 
                                    CreatePosRot(object,i,j);
                                }
                            }   
                    }

                });
   }

1 个答案:

答案 0 :(得分:1)

显然,FBXLoader不仅加载网格几何图形,而且实际上加载整个three.js游戏对象。因此,网格实例化需要引用第一个子项的几何。

geo = geo.children[0].geometry;