プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:XNA修得
ステンシルシャドウ14
ステンシルシャドウのテスト画面
一部のモデルだけ影に色が着いてしまうらしい。この問題は解消できるのか?



◎半透明の実装

Softimage付属エフェクトファイルに半透明機能を実装しました。(参考:BasicEffectのソースコード


ステンシルシャドウ10   ステンシルシャドウ11

成功です。影の半透明と、旗の右側の完全透明部分が期待通り透けました。

ただ、相変わらず黄色い境界線がチラチラ見えます。XNA4.0に移行するとこちらの乗算済みアルファ機能で自動的に解消されるかもしれないので、とりあえず放置。



◎ステンシルバッファの実装

ステンシルバッファを実装し、ディフューズカラーを黒にしました。

ステンシルシャドウ12   ステンシルシャドウ13

成功したと思ったのですが、他のモデルで確認すると…

ステンシルシャドウ14   ステンシルシャドウ15

ロボットだけ影に色が着きました。

ロボットはスペキュラカラーが設定されていたので、最初はこれが原因かと思ったのですが、いろいろ試しても変化しません。アンビエント(環境光)でもないし、頂点カラーでもなさそうだし…ブツブツ…。



◎原因調査

ロボットサンプルのシーンファイルからPublishした.xsiファイルを読み込むと、content.Loadでエラーになります(最初から用意された.xsiファイルは動きます)。このため‘コンテンツの一部を改修して動作を確認する’ことはできません。

そこで、C#でライトのディフューズカラーを黒、HLSLでモデルのディフューズカラーを黒にして試すと、ロボットモデルだけ黒になりません。何か他の要素があるのかと思って散々悩んだのですが、結局ディフューズカラーの問題でした。

エフェクトを一括置換する機能は‘BasicEffectであれば’という条件付きとしたのですが、ロボットサンプルはこの条件に該当せず、エフェクトが置換されません。このため、HLSLでモデルのディフューズカラーを黒くしたつもりだったのですが、別のHLSLを参照してました。(キャプテンサンプルは黒くなったので、なかなか気付けませんでした(ーー;)

というわけで‘BasicEffectであれば’という条件を外しても動くように改修しました。(モデルのディフューズカラーは変更せず、ライトのディフューズカラーのみ黒とした)

ステンシルシャドウ16   ステンシルシャドウ17

ロボットサンプルのアンビエントをそのまま渡すと本体や影が明るすぎた(左図)ので、アンビエントを黒にする(右図)と落ち着きました。

ステンシルシャドウとしては全モデルOKとなったので、HPのサンプルコードを更新しました。



◎環境光

環境光の元の値をそのまま受け渡すと、何故かミョーに明るくなってしまいます。これについて調べると、AmbientMapの‘texture2D’だけ渡して‘sampler2D’を渡してないことが原因でした。

しかし、テクスチャは
parameter.GetValueTexture2D()
でゲットできますが、サンプラーのゲットの仕方がわからない(前にいろいろ試したがNGだった)ので対処できません。

自作モデルにAmbientMapを使う予定は無いので、この件は保留ということで(^^;



◎次回予告

レンダーステートの勉強のために始めたステンシルシャドウですが、レンダーステートと関係無い所で苦戦しまくりでした(汗)

ステンシルシャドウは成功したので、次回は他の機能を修得します。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

『三国志』関連創作紹介コーナーはなくなっちゃったんですか? アレとかまだやってませんが。

お声掛けどうもです^^

最近は「前月の総括と今月の目標」で継続中です。

アレと言われると心当たりが複数ありますが、最近のモノでしょうか?定番モノでしょうか?

紹介コーナーのトリは定番モノで締めようと考えていたのですが、三国志関連の作品が予想以上に多くてなかなか締められませんw

私が好きそうなアレです。 ←これで通じそうなのが怖い(笑)

違っていたらごめんなさい^^;

えーと…もしかして一騎当千でしょうか?

それではレンダステートの解析、がんばってくださいね!

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。