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.

Jaanus Varus
fonte
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.

Shotgun Ninja
fonte
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.

RobCurr
fonte
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

Steven Stadnicki
fonte