Java 3d: impossibile ottenere Shape3D di essere colpite da luci
Domanda
Sto tentando di ottenere un Shape3D
personalizzato di essere colpiti da un DirectedLight
in Java 3D, ma niente che faccio sembra funzionare.
La Forma ha una geometria che è un IndexedQuadArray
, con il flag NORMAL impostato e applicato, garantendo i vettori normali sono applicati ai vertici corretti - utilizzando vettori indicizzati
Ho dato l'aspetto di un materiale (sia con colori e lucentezza specificati, e senza)
Ho anche messo la luce sullo stesso BranchGroup
come la forma, ma ancora non funziona.
In realtà, quando aggiungo nelle normali alla forma, l'oggetto appare a scomparire -. Senza di loro, è piatta ombreggiato, in modo che tutte le facce sono le stesse tonalità
Posso solo pensare che mi sto dimenticando di includere qualcosa ridicolmente semplice, o ho fatto qualcosa di sbagliato.
Per testare le luci erano in realtà, ho messo in una Sphere
accanto alla forma, e la sfera è stata influenzata e accesi in modo corretto, ma la forma ancora non lo ero. Entrambi erano sulla stessa BranchGroup
[Piccola stranezza troppo - se traduco la sfera, svanisce se mi muovo più grande di 31 in tutte le direzioni ... [mio punto di vista è impostato su 700 indietro come ho a che fare con oggetti di dimensioni fino a 600 in larghezza]
Edit: trovato questo tutorial ufficiali che è probabilmente legato
Un oggetto visuale correttamente specificato per ombreggiatura (cioè, uno con un oggetto materiale) in un grafico scena live ma fuori dei limiti che influenzano di tutti gli oggetti di sorgente luminosa rende nero.
Soluzione
setInfluencingBounds()
La luce non è stato impostato correttamente, in modo che le forme in scena non venivano inclusi nei limiti.
Questo è stato corretto impostando un BoundingBox
per comprendere l'intera area, e assegnando che ai contorni influenzano