スポンサーサイト

  • --/--/--(--) --:--:--

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

XNAの乗算済みアルファとLat式モデル

  • 2011/08/31(水) 03:25:23

わーい、更新忘れてて広告ついてたorz

どうも、ウィルフレムです。
最近仕事であわあわしてます(まぁ、楽しいからいいんですがw)

MMDXv2.03aリリースしました~
修正箇所は
・Lat式ミクの表示が微妙に変になるバグの修正

以上です。

……超手こずったw
まぁ、実はXNAの「乗算済みアルファ」が原因だったんですが(^^;
切ったらアッサリ解決。
シェーダひっくり返してデバッグしてたの何だったんだwというぐらいのアッサリさ。

こんな話を見たらアッサリと分かった。

バグの根本原因はLat式ミクの構造が乗算済みアルファと合わないことでした。
原因も含めて注意点として記述していきます。

まず、乗算済みアルファはどういうものかというのは
元XNA開発者のひげねこ氏のblogを見てもらうとして
ここではポイントを絞って解説していきたいと思います。

乗算済みアルファは通常のアルファブレンディングと何が違うのかというと
普通のアルファブレンディング計算式が
色=重ねられる色*(1-α)+重ねる色*α
となるのですが

重ねる色*αをテクスチャをビルドする(アセット化する)段階でやってしまわね?というのが
乗算済みアルファのポイントです。

こうすると境界の滲み等の問題が避けられ
更にGPUの負荷が軽くなるのですが
このテクスチャにα値を予めかけておく。という方式が
Lat式ミクの表示に問題を起こしてしまうのです。

Lat式ミクは色々素晴らしい表現技術があるのですが
そのへんは割愛して今回の問題箇所に該当する特徴について説明します。

Lat式ミクの特徴として
1.下塗りポリゴンと、その上に色を重ねるポリゴンの存在
2.フォトショップやSAIなどイラストソフトライクなマテリアル設定&テクスチャ

が挙げられます

この特徴及び
2.1.テクスチャ(TC)はパレットのようになってて、色を指定している
2.2.マテリアルカラー(MC)は明度を指定している
2.3.マテリアルのα値はフォトショップの「不透明度」の使われ方をしている
という特徴により、あのイラストっぽいモデルが構成されているのですが
ここで、乗算済みアルファが悪さをします……

通常のα計算だと
最終出力=下塗り出力*(1-α)+(MC*TC*乗算トゥーン*ライトDiffuse+ライトSpecular+加算トゥーン他)*α
となるのですが

乗算済みアルファαだと、αが無いテクスチャやトゥーンはそのままとなり
最終出力=下塗り出力*(1-α)+MC*TC*乗算トゥーン*ライトDiffuse+ライトSpecular+加算トゥーン他
となり

ライトとか加算トゥーンにマテリアルで指定したαが入りません/(^o^)\ナンテコッタイ

つまり
α=0.015とか小さい値を持つポリゴンで重ね塗りをしているような箇所では
下塗り出力のAmbient等も存在するので
このような状態で重ね塗りすると
一部分だけ色が飽和して白っぽくなってしまいます。

通常


乗算済みアルファ



乗算済みアルファはモデル構造によっては
発見しにくい妙なバグを生む可能性があります。
なので、モデルがどのような構造になっているか
しっかり把握しないといけませんね。

追伸
こんなの始めてたり……
http://carol-mystery.net/

追記
ぎゃー、アクセサリ中途半端にしか修正してなかった\(^o^)/
v2.031a出します~

スポンサーサイト

この記事に対するトラックバック

この記事のトラックバックURL

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

この記事に対するコメント

Lat式ミク

いつも楽しく遊ばせていただいてます(^-^)

最新版、早速みさせていただきました。
それで、Lat式ミクV2.3を使おうと思って、
Contentsにインポートし、パイプラインの設定を行ったのですが、
「sp_g.spa」というファイルが見つかりませんというエラーでビルドができません。
なにか、他に必要な手順はあるんですか?

素人同然な質問ですみません。。

  • 投稿者: ralph
  • 2011/08/31(水) 14:46:57
  • [編集]

Re: Lat式ミク

そのエラーはContentsフォルダ内にテクスチャとかLat式ミク用のトゥーンとかが足りていないからですね。
XNAの場合、モデルが参照するテクスチャ類は「Visual Studioには登録せずに」Contentsフォルダに入れる必要があります。
Demo1のミクの目のテクスチャを参考に入れてみるのはいかがでしょうか?

  • 投稿者: ウィルフレム
  • 2011/08/31(水) 23:50:47
  • [編集]

承認待ちコメント

このコメントは管理者の承認待ちです

  • 投稿者: -
  • 2012/01/24(火) 19:43:48
  • [編集]

承認待ちコメント

このコメントは管理者の承認待ちです

  • 投稿者: -
  • 2012/06/08(金) 13:19:07
  • [編集]

コメント投稿

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

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