알고리즘

Harmonic Field를 이용한 정점의 가중치 계산

leonhong 2023. 4. 26. 20:47

정점의 가중치를 왜 계산하나요?

 아래 그림에서 토끼의 머리쪽의 정점에 1 값과 꼬리쪽에 0 값이 주어질 때, 나머지 정점들의 값은 어떻게 자동으로 부여될지 알고 싶을 때가 있다. 예를 들어 머리에 1Kg, 꼬리에 0Kg의 질량이 가해진다면 나머지 구간의 질량 분포를 알고 싶다거나 온도를 예로 들면 머리에 10도, 꼬리에 5도의 온도를 알고 있을때 나머지 정점에서의 온도 분포를 알고 싶을 수도 있다. 

 이때, 머리와 꼬리쪽 정점에 가해지는 조건을 제약조건이라 하고, 그 외의 정점을 비제약 조건이라고 하는데, 제약조건값을 입력하면, 나머지 제약조건에 값을 계산해내면 많은 문제를 풀 수 있다. 좀 더 고급 문제로 가면 텍스쳐맵핑, 스무딩, 메쉬 변형등등에도 사용된다.

Harmonic Field는 뭔가요?

 정점의 가중치를 계산하는 방법은 많이 있을건데, 그 중에서 빠른 연산으로 풀 수 있는 방법 중에 하나이다. Harmonic Field는 Laplace 연산을 수행하면 정점의 Scalar값이 주변값과이 차이가 0이 되는 독특한  상태이다. 이 상태에서 몇가지 제약조건을 주면(예시로 든 토끼의 머리와 꼬리 정점에 값을 준 것처럼) 나머지 정점의 값을 방정식 풀이를 이용하여 알아낼 수 있다. 

 인터넷 검색을 해보면 Mesh 문제풀이에서는 굉장히 자주 사용하는 방식인 것을 알 수 있다. 

 

5개짜리 정점으로 구성된 Mesh의 가중치를 구하기

 

 

 

문제 정의 : u0 ~ u4 이렇게 5개로 구성된 mesh가 존재할 때, 제약조건을 줄때 u1에 1을 주고 u3에 2를 주었을 때, 나머지 u0, u2, u4의 값은 어떻게 되는지 알아내기

 

Laplace 계산을 위한 선행 계산값 : 정사각형의 정중앙을 중심으로 4개의 삼각형이 나오면 세점 u0 u1 u2 가 이루는 각은 45도가 되고 해당 위치의 cot값은 1, u0를 제외한 나머지 정점들에서의 cot 값 또한 1

 

 

 

 

1. 모든 정점의 Laplace 계산

 

 

2. u11, u32대입할 때, 가중치 행렬의 하모닉필드 계산(붉은색이 제약 정점)

  - ps. 너비 Mat은 사용하지 않음

3. 제약 정점과 비제약 정점을 기준으로 재정렬

 

4. 선형 방정식을 풀이 가능한 형태로 변형(행렬 분리)

5. 선형 방정식 풀이

 

6. 풀이 결과

하모닉필드를 이용한 가중치 계산2.pptx
0.05MB