houdini中不得不掌握的技术集锦(5)-材质灯光渲染入门
—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
http://www.tokeru.com/cgwiki/index.php?title=Houdini_Lighting_Shading
由CG猎人独家翻译,转载请注明
有CG猎人的同学要求初一片材质渲染的文章,小编也就为大家翻译了这篇文章,材质渲染入门,很好的把整个材质渲染流程介绍了一遍,包括AOVs和属性覆盖等比较强大和实用的功能,对于大家材质入门应该是很有帮助的!
大纲
1创建一个简单的测试场景
2设置一个宣传场景,渲染
3材质创建
4需要注意的事情
5材质属性覆盖
5.1在object层级进行覆盖
5.2 在point点级别进行覆盖
6给面赋予材质
7点颜色(Cd)还有Alpha
8AOVs分层渲染方式 或者图片分层
8.1 在shader中定义AOVs
8.2 把AOVs添加到Rop渲染
9 需要做的事情
1创建一个简单的测试场景
总结:创建一个teaport和grid地面,创建sun,sky灯光和摄像机
这个教程默认你使用的build 布局,然后熟悉了houdini的菜单和houdini的视图操作。
01创建一个grid
02创建一个platonic solid物体,进入节点中,修改模式为teapot茶壶,半径为3。
03回到上一个层级,把y轴位置调整大概1.39,让他在地面上
04从shelf工具架上创建一个distant灯光,选择和移动它,让灯光效果好看点,并且让颜色偏黄色。
(提示:点击小点 色轮,然后点击切换RGB/HSV/TMI, TMI对于灯光颜色控制更加方便,第一行控制色温)
05从工具架中点击创建环境灯光,设置颜色为偏蓝色
06调整当前视角,ctrl+点击camera工具架按钮,会在当前视角中创建一个摄像机。
2 设置要给渲染节点并且渲染
总结:创建一个ROP(render operator,比如,一个全局渲染节点)切换到PBR模式,这个是最新的推荐的使用的技术
01创建一个ROP网络,当你在obj层级创建rop节点网络,我发现更容易在场景中切换跳转。
02进入里面,创建一个mantra节点,默认设置会直接指向你刚才创建的摄像机cam1
03在rendering 标签下,设置rendering engine 为physically based rendering(PBR)物理渲染引擎
04在主视图,切换scene视图为render view渲染视图
05点击视图左上角的render按钮
07可以看到你的茶壶场景
3创建材质
总结:从palette材质库中创建一个材质,赋予给物体。如果没有准备好,请回到obj层级。
01创建一个SHOP网络
02在右下角标签上找到 material Palette标签
03在material pallete右边,点击上下箭头可以关闭它。
04可以点击小三角把它打开
05在左边,找到general类别下的mantra surface节点,从上向下数应该是第6个
06把它直接拖拽到/obj/shopnet1下面,你会看到一个方形的名字 mantrasurface
07回到network标签,进入shop网络,就能看到你刚才创建的材质
08直接把这个材质昨天拽到茶壶上(这个同样可以在render视图中操作),这样就完成了材质赋予。
另外一种赋予材质的方法就是从obj物体上
1回到obj网络,找到grid节点,找到material标签
2点击一个小节点图标,一个选择器会弹出
3选择 /obj/shopnet1/mantrasurface,勾选export relative path相对路径,点击accept接受
如果你让渲染视图自动更新,你会发现物体材质在更新
需要注意的事情
material palette类似maya的visor,比如,有一个地方存储和获得预制材质。像visor一样,非常奇怪并且没有人真正的用它。由于一些奇怪的原因,sidefx决定使用这个地方来防止mantrasurface节点,而不是在SHOPS使用tab获取mantra surface节点,这种情况下通常是空的容器。也许在将来版本会修改?
我发现使用相对路径 ( ../shopnet/mymaterial )比绝对路径( /obj/shopnet1/mymaterial )更容易读取。特别是对于你需要整体复制的时候,必须使用相对路径。
mantrasurface 节点是houdini最新的更新万能材质。mia_material/vray/arnold等仰视结合的物理材质。它包含difuss漫反射,2个反射层(基本和外壳)折射,半透明,发光,透明和支持贴图还有大部分参数。在H14中中进行整合,tab标签更加清晰,材质参数命名比之前更加好。在mantra surface之前的是surface模式节点(在palette中mantrasurface下面还可以找到)
对于mantrasurface节点的一个很好的特色是你可以进入里面查看它的节点链接方式。不好的特色就是里面感觉有带你混乱,而且刚开始会感觉很多节点。不要想着一次性全部理解,而是你要专门某个点然后去了解,大部分都有很清晰的标注
其他的houdini使用者可以做他们的多合一的物理材质。pbr材质非常有用。关键的差异是它是用vex语言编写而不是vop 节点,所以他设计为不可分割。并且还有对disney bsdf材质的重新构建的节点,值得探究一下。
4材质属性覆盖
总结:比如一个材质属性(假设是baseColor),在物体或者点的层级创建一个相同名字的属性,赋予一个新的至,那么它会自动覆盖材质中相同名字的属性值,非常强大。
在物体obj层级进行覆盖
01编辑material基本颜色,渲染,teaport和地面都是绿色
02把鼠标停留在这个baseColor的标签上,注意到它的名字是baseColorr baseColorg baseColorb。它的矢量名字是baseColor
03选择茶壶,找到material标签
04点击material name最右边点击下拉列表,选择select and create local material parameters,选择和创建一个局部材质参数
05在弹出菜单中,选择baseColor 然后accept
06让这个颜色改变为红色
07渲染视图中显示红色茶壶和绿色地面。即使他们都是使用相同的材质。
从相同的下拉列表中,你可以选择复制完整的材质界面到这个物体本身,或者重制会默认,或者移除局部覆盖。下一步我们会在点level进行覆盖
在点层级进行覆盖
01进入一个grid物体,添加一个point vop节点,点击显示标签
02进入这个pointvop节点
03创建一个bindexport节点,设置类型为color,修改名字为 baseColor
04把属性P直接连接到bindexport节点中
05网格中基本baseColor材质属性被point的baseColor属性覆盖。
这个点层级的覆盖操作会自动识别你需要修改的属性名字,然后设置属性。我喜欢使用pointvop系欸但,所以我可以使用vop textures或者其他技术进行驱动。
6给面赋予材质
总结:material节点可以让你每个面单独赋予材质。
在maya中做每个面的材质赋予风险很大,当你改变render layers时候更是灾难性的。但是在houdini同样的操作确实没问题的。赋予一个material节点,高数它你想要哪个材质,完成。如果你定义了面组还可以对整个面组处理
01在左手边视图中,确保选择模式是面模式,按4快捷方式。
02在左右边视图中,点击箭头,切换为选择模式,快捷方式是s
03在视图中矩形拖拽选框。
04 在视图中按tab(这个非常重要),选择group节点,那么houdini就会基于视图中的选择分组。
05对于另外一个面组同样操作
06添加一个material材质节点,选择一个material,通过组的下拉列表选择组,那么覆盖的材质会自动限制在选择。
7点颜色(Cd)还有Alpha
总结:颜色属性是Cd,alpha属性名字是Alpha(注意大写的A)
mantrasurface节点默认设置就是会读取点颜色和点Alpha值,如果他们存在(他们会和shader的颜色相乘)。唯一需要注意的是就是要写对属性名字
颜色非常简单,在一个vop网络中,它就在output节点中Cd.Alpha的属性不在列表中,很多人都意味默认那个Af属性是alpha指,或者是其他af?或者是opacity,最后面才想起是 Alpha,数据类型是浮点。
AOVs or Extra Image Planes
8AOVs分层渲染方式 或者图片分层
houdini把这种方式叫做Extra Image Planes 额外图层渲染,其他人都叫它AOVs:a renderman acronym for Arbitrary Output Variables 这是renderman渲染中的任意输出属性变量的功能。虽然感觉步骤有点多,但是另外一面就是你可以有做你想做的任何事情(类似于houdini的其他功能)
8.1在shader中定义AOVs
在材质中,任何你连接到bindexport vop中的属性都是可以在AOV中使用
1进入shopnet中,然后在mantrasurface shader
2创建一个bindExport 节点,名字为myaov,类型为vector
3把input中的N连接到它的input
现在你有一个myaov的属性可以用于AOV输出了。
8.2把AOV 到rop
1进入ropnet,选择mantra节点
2选择image标签,extra image planes次级标签,这里有一些预制的AOVs属性,但是我们需要自定义的属性。
3点击+按钮,添加extra image planes 输入框显示,然后次级参数会显示
4在vex variable field中输入 myaov这个属性名字
5确保vex type类型为 vector type矢量类型
6渲染,会在视图中看到通道默认是C 颜色,选择myaove
7这里看到就是之前定义的aov属性