Pergunta

Estou tentando obter um costume Shape3D ser afetado por um DirectedLight Em Java 3D, mas nada que eu faço parece funcionar.

A forma tem uma geometria que é um IndexedQuadArray, com o conjunto de bandeira normal e aplicado, garantindo que os vetores normais sejam aplicados aos vértices corretos - usando vetores indexados

Eu dei à aparência um material (tanto com cores e brilho especificadas quanto sem)
Eu também coloquei a luz no mesmo BranchGroup Como forma, mas ainda não funciona.

De fato, quando adiciono os normais à forma, o objeto parece desaparecer - sem eles, é sombreado, para que todas as faces tenham a mesma sombra.

Só posso pensar que estou esquecendo de incluir algo ridiculamente simples ou fiz algo errado.

Para testar as luzes, na verdade, eu coloquei um Sphere Além da forma, e a esfera foi afetada e iluminada corretamente, mas a forma ainda não estava. Ambos estavam no mesmo BranchGroup

Pequena estranheza também - se eu traduzir a esfera, ela desaparecerá se eu mover mais de 31 em qualquer direção ... [Minha visão está definida cerca de 700 de volta enquanto estou lidando com objetos de tamanhos até 600 de largura


Editar: Encontrei isso nos tutoriais oficiais que provavelmente estão relacionados

Um objeto visual especificado corretamente para sombreamento (ou seja, um com um objeto material) em um gráfico de cena ao vivo, mas fora dos limites de influência de todos os objetos de fonte de luz torna preto.

Foi útil?

Solução

As luzes setInfluencingBounds() não foi definido corretamente, de modo que as formas na cena não estavam sendo incluídas nos limites.

Isso foi corrigido definindo um BoundingBox para abranger toda a área e atribuí -la aos limites de influência

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top