Material de grade que se estende com malha?

Oct 25 2020

Para esclarecimento, estou tentando criar uma Supergrid:

  • Coloque uma textura de grade de 2m x 2m em uma malha.
  • Quando eu movo ou dimensiono a malha, a grade aumentará conforme a malha aumenta
    (os 2m x 2m não se esticam ou distorcem, mas em vez disso aumentam o número de linhas que representam a grade de 2m)
  • A grade é mostrada igualmente nas faces XYZ de uma malha.

Um bônus seria mudar as cores, já que encaixotar um nível inteiro em uma cor pode ser confuso.


Detalhes :
Eu estava tentando configurar um material de grade para bloquear os níveis do jogo. Um pequeno esforço para fazer um material simples parece ter esgotado meu dia sem solução, se alguém pudesse ajudar eu ficaria muito grato.

Algo semelhante ou exatamente como Supergrid para UE4. Pule para 1:10 para funções básicas.https://m.youtube.com/watch?v=NxUq_rD8PVM#

Eu estava tentando usar um nó de grade criado por Anton Nevesolv. https://m.youtube.com/watch?v=gsZoJBeAWGc Porém, isso pode não ser ideal para criar os resultados desejados.

Se pegarmos a grade acima e usá-la em um nó de material de cubo,

  • em seguida, anexe o soquete de objeto de um nó Coordenada de textura ao vetor do nó Grade,
  • em seguida, use o conta-gotas na Coordenada de textura para atribuir um plano como a malha que representará o solo de um nível,

Isso parece funcionar de forma semelhante ao que está acontecendo no Supergrid para UE4. No entanto, os lados do cubo tornam-se linhas em vez de uma grade.

O mesmo acontece se você usar uma imagem da grade. No entanto, se você alterar a coordenada da textura de Objeto para UV, obteremos uma grade legal em todos os lados da malha, mas agora ela não deslizará em relação ao plano do solo e também distorcerá ao dimensionar a malha.

Qualquer ajuda seria muito apreciada. Estou tentando há horas e não vejo uma solução à vista.

Respostas

6 lemon Oct 25 2020 at 20:50

Isso funcionará para malhas com superfícies planas alinhadas ao eixo mundial.

Isso pode ser este tipo de configuração, com base nas coordenadas mundiais como entrada:

Ele adiciona a localização do objeto às coordenadas do objeto para que o resultado seja sensível à localização da malha. Em seguida, é preciso um produto vetorial com o normal, para evitar que valores limites apareçam no cálculo da grade (você pode testar a diferença, usando ou não).

A própria grade é apenas uma comparação com algum valor, da parte fração das coordenadas escalonadas. Mais precisamente, se o valor estiver em torno de 0,5 (novamente para evitar casos limites que podemos encontrar se compararmos com 0 ou 1).

Editar

Se você quiser que a grade seja estável a partir da posição do objeto, altere a entrada assim (a localização do objeto é substratada da localização da superfície em coordenadas mundiais):

Se você deseja que a grade seja alinhada ao objeto (se sua origem estiver em um canto), altere o grupo de nós deslocando-o 0.5/scale(veja abaixo à esquerda).

E para evitar casos limites, mantenha apenas um teste positivo (abaixo à direita).

Arquivo de mesclagem atualizado:

4 vklidu Oct 26 2020 at 02:27

Por enquanto, com base na textura da imagem. O cubo é dimensionado em todos os eixos a partir do canto, pois as coordenadas dessa textura são atribuídas ao objeto vazio.

Objeto vazio usa Location Costraint of Cube para manter as coordenadas no corener quando o Cube é movido. (Normalmente, eu pareço vazio para o objeto, mas, neste caso, a escala destruiria as proporções da textura.)

A própria grade - eu não verifiquei a referência de OP, mas irei. Eu queria tornar mais fácil para mim, mas no final a parte crucial era misturar a imagem nas laterais do Cubo sem UVmap. Não é um problema deixar a textura projetar de três lados e misturar com o Multiply, mas o problema surgiu quando o cubo começou a escalar - ele mudou a cor da face encurtada = resultado de texturas misturadas. Então criei a máscara de nó (armazenada no Grupo de Nós) para lados em XYZ e a segunda que usei para a mistura.