언어:
페이지 정보
엔진 버전:
언리얼 엔진

스켈레탈 메시 감소 툴 알고리즘 세부사항

언리얼 엔진

에지 접기

감소 코드에서는 edge-collapse (에지 접기) 알고리즘을 사용하여 스켈레탈 메시를 단순화합니다. 에지 접기가 실제로 어떤 일을 하는지 이해하면 도움이 될 수 있습니다. 아래 이미지는 에지를 접는 세 가지 단계를 보여줍니다. 실제 감소 툴은 메시에 트라이앵글이 (또는 버텍스가) 원하는 수만큼 남을 때까지 메시의 에지를 반복해서 접는다고 생각해도 됩니다.

NotesOnEdgeCollapse_01.png

  1. 접을 에지를 선택합니다.

    a. 접을 에지

  2. 대체 위치를 계산합니다 (같은 에지 위가 아닐 수 있습니다).

    a. 대체 버텍스

  3. 에지를 접고, 트라이앵글 두 개를 제거했습니다.

에지는 어떻게 선택하나?

메시에 대해, 각 에지에는 접었을 때 메시가 얼마나 변하는지를 나타내는 "비용" 이 있습니다. 단순화 알고리즘은 비용이 가장 낮은(, 즉 메시 변화가 가장 적은) 에지를 선택합니다. 이제 단순화에 대해 조금 더 자세히 들어갈 수 있습니다. 에지를 비용이 가장 낮은 것부터 오름차순 정렬하면, 알고리즘은 트라이앵글이 (또는 버텍스가) 지정한 수만큼 남을 때까지 에지 목록을 반복해서 먹고 들어갑니다. 비용이 (중요도가) 가장 낮은 에지를 접어, 가장 높은 에지만 남기는 것입니다. 여기서 미묘한 부분이, 에지가 접힐 때 주변 에지가 바뀌므로 그 "비용"도 업데이트해야 하며, 목록에 비용 순으로 정렬된 에지 위치도 마찬가지입니다.

HowIsTheEdgeChosen_01-1.png

  1. 접을 에지를 선택합니다.

    a. 접을 에지

그러면, 비용은 어디서 오는가?

실제 cost of collapse (접는 비용)은 (최적의 대체 버텍스 위치를 사용했을 때) 메시의 로컬 모양이 변하는 양에 따라 계산하며, 새로 생기는 버텍스에 대한 특성(, 예를 들면 노멀, 컬러 등)이 얼마나 조악할 것인가에 따라 추가 페널티를 적용합니다. 실제 스켈레탈 단순화 툴에서는, 특정 에지의 비용을 높이는 기능이 있습니다. 특히 사용자가 중요하다 지시한 스켈레탈 본에 연관된 에지에 추가 페널티를 적용하는 기능도 노출시켰습니다. 그렇다고 에지가 절대 접히지 않는다는 뜻은 아니고, 단순화 툴에 입력되는 에지 스택 중 순위가 훨씬 나중이 된다는 뜻입니다.