홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.
Curl Noise
앞서 배운 SPH나 Stable Fluid은 모두 “Incompressible” 하다는 유체의 특성을 이용해 계산했다. Stable Fluid는 입자마다 속도 벡터를 계산하는 것이 아닌, 공간에 대한 정보인 Vector Field를 계산해 효율성을 높였다. Vector Field를 기준으로 계산을 하게 되면 Texture 형태의 자료구조를 이용할 수 있고, 주변 공간에 대한 정보를 바로 알 수 있기 때문에 shader를 이용한 병렬 처리가 가능하다. 하지만 여전히 많은 연산을 필요로 한다.
\[F = (F_{x} \, , \; F_{y} \, , \; F_{z})\]
\[Curl (F) = \bigtriangledown \times F = (\frac{\partial F_{z}}{\partial y} - \frac{\partial F_{y}}{\partial z}, \quad \frac{\partial F_{x}}{\partial z} - \frac{\partial F_{z}}{\partial x}, \quad \frac{\partial F_{y}}{\partial x} - \frac{\partial F_{x}}{\partial y})\]
\[\bigtriangledown (Curl(F)) = \frac{\partial }{\partial x}(\frac{\partial F_{z}}{\partial y} - \frac{\partial F_{y}}{\partial z}) \; + \; \frac{\partial }{\partial y}(\frac{\partial F_{x}}{\partial z} - \frac{\partial F_{z}}{\partial x}) \; + \; \frac{\partial }{\partial z}(\frac{\partial F_{y}}{\partial x} - \frac{\partial F_{x}}{\partial y})\]
\[= 0\]
Vector Calculus 수업을 들을 때 임의의 벡터장의 curl의 divergence는 항상 0이라는 내용을 배웠었다. 이 말인 즉, “노이즈로 curl을 만들고 이를 속도장으로 사용한다면 유체와 비슷한 효과가 나지 않을까?” 라는 발상이 가능하다는 것이다. 실제로 특수효과를 제작할 때 간단한 모델로 시뮬레이션을 돌리고, 노이즈를 이용해 디테일을 추가하는 방식이 정석이라고 한다.
맨 위로 이동하기
Graphics 카테고리 내 다른 글 보러가기
댓글 남기기