예. 설명하겠습니다. (에세이 쓰기에 대해 유감입니다!)
보통 정점과 법선은 모두 부동 소수점 3D 벡터로 표시되지만 그 특성상 서로 다릅니다.
좌표 공간은 출처 지오메트리를 상대 경로와 비교하여 비교 한 것입니다.
예를 들어, 1x1x1 크기의 두 개의 큐브를 정의합니다. 8 개의 꼭지점이 모두 정의 된 원점은 중심에 있습니다. 따라서 그들의 꼭짓점 좌표는 (+ -0.5, + -0.5, + -0.5)의 가능한 모든 조합입니다.
이 큐브는 비슷한 좌표를 가진 것처럼 보일 수 있지만, 지금까지는 그 좌표를 개체로만 간주했습니다. 이를 장면에 배치하려면 해당 장면에서 위치, 방향 및 크기를 정의하는 변환을 정의해야합니다. 나는 두 큐브의 정체성 변환을 적용하면
, 지금 모두 큐브의 모든 정점의 좌표가 정의하는 기원은 이제 동일하기 때문에 그들이 동일한 좌표 공간에 말할 수 있습니다.
두 변환 중 하나 또는 둘 다를 변환하면 좋겠지 만 상관 없습니다. 각 큐브의 좌표에 변형을 적용한 후에는 각 큐브의 모든 꼭지점의 좌표가 동일한 원점을 기준으로 측정되고 동일한 좌표 공간에 있다고 말할 수 있습니다.
이렇게 법선은이 그림에 어떻게 들어 맞습니까?
여기 서페이스 법선과 법선 벡터를 구분합니다. 표면 법선은 모델 표면의 특정 점에 직교하는 정규화 된 벡터를 나타내는 수학 개념입니다. 법선 벡터는 알려진 점에서이 표면 법선의 특정 값입니다. 법선 벡터는 사용자가 정점 좌표와 함께 메모리에 저장 한 값입니다.
일부 변형은 모델의 표면 법선을 변경할 수 있습니다. 다른 사람들은 그렇지 않습니다. 이전에 정의한 큐브를 번역하면 각 큐브 표면의 방향도 바뀌지 않습니다. 따라서 서페이스 법선은 사용자가 서페이스에서 선택한 시점과 완전히 똑같습니다. 큐브 크기를 조정할 때도 마찬가지입니다.
그러나 큐브를 회전하면 큐브의 일부 또는 모든 표면의 방향이 변경됩니다. 이것은 곧 표면 법선이 바뀌는 것을 의미합니다. 따라서 메모리의 정점 스펙의 일부로 저장된 법선 벡터는 구식이므로 표면 법선과 다시 일관성을 유지하려면 회전시켜야합니다.
따라서 법선 벡터는 표면 법선에 의존하며, 이는 차례로 정점 (또는 모델 표면의 임의의 점)에 대해 수행 된 변환에 따라 달라집니다. 따라서 정점에 하나의 좌표 공간에서 다른 좌표 공간으로 변환을 적용하면 법선 벡터가 정점을 따라 가게됩니다.
표면 법선이 기술적으로 모델에 적용된 변형 (번역 참조)의 영향을받는 것은 아니지만 한 좌표 공간에서 다른 좌표 공간으로의 변환은 이전에 보았 듯이 항등 변환 만 포함 할 수 있습니다.
질문에 대답 : 예, 잠재적으로 다른 좌표 집합에 일련의 잠재적 인 변형을 적용하면 좌표가 서로 다른 좌표 집합으로 변형되어 동일한 좌표 공간으로 변경 될 수 있습니다. 공간을 표면 법선을 나타내는 모델 표면의 정점/점으로 정의합니다.
예, 그렇게 말할 수 있습니다. 그러나 나는 단지 예 이상의 답을 쓰는 방법을 모른다. – BDL
차이점은 정상적인 행렬은 원점이'(0,0,0)'로 설정되어 있으므로 벡터 변환에 이상적인 위치가 아닌 방향 만 변환한다는 점입니다 (변형 된 벡터의 크기는 동일하지만 방향이 다릅니다). modelview_matrix 그런 다음 벡터 대신 위치 대신 벡터로 처리됩니다. 조명에 필요한 것이 아닙니다. – Spektre