Estou tentando aprender a maneira mais eficiente de criar um impostor no Unity manualmente - sem usar soluções pré-fabricadas.
Meu primeiro palpite é que isso deve ser alcançado usando RenderTexture e uma segunda câmera e, em seguida, tirando diferentes "instantâneos" de diferentes ângulos do objeto. Se houver alternativas melhores em termos de desempenho (mesmo que sejam mais difíceis de implementar), eu adoraria ouvir.
Caso esse seja o único caminho, aprendi como renderizar de uma câmera para uma textura via script, mas ainda não consegui descobrir como fazer o seguinte, que é o que preciso fazer primeiro: como renderizar -com textura de um objeto específico sem o fundo da câmera (isto é, com o restante da textura sendo transparente) de maneira eficiente?
Ponteiros, sugestões ou pelo menos recomendação de links serão ótimos.
Desde já, obrigado.
Respostas:
Há uma variedade de técnicas diferentes de impostores.
O nível de detalhe é provavelmente o mais fácil de alcançar, mas tem duas desvantagens principais. O notável efeito 'pop' quando você alterna entre modelos de baixa e alta resolução, resolvido por transições graduais entre LODs. O segundo problema é que é muito mais trabalhoso para o artista gerar LODs para cada modelo. Há uma palestra da GDC sobre uma maneira automatizada de gerar LODS - "Geração automatizada de nível de detalhe para HALO: REACH"
Uma técnica mais simples seria o outdoor, onde você usa apenas um polígono plano, em vez de uma malha de baixa resolução. Esse polígono está voltado para a câmera e é texturizado a partir de uma renderização do seu modelo. Este método requer ter várias visões diferentes do seu objeto, assim como os inimigos em ruínas. Você pode pré-renderizar todas as suas visualizações para um atlas de textura. Os jogos modernos usam essa abordagem, como Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI
Você também pode ter vários outdoors estáticos diferentes e combiná-los como neste pacote da unidade https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/
Mas a melhor maneira (que eu acho que você deseja) é renderizar dinamicamente seus outdoors, como neste artigo do gamasutra. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Isso foi feito pela primeira vez pelo Jurrassic Park: Trespasser em 1998, portanto não é uma técnica nova. Confira a revisão de código aqui http://fabiensanglard.net/trespasser/index.php Role para baixo até a seção wavelets para ver seus impostores.
Exceto a abordagem LOD padrão, seu primeiro passo provavelmente seria encontrar um tutorial de textura de renderização. A orientação da câmera renderTexture deve ser a mesma da câmera principal, mas cortada em torno do gameObject para garantir a eficácia. Você precisará isolar os gameObject (s) que deseja renderizar com uma máscara de seleção. E defina as sinalizações claras da câmera para obter um fundo transparente. Em seguida, renderize um cartaz impostor no lugar do objeto original.
fonte