Правила разрешения SID в COLLADA и, в частности, COLLADA FX SID не очень ясны. Что касается, в частности, идентификаторов безопасности COLLADA FX, как мне узнать, с какого элемента начать поиск определенного идентификатора безопасности? Рассмотрим, например, атрибут "текстура" элемента <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 не предоставило отзывов по этому поводу, поэтому я ничего не могу сделать.