目がオブジェクトAの表面点P1にあり、ターゲットオブジェクトBがあり、オブジェクトBの後ろに点光源があると仮定します。
質問:光源を見て、オブジェクトBのために光が見えない場合は、「私は影になっています」と言うのは正しいですか?次に、オブジェクトAのそのポイントを「A上のBのシャドウポイントの1つ」としてフラグを立てます。
もしこれが本当なら、Aの表面に「影の幾何学」(黒い色)のオブジェクトを構築し、それをリアルタイムで光、B、Aなどの動きのために絶えず変更することができますか?球(A)には1000の頂点があり、他の球(B)にも1000の頂点があるとしましょう。これは、100万の比較を意味しますか?(シャドウイング、O(N ^ 2)(時間)の複雑さですか?)P1(目)を変更するとBの視点(P1と光源点の間)も変更されるため、複雑さについてはよくわかりません。2次以上の影(2つのオブジェクト間で光が何度も反射するなど)はどうですか?
現在java-3Dを使用していますが、シャドウ機能がないため、他のjava互換ライブラリに移行することを考えています。
ありがとう。
編集:その影を構築するためにカメラを移動するときに「カメラ」を無効にする必要があります。これどうやってするの?これによりパフォーマンスが大幅に低下しますか?
新しいアイデア: java3Dには衝突検出機能が組み込まれています。光からターゲットのポリゴン頂点までの線(非表示)を作成してから、別のオブジェクトからの衝突をチェックします。衝突が発生した場合は、その頂点コードを追加します。シャドウリストに追加しますが、これはポイントライトに対してのみ機能します:(。
java3d用の実際のシェードライブラリを提供している人は誰でも大いに役立ちます。
java3Dの非常に小さなサンプルGeomlibシャドウ/レイトレーシングがおそらく最良 のレイトレーシングの例でしょうか?
これは少し難しいことですが、少なくとも100人が試してみることができたはずです。
ありがとう。