houdini大神自诉:为什么我要放弃maya II houdini的学习方法

原文地址:http://www.tokeru.com/cgwiki/index.php?title=MayaToHoudini

由CG猎人独家翻译,转载请注明


这期为大家翻译了一篇houdini和maya大神做的软件对比,注重展示两个软件的差异和houdini的强大的地方。文章有点长,小编分两次内容更新。 现在是第二篇,主要从关于如何学习houdini展开讨论的。


内容

6学习houdini

7词汇术语-为什么houdini一直谈论是points而不是vertex

8基本:maya中transform节点和shape节点vshoudini中的obj层级和sops层级

9 Rops vs 全局渲染

10takes分层渲染VSmaya的render layer override

11houdini的视图显示vsmaya的视图显示

12用户界面

13python语言 把任意物体拖住到编译器

14 项目结构

15使用http 路径来价值贴图,一个很好的方法

16mplay介绍

17到处都是内置的线性工作流程

18其他对于灯光师和开发者有意思的地方

19houdini虽然强大,有不好的地方吗?

20相信?


学习houdini

houdini是第一个提供免费的非商业版本的三维软件,现在依旧有。它的限制非常小,它可以保存自己的格式,在视图界面角落会有一个小水印,在渲染的时候会有一个大一点的水印。你可以加载商业软件的文件,但是使用商业软件加载非商业文件把软件临时降低为非商业版本。

网络上有很多学习资料,大部分是免费的。但是没有什么书籍,我有的两本都有点旧和过时了(但是如果你一定要有,那么Houdini on the Spot这本书挺好)

sideFX自己提供了很多小的视频教程和大师班课程,Peter Quint在vimeo中有大量的教程,还有很多教程网站比如3dbuzz, fxphd 等都在更新教程

houdini的帮助文档也相当好,每个节点都至少有一个案例你可以直接加载到场景中,一些比如cloth布料等知识点会有十几个案例不等。

事情是,一旦你突破了部分限制,你其实就会自我学习。加载一个场景,设置节点,理解,断开某些节点,连接到其他地方,看看发生什么事情。一旦你理解到UI,你可以进入窥视里面的功能。

theOdforce 网站同样一个很好的资源网,人们经常在那里提问题,解答问题的天性促使答案会在一天就被回答。与maya不一样,houdini可以经常上传文件,因为是节点式流程鼓励分享文件,我最近也经常回答别人问题,这也让我学到更多。

sideFX 工作人员好像每几个月就全球旅行,去到那里都提供一些讲座,学习课程等,他们一起分享学习,这是maya社区所缺少的。


术语-为什么houdini一直都是在研究point点

通过一个反例来很好说明;为什么maya要把粒子和点当成两个事情?或者更进一步,粒子,点,曲线CV,nurbsCV的区别是什么?回答是没有区别。粒子是3D空间的中的一个位置,点也是3D空间的一个位置只是连接到其他点形成模型,CV点也是3D空间中的一个位置不过连接到其他CV形成nurbs模型等,所以houidni以共同的特征属性定义,就是3D空间的一个位置。把它当成独立个体,更低的层级,一个点。点与点连接定义更高级别primitive,2个点连接生成线,3个或在多个点形成边创建面,把两个个polygon连接起来创建一个mesh(那些用于连接的点称为vertice这个和maya的点不一样)每个层级都可以存储数据并且使用特定方法控制,但是你知道其实你可以把任何事情当做是点处理,不用管它最后组成了什么,它是houdini里面的基本处理对象。


基本:maya中transform节点和shape节点vshoudini中的obj层级和sops层级

希望你能理解maya的形节点和变形节点。形节点可以是简单的多边形节点,也可以带有很多历史的形节点,最终输出一个形节点。形变节点作用是把你的形节点在世界坐标中移动,旋转和缩放。

有时候你意识到maya显示的 transform -> shape -> construction history(构建历史)很混乱或者不连贯。大纲视图是所有transform的中心,默认是隐藏了形节点和构建历史节点。如果你显示他们,形节点类似于父子连接的形式与形变节点下,但是构建历史却是在形变节点后独立的一堆节点。超图让你可以切换transform节点视图和DG节点视图,但是每次切换视图它都会重新自动排布,并且在GD层级中的节点连接是非常难读的。整体的感觉就是很复杂,不能动。

houdini也有这样的基本概念,但是在显示和交互方面有几个非常重要的不同点。变形被当做是个容器。在容器里面的节点连接在一起形成一个最终的形节点,这个最终节点由形变节点移动。核心概念和maya一样,但是虽然maya是通过outliner大纲视图和hypergraph超图来管理和显示这些节点,houdini让它更加直接,它通过在node形式在 网络中进行现实。默认情况下,节点网络显示所有的transform,类似于hypergrahp。双击transform节点然后进入到里面,查看它的构建历史(次级节点)

一旦进入到物体的内部接口,hoduini和maya的差异就更清晰了,实际上更像nuke。maya使用节点,并且有少量工具来修改他们而houdini和nuke设定用户体验都是关于节点,所有他们都有相似的重要特点:

节点布局如果保存了,当你再打开的时候,它保持不变;

你有注释,框选整合,节点颜色等工具来帮你整理和移动你的节点;

数据流在节点间尽量保持更加轻薄和整洁,所有应该很容易了解数据是如何移动的;

你可以节点分支连接,暂时同时屏蔽某些节点,然后再连接......你可以任意测试节点,这个在maya是很困难,甚至是不可能的。

最后一点是非常有意思的,无论什么时候你进入maya的构建历史中,总是感觉很奇怪;一切都不简单,很多节点都是依靠脚本正确连接起来。houdini非常鼓励你进入节点里面,试着添加其他节点,关闭一些节点,看看会发生什么;添加某个节点然后觉得这应该会更好。他提供了一个用节点搭建的游乐场,这个是maya不具备的。

同样,与nuke很像的是他可以把几个节点打包,添加一些参数,然后你可以整体控制和使用,houdini完全可以这样做。工具架上面包含节点网络,关于打包和解包容器,意味着你可以特定效果存档,拖拽到工具架中,并且知道不需要再写代码就可以重新使用它们。在houdini中开发工具的门槛远远低于maya,maya至少需要对MEL和python掌握到一定水平才可以实现,类似于技术总监级别。


Rops模块VS全局渲染

对于渲染和分层渲染同样使用node节点原则。不像maya有一个单一的全局渲染面板,houdini使用另外一个节点视图,每个节点代表一个渲染进程。每个节点包含一个你所知的渲染引擎节点;一些列的物体,灯光,摄像机,帧范围和渲染设置等等;

如果你把渲染使用节点来表示,如果连接这些节点会发生什么呢?这就创建了从属,所以如果你让最后一个节点渲染,所有在他之前连接的节点都会一个接一个地渲染。一个很典型的渲染流包含烘焙阴影,然后是间接光照的点云,然后拆分到不同的背景,中景和前景渲染层,你甚至可以在这些节点中插入控制节点来指引这些节点该怎渲染,每个节点是一帧帧渲染,或者可以先让一个节点全部渲染完再渲染其他节点等,非常强大。


takes VS 渲染图层覆盖

如果每个rop node节点都有一个render layer控制,那么分成渲染是怎么实现的呢?houidni有它自己的分离系统叫做takes。功能上,它基本上和maya的renderlayer功能一致。你创建一了新的take,然后把物体属性关联到这个take中,然后根据你的设置改变参数。切换到其他的take会让这些参数保持不变。在maya中,maya会把被覆盖的参数用橙色标志,感觉是被激活,显示已经在renderlayer中被修改。在houdini中的方式不一样,当创建了take,所有参数都变灰色,反过来,你可以激活需要的修改参数,这样就把激活的参数连接到take中。

一些houdini好处对比:你可以打开take面板查看这个take中修改的参数。take支持相互嵌套,所以可以做一个基本的take设置,然后在下面再嵌套细分一些take参数,子take会继承父take的参数覆盖。take和渲染是是相互独立,它对其他操作同样适用。因此 ,名字叫做take,类似于电影一样,你做这个镜头叫做take1,然后创建take2修改参数,take3又修改其他参数等,相互不影响。

把这些take引用到渲染器中,在渲染中有个下拉列表叫做 render with take,你可以在这里指定使用哪个take进行渲染。

有意思的是,我这段时间一直没有使用过take,我大部分认识的houdini用户也不用。有可能是因为现在我没有做灯光工作的原因,但是更大的原因是如果我想测试不同的参数,我不会使用take,因为这在节点网络中不直观。如果不是在节点网络的中节点,我感觉就不是houdini的工作方式。更常用的方法是直接使用节点分支出来,改变,然后把名字修改为清晰的,比如 输出阴影或者其他代表性的名字。rop渲染这个阴影通道会直接指定到这个物体,不需要使用take。


houdini的视图显示vsmaya的视图显示

我以前常说maya在这方面有优势,但是现在我并不确定。如果你看maya的demo视频,他们在viewport2.0视图显示非常好;各种材质,阴影,ao,粒子,体积都是以30fps的帧率运行,是不是很强大?但是在现实中,我知道很少用户会直接使用viewport2.0工作的,它很容易出故障并且很多使用警告;通过调查统计,大部分人还是使用传统的视图显示模式;

如果你看houdini的demo,他们也有类似展示;炫酷的材质,实时灯光和ao,还有其他模式等等。不像maya,houdini用户是真正可以在工作中用到的。一个关键差异是houdini是没有旧和新的视图模式概念,他们都是统一的,对你的显卡提出合理的要求,没有那些Nvidia4年内都达不到的要求。

maya做得比较好点就是在视图中显示程序化贴图效果。如果你有耐心,你可以把ramps加入到layered texture,叠加程序化噪波和bitmaps贴图,然后在maya的solid模式可以看到最终结果。houdini可以很好的兼容物体点颜色和最后材质混合的结果,但是如果在编辑较为复杂的mantra材质,在视图中是看不到最终结果的。这个正是因为VEX强大,在mantrashader底层的语言,比GLSL可以做更多的东西,所以很难自动把这些结果给展示出来。

如果你只是用houdini的标准材质,houdini做得更好。最近更新的物理材质可以让你定义不同的贴图和置换效果等,sideFX设置支持GLSL的代理显示。houdini15.5甚至直接支持视图显示置换效果。环境灯产生很好实时的圆顶光照(这个支持HDRI)区域灯光也比较接近。

如果你相当热衷于houdini的实时显示效果,有时候视图会卡主,即使你删除了它。这时候你可以通过新建一个新的3D视图解决这个问题;但是还是挺烦的。


用户界面

比maya更加可配置性;多种浮动的面板,或者可以任何面板放在一起,可以任意复制面板数量,任何你想做的事情。类似于nuke一样,尽管我不不需要怎么改动。大的节点编辑区域,小的3D视图,后面还隐藏了渲染面板和其他面板,下面还有小的tabbed可以用于python控制,属性spreedsheet列表和hscript提示

alt-或者ctrl-b会最大化视图,需要一段时间适应不按空格键(maya中空格键是最大化视图)


python语言,可以吧任何东西都拖拽进控制台

有时候让我烦恼的是我在houdini找不到像maya一样的mel输出窗口。基本上每个人都是这样学习mel的,你在视图中操作,然后看mel编辑器中的命令,拷贝他们,开始做你自己的编程。这个有用是因为99%的maya UI都是以mel来写的。这就让它如此灵活同时也很慢。houdini的python节点界面不允许你实时看到运行他们的命名,所以这需要花些力气去理解发生了什么事情。

那就是说,一旦你想通了,houdini中的python就相当简单。这里值得写一大页,但是有一个好技巧就是可以把任意东西拖入到python的控制台,它会显示一个正确的python物体路径。这不仅仅是物体和灯光,界面都可以。


项目结构

houdini14之后就可以创建和maya类似的工程文件,这很好。这个类似unix的变量样式,所以你可以使用$TEX/foo.exr的格式来获得其他贴图路径

使用http 路径来价值贴图,一个很好的方法

houdini有意思的技巧,当定义了贴图路径,你可以设置相对路径,或者精确 路径,或者带有变量的路径,或者如果你想,直接使用http地址都可以。这个对于在网站和email中分享hip文件非常有用。

Mplay播放器

是houdini版本的fcheck,虽然很早就有了,但是可以满足你大部分需要。内存缓存序列,应用Lut,调整曝光,伽马,加注释,转化文件等都是非常方便。

到处都有内置的线性工作流程

Mplay默认使用视图伽马2.2,因为mantra默认所有灯光都是线性灯光。

对于灯光师和开发者有意思的houdini特点

有一些可能上面已经提到过了,但是总结一下

只用买一个houdini软件,你就可以使用mantra的渲染农场(你需要把你的houdini场景导出ifd 没帧的文件,需要一个lincense,所以如果你需要同时运行渲染农场工作,你需要多license)

houdini同时带有一个渲染农场管理软件 hqueue,但是现在还没有找到用户使用信息;

houdini内置一个合成系统,虽然不如nuke强大,但是还是很方便

相似的,买了一个houdini软件,你可以在任何工作组机子上使用mplay,任何数量的机子都可以。

sideFX每天都会更新维护,发现bug立刻维护修正。


houdini的不好的地方

有一些地方

节点很好,节点很棒,节点这个概念贯彻整个houdini,但这也带来另外一个问题,满屏幕都是节点......如果其他人接受一开始也会懵逼,所以你需要写一些注释是如何设置的,即使有各种辅助措施,但是对于交接还是有点麻烦的。

嵌套节点,houdini不允许某些节点在同一层级,比如foeach节点,但是houdini15后有改进。有些节点可以在某些节点内部出现,如果你使用正确,这很好,但是如果你不注意,那就很难控制了。我看到了sopnet中包含dopnet然后有包含shopnet的,各种混乱的情况。在shopnet中情况更是如此,可以高达10层嵌套。

没有统一的物体/渲染网络;对于灯光渲染师,希望的是对着一个渲染面板调整,而不是在不同的sop,rop,shop等层级跳来跳去。缺少渲染物体列表来查看物体是否存在于场景。kanta在这方面做得比较好。

旧的复杂的模块没有好的文档:sideFX在最近几年对于他们的文档注释做 很大的提高。mantra从没有说明的渲染器到现在有大量的的文档说明但是DOP和Chop现在还没有像这样子的文档,这一个比较难上手。

学习是无尽头的,基于我之前的观点,我打赌这里有很多原因为什么文档落后是因为sidefx没有专注于吸引新的 用户,而是专注于提高强大的用户做出更牛逼的作品。所以他们经常先推出功能,而说明还没有跟上,或者希望用户会自己发现用途。这个对于每次新版本发布情况都一样,所以对于有经验的houdini的用户有一堆工作要做,否则你会发现你的技术过时了。你可以使用过时的技术比如H9的粒子设置和H10的流体设置,或者H15中grain特效。文档好像不怎么解释新旧对比,唯一能有的途径就是通过odforce论坛讨论。

houdini希望你是用过houdini的, 问题的重点就是如果没有几年的houdini使用经验,你都还没有对旧的节点有足够认识 to new style dops, to new pop dops, to flip, to pyro, to pyro 2, to FEM, to cloth, to grain还有一大堆新知识等着你去挖掘,并且没有太多有地图你去参考的。在网络上多个大师课程挺好的,不过有些事过时了并且到目前为止我也还没看到最新dop的工作原理,我不断地探索和斗争,如果有一个合理的用户文档会好很多。

$VAR vs @attr, hscript vs vex, point sop vs wrangle sop (and also python)  大杂烩。使用$VAR,hscript,pointsop是houdini传统的做事方式,语法虽然奇怪,但是还是可以很好的运行。 @attr, vex, wrangles是新的方法,多相处并且更加于内部统一,但是要把旧的用户使用方式转化过来比较困难,并且总是有些地方是用户很难做到旧的方式的效果。更坏的情况是,很多教程,视频等都仍然使用旧的方式。对于新的houdini用户就更加混乱了。我建议是尽量避免旧的方法,直到你感悟到houdini的禅中,你会对于你所做的有更升入的了解 。H15同时带来了一个受欢迎的改变,你额可以使用@attr语法在更多的地方,而之前只能使用$VAR。

还有就是python语言,很少有软件会支持3门编程语言(如果你算上C++是4门,如果包含底层UI是5门,如果加上XML是6门)不像maya,你并不需要了解很深入的python,在houdini中使用。他主要是流程的操作,再此说明,除非特别需要,可以直接跳过。这还有python的houdini.API 需要学习,虽然不是很完善,但是可以用。

最后整理一下,我希望最后可以使用90%的vex,8%的python和2%hcript

上面这些可以说服你吗?


(0)

相关推荐