—— 微资讯 · 微课程 ——
利用零碎时间,走上超神之路!
4月22日的houdini全球分享会Mardini HIVE在youtube houdini频道进行直播,包含了十多位的艺术家的的分享。CG猎人做了关于houdini学习思路,方法以及本质概念的分享。
相信很多同学也收集和看过了不少教程,无论是国内还是国外的,也照着做了不少案例,但是具体到了实际项目却总是遇到各种问题,然后有些问题问一下群里就有回答了,有些却是抓破头也想不到答案,特别是按着教程一步步做但是结果就是不一样?总是感觉自己在抄教程的流程,而不是自己可以思考和创建。永远卡在了入门前这个级别,很多知识点似懂非懂。仰望各位大佬能做得又快又好,甚至是身边有个别小伙伴一路升级打怪,自己却停留在原地。如果你有上面的困惑,这次的分享就非常适合你了,如果你自认为是大神,请忽略。
今天把视频也分享过来,不过由于是机翻译,不是特别准确,我也没时间用中文重新录制一遍,所以把PPT和中文内容用文字整理出来,辅助视频进行讲解,希望对大家有所启发。
全文6500字。
我的houdini哲学观
关于houdini官方的举办的Mardini challenge每日挑战赛感想
1我个人认为是每位houdini艺术家一生需要参加一次的比赛,很累,很抓狂,但是让你每天从拿到一个关键字开始,进行构思创意,到最终制作实现,短短的几个小时就要出一个作品,充满了不确定性和困难,结果是收获非常大的。我也鼓励更多中国艺术家可以参与到整个比赛,能够获奖固然很好,即使不能获奖你可以在比赛的过程中更加深刻地了解自己。2我最主要的目的还是想看看自己的极限,31天做31个作品只用houdini,能够做到什么程度。经历了一次次的突破,很多之前想都不敢想的大特效也是一天全流程做完。(特别是我的作品几乎都是视频,每天需要预留8个小时以上的渲染时间,而且容不得半点出错)
3在比赛的过程中,通过和其他比赛选手的交流和我自己的反思,我决定利用这次分享会分享我自己对于houdini学习的见解。我觉得这个比分析单一具体的案例技术更具有价值和更加紧迫。我们不缺技术和案例教程,但是无论在国外还是国内网络上,我都没有找到过类似的关于houdini原理和本质的分享。
道
我最喜欢的中国传统哲学:道
道生一,一生二,二生三,三生万物。
我对于这句话的理解是:任何复制的事物都来源简单的事物,所以不要被复杂的外表所蒙蔽。
任何复杂的事物都是由一个个简单的个体构成,所以学会把复杂进行拆分,然后一个个攻克。
<houdini之道>简介
结合上面提到的道的思想,CG猎人开发了<houdini之道>课程,关注CG猎人的朋友应该都有所耳闻。houdini之道目前一共有7大卷,1000多个视频教程,包含了houdini的SOP,VOP,VEX,redshift和mantra视效开发内容,一个个模块进行攻克,每个节点和参数进行完全详细的讲解,不只是简单的翻译,而是要把节点背后原理讲解清楚。并且在整体层面上,又兼顾了知识的连接性和系统性,做到由浅入深,逻辑体系。后面计划继续推出动力学卷和游戏引擎HDA交互等教程。我知道要把houdini完全讲完是一个"不可能的任务",但是我作为一个houdini导师和超级爱好者,我喜欢接受这个挑战,就看自己能够坚持多久了。
声明
我所分享的观点都是个人的关于houdini的理解,不代表SideFX官方。其中有很多不精确的表述是因为我需要对一些专业名词进行简化和用人类能够听懂的语言进行表达(用一个专业术语去解释另外一个专业术语除了装逼没啥具体意义)核心点还是在于如何把复杂的事物简单化。
对于houdini的思维方式
网络上这张非常著名的houdini学习曲线,相信大家都看到过。很多初学者对houdini都是感到害怕的。但是我们回归本质,houdini只是一个人类设计出来的用于帮助解决某些问题的工具,本质上和铅笔,钢笔没啥不同,我们不应该害怕一个工具,对吧?回到这张图,其实很多人只是看到局部真相,也就是从A点到B点的陡峭的学习曲线。我把B点定义为breaking point,也就是houdini之道定义的真正入门。一旦你达到了B点,那么完全掌握houdini成为大师只是时间的问题,比如到达C点,没有任何东西可以阻挡你。这就是你会发现真正入门houdini的人都不差的原因(所谓的大神)因为他们抓住了本质,无论了跨模块学习,还是新版本houdini新功能,本质都一样,可以用非常短的时间进行掌握。Mardini比赛中公认最难的是第四周 生物(动画)周,涉及到了非程序化的生物建模,绑定和动画,我之前是一直没有碰houdini的绑定,对chop也只是会用,但是这一周我就花费了几个小时就可以把绑定动画流程和chop给了解了并且直接运用,反而这周我是获奖最多的。不是因为我有天赋,而是其实本质东西都一样,要迁移学习非常简单。相反,你们也会看到有一些houdini用户把houdini当maya用了,好几年了还是局限在某个模块,然后houdini一更新,改变了一些旧流程,取消或者改变了某些节点的参数就慌了,这类人其实还没有达到我说的Breaking point,不管他单项目操作多么娴熟,点工具架多么流利,只是在记住流程而已,和真正入门houdini差远了。目前市面上有非常多的教程,特别是SideFX这几年的在社区的发力,你能找到各种教程,社区,讨论帖,分享活动,比赛等,几乎你遇到的任何houdini问题都可以在网络上找到答案。这肯定比4年前我自学houdini容易多了,而且以后也会越来越简单。但是,任何事情都有两面性,教程多了,对于新人来说就晕了,收集了一大堆教程,没有系统和体系,不能够承上启下连贯学习,都不知道从哪里开始。而且老是会站在这山望那山,变得浮躁和焦虑,恨不得一周就成为houdini大师。我要说的还是先抓本质,其实你会发现大部分教程都是差不多的,换汤不换药,即使效果可能完全不一样的两个教程,很有可能底层知识都是一样的,没有掌握的本质的同学很容易被忽悠,比如一个爆或者一个喷火,就可以当作两个不同教程,实际上底层大部分都是一样的,而且学习和记忆的都是表层的知识(在展示视频中houdini操作部分有表现)。
必要知识
最多被提到的问题就是我学习houdini之前是不是需要掌握某些知识,比如编程,数学,物理和英语。如果你已经精通这些知识,houdini对你来说就非常简单了。但是你如果都不具备,那我们就换个思路,干嘛要先学这些内容再学houdini呢?而是利用houdini作为一个工具反过来学习编程,物理,数学和英语。我中国人,并且本科是文科生,所以编程,数学,物理对我来说都非常陌生,英语也不是我的原生语言。不过正是因为我用houdini之后,才觉得编程,数学,物理非常有意思,学起来更加高效,因为你可以直接在houdini这个环境中进行各种可视化和直接运用,看到效果,比如矩阵,算法,流体力学这些,如果你只是看书本的文字和图片,肯定难学多了。实际上,学习houdini和使用houdini让我变得更强大(人在用工具的时候,工具其实也在改变人。你手里拿着锤子,那么所有问题都是钉子)。事实上,将来我还计划让我的小孩用houdini帮助他们的中小学课程学习,这比只看书本和靠想象简单和有趣多了。顺便说一句,正式因为我的身份和大部分同学一样,所以我教课的往往能够讲到重点,因为大家遇到的问题我自己也会遇到,无论是走弯路还是理解困难点,所以我也知道学习的痛点在哪里,我喜欢用更加简洁容易理解的语言进行表达,不装逼。通俗点说就是更加接地气和适合,这也是为什么我的教程受欢迎的原因。
一每日练习。
听起来很简答很普通,就是找一些简单的教程照着做,但是我觉得很容易走入误区,我这里强调三点。第一,要快但是要坚持,这两者是相辅相成的。比如每天花费1-2个小时,坚持一年以上。切勿一开始就投入得很猛,结果虎头蛇尾,一周都坚持不了,这样你是看不到任何结果的,只会打击自己认为学不会houdini。第二,每次学1-2个知识点或者技术点就足够了。比如如何使用ramp控制属性或者N法线的作用和本质是什么。注意,看起来简单,实际上很难。因为这里是要认真搞清楚而不是简单的拷贝和记忆,需要你收集大量的资料以及进行深度思考。比如关于法线,我就会找各种关于法线的教程和资料,甚至包括其他三维软件和图形学中法线的定义和作用。当然,选择教程很重要,不要选择那种好几个小时的综合案例,一方面你没有那么多时间,另外一方面知识点太多太杂,而且重复度很高。所以我比价比较喜欢就是半个小时左右那种专注于把一个简单知识点讲透彻的教程,这也直接影响了我录制教程的风格。第三对于每日练习没必要做一个大师级作品,甚至不需要做一个成品。如果你非要每天熬通宵,从头到尾做一个完整的作品,像我参加mardini挑战赛这种能够坚持一个月就很不容易了,如果要坚持一年,我估计你会成为一名聪明的头盖骨。重点还是每天每个练习掌握一两个知识点,然后坚持往复,一年左右的时间不真正入门都难。
二通过教来学
这个中国老话了,没必要重复。我在做houdini之道教程的时候,其实是反过来逼着自己一定要搞懂每一个知识点,以前制作项目的时候赶时间其实很内容都是模模糊糊得过且过,能够用就行,甚至有不少是理解错误的。但是要教别人就容不得半点马虎。对于很多比较冷门的知识点,我需要花费大量的时间和精力进行研究,结果还是非常值得的。然后,你还可以从同学的问题和反馈中得到启发。所以我也非常鼓励大家出教程,不要觉得自己段位不够或者讲的不好,只有大家都愿意分享,无论是收费还是免费的,都对houdini社区发展壮大有共享。
三一个个节点和参数地死磕。
这就是我在houdini之道中做的挑战。实际上我不觉得这个适合每一个人,因为这种死磕太花费时间了,我做了这个教程也是为了节省大家自己去专研的和走弯路的时间。有些节点功能比较偏门,只不过好处就是对于同一种问题我会有多个解决思路,实际项目效率会更高,特别是发现一些隐藏的节点功能功。
四以houdini开发人员的思维方式学习
这是我觉得比较高级的学习模式了。也就是假设你是houdini开发人员,你会如何设计节点和参数。有点类似于学霸在想出题老师应该怎么出题一样。站在更加高的维度来看问题。你要设计一个好的节点/功能,实际上考虑的很多因素,一方面要用户友好,避免太多复杂的参数和功能,另外一方面又要考虑能够兼顾大部分情况,这永远需要平衡和折中。然后我还会去思考节点背后的原理,用了什么算法,是如何实现的。houdini中大部分节点都是复合节点,可以解锁进入内部查看构架方式,我不断这样研究,我就越对houdini开发人员的设计理解,然后自己也可以开发出更多适合某个项目或者适合我自己习惯的节点。当然,要做到这一点已经需要具备一定量的积累了,毕竟学霸也不是一天养成的。
输入-处理-输出
本质就是数据流
我用了两年时间才感悟到其实houdini就是那么简单(两年前我在公众号分享过),无论你用什么节点,什么参数或者什么链接流程,本质就是数据流。所以很多时候你可以切换节点顺序或者换不同节点实现同一个功能,但是另外的时候节点顺序又非常重要。这也是很多初学者容易犯错误的地方。只关注process处理的过程而忽略了节点输入和输出数据。如果你的输入数据不正确或者不充分,不管这个数据是多么的相似,也是得不到正确的结果。这就是为什么很多初学者老是犯错但是找不到原因,明明和教程节点链接得完全一样,参数也一样,但是结果就是和教程中的不同。当你真正理解到IPO这个意义时候,你就真正在学习houdini了。
houdini中的专业术语 Data/attribute/variable/parameter
请问他们有什么不一样?在sop中我们给几何体创建attribute,然后导入到dop中就变成了data,在python/vex中我们把它当作variable然后在节点中我们叫它做parameter。虽然表面看起来不一样,但是本质都是一回事,对于houdini或者电脑来说,他们都只是数据而已。我们可以使用attribute或者data来驱动节点上的parameter,然后在houdini18.5,新增加了一个节点attribute from parameters,可以把节点参数转化为属性,最终把这些不同的名字全部统一起来了。所以后面我说提到的attribute或者data,实际上指代的是通过一个内容。
节点的功能
两大类:添加数据或者改变数据
我们看大部分的数据流程无非就两种,一种就是简单的一个输入和一个输出,另外就是多个输入或者多个输出。在实际项目中,通过这两个简单的流程不断重复运用,我们就可以做出一个非常庞大的节点网络,看起来有点唬人,但是本质就是复杂的节点和功能都是由一个个简单的流程和功能构建起来的。这就引出了我认为houdini最特殊的用户体验并不是节点(因为节点式软件很普遍,连maya现在也是节点式软件了)而是你需要不断使用鼠标中间查看某个节点中的数据,或者打开geometry spreadsheet面板查看具体数据值。这个是很多新人不习惯或者不重视的。实际上,视图效果和节点网络并不是最重要的,很多时候我们甚至会被骗。你以为添加了某些节点就会有正确属性或者视图中看不到就代表没有。但是实际项目中,我们经常要处理几百个数据,这些数据没办法同时在视图中显示出来,看不见不代表没有。比如烟火模拟缓存,我们经常只显示密度场,而设置温度,火焰和速度场不可见。还有一些数据比如四元数和矩阵没办法直接在视图可视化。所以其实最重要的还是数据流,这是大家在制作的工程中需要不断查看的地方。然后是进入houdini进行实际的操作论述,一共有两个小展示展示一,IPO本质和数据流,不在乎你用了什么节点或者流程,重点就是在于你创建的数据和数据变化。并且也展示了节点的作用两大功能,就是创建数据和改变数据。展示二,关于法线创建。主要是展示了什么是把一个简单的知识学透,只是死记硬背节点或者流程是永远都入门不了了,没有理解本质,一个小小的知识点就会把你卡死。同时,一个简单的效果可能涉及综合的基础知识进行组合运用,争取踏踏实实把每个看似简单的知识点弄懂,这才是我到达breakingpoint的秘诀。下面都建模/特效模拟/渲染 IPO 模式的展示,黄色框代表节点创建数据,而白色框代表节点修改数据,比如solver解算器实际上就是在改变数据,比如点的位置属性,速度,或者年龄等数据,所以这个IPO模式是适合于各个模块各种场景的,也就是我所说的houdini终极公式。
总结
把复杂的houdini流程抽象简化出来就非常简单了。我们可以导入外部数据,不管是图片,三维资产,还是音乐,代码等,都是数据的不同格式而已,或者我们创建初始化数据,比如一个点,小球,网格等。然后通过节点不断地添加数据和编辑数据,这时候就涉及了所谓的程序化与非程序化操作,比如Edit节点,就是通过非程序化改变了P位置属性等,最后我们输出缓存或者渲染图片,还是数据的不同表现而已。看似复杂的houdini,我们有不同的节点多种流程实现同一个效果,但是最重要的还是本质上是在处理数据流,无非就是创建/添加数据和修改数据。
程序化
程序化这个概念用我自己的理解就是找关系。无非就是找节点与节点之间,或者是参数与参数之间的关系的关系而已。但是本质上,就是数据之间的关系。
有些数据是一对一的驱动,有些数据是一堆对多的驱动,有些数据是同时被多个数据驱动。有些关系是直接和简单,比如线性算法(加减乘除)有些是复杂的,比如非线性计算或者综合算法。但是无论如何复杂的关系,都是源于简单的关系,对吧。
simulation特效模拟
这是houdini最强大的模块之一,也是大部分人想学houdini的原因。但是我不建议初学者直接上手就学特效,大部分都是直接劝退的。我认为SOP才是houdini的本质核心,你可以在里面学到需要的所有数据。而simulation只不过是sop中数据的动态版本而已。关于动力学本质上就是数据的动态或速度的可视化。非常好的阐述了simulation的本质,这个概念以后在houdini之道动力学卷中会详细讨论和不断运用。
以后有时间再分享上面内容,这些都是不是具体某个节点或者功能,而是houdini构架的一些核心原理,我们经常遇到,但是很多初学者都没有搞明白的地方,也是比较少教程回去探讨的。比如point与vertex的关系,点与属性的关系,层级之间的关系和转换,VDB和vloume的对比等等。这些内容做成教程并不炫酷,不像直接做个爆炸或者水特效一样,但是却是非常重要的基石,要深入了解这些内容的确需要花费不少功夫,其实很多我在教程以及在公众号都分享过了,大家有兴趣可以找一下公众号历史文章。
【原创教程】houdini17中的终极公式IPO_vop和vex字典015
【原创教程】primitive,polygon和mesh的大对比_houdini之道02_01_04CG猎人原创完全入门教程发布
【翻译】houdini大神自诉:为什么我要放弃maya I:houdini强大地方
【微翻译】国外houdini大神给你的入门建议
最后感谢SideFX提供这个分享的机会以及大家的捧场,希望大家都能愉快地玩houdini!