Yeti Tutorial 08 - Instance Node

Instance Node

O node de Instance possibilita substituir partículas ou fios por geometrias ou penas em um grafo. No primeiro input é colocado os fios ou partículas na qual os objetos serão instanciados. No segundo input entram as geometrias ou penas que serão instanciadas.

No caso de partículas, um único objeto será colocado sobre cada partícula sempre. Já no caso de fios, temos duas opções:

  • Points, na qual cada ponto do segmento do fio receberá uma instância;
  • Elements, na qual apenas um ponto será escolhido para receber uma única instância.

Arquivo de Exemplo: Instance_Points.ma

Os campos de Alignment e Up Vector determinam a orientação do objeto. Podemos utilizar o vetor normal N ou o vetor tangent para orientar relativo às faces da malha.

Importante: Não pode haver uma escala igual à 0. Isto pode provocar um travamento (Crash) do Maya ou um erro na hora do Render. Ao usar atributos definidos pelo Groom, há uma possibilidade de ficar zero próximo a áreas que o tamanho é muito pequeno ou que não há guias de Groom dentro da área de influência para determinar um valor. Para garantir que este campo nunca será zero, podemos utilizar uma função de clamp() limitando o valor mínimo a algo maior que zero, como 0.01 por exemplo.

Importante: Atenção ao usar o campo Scale Variation, para que a variação não seja tão grande a ponto de zerar a escala.

Múltiplos Objetos

É possível importar múltiplos objetos com um único node de Import usando o símbolo ***** (wildcard). Este símbolo é como se fosse um coringa, o qual pode ser substituído por qualquer letra, palavra, numero ou símbolo. Alguns exemplos:

Se tiver: mesh_sphereShape, mesh_cubeShape, e mesh_planeShape,
Então podemos usar *mesh_Shape

Se tiver: mesh1_instanceShape, mesh2_instanceShape e mesh3_instanceShape
Então podemos usar mesh_instanceShape*

Se tiver: mesh1_sphereShape, mesh1_cubeShape e mesh2_cubeShape
Então podemos usar mesh_Shape

Importante: A malha principal na qual os objetos serão instanciados deve ter seu próprio Import e seu nome especificado. Por default, este campo vem com o *, sendo que todas as malhas são importadas. Sempre utilizar os nomes com Shape no final. Cuidado ao utilizar números com wildcard no final do nome do objeto, o Maya pode se confundir e colocar o número após o Shape, como mesh1Shape que pode ficar meshShape1.

Outra maneira de se utilizar vários objetos é criando um Import para cada objeto e uni-los com nodes de Merge antes de conectá-lo ao input do Instance.

Na segunda aba, Objects, escolhemos quais instâncias serão usadas e em qual ordem. O primeiro campo, Source Objects, estipula que método será usado para selecionar os objetos que o node recebeu em seu segundo input.

  • First: Apenas o primeiro objeto será utilizado e os demais serão ignorados.
  • All: Todos os objetos são usados ao mesmo tempo sobre cada fio ou partícula. É útil em casos de que um objeto é formado por várias malhas diferentes que não foram combinadas.
  • Expression: Utiliza o campo Object Expression para definir que objetos serão utilizados em cada situação. Podemos utilizar atributos, expressões ou numeros diretamente. Lembrar que cada objeto pode ser identificado por um número sequencial, por exemplo, o primeiro objeto terá o valor 0, o segundo terá 1, etc.
  • Cycle: Alterna sequencialmente cada objetos em relação ao id do fio ou partícula. É equivalente à expressão cycle(id, 0, numero_do_ultimo_objeto).

Arquivo de Exemplo: Instance_Cycle.ma

Podemos criar um id para cada tipo de objeto e utilizá-lo para mapear materiais diferentes no render ou passar propriedades específicas para cada tipo de objeto, como uma escala diferente para cada um. Para isso, usamos um node de Attribute antes do node de Instance, pois só é possível criar novos atributos sobre fios ou partículas. Criamos um atributo novo para o id do objeto e usamos a mesma expressão que será utilizada no campo Object Expression do node Instance, como por exemplo, a função cycle().

Se quisermos separar os materiais no Shader, ativar a opção Map as Renderable Attribute e passar o nome do atributo para o renderizador nos campos abaixo. No Shader, podemos usar um node de VRayUserColor (VRay) ou aiUserDataColor (Arnold) para acessar este atributo de id e usar máscaras para separar os Shaders. Um node do Shader útil para esta separação é o node de Condition interno do Maya. Ele funciona semelhante à uma expressão condicional do Yeti, sendo que podemos comparar o valor do atributo com um número e retornar uma cor se for verdadeiro ou outra cor se for falso.

Importante: Cada atributo criado deve ser herdado através do campo Inherit Attributes para que possa ser utilizado no node Instance ou depois. Os atributos podem ser separados tanto com ; como com espaços.

Selecionando e Posicionando Objetos

Na aba Selection do node Instance, é possível dizer exatamente onde os objetos serão instanciados em relação aos fios. No primeiro campo, Point Selection, podemos utilizar expressões ou atributos para definir em quais fios ou partículas haverão instâncias. O valor default é 1, ou seja, todos os fios receberão instâncias.

Por exemplo, se utilizarmos a expression N[1] > 0.5, então todos os fios que estiverem em uma face cujo vetor Normal em Y seja maior que 0.5, receberão instâncias.

Arquivo de Exempo: Instance_Element_Index.ma

Quando escolhemos para instanciar objetos sobre Elements, temos a possibilidade de escolher sobre qual ponto este elemento será instanciado utilizando o campo Element Point Index, na aba Selection. Este campo tem como default o valor 0, que significa que o primeiro ponto do fio (root) receberá a instância. Podemos colocar qualquer valor relativo a cada ponto ou, se quisermos garantir que ele sempre ficará na ponta (tip) do fio, utilizamos a variável vertexCount, que retorna o número total de pontos que cada fio possui. Este campo também permite que atributos ou expressões sejam usados para definir este ponto, o que pode ser útil para criar uma variação de posições. No caso de partículas, ela só possui um ponto, zero.

Anterior: 07. Guide Curves Próximo: 09. Groups