在三維佈局中,我們經常需要把一個模型擺放多次,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]);
}
這樣tran2和tran1具有一樣的模型了,如果需要看出效果,需要把兩個模型進行移動,不然是重疊的