2009-04-14 15 views
1

Die Regeln zum Auflösen von SIDs in COLLADA und insbesondere von COLLADA FX SIDs sind nicht sehr klar. Was weiß ich insbesondere in Bezug auf COLLADA FX SIDs, bei welchem ​​Element die Suche nach einer bestimmten SID gestartet wird? Betrachten wir zum Beispiel die „Textur“ atttibute eines <texture> Element:COLLADA FX SID Auflösung

<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> 

Ich kann die SID finden, indem <texture> verwiesen, wenn ich die Suche auf <profile_COMMON> beginnen, die die Ur-Ur-Großeltern des <texture> Element das enthält die Referenz, aber ich kann es auch finden, wenn ich suche von <effect>. Wie wird dann das Startelement bestimmt? Ist es irgendwo in der Spezifikation definiert?

Bietet die Spezifikation eine Grenze dafür, wie nahe am Dokumentenstamm eine SID sein kann, auf die von einem bestimmten <texture> Element verwiesen wird? Könnte es im obigen Beispiel möglicherweise außerhalb von <profile_COMMON> erscheinen, z. B. innerhalb seines <effect> übergeordneten Elements? Welches ist das "rootmost" -Element, bei dem ich garantiert die referenzierte SID finde, indem ich von diesem Element aus bohre?

Update: Ich habe diese Frage auch in der COLLADA forums gestellt, bisher ohne Antwort. Ich habe beschlossen, dass ich vorläufig annehmen werde, dass die SID, auf die sich das "texture" -Attribut <texture> bezieht, immer unter <profile_COMMON> zu finden ist. Wenn das falsch ist, bedeutet dies, dass mein Importeur bei einer gültigen Eingabe fehlschlägt, aber die COLLADA-Community selbst hat keine Rückmeldung zu diesem Thema gegeben, so dass ich nichts tun kann.

Antwort

1

Ich kann deinen Schmerz fühlen ;-). Collada Spezifikationen sind wirklich schwer zu verstehen.

Wie Sie params erklärt in <Wirkung> Umfang (nicht nur innerhalb <Profil>: Kapitel 7 Über Parameter) haben, können Sie sollte es auch aussehen.

Aber. Gemessen an meiner Erfahrung neigen Exporteure dazu, lokale Parameter (unter <Profil>) zu haben, damit Ihr Weg auch funktioniert.

0

Dies ist eine alte Frage, aber ich glaube, die Antwort ist, dass SIDs "Bereichs-IDs" auf der Ebene der Eltern-ID sind. Sie fangen also technisch an, direkt unter dem Element zu suchen, und alle Sids sind unter diesem Block eindeutig.

Das war immer mein Verständnis, jedenfalls ...