Direct3Dで影を表示した部分の画像が透けて見せるには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
NOBORU

Direct3Dで影を表示した部分の画像が透けて見せるには

#1

投稿記事 by NOBORU » 12年前

「DirectXグラフィックプログラミング」という本を読んで3Dの影を勉強したのですが、単に黒くするという方法でした。
影を表示した部分の画像が透けて見えると本当の影っぽくなると思うのですがどうすればいいでしょうか。
今あるソースは以下のような感じです。
よろしくお願いします。
//--------------------------------------
// モデルのシャドウの描画
//--------------------------------------
D3DXMatrixMultiply( &TempMat, &m_world, &m_shadow);
pD3DDevice->SetTransform( D3DTS_WORLD, &TempMat );

// モデルの描画
for(DWORD i =0; i<Object[number].m_numMesh; i++){
// マテリアルのセット(シャドウ用に暗くする)
pD3DDevice->SetMaterial( &m_shadowMat);
// 描画
Object[number].m_pMesh->DrawSubset( i );
}
pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE );

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: Direct3Dで影を表示した部分の画像が透けて見せるには

#2

投稿記事 by ISLe » 12年前

真っ黒な影は重ねても真っ黒なので単純に描画できます。

半透明の影を単純に重ねると濃くなってしまうので、シーン全体の影になる部分を一様に求めておいて合成します。

ここで細かい手法を説明するのは難しいので、とりあえず“シャドウマッピング”をキーワードに検索してみてください。

NOBORU

Re: Direct3Dで影を表示した部分の画像が透けて見せるには

#3

投稿記事 by NOBORU » 12年前

ありがとうございます。
DIRECTXのサンプルでそれらしいものがありましたので調べてみます。

閉鎖

“C言語何でも質問掲示板” へ戻る