Material de Oceano na Unreal Engine

Por: Harley  

Em: 09/11/2017 13:49

Valeu André !!!
Gostei da ideia de criar um jogo, na parte gráfica acho q conseguiríamos emparelhar com as grandes empresas.
Sobre UnrealEngine eu comecei a pouco tempo, só conheço bem o MaterialEditor, o restante não entendo quase nada.
A parte boa é q tenho domínio completo de Modelamento, Mapeamento e principalmente Texturização, mas ja esqueci completamente Bones e Riguer, etc. Preciso me reatualizar.
Usando o Zbrush consigo modelar e texturizar qualquer coisa.
A textura anexa de rocha está um pouco escura porque é pro render da CryEngine q tem SubesposiçãoLinear de 90%, por isso q está escura e as cores estão bem fortes. Se eu usasse esse difuse na Unreal ficaria muito ruim e se fosse usar albedo também, porque os renders são completamente diferentes. Sem falar no glossiness q precisa ter o PBR correto.

Vou mostrar também algumas imagens de terrenos q eu desenvolvi na CryEngine. Na Cry as texturas de terreno são diferentes e não seguem PBR exato, precisam ter glossines bastante escuro e o (difuse ou albedo) tem q ser exportado de forma diferente porque serão Terrain.Layer para poderem ser pintados na landscape usando a ferramenta padrão. Quando eu preparar essas texturas pra Unreal terei muito mais opções e vou poder testar umas idéias enovadoras. Depois explico pra você por email.

Se voçês precisarem de ajuda com o forum me avisa, estou sem trabalhar no momento e tentarei alguma empresa de jogos aqui do Brasil mesmo, quero fazer parte de projetos nacionais, sei q posso colaborar bastante com o desenvolvimento delas na parte gráfica.
Valeu André !!!
Gostei da ideia de criar um jogo, na parte gráfica acho q conseguiríamos emparelhar com as grandes empresas.
Sobre UnrealEngine eu comecei a pouco tempo, só conheço bem o MaterialEditor, o restante não entendo quase nada.
A parte boa é q tenho domínio completo de Modelamento, Mapeamento e principalmente Texturização, mas ja esqueci completamente Bones e Riguer, etc. Preciso me reatualizar.
Usando o Zbrush consigo modelar e texturizar qualquer coisa.
A textura anexa de rocha está um pouco escura porque é pro render da CryEngine q tem SubesposiçãoLinear de 90%, por isso q está escura e as cores estão bem fortes. Se eu usasse esse difuse na Unreal ficaria muito ruim e se fosse usar albedo também, porque os renders são completamente diferentes. Sem falar no glossiness q precisa ter o PBR correto.

Vou mostrar também algumas imagens de terrenos q eu desenvolvi na CryEngine. Na Cry as texturas de terreno são diferentes e não seguem PBR exato, precisam ter glossines bastante escuro e o (difuse ou albedo) tem q ser exportado de forma diferente porque serão Terrain.Layer para poderem ser pintados na landscape usando a ferramenta padrão. Quando eu preparar essas texturas pra Unreal terei muito mais opções e vou poder testar umas idéias enovadoras. Depois explico pra você por email.

Se voçês precisarem de ajuda com o forum me avisa, estou sem trabalhar no momento e tentarei alguma empresa de jogos aqui do Brasil mesmo, quero fazer parte de projetos nacionais, sei q posso colaborar bastante com o desenvolvimento delas na parte gráfica.
Valeu André !!!
Gostei da ideia de criar um jogo, na parte gráfica acho q conseguiríamos emparelhar com as grandes empresas.
Sobre UnrealEngine eu comecei a pouco tempo, só conheço bem o MaterialEditor, o restante não entendo quase nada.
A parte boa é q tenho domínio completo de Modelamento, Mapeamento e principalmente Texturização, mas ja esqueci completamente Bones e Riguer, etc. Preciso me reatualizar.
Usando o Zbrush consigo modelar e texturizar qualquer coisa.
A textura anexa de rocha está um pouco escura porque é pro render da CryEngine q tem SubesposiçãoLinear de 90%, por isso q está escura e as cores estão bem fortes. Se eu usasse esse difuse na Unreal ficaria muito ruim e se fosse usar albedo também, porque os renders são completamente diferentes. Sem falar no glossiness q precisa ter o PBR correto.

Vou mostrar também algumas imagens de terrenos q eu desenvolvi na CryEngine. Na Cry as texturas de terreno são diferentes e não seguem PBR exato, precisam ter glossines bastante escuro e o (difuse ou albedo) tem q ser exportado de forma diferente porque serão Terrain.Layer para poderem ser pintados na landscape usando a ferramenta padrão. Quando eu preparar essas texturas pra Unreal terei muito mais opções e vou poder testar umas idéias enovadoras. Depois explico pra você por email.

Se voçês precisarem de ajuda com o forum me avisa, estou sem trabalhar no momento e tentarei alguma empresa de jogos aqui do Brasil mesmo, quero fazer parte de projetos nacionais, sei q posso colaborar bastante com o desenvolvimento delas na parte gráfica.
Oi Harley, tudo bem?

Primeiro de tudo me desculpe por essa chatisse do fórum só aceitar 3 imagens por portagem, estamos ajustando estes detalhes e vamos retirar essa limitação idiota.

Em segundo lugar, parabéns pelos terrenos, adorei, pelo visto são todos procedurais.
Você criou no Material Editor da Cry?

Pelo que estou vendo e pelo que você disse, tenho certeza que vai adorar o Substance Designer, porque com ele você pode criar materiais procedurais PBR para usar em qualquer Engine e qualquer programa 3D, então, você consegue o mesmo resultado no Max com V-Ray e no Unreal Engine, por exemplo, se exportar o mesmo modelo para o Unity fica idêntico, se levar para o Maya também e qualquer outro soft ou render.

Além de você poder criar qualquer parâmetro que quiser para alterar qualquer propriedade do material, seja numa animação no Max ou em tempo real durante o jogo no Unreal, Unity, Cry, etc.

Olha o vídeo do planeta procedural que fiz com o Substance e Unreal, os continentes, vegetação, oceano e cidades é do material procedural criado no Susbtance Designer, as nuvens, o Glow da atmosfera, o Parallax e a sombra Fake é do material do Unreal.

Você nem vai ter que aprender muito pelo que já sabe do Material Editor do Unreal, é o mesmo esquema, mas o Substance Designer é muito mais poderoso, além disso, tudo já sai com o Glossiness correto para PBR.

Eu acho que a gente consegue fazer um jogo legal na parte gráfica e também na programação, eu já brinquei bastante com os Blueprints do Unreal e fiz até um programa para construir maquete interativa modularmente, é só uma prova de conceito, mas daria para deixá-lo bem completo e até lançar comercialmente, porém, não é o meu objetivo.

Se precisar de qualquer ajuda com os Blueprints é só falar, no fundo a lógica é a mesma do Material Editor, só precisa se entender com Arrays, vetores e estruturas básicas de programação como While, If/Else, ForEach, Ennumerators, funções estas coisas, depois que pegar o jeito vai ver que a parte mais chata e trabalhosa é modelar, mapear e texturizar, pois programar é super divertido.

A sua modelagem e texturização é excelente há muitos anos, sei que não tem nada que você não modele ou texturize com perfeição.

Bones e Rig você relembra rapidinho e para levar para o Unreal só vai os Bones, o Skin e as animações, não vai todos os controladores que usamos para a animação no Max, é um Rig bem mais simples.
O ruim é que para veículos também terá que fazer Rig com Bones para levar para o Unreal, no Unity só personagens que precisam de Rig.

Sobre as texturas para o Unreal, é só você clarear elas um pouco no Photoshop ou mesmo nas propriedades das texturas no Unreal, diminuindo um pouco o Brightness Curve e o Saturation, como mostra a imagem em anexo, assim, o resultado será bem melhor.

Sobre o fórum, a gente não tem condições de manter alguém para cuidar dele, então, estamos nos virando do jeito que podemos, sinto saber que está sem emprego no momento com o talento que tem em várias áreas.
Agora que lançamos o curso de V-Ray vou me dedicar na sua biblioteca para poder lançar e dar uma força ai.

Abração e tudo de bom.

André Vieira
Oi André, agradeço muito os elogios.
Sobre os terrenos, foram modelados no zbrush, ele consegue fazer tiling quase perfeito, mas precisa fazer algumas correções no photoshop de todas as texturas, a de cores, Alpha de displacement e glossines. O normalMap e o AmbientO prefiro renderizar no XNormal(aquele programa de render) porque no Zbrush quando trabalha com Tiling a textura fica com defeito nas bordas.

Quando preciso aplicar detalhes, eu faço o seguinte:
Eu ja havia modelado, no Zbrush com opacidade e quadrilhamento vários elementos todos separados, só preciso ir no photoshop e incluir esses detalhes nas texturas de terreno.
Exemplo: grama, musgo, rochas pequenas, galhos pequenos, até troncos de árvores derrubadas, tocos de arvores cortadas, etc...
No photoshop, trabalhando em camadas, cada um deles tem já pronto: Alpha de displacement do Zbrush, glossines com o PBR certo, NormalMap e Difuse completo.
Só preciso juntá-las usando o photoshop, com alguns cliques ja tenho tudo pronto, eu achei mais eficiente fazer esse esquema do q precisar aprender o Substance porque levaria mais tempo e é um programa complexo. No Photoshop, até o Displacement pode ser incluso sobre outro Displacement q a textura ficará perfeita, existe um truque para fazer isso.
Eu ja deixei os materiais com PBR correto para cada elemento, madeira, rocha, grama, terra, areia, neve, gelo, elementos com reflexão de agua, rochas molhadas e secas, areia molhada e seca etc...
A única coisa q não pode fazer é "girar" essas texturas porque desajusta o NormalMap, pra concertar eu teria q gerar outro NormalMap com base no Alpha de Displacement do Zbrush usando um plugin do Xnormal.

Voçê lembra q eu disse q tive algumas idéias q nunca foram pensadas ?
Depois eu mando um email pra voçê explicando com detalhes, eu tenho um pouco de receio de espionagem industrial, talves seja melhor manter em sigilo.
Ainda bem q a gente ta escrevendo em português, porque se fosse em inglês já teria começado os haqueamentos nesse meu computador hehehehehehe...

André, tenho uma dúvida:

Vou criar um terreno Gigante no Zbrush, texturizar para visão de longa distância e importar o Mesh para interagir melhor com o Oceano. Pretendo usar o Tesselation somente para curta distância, assim terei mais controle sobre a quantidade de polígonos deixando-o bem leve.
Pergunta: Esse Mesh q foi importado para a Unreal pode ser pintado com a ferramenta de PaintLandscape da Unreal ?
Ou... eu deveria importar só o Displacement sobre algum Plane próprio para Landscapes ?
Oi Harley, tudo bem?

Os elogios são sinceros, pode ter certeza, a prova são as bibliotecas com vegetações super realistas que muitos usam no seus projetos hoje em dia.

Legal saber a forma que fez os terrenos e o Z-Brush realmente é sensacional, não tem como fugir.

Eu entendo o que falou sobre os problemas de Tile porque aconteceu comigo várias vezes, por exemplo, eu queria fazer diversas partes de uma pista de lama para poder construir a pista completa com estas partes no Unreal, então, tem a parte com valetas, a parte com rampa, a parte com lombadas e tal, dai ajustei o Tile na malha Lowpoly no Max e fiz o material de lama com as marcas de rodas no Substance Designer, pois tudo é ladrilhável no SDesigner e tem Triplanar para retirar emendas facilmente, o vídeo em anexo mostra a ferramenta de pista que fiz com as partes e depois mostra a pista no Game, o melhor é que posso controlar o quanto a pista está molhada em tempo real mudando um parâmetro do material Substance.

O Substance não é difícil, basicamente é o Photoshop por Nodes, você aplica os mesmos filtros, mas através de Nodes e tem filtros específicos para agilizar a vida na texturização.

Eu entendi o seu Workflow, que é excelente e para quem já está tão acostumado e com tudo preparado no Photoshop leva mais tempo para se acostumar com o SDesigner, porém, quando se acostumar vai ver que valeu a pena.

Imagine você poder importar qualquer objeto e um determinado material reconhecer a geometria e o Normal Map deste objeto para aplicar os efeitos que você criou, por exemplo, musgo ou neve na parte de cima, ferrugem nas reentrâncias e desgastes nas quinas, materiais naturais então, ficam super realistas e detalhados como pode ver no artigo da Allegorithmic que postei hoje de tarde nas notícias do site.
O lance é que você cria o material apenas uma vez e ele se adapta automaticamente a qualquer modelo que fizer, tudo com visualização real-time.

Imagine poder girar o que quiser e o Normal Map ser criado em tempo real, assim como AO, Height, Gloss, Metalic, etc. e sem mudar de Soft.

Pense seriamente em dar uma estudada no SDesigner porque tenho certeza que além de adorar, você vai criar coisas incríveis com ele.

Qualquer coisa que precisar é só falar, o SDesigner é um Soft que conheço muito bem porque fiquei apaixonado por ele desde que vi pela primeira vez.

Na verdade eu acho melhor você não estudar o SDesigner porque é o tipo do programa que você vai ficar viciado! laughinglaughing


Sobre as idéias que teve, pode me enviar por email, não ando vendo os emails diariamente depois que voltei a responder o fórum, mas geralmente no final de semana eu tento deixar em ordem.

A gente está fazendo uma reforminha numa chácara para tentar se mudar no começo do ano que vem e ver se tem paz para poder trabalhar e gravar vídeo cursos, além de parar de pagar aluguel, então, vou ficar meio enrolado até me mudar, mas depois que a gente mudar e se livrar da sociedade civilizada eu espero que seja a maior tranquilidade. laughing


Sobre a importação do terreno do Z-Brush para o Unreal, você deve exportar o Heightmap em PNG ou RAW e aplicar no Landscape nativo do Unreal, como mostra a imagem em anexo.
Assim, ele vai gerar o Landscape com o formato que modelou e terá todas as vantagens do Landscape como colisão, Pathfinder, Tessellation, LOD, vegetações e tal.

Porém, não poderá fazer um terreno gigantesco com apenas um Landscape em um Level, pois ficará muito pesado, então, você precisa usar o World Composition, que permite carregar cada parte do terreno de acordo com a necessidade de forma suave sem o usuário perceber.

A documentação do World Compostion fica nesta página: https://docs.unrealengine.com/latest/INT/Engine/LevelStreaming/WorldBrowser/

Também seria importante pesquisar sobre o Level Streaming para poder fazer o mesmo com partes da cena (Level), pois dai pode encher de detalhes e só carregar o que estiver próximo do personagem.

Abração e tudo de bom.

André Vieira
Oi André, eu conheço uma forma de fazer com q a estrada q voçê fez para o seu jogo de corrida nunca aparente quadrilhamento tanto de longa distância quanto de grande proximidade da câmera. Sei fazer, mas acho q não consigo explicar muito bem, bom... vou tentar. Voçê poderá usar quantas texturas precisar, dessa forma nunca aparentará repetição.

Na CryEngine existe uma ferramente de Roads, só serve pra criar estrada, mas é muito limitada e só permite 1 material. Acho q na Unreal essa ferramenta deva ser melhor.

Voçê cria um Mask em RGB, se for possível 2 Masks. Em cada cor dos Mask voçê linka uma textura diferente para Albedo e NormalMap usando Lerp. Cada Cor dos Masks vão no Alpha do Lerp.

Estou estudando o LandscapelayerBlend para o material da Landscape.
A quantidade de materiais é limitada ? Se for, vou ter q reduzir o tamanho das texturas para q os samples não atinjam 16.
Ainda tem o displacement real de cada textura, vai ficar mais pesado.
Vou estudar também MaterialFunction, acho q pode ser bastante util.
Tentei gravar um video, mas ja mudaram a interface nessa versão e a camera não está gravando a movimentação dela própria.

Duvida:
Pra q serve aquela conexão de Alpha q liga cada material ao Height do LandscapeLayerBlend ? Tem alguma textura nesses canais de Alpha ?

Gostei do seu jogo de carro, parabéns !!!
Eu vi q o maximo q cada Landscape pode ter são 10 kilometros.
Você usou qual escala ?
Oi Harley, tudo bem?

Eu fiz a ferramenta de rua com um Blueprint bem simplezinho usando o Spline Component, como mostra a imagem em anexo, ele pode ser utilizado com qualquer Mesh, então, daria para fazer cercas, postes, calçadas, qualquer coisa repetitiva através de um caminho, tudo junto ou separado.

Sobre a textura em alta resolução vista de perto, eu acho que sei a técnica que você falou com Lerp para alterar a textura para uma em alta resolução quando a câmera se aproxima.

Creio que você conhece o sistema de Mipmaps, que faz essa alteração automaticamente no Unreal, então, você pode importar uma textura em 4K que ela só será exibida com 4K quando a câmera estiver próxima, mas mesmo uma textura de 4K num objeto grande pode não ter tanta resolução quando visto bem de perto e dai entra essa técnica que você falou para trocar por uma textura de uma área pequena em alta resolução, é bem legal.


Sobre o LandscapeLayerBlend, não precisa se preocupar com a quantidade de texturas porque o LayerBlend mescla tudo transformando em apenas uma textura, então, conta como 1 Sample, como mostra a segunda imagem em anexo.

Basicamente o LayerBlend agrupa todas as texturas num sistema de máscaras que você vai usar para pintar o terreno, então, é só criar o nome de cada textura (Layer), por exemplo, terra, grama, lama, rocha e tal, dai poderá aplicar uma textura em cada Layer para o Base Color (Albedo).

Depois você tem que fazer exatamente igual para o Normal, Diffuse, Gloss e qualquer outro canal que for usar, ou seja, tem que colocar os mesmos nomes, na mesma ordem, então, é melhor copiar o LayerBlend para cada canal e pronto.

O mais legal é que pode usar o Landscape Grass Output para distribuir vegetações, pedras e o que quiser pelo terreno de acordo com a textura, ou seja, de acordo com o Layer que desejar do LayerBlend.

É só criar o Grass Output, adicionar os Layers que quiser nele e selecionar a vegetação que vai usar em cada Layer, como mostra a terceira imagem em anexo, depois precisa criar o Landscape Layer Weight, conectar em cada Layer que criou no Grass Output e colocar o nome usado no LayerBlend que deve distribuir essa vegetação.
Assim, quando pintar a área de grama, por exemplo, já vai distribuir também a grama 3D em tudo.


Sobre o Material Function, é apenas um lugar onde poderá manter as funções mais utilizadas para não ter que ficar toda hora criando a mesma coisa, isso agiliza muito e reduz a complexidade do gráfico do material, pois boa parte dos cálculos ficam dentro das funções que aparecem como simples Nodes.

Na imagem do material que postei em anexo, tem vários Nodes com o nome MF de Material Function, uma delas é para ladrilhar as texturas e a outra controla a intensidade do Normal Map, coisas que usa em qualquer material e facilita ter elas em uma função.


Sobre a pergunta do Alpha, não sei se entendi bem, mas tem 3 tipos de mesclagem que o LayerBlend faz, uma delas é com Alpha, ai depende do canal Alpha de cada textura, o outro método é por Weight, que é o que estou usando no material mostrado na imagem em anexo, ele vai mesclar de acordo com a intensidade da máscara na pintura no terreno, e tem o melhor método que é o Height, ele usa um Height Map para fazer a mesclagem de acordo com a altura, então, se mesclar entre grama e pedras a grama aparece apenas entre as pedras, por exemplo, pois as pedras são mais altas.


Sobre o terreno do meu jogo, não lembro exatamente o tamanho dele, mas é pequeno, daria para fazer muito maior.

Abração e tudo de bom.

André Vieira
curti pra caramba

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 711048.

Total de membros registrados: 138517

Últimos membros registrados: luciano pr, Davis123, diabecode, aldiriank1, nexagenkopen, GoldenRevivePlus, TroviranKapselnPreis, Williamcharses.

Usuário(s) on-line na última hora: 1297, sendo 14 membro(s) e 1283 visitante(s).

Membro(s) on-line na última hora: Eduardo Ramos, Thiago Couto, JesusEnzo , Lucas Reis, klogg, Carla Franco, Nuno, Ronaldo, Paulo Rodrigues Lima, Ricardo Paranhos, Duda, Lisandro, Osires Mathoso, Diego Dneo.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.