近況

 ブログ更新がなかったここしばらくは、3Dツールに関する考えを巡らせて、プロトタイプをコーディングしていました。早々には役に立つものになりませんが、XNA+WPFのプログラミングをやってみていました。3DビューをXNAに、GUIやベクトルグラフィックスにWPFをという形で利用するプログラムです。

 再びWPFに触れて、今回の用途では次のようなことを感じました。厄介な部分を多くあげましたが、他の選択肢がよいということでもないと思います。

  • 高度な機能、リッチなGUIは魅力
    • UIElementの位置を設定する方法が分かりにくい
    • 高機能なだけに、目的を達するために必要な複数のクラスオブジェクトの組み合わせを知る必要がある
  • WPFが持つ3D機能も活かせるかもしれない
    • ヒットテストなどは便利そう
    • しかし、ゲーム用途では表現力の問題が出ると想像できる(シェーダなど)
    • WPFDirectXとの直接的な相互運用機能がなく、パフォーマンス上の制約や、GUIの融合には難点がある
  • やはりベクトルグラフィックスと3D機能との間には直に連携するものはなく、隔たりがある。(GUIとしての連携は除く)
  • WPFの実数にはdoubleが用いられる
    • 3Dツールなどの精度としてはよい
    • ただし、XNADirectXのfloatとの相互運用においては型キャストが登場することになる。(ベクトルや行列は異なる型定義のため、いずれにしても変換が必要ですが)
      • そんなことも含めて、C# 3.0の「拡張メソッド」「varキーワード」「オブジェクト初期化子」「コレクション初期化子」はコーディング上で好都合な場面が多い