2013-03-14 4 views
1

Sketchup позволяет создавать компоненты для облегчения повторного использования геометрии. Например, колесо автомобиля может быть превращено в компонент, и 4 экземпляра компонента могут использоваться для 4 колес автомобиля.Сетчатые группы не видны. Three.JS ColladaLoader

Вопрос заключается в том, чтобы поместить каждый повторно используемый компонент в своем собственном отдельном THREE.Object3d случае (который затем может быть повернут, расположенный ... т.е.. Управляется индивидуально)

т.е. как извлекать каждый из 4 колеса автомобиля как 4 отдельных экземпляра THREE.Object3D.

Для этого я экспортировал DAE из эскиза и загрузил его с помощью Three.js ColladaLoader. Однако сгруппированные геометрии не отображаются в файле Three.js. Разгруппированная геометрия внутри одного и того же dae делает нормально.

Пробовал некоторые обходные пути, такие как импорт dae в belnder и дальнейший экспорт в .obj и JSON с использованием exp.js экспортера блендера. С помощью этих обходных решений информация о группировке теряется.

Я пытаюсь вычислить код ColladaLoader.js, чтобы увидеть, есть ли там решение.

This stackoverflow question похоже на (для блендера вместо эскиза) и имеет один ответ, но ответ не тот, что я ищу.

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 фрагмент показывает только повторное использование компонента. Фактическая геометрия компонента появляется в 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> 
       ... 

будет признателен за любую помощь.

ответ

0

Проблема решается. Вот что происходило:

Объекты в загруженной сцене (collada.scene.children [0]), по-видимому, масштабируются в 0,025 раза. т.е. уменьшено. Это не является проблемой, поскольку объекты становятся видимыми после установки правильного масштабирования, расстояние камеры, и т.д ...

На данный момент, Sketchup объекты (те, которые не SketchUp компоненты) являются видимыми, но Sketchup компоненты не видны ,

Причина в том, что компоненты и группы элементов эскиза - это далее масштабируется по тому же параметру 0.025. то есть компоненты масштабируются по коэффициенту 0,025 по сравнению с объектами, которые не являются компонентами.

Это означает, что компоненты были значительно меньше по сравнению с некомпонентами.

Решение прост.

После того, как коллада загружена, проведите по всем компонентам, а также с некомпонентными компонентами и установите их весы на 1. Есть еще одна вещь, которую нужно сделать. На этом этапе компоненты видны, но они не отображаются в правильном положении. Это решается путем умножения позиций в той же пропорции, по которой они были увеличены. то естьумножить позиции всех объектов внутри компонента на (1/0,025)