#encoding=utf-8
#version:1.1
#lastedit:2022.01.18
#creator:Kim dae uk
#houdiniversion:18.5
import hou, os, toolutils, subprocess
#version name
if 'ver_name' in globals():
pass
else:
ver_name = "ver01"
class P():
#hipfile name
hip_path = os.path.dirname(hou.hipFile.path())
hip_name = os.path.basename(hou.hipFile.path())[:-4]
#time range
start = int(hou.expandString('$RFSTART'))
end = int(hou.expandString('$RFEND'))
#viewport name
desktop = hou.ui.curDesktop()
scene_view = toolutils.sceneViewer()
viewport = scene_view.curViewport()
view = desktop.name() + "." + scene_view.name() + ".world." + viewport.name()
#make directory preview, seq, mp4
def make_dir(self):
pre_dir = self.hip_path+"/preview"
if not os.path.isdir(pre_dir):
os.mkdir(pre_dir)
seq_dir = pre_dir+"/seq"
mp4_dir = pre_dir+"/mp4"
if not os.path.isdir(seq_dir):
os.mkdir(seq_dir)
if not os.path.isdir(mp4_dir):
os.mkdir(mp4_dir)
return seq_dir, mp4_dir
#make preview
def make_preview(self, in_seq_name, start, end, resx, resy):
scene = self.desktop.paneTabOfType(hou.paneTabType.SceneViewer)
flipbook_options = scene.flipbookSettings().stash()
playbar_options = hou.playbar
flipbook_options.output(in_seq_name)
flipbook_options.frameRange((start, end))
flipbook_options.resolution((resx, resy))
flipbook_options.cropOutMaskOverlay(1)
scene.flipbook(scene.curViewport(), flipbook_options)
#convert mp4
def convert_mp4(self, frame_rate, start, in_seq_name, out_mp4_name):
seq_name = in_seq_name.replace("$F4", "%04d", 1)
frame_rate = frame_rate
start_num = start
cmd = 'ffmpeg -y -framerate {} -start_number {} -i "{}" "{}"'.format(frame_rate, start, seq_name, out_mp4_name)
subprocess.check_output(cmd, shell=True)
#get multiInput set value
def get_value(self):
global ver_name
if self.viewport.camera() != None:
cam = hou.node(self.viewport.camera().path())
cam_name = self.viewport.camera().name()
resx = cam.parm("resx").eval()
resy = cam.parm("resy").eval()
else:
cam_name = 'viewport'
resx = 1280
resy = 720
value = hou.ui.readMultiInput("Camara : %s\nSize : %d %d\nName : %s" %(cam_name,resx,resy,self.hip_name),
input_labels=('Add Name','Start Frame','End Frame','Size_X', 'Size_Y'),
buttons=('Ok','Cencle'),
title="Flipbook",
initial_contents=("%s" %ver_name,"%d" %self.start ,"%d" %self.end , "%d" %resx, "%d" %resy))
if value[0] == 0: ver_name = str(value[1][0])
return value
#make_preview, make_mp4
def do(self, value):
if value[0] == 0:
#hou.ui.displayMessage('OK')
#set flipbook option
start = int(value[1][1])
end = int(value[1][2])
resx = int(value[1][3])
resy = int(value[1][4])
#make_dir, set sequence_file_name
seq_dir, mp4_dir = self.make_dir()
file_name = self.hip_name+'_'+value[1][0]
in_seq_name = seq_dir+"/"+file_name+".$F4.jpg"
#set out_mp4_name
out_mp4_name = mp4_dir+"/"+file_name+".mp4"
#make_preview
self.make_preview(in_seq_name, start, end, resx, resy)
#make_mp4
frame_rate = hou.fps()
self.convert_mp4(frame_rate, start, in_seq_name, out_mp4_name)
후디니 shelftool
import auto_pree
p = auto_pree.P()
value = p.get_value()
p.do(value)