Fingindo um objeto 3D para diminuir o número de polígonos

20

Estou fazendo um jogo em unidade e construindo uma cerca no liquidificador, mas quero que seja o mais baixo possível. Meu design original era muito alto, então pensei: e se eu pudesse simplesmente usar um cubo com algumas texturas dispostas de maneira inteligente. Igual a:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Você pode ver que as bordas estão todas com bom aspecto, mas as seções internas não estão, ou seja, não há nada ... então alguém sabe se é possível falsificar aquelas faces que fariam com que parecesse uma malha completa. Aqui está o que estou tentando alcançar:

insira a descrição da imagem aqui

Sr. Matt
fonte
7
Conto 52 vértices nessa cerca. Não são tantos.
Pharap
11
@Pharap Mas lembre-se do que acontece quando você coloca milhares de cópias dessa malha na sua borda nivelada.
Philipp
5
@ Philipp Se o Unity estiver usando objetos de buffer do vértice e técnicas de otimização semelhantes corretamente, isso não deve ser um problema. Você sempre pode usar um sprite de outdoor com alfa se estiver preocupado. Ou, melhor ainda, renderize um sprite de outdoor à distância e renderize a malha adequada quando o jogador chegar perto o suficiente. E duvido sinceramente que você consiga milhares de cercas sendo exibidas ao mesmo tempo. Mesmo que haja mais de 9.000 cercas colocadas no mundo, suspeito que uma grande quantidade delas será abatida. Você realmente comparou ou está apenas fazendo suposições sobre desempenho?
Pharap
6
Você está desenvolvendo para dispositivos móveis ou para PC / console? Pelo menos nas GPUs modernas (com 5 anos ou menos), o modelo de 52 vértices é provavelmente mais barato do que fazer algumas combinações alfa / máscara alfa. Depende de muitos fatores (cobertura da tela, GPU, sombreamento de pixel ou gargalo de rasterização, etc.), mas o uso de máscaras alfa sempre resulta em excesso. Você provavelmente deve avaliar isso antes de otimizar.
Tobias B
2
Uma instância em que você pode não querer fazer isso, no entanto, pode ser o caso de você precisar ignorar a detecção de colisão nessas lacunas, como se você tentasse disparar através de lacunas em certos objetos (em alguns atiradores em primeira pessoa) e uma "bala" -hole "( decalque ) apareceu no" espaço vazio "( modelo ).
DoubleDouble

Respostas:

26

Se entendi corretamente o que você deseja alcançar, está procurando o conceito de "impostores". Estas são precisamente representações 2D de objetos 3D, usadas para diminuir a complexidade geométrica da renderização do ambiente 3D.

Você pode pensar nelas como imagens de objetos 3D que são usadas como texturas de objetos 2D. A referência canônica para esses é provavelmente o capítulo 21 do livro GPU Gems 3, chamado "True Impostors". Está disponível publicamente aqui . Outra referência importante é o capítulo 5.7 do livro Game Programming Gems v.2, chamado "Imposters: Adding Clutter", em Game Programming Gems 2, Tom Forsyth.

E eles podem ser gerados uniformemente em tempo real, para lidar com pequenas alterações no ângulo de visão ou com o conteúdo gerado em tempo de execução. Dê uma olhada no excelente artigo do Gamasutra sobre o tópico, chamado "Imposters dinâmicos em 2D: uma implementação simples e eficiente do DirectX 9" . Um desenvolvimento adicional do conceito apareceu em "Billboard Clouds for Extreme Model Simplification" .

Para uma excelente explicação suave do conceito, consulte esta entrada do blog: http://blog.wolfire.com/2010/10/Imposters

Por fim, ao usar o Unity, ouvi falar de um plug-in que automatiza esse processo. É chamado Sistema Imposters Real LOD .

ATUALIZAÇÃO: para completar, pensei em adicionar duas coisas das quais me lembrei recentemente. Primeiro: existe um ótimo vídeo da GDC em que o diretor de arte da SimCity explica como eles fizeram uso pesado de impostores para obter realizações gráficas de alto nível desse jogo: "GDC - Construindo a SimCity: Arte a serviço da simulação". . Segundo, para os interessados ​​no Unreal Engine, ele possui um recurso interno para implementar impostores, como pode ser visto nos documentos

MAnd
fonte
Então, se eu criar o modelo da cerca, o completo e usar o sistema LOD do Real Imposters, isso funcionaria, você acha?
mr-mate
5
@ MatthewInglis Eu não posso te dizer exatamente sobre o plugin: já faz um tempo desde que eu não uso o Unity, então não posso verificar. Mas, em princípio, sim, ele deve criar uma versão em sprite 2D do seu objeto 3D totalmente detalhado. Você teria que brincar com as configurações, no entanto. Se você planeja comprar o plug-in, considere ler primeiro os documentos ( drive.google.com/file/d/0B3GMQtflbloSeHhvUGJmcjluX3M/view ) e entrar em contato com o autor com perguntas específicas sobre o produto.
Mand
0

Se você não precisar de nenhuma interação na cerca, quero dizer, pelas lacunas, usaria um simples retângulo transparente com uma textura impressa.

PRDeving
fonte