トップページ > 過去ログ > 記事閲覧
別ポリゴンの影を映すには
名前:wisteria 日時: 2010/03/31 16:02

DrawPolygonIndexed3Dでポリゴンを描画する際、 別のポリゴンに阻まれてライトの光が 当たらない(影が映る)ような表現をする方法はございますでしょうか。 ほかのポリゴンの形や位置を元に 描画するテクスチャの一部を暗くして、 普通にDrawPolygonIndexed3Dで描画というのでは とても重そうなので、それ以外でよろしくお願いします。(内部処理では同じことをやっているのでしょうが。)

Page: 1 |

Re: 別ポリゴンの影を映すには ( No.1 )
名前:管理人 日時:2010/04/05 01:54

> 別のポリゴンに阻まれてライトの光が > 当たらない(影が映る)ような表現をする方法はございますでしょうか。 すいません、現時点では手軽に望まれる表現を実現できる機能はありません 当サイトの3Dアクションサンプルにあるような「キャラクターの影のつもり」の 円形の黒いテクスチャを足元に描画する、というようなプレイステーション2辺りまで一般的だった 簡易影表現ではなく、正確にポリゴンの形に影が落ちる表現は何れも処理負荷が高く、 更に GPU に求められる機能もDXライブラリが現時点で使用している機能に比べて 新しいものが必要なので、快適に動作する環境の数が気になったり実装する場合の形態などが 決まらず今のところ実装していません > ほかのポリゴンの形や位置を元に > 描画するテクスチャの一部を暗くして、 > 普通にDrawPolygonIndexed3Dで描画というのでは > とても重そうなので、それ以外でよろしくお願いします。(内部処理では同じことをやっているのでしょうが。) wisteriaさんの仰ります通り一般的にはライトのある位置にカメラを移動して、更にライトの方向をカメラの位置にして 影を付けたいオブジェクトを黒色で影用テクスチャに描画、カメラの位置を戻して影が映りこむ物体( 地面や壁など )を 形成する各頂点が作成した影用テクスチャの何処に位置( テクスチャ座標値 )するかを計算して割り出し影を描画、 というようなことをします 影テクスチャへの描画と裏画面への通常の描画は別に行う必要があり、頂点シェーダーが使用できない環境では 影が映りこむ物体へのテクスチャ座標値の計算もCPU側で行う必要があるので、3Dアクションサンプルにあるような 簡易影表現の数十倍( 数百倍かも )の処理負荷が掛かります ですが、正確な形の影を表現する場合これが一番高速な方法なので、正確な影を表現したい場合はこの処理負荷を 考慮した上で作成するソフトウエアの設計をする必要があります
Re: 別ポリゴンの影を映すには ( No.2 )
名前:wisteria(解決) 日時:2010/04/05 09:51

いまのところテクスチャは200枚ほどあるので、 すべてにこの処理を行うと、 実行環境にかなりのスペックを要求することになってしまいますね。 試しに実装してみて、あまりに重いようなら、高画質オプションのようなものにしておこうとおもいます。 具体的な方法を改めてお尋ねするかもしてませんが、そのときはお願いいたします。

Page: 1 |