푸아송 비와 애니메이션

푸아송 비는 어떠한 물체가 위에서 아래로 짓눌려져 높이가 작아질 때 가로폭과 세로폭의 변화량에 대한 비율을 의미합니다.

푸아송 비에 대해서는 애니메이션의 12가지 기본 원칙찌그러짐과 늘어남 항목을 읽다가 알게되었습니다.

평소 2D 젤리 효과를 내기 위해 가로 크기를 N배 늘리면 넓이를 유지하기 위해 세로 크기를 \frac{1}{N}로 줄이곤 했습니다.

// TODO: JELLY EFFECT 2D SPRITE

푸아송 비를 보고는 이 젤리 효과를 물리적으로 자연스럽게 일반화시킬 수 있지 않을까란 생각이 들어서 좀 더 파고들게 되었습니다. 푸아송 비는 실험에 의하여 도출되는 값으로 일반적으로 알려진 재료들의 푸아송 비는 다음과 같습니다.

재료 푸아송 비
고무 0.4999
0.42–0.44
구리 0.33
알루미늄 0.32
점토 0.30–0.45
강철 0.27–0.30
콘크리트 0.1–0.2
유리 0.18–0.3
코르크 0

푸아송 비의 이론적 범위는 [{0, 0.5}]입니다. 즉, 고무는 짓누르면 눌리는만큼 가로 세로로 넓어져 거의 99.9% 부피가 유지되며 코르크는 아무리 짓눌러도 가로 세로로는 늘어나지 않다고 볼 수 있습니다.

처음에 글을 읽고, 푸아송 비의 최대 값이 0.5라는 것에 의문이 생겼습니다. 기존에 사용하던 2D 젤리 효과는 넓이를 100% 유지하기 때문에 푸아송 비로 치면 0.5가 될텐데 N\frac{1}{N}의 관계에서는 0.5가 들어갈 구석이 없었기 때문입니다.

조금 고민해보니 2D와 3D의 차이라고 생각이 나서 계산을 해보니 문제 없다는 결론이 나왔습니다.
객체의 한 축을 x배로 늘렸을 때 부피를 유지하기 위해 나머지 축에 일률적으로 늘려야할 배율 y는 다음과 같습니다. $$ y = {x}^{-\frac{1}{N-1}} $$

유도

N차원 공간에 같은 부피를 가진 물체 PQ가 있다고 가정합시다. (N이 2이면 사각형, N이 3이면 육면체)
P의 모서리 길이는 각각 (a_1, a_2, a_3, ..., a_N)입니다.
P의 부피는 \prod_{i=1}^{N} a_i=a_1 \times a_2 \times a_3 \times ... \times a_N입니다.
Q의 모서리 길이는 (xa_1, ya_2, ya_3, ..., ya_N)입니다.
$$ \prod_{i=1}^{N} a_i=xa_1 \times (\prod_{i=2}^{N} ya_i) $$ y를 밖으로 빼내고 a_1\prod 안으로 집어 넣어 다음과 같은 식을 만들 수 있습니다. $$ \prod_{i=1}^{N} a_i=x \times y^{N-1} \times \prod_{i=1}^{N} a_i $$ 양변을 약분하고 y에 관한 식을 다음과 같이 유도할 수 있습니다. $$ y^{N-1} = \frac{1}{x} $$ $$ y = \frac{1}{x}^{\frac{1}{N-1}} = {x}^{-\frac{1}{N-1}} $$

여기서 \frac{1}{N - 1}부분이 푸아송비를 나타내는 것을 알 수 있습니다. 3D 공간에서 푸아송 비의 최대 값은 0.5이며 2D 공간에서 푸아송 비의 최대 값은 1입니다. 이를 이용하여 재질에 따라 물리적으로 좀 더 자연스러운 모션이 가능해집니다.

// TODO: 2D 공간에서 각 재료별 사각형 객체의 점프 애니메이션
// TODO: 3D 공간에서 각 재료별 육면체 객체의 점프 애니메이션