sábado, maio, 2019

Como fazer grama no 3D

1 estrela2 estrelas3 estrelas4 estrelas5 estrelas
Loading...
FavoriteLoadingFavoritar este Post
Categoria:

A grama 3D pode ser criada de várias maneiras diferentes e é um recurso essencial para qualquer ambiente natural ou renderização em arch-vis. Uma das técnicas mais comuns para criar essa peça de arte 3D é espalhar lâminas individuais de grama em uma superfície ou usar um sistema de cabelo para gerar geometria de grama. 

Neste tutorial, teremos uma abordagem diferente. Nas etapas a seguir, usaremos o poder procedimental de Houdini para criar uma instância e colocar em camadas os ativos do HyperGrass em um terreno e usar o Redshift para renderizar um campo realístico de grama. O HyperGrass é uma biblioteca modular de grama 3D projetada em torno dos padrões de crescimento da grama real. Ele é dividido em várias categorias de crescimento que podem ser colocadas em camadas e combinadas para obter detalhes e realismo incríveis. A coleção completa do HyperGrass está disponível na Vertex Library.

  • Configure a cena

Para começar, primeiro usaremos o menu Arquivo> Importar> OBJ no Houdini para carregar em todos os modelos exclusivos do HyperGrass. É importante que cada modelo esteja contido em seu próprio nó de geometria no nível do objeto, com um nome exclusivo que represente a categoria e a variação, como short_V01. 

Esses nós de geometria podem ser agrupados em uma sub-rede para permanecerem organizados. Também usaremos materiais Redshift com as texturas HyperGrass PBR e os atribuiremos a todos os objetos gramados. Para criar a superfície de dispersão, podemos usar um nó de Grade e Montanha para gerar um terreno, certificando-se de adicionar normais a pontos com um nó Normal.

  • Utilize instâncias de camada

Para criar a primeira camada, usaremos um nó Instância com o instanciamento de ponto rápido (fast-point instanc e) ativado. Dentro do instancer, mescle no terreno com um nó de Mesclagem de Objetos. Em seguida, crie um Point VOP para configurar um atributo de densidade. Dentro do VOP, crie um UnifiedNoise e use o ruído Simplex. Conecte seu atributo pos ao global P e o ruído de saída a um nó FitRange. Em seguida, conecte um nó BindExport com o nome definido como densidade. Fora do VOP, adicione um nó Scatter e ative o Density Attribute. Por fim, aumente a contagem total de forças para controlar a quantidade de pontos de dispersão.

03. Definir instanciação aleatória

Podemos agora referenciar os nomes únicos de cada variação de grama que importamos anteriormente para especificar o objeto da instância. Adicione um AttributeCreate dentro do instancer e defina o parâmetro name como instance e o tipo como String. A primeira camada irá instanciar os modelos de germinação. No valor de String, insira o caminho completo para o primeiro objeto de sprout. Substitua o número da variação por `padzero (2, floor (rand ($ PT) * X) +1)` incluindo os backticks. Substitua o X pelo número de variações de sprouts que você possui. Essa expressão criará um inteiro aleatório para cada ponto de instância, que se refere corretamente a uma variação de grama específica.

04. Ajuste a rotação aleatória em Y

Nós usaremos um Point VOP para randomizar a rotação em torno das normais do ponto de dispersão. Crie um nó aleatório dentro e conecte sua entrada pos a ptnum global. Multiplique a saída por 360 com um MultiplyConstant, seguido por um nó DegreesToRadians. Crie um nó Alinhar separado. Defina o vetor De para (0, 1, 0) e conecte N global à entrada Para. Conecte a matriz de saída a um nó Rotate. Conecte também a saída anterior de DegreesToRadians ao ângulo de rotação e N global ao eixo de rotação. Por fim, conecte a saída Rotate a um nó Matrix3toQuaternion, seguido por um BindExport com seu conjunto de parâmetros name para orientar.

05. Criar escala aleatória

Para randomizar a escala, usaremos outro ponto VOP. Dentro do VOP, crie um UnifiedNoise e use o ruído Perlin ou Simplex. Conecte a saída de ruído a um nó FitRange. Podemos remapear o valor do ruído com os parâmetros Min e Max de destino. Também queremos evitar uma escala negativa ou nula, portanto, adicione um nó Clamp e defina o parâmetro Min como, pelo menos, 0,1. Por fim, adicione um nó BindExport e defina o parâmetro name como pscale. Assim como configuramos a densidade, podemos controlar a aleatorização com a frequência de ruído e o nó FitRange.

06. Camada de grama

Com nosso instancer de camada completo, podemos duplicar a configuração e ajustar a expressão de instância aleatória para as variações de grama curta, média e alta. Neste ponto, podemos adicionar uma câmera e luzes à nossa cena. Enquanto usamos o Redshift nos arquivos do tutorial, você pode usar qualquer outro renderizador suportado no Houdini. Por fim, podemos ser criativos e experimentar diferentes tipos de ruído e ajustar os parâmetros de cada camada. A utilização de diferentes frequências de ruído e intervalos na densidade e escala é uma maneira fácil, mas poderosa, de moldar a aparência de cada camada de relva.

Texto adaptado

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Leia mais >