ノードの種類

シェーダー3.0の開発が出来るノートを買おうと思ったのですが、大抵デカイし、よく考えるとノートで開発する必要もあんまり無いかなと思い止めました。
有力だったのが「VAIO Type S」と「ThinkPad T60」だったんですけど。まぁ、ノートはしばらく手持ちの「VAIO Type T」でがんばります。シャドウマップの精度が微妙なのと、HDRテクスチャーが使えないのが難点か。。。あと、ちょっと遅い。

あ〜でも、ブースと会議ではちゃんとしたグラフィックチップが載ったPCでデモしたいかも。どうしよう?


さて、今回のライブラリにはシーングラフが導入されています。まぁ、使い古された技術ですし、あったらあったで割と便利なんですよね。
基本概念は大体理解してると思うのですが、一応設計は既存のものを見本に実装していこうと思いました。で、シーングラフが導入されているJava3Dの設計を見てみたのですが。。。

なんか、面倒そう。

ってことで、自分の使いやすいと思うような設計にします。まぁ、苦情・言葉の間違い等が来たら直しますが。とりあえず、こんな感じのノードを用意しました。

  • GraphNodeMesh : メッシュを保持するノード
  • GraphNodeLight : ライトを保持するノード(平行光源とか点光源とか種類は増える予定)
  • GraphNodeCamera : カメラを保持するノード

あ、今気づいたけどトランスフォーム専用のノードがないと不味いかな。。。


で、今のところ実装しようと思ってるのが

  • GraphNodeAnimationMesh : アニメーションメッシュ専用のノード
  • GraphNodeSubRoot : サブグラフのルートになるノード

「GraphNodeAnimationMesh 」はアニメーションを保持したメッシュ専用のノードで、メッシュ内に格納されている行列情報に対して別のノードを追加出来るように拡張したもの。例えば、スキンメッシュの格納されたXファイルを読み込んで、そのキャラの手に武器を持たせるみたいな感じです。スキンメッシュ等のアニメーション情報はアニメーションメッシュのほうで保持してしまっているのでこんな構造に…
「GraphNodeSubRoot」はそのまんまです。あるサブグラフのルートになります。アニメーション情報とかこいつに持たせられると楽しいかも〜
ちなみに、みんなGraphNodeから始まってるのはインテリセンスで近くに列挙されるようにです。名前空間にしろよと言われれば、まぁ確かに。


グラフ理論とか3Dグラフィックに詳しい方だと色々と苦情が来そうな設計ですが、何も知らない人が直感的に最小限の手間でいじれたらと思います。苦情・アイディアはコメント欄へ。