1

COLLADAでSIDを解決するためのルール、特にCOLLADAFXSIDはあまり明確ではありません。特にCOLLADAFXSIDに関して、特定の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>

<texture>で検索を開始すると、参照されるSIDを見つけることができます<profile_COMMON>。これは、参照を含む要素の曽祖父母ですが、<texture>から検索を開始すると、それも見つけることができます<effect>。では、開始要素はどのように決定されますか?仕様のどこかで定義されていますか?

<texture>仕様は、特定の要素によって参照されるsidがドキュメントルートにどれだけ近いかを制限しますか?上記の例では、親<profile_COMMON>の内部など、外部に表示される可能性がありますか?<effect>その要素からドリルダウンすることによって参照されるsidを見つけることが保証されている「最もルートの」要素はどれですか?

更新:私はこの質問をCOLLADAフォーラムにも投稿しましたが、これまでのところ回答はありません。当面は、<texture>「texture」属性で参照されるSIDが常に。の下にあると想定することにしました<profile_COMMON>。それが間違っている場合は、インポーターが有効な入力に失敗する可能性があることを意味しますが、COLLADAコミュニティ自体はこれに関するフィードバックを提供していないため、私にできることは何もありません。

4

2 に答える 2

1

私はあなたの痛みを感じることができます;-)。Colladaの仕様は本当にわかりにくいです。

<effect> スコープで params を宣言できるので ( <profile> 内だけでなく: Chapter 7 パラメーターについて)、そこも参照する必要があります。

しかし。私の経験から判断すると、エクスポーターはローカルパラメーター (<profile> の下) を持つ傾向があるため、あなたの方法も機能します。

于 2009-05-04T23:29:47.297 に答える
0

これは古い質問ですが、その答えは、SID は親 ID のレベルでの「スコープ ID」であるということだと思います。したがって、技術的には要素のすぐ下から検索を開始すると、すべての sid がそのブロックの下で一意になります。

とにかく、それは常に私の理解でした...

于 2009-11-26T13:11:53.860 に答える