Community

실시간으로 유체, 불, 연기 시뮬레이션 하기 🔥

개인적으로 불이나 연기 등 단순 물리 현상을 컴퓨터로 시뮬레이션 해보고 싶은 욕구(?)가 있는데요. 최근 Andrew Chan님의 글을 접하게 되어 핵심만 의역/요약을 해봤습니다 😎 --- 예전에는 "반지의 제왕" 같은 영화에서 불을 표현할 때, 여러 스트라이프를 사용하는 등 실시간 시뮬레이션이 아닌 방법을 사용했습니다. 허나, 현재는 기술이 발달해 GPU로 불, 연기를 실시간으로 시뮬레이션 할 수 있는 경지에 이르렀습니다. 이미 공개된 툴이나 방법은 많으며 대표적으로 Nvidia의 FlameWorks가 있습니다. 유체 시뮬레이션의 기초를 다지기 위해 이류 (온도나 농도 등 물리량의 차이로 인해 유체가 이동하는 것을 의미)라는 개념을 설명하며 이를 연산하기 위해 Naive한 방법에서 시작해서, 편미분방정식을 사용한 뒤, 마지막으로 세미-랑그라주 (먼저 이류하는 위치를 추적하고, 추적한 위치에서 값을 보간함) 방식까지 사용합니다. 이후, 유체의 흐름을 계산하기 위해 나비에-스토크스 (점성을 가진 유체의 운동을 기술하는 비선형 편미분 방정식) 방정식을 설명하며 직접 식을 도출해 계산합니다. 데모 도출해낸 식을 WebGL로 구현하며 웹에서 직접 상호작용 가능한 데모를 보여줍니다. 불과 연기를 사용자의 상호작용에 따라 실시간으로 시뮬레이션하는 데모이며 전체 코드는 작가의 깃허브에서 확인할 수 있습니다. * https://github.com/andrewkchan/andrewkchan.github.io/tree/main/source/posts-source/blog-fire --- 물리학을 깊게 공부해본 적이 없어서 따라가기 어려운 부분들도 분명 있었지만 흥미롭게 읽은 글입니다. 물론, Andrew Chan님의 방식이 유체 시뮬레이션을 하는데 있어서 유일한 것도 아니고 가장 효율적인 것도 아니겠지만 - 배경 지식부터 간단한 이론과 알고리즘 그리고 데모까지 있어서 입문하기에는 좋았습니다. 원글: * https://andrewkchan.dev/posts/fire.html

알림

알림이 없습니다