O3D 學習—如何複製一個Transform的模型

在三維佈局中,我們經常需要把一個模型擺放多次,o3d模型加載函數(當然也可以用loader)爲

o3djs.scene.loadScene (

clien

pack

parent

url

void callback)

其中 parent 爲一個transform

如果 瀏覽器啓用了cookie,可以在本地加載已下載過的模型(aaa.o3dtgz),但是,如果關閉了cookie,就需要每次都從服務器下載了,將極大地降低加載速度,同時渲染速度也會受到影響(因爲沒有重用shape

現在我們來解決transform複製問題

假設 第一個transform 的名稱爲 tran1,它用來裝載下載的模型aaa.o3dtgz

 

由於transform採用樹型結構保存,主要採用遞歸方式實現

function copyTran(src,des,pack){

    if(!src || !des) return;

    var chs = src.children;

    var len = chs.length;

    for (var i = 0; i < len; i++) {

       var t = pack.createObject('Transform');

       t.parent = des;

       copyTran(chs[i], t, pack);

    }

    des.copyParams(src);

    var shapes = src.shapes;

    var l = shapes.length;

    for(var j=0;j<l;j++)

       des.addShape(shapes[j]);

}

這樣tran2tran1具有一樣的模型了,如果需要看出效果,需要把兩個模型進行移動,不然是重疊的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章