본문 바로가기

DirectX/3D

파생 탄젠트 공간의 매트릭스

Author Jakob Gath (Hel) 저자 야콥의 Gath (여)
Edited by Søren Dreijer (Halloko) ) Halloko 수정됨하여 소렌의 Dreijer (

Contents 내용

1. 1. Preface 머리말
2. 2. Disclaimer 면책 조항
3. 3. What you need to know on beforehand 무슨 사전에 알 필요가
4. 4. Introduction 소개
5. 5. Theory 이론
5.1. 5.1. A Practical Example 실질적인 예를
5.2. 5.2. The difference between texture space and tangent space 텍스처 공간과 탄젠트 공간의 차이
5.3. 5.3. Choosing the right type of geometry 기하학의 권리 유형을 선택
6. 6. Derivation 유도
6.1.a Exploiting the Properties of a Orthonormal Matrix 의 속성을 이용하고 6.1.a 매트릭스 Orthonormal
6.1.b The inverted tangent space matrix 거꾸로 탄젠트 공간 매트릭스 6.1.b
7. 7. Analysis of the derived matrix 파생 모체의 분석
8. 8. Conclusion 결론
9. 9. References 참고 문헌

1. 1. Preface 머리말

Have you ever wondered what this tangent space everybody's talking about is? 이다 해 무슨 말을 궁금해 본 적 이건 뭐지 모두 탄젠트 공간? Or perhaps you've grown tired of everybody making use of a matrix you don't even know where comes from in the first place! 아니면 당신은 모두 당신이 알지도 못하는 행렬을 사용하는 것도 지겨워 자랐구나 어디에 첫번째 장소에서 온다!

Look no further! 더 이상 봐! It's time for you to dig down in those nitty-gritty's and find out where it all comes from. 그 핵심 견실한의 아래로 파고를위한 다 어디서 나오 알아낼 때가.

Put on your helmet and get ready for a wild ride while we derive the tangent space matrix . 헬멧 당신의 입어 및 매트릭스 공간 탄젠트 우리가 파생하는 동안 좀 태워 준비 야생.

2. 2. Disclaimer 면책 조항

Don't take everything for granted. 부여에 대한 모든것을 받아들이지 마라. Don't just blindly believe in everything that's said. 그냥 맹목적으로 말했다 전부 믿지 않아요. If you think something looks weird in the article don't just skip it but instead question it and confront the authors! 당신은 뭔가 건너뛰길하지 않는 문서에 이상한 보인다고 생각한다면 대신에 질문을하고 작가 직면!

3. 3. What you need to know on beforehand 무슨 사전에 알 필요가

  • Basic knowledge about vectors and their operations 벡터와 그 운영에 관한 기초 지식
  • What matrices are and a basic understanding of the operations performed on them 무슨 매트릭스가 그들에 수행한 작업의 기본적인 이해
  • Basic OpenGL knowledge 기본 OpenGL과 지식

  • 4. 4. Introduction 소개

    As most graphics programmers probably know diffuse lighting is calculated by performing a dot product between a surface normal and a light vector (if you don't know what we're talking about have a look at [1]. For this dot product to make sense it's required that these two vectors exist in the same space (coordinate system). Usually we choose the surface's coordinate system (in which the surface normals exist) since this means we only have to convert the light vector for each vertex on the surface into this space which means the light vector can be linearly interpolated across the surface. Another option would have been to convert all the surface normals (and there could be a lot ) to the light vector's coordinate system. You probably see which method is preferable! 대부분의 그래픽 프로그래머들은 아마 확산 조명은 우리가에 대해서 [1]에서 봐야 무슨 말을하는지 모를 경우는 표면 정상과 가벼운 벡터 (사이의 제품을 도트 수행하여 계산됩니다 알다시피.이 만드는 제품을 도트 위해 으로 의미 표면 (그것은의 필요한 공간 같은 것을 두 벡터에 존재하는 좌표) 이후에 빛을 벡터를 각 버텍스이게 우리가 의미만을 가지고 변환 존재하는 시스템을 normals)가. 표면 어떤 체제 (좌표로 표면의 우리가 선택한 보통 가벼운 벡터를이 공간은 의미 표면 수를 통해 보정해야 선형. 또 다른 옵션은 시스템의 좌표의 벡터 빛을 많이)로 표면 normals가있을 수 (그리고 것입되었습니다로 전환 모든. 당신은 아마 바람직 방법입니다보세요!

    The purpose of this article is to find the matrix that enables us to convert a set of coordinates (eg the light vector's coordinates) from world space (in OpenGL, the modelview matrix) to tangent space . 이 문서의 목적은 탄젠트 공간이다)에 매트릭스 찾을 수 modelview는 OpenGL에 (빛의 세계 벡터의 좌표)에서 공간 (예 수의 우리로 변환 집합을 좌표로하는 매트릭스를. We'll refer to this matrix as the Tangent Space Matrix ( TSM ). 우리는) TSM (게요 매트릭스 스페이스를 참조이 행렬로 탄젠트.

    5. 5. Theory 이론

    For most graphics APIs world space is defined by the three basis vectors, 대부분의 그래픽 API는 세계 공간, 세 개의 기준 벡터에 의해 정의됩니다

    These are also known as the columns of the identity matrix. 이들은 또한 단위 행렬의 열의로 알려져 있습니다. If we multiply a vector by the identity matrix it will be converted to the same coordinate system. 우리는 정체성 그것이 좌표계 동일로 변환됩니다 행렬에 의해 벡터를 곱하면.


    5.1. 5.1. A Practical Example 실질적인 예를

    Let's compare the previous section with something that most OpenGL users should be familiar with: the modelview. modelview : 대부분의 사용자는 OpenGL을 잘 알고 있어야한다고 뭔가 이전 섹션을 비교해 보자.

    glMatrixMode(GL_MODELVIEW); (GL_MODELVIEW) glMatrixMode;
    glLoadIdentity(); glLoadIdentity ();
    
    glBegin(...); glBegin의 (...);
    glVertex*(...); glVertex *(...);
    ... ...
    glEnd(); glEnd ();
    

    In the example code above the modelview matrix is set to the identity matrix. modelview 매트릭스 위의 예제 코드에서 단위 행렬로 설정됩니다. When rendering the vertices following the glBegin() call, their position won't be changed (no translation or rotation is performed) since they're multiplied by the identity matrix. (변경되지 않은 것입니다) 전화, 그들의 입장은 번역이나 매트릭스의 신원에 의해 회전이 수행됩니다)부터있어 그들이 곱한 (glBegin 때 다음과 같은 렌더링 꼭지점합니다. This should be common knowledge to all OpenGL users. 이것은 모든 OpenGL 사용자에게 일반적인 지식을하여야한다.

    5.2. 5.2. The difference between texture space and tangent space 텍스처 공간과 탄젠트 공간의 차이

    Texture space: 텍스처 공간 :

    The dimension of texture space is given by the following OpenGL constants 텍스처 공간의 차원은 다음과 OpenGL을 상수로 주어진다

    GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D GL_TEXTURE_1D는 GL_TEXTURE_2D, GL_TEXTURE_3D
    

    The texture coordinates are referred to as (S, T, R). These coordinates are manipulated by a texture matrix . 질감)가 연구, 티, 좌표가 성도착으로 (들. 이들은 매트릭스의 텍스처에 의해 좌표가 조작.

    glMatrixMode(GL_TEXTURE); (GL_TEXTURE) glMatrixMode;
    glLoadIdentity(); glLoadIdentity ();
    
    glBegin(...); glBegin의 (...);
    glTexCoord*(...); glTexCoord *(...);
    ... ...
    glEnd(); glEnd ();
    

    In the example code above the texture matrix is set to the identity matrix (which it is by default). 텍스처 매트릭스 위의 예제 코드는 단위 행렬 (이것은 기본적으로있는)으로 설정됩니다. This will in turn mean that the specified texture coordinates (when rendering) won't be changed (translated or rotated). 이것은에 지정된 질감 (렌더링 할 때) (번역 또는 회전) 변경되지 않습니다 좌표 뜻으로 바뀔 것이다.

    Tangent space: 탄젠트 공간 :

    Since our use of the tangent space concerns a limited plane (in the shape of a polygon) the corresponding normal map will be of the dimension 2 (in other words, a 2D map). 탄젠트 공간을 우리의 사용 (다각형의 형태로) 제한된 비행기를 우려 때문에 해당 일반지도 (즉, 2 차원지도의 경우) 차원이 될 것입니다. Essentially, this means that each vertex will have two texture coordinates specified - an S and a T component. 기본적으로, 이것은 각 버텍스 두 개의 텍스처 좌표를 지정해야한다는 뜻입니다 - S 및 T의 구성 요소.
    A normal map is made up so that there for each texel is specified a normal to that texel's surface. 각 texel는 그 texel의 표면에 정상을 지정을위한 평범한지도 저기 있도록 구성되어 있습니다. Those normals are said to exist in tangent space for which the dimension is 3. 그 normals은 3 차원이되는 공간이 있다고하는 존재 탄젠트 인치

    The axes for the tangent space directly depend on the geometry of the polygon and the corresponding texture coordinates, which are described in the following. 탄젠트 공간 축에 직접 아래에서 설명하는 해당 텍스처 좌표 다각형의 기하학과,에 따라 다릅니다.



    The red, green and blue arrows on the left of figure 1 constitute world space (the axes aren't named since their names don't matter in this discussion, nor do their directions). 그림 1의 왼쪽에 빨강, 녹색 및 파란색 화살표 (그들의 이름이 토론에 문제가되지 않기 때문에 도끼는, 이름이되지 않으며 그들의 지시를 할) 세계의 공간을 구성합니다. The three other axes to the right in figure 1 constitute the basis vectors for the triangle's tangent space. 그림 1의 오른쪽에있는 세 가지 다른 축 삼각형의 탄젠트 공간을위한 기초 벡터를 구성합니다. v and c denote the vertex and texture coordinates for a given geometric point, respectively. 브이와 C의 상징 버텍스와 텍스처는 각각 주어진 기하학적 지점 좌표.

    As mentioned previously, we want to determine the matrix that transforms a vector in world space (the three colored axes) to tangent space (the three black axes). 이전에 언급했듯이, 우리는 그 탄젠트 공간 (흑인 세 축)에 세계 공간 (세 유색 축)에 벡터를 변환 행렬을 확인하려면.

    5.3. 5.3. Choosing the right type of geometry 기하학의 권리 유형을 선택

    In figure 1 we've drawn a polygon in the shape of a triangle. 그림 1에서 우리는 삼각형 모양의 다각형을 그려 놨거든요. By choosing this exact type of geometry the matrix we're seeking will be identical for all three vertices since they will be in the same plane. 그들은 같은 비행기에있을 것입니다 때문에 기하학이 정확한 유형을 선택하여 우리가 추구하고 매트릭스 세 꼭지점에 동일해야합니다.

    "three points in 3D space is the minimum number necessary to create a plane" "3D 공간에서 세 가지 문제점이 비행기는 최소 만들 번호 필요"

    This means that if we're using a type of geometry which contains arbitrary polygons or even quads one would have to calculate a tangent space matrix for every single vertex since we don't know if those vertices lie on the same plane (which they in most cases won't). 즉 우리가 임의 다각형을 포함 하나도 그 꼭지점은 같은 비행기에 거짓말을한다면 우리가 알고있는하지 않기 때문에 (이 그들의 탄젠트 공간마다 하나의 정점에 행렬 계산했을 quads 기하학의 유형을 사용하는 경우 대부분의 경우)이되지 않습니다.

    "if the amount of vertices that define a geometric surface don't exist in the same plane, one has to calculate a tangent space matrix for every single vertex" "버텍스 같은 존재하지 않는 기하학적 표면을 정의하는 꼭지점의 경우 금액은 비행기, 단일마다 하나했습니다 매트릭스 공간을 계산 탄젠트"

    The calculated matrices will then be linearly interpolated across the rendered surface. By now it should be quite clear that utilizing triangles when dealing with the tangent space matrix is quite an optimization! 계산된 매트릭스는 표면됩니다 렌더링 후 똑같은 선형 보정. 최적화함으로써 꽤하는 공간 매트릭스 탄젠트 삼각형을 활용한 것이 분명 꽤 지금은해야 상대와 함께!

    6. 6. Derivation 유도

    Goal: The basis vectors of the tangent space matrix are to be found 목표 : 탄젠트 공간 매트릭스 기초 벡터의 발견됩니다




    Let's write out what we know by now: 이제 우리가 지금 알고있는 걸 쓰다 보자 :

    • vertex coordinates: v1, v2 and v3 exist in world space 버텍스 좌표 : v1이나, v2를 그리고 v3는 세계 공간에 존재
    • texture coordinates: c1, c2, c3 exist in texture space 텍스처 좌표 : c1은, C2 상태 래요 c3는 텍스처 공간에 존재

    We further note that, 우리는 또한,주의

    • The vector from v1 to v2 has the same direction in world space as the vector from c1 to c2 in texture space. v2를 위해 v1이나에서 벡터 텍스처 공간에서 C2 상태 래요로 c1에서 벡터로 세계 공간에서 같은 방향 있습니다.
    • The vector from v1 to v3 has the same direction in world space as the vector from c1 to c3 in texture space. v3로 v1이나에서 벡터 텍스처 공간에 c3로 c1에서 벡터로 세계 공간에서 같은 방향 있습니다.

    Some notations: 어떤 표기법 :

    • We denote the vector from v1 to v2: 우리는 v2를 v1이나에서 벡터를 나타내는 :
    • We denote the vector from c1 to c2: 우리는 C2 상태 래요 c1에서 벡터를 나타내는 :

    • We denote the vector from v1 to v3: 우리는 v1이나 v3에서 벡터를 나타내는 :
    • We denote the vector from c1 to c3: 우리는 c3 c1에서 벡터를 나타내는 :

    The vectors are denoted by the 벡터는로 표시 아르 (delta) sign since the vector is, essentially, the difference between two sets of numbers. (델타) 벡터는, 본질적으로, 숫자의 두 세트의 차이이기 때문에 로그인하세요.

    The components of a vector are referred to as: 벡터의 구성 요소로 언급 위치 :



    The unknown basis vectors for the tangent space matrix will be referred to as T (tangent), B (binormal) and N (normal). 탄젠트 공간 매트릭스에 대한 알 수없는 기초 벡터는 언급되므로 (탄젠트), B 조 (binormal)와 N (일반).

    In figure 3 below the connection between a vector 벡터 사이의 연결을 아래 그림 3에 in world space and two arbitrary unknown basis vectors ( T and B ) is shown. )에서 세계 공간과이 임의의 알 수없는 기초 벡터 (T와 B 조 표시됩니다.



    From the figure it's easy to see that 그림에서 그렇게보고 쉽게 is formed as a combination of the two unknown basis vectors. 이 미지의 기초 벡터의 조합으로 형성된다.

    If we look at the connection between the vectors 우리는 벡터 사이의 관계를 보면 and , the texture vector's 1. , 텍스처 벡터의 1. coordinate, , 좌표 , will be the scalar of the basis vector T and the texture vector's 2. , 2의 기준의됩니다 스칼라 벡터 T와 텍스쳐 벡터. coordinate, , 좌표 , will be the scalar of the basis vector B , which determine the influence T and B , respectively, have on the final vector , 벡터 마지막에 있고 B는 각각이 될 것입니다 스칼라 기초 벡터 B가 T를 결정하는 영향 . .

    Like this we can set up an equation which reflects exactly this property. 이렇게 우리가 정확하게이 속성을 반영하는 방정식을 설정할 수 있습니다.

    Furthermore, there is a known connection between 또한, 사이에 알려진 연결이 없습니다 and as well 뿐만 아니라

    Hence, we have two equations with two unknowns. 그러므로 우리가이 신원 미상의 두 방정식이 있습니다. These can be set up in a system of two equations, as shown to the right in the following: 이들은 다음에 오른쪽에있는 그림이 방정식의 시스템에 설정할 수 있습니다 :



    The solution to this system is 이 시스템 솔루션입니다



    Notice that the denominator is the determinant of the coefficient matrix 공지 사항 모체가되는 계수의 결정하는 분모가있는

    If we take this a step further the solution will end up on the following form 우리는 더 이상이 단계를 맡으면 해결책은 다음 양식에 끝날 것입니다

    This results in two linearly independent basis vectors for the tangent space 탄젠트 공간이 선형적으로 독립적인 단위 벡터에이 결과를

    Now, all we need is a third vector which too is required to be linearly independent from the two others. 자, 우리가 필요한 것은 너무 선형이 다른 사람으로부터 독립하는 데 필요한 삼분의 일 벡터입니다. A cross product will do this for us 십자가 제품은 우리를 위해이 작업을 수행합니다


    The three basis vectors can then be set up in a matrix 세 개의 기준 벡터는 다음 매트릭스에서 설정할 수 있습니다

    This matrix will take any vector in tangent space and transform it into world space. 이 행렬은 탄젠트 공간에서 벡터이 소요됩니다 세계 우주로 그것을 변환.

    , which is, in fact, the direct opposite of what we want. ,입니다, 사실, 우리가 원하는 걸의 직접적인 반대 인치

    The matrix that will do the opposite job would be the inverted matrix 그 반대로 일을 할 것입니다 매트릭스는 매트릭스 반전 될 . .

    You might have noticed that the new matrix 당신은 챘있는 새로운 매트릭스 is a 3x3 matrix, which will greatly ease the calculation required to find the inverted matrix (which is probably known to skilled mathematicians). 3x3, 이는 크게는 (아마 숙련된 수학자로 알려져있는) 매트릭스 거꾸로 발견하는 데 필요한 계산을 덜어 주실 매트릭스입니다.

    6.1.a Exploiting the Properties of a Orthonormal Matrix 의 속성을 이용하고 6.1.a 매트릭스 Orthonormal

    (Section included the 15 dec. 2007) (제 12 월 포함 15. 2007)

    In most applications of the TBN matrix a certain special case is far the most present. TBN 모체 어떤 특별한 경우 대부분의 응용 프로그램에서 현재까지 가장 많이 존재합니다. It is therefore worthwhile to consider some important properties of this case. 그러므로이 사건의 몇 가지 중요한 속성을 고려하는 가치가있다. We are considering the case where the tangent and bi-tangent vectors are orthogonal, which simply means that the TBN matrix is preserving the angles between two vectors when rotating them from one space into another. 우리는 및 BI - 접선 접선 벡터는 단순히 TBN 매트릭스 또 하나의 공간에서 그들을 회전하면 두 벡터 사이의 각도를 유지있다는 것을 의미, 직교하는 경우를 고려하고 있습니다. It is often the case in computer graphics that the texture space is not squeezed relatively to the surface it is presented on, because this would reduce the samples and result in a decreased quality of the shading. 이것은 음영의 감소 품질의 샘플과 결과를 줄일 것이 때문에, 종종 텍스처 공간이 그것에 제시 표면에 상대적으로 압박이 없다는 컴퓨터 그래픽의 경우입니다.

    When the two tangent vectors are ensured to be orthogonal the TBN matrix is guaranteed to be orthonormal. 두 탄젠트 벡터는 TBN가 orthonormal 행렬로 보장되어 직교로 보장하는 경우. An orthonormal matrix has the property that its inverse is equal to its transpose. orthonormal 행렬의 반대는 전치 같다이라는 속성이 있습니다. If this is exploited the inverse tangent space matrix is already obtained and we are done. 이것은 반전 탄젠트 공간은 이미 얻은 것입니다 매트릭스 악용되면 우리가 이루어집니다. Note that the TBN matrix can be passed in its transpose form directly to the vertex shader. TBN은 모체 버텍스 쉐이더에 직접 자사의 전치 형태로 전달할 수 있습니다.

    In the next section, it is shown how to compute the the inverse matrix in a more general way, but remember that the TBN matrix is very often orthonormal and that in this case one should exploit that the transpose equals the inverse. 다음 섹션에서는, 그것은,보다 일반적인 방식으로 반전 행렬을 계산하는 방법을하지만 TBN 매트릭스 자주 orthonormal 그 하나는 전치가 반전과 상통 것을 이용해야합니다이 경우는 것을 기억 표시됩니다.

    6.1.b The inverted tangent space matrix 거꾸로 탄젠트 공간 매트릭스 6.1.b

    When the inverted matrix has to be calculated we make use of the matrix's determinant 매트릭스 거꾸로 우리가하게 계산되어야 때의 매트릭스 결정자의 사용

    The inverted matrix is given by 거꾸로 매트릭스가 주어집니다

    Notice that the positions of the negative signs are organized in a system. 공지 사항은 부정적인 신호의 위치가 시스템에 구성되어 있는지 확인합니다.
    If we ignore the negative signs for a second, the following hold true: 우리는 두 번째에 대한 부정적인 신호를 무시하면, 다음과 같은 사실이 보류 :

    • 1st row is the cross product between B and N 첫번째 행은 없음 사이에 B 및 제품 십자가
    • 2nd row is the cross product between N and T 두번째 줄은 사이에 N과 제품 십자가
    • 3rd row is the cross product between T and B 세번째 행은 B 조 사이의 T 및 제품 십자가

    We can then set all this up in a generalized expression for an inverted 3x3 matrix 그러면 거꾸로 3x3 매트릭스에 대한 일반화된 표현이 모든 것들을 설정할 수 있습니다



    qed qed

    Small Note 작은 참고 사항

    Remember that 그 기억 only needs to be calculated once! 한 번만 계산이 필요합니다!

    7. 7. Analysis of the derived matrix 파생 모체의 분석

    The tangent space matrix only needs to be recalculated if the polygon has been rotated. 탄젠트 공간이 매트릭스는 다각형 회전되었는지 다시 계산해야합니다. It should not be recalculated after a translation since the axes of the tangent space coordinate system will still have the same direction after such a transformation. 탄젠트 공간의 축 시스템이 여전히 그런 변환 후 같은 방향을 갖습니다 좌표 때문에 그것은 번역 후 다시 계산되지 않습니다.

    Let's imagine that a given surface is rotated during run-time such that the pre-calculated matrix no longer is valid. 가 주어진 표면 미리 계산된 매트릭스 더 이상 유효 같은 것을 실행 시간 동안 회전 것을 상상해 봅시다.

    Let's write out what we know to begin with: 이제 우리가 시작해야할지 무엇인지 써 드릴게요 :

    • The distance between v1, v2 and v3 as well as c1, c2 and c3 is unchanged during the rotation. c1, C2 상태 래요 및 c3뿐만 아니라 v1이나, v2가와 v3 사이의 거리가 회전하는 동안 변경되지 않은 상태입니다.
    • The vectors 벡터 and have to be updated. 이 업데이 트합니다. However, 그러나, and are left unchanged (6 subtractions). (6 subtractions) 변하지 않고 남아 있습니다.
    • The determinant 결정자 is unchanged since it depends on 그것에 따라 달라집니다 이후 변하지 and . .

    Calculation of T and B is given by a multiplication of two matrices and a constant and requires 8 operations (6 multiplications and 2 subtractions). B와 계산의 T는 일정 및 곱셈입니다 지정된 두 매트릭스와)가 필요합니다 8 작업 (6 multiplications 2 subtractions.

    The vector N is found by doing a cross product between T and B and required 9 operations (6 multiplications and 3 subtractions). 벡터 해당 없음) subtractions 3 (6 multiplications 운영되고있는 것으로 나타났습으로하는 교차 제품을 사이에 T와 B 및 필수 9.

    Calculation of the determinant 결정자의 계산 requires 17 unavoidable operations (12 multiplications, 3 subtractions and 2 additions). The three cross products BxN , NxT and TxB require 27 operations (18 multiplications and 9 subtractions). )이 필요합니다 17 피할 수없는 작업을 (12 multiplications, 3 subtractions 2 첨가. 세 십자가 제품은 BxN, NxTTxB) 필요 작업 27 (18 multiplications 9 subtractions 있습니다.

    Setting up the cross products in a matrix requires 4 operations (4 subtractions). Calculation of the inverted tangent space matrix requires 10 operations (9 multiplications and 1 division). 매트릭스 크로스 제품의 설정까지)이 필요합니다 4 작업 (4 subtractions. 행렬 계산 공간의 거꾸로 탄젠트)이 필요합니다 열 작업 (9 multiplications 1 무.

    An overview of the process is outlined in the following table. 과정의 개요는 다음 표에 설명되어 있습니다.

    Addition 또한

    Subtraction 뺄셈

    Multiplication 곱셈

    Division 분할

    Sum 합계


    - -

    6 6

    - -

    - -

    6 6

    T and B T와 B 조

    - -

    2 2

    6 6

    - -

    8 8

    N 없음

    - -

    3 3

    6 6

    - -

    9 9

    2 2

    3 3

    12 12

    - -

    17 17

    BxN , NxT and TxB BxN, NxTTxB

    - -

    9 9

    18 18

    - -

    27 27

    Setting up of 의 설정

    - -

    4 4

    - -

    - -

    4 4

    Calculation of the inverted TBN matrix 매트릭스 TBN 계산의 반전

    - -

    - -

    9 9

    1 1

    10 10

    Sum 합계

    2 2

    27 27

    51 51

    1 1

    81 81


    This is the minimum number of operations required to create a TBN matrix at run-time for the given example. 이것은 TBN에 주어진 예를 들어, 런타임에 매트릭스 만드는 데 필요한 작업의 최소 횟수입니다.

    8. 8. Conclusion 결론

    In this article we've discussed a robust approach to calculating the tangent space matrix for an arbitrary surface at run-time. 이 문서에서 우리는 탄젠트 공간은 임의의 표면에 대한 실행시 매트릭스 계산하는 강력한 접근 방식을 논의했습니다. We've tried to shed light on where this mysterious matrix comes from. It's important that one remembers to take advantage of all the shortcuts available throughout the calculation of the matrix, such as only calculating the determinant once and storing it for later use. 우리가 빛을 흘리려고 노력했습니다 곳 신비 이것이 계산 내내 매트릭스 사용 가능한 단축키 오는 모든 활용할 수 있습니다. 그것은 기억 하나가 중요한 그건 사용 매트릭스, 나중에 같은 유일한 계산으로 결정자를 위해 그것을 저장 한번하고.

    Feel free to drop us an e-mail if you need help or find something a bit unclear. 도움이 필요하거나 무언가를 조금 불분명 찾아 저희에게 전자 우편을 기탄없이 버려.

    Please refer to the article Bump Mapping using CG for example code on implementing the tangent space matrix. 문서를 참조하시기 바랍니다 사용하고 CG를 매핑 범프 매트릭스 탄젠트 공간을 구현하기위한 예제 코드.

    9. 9. References 참고 문헌

    [1] - http://www.delphi3d.net/articles/viewarticle.php?article=phong.htm [1] - http://www.delphi3d.net/articles/viewarticle.php?article=phong.htm


    'DirectX > 3D' 카테고리의 다른 글

    모션 네트워크(Motion Network) 개발 노트  (0) 2010.11.09
    DX 함수 참고사항  (0) 2010.10.25
    노말맵이란  (0) 2010.10.01
    Max Export  (0) 2010.09.27
    맥스플러그인을 위해서 우리가 반드시 알아야 할 것들을 한번  (0) 2010.09.16