スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XSIの基本機能だけで強引にテクスチャ頂点ブレンド(もどき)

XSI6.5をいまだに使い続けている身としては非常にうらやましいことに、Softimage2010以降対応の
「OpenGL Mix8colors」というリアルタイムシェーダーが公開されている。

http://www.xsibase.com/forum/index.php?board=29;action=display;threadid=45058


頂点カラーを使って複数のテクスチャをブレンドした結果をリアルタイムビューポート上に反映するという
垂涎もののシェーダー。
だがAVID世代のXSIユーザーは指を加えて見ていることしかできない。くそ~!うらやましいぞ!
しかしサブスクリプションこみで80万近くの出費はそう簡単に踏み切れるものではない。

なので、ほぼ同様の結果をXSI6.5の基本機能だけで無理やり再現できないかといろいろと実験をしてみた。
結果…

できた!!
110820a_BG.jpg
複数種のテクスチャを頂点単位でブレンドすることには成功!
まさにほしかった結果が得られたので大満足。
基本的には頂点αを利用した超力技。

■やり方
①まず素材となるベースメッシュを用意。今回は地形っぽいものを。
②UVとマテリアル設定してベースとなるテクスチャを貼る。
  マテリアルは「「OGL One Pass」を使用。
③頂点カラーを追加する。自分はこのときついでにアンビエントオクルージョンを焼きこむ。
④ここまでできたら、そのブレンド用メッシュを複製!
⑤ブレンド用メッシュには「OGL Alpha Transparency」マテリアルを適用し、
   ブレンドしたいテクスチャを設定。
⑥マテリアルの設定は下図のように
   ・「Enable Blending」をON
   ・「Enable Lighting」をOFF
   ・「Culling」を「None」に。
⑦ブレンド用メッシュの頂点カラーのα値をペイント!
   頂点カラーのα値の0~1がブレンドの値になるので、ひたすら塗る。
⑧ブレンドするテクスチャ枚数を増やしたい場合は、さらにメッシュを複製して⑤以降を繰り返す。


●ブレンド用マテリアル設定
110820c_BG.jpg
  
非常に泥臭い力技、洗練とは程遠い強引な手法だけど、こんなやり方でもやればできたんだねぇ~。
正直まさかできるとは思ってなかった。絶対描画化けすると勝手に思い込んでたんで普通に描画されてすごいびっくりした。もっと前に試せばよかった。

しかしこれで兼ねてからの課題であるところの「安くて早くてそこそこ見れる」背景作成にちょっと目処が立ちそうだ。
テクスチャの組み合わせを変えればいろいろ表現の幅も増えそう。


補足:
・ブレンドの優先順位はどうやらメッシュの作られた順?ちょっとなぞ。
・頂点カラーを表示する関係上、マテリアルの「Enable Lighting」をOFFにしないといけないので、ライティングとの併用は不可。残念…。
・今のところ家の環境でしか試してないのでどんな環境でも正しく表示されるかは不明。
・ブレンドできるテクスチャの数の最大は不明。今のところまで3枚までしか試してない。
・「そんなことしなくてもXSI6.5でも動く頂点ブレンド対応シェーダーあるよ」という人がいたらぜひ連絡ください。

おまけ:実験過程で生まれた死屍累々
110820b_BG.jpg
「安くて早くてそこそこ見れる」の道は遠いぜ…。
スポンサーサイト
プロフィール

JNY

Author:JNY
某ゲーム会社勤務
趣味と修行をかねて個人製作中
Softimage & Cgfx & Unity

最新記事
最新コメント
月別アーカイブ
カテゴリ
カウンター
twitter

Twitter Updates

    follow me on Twitter
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。