打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
HOUDINI?使用?3delight(7)Soho是个大麻烦(转)

houdini 无论使用什么类型的渲染软件都使用脚本输出houdini的对象给渲染工具的形式。无论是mantra,renderman,mentalray

soho就是 Scripted Output of Houdini Objects的意思。

每个rop节点都有个 soho_program 参数隐藏参数  这个参数就是脚本输出对象使用什么python程序输出渲染脚本

 

 可在rop节点的类型属性编辑中打开不可见参数的情况下看到

比如mantra 类型的soho_program 是IFD.py

mentalray类型的soho_program是MI.py

3delight是rendman类型的 soho_program是RIB.py

使用输出 diskfile看看 test.rib 看看renderman 的rib语句  

在没有灯光的情况下输出soho自动增加顶灯

 # Light Source soho_autoheadlight_light
 Transform [0.707106812811 0 -0.707106749562 0 -0.353553383704 0.866025396499 -0.353553415328 0 -0.612372403157 -0.500000012618 -0.612372457932 0 15.2923021317 12.4861125946 15.2923030853 1]  #坐标移动到某处
 Attribute "identifier" "string name" ["soho_autoheadlight_light"]  #定义标识就是名字为 soho_auheadlight_light
 LightSource "distantlight" "soho_autoheadlight_light"  以前面属性定义的 建立 远光源

这些如何进行的。

打开$hb/soho/python2.6/下的RIB.py输出程序看看

import time
import soho
import RIBapi
import RIBmisc
import RIBgeo
import RIBframe
import RIBparm
import RIBsettings
import RIBhooks

首先 导入一堆功能模块

时间 脚本输出对象 rib的应用接口 rib的杂项 rib几何体 rib的框架 Rbib的参数 Rib的设置 Rib的挂钩

这些都有一定功能的模块可以在soho目录下打开看看有哪些。rib.py在运行的时候要用到这些功能

 

Ri = RIBapi #使用RI这短名字控制Ribapi的功能

controlParameters = {
    # The time at which the scene is being rendered
    "now"     : SohoParm("state:time",  "real", [0],  False, key="now"),

    # The camera (or list of cameras), and masks for visible objects,
    # active lights and visible fog objects
    "camera"  : SohoParm("camera",      "string",["/obj/cam1"],False),

    # Controls to determine whether to:
     Use retained geometry (i.e. ObjectBegin/ObjectEnd)
     Shadow maps for the selected lights
     Environment maps for the selected objects
     The main image from the camera
    "retained": SohoParm("ri_doretained",       "int", [1], False,
                            key="retained"),
    "shadow"  : SohoParm("render_any_shadowmap","int", [1],False, key="shadow"),
    "env"     : SohoParm("render_any_envmap",   "int", [1],False, key="env"),
    "main"    : SohoParm("render_viewcamera",   "int", [1], False, key="main"),
    'ri_backend' : SohoParm('ri_backend',       'string', ['soho'], False,
                            key='ri_backend'),
    'ri_inheritproperties' : SohoParm('ri_inheritproperties', 'int',[0],False),
}

 

#初始化控制参数 controlParameters 集合 这是几个SohoParm类型数据的集合 SohoParm 这个类型的定义参考 soho.py

这个用于向soho发送控制命令让soho做集合中内容的事情具体做什么由这个集合来确定

看看。。这只是使用soho进行的正常功能

比如其他的rib的高级功能那个就要我们自己定义然后向soho发送命令。

这里的参数只有计时 ,相机,保留处理(确定哪些要渲染) ,然后是阴影贴图,环境贴图,主图,后台模式,是否继承属性

(⊙o⊙)…一般情况还能应付对于复杂的处理,那个就远远不够了。

比如使用点云二次照明模拟全局照明这是renderman的比较高级的功能。如何组合?

那么需要控制soho给rib发送

Option "user" “string iswhichpass” "PointCloud pass OccPt"

Option  "user"  “string iswhichpass” "PointCloud pass ColorBlendPt" 

Option "user" "string iswhichpass" "photon"

之类的说明给渲染器说这是一个预处理,它是 接缝吸收点云,还是色彩溢出点云,还是光子的预处理

有了这些预处理那么才有最终处理 

 pre_shadow + pre_env + pre_other + pre_occ + photon + pre_colorblend 然后 final 好多的pass.......... 需要自动化

如果一切都用raytrace 不用 prepass这些处理 那么等待你的可能是个无法忍受的渲染时间

我们也给shader增加了不同pass不同光线类型的处理。这里自然要使用iswihichpass这个自己定义的user option

所以是要扩展RIB.py定义自己的RIB.User.py是非常重要的。而且控制soho这绝对是个大麻烦。。需要学习很多的相关知识。

用这个RIB.user.py控制soho读入houdini对象及其标配属性,和多余的使用的渲染器特有的属性。

 

soho.py模块的应用描叙在 C:\Program Files\Side Effects Software\Houdini 11.0.658\houdini\soho下

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【转载】Houdini配置3delight 10
Houdini 16.5
Lovely Ribbed Cowl | Purl Soho
在pycharm中解决同一目录下py文件不能import的问题
学习 Python与C相互调用 第2页
python 初级入门(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服