Pt-br/Bump map: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Added PT/BR translation)
mNo edit summary
 
Line 1: Line 1:
{{LanguageBar}}
{{LanguageBar}}
[[File:Brickwall021a normalcompare.jpg|thumb|200px|O [[albedo]] de um material (esquerda) comparado ao seu bump map.]]
[[File:Brickwall021a normalcompare.jpg|thumb|200px|O [[albedo]] de um material (esquerda) comparado ao seu bump map.]]
[[File:Example of bump mapping.jpg|thumb|200px|O material acima dentro do jogo.]]
[[File:Example of bump mapping.jpg|thumb|200px|O material acima dentro do jogo.]]
Texturas chamadas '''Bump Maps''', ou '''Normal Maps''' são usadas para simular detalhes tridimensional em uma superfície bidimensional manipulando a como a iluminação.
Texturas chamadas '''Bump Maps''', ou '''Normal Maps''' são usadas para simular detalhes tridimensional em uma superfície bidimensional manipulando a como a iluminação.
{{note|Props estáticos usando bump maps não podem ter iluminação per-vertex, exceto em {{L|csgobranch}} e {{L|strata}}. {{L|$lightmap}} também e incompatível com {{L|$bumpmap}}.}}
 
{{note|Bump maps não podem ser usadas como texturas decal, exceto em {{L|csgobranch}} e {{L|strata}}. Em ordem para que esses funcionem corretamente, a superfície que eles são aplicadas devem também conter uma bumpmap.}}
{{note|Props estáticos usando bump maps não podem ter iluminação per-vertex, exceto em {{L|csgo}} e {{L|Strata Source}}. {{L|$lightmap}} também e incompatível com {{L|$bumpmap}}.}}
{{note|Bump maps não podem ser usadas como texturas decal, exceto em {{L|csgo}} e {{L|Strata Source}}. Em ordem para que esses funcionem corretamente, a superfície que eles são aplicadas devem também conter uma bumpmap.}}
 
== Formatação ==
== Formatação ==
Cada pixel em uma bump map contem as coordenadas (x, y, z) que definem o {{L|vector}} {{L|normal}}izado.
Cada pixel em uma bump map contem as coordenadas (x, y, z) que definem o {{L|vector}} {{L|normal}}izado.
Por causa disso cada canal de cor em uma bump map tem um proposito:
Por causa disso cada canal de cor em uma bump map tem um proposito:
; Red
; Red
Line 23: Line 29:
:* 128 = profundidade máxima capaz de receber luz dinâmica. É uma má ideia ir há baixo disto.
:* 128 = profundidade máxima capaz de receber luz dinâmica. É uma má ideia ir há baixo disto.
:* 255 = voltado para fora da textura em direção ao observador.
:* 255 = voltado para fora da textura em direção ao observador.
{{note|Uma bump map plana deve ser [128, 128, 255]. <code>dev/flat_normal</code> e uma textura bump map presente em todos os jogos.}}
{{note|Uma bump map plana deve ser [128, 128, 255]. <code>dev/flat_normal</code> e uma textura bump map presente em todos os jogos.}}
Os três canais representam um vector normalizado para cada pixel que representa a direção que cada pixel estar virada no espaço 3D. Isto permite que a engine gere sombras e destaques em uma superfície bidimensional, ou dar um modelo 3D mais detalhe.
Os três canais representam um vector normalizado para cada pixel que representa a direção que cada pixel estar virada no espaço 3D. Isto permite que a engine gere sombras e destaques em uma superfície bidimensional, ou dar um modelo 3D mais detalhe.
Uma bump map e grandemente inútil para superfícies bem planas, tipo superfícies suaves como concreto ou metal, mais as vezes ate concreto suave tem profundidade o suficiente para fazer uma valer a pena, especialmente se usada em conjunto com um {{L|cubemap}}.
Uma bump map e grandemente inútil para superfícies bem planas, tipo superfícies suaves como concreto ou metal, mais as vezes ate concreto suave tem profundidade o suficiente para fazer uma valer a pena, especialmente se usada em conjunto com um {{L|cubemap}}.
[[file:normalmap.gif]]
[[file:normalmap.gif]]
== Criação ==
== Criação ==
Uma bump map deve ser renderizada em um espaço Tangente e fazer uso das direções do vector X+ Y- Z+.
Uma bump map deve ser renderizada em um espaço Tangente e fazer uso das direções do vector X+ Y- Z+.
{{note|Há basicamente apenas duas regras para normal maps: {{L|DirectX}} e {{L|OpenGL}}. A interpretação deles de canais verde são opostas. {{L|Source}} usa o primeiro, enquanto {{L|Source 2}} usa o segundo. Assim, os canais verde talvez tenham de ser invertido dependendo do programa que usado para cria-la. }}
{{note|Há basicamente apenas duas regras para normal maps: {{L|DirectX}} e {{L|OpenGL}}. A interpretação deles de canais verde são opostas. {{L|Source}} usa o primeiro, enquanto {{L|Source 2}} usa o segundo. Assim, os canais verde talvez tenham de ser invertido dependendo do programa que usado para cria-la. }}
=== Programas ===
=== Programas ===
[[File:Test_bump.jpg|thumb|600px|Exemplo de Bump maps criadas por diversos programas.]]
[[File:Test_bump.jpg|thumb|600px|Exemplo de Bump maps criadas por diversos programas.]]
Vários programas podem automatizar a criação de bump maps, seja por analise de imagens ou usando geometria 3D que o usuário crie.
Vários programas podem automatizar a criação de bump maps, seja por analise de imagens ou usando geometria 3D que o usuário crie.
;2D
;2D
Line 51: Line 64:
:[http://www.nvidia.com/object/melody_home.html NVIDIA Melody]
:[http://www.nvidia.com/object/melody_home.html NVIDIA Melody]
:[http://planetpixelemporium.com/tutorialpages/normal2.html Cinema 4D]
:[http://planetpixelemporium.com/tutorialpages/normal2.html Cinema 4D]
:{{LNormalMapper}}
:{{L|NormalMapper}}
:[http://xnormal.net/ xNormal]
:[http://xnormal.net/ xNormal]
;Outros
;Outros
Line 65: Line 78:
# Escolha o formato de sua imagem. Formatos descomprimidos como BGR888 são de alta qualidade quando comparada com formatos comprimidos como DXT1, mas tenha cuidado com o tamanho do arquivo.
# Escolha o formato de sua imagem. Formatos descomprimidos como BGR888 são de alta qualidade quando comparada com formatos comprimidos como DXT1, mas tenha cuidado com o tamanho do arquivo.
# Cheque a caixa "Normal map" na lista de flags da textura após a importação ser concluída. Está cerca de 1/5 do caminho para baixo na lista.
# Cheque a caixa "Normal map" na lista de flags da textura após a importação ser concluída. Está cerca de 1/5 do caminho para baixo na lista.
{{tip|VTFEdit pode gerar bump maps automaticamente. Veja o canto inferior direito da tela de importação.}}
{{tip|VTFEdit pode gerar bump maps automaticamente. Veja o canto inferior direito da tela de importação.}}
==== Em {{L|Vtex (Source 1)|Vtex}} ====
==== Em {{L|Vtex (Source 1)|Vtex}} ====
# Salve suas normal maps como {{L|TGA}}. De a elas um nome que acabe em ''_normal''. O ''_normal'' no final do nome ira afetar como o {{L|Vtex (Source 1)|Vtex}} converte-as. Para uma parede de tijolo como exemplo, nos nomearíamos o arquivo como <code>brickwall_normal.tga</code>.
# Salve suas normal maps como {{L|TGA}}. De a elas um nome que acabe em ''_normal''. O ''_normal'' no final do nome ira afetar como o {{L|Vtex (Source 1)|Vtex}} converte-as. Para uma parede de tijolo como exemplo, nos nomearíamos o arquivo como <code>brickwall_normal.tga</code>.
# Adicione <code>nocompress 1</code> e <code>normal 1</code> para o <texture filename>.txt na mesma pasta que sua textura, então compile-a.
# Adicione <code>nocompress 1</code> e <code>normal 1</code> para o <texture filename>.txt na mesma pasta que sua textura, então compile-a.
=== Implementação ===
=== Implementação ===
Normal maps pode ser geradas da basetexture, usando o Sobel Operator, por amostragem do brilho HSB de cada pixel e pixel adjacente para determinar a escala dos valores de matiz e saturação de saída que são posteriormente convertidos para RGB para a operação SetPixel.
<code>
Bitmap image = (Bitmap) Bitmap.FromFile(@"yourpath/yourimage.jpg");
int w = image.Width - 1;
int h = image.Height - 1;
float sample_l;
float sample_r;
float sample_u;
float sample_d;
float x_vector;
float y_vector;
Bitmap normal = new Bitmap(image.Width, image.Height);
for (int y = 0; y < w + 1; y++)
{
for (int x = 0; x < h + 1; x++)
{
if (x > 0) { sample_l = image.GetPixel(x - 1, y).GetBrightness(); }
else { sample_l = image.GetPixel(x, y).GetBrightness(); }
if (x < w) { sample_r = image.GetPixel(x + 1, y).GetBrightness(); }
else { sample_r = image.GetPixel(x, y).GetBrightness(); }
if (y > 1) { sample_u = image.GetPixel(x, y - 1).GetBrightness(); }
else { sample_u = image.GetPixel(x, y).GetBrightness(); }
if (y < h) { sample_d = image.GetPixel(x, y + 1).GetBrightness(); }
else { sample_d = image.GetPixel(x, y).GetBrightness(); }
x_vector = (((sample_l - sample_r) + 1) * .5f) * 255;
y_vector = (((sample_u - sample_d) + 1) * .5f) * 255;
Color col = Color.FromArgb(255, (int)x_vector, (int)y_vector, 255);
normal.SetPixel(x, y, col);
}
}
</code>
Veja {{L|ent|$bumpmap}}.
Veja {{L|ent|$bumpmap}}.



Latest revision as of 17:52, 10 September 2024

English (en)Español (es)Français (fr)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
O albedo de um material (esquerda) comparado ao seu bump map.
O material acima dentro do jogo.

Texturas chamadas Bump Maps, ou Normal Maps são usadas para simular detalhes tridimensional em uma superfície bidimensional manipulando a como a iluminação.

Note.pngNotar:Props estáticos usando bump maps não podem ter iluminação per-vertex, exceto em csgo(en) e Strata Source(en). $lightmap(en) também e incompatível com $bumpmap(en).
Note.pngNotar:Bump maps não podem ser usadas como texturas decal, exceto em csgo(en) e Strata Source(en). Em ordem para que esses funcionem corretamente, a superfície que eles são aplicadas devem também conter uma bumpmap.

Formatação

Cada pixel em uma bump map contem as coordenadas (x, y, z) que definem o vector(en) normal(en)izado.

Por causa disso cada canal de cor em uma bump map tem um proposito:

Red
Voltado para a horizontal (eixo X).
  • 0 = esquerda
  • 128 = para a frente, ou encarando o espectador
  • 255 = direita
Green
Voltado para a vertical (eixo Y).
  • 0 = cima
  • 128 = para a frente, ou encarando o espectador
  • 255 = baixo
Blue
Altura (eixo Z).
  • 0 = voltado para 'dentro' da textura, longe do observador. Este é um valor 'ruim'. Qualquer coisa abaixo de 128 significa que a superfície deve estar voltada para longe do jogador, o que não é possível.
  • 128 = profundidade máxima capaz de receber luz dinâmica. É uma má ideia ir há baixo disto.
  • 255 = voltado para fora da textura em direção ao observador.
Note.pngNotar:Uma bump map plana deve ser [128, 128, 255]. dev/flat_normal e uma textura bump map presente em todos os jogos.

Os três canais representam um vector normalizado para cada pixel que representa a direção que cada pixel estar virada no espaço 3D. Isto permite que a engine gere sombras e destaques em uma superfície bidimensional, ou dar um modelo 3D mais detalhe. Uma bump map e grandemente inútil para superfícies bem planas, tipo superfícies suaves como concreto ou metal, mais as vezes ate concreto suave tem profundidade o suficiente para fazer uma valer a pena, especialmente se usada em conjunto com um cubemap(en).

Normalmap.gif

Criação

Uma bump map deve ser renderizada em um espaço Tangente e fazer uso das direções do vector X+ Y- Z+.

Note.pngNotar:Há basicamente apenas duas regras para normal maps: DirectX(en) e OpenGL(en). A interpretação deles de canais verde são opostas. Source(en) usa o primeiro, enquanto Source 2(en) usa o segundo. Assim, os canais verde talvez tenham de ser invertido dependendo do programa que usado para cria-la.

Programas

Exemplo de Bump maps criadas por diversos programas.

Vários programas podem automatizar a criação de bump maps, seja por analise de imagens ou usando geometria 3D que o usuário crie.

2D
Photoshop ou Paint Shop Pro(en)
Substance Designer
O GIMP(en)
nDo
Filter Forge
XBLAH's Modding Tool(en)
nJob
3D
XSI(en)
ZBrush(en)
Lightwave(en)
3ds Max(en)
Maya(en)
Blender(en)
Materialize(en)
NVIDIA Melody
Cinema 4D
NormalMapper(en)
xNormal
Outros
NormalMap Online: Um website para a geração de normal maps online.
SSBump Generator 5.3: Apesar do nome, ele também pode ser usado para gerar bumpmaps, não apenas self-shadowing bump maps(en).
Substance B2M3: Anteriormente conhecido como BitMap2Material.
InsaneBump: Feito para ser especialmente uma alternativa gratuita para o agora substituído programa "CrazyBump" (pode acabar alertando o antivírus devido à incompatibilidade)

Conversão

No VTFEdit(en)

Quando convertendo sua textura:

  1. Escolha o formato de sua imagem. Formatos descomprimidos como BGR888 são de alta qualidade quando comparada com formatos comprimidos como DXT1, mas tenha cuidado com o tamanho do arquivo.
  2. Cheque a caixa "Normal map" na lista de flags da textura após a importação ser concluída. Está cerca de 1/5 do caminho para baixo na lista.
Tip.pngDica:VTFEdit pode gerar bump maps automaticamente. Veja o canto inferior direito da tela de importação.

Em Vtex(en)

  1. Salve suas normal maps como TGA(en). De a elas um nome que acabe em _normal. O _normal no final do nome ira afetar como o Vtex(en) converte-as. Para uma parede de tijolo como exemplo, nos nomearíamos o arquivo como brickwall_normal.tga.
  2. Adicione nocompress 1 e normal 1 para o <texture filename>.txt na mesma pasta que sua textura, então compile-a.

Implementação

Veja $bumpmap(en).

Veja também