Pergunta

Ei pessoal, eu gostaria de desenvolver um editor e simulador de shows de luzes/laser, e para isso, é claro, vou aprender alguma programação de gráficos. Estou pensando em usar C# e XNA.

Eu estava me perguntando em quais aspectos da programação gráficos eu deveria pesquisar ou me concentrar, dado o projeto em que estou trabalhando. Eu sou novo na programação de gráficos, então não sei muito sobre isso, mas por exemplo eu imagino que algo que eu possa olhar (possivelmente?) seja iluminação volumétrica.

Por exemplo, qual seria uma maneira prática de renderizar um 'laser' de largura/cor variada? Eu li em algum lugar para desenhar um cilindro e aplicar um shader, gostaria de confirmar que é assim.

Dado que isso parece um grande projeto, eu estava pensando em começar criando fontes de luz e dando a eles propriedades para que eu possa manipulá -las facilmente. Eu (MIS) li que apenas uma certa quantidade de luzes pode ser renderizada a qualquer momento, acredito oito. Isso se aplica apenas às luzes ambiente? Dada essa possível limitação e o fato de que a maioria das luzes que eu usarei será direcional, como luzes ou lasers, qual seria uma maneira diferente de torná-los? É isso que seria a iluminação volumétrica?

Eu gostaria de deixar algumas coisas claras antes de mergulhar nele. Como sou novo nisso, provavelmente não fiz o melhor uso das palavras, por isso, se algo não faz sentido, por favor me avise. Obrigado e desculpe pela minha ignorância.

Foi útil?

Solução

A resposta para isso depende do nível de sofisticação que você precisa em sua simulação de exibição. A computação gráfica é, em última análise, uma simulação do transporte de luz; Essa simulação pode ser tão sofisticada quanto calcular a fração da luz laser desviada por partículas na atmosfera para a ponta dos olhos do espectador, ou tão simples quanto desenhar uma linha. Experimente o efeito do cilindro e veja se funciona para o seu projeto. Se você precisar de algo mais sofisticado, procure a programação do shader (usando o NVIDIA CG, por exemplo) e sombreamento volumétrico como você mencionou; Além disso, os efeitos de brilho pós-processamento podem ser úteis. Para o OpenGL, acredito que há um limite de 8? Fontes de luz em uma cena, mas você pode trabalhar em torno desse limite fazendo sua própria lógica de sombreamento.

Outras dicas

Bem, se for apenas para simulações de shows de luz, eu imagino que você precisará de muitos efeitos de iluminação personalizados - então, independentemente de você decidir usar o XNA ou Straight DirectX, sua melhor aposta seria começar aprendendo idiomas do shader e como programar vários Efeitos de iluminação usando -os. Depois de reproduzir o tipo de iluminação a laser desejada, você pode experimentar os polígonos que deseja usar para representar os lasers. (Eu usei o método do cilindro em alguns dos meus trabalhos para fins pessoais, mas não tenho certeza de quão bem os cilindros retos se encaixarão no seu objetivo).

Embora seja mais rápido, acho que é melhor não usar a iluminação de hardware de baunilha por causa de suas limitações. Os shaders de pixel podem ajudar com sua tarefa. Além disso, você pode escolher o OpenGL por causa da portabilidade e sua clareza nos métodos de renderização. Eu trabalhei no Direct3D por vários anos antes de mudar para o OpenGL. As funções e estados do OpenGL são mais fáceis de aprender e renderizar métodos (como a renderização multi-passa) é muito clara. Se você gosta de codificar em C# (que eu não recomendo para essas tarefas), pode usar a biblioteca CSGL para acessar as funções OpenGL.

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