1

Java 3DShape3Dの影響を受けるカスタムを取得しようとしていますが、何も機能していないようです。DirectedLight

シェイプにはIndexedQuadArray、 NORMAL フラグが設定されて適用された であるジオメトリがあり、インデックス付きベクトルを使用して、法線ベクトルが正しい頂点に適用されるようにします。

外観にマテリアルを指定しました (指定された色と光沢のあるものとないものの両方) 。形状
と同じようにライトも配置しましたBranchGroupが、まだ機能しません。

実際、シェイプに法線を追加すると、オブジェクトが消えたように見えます。法線がないと、フラット シェーディングになり、すべての面が同じシェーディングになります。

とてつもなく単純なものを含めるのを忘れているか、何か間違ったことをしたとしか思えません。

実際にライトをテストするためSphereに、Shape の横に を配置しました。球は影響を受けて正しく照らされましたが、シェイプはまだ正しく点灯していませんでした。どちらも同じでしたBranchGroup

[ちょっと変わったことも - 球体を平行移動すると、どの方向にも 31 を超えて移動すると消えてしまいます... [幅が 600 までのサイズのオブジェクトを扱っているため、ビューは約 700 後ろに設定されています]


編集:おそらく関連している公式チュートリアルでこれを見つけました

ライブ シーン グラフでシェーディング用に適切に指定されたビジュアル オブジェクト (つまり、マテリアル オブジェクトを含むオブジェクト) は、影響を与えるすべての光源オブジェクトの境界の外にあり、黒くレンダリングされます。

4

1 に答える 1

1

ライトsetInfluencingBounds()が正しく設定されていなかったため、シーン内の形状が境界に含まれていませんでした。

BoundingBoxこれは、エリア全体を囲むように a を設定し、それを影響範囲に割り当てることで修正されました。

于 2010-02-11T15:30:15.873 に答える