2016-05-13 12 views
0

エクスポートからcolladaファイルをロードします。ファイルは、「ベース」ファイルが実際のジオメトリを持つ別のコラージュファイルを参照するようにエクスポートされます。参照先のCOLLADAファイルをThreeJsでロードする方法

ベースファイルは、以下のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<COLLADA version="1.5.0" xmlns="http://www.collada.org/2008/03/COLLADASchema"> 
    <asset> 
    <contributor> 
     <author>ACME</author> 
    </contributor> 
    <created>2016-04-27T14:53:24</created> 
    <modified>2016-04-27T14:53:24</modified> 
    <unit meter="0.001" name="mm" /> 
    <up_axis>Z_UP</up_axis> 
    </asset> 
    <library_visual_scenes id="libvisualscenes"> 
    <visual_scene id="libvisualscenes.scene"> 
     <node id="38760" name="Part1_CATPart"> 
     <matrix>-1.000000 0.000000 0.000000 -399.679153 0.000000 0.000000 -1.000000 671.000000 0.000000 -1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000</matrix> 
     <instance_node url="Part1_CATPart_799.dae#acme_frame_self_origin" /> 
     </node> 
    </visual_scene> 
    </library_visual_scenes> 
    <scene> 
    <instance_visual_scene url="#libvisualscenes.scene" /> 
    </scene> 
</COLLADA> 

Part1_CATPartは、上記のCOLLADAで参照されています。 私は単純なアプローチを試み、ColladaLoader2.jsを使用してこのコラージュをロードしましたが、これによりエラーColladaLoader2.js:175 Uncaught TypeError: Cannot read property 'build' of undefinedが発生しました。 Loading Part1_CATPartが直接動作します。しかし、この方法では、ベースファイルの行列は考慮されません。

threejs` colladaLoader2で参照ファイルを取得する方法はありますか?

答えて

0

parseメソッドでurlが解析されていると思います。here on line 2326通常、urlは別のノードを指します。

if (iNode) 
    this.nodes.push((new Node()).parse(iNode)) ; 
}else{ 
    url = url.split("#")[0] 
    console.log(url); 
} 

その後、子モデルをロードするとonloadコールバックでシーンに追加しurlを使用することができます:

var loader = new THREE.ColladaLoader(); 
var result = loader.load(url); 
var scene = result.scene; 

var name, model, children = scene.children; 
var onLoad = function(result){ 
    // process the result of each child model and add to parent scene 
}; 
var onProgress = function(){}; 
loader.load(url, onLoad, onProgress); 

次のようなif節内のURLを取得することができますHere is a fiddle with a demo

バイブルはURLのみを出力します。それを正しく読み込む私はあなたに任せます。

+0

ファイルは、 'で参照され、ノード名では参照されません。 – Akkumulator

+0

@Akkumulator私は私の答えを更新しました – Wilt

+0

ありがとう、それは正しい方向に私を得ました。 – Akkumulator

関連する問題