Pt-br/Bump map: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Page creation)
 
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{translate}}{{wip}}
{{LanguageBar}}
{{LanguageBar}}


[[File:Brickwall021a normalcompare.jpg|thumb|200px|A material's [[albedo]] (left) compared to its 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|The above material in-game.]]
[[File:Example of bump mapping.jpg|thumb|200px|O material acima dentro do jogo.]]


Textures often called '''Bump Maps''', or '''Normal Maps''' are used to simulate three-dimensional details on a two-dimensional surface by manipulating its lighting.
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|Static props using bump maps can not be lit per-vertex, except in {{csgobranch}}{{strata}}. [[$lightmap]] is also incompatible with [[$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 cannot be used on decal textures, except in {{csgobranch}}{{strata}}. In order for these to function properly, the surface that they are placed on must also have a 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.}}


== Format ==
== Formatação ==
 
Cada pixel em uma bump map contem as coordenadas (x, y, z) que definem o {{L|vector}} {{L|normal}}izado.
Each pixel in a bump map contains the (x, y, z) coordinates that define a [[normal]]ized [[vector]].
 
Because of this each color channel in a bump map has a meaning:


Por causa disso cada canal de cor em uma bump map tem um proposito:
; Red
; Red
: Horizontal facing (X axis)
: Voltado para a horizontal (eixo X).
:* 0 = left
:* 0 = esquerda
:* 128 = forward, or facing viewer
:* 128 = para a frente, ou encarando o espectador
:* 255 = right
:* 255 = direita
; Green
; Green
: Vertical facing (Y axis)
: Voltado para a vertical (eixo Y).
:* 0 = up
:* 0 = cima
:* 128 = forward, or facing viewer
:* 128 = para a frente, ou encarando o espectador
:* 255 = down
:* 255 = baixo
; Blue
; Blue
: Height (Z axis).
: Altura (eixo Z).
:* 0 = facing 'in' to the texture, away from the viewer. This is a 'bad' value. Anything under 128 means that the surface should be facing away from the player, which is not possible.
:* 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 = maximum depth capable of receiving dynamic light. It's a bad idea to go under this.
:* 128 = profundidade máxima capaz de receber luz dinâmica. É uma má ideia ir há baixo disto.
:* 255 = facing 'out' of the texture towards the viewer.
:* 255 = voltado para fora da textura em direção ao observador.
 
 
{{note|A flat bump map should be [128, 128, 255]. <code>dev/flat_normal</code> is a flat bump map present in every game.}}


The three channels represent a normal vector for every pixel which represents the direction that the pixel is facing in 3D space. This allows the engine to generate shadows and highlights on a two-dimensional surface, or give a 3D model more detail.
{{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.}}


A bump map is largely useless for really flat surfaces like smooth concrete or metal, but even smooth concrete sometimes has enough depth to it to make one worthwhile, especially if used in conjunction with a [[cubemap]].
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}}.


[[file:normalmap.gif]]
[[file:normalmap.gif]]


== Creation ==
== Criação ==
 
Uma bump map deve ser renderizada em um espaço Tangente e fazer uso das direções do vector X+ Y- Z+.
A bump map should be rendered in Tangent space and use vector directions X+ Y- Z+.
 
{{note|There are basically two sets of rules for normal maps: [[DirectX]] and [[OpenGL]]. Their interpretation of green channels are opposite. [[Source]] takes the former, whereas [[Source 2]] takes the latter. Thus, the green channel may need to be inverted depending on the software used to create it. }}
 
=== Programs ===


[[File:Test_bump.jpg|thumb|600px|Bump maps as created by various programs.]]
{{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. }}


Various programs can automate the creation of bump maps, either by image analysis or by using 3D geometry the user provides.
=== 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.
;2D
;2D
:[[Normal Map Creation in Photoshop or Paint Shop Pro|Photoshop or Paint Shop Pro]]
:{{L|Normal Map Creation in Photoshop or Paint Shop Pro|Photoshop ou Paint Shop Pro}}
:[http://www.youtube.com/watch?v=WsFe-E-33IQ Substance Designer]
:[http://www.youtube.com/watch?v=WsFe-E-33IQ Substance Designer]
:[[Normal Map Creation in The GIMP|The GIMP]]
:{{L|Normal Map Creation in The GIMP|O GIMP}}
:[http://www.youtube.com/watch?v=xDZDWvTUz-c nDo]
:[http://www.youtube.com/watch?v=xDZDWvTUz-c nDo]
:[http://filterforge.com/filters/8774.html Filter Forge]
:[http://filterforge.com/filters/8774.html Filter Forge]
:{{Xblahmt|4}}
:{{L|XBLAH's Modding Tool}}
:[https://charles.hollemeersch.net/njob/ nJob]
:[https://charles.hollemeersch.net/njob/ nJob]
;3D
;3D
:[[Normal Map Creation in XSI|XSI]]
:{{L|Normal Map Creation in XSI|XSI}}
:[[Normal Map Creation in ZBrush|ZBrush]]
:{{L|Normal Map Creation in ZBrush|ZBrush}}
:[[Normal Map Creation in Lightwave|Lightwave]]
:{{L|Normal Map Creation in Lightwave|Lightwave}}
:[[Normal Map Creation in 3ds Max|3ds Max]]
:{{L|Normal Map Creation in 3ds Max|3ds Max}}
:[[Normal Map Creation in Maya|Maya]]
:{{L|Normal Map Creation in Maya|Maya}}
:[[Normal Map Creation in Blender|Blender]]
:{{L|Normal Map Creation in Blender|Blender}}
:[[Materialize]]
:{{L|Materialize}}
:[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]
:[[NormalMapper]]
:{{L|NormalMapper}}
:[http://xnormal.net/ xNormal]
:[http://xnormal.net/ xNormal]
;Other
;Outros
:[https://cpetry.github.io/NormalMap-Online/ NormalMap Online]: A website for generating normal maps online.
:[https://cpetry.github.io/NormalMap-Online/ NormalMap Online]: Um website para a geração de normal maps online.
:[https://sourceforge.net/projects/ssbumpgenerator/ SSBump Generator 5.3]: Despite the name, it can also be used to generate bumpmaps, not just [[$ssbump|self-shadowing bump maps]].
:[https://sourceforge.net/projects/ssbumpgenerator/ SSBump Generator 5.3]: Apesar do nome, ele também pode ser usado para gerar bumpmaps, não apenas {{L|$ssbump|self-shadowing bump maps}}.
:[http://store.steampowered.com/app/325910/ Substance B2M3]: Previously known as BitMap2Material.
:[http://store.steampowered.com/app/325910/ Substance B2M3]: Anteriormente conhecido como BitMap2Material.
:[https://sites.google.com/site/ccdsurgeon/download/ InsaneBump]: Specifically made to be a free alternative to the now-superseded software "CrazyBump" (may trip antiviruses due to incompatibility)
:[https://sites.google.com/site/ccdsurgeon/download/ InsaneBump]: Feito para ser especialmente uma alternativa gratuita para o agora substituído programa "CrazyBump" (pode acabar alertando o antivírus devido à incompatibilidade)
 
=== Conversion ===
 
==== In [[VTFEdit]] ====
 
When converting your texture:
 
# Choose your image format. Uncompressed formats like BGR888 are higher-quality than compressed formats like DXT1, but be wary of file size.
# Check the "Normal map" box in the texture's flags list after the import is complete. It's about 1/5 of the way down the list.
 
{{tip|VTFEdit can automatically generate bump maps. See the bottom-right of the import screen.}}


==== In [[Vtex (Source 1)|Vtex]] ====
=== Conversão ===


# Save your normal map as a [[TGA]]. Give it a name that ends in ''_normal''. The ''_normal'' at the end of the name will affect how [[Vtex (Source 1)|Vtex]] converts it. For the brick wall example, we would name the file <code>brickwall_normal.tga</code>.
==== No {{L|VTFEdit}} ====
# Add <code>nocompress 1</code> and <code>normal 1</code> to <texture filename>.txt in the same folder as your texture, then compile.
Quando convertendo sua textura:
# 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.


=== Implementation ===
{{tip|VTFEdit pode gerar bump maps automaticamente. Veja o canto inferior direito da tela de importação.}}


Normal maps can be generated from a basetexture, using the Sobel Operator, by sampling the HSB Brightness of each pixel and adjoining pixel to determine the scale of the output Hue and Saturation values that are subsequently converted to RGB for the SetPixel operation.
==== Em {{L|Vtex (Source 1)|Vtex}} ====
<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>.
    Bitmap image = (Bitmap) Bitmap.FromFile(@"yourpath/yourimage.jpg");
# 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.
    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>
See {{ent|$bumpmap}}.


==See also==
=== Implementação ===
Veja {{L|ent|$bumpmap}}.


*{{ent|$ssbump}}: creation and usage of Valve's new self-shadowing bump maps.
== Veja também==
*[http://planetpixelemporium.com/tutorialpages/normal.html An old article that explains normal mapping quite well]
*{{L|ent|$ssbump}}: criação e uso do novo bump maps self-shadowing da Valve.
*[http://wiki.polycount.com/wiki/Normal_map Polycount wiki page about normal maps]
*[http://planetpixelemporium.com/tutorialpages/normal.html Um artigo antigo que explica muito bem normal mapping]
*[[Creating a Material]]
*[http://wiki.polycount.com/wiki/Normal_map Página wiki do Polycount sobre normal maps]
*{{L|Creating a Material}}


[[Category:Material System]]
{{ACategory|Material System}}
[[Category:Glossary]]
{{ACategory|Glossary}}
[[Category:Tutorials]]
{{ACategory|Tutorials}}

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