我在SketchUp寫一個導出腳本(紅寶石),和我在申請中three.js所側相同的變換的麻煩,使物體具有Three.js中的旋轉與SketchUp中的相同。轉換Sketchup的轉型,以three.js所旋轉+規模+位置或矩陣
我可以使用SketchUp的轉型類閱讀旋轉:http://www.sketchup.com/intl/en/developer/docs/ourdoc/transformation.php
我可以從我傳遞給我的three.js所代碼旋轉的部件拿到這些類型的數據。所有的都在X,Y的形式載體,Z
xaxis: 0.0157771536190692,-0.0,-0.0199058138160762
yaxis: -0.0199058138160762,0.0,-0.0157771536190692
zaxis: 0.0,0.0254,-0.0
origin: 1.4975125146729,0.0,-1.25735397455338
對象定位正確,如果我只是從原產複製值Object3D.position。但我不知道如何於x軸,y軸與Z值適用於Object3D.rotation。
three.js所具有的各種方式而旋轉的模型,通過矩陣處理,四元數,角度,弧度和諸如此類的東西。但是如何使用這些軸值設置對象的旋轉?
編輯:
SketchUp的變換還提供了一種.to_a(數組)方法,該方法我認爲應該返回一個16元件矩陣。我試圖在Three.js中使用它:
// tm is from SketchUp:Transformation to_a
var tm = "0.621147780278315,0.783693457325836,-0.0,0.0,-0.783693457325836,0.621147780278315,0.0,0.0,0.0,0.0,1.0,0.0,58.9571856170433,49.5021249824165,0.0,1.0";
tm = tm.split(",");
for (var i = 0; i < tm.length; i++) {
tm[i] = tm[i] * 1.0;
}
var matrix = new THREE.Matrix4(tm[0], tm[1], tm[2], tm[3], tm[4], tm[5], tm[6], tm[7], tm[8], tm[9], tm[10], tm[11], tm[12], tm[13], tm[14], tm[15]);
obj.applyMatrix(matrix);
但是這會導致一團糟,所以還是有問題。