「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 );
Direct3Dで影を表示した部分の画像が透けて見せるには
Re: Direct3Dで影を表示した部分の画像が透けて見せるには
真っ黒な影は重ねても真っ黒なので単純に描画できます。
半透明の影を単純に重ねると濃くなってしまうので、シーン全体の影になる部分を一様に求めておいて合成します。
ここで細かい手法を説明するのは難しいので、とりあえず“シャドウマッピング”をキーワードに検索してみてください。
半透明の影を単純に重ねると濃くなってしまうので、シーン全体の影になる部分を一様に求めておいて合成します。
ここで細かい手法を説明するのは難しいので、とりあえず“シャドウマッピング”をキーワードに検索してみてください。