Houdini
파이썬 코드로 플립북 mp4 생성
Tedd_Kim
2023. 5. 15. 10:20
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.path.split(path)
pre_dir = dir+'/preview'
if not os.path.isDir(pre_dir):
os.mkdir(pre_dir) #경로가 존재하지 않는다면 경로 만들기
out_path = pre_dir + '/' + 'seq_$F4.jpg'
read_path = pre_dir + '/' + 'seq_%04d.jpg' # %04d 주의
convert_path = pre_dir + '/' + 'video.mp4'
return out_path, read_path, convert_path
def flipInfo(self):
desktop = hou.ui.curDesktop()
scenes = desktop.currentPaneTabs() #현재 데스크탑의 pane tab 튜플을 리턴
for scene in scenes:
if scene.type().name() == 'SceneViewer': # 씬뷰(현재 뷰포트)에 한해서
viewport = scene.viewports()[-1] # perspective뷰를 가져옴
viewport.setCamera(self.cam) # 시점을 카메라로 바꿈
flipbook_options = scene.flipbookSettings().stash()
flipbook_options.frameRange((self.start, self.end))
flipbook_options.resolution((self.resx, self.resy))
a,b,c = self.makeDir() # 편의상 경로명 a,b,c로 대입
flipbook_options.output(a) # 플립북 jpg로 export할 경로 설정
return scene, viewport, flipbook_options
def convert_mp4(self):
a,b,c = self.makeDir()
cmd = 'ffmpeg -y -framerate {} -start_number {} -i "{}" "{}"'.format(self.fps, self.start, b, c)
subprocess.check_output(cmd, shell=True)
def execute(self):
scene, view, info = self.flipInfo()
scene.flipbook(view, info) # 플립북 생성
self.convert_mp4() # mp4 변환
flip = genFlipbook() # 객체 생성
flip.execute() # 실행
후디니 플립북 저장과 mp4컨버트
import houimport osimport reimport sysimport globimport toolutilsimport shutilimport subprocessimport platformclass Preview: def init(self):
velog.io
대략적인 아이디어는 이 분의 블로그에서 얻었고, 개인적으로 wedge를 생성하는 방법으로 살짝 변형했다.
문제는 팜에서 돌아갈까인데 (curDesktop() 때문에..), 나중에 다시 업데이트 하는 걸로