底部的問題更新....SketchUp實體與「翻轉(軸)」鏡像不反映在變換矩陣
我正在Ruby中編寫自定義SketchUp導出插件。然後使用導出的數據在Three.js中重新創建幾何。
我遇到了一些組件/組轉換問題,並將其跟蹤到鏡像或幾何軸上應用了「翻轉」的幾何圖形。簡而言之,翻轉並不受尊重。我無法找到任何SU Ruby方法來查明是否有任何給定的實體有此應用翻轉。
我可以得到一個變換矩陣,並將其轉換(請參見this question of mine how),但它不適用於這些翻轉的對象。這是一個示例結果;該模型的其餘部分是好的,但該艇採用翻轉船半明顯創建的,在這張照片,他們出現在所有的地方:
我怎樣才能正確地採取這些翻轉幾何考慮?他們在SU Ruby中是否有某種單獨的矩陣或實體標誌?
注1)我觀察到內置SketchUp Collada導出器(使用Three.js ColladaLoader加載它們時)出現類似的錯誤行爲。
注2)雖然我相信這是一個SketchUp的紅寶石API的問題,我萬一有three.js所標記的這有什麼明顯我缺少的問候鏡像和矩陣..
注3)如果使用刻度工具翻轉/鏡像幾何圖形而不是沿着工具翻轉(實際上效果相同),則它們可以正常工作。
UPDATE:
仍然在努力利用這些信息,但在此基礎上的信息越來越近:http://sketchucation.com/forums/viewtopic.php?f=6&t=3083
更新#2:
感謝Thomthom,我是能夠檢測並應用正確翻轉未旋轉的物體。對於一個普通的未經旋轉/未縮放/ unflipped分量矩陣是:
1.0, 0.0, 0.0
0.0, 1.0, 0.0
0.0, 0.0, 1.0
要翻轉(鏡像)成分的基體可以是:
-1.0, 0.0, 0.0
0.0, 1.0, 0.0
0.0, 0.0, 1.0
因此,我可以容易地檢測到翻轉所有的罰款。
但是,如果我隨意旋轉相同的組件(unflipped)的一對夫婦軸,矩陣是這樣的:
-0.33, -0.58, 0,74
0.87, -0.50, 0,00
0.37, 0.64, 0,67
這正常工作在我的出口商/進口商,我可以在三個重新應用此矩陣.js一面。
但是,當已經旋轉組件也反映,矩陣是這樣的:
0.33, 0.58, -0.74
0.87, -0.50, 0.00
0.37, 0.64, 0.67
我不能three.js所正確得到這個矩陣的工作,該組件從未鏡像,導致在圖片中可以看到的行爲。
所以,我不知道該怎麼做。通過檢測更簡單的情況(僅翻轉,未旋轉或縮放),我能夠得到正確的結果,然後在Three.js中爲此類組件設置例如object.scale.x = object.scale.x * -1;
。但對於項目沒有解決方案,它們都翻轉否則旋轉或縮放:(
一件事? – thomthom
是的,我目前正在將矩陣提供給Three.js,除了這些翻轉的組件外,它大部分都可以工作。圖片中的模型非常複雜,所有的palmtree葉子和東西,裏面的傢俱都是由具有自身轉換的組件和組的深層次結構組成的。鑑於渲染並不是完全混亂,我必須做一些正確的事情......令人困惑的是,它不適用於翻轉的東西,因爲顯然在矩陣中存在所需的數據。 – yaku
考慮到內置的Three.js ColladaLoader顯示與SketchUp導出的DAE相同的問題,讓我懷疑Three.js中的Matrix4實現在涉及負面縮放時簡單混淆。或類似的東西。這真的超出了我的專業領域:) – yaku