零瓦 のすべての投稿

位置を共有している頂点のマージアルゴリズム

3Dモデルデータの最適化のために、ほぼ同じ位置にある頂点データを1つにまとめる(マージする)処理を作成します。総当たりで近い位置にあるか比較していけば簡単に実装できると思っていました……
これまでの経験では数千頂点程度のマージ処理だったので、それほど実行速度を気にすることはありませんでした。が、今回約70000頂点のマージを総当たり比較で処理したところ、処理時間1分間以上。違う方法を考えなければ。

続きを読む 位置を共有している頂点のマージアルゴリズム

頂点シェーダでスキニングと頂点ブレンド 可変長の定数バッファ

頂点シェーダでスキニングと頂点ブレンドを行います。基本的な原理などは多くの場所で公開されているので省略、DirectX11での実装について説明します。
ボーンウエイト付のモデルデータは自作できないので、入手しやすいPMD/VMDファイルを使用します。

PMD/VMDの表示再生
PMD/VMDの表示再生

続きを読む 頂点シェーダでスキニングと頂点ブレンド 可変長の定数バッファ

ID3D11ShaderReflectionでシェーダコード解析

CreateInputLayoutで入力レイアウト(ID3D11InputLayout)を作成する際、頂点シェーダが要求する入力パラメータが不足しているとエラーコード(E_INVALIDARG)を返します。ただ作成が失敗するだけならいいのですが、エラーログが出力されてしまうため、シェーダを解析して入力パラメータの不足を調べるようにします。

続きを読む ID3D11ShaderReflectionでシェーダコード解析

シェーダエフェクト 自作FXファイルフォーマット

前回、使用するシェーダ関数名やステートをソースコードに直接記述していたので、これらの情報を専用のファイルで定義するようにします。DirectX11はfxファイル(techniqueやpassの定義)に対応していないようなので、DirectX9のfxファイルを参考に独自のfxファイルを作成します。

左:きれいな半透明 中:アニメ調 右:汚い半透明
左:きれいな半透明 中:アニメ調 右:汚い半透明

続きを読む シェーダエフェクト 自作FXファイルフォーマット

シェーダエフェクト&マルチサンプルAA

ポリゴンメッシュの描画処理が揃ってきたので、最後にレンダリングステート系とマルチパス(同じメッシュを異なるシェーダやステートで複数回描画)を追加し、シェーダ関連の処理を整理、構造化します。その処理を使って輪郭線のある3Dモデルを表示してみます(法線方向拡大&裏面表示の輪郭線アルゴリズム)。表示させてみるとジャギーが酷かったので、マルチサンプルアンチエリアシング(MSAA)の対応も同時に行います。

アニメ調シェーダ
アニメ調シェーダ

続きを読む シェーダエフェクト&マルチサンプルAA

法線ベクトルの生成とスムージング

次は光源計算にいきたいところですが、メタセコイアのデータには法線ベクトルが含まれないためポリゴン形状から法線ベクトルを計算で求め、スムージングを行います。
メタセコイア以外の法線ベクトルが出力されるモデリングツールを使えばいいのですが、今後必要になるかもしれなので計算処理を作っておきます。

法線ベクトルの生成とスムージング
法線ベクトルの生成とスムージング

続きを読む 法線ベクトルの生成とスムージング

3Dモデルデータフロー考察&とりあえずmqoファイル描画2

mqoのマテリアル(テクスチャと色)を反映して描画してみる。少しDirectX11プログラミングが複雑になってきたので、3Dモデルデータの扱い方について、大まかなデータフロー(仮)を考えてみる。
3Dモデルの描画処理は、そのデータフロー(仮)に沿って作成する。

とりあえずmqoファイル表示2
とりあえずmqoファイル表示2

続きを読む 3Dモデルデータフロー考察&とりあえずmqoファイル描画2

WordPressでSVG形式の画像表示

WordPressでSVG(Scalable Vector Graphics)画像の表示に挑戦してみる。
SVGファイルをアップロードしてimgタグで他の画像と同様に記述し表示……表示されない。やっぱりまだ一般的な画像フォーマットではないので何か設定が必要のようです。
WordPressのSVGに関連するプラグインをインストールしてみるが、うまくいかない。もっと調べてみると、どうやらサーバーの設定(MIME Type)も必要のようです。それと、IE9では表示関連に問題があり対策が必要。
今後、プログラムの説明で図が必要なときは、SVG画像を使う予定です。

SVG画像の表示(WordPress日本公式キャラクター「わぷー」)
WordPress日本公式キャラクター「わぷー」

続きを読む WordPressでSVG形式の画像表示