애니메이션과 영화 중심의 프로젝트에 Maya를 사용하여 작업했지만 비디오 게임 개발에 대한 연구에도 중점을두고 있습니다. 어쨌든, 나는 교수 중 한 명과 이야기하고 있었고, 내가 아는 모든 게임 엔진이 삼각형으로 변환되는 이유를 알 수 없었습니다.
왜 게임 엔진이 모델을 4면 다각형으로 남겨두고 삼각형으로 변환하는지 아는 사람이 있습니까? 또한이 작업의 장단점은 무엇입니까?
애니메이션과 영화 중심의 프로젝트에 Maya를 사용하여 작업했지만 비디오 게임 개발에 대한 연구에도 중점을두고 있습니다. 어쨌든, 나는 교수 중 한 명과 이야기하고 있었고, 내가 아는 모든 게임 엔진이 삼각형으로 변환되는 이유를 알 수 없었습니다.
왜 게임 엔진이 모델을 4면 다각형으로 남겨두고 삼각형으로 변환하는지 아는 사람이 있습니까? 또한이 작업의 장단점은 무엇입니까?
답변:
결론은 컴퓨터가 화면에 객체를 렌더링하는 방법 인 Triangle Rasterization입니다. 다른 사람들이 나보다 더 늦게 말하지만 :
컴퓨터 화면에서 볼 수있는 모든 3D 개체는 실제로 기본 요소라고하는 작은 작은 기하학적 개체로 만들어집니다. 사변형, 삼각형, n- 곤 등이 프리미티브의 예입니다. 우리는 주로 하나의 주된 이유 때문에 삼각형에 집중할 것입니다 : 모든 객체는 삼각형으로 나눌 수 있지만 삼각형은 삼각형 이외의 것으로 나눌 수 없습니다. 이 때문에 삼각형을 그리는 것은 높은 순서의 다각형을 그리는 것보다 훨씬 간단합니다. 처리해야 할 일이 줄었습니다. 이러한 삼각형이 컴퓨터 그래픽에서 일반적으로 사용되는 이유입니다.
강조합니다. 출처 : http://www.devmaster.net/articles/software-rendering/part3.php
삼각형에는 그리기가 더 쉽고 빨라지는 많은 속성이 있습니다.
4 개 이상의 점이 같은 평면에 있지 않을 수도 있지만 항상 3 개의 점이 있습니다 (축소 사례 무시). 이것은 스칼라 값이 삼각형의 표면에 따라 선형 적으로 변한다는 흥미로운 특성을 가지고 있습니다. 삼각형이 화면에 투사 되더라도 스칼라 값은 여전히 x '/ z 및 y'/ z에 대해 선형으로 변합니다.
이는 특수 하드웨어에서 매우 빠르게 수행 할 수있는 선형 보간법을 사용하여 삼각형을 음영 처리, 텍스처 맵 및 깊이 필터에 필요한 모든 것이 아니라는 것을 의미합니다.
tl; dr : 삼각형이 가장 간단한 기본 요소이므로 삼각형을 다루는 알고리즘을 크게 최적화 할 수 있습니다.
세 점 (삼각형)은 항상 평면을 정의합니다. 즉, 세 점이 주어지면 항상 세 점을 모두 절단 할 수있는 평평한 평면을 만들 수 있습니다. 그러나 네 점에 대해서도 항상 같은 것은 아닙니다. 평면에 4 개의 점을 모두 가질 수 있지만 평면에없는 4 개의 점을 가질 수도 있습니다.
이를 수행하는 것은 "게임 엔진"이 아닙니다. 사용하는 모든 3D 소프트웨어가이를 수행합니다. 그것은 단지 당신에게 그것에 대해 말하지 않으며, 교수가 이것을 모른다면 상당히 자격이 부족한 것처럼 보입니다. 소프트웨어가 사용자에게 숨겨져 있어도 컴퓨터의 메모리에 존재합니다. 모든 3D 프로그램에는 삼각형을 볼 수있는 옵션이 있습니다. 또한 가장자리를 편집 가능한 가장자리로 나누는 옵션도 제공되므로 함께 사용할 수 있습니다. 그러나 그들은 항상 시작하기 위해 거기에 있었고 당신의 교수 가이 주제를 가르치고 여전히 "삼각형이 무엇인지"궁금해하는 것은 순진합니다.
삼각형은 버텍스를 정렬하고 평평한 표면을 보장하는 유일한 방법입니다. 쿼드가 있으면 구부러져 야하는 방식으로 버트를 정렬 할 수 있습니다. 그러나 이미 삼각형으로 만들어졌으며 굽힘을 허용하는 삼각형입니다.
삼각형은 3D로 표면을 설명하지 않는 것보다 적은 3 개의 점을 가지기 때문에 격리되어 설명 할 수있는 가장 단순한 기본 요소입니다 .
삼각형은 고립 된 것으로 간주 될 수 있기 때문에, 반복의 힘을 통해 임의의 표면을 전혀 렌더링 할 수있는 단일 삼각형만을 렌더링 할 수있는 코드 또는 실리콘 조각을 만드는 것이 가능하다.
따라서 "모든 표면"을 렌더링하는 데 성공한 최초의 컴퓨터 시스템은 많은 삼각형을 독립적으로 렌더링함으로써 자연스럽게 그렇게했습니다.
삼각형과 쿼드를 "프리미티브 (primitive)"라고 생각하면 (즉, 문맥이없는 완전히 고립 된 지오메트리 비트) 삼각형이 더 원시적이므로 "승리"하는 경향이 있습니다.
그러나 1980 년대에 엔터테인먼트 급 컴퓨터가 특정 수준의 정교함을 넘어 서면 "기본형"을 격리하는 데있어 단순함이 덜 중요해졌습니다. 그래픽을 대량으로 생산하는 경우 규모의 경제는 관련 정점 처리 그룹을 선호합니다. 한 번에 거의 동일한 자동차 수백 대를 조립하는 것을 선호합니다.
1980 년대에 영화가 "사분면"을 채택한 이유는 3 차원 공간에서 2 차원 정점 격자를 나타내며 격리 된 사변형이 아니라 잘못된 명칭입니다.
삼각형에서 "쿼드 (quad)"로의 동일한 이동은 아직 인터랙티브 엔터테인먼트의 영역에서 일어나지 않았지만, 상당히 빨리, 그리고 같은 이유로 영화 사업에서 일어난 것 같습니다.
n면 다각형의 경우 삼각형 대 'n-2'방법을 삼각 측량하는 방법은 하나뿐입니다. 따라서 삼각형은 궁극적으로 다면체 모양을 정의하는 가장 모호한 방법입니다. 또한 다른 포스터가 지적했듯이 삼각형 (4 개 이상이 아닌) 래스터 화를 가속화하는 많은 방법이 있습니다 (일정한 z는 내가 좋아하는 것 중 하나입니다). 또한 광선 임의 다각형 교차 테스트보다 광선 삼각형 교차 테스트를 최적화하는 것이 더 쉽습니다. 실제로, n-면 다각형에 대한 많은 연산은 손으로 삼각 표현을하는 것으로부터 이익을 얻습니다. 즉, n면 다각형 표현이 '나쁜'것은 아닙니다. 매우 유용하지만 궁극적으로 많은 메쉬 작업을 위해 삼각형으로 작업하고 싶습니다.
삼각형이 세 개의 비선형 정점에 의해 정의되는 한 (읽기 : 각도가 정확히 Pi가 아닌) 정점이 고유 평면을 정의합니다.
쿼드는 물론 4 개의 정점으로 정의됩니다. 해당 정점이 동일 평면 상에 있지 않을 수 있습니다. 이 경우 쿼드는 실제로 사각형에서 대각선으로 나눈 두 개의 삼각형이됩니다. 그것은 두 개의 평면, 두 개의 표면 법선 등입니다.
사용 가능한 모든 모델링 도구, 텍스처링, 조명 등의 모든 알고리즘은 모두 모델이 평면 세그먼트로 구성되어 있으며 모든 공식 (일반 계산을위한 교차 제품이 가장 먼저 사용됨)은 절대 최소 입력 데이터 셋을 사용합니다. 꼭짓점은 평면을 정의하고 평면은 우리가 멋진 일을 모두 수행해야하는 것입니다.
쿼드로 작업하기 위해 엔진을 확실히 작성할 수는 있지만 쿼드를 정의하는 다른 세 가지와 동일 평면 상에 있는지 확인해야하는 경우를 제외하고 거의 모든 경우에 네 번째 정점을 무시하는 것을 알게 될 것입니다. 그리고 동일 평면 상 에 있지 않은 경우에 대한 가장 논리적 인 해결책 은 쿼드를 두 개의 삼각형으로 나누는 것입니다. 그렇다면 왜 그렇게 시작하지 않습니까?
지구상에서 쿼드 작업의 요점은 무엇입니까?
쿼드를 원한다면 두 개의 삼각형을 합치십시오.
우리가 4 점을 동일 평면에 놓는 것이 문제가 아니라고 가정하면 (다른 점에서 지적했듯이 나에게 견딜 수 있음) 임의의 사다리꼴 (사변형이 일반적으로 보이는 모양)을 렌더링한다는 것을 알 수 있습니다 화면 공간으로 변환 할 때)는 삼각형을 렌더링하는 것과 특별히 다르지 않습니다. 실제로 클리핑을 수행하면 추가 꼭지점이 발생할 수 있으므로 거의 동일하게 작동합니다. (적어도 소프트웨어 모델에서는 하드웨어가 클리핑을 수행하는 간단한 무차별 방식을 가질 수 있습니다.)
따라서 나머지 문제는 표현 효율성 중 하나입니다. -2 개의 삼각형으로 사각형을 쉽게 표현할 수 있으며, 삼각형 스트립을 사용하는 경우 추가 정점없이 쉽게 표현할 수 있습니다 (첫 번째 삼각형의 경우 3 개의 vert, 두 번째 삼각형의 경우 추가 vert). 반면, 사각형이있는 삼각형을 표현하려고하면 4 개의 꼭짓점을 사용해야하고 다른 것과 동일한 축을 가지고 있어야합니다. 이것은 효율성 측면에서 이상적이지 않습니다.