Metasequoiaクラス改造論(1) 階層構造の再現

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2008年2月2日 土曜日16:59:11

Metasequoiaクラス改造論(1) 階層構造の再現

Metasequoiaは、バージョン2.4から、オブジェクトの階層化に対応した。そこで、Metasequoiaクラスもオブジェクトを階層化してみよう。幸い、Papervision3D(と言うかFlashそのものが)、木構造でデータを保持するので、これを利用すればいい。

つまり、今までは単一のMetasequoiaインスタンスに全てのオブジェクトを放り込んでいたのを、オブジェクトごとに内部でMetasequoiaクラスを生成し、addChildしていけばよいのだ。

ちなみに、完成品はMQOViewerに使用してある。

階層構造の構築

Metasequoiaのファイルフォーマットだと、階層構造で親になるObjectは、自分より前にいることになる。つまり、パース済みのObjectチャンクの中に親があるのだ。具体的に言うと、自分より先にパースされたオブジェクトは、以下の3つのうちどれってこと。

  1. 自分の親Objectである
  2. 自分の兄弟Objectである
  3. 自分の兄弟Objectの子である

なので、Metasequoiaクラスをこんな風に実装すればよいはずだ。

  • mqoファイルをロードするMetasequoiaインスタンスをrootとする。Objectチャンク内の全Objectはその子
  • rootは、mqoファイル内の全Objectの一覧を持つ
  • 新しいObjectチャンクをパースする際に、一覧から親を探す

Metasequoiaのファイルフォーマットによれば、階層構造はObjectチャンクのdepthチャンクで表現されるとある。そこで、Objectチャンクの読み込み時にdepthを読み込み、それを元に階層構造を決定して、それにあわせてaddChildを使って階層構造を実現していくと言うことにしてみる。

  • ページ:
  • 1
  • 2
  • 3

TrackBack URL :

コメントする

HTML convert time: 0.864 sec.