Правила разрешения 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 не предоставило никаких комментариев по этому вопросу, поэтому я ничего не могу сделать.