Java 3D: Shape3D kann nicht von Lichtern betroffen sein
Frage
Ich versuche einen Brauch zu bekommen Shape3D
von a betroffen sein DirectedLight
In Java 3D, aber nichts, was ich tue, scheint zu funktionieren.
Die Form hat eine Geometrie, die eine ist IndexedQuadArray
, mit dem normalen Flaggensatz und angewendet, um sicherzustellen, dass die normalen Vektoren auf die richtigen Eckpunkte angewendet werden - unter Verwendung indizierter Vektoren
Ich habe dem Aussehen ein Material gegeben (beide mit bestimmten Farben und Glanz und ohne)
Ich habe auch das Licht auf das gleiche gestellt BranchGroup
Als Form, aber es funktioniert immer noch nicht.
Wenn ich die Normalen der Form hinzufüge, scheint das Objekt zu verschwinden - ohne sie ist es flach schattiert, so dass alle Gesichter der gleiche Schatten sind.
Ich kann nur denken, dass ich vergesse, etwas Lächerlich Einfaches aufzunehmen oder etwas falsch gemacht habe.
Um die Lichter tatsächlich zu testen, habe ich einen eingelegt Sphere
Neben der Form und die Kugel war ordnungsgemäß betroffen und beleuchtet, aber die Form war immer noch nicht. Beide waren auf dem gleichen BranchGroup
Kleine Kuriosität auch - Wenn ich die Kugel übersetze, verschwindet sie, wenn ich sie mehr als 31 in eine Richtung bewege ... [Meine Ansicht ist ungefähr 700 zurück, da ich mich mit Objekten von Größen bis zu 600 in Breite befasse
Bearbeiten: Fand dies in den offiziellen Tutorials, die wahrscheinlich verwandt sind
Ein visuelles Objekt, das für die Schattierung (dh eins mit einem materiellen Objekt) in einem Live -Szenengraphen ordnungsgemäß angegeben ist, außerhalb der Einflussgrenzen aller Lichtquellenobjekte schwarz.
Lösung
Die Lichter setInfluencingBounds()
wurde nicht richtig eingestellt, so dass die Formen in der Szene nicht in die Grenzen aufgenommen wurden.
Dies wurde korrigiert, indem a eingestellt wurden BoundingBox
Um den gesamten Bereich zu erfassen und dies in die Einflussgrenzen zuzuweisen