Pergunta

Deixe que eu tenha alguma malha (para a ex -esfera) no centro da sala, cheia de cubos e uma fonte de luz. Como posso fazer rápido e fácil Shadow-Casting in OpenGL, usando apenas funções "padrão" (fixado)? Nota: O resultado deve conter sombras de cubo e esfera também.

Foi útil?

Solução

Se você pode gerar uma silhueta da esfera, você pode usar Volumes de sombra. O hardware da NVIDIA também suportou a função fixa Mapeamento de sombras por um bom tempo também.

Os volumes de sombra têm a desvantagem de requisitos de taxa de preenchimento muito altos. Os mapas de sombra podem ser melhores, mas exigem um passe extra.

Se você está se projetando em um único avião, pode ser mais fácil apenas projetar o objeto em um avião.

Outras dicas

Não há maneira rápida e fácil. Existem muitos técnicos diferentes, que cada um tem seus próprios prós e contras. Você pode procurar um projeto que eu hospede no Github, que usa código muito simples para criar uma sombra, usando a técnica de volume de sombra (http://iuiz.github.com/volumeshadow/). No entanto, está escrito em Java, mas não deve ser difícil portá -lo para qualquer outro idioma.

As maneiras mais importantes de criar sombras são o chamado método de "mapeamento de sombras", onde você renderiza sua cena (com a câmera na fonte de luz, direcionada para cada objeto de fundição de sombras) para uma textura. E a segunda técnica é o método das sombras Voulume (famoso pelo Doom3).

Encontrei uma maneira de usar o StencilBuffers. Sendo um pouco confuso por um tempo, finalmente tive a ideia - com isso a coisa mais difícil seria atravessar cada fonte de luz e projetar todos os objetos da cena. Este parece mais bem do que sombreamento da textura e funciona mais rápido que as sombras voluméricas. aqui e aqui São alguns recursos, o que me ajudaram a entender a etapa de multiplicação da matriz (isso me confundiu um pouco quando eu estava olhando pela demonstração do Dino). Quanto a mim, esse método é mais fácil de entender e usar. A única questão que resta a resolver é como calcular a matriz de multiplicação.

Embora esse método possa ser alterado um pouco usando texturas como mostrado aqui.

Obrigado a todos! =)

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