3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEffect」
はじめてのエフェクト制作
MikuMikuEffectで学ぶHLSL入門(4)
ダウンロード サンプルファイル (27.2 KB)
エフェクト動作テスト
では背景用アクセサリを読み込み、テストしてみましょう。
エフェクトファイルを更新した後、stage.xを読み込んだ状態です。一見何も表示されていないように見えれば成功です。背景画像がぴったりモデルに張りつけられているため、姿が消えているように見えるのです。
正しい意味ではこれで完璧な光学迷彩の完成ですが、これではモデルを非表示にしているのと大差ありません。なので先ほどの「歪み量」を使い、スクリーン座標を歪ませます。
//ピクセルシェーダ本体
float4 TestShader_PS(OutVS IN) : COLOR
{
//出力色
float4 Color;
//歪ませる量を計算
//法線が視点方向からずれている程歪む
float add = (1-dot(normalize(IN.Eye),normalize(IN.Normal)));
//---追加---//
//スクリーン座標を歪み値でずらす
IN.ScreenTex += add;
//----------//
//テスト用テクスチャを使ってスクリーン座標をチェックする
Color = tex2D(BackSampler,IN.ScreenTex);
//色を出力
return Color;
}
単純にスクリーン座標に歪み量を加算しています。この変更を反映すると次のようになります。
概ね予定通りの結果が得られていますが、addの中身に大きすぎる数値が入っているため、変化が急すぎて模様のようになっています。これを軽減するためにaddを小さくしてみましょう。
//スクリーン座標を歪み値でずらす IN.ScreenTex += add*0.1;
ちょうど良くなったでしょうか? 後は自分が気に入る程度まで数値を調節してみてください。これで今回のエフェクトは完成です。
最後に
HLSLは難しくない!
一見難しく見えるHLSLですが、Cなどの高級言語と比べると良くも悪くもできることが少なく、ほとんどのエフェクトが単純なコードであることがほとんどです。何か新しいエフェクトを作ろうとした時でも、配布されているエフェクトなどに処理の参考になる部分が見つかることも少なくありません。
まとめ
今回は、オブジェクトに適用する種類のエフェクトを作例に合わせて解説しました。次回からはポストエフェクトなど別の種類のエフェクトを作例と共に解説していきます。
参考資料
- wikipedia『光学迷彩』
- MSDNライブラリ 『HLSL のリファレンス』
- 修正履歴
-
- 2011/10/12 22:21 完成稿
この記事は参考になりましたか?
既に会員の方はを行ってください。
- MikuMikuEffectで学ぶHLSL入門連載記事一覧
-
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- この記事の著者
-
ビームマンP(ビームマンピー)
ニコニコ動画等でMikuMikuEffect用シェーダプログラム開発者として活動。 開発を始めた理由はカッコいいビームやミサイルが作りたかった為。 エフェクト配布用サイト http://www43.atwiki.jp/beamman/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア




