网格组不可见Three.JS ColladaLoader

时间:2013-03-14 08:44:19

标签: three.js collada

Sketchup允许制作组件以便于重复使用几何体。例如,车轮可以制成一个部件,该部件的4个实例可以用于汽车的4个车轮。

问题是如何将每个重复使用的组件放入其自己独立的THREE.Object3d实例中(然后可以旋转,定位,...即单独控制)

即。如何检索汽车的4个车轮中的每一个作为4个单独的THREE.Object3D实例。

为此,我从sketchup导出DAE并使用Three.js ColladaLoader加载它。但是,Three.js不会呈现分组的几何图形。同一个dae中的未分组几何体渲染确定。

尝试了一些解决方法,例如将dae导入belnder并使用three.js blender导出器进一步导出到.obj和JSON。通过这些变通办法,分组信息会丢失。

我正在尝试深入研究ColladaLoader.js代码,看看是否存在解决方案。

This stackoverflow question似乎相似(对于blender而不是sketchup)并且有一个答案,但答案不是我正在寻找的。

BTW,可以在下面的代码段中看到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代码段仅显示组件的重复使用。组件的实际几何体显示在<library_nodes>下的dae中。

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

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题重新解决。以下是发生的事情:

加载场景中的对象(collada.scene.children [0])似乎按因子0.025缩放。缩小。这不是问题,因为在设置正确的缩放,相机距离等后对象变得可见......

此时,Sketchup对象(不是Sketchup组件的对象)可见,但Sketchup 组件不可见。

原因是草图组件和组进一步按相同因子0.025缩放。即,与不是组件的对象相比,组件按比例缩放0.025倍。

这意味着与非组件相比,组件的大小要小得多。

解决方案很简单。

加载collada后,遍历所有组件以及非组件并将其比例设置为1.还有一件事要做。此时组件可见,但它们没有出现在正确的位置。这可以通过将它们按比例放大的位置相乘来解决。即,将组件内所有对象的位置乘以(1 / 0.025)