발산 정리로 닫힌 삼각형 메시 부피를 삼각형당 11회 부동소수점 연산으로 계산
Hacker News 의견들
삼각형마다 한 평면으로의 투영과 그 사이에 생기는 프리즘 비슷한 다면체의 부피를 방향에 따라 더하고 빼는 것과 같은 식 아닌가 싶음. 기하학적으로도 바로 나오는 공식임.
2D에서는 각 변과 x축 투영이 만드는 사다리꼴의 부호 있는 넓이를 합하면 됨. 오른쪽에서 왼쪽으로 가는 변의 음수 넓이가 초과분을 정확히 상쇄하는 방식임.
원점까지 각 삼각형이 만드는 부호 있는 피라미드 부피를 합하는 방식도 됨. 이 글의 방식은 yz 평면으로 투영한 프리즘과 피라미드 비슷한 조각을 더하는 셈이라 약간 더 빠르다는 얘기임.
벡터 미적분 없이도 X축과 평행한 삼각 기둥의 부호 있는 부피 합으로 이해할 수 있음. 다만 미적분으로 그 결론을 한 단계씩 유도한 글 자체는 가치가 있다고 봄.
비슷한 구현은 1980년 Fortran으로 작성된 ACM Algorithm 550에도 있고, A. M. Messner는 1970년 표면 적분으로 질량 특성을 계산하는 논문을 먼저 냈음. 무게중심 같은 다른 물성도 계산함.
기하대수로도 아주 깔끔하게 풀림. Steven de Keninck의 2019 SIGGRAPH 강연에 이 해법이 나옴.
게임에서 메시 부피가 필요하면 매 프레임 계산하기보다 미리 계산해서 객체 속성으로 저장하는 편이 보통 나음. 실시간으로 적분 성격의 값을 계속 구할 일이 많지는 않음.
이 식은 메시가 단순하고 닫혀 있다는 전제가 중요함. 결과를 믿기 전에 그 조건을 검증해야 하고, 비슷한 표면 적분 식으로 강체의 관성 행렬 같은 모멘트도 구할 수 있음.