houdini体积分层渲染代码

import hou

def findMantra():
mantra_lists = []
mat = hou.node('/out')
if len(mat.children()):
for child in mat.children():
if child.type().name() == 'ifd':
mantra_lists.append(child)

return mantra_lists<span id="more-296"></span>

def checkRenderPass(mantra):
result = [1,
1,
1,
1,
1,
1]
num = mantra.parm('vm_numaux').eval()
if num:
for i in range(num):
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'my_id':
result[0] = 0
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'vol_Depth':
result[1] = 0
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'my_world_N':
result[2] = 0
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'my_cam_N':
result[3] = 0
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'vol_vel':
result[4] = 0
if mantra.parm('vm_variable_plane' + str(i + 1)).eval() == 'vol_N':
result[5] = 0

return result

def add_my_id(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('my_id')

def add_vol_Depth(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('vol_Depth')

def add_my_world_N(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('my_world_N')

def add_my_cam_N(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('my_cam_N')

def add_vol_vel(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('vol_vel')

def add_vol_N(mantra):
num = mantra.parm('vm_numaux').eval()
mantra.parm('vm_numaux').set(num + 1)
mantra.parm('vm_variable_plane' + str(num + 1)).set('vol_N')

def add_layer(lists):
for node in lists:
result = checkRenderPass(node)
if result[0]:
add_my_id(node)
print('%s的"my_id"分层添加成功啦~~!!' % node.name())
else:
print('%s的"my_id"分层已经存在了~~!' % node.name())
if result[1]:
add_vol_Depth(node)
print('%s的"vol_Depth"分层添加成功啦~~!!' % node.name())
else:
print('%s的"vol_Depth"分层已经存在了~~!!' % node.name())
if result[2]:
add_my_world_N(node)
print('%s的"my_world_N"分层添加成功啦~~!!' % node.name())
else:
print('%s的"my_world_N"分层已经存在了~~!!' % node.name())
if result[3]:
add_my_cam_N(node)
print('%s的"my_cam_N"分层添加成功啦~~!!' % node.name())
else:
print('%s的"my_cam_N"分层已经存在了~~!!' % node.name())
if result[4]:
add_vol_vel(node)
print('%s的"vol_vel"分层添加成功啦~~!' % node.name())
else:
print('%s的"vol_vel"分层已经存在了~~!!' % node.name())
if result[5]:
add_vol_N(node)
print('%s的"vol_N"分层添加成功啦~~!!' % node.name())
else:
print('%s的"vol_N"分层已经存在了~~!!' % node.name())

def main():
nodes = hou.selectedNodes()
lists = []
for node in nodes:
if node.type().name() == 'ifd':
lists.append(node)

print(lists)
if len(lists):
add_layer(lists)
else:
lists = findMantra()
if len(lists):
add_layer(lists)
print('没有指定mantra节点,自动把out模块下所有的mantra节点都指定啦~~~!!!')
else:
print('没有指定mantra节点,自动把out模块下所有的mantra节点都指定啦~~~!!!')
点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像