Boa tarde Meu nome é Daria, sou um artista 3d no estúdio de produção RainStyle. Atualmente, estamos desenvolvendo um jogo de terror de ficção científica chamado
“On Air” .

O jogo conta sobre eventos misteriosos que aconteceram com o personagem principal, que acidentalmente ficou no hotel americano Algol. Este incidente mudará completamente sua vida e o fará encarar o desconhecido.
Este é o nosso primeiro projeto de jogo e nele tentamos alcançar o realismo máximo dos personagens, transmitir suas emoções e caráter. Portanto, para criá-los, decidiu-se usar a tecnologia de digitalização de rosto. Como parte dos objetivos do projeto, precisamos de dois graus de detalhes para os personagens: para renderização - para cinema e baixa poli - para uso no próprio jogo.
O jogo On Air está sendo desenvolvido no Unreal Engine 4. Planejamos escrever vários artigos nos quais descreveremos detalhadamente as etapas da preparação do personagem.
No momento, estamos criando uma versão demo do jogo, que em breve aparecerá no Steam. Neste artigo, falarei sobre o estágio inicial de criação da face do personagem principal do nosso jogo.

Parte 1
A imagem abaixo mostra algumas das emoções que recebemos após o processamento das digitalizações.

Basicamente, eles são exagerados e não parecem realistas. Isso foi feito de propósito. O fato é que a base desse método de criação de uma face é o princípio de misturar as formas "Blend shapes". Ou seja, cada uma dessas emoções será aplicada não de uma forma "pura", mas em combinação com outras. Vou falar mais sobre isso no final do artigo. Primeiro, você precisa descobrir o que fazer com a cabeça digitalizada e como podemos usá-la. Obviamente, a topologia da digitalização não permite usá-la como modelo, mas, ao fazer o mapa normal, obtemos as principais características da face, rugas, poros, inchaços ou cicatrizes. Também a partir da digitalização, podemos extrair a textura da cor base.

O programa Wrap 3.3 nos ajudará com isso. É amplamente utilizado para processar modelos digitalizados. Com essa ajuda, projetaremos nosso futuro modelo de cabeçote em digitalizações.
Parte 2
Primeiro, você precisa criar a chamada malha base. Ou seja, uma expressão facial neutra que subjaz a todas as emoções. Nossa verificação de emoções neutras é assim:

O programa Wrap 3.3 possui um sistema de nós, ou seja, todas as funções são apresentadas na forma de nós (nós) vinculados por uma cadeia.
A seleção do nó é realizada usando a tecla Tab. Usando os nós LoadGeom e LoadImage, uma varredura com emoção neutra e sua textura correspondente são carregadas. Para fazer isso, especifique o caminho na janela Nomes de Arquivos. Nas configurações do nó “LoadGeom”, você pode selecionar vários modos de exibição da geometria (a função wireframe está desativada na imagem abaixo). Aqui você também pode alterar a cor da geometria (não funciona se a textura estiver conectada), coordenadas e escala.

Em seguida, você precisa carregar a malha de base, que será projetada nessa digitalização. Você pode encontrá-lo na guia "Galeria". Aqui estão muitas emoções prontas. Nesse caso, eu escolho o Basemesh.

O basemesh deve corresponder aproximadamente a uma varredura. Para fazer isso, você pode usar o eixo de coordenadas.
Para projetar a malha base na varredura, eu uso o nó Quebra. Quando você passa o mouse sobre os nós do nó, uma dica de ferramenta é exibida: o primeiro nó, Geometria flutuante - para a geometria projetada, o segundo nó, Geometria de fixos - para o objeto fixo sobre o qual a geometria será projetada (no nosso caso, esta é uma varredura com uma emoção neutra).

Para iniciar o cálculo, é necessário marcar os pontos nos dois modelos que corresponderão um ao outro. Para isso, é utilizado o nó Selecionar pontos, que é conectado aos nós correspondentes dos modelos. Após selecionar este nó, acesse a guia Editor Visual. A função incluída de visualizações de sincronização permite sincronizar câmeras para as janelas esquerda e direita.

Se o modelo projetado contiver polígonos que devem permanecer no lugar, você deverá selecioná-los usando a função Selecionar polígonos. Caso contrário, poderão surgir artefatos associados aos detalhes internos da malha.

Para usar o nó Selecionar polígonos, use a guia Editor Visual. Aqui, você pode selecionar os polígonos que os Modelos da galeria são divididos em polígrupos, simplificando a tarefa: eles podem ser selecionados ou desmarcados no painel superior.
Destaco as partes internas da garganta, narinas, pálpebras extremas e parte inferior do pescoço.


Depois disso, o modelo será projetado corretamente.

Além disso, para obter mais granularidade, você pode usar o nó Subdivide. Ele se conecta à malha base e todos os nós abaixo são conectados ao seu nó inferior (Saída).

Em seguida, leve a textura da digitalização para a malha base. Para isso, o nó Transferir textura é usado. O nó Geometria de origem se conecta ao modelo com o qual a textura será assada. No nosso caso, isso é uma varredura. O nó Geometria de destino está conectado à malha base, mas não ao nó LoadGeom, mas ao nó Quebra automática, pois usaremos a geometria projetada já modificada.

Nas configurações deste nó, você pode selecionar a qualidade da textura cozida. Depois disso, vale a pena adicionar o nó Extrapolar imagem para preencher os lugares transparentes e salvar a textura resultante usando o nó Salvar imagem e pressionando o botão Calcular quadro atual. A geometria é salva da mesma maneira usando o nó Save Geom.

Parte 3
Depois de termos uma emoção e uma textura neutras, podemos passar a obter geometria para outras emoções. Para fazer isso, carregue o modelo de digitalização e o Basemesh com texturas.

Em seguida, você precisa alinhar o Basemesh de acordo com a verificação. Para iniciantes, você pode comparar modelos aproximadamente usando eixos de coordenadas.

Um nó que permite alinhar com mais precisão os modelos entre si - Alinhamento rígido. O nó de geometria flutuante conecta a geometria que precisa ser alinhada. No nó de geometria fixa, respectivamente, haverá geometria estática (no nosso caso, isso é uma varredura).

Ao usar o nó Alinhamento rígido, você deve usar o nó Selecionar pontos:

Meu modelo possui marcadores de controle que simplificam a tarefa de selecionar pontos. Para alinhar os modelos entre si, pontos devem ser colocados nas partes do rosto que mudam levemente ao representar uma emoção específica. No caso dessa emoção, essa é a testa, a parte superior do nariz, o pescoço etc. Além disso, é aconselhável colocar pontos em todos os lados do modelo (ou seja, não apenas no rosto, mas também na parte de trás da cabeça e orelhas).

Como resultado, temos modelos alinhados entre si:

Nas configurações do nó Alinhamento rígido, há uma função "Match skale". É usado se os modelos também precisarem ser redimensionados.
Depois disso, você pode começar a projetar a malha base na digitalização. Para isso, usaremos o nó Optical Flow Wrapping. Permite alinhar a geometria de acordo com a textura da digitalização. Ao mesmo tempo, a textura resultante das emoções coincidirá completamente com a textura da malha base, com exceção de rugas, rugas e outras alterações. Todas as irregularidades da pele e poros ao usar este método permanecem no local.

Antes de usar o fluxo óptico, como no primeiro caso, o nó Selecionar polígonos é usado:

Assim, as partes fixas da cabeça permanecerão no lugar.
Você também pode usar o nó Selecionar pontos. Aqui estão os pontos nas partes móveis da face:

Em seguida, vá para as configurações de fluxo óptico. As câmeras que podem ser ajustadas apareceram na janela do Editor Visual ao redor do modelo.

No topo, há um menu suspenso com o qual você pode ir para a vista da câmera. Por padrão, existem 13. Você precisa configurá-los para que o rosto caiba completamente no quadro.

Por recomendação dos desenvolvedores, deixo quase todas as configurações por padrão, com exceção dos parâmetros Final da resolução e Final da suavidade do fluxo óptico:

Depois disso, você pode clicar em Computar e ver o resultado:

Depois que a malha é projetada exatamente na digitalização, você precisa assar a textura. isso é feito de acordo com o mesmo princípio da primeira parte do artigo:

Como resultado, se você combinar a textura resultante com a textura da malha de base, alguns detalhes serão adicionados, mas ao mesmo tempo, os pontos de controle coincidirão:

Depois disso, a textura e a geometria resultante podem ser salvas.

Como resultado, obtivemos uma malha de uma nova emoção com uma textura.
Parte 4
O método Blend shapes permite que você “misture emoções”. Para fazer isso, carregue malhas já recebidas no nó Blend shapes.

Eu carreguei emoção neutra no primeiro nó. Movendo os controles deslizantes nas configurações do nó, você pode escolher com que intensidade essa ou aquela emoção será expressa. Para que esse método funcione, os modelos devem ter a mesma topologia.


Resultado
O processo acima é apenas uma pequena parte de um trabalho muito volumoso. Após receber os modelos de cabeçote LowPoly, foi necessário criar mapas normais, rugosidade, subsuperfície etc., além de configurar o shader (no nosso caso, configuramos o shader para a renderização e o mecanismo). Olhos, roupas e cabelos também foram criados separadamente. Também é importante notar que apenas três pessoas executaram essa tarefa. Esta foi a nossa primeira experiência na criação de um personagem altamente detalhado. Ficamos satisfeitos com o resultado, mas lutaremos por mais.
