「 2007年01月 」一覧

Xファイル解析


前回の反省点

前回のフォント問題は解決できたので、今回はDirectXのモデルファイルについて色々と。

ちなみにフォントの問題で一番引っかかったのが、
SHIFTJIS文字列→UNICODE変換時で変換できなかった文字について、
UNICODEでの”・”に変換されたため、除去に失敗してた…。

モデルフォーマット

今作っているライブラリ専用モデルファイルを作成しようと色々考え中。

DirectXのXファイルを読み込んで、自分の形式にするコンバータ作らないとなぁと思って、まずはそれを準備してみようと思って作業中。よってスキニングの仕組みを改めて調査&勉強してみたり。

スキニングモデルと単なるポリゴンメッシュのモデル、そしてアニメーション付き、
これらをちゃんと読み込んで変換するのはちょっと苦労しそうだ…。

アニメのことを考えると D3DXLoadMeshFromXは使えない。
D3DXLoadSkinMeshFromXofを使用するのか?と思いきや、LPDIRECTXFILEDATAは廃止に向かってるようだし、関数名変わってるし。

素直にアニメーションスキニングメッシュ読み込むサンプルをそのまま実装して、必要なデータだけ抽出するようにするか…。


インスタンシング


今日もインスタンシング

昨日に引き続き、今日はShaderInstancingをトライしていた。しかしHWインスタンシングに比べて動作は理解しやすい。単に形状データを繰り返し、頂点バッファを満たしておけばいい。あとはそれに対する変形パラメータを外部から叩き込めば終わり。必要回数、必要ポリゴン数になるまでdrawPrimitiveを繰り返す。

そんなわけで、さっくり実装できた。

HLSL

今は起動時で読み込んでコンパイルさせているけど、デフォルトのシェーダーくらいはlibに組み込んでしまいたいと思って色々調べてみた。どうやらバイナリのリソースとしてリソーススクリプトで記述すれば良さそうです。

GUIの操作としては、リソースのウィンドウで追加→ファイルから〜
その時の.rcの中身にはこんな風にして追記されることになります。

(グループ名を入れたかったのでそこだけは手作業)

<名前> <グループ名> DISCARDABLE “ファイル名.fx”

ここまでやって気付いたのだが、そのままバイナリファイルに組み込まれるみたい…。

さらに調べてみると .fxから .fxoを作ってしまうという方法もあるようだ。コンパイル済みシェーダーといったところか。

こちらを組み込みにすれば、先ほどよりはマシだろう。読まれたくないならば、
fxoをさらに暗号化してリソースにインポートすればいい話だし。

これには、プロジェクトに追加されている.fxファイルにコンパイルの記述を追加する。

こんな感じでコマンドライン行に追加。最初のはバージョンを決めるためのものだろう。
さらに、出力ファイルの箇所で “bin/$(InputName).fxo” と記述するのも忘れずに。

デバッグ版とリリース版で同じでも問題ないと思うけど、オプションを変更することも可能です。


あけましておめでとうございます。


あけおめ

新年あけましておめでとうございます。

今年は初日から日記記述です。がんばります。

foltia

アニメ専用録画システムのfoltiaをインストール&設定していました。

通常設定だとPSP/iPod用のトランスコンバートの処理が録画後に走るのですが、
オレはCMなどをカットして保存するクチなので、ちょこっとスクリプトに手を入れて環境を作っていました。

アニメはfoltia、TVドラマはmythtvと分けて使っていく方針です。

なお、この正月期間中にどうでもいいアニメの予約を入れてみて、実験予定