ページ 11

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

Posted: 2013年12月02日(月) 20:31
by NOBORU
「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 );

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

Posted: 2013年12月03日(火) 00:41
by ISLe
真っ黒な影は重ねても真っ黒なので単純に描画できます。

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

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

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

Posted: 2013年12月03日(火) 09:52
by NOBORU
ありがとうございます。
DIRECTXのサンプルでそれらしいものがありましたので調べてみます。