# Ferramentas de Malha Procedural

Dash contém várias ferramentas que geram geometria: Road Tool, Terrain Tool, Cable Tool, etc...

## Baking

Estas ferramentas geram todas um ator do tipo `DashPreviewMeshComponent`. Este tipo personalizado permite-nos ter controlo total sobre o desempenho e os algoritmos de geração de meshes.

A primeira coisa a saber sobre ferramentas baseadas em meshes é que um ícone de baking <img src="https://654444654-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2F9ANCQGpYmXbpLX6dXgVz%2Fbake_color.png?alt=media&#x26;token=1339c809-31ab-46e8-9bb8-2f1c20b64b6c" alt="" data-size="line"> no Painel de Ferramentas está sempre a um clique de distância, e apagará a ferramenta associada ao seu mesh, convertendo depois o mesh do Dash num static mesh normal do UE5.

Há muitas razões pelas quais pode querer fazer bake dos seus meshes gerados pelo Dash:

* Torná-los utilizáveis/visíveis noutros computadores que não tenham o Dash instalado.
* Usar Nanite, pintura de vértices e outras funcionalidades do UE.
* Limpar a sua cena de ferramentas de que já não precise depois de terminar de as editar.

<figure><img src="https://654444654-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FflmoSeFJ5NWWbAtxNh6D%2Fimage.png?alt=media&#x26;token=7f121558-6311-4645-8cc8-e615944fae62" alt=""><figcaption></figcaption></figure>

Além da funcionalidade de baking no painel de Ferramentas, também pode selecionar o componente deste mesh, e ele terá um botão **Create Static Mesh** para o converter num static mesh.

<figure><img src="https://654444654-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FhO18k76eIgchjbFsdewi%2Fimage.png?alt=media&#x26;token=baeafbbd-db1c-4dae-bc97-b5571bf3da06" alt=""><figcaption></figcaption></figure>

## Terrain Tool

Cria uma mesh procedural para ser usada como terreno - Este terreno pode ser ajustado conforme desejar com os controlos fáceis de usar dentro da Terrain Tool. Por exemplo, pode controlar a Altura, a Turbulência e a Escala UV, mas também pode deformá-lo com um mapa de altura ou com splines. Pode encontrar a ferramenta de terreno pesquisando no Dash ou encontrando-a no menu Criar.&#x20;

{% embed url="<https://streamable.com/0nb3xh>" %}

## Cable Tool

Cria cabos procedurais entre splines, objetos ou espalhados por cima de meshes - Vem com várias definições diferentes, garantindo que consegue criar cabos totalmente procedurais mais facilmente do que nunca. Perfeito para ambientes urbanos ou ambientes de selva no Unreal Engine 5. Claro que tem controlo total sobre a quantidade de cabos, o tamanho, a gravidade e muito mais! Pode encontrar a ferramenta de cabos pesquisando no Dash ou no menu Criar.

{% embed url="<https://streamable.com/e6dnv0>" %}

## Vine Tool

Cria videiras nas superfícies especificadas - Isto é perfeito para qualquer floresta ou ambiente com vegetação densa, pois permite criar videiras procedurais em 2 segundos em qualquer superfície ou asset. Como as videiras tendem a ter folhas, tornámos super fácil simplesmente arrastar com CTRL e largar um atlas de folhas da Content Library do Dash para uma superfície e, em 1 segundo, terá videiras com folhas anexadas espalhadas por todo o asset/superfície. Depois pode controlar a quantidade de crescimento, o tamanho dos ramos e das folhas, e muito mais. Não podia ser mais fácil!&#x20;

Claro que também pode abrir a Vine Tool pesquisando no Dash. Depois pode atribuir uma origem (pode ser um ator vazio ou uma curva) e uma superfície onde quer que as videiras cresçam. A terceira forma de a abrir é pesquisando por Draw Vines no Dash; isto abre o nosso Draw Mode e, assim que desenhar uma curva, verá que criamos automaticamente videiras ao longo desta curva para si! Pode sair deste Draw Mode clicando em ESC ou no botão STOP.&#x20;

{% embed url="<https://youtu.be/Y_Ja4n3RSf0>" %}

## Road Tool

Cria uma mesh de estrada/caminho ao longo da curva/spline de entrada - Se alguma vez sentiu necessidade de ter uma estrada procedural no UE5, vai adorar usar isto! Basta desenhar uma spline com o Dash, atribuí-la à road tool e voilà, tem uma estrada que corresponde perfeitamente à forma da sua spline. Se precisar de a alinhar ainda mais com a sua superfície, pode encontrar uma Projection Mask na secção Geometry. Depois, se alterar a spline ou a superfície subjacente, a estrada ajusta-se automaticamente. Pode encontrar a Road Tool pesquisando no Dash.

E, como sempre, pode personalizar a estrada com os sliders e toggles normais, obtendo o resultado perfeito para o seu ambiente. Dica profissional: depois de criar uma estrada, pode atribuí-la como uma proximity mask em Surface Scatter, garantindo que não haja erva etc. na estrada.

{% embed url="<https://streamable.com/587zqa>" %}

## Quick Pipe

Cria tubos de mesh ao longo das curvas de entrada - Se acha fácil desenhar splines exatamente como gostaria de ter tubos/cabos, o Quick Pipe é para si. Basta atribuir uma ou várias splines à ferramenta e obtém instantaneamente meshes criadas ao longo das splines. Estas meshes são, claro, personalizáveis com os nossos sliders e toggles normais! Pode encontrar o Quick Pipe pesquisando no Dash.

{% embed url="<https://streamable.com/zqn10t>" %}

## Draw Mesh

Se precisar de uma mesh com uma forma personalizada, a nossa ferramenta Draw Mesh permite-lhe desenhar qualquer forma e nós criamos uma mesh básica nessa forma. Pode abri-la através do Menu Criar ou pesquisando por ela. Assim que começar, estará no nosso Draw Mode e, quando desenhar qualquer forma, criaremos uma mesh correspondente para si. Pode continuar e criar quantas quiser e depois sair do Draw Mode com ESC ou com o botão STOP e apagar as que não gostar.&#x20;

{% embed url="<https://streamable.com/oyz2os>" %}

## Mesh Pattern

Mesh Pattern é uma ferramenta concebida para criar padrões procedurais, repetíveis em mosaico, usando os presets incluídos ou criando os seus próprios com assets e padrões personalizados. É perfeita para telhados, paredes, pisos ou qualquer outra superfície feita pelo homem que precise de mais profundidade e detalhe do que um material simples.

Pode encontrá-la através da pesquisa ou na barra do Dash, na categoria Criar -> Mesh Tools. Para começar a usá-la, basta atribuir uma ou várias superfícies e, por omissão, ela usará o preset Tile A na sua superfície.

{% embed url="<https://streamable.com/3xd1jm>" %}
Configuração Básica do Mesh Pattern
{% endembed %}

#### Presets

Para cobrir a maioria dos casos de uso do Mesh Pattern, incluímos mais de 30 presets de alta qualidade com diferentes assets e padrões. Por exemplo, presets para Broken Floor, HerringBone, Tiles e Bricks. Para mudar para outro preset, basta expandir a lista suspensa no topo do Mesh Pattern e selecionar outro preset. Se os assets desse preset ainda não estiverem presentes no nível, são adicionados automaticamente.&#x20;

{% embed url="<https://streamable.com/u9rfbk>" %}
Lista Suspensa de Presets do Mesh Pattern
{% endembed %}

#### Mesh Pattern em Curvas/Splines

Em vez de atribuir uma mesh ou uma superfície plana como objeto de superfície no Mesh Pattern, também pode usar uma curva ou spline, o que é perfeito para criar cercas ou paredes. Ao usar as curvas da nossa ferramenta Draw Curves, obterá os melhores resultados se desenhar curvas maioritariamente retas. Se quiser formas mais arredondadas, é melhor usar a nossa ferramenta Draw Spline.&#x20;

{% hint style="info" %}
Ao usar uma spline como objeto de superfície, é criada uma mesh implícita, extrudindo a spline com a altura determinada a partir da escala Z dos objetos de asset usados para criar o padrão.&#x20;
{% endhint %}

{% embed url="<https://streamable.com/8buczm>" %}
Usar Curvas e Splines com o Mesh Pattern
{% endembed %}

#### Definições

Tal como em qualquer ferramenta do Dash, pode, claro, ajustar os resultados exatamente ao seu gosto. Recomendamos experimentar as definições e ler as respetivas descrições ao passar o rato por cima, mas aqui fica um resumo das definições disponíveis:

* Propriedades Base: Pode ajustar a escala do tile, o ângulo, o preenchimento e a profundidade.&#x20;
* Ruído: Pode adicionar ruído aos pontos ou às próprias meshes.
* Projeção: Pode projetar/empurrar o padrão para um ou vários objetos.&#x20;
* Slice Tiles: Use uma mesh booleana para cortar os objetos do padrão numa forma específica, por exemplo, com um cubo ou uma esfera.&#x20;
* Proximity Mask: Masque uma área em redor de um objeto/curva ou mantenha-a apenas junto ao objeto/curva.&#x20;
* Noise Mask: Remova objetos aleatórios no padrão de acordo com um ruído controlado.&#x20;
* Object Masking: Masque uma área em redor de um objeto ou mantenha-a apenas junto a ele usando raycasting.
* Detalhes do Padrão: Adicione e controle a variação do padrão. E crie uma mesh Area para os presets personalizados.&#x20;

{% embed url="<https://streamable.com/zd5aww>" %}
Mostra de Definições do Mesh Pattern
{% endembed %}

Pode acontecer que a repetição do padrão não se ajuste bem à superfície, e então pode usar a funcionalidade slice para cortar os seus tiles em qualquer forma arbitrária usando uma mesh booleana. Esta funcionalidade também é útil se quiser "cortar" um padrão quadrado ou circular perfeito dentro do seu padrão.&#x20;

{% embed url="<https://streamable.com/z5rr1i>" %}
Funcionalidade Slice do Mesh Pattern
{% endembed %}

{% hint style="warning" %}
Quando usa a funcionalidade Slice do Mesh Pattern, criamos novas meshes deformadas para isto no outlier. Estas meshes são meshes especiais do Dash e, por isso, precisam de ser baked antes de enviar o jogo. Basta selecionar as meshes slice e procurar por Bake Meshes no Dash para as converter em static meshes normais. \
\
Usar a funcionalidade slice é um processo pesado, por isso, quando não for necessário, certifique-se de desmarcar a opção Enable para obter o melhor desempenho possível do Mesh Pattern.&#x20;
{% endhint %}

Ao usar meshes 3D em vez de planos, o padrão é aplicado à maior superfície planar no espaço local. Se quiser controlar exatamente onde o padrão aparece, pode em vez disso usar o Mesh Pattern num plano e projetá-lo para a mesh 3D e para uma superfície/lado específico. Para obter os melhores resultados possíveis, alinhe o ângulo do plano com o ângulo da superfície e depois experimente com o valor Max Distance para garantir que não é projetado para nada além dos locais pretendidos.&#x20;

{% embed url="<https://streamable.com/js2euf>" %}

{% hint style="warning" %}
Ao usar a funcionalidade Projection do Mesh Pattern, poderá precisar de usar o toggle flip dependendo de a sua mesh de projeção estar abaixo ou acima da mesh de superfície.&#x20;
{% endhint %}

#### Presets Personalizados

Se os nossos objetos e padrões predefinidos não cobrirem o seu caso de uso, também pode criar os seus próprios padrões com quaisquer assets. Estes podem então ser guardados e usados facilmente através da lista de presets, em todos os seus projetos.&#x20;

{% hint style="warning" %}
Tente criar os presets personalizados na versão mais baixa possível do Unreal, pois não pode usá-los numa versão inferior do Unreal.&#x20;
{% endhint %}

Para criar um preset personalizado, basta selecionar um ou mais objetos na sua cena e atribuí-los como Pattern Objects. Depois de fazer isto, notará que a posição destes assets importa, tanto relativamente entre si como ao eixo Z. Quando move, roda e escala os objetos, pode ver como o padrão se ajusta na sua superfície.&#x20;

{% hint style="warning" %}
Precisa de posicionar os seus assets personalizados na localização Z 0.0, caso contrário eles ficarão a flutuar acima da sua superfície. Pode tentar movê-los para cima/baixo para controlar a distância a que aparecerão acima da sua superfície.&#x20;
{% endhint %}

{% embed url="<https://streamable.com/n4xk9w>" %}
Configuração do Preset Personalizado do Mesh Pattern
{% endembed %}

{% hint style="warning" %}
Obterá os melhores resultados ao rodar os Pattern Objects apenas em incrementos completos de 90 graus.&#x20;
{% endhint %}

Para a maioria dos padrões, precisará de um objeto especial "area object" para definir quão grande é o padrão em relação aos objetos do padrão.&#x20;Pode criar e adicionar um ator de área com o botão utilitário "Create Area" na parte inferior da ferramenta Mesh Pattern.&#x20;

<figure><img src="https://654444654-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FO3IM0R6IK2f45x7LKukL%2Fimage%20(17).png?alt=media&#x26;token=ebe31b09-ff3b-427e-bd58-13241d224b0a" alt="" width="563"><figcaption><p>O vermelho serão os pontos de dispersão, relativamente à área verde definida pelo ator de área</p></figcaption></figure>

Por exemplo, pode ver como os meus resultados são afetados por ajustes ao meu objeto de área ou aos meus assets em relação ao meu objeto de área.&#x20;

{% embed url="<https://streamable.com/jiha9c>" %}

Agora que definiu o seu padrão com repetição correta, pode querer adicionar alguma variação.&#x20;&#x20;Ao colocar outros objetos muito perto dos que definem o padrão e adicioná-los como Pattern Objects, pode indicar à ferramenta para os tratar como variação através da secção Pattern Details. Defina o Variation Threshold acima de zero e experimente a quantidade de variações e a colocação dos assets de variação.&#x20;

{% embed url="<https://streamable.com/2slctw>" %}
Exemplo de Variação do Mesh Pattern
{% endembed %}

Quando estiver satisfeito com os seus Pattern Objects e com o respetivo padrão, pode guardar este padrão como um preset personalizado para o reutilizar facilmente. Basta abrir a lista suspensa de presets e usar o botão Create Pattern para adicionar o seu preset à lista suspensa de presets. Ao carregar este preset personalizado noutro projeto, se os objetos não fizerem parte desse projeto, serão adicionados automaticamente.&#x20;

{% hint style="warning" %}
Se não vir o seu padrão a aparecer quando o seleciona, poderá ter ocorrido um erro LoadAsset no registo de saída. Para corrigir isto, elimine esses objetos recém-adicionados do outlier e atribua novamente o preset personalizado, e ele funcionará como deve ser.
{% endhint %}

{% embed url="<https://streamable.com/j7hoob>" %}
Carregar e Guardar Presets Personalizados do Mesh Pattern
{% endembed %}

#### Ajustar Materiais do Padrão

Se quiser ajustar os materiais nas meshes de preset incluídas no Mesh Pattern, isso é possível através da ferramenta Material Edit. Selecione a saída do Mesh Pattern na viewport e depois abra o Material Edit através da lista Active Tools no canto superior esquerdo do Painel de Ferramentas.&#x20;

Aqui poderá ajustar definições básicas como Hue, Saturation, Brightness, etc., mas também adicionar uma camada de Dirt, Snow ou Rain. E uma nova inclusão é a capacidade de adicionar uma variação de cor diretamente a partir da ferramenta Material Edit. Por omissão, está ativada e definida com a força máxima para dar aos presets o melhor aspeto possível, mas se quiser desligá-la ou alterar a intensidade da variação, pode fazê-lo através das definições de variação no Material Edit para o Mesh Pattern.&#x20;

{% embed url="<https://streamable.com/5eg5af>" %}

## FAQ

<details>

<summary>Posso editar as ferramentas de mesh procedural depois de as fechar?</summary>

Sim, pode, claro, continuar a editar as ferramentas de mesh no Dash desde que não as tenha baked ou quebrado a ligação da ferramenta. Abra o Painel de Ferramentas com o botão Edit no Dash e depois basta selecionar a sua mesh.&#x20;

Se isto não mostrar a sua ferramenta como esperado, certifique-se de que não há outra ferramenta afixada no Painel de Ferramentas e veja também se consegue encontrar a ferramenta abrindo a Lista de Ferramentas Ativas com o botão no canto superior esquerdo do Painel de Ferramentas.

</details>

<details>

<summary>Posso espalhar ou usar outras ferramentas do Dash por cima destas ferramentas de mesh?</summary>

Se, por exemplo, tiver criado um terreno com o Dash, pode depois espalhar alguma relva sobre ele com Surface Scatter e criar e projetar uma estrada com a road tool. Se depois ajustar novamente o terreno a partir do Painel de Ferramentas, tanto a sua dispersão como a estrada projetada serão, claro, ajustadas em conformidade.&#x20;

</details>
