Разрешение COLLADA FX SID - PullRequest
       26

Разрешение COLLADA FX SID

1 голос
/ 15 апреля 2009

Правила разрешения SID в COLLADA, в частности, в SID COLLADA FX, не очень ясны. Что касается, в частности, SID COLLADA FX, как узнать, с какого элемента начать поиск конкретного SID? Рассмотрим, например, атрибут «текстура» элемента <texture>:

  <effect id="Scene_Material_fx">
     <profile_COMMON>
        <newparam sid="acorn_png_surface">
           <surface type="2D">
              <init_from>acorn_png_img</init_from>
           </surface>
        </newparam>
        <newparam sid="acorn_png_sampler">
           <sampler2D>
              <source>acorn_png_surface</source>
           </sampler2D>
        </newparam>
        <technique sid="default">
           <phong>
              ...
              <diffuse>
                 <texture texture="acorn_png_sampler" texcoord="diffuse_TEXCOORD"></texture>
              </diffuse>
              ...
        </phong>
        </technique>
     </profile_COMMON>
  </effect>

Я могу найти SID, на который ссылается <texture>, если я начну поиск с <profile_COMMON>, который является пра-пра-прародителем элемента <texture>, который содержит ссылку, но я также могу найти его, если я начать поиск с <effect>. Как тогда определяется начальный элемент? Это определено где-то в спецификации?

Предоставляет ли спецификация ограничение на то, насколько близко к корню документа может быть найден sid, на который ссылается конкретный элемент <texture>? В приведенном выше примере, может ли он появиться за пределами <profile_COMMON>, например, внутри своего <effect> родителя? Какой самый «корневой» элемент, в котором я гарантированно найду ссылочный sid, углубившись в этот элемент?

Обновление : Я также разместил этот вопрос на форумах COLLADA , но пока без ответа. Я решил, что на данный момент я просто предположу, что SID, на который ссылается атрибут "texture" <texture>, всегда будет находиться в <profile_COMMON>. Если это не так, это означает, что мой импортер может потерпеть неудачу при действительном вводе, но само сообщество COLLADA не предоставило никаких комментариев по этому вопросу, поэтому я ничего не могу сделать.

Ответы [ 2 ]

1 голос
/ 05 мая 2009

Я чувствую твою боль ;-). Спецификации Collada действительно трудно понять.

Поскольку у вас могут быть параметры, объявленные в scope (не только внутри : Глава 7 О параметрах), вы также должны посмотреть там.

Но. Судя по моему опыту, экспортеры имеют тенденцию иметь локальные параметры (ниже ), так что ваш путь тоже будет работать.

0 голосов
/ 26 ноября 2009

Это старый вопрос, но я считаю, что ответ заключается в том, что идентификаторы SID являются идентификаторами области действия на уровне родительского идентификатора. Таким образом, вы технически начинаете поиск только под элементом, и все sid в этом блоке уникальны.

Это всегда было моим пониманием, так или иначе ...

...