2013-03-14 40 views
1

Sketchup允許使組件便於重用幾何。例如,可以將汽車車輪製成部件,並且可以將4個部件用於汽車的4個車輪。網格組不可見Three.JS ColladaLoader

的問題是如何把每個重新使用部件到它自己的單獨的THREE.Object3d實例(其然後可被旋轉,定位,...即,單獨控制)

即如何檢索每作爲4個單獨的THREE.Object3D實例的汽車的4個車輪。

爲此,我從sketchup中導出了一個DAE,並使用Three.js ColladaLoader加載它。但是,分組幾何不是由Three.js渲染的。相同dae內的未分組幾何呈現正常。

嘗試了一些解決方法,如將dae導入belnder,然後使用three.js blender exporter進一步導出爲.obj和JSON。有了這些解決方法,分組信息就會丟失。

我試圖挖掘ColladaLoader.js代碼來查看解決方案是否存在。

This stackoverflow question似乎相似(用於攪拌器而不是sketchup),並有一個答案,但答案不是我要找的。

順便說一句,DAE中分組和未分組幾何的一個例子可以在下面的代碼片段中看到。

<library_visual_scenes> 
    <visual_scene id="ID1"> 
     <node name="SketchUp"> 
      <instance_geometry url="#ID19"> <!-- UN-GROUPED GEOMETRY --> 
       <bind_material> 
        <technique_common> 
         <instance_material symbol="Material2" target="#ID6"> 
          <bind_vertex_input semantic="UVSET0" input_semantic="TEXCOORD" input_set="0" /> 
         </instance_material> 
        </technique_common> 
       </bind_material> 
      </instance_geometry> 
      <node id="ID2" name="wheel1"> <!-- A RE-USE OF A COMPONENT --> 
       <matrix>1.0000000 0.0000000 0.0000000 7.0639700 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.0000000</matrix> 
       <instance_node url="#ID3" /> 
      </node> 
     </node> 
    </visual_scene> 
</library_visual_scenes> 

上面DAE片段顯示了僅重新使用的組件的。組件的實際幾何尺寸出現在012e的dae中。

</library_visual_scenes> 
<library_nodes> 
    <node id="ID3" name="WheelComponent"> 
     <instance_geometry url="#ID4"> <!-- GEOMETRY OF A GROUP (COMPONENT) --> 
      <bind_material> 
       <technique_common> 
       ... 

會明白任何幫助。

回答

0

問題重新解決。以下是發生了什麼:

加載場景中的對象(collada.scene.children [0])似乎按0.025因子縮放。即縮小。這不是一個問題,因爲對象成爲設定正確變焦,相機的距離,等後可見......

此時,SketchUp的對象(那些不SketchUp的組件)是可見的,但Sketchup的組件是不可見。

原因是sketchup組件和組是進一步縮放了相同的因子0.025。即與不是分量的對象相比,分量按比例因子0.025縮放。

這意味着與非組件相比,組件的尺寸變得更小。

解決方案很簡單。

加載collada之後,遍歷所有組件以及非組件,並將它們的比例設置爲1.還有一件事要做。此時組件是可見的,但它們不會出現在正確的位置。這是通過按照它們按比例放大的比例乘以位置來解決的。即乘以(1/0.025)