¿Qué sistema de coordenadas es el vector normal calculado a partir de la altura? -- pengl campo con textures campo con shader campo con heightmap camp Relacionados El problema

which coordinate system the normal vector calculated from height map in?


1
vote

problema

Español

He leído mucho material sobre el mapa de altura y el mapa normal, y tiene muchas preguntas:

Podemos generar un mapa normal de HeightMap:

Si tenemos en la dirección de S y T:

  S(i,j)= <1,0,aH(i+1,j)−aH(i−1,j)> T(i,j)= <0,1,aH(i,j+1)−aH(i,j−1)>   

Entonces podemos calcular el valor normal N:

  N(i,j)= (S(i,j) x T(i,j))normalize()   

Luego, mapeamos (NX, NY, NZ) a (r, g, b) Este es el método que usamos para generar un mapa normal desde la altura.

Intenté esto con varios mapas de altura y difusión (convertir el difuso a escala de grises como altura). Los simples pueden proporcionar un buen mapa relativo normal. Una vez que la imagen se vuelve más compleja, el resultado es muy malo.

Mis preguntas son:

  • ¿En qué sistema de coordenadas es este vector normal?

    Siento que está justo en la superficie del objeto y señala lo normal. ¿Es este el llamado espacio 'TBN'?

    Pero no hay información de T y B aquí.

  • Si T es el espacio tangente, entonces para diferentes triángulos, tendremos diferentes t, por lo que el triángulo diferente tendría un vector T / B / N diferente?

  • ¿Cómo calculo TBN del mapa normal? Estoy un poco confundido leyendo el libro y miro esta matriz:

      s1,t1 = < s1 − s0,t1 − t0 > s2,t2 = < s2 − s0,t2 − t0 >     | Tx Ty Tz |              | s1 t1 | | Q1x Q1y Q1z |    | Bx By Bz | = inverse of | s2 t2 | | Q2x Q2y Q2z |   

    ¿Qué significa este S2 y S1, lo conozco (Q1x Q1Y Q1Z), son el valor (x, y, z) (R, G, B) del mapa normal, significa S2 y S1? La ubicación (x, y), la ubicación del píxel en el mapa normal?

    ingrese la descripción de la imagen aquí

Original en ingles

I have read a lot of material about heightmap and normal map, and have many questions:

We can generate a normal map from heightmap:

If we have in the S and T direction:

S(i,j)= <1,0,aH(i+1,j)xe2x88x92aH(ixe2x88x921,j)> T(i,j)= <0,1,aH(i,j+1)xe2x88x92aH(i,jxe2x88x921)> 

then we can calculate normal value N:

N(i,j)= (S(i,j) x T(i,j))normalize() 

then we map (Nx,Ny,Nz) to (r,g,b) this is the method we use to generate normal map from heightmap.

I tried this with several heightmap and diffuse map(convert the diffuse to grayscale as heightmap). Simple ones can provide relative good normal map. Once the image gets more complex, the result is very bad.

My questions are:

  • Which coordinate system is this normal vector in?

    I feel it is just at the surface of the object and points out to the normal. Is this the so-called 'TBN' space?

    But there's no T and B information occurred here.

  • If t is the tangent space, then for different triangles, we will have different t, so different triangle would have a different T/B/N vector?

  • How do I calculate TBN from normal map? I'm a little confused reading the book and look at this matrix:

    s1,t1 = < s1 xe2x88x92 s0,t1 xe2x88x92 t0 > s2,t2 = < s2 xe2x88x92 s0,t2 xe2x88x92 t0 >     | Tx Ty Tz |              | s1 t1 | | Q1x Q1y Q1z |    | Bx By Bz | = inverse of | s2 t2 | | Q2x Q2y Q2z | 

    What does this s2 and s1 stands for, I know (Q1x Q1y Q1z), are they the (x,y,z) also (r,g,b) value from the normal map, does s2 and s1 stands for the (x,y) location, the pixel location on the normal map?

    enter image description here

           
       
       

Lista de respuestas


Relacionados problema

-2  ¿Cómo obtener el valor Hight (INT16) de nuevo a FORMULARIO RGB?  ( How to get hight int16 value back to rgb form ) 
Tengo una matriz [Ancho * altura * de altura], que sostiene la altura del terreno, las cargué forman un archivo directamente como INT16 *. Necesito escribir...

0  Artefactos durante la generación de Mapa de Altura usando fractal de estilo plasmático  ( Artefacts during heightmap generation using plasma style fractal ) 
He pasado unas pocas horas de hoy a investigar cómo la generación aleatoria terreno tiende a hacer y después de leer sobre el fractal de plasma (desplazamient...

0  Implementando un shader de 32 bits heightmap vértice en tresjs  ( Implementing a 32 bit heightmap vertex shader in threejs ) 
Estoy intentando reutilizar el ejemplo de shader de altura de altura se encontró aquí en uno que funcionará con 32 bits de precisión en lugar de 8. El códig...

1  Algoritmo para calcular las coordenadas de textura de textura en el modelo 3D generado en base a la altura del mapa  ( Algorithm for calculating texture tile coordinates in 3d model generated based o ) 
Estoy convirtiendo el mapa de altura en el modelo 3D, tengo una pequeña textura que significaba representar 4 puntos (I.E. 2 triángulos). El problema es una t...

2  Hacer textura de mapa de altura sin fisuras para esfera (planeta)  ( Make seamless height map texture for sphere planet ) 
Estoy tratando de generar mapa de altura para el planeta esférico con el ruido perlín. ¿Cómo puedo hacerlo con bordes de izquierda / derecha sin costuras? Ali...

0  Pasando el archivo SRTM * .HGT como Texture to OpenGL Shader da como resultado una imagen sesgada  ( Passing srtm hgt file as texture to opengl shader results in skewed image ) 
Estoy escribiendo el renderizador de terreno que interpreta los archivos NASA SRTM * .HGT para obtener datos de altura. Implementé la técnica de LOD que se de...

1  LWJJGL ¿Cómo simplificar el mapa de altura para obtener fps más altos?  ( Lwjgl how to simplify heightmap to get higher fps ) 
Estoy un poco decepcionado por los fps de mi juego. Todavía estoy al comienzo del desarrollo del juego. Cuando comencé mi juego primero, obtuve alrededor de 3...

0  Nivelando una carretera en un mapa de altura de terreno  ( Leveling a road in a terrain height map ) 
Supongamos que tenemos un mapa de altura que representa la elevación del terreno en forma de una imagen donde cada píxel indica la altura. Supongamos que se u...

0  Promedio normal de altura  ( Normal averaging of heightmap ) 
Tengo el siguiente código para calcular las normales de MAPTAP void CalcMapNormals(HeightMap * map, Vec3f normals[]) { int dst, i, j, right, bottom; Ve...

-1  Cómo importar un mapa de altura en WebGL  ( How to import a height map in webgl ) 
Sé que en la teoría, debe encontrar primero las coordenadas en el mapa de altura como (x = 9988777669 ) y la coordenada y y y ( 99887776610 ) y después de ob...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos