O que são vetores normais, tangentes e binormais e como eles são usados?


47

Gostaria de descobrir as seguintes informações:

  • O que eles são?
  • Exemplo de uso no desenvolvimento de jogos (a área em que são usados)

Sobre os seguintes tipos de vetor:

  • Normal
  • Tangent
  • Binormal

Uma simples explicação centrada no desenvolvimento de jogos seria suficiente.


1
Você está fazendo muitas perguntas. É melhor você ler como os vetores funcionam. Do princípio. Também conserte sua trigonometria ao longo do caminho.
Sidar 20/03/2013

3
Achei que isso pode ser pedir muito, mas por outro lado seria bom ter essas informações juntas sob uma pergunta. Essa é também a razão pela qual pedi especificamente explicações simples.
Jaanus Varo

Respostas:


43

De um modo geral, um vetor Normal representa a direção apontando diretamente para fora de uma superfície, o que significa que é ortogonal (em ângulos de 90 graus) qualquer vetor coplanar com (no caso de uma superfície plana) ou tangente a (no caso de uma superfície não plana) a superfície em um determinado ponto.

Um vetor tangente é geralmente considerado como um vetor que existe dentro do plano da superfície (para uma superfície plana) ou que fica tangente a um ponto de referência em uma superfície curva (ou seja, se um plano plano foi construído com a mesma normal a partir do ponto de referência , o vetor tangente seria coplanar com esse plano).

O conceito de um vetor binormal é um pouco mais complexo; em computação gráfica, geralmente se refere a um vetor Bitangent (referência aqui ), que é efetivamente o "outro" vetor tangente da superfície, ortogonal ao vetor Normal e ao vetor Tangente escolhido.Normal, Tangente, Bitangente

No que diz respeito à forma como eles são calculados, isso varia dependendo da complexidade da superfície e da precisão que você deseja que o normal seja (em alguns casos, como com shaders suaves, é mais desejável calcular um normal para uma superfície aproximada, quando as informações reais de uma superfície não estão presentes), mas existem várias fórmulas generalizadas fornecidas aqui .

Em termos de onde eles ocorrem, a resposta é EM TODA PARTE . Os vetores normais são usados ​​para posicionar câmeras e objetos no espaço 3D, determinar trajetórias, reflexões e ângulos nos cálculos de física, mapear skins e texturas para modelos 3D, determinar desvios da trajetória da mira na programação de IA, para dar dicas aos shaders sobre como pontos de luz, sombra e cor em uma superfície em relação a luzes, câmera e outros objetos, etc. Eles são possivelmente uma das informações mais úteis para se ter em um ambiente 3D e também são extremamente úteis em 2D.


2
Porra, eu deveria ter adicionado uma imagem: p
RobCurr 20/13/13

Obrigado pela explicação completa! Marcado como resposta.
Jaanus Varus 21/03

2
Talvez seja útil ler este artigo sobre por que a suposição de manchas quadradas é inválida e por que tudo o que todos dizem sobre tangentes e bitangentes é praticamente falso. Ele descreve a matemática adequada que se deve usar, mas, infelizmente, não sou competente o suficiente para criar uma resposta correta .
Lars Viklund

Os vetores bitangente e binormal são equivalentes. São nomes atribuídos à mesma coisa e depende apenas do seu "ponto de vista mental" sobre qual nome usar.
Nikos

15

Vetores normais são normalmente usados ​​para cálculos de iluminação. É um vetor que deve ser perpendicular à superfície aproximada pelos vértices de uma malha. As normais são definidas em cada posição do vértice, mas podem ser calculadas de maneira diferente, dependendo de como você deseja que a luz reflita nesse vértice ou o que você deseja fazer com seus cálculos de luz no sombreador.

Os vetores tangente e binormal são vetores perpendiculares entre si e o vetor normal que essencialmente descreve a direção das coordenadas u, v da textura em relação à superfície que você está tentando renderizar. Normalmente, eles podem ser usados ​​juntamente com mapas normais, que permitem criar detalhes de iluminação sub-superficial para o seu modelo (bumpiness).

Obviamente, existem outras maneiras de utilizar esses vetores e acabei de descrever o uso médio deles. Para obter mais informações técnicas, sugiro que você compre um livro sobre computação gráfica ou explore alguns artigos na internet. Há muita informação por aí sobre isso.


4
+1 - da próxima vez; adicione uma foto.
Pieter Geerkens

9

A diferença entre a tangente e o binormal é menos clara imediatamente nas superfícies, mas isso não deve ser muito surpreendente - o binormal foi originalmente definido não para superfícies, mas para curvas , onde o conceito faz muito mais sentido (e onde ele realmente vive como um 'normal' na medida em que é ortogonal à direção do movimento, daí o nome). Para ser mais específico, dada uma curva espacial da forma p = V (t) = (V x (t), V y (t), V z (t)), então a tangente - que é um vetor apontando no direção do movimento - é dada por T u = dp / dt = (dV x / dt, dV z / dt, dV z/ dt). (Estou usando o subscrito aqui para distinguir 'não normalizado', pois não tenho meu MathJax aqui.) Então a velocidade (instantânea) ao longo da curva é apenas s = | T u |, o comprimento do vetor tangente e o vetor tangente 'normalizado' é simplesmente T = T u / s.

Então o vetor normal para a curva é a derivada do vetor tangente normalizado ao longo do tempo, N u = dT / dt; a razão pela qual a tangente normalizada é usada aqui é impedir que a velocidade ao longo da curva incline o vetor normal - você pode mostrar que, com essa definição, sempre temos TN u = 0. Observe que N u não é necessariamente um vetor unitário , mais do que Tu é; de fato, sua magnitude k = | N u | é a curvatura (instantânea) da curva no ponto dado, e o ponto p + N u é o centro do chamado círculo osculante (no ponto dado). O normal normalizado é então apenas N = N u/ k, e o bitangente B é o produto cruzado B = TxN; Como T e N são vetores unitários e são ortogonais entre si, então B também é um vetor unitário e (T, N, B) é um quadro ortogonal.

Observe que, por essa definição, o 'binormal' de uma curva está mais próximo do que pensamos ser o normal de uma superfície (é o normal do plano 'local' da curva), e o normal de uma curva está mais próximo do que pensamos como o bitangente de uma superfície.

(Esta imagem, infelizmente, não faz justiça ao conceito, mas é o melhor que pude encontrar na Web e não consigo criar minha própria ...)

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.