목록Houdini (52)
테드옹의 VFX
Post Render Script나 Python SOP으로 하면 플립북 자체는 mPlay에 들어가지만, jpg가 매프레임 생성되지 않는다. 따라서 Source Editor로 실행하거나, 다른 방법을 찾아야할듯 import os import subprocess import hou node = hou.pwd() class genFlipbook: def __init(self)__: self.resx = 1280 self.resy = 720 self.start = 1 self.end = 24 self.cam = hou.node('/obj/work_cam') #경로 주의 self.fps = 24 def makeDir(self): path = hou.hipFile.name() dir, file_name = os.p..

수만개의 데브리를 추가해야할 때 이것을 rigid body로 해결하기란 너무 오랜 시간이 걸린다. 물론 물리적인 무게감을 클로즈업에서 표현해야할 때는 bullet 솔버를 사용해야겠지만, 그런게 아닌 상황이라면 파티클을 흩뿌린 후 debris를 인스턴싱하는 방법이 더욱 효과적이다. 문제는 particle시뮬레이션에서 가져온 파티클은 회전이 없다는 것. 그래서 높은값의 velocity로 파티클을 쏘아도, 얘들은 면적에 따라서 다른 공기저항을 받지 않기 때문에 회전을 하지 않는다. 애초에 점이라서 면적이랄 게 없으니.. 물론 pop spin노드를 사용해서 회전을 만들고 후에 사용할 수 있겠지만, 그럴바에야 간단한 v값 시뮬레이션으로 모션을 잡은 후 그것을 기반으로 orient어트리뷰트를 만들어주는 게 더 나은..
FLIP 시뮬레이션은 파티클 + 볼륨을 섞어서 궁극적으로 파티클의 포지션을 업데이트하는 것이다. 따라서, 볼륨만을 이용해서 움직임을 나타내는 pyro 시뮬레이션과는 달리 FLIP시뮬레이션은 아웃풋 오브젝트가 파티클이고, 후에 이것을 mesh로 변환하여 렌더링을 하는 것. Solver안을 들어가보면 파티클과 볼륨을 둘 다 쓰기 때문에 굉장히 복잡하다. 특히 pyro에선 고려하지 않는 surface tension, air compresibilty 등등 내부 force계산이 많기 때문에 보통 아웃풋을 내는 데 smoke 시뮬레이션보다 더 복잡하고 오래 걸림. 그냥 차치하고 Pyro solver내부와 FLIP solver내부를 비교해보면 FLIP이 훨씬 복잡한 연산이 들어가는 것을 알 수 있다. 파티클 방식의 ..

후디니를 하다보면 생각보다 벡터의 각도를 알아야할 때가 있다. 대표적으로 물체를 회전시킬 때나 Whitewater source노드의 vel angle파라미터 등에서도 보이지만, 삼각함수는 각도를 다룰 때 단골로 나오는 주제이다. 2D평면에선 기준축이 x축이 되고, 간단하게 벡터와 벡터사이의 각도가 계산되지만, 3D에서는 단계가 조금 추가된다. 하지만 간단하게 생각하면 되는데, 하나의 벡터를 다른 벡터에 투영(Projection)하고 그 과정에서 만들어진 삼각형의 사이각을 구하는 것이다. 두 벡터는 x좌표, y좌표, z좌표가 모두 다르지만 내적을 이용하여 B벡터를 A벡터에 투영하고 만들어진 삼각형의 세타값을 구하면 두 벡터 사이의 각도가 되는 것. 세타를 구하는 방법은 역삼각함수를 이용하면 되는데, 후디니..