Sketchupを使用すると、コンポーネントを作成してジオメトリの再利用を容易にすることができます。たとえば、車のホイールをコンポーネントにすることができ、コンポーネントの4つのインスタンスを車の4つのホイールに使用できます。
問題は、再利用された各コンポーネントを独自の個別のTHREE.Object3dインスタンスに配置する方法です(その後、回転、配置、...つまり個別に制御できます)
つまり、車の4つの車輪のそれぞれを4つの別々のTHREE.Object3Dインスタンスとして取得する方法です。
これを行うために、sketchupからDAEをエクスポートし、Three.jsColladaLoaderを使用してロードしました。ただし、グループ化されたジオメトリはThree.jsではレンダリングされません。同じdae内のグループ化されていないジオメトリは、問題なくレンダリングされます。
daeをbelnderにインポートし、さらにthree.jsブレンダーエクスポーターを使用して.objとJSONにエクスポートするなど、いくつかの回避策を試しました。これらの回避策では、グループ化情報が失われます。
ColladaLoader.jsコードを掘り下げて、解決策がそこにあるかどうかを確認しようとしています。
このstackoverflowの質問は似ているようで(sketchupではなくblenderの場合)、1つの答えがありますが、答えは私が探しているものではありません。
ところで、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スニペットは、コンポーネントの再利用のみを示しています。コンポーネントの実際のジオメトリは、の下のdaeに表示され<library_nodes>
ます。
</library_visual_scenes> <library_nodes> <node id="ID3" name="WheelComponent"> <instance_geometry url="#ID4"> <!-- GEOMETRY OF A GROUP (COMPONENT) --> <bind_material> <technique_common> ...
助けていただければ幸いです。