加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]2014年09月23日

(2014-09-24 11:43:28)
标签:

转载

分类: 资料收藏
原文地址:2014年09月23日作者:whiteindream

源文出自——潘多拉CG

这是一篇基础的houdni教程,它所包含的内容很有限,把学习内容都搬上来就成了HELP.所以我把他定义成一篇带你入门的教材. 目的是希望国内能有更多的人去了解和使用这款工具. 只有使用的人多了才有更多交流和互相学习的机会. 但是,这绝对不是手把手之手册.如果最基本的那些操作你都不愿意去看,那就..... 这将是一篇又臭又长的文章,望大家漫漫等待序每款动画软件都有着他们悠久的历史,houdini也一样. 不用去一一罗列,只要说十几年前的那部终结者II,你一定会记得那水银人的精彩特效.就是用houdini完成的.在之后十几年里,houdini一直在电影特效领域占有着很重要的地位.不但因为它总在为使用者提供着强大的各种大小工具,而且一直紧跟着时代的步伐,sidefx的开发团队持续的在对一些已经过去式的部分进行着重新的规划. 

再次就是houdini是一款开放性极高的平台,很容易的嵌入到Team work flow 中而houdini在国内一直是处女地.鲜有人愿意或者是持之以恒的去使用它,其实即便在国外,houdini的使用群也是很集中的.原因是关于houdini的教程实在是很少,再次就是它的GUI的不友善,往往有人打开半天尽不知从何下手,再次就是houdini相比maya,max等会更早的接触到一些....的运用。


如果你想学好houdini,你需要具备或赶紧去学习哪些知识而不至于半途而废呢? 

1:确定自己是一个有着其他软件丰富运用经验的人,这样你至少对要做什么有些了解. 

2:尽量把学会的软件操作忘记.那些对与houdini不合用,有空可以侃侃SHAKE,NUKE这样的node tree, 

3:如可能,学习一些类C的知识,你是一MEL Advance,或者是TCL/TK高手,或者你已经开始使用python,那许多环节将变的容易学习,因为houdini支持类Cshell的Hscript, TCL/TK. python 3种途径, 

4:如已经把高中数学忘光了,那么请回去把至少三角函数,向量运用复习好, 

5:如对他的向量语言(VEX——Vector EXpression矢量表达式)感兴趣,一些计算机图形学的基础知识是要去看的,不需完全明白,但是要做到用起来知道到哪里去找, 

6:如你是一个renderman user或者馒头瑞user,那不需要重新学习,因为houdini无缝支持prman,馒头瑞,(过去还公然支持bmrt,Entropy,现在米有了) 

7:如想学习mantra.而你恰恰是一位renderman user,那么2,3天你就能完全搞定他,但如果不是,建议回去把renderman 从头开始学 

8:如果你对L_system或者metaball或者isosurface有深层兴趣.......去查询资料吧注:千万别认为可以从help中找到所有你要的   


Houdini几大模块 

Houdini 分 OBJ SOP SHOP VOP POP DOP COP CHOP ROP 几大模块,之所以都有OP,实际就是Operate& Parameter(操作器和参数)的缩写。

而这些模块分别操作:

OBJ(object物体transform层)

SOP(Geometry sharp层)

SHOP(shader材质)    

VOP(图形化编写vex & rsl工具)  

POP(particle) DOP(dynamics动力学)    

COP(后期合成) CHOP(channel编辑)   

ROP(渲染输出)

默认是在Object根路径上,Alt+9显示Tree List可观查看路径结构

这些模块都是完全独立的,你可以从任何的一个模块中通过创建OPNetwork重复调用其他模块,彼此之间没有绝对父子关系(注:不是创建模块本身,而是创建可以独立调用模块功能的OPNetwork接口,按回车键可进入OPNetwork创建该模块功能网络结构)任何模块的OPNetwork。

Node都可以看成是一个文件夹.而文件夹里要是没有文件,那么文件夹本身也没有意义,当然你可以把文件内容或者整个文件夹复制剪切到任何同类型路径。  

Tree List则就可以把他看成系统中路径和文件列表.如果你经常需要做编译工作.一定知道如该路径并没有设置到Path中,也可编译,但是必须要cd 进入该路径。

Houdini的内环境使用脚本,同样必须OPcd /Path/ 进入该路径,才可以正确操作。 

比如建立一个CHOPnetwork,他本身不具有明显意义,按回车键进入子结构才可调用CHOP模块所提供的Function Node.而在这个CHOPnetwork里你又可以建立一个,比如COPnetwork.调用该COPnetwork的内容就变成了访问当前目录的子目录.原本的引用ch("/obj/model/myCHOPnetwork1/SUBCOPnetwork_1/ramp_1/rgbr") 就可以缩写为ch("../SUBCOPnetwork_1/ramp_1/rgbr")   

但有个列外,就是在Object模块下并不能够创建SOP,但是在SOP下却能建立Object, Object模块Operate的只是做搬运和定义的作用(如:照明、镜头、骨骼串联等基础信息),ObjectOperate是由SOP模块的工具或者在SOP中调用的其他的模块工具所搭建的,选择某Object Operate按回车键直接进入该Operate的子SOPnetwork可观看该Operate是如何构件的。

那么在具体的操作时,我们又如何去定义操作的象征意义呢?后期软件SHAKE、NUKE、DF中的Node Tree和Houdini是不同的。Houdini是很纯粹的Node Tree,对某个节点进行操作,只要建立某功能节点.将两个接点相连即可,有些甚至不需要在View视图中进行目标选择,甚至不需要显示,这在很大程度上节约了时间,因为有时候往往某些节点的运算是很漫长的。

如果你愿意,甚至在操作中完全不显示任何层级,只要在调用时告诉Node我需要调用哪个模块哪个路径哪一层就OK了。(如何选择,在节点上都有一些蓝色或者紫色的按钮)

 

一些容易混乱的而你必须正确的操作

1:除了ROP(渲染输出),所有模块都有View视图。所以当你从一个模块转到另一模块时,感觉UI没什么改变,实际不是,你可以很容易的从UI的颜色分辨出来View视图默认就象MAYA的UI一样,一些菜单以条状隐藏了,你必须点击显示他们。

2:以SOP的View视图为列,按TAB,出现该模块功能菜单,选取你要的操作。在一些情况下,在Network Editer面版上操作和在View视图中进行该操作的结果是有不同的。 

比如:进入SOP,在Network Editer面版上建立sphere,你会发现在View视图内产生球,但并不是选择模式,而直接在view视图中进行该操作则sphere为选择模式,并出现Handle。注意,只是选择模式不同,你可以点击左侧显示手柄的按狃来切换显示手柄。

3:选择节点,在View视图内按Enter进入当前节点编辑模式,按ESC结束当前编辑模式,编辑模式时UI底部出现蓝色提示信息

4:U进入父集,I进入子结构。

5: 在节点或者View视图物体或者Handle附近按右键,出现其快捷属性列表

注:在Network Editer比较重要的选项:

animatable Parameter 

spreadsheet

Type Projectise

Ctrl+右键出现当前视图编辑列表

注:在Network Editer比较重要的选项:       

Collapse select into subnet       

creat network box from select     

其实有很多很多很有意思的选项和功能,我这里只列举最基本最常用的哪些模块可以在开始先不看DOP、ROP、CHOP、COP、VOP

 

最最基本的节点   

1、我们往往从object开始, 其中最最最常用的就是Geometry。几乎所有几何造型动画都在Geometry里完成, 你可以在object模块下渲染,也可以在进入SOP渲染。或者回车进入Geometry节点子结构,默认是一个file节点,(注意:进入子结构你现在所做的transform和object Geometry提供的transform是local和world的关系)。

在SOP下按TAB,呵呵,出现一屏的节点,你一定昏了,别急,几乎所有的模块都有那么多。因为SOP是普通情况下造型动画的模块,所以首先了解SOP是重要的。

那么我们先从哪里开始呢? 这些节点你是首先要会操作的:

transform (不用解释了) 

edit手动编辑表面位移,注意操作一次就会结束edit,不要再去创建新的edit节点,按一下Q键可以重复上次节点操作

point极其重要的节点,是对点、法线等表面信息的操作,默认情况下创建或倒入的物体是没有颜色、材质、UV、法线信息的,必须添加point来创建这些信息。并且对particle信息的修改也可在这里操作。

2、group几乎很多模块都有group节点,它可以对点、面进行group操作。group的信息可以自定义也可以让Houdini自己动态生成。

group是重中之重,使用group可以操作出极其复杂的效果,很多逆向递归的操作也往往借助group。而且group的信息一直向下或者向上传递,在几乎所有node的参数中都有group选项,你可以只对group内容进行操作修改 

3、copy最常用的节点,很多人喜欢将particle信息和metaball进行copy产生动态化的metaball组,同时copy包括大部分的功能节都可以对input info进行修改,因此变化性更为大。

4、Merge (不用解释了吧 ) 

5、POP network我经常直接在SOP下建立POP network。这样显的更直观,我对particle的操作只要在SOP路径下的POP network下层做修改就可以了,其中point和group几乎成了所有场景复杂内容都会包含的节点。

下面这个场景我为大家由浅入深的建立了几个Object,让大家对基本的操作有所明了

 

那么有没有最基本的或者显而易见的模块协作的列子呢?

由于Houdini所提供的Node功能更象积木而不是积木搭建的成品,因此制作效果或者模块协作就变的很多样。我这里用图文举一种协作方式


 常见问题  

1、有象Maya里的add attr的功能吗?

答:attribcreate node负责为input node tree增加属性,在下层节中可用$name来调用

2、为什么Houdini没有支持FBX?  

答:Houdini的CHOP是一个强大的channel外部和内部读取平台,你可以使用编写*.chan文件从Maya中将动画信息导入并传递给物体。因此不需要FBX

注:网络上有些类似的工具,我也有自己编写的Maya-Houdini的工具,将在后面上传

3、Houdini中能动态读取每点信息吗?  

答:在POP中,$ID就是粒子ID。在SOP中,$PT就是点数信息

4、那么$PT就是点的ID吗?  

答:不完全是,实际上在很多情况下$PT会随着input info的改变而改变,因此他是动态的

5、point/add normal有什么主要的功能?   

答:许多与点有关的操作都会参考normal vector,当使用copy node将一个物体copy到refrence node的点上时,物体的默认方向取决与normal   

6、为什么mantra很慢  

答:实际上mantra并不比prman慢,但是由于他是一款内置渲染器,所以考虑兼容性问题,在一些地方产生谬余就很正常,mantra 提供了和rib相似的场景描述机制IFD,编辑IFD可以自定义场景信息   

7、为什么将metaball的数量复制多就很慢?  

答:在不需要编辑pre info的情况下,通常并不使用metaball+copy的方式,而是使用isooffset  

8、为什么输出I3D文件如此之慢?  

答:默认SIZE为128^3;即XYZ三方向各采128样点,128^3=2097125

 

 继续问题

1、什么功能是houdini 独有的

答:实际上对于TD而言,没有什么现有功能是HOUDINI可以独有的。但是对于一般USER来说,一些功能还是很具有诱惑性的:    

自由控制的变形球功能 

L_SYSTEM 机制     

粒子相互碰撞功能     

粒子相互吸引功能     

每点控制功能     

任何形态的Group功能     

数据重写功能(逆向传递)     

VEX——RSL无缝转换功能     

ISOsurface参数模型     

点阵化模型功能  

自由形体的肌肉系统   

快速的任何数据类型的运动修改功能   

图形化编写VEX     

Digital Asset     

数据转换类型功能

......

2、可以像Maya那样编写自己的UI吗?   

答:Maya写ELF, 而Houdini不需要特别的去编写,可以使用自定义面板完成。而你是一位精通TCL/TK 的话,可自己编写属于自己的UI。Houdini提供了Digital Asset功能,可以快速方便的将复杂的操作整合为自己的工具包,并且可以快速的修改。        

3、Houdini怎样进行网络协作?     

答: 通过Network Node可以直接与工作组的成员在Houdini内环境下协作

4、Houdini可以设置项目文件夹吗?   

答: 可以。而默认的情况下只要将图片等文件和场景文件放在一个路径下,Houdini可以通过$HIP自动查找

5、Houdini有像Maya那样的层功能吗?   

答: Houdini本身是Node Tree很像后期软件,所以层管理很容易。另外,Hodini提供了强大的场景历史机制 Take,可以在一个场景内在不同的场景历史间自由切换,而渲染任务也可以在Take层级间自由切换组合   

6、Houdini的后期COP强大吗?   

答: 由于Houdini的输出格式的兼容性不好,因此经常使用COP进行预测试,Houdini输出TGA兼容型比较好  Houdini输出其他格式可通过Nuke转换   

7、是不是Nuke兼容Houdini比较好?   

答:Nuke的开发公司D2同时也是世界上最早开始使用Houdini的公司之一,因此兼容型是很好的     

8、Houdini的角色动画功能和Maya比较怎么样   

答:Houdini的角色动画功能在近几个版本在流程上有了明显改善,但是不要以为Houdini的角色动画机制是鸡肋,他的强大和克控型是极其出色的。   

9、Houdini的粒子系统和Maya比如何   

答:十万八千里,再次说一次Maya只是一个平台软件,而非工具软件 

10、能做什么特殊的变形动画?   

答:不同拓扑间的变形动画

 

关于文件互倒   

基本不会把Houdini的再倒回Maya去,尤其现在有了Arnold神级渲染器,不是不能倒,而是因为自己觉得不划算,

如何把Maya的动画信息倒入Houdini?   

1、模型使用OBJ或者IGES可以完整的将多边形或者曲面模型倒入Houdini,但是在一些情况下曲面模型表面参数将有细微变动,需要使用caven和fuse整理。

2、动画文件可以编写*.chan文件,*.chan作为Houdini的chanell编辑模块CHOP的读取格式是非常容易读懂的,不需要特殊的编译,使用任何的文本工具就可以打开观看。只要将动画信息按名称分列记录就可以了,然后在CHOP中倒入即可。

3、同样,材质UV信息也可以完整的倒入到Houdini中

4、摄象机的transform信息是和Maya基本一致,但是option有些不一样,换算公式为tan(( Maya摄象机angle view) / 2 ) =(Houdini aperture)/ (2 *( Houdini focal length) )


关于水银人方法有很多,可以分别做头动画和手伸出动画,不需要一体,分别点阵化,然后分别Copy Metaball,合并后两者自然融合关于POP可以说,Houdini的粒子系统是商业软件中非常优秀的,这里就不罗嗦了。

那么哪些Node是最最基本的呢?  

发射器:source (需要指定来源),locate spit再发射,相当于Maya中的emit、from、force 、wind,Houdini中多种场的控制都在一起,并没有象Maya样分开  

creep相当与Maya中的goal

color(也可以在SOP中定义point 来控制) 

group            

*.chan文件格式——如下假设为某物体point点动画列为一类型每帧数据按行为数据类型排列(注意:在这里我假设数据类型排列为point1/tx point1/ty point1/tz point1/tx point2/ty......实际并没有强行规定数据排列方式,你也可以全部为tx数据,只要在CHOP中改动即可

 

关于l_system 什么是l_system?  

几乎任何一种经典理论出现都会伴随着经典模型的出现,比如[blinn77]、[WARN83]..等等,受首次提出l_system近似理论的是1905年von提出的,并且给出了经典雪花曲线[KOCH05]而直到1968年的lindermayer提出了字符串重写机制.之后以其名字缩写称这中机制为 l_system,l_system的核心概念就是重写,即使用预先规定的规则使某个物体不段重复复写初始物体以达到复杂形体。它有些特征,比如对称,自相似,重复延展等等。

其中很典型的列子就是DO l_system。设定a、b规则为a=ab、b=a,a为初始公理,每次派生都由规则定义,即a->b、 b->ab,得到如下a、ab、a b a、a b a a b、a b a a b a b a 这很象乌龟的壳,因此将这样的字符串解释为 "龟"“turtle”。起定义为三元组(x,y,a),(x,y)为龟坐标,a为龟头指向,并给定步长与增量。设置如下F径直增加一步长f空径直增加一步长+左倾斜某度数-右倾斜某度数/左旋转某度数\右旋转某度数......在Houdini中可以建立完全属于自己的L_system形态.进入SOP,建立L_system,在最后的rules面版,   Premise初始公理Rules规则清空左右内容,我们开始在Premise内写F-F-F-F。并且将valuse/angel设为90。出现正方型曲线,我们很容易可以分析:径直增加一步长,右倾斜某度数,再径直增加一步长,再右倾斜某度数。然后我在Rules中定制重写规则,F=F-F+F,出现奇特的自重复图形,分析规则F=F-F+F替代到公理F-F-F-F中,即第一次派生为FFF)-(FFF)-(FFF)-(FFF), 我们可以定义很多的Rules .分别替代进公理.比如  Premise   FAB   Rules   A=F-FF+FF-F+F   Rules2  B=+A   Premise  FFAB   Rules   A=///BA-//FF+FF-F+FB   Rules2  B=A   那么如何分形?  在L_system中可以使用[]将当前字符串装入饯来实现分型,如    Premise   FF[B]F[A]FF   Rules   B=F+F-F+F-FF   Rules   A=-FFFB     分析Premise :径直增加一步长,径直增加一步长,分型B,再径直增加一步长,分形A,再径直增加一步长,径直增加一步长  这样我们可以得,通过定义分型我们可以建立复杂的叉树结构.如   Premise  FFFACFF   Rules A=[B]////[B]   Rules B=&//FFFA   RulesC=////FF[B[B[BD  Rules D=FC            

 

ISO SURFACE   函数方程的等容积模型(你可以把它想象成具体表现点容积的工具)它和什么有关?可以读取I3D数据,I3D可视化.(I3D就是3d texture file,不是3D纹理贴图,通俗的讲就是一个3D空间的点的容积集合)和ISO OFFSET很接近如何写function? 建立ISO SURFACE   ,默认就是一个球.方程式为$X^2+$Y^2+$Z^2-1 就是圆方程 X^2+Y^2+Z^2=r^2, 1就是r,这里隐含掉了=0,ISO SURFACE function 需要指定3纬XYZ,可以是等方程.也可以是不等方程。也可以是判断式.这样椭圆也可以从$X^2+$Y^2+$Z^2-1 变化得$X^2+($Y^2)/3+$Z^2-1 (minBound -1 -3 -1 maxBound 1 3 1) 因为ISO SURFACE 表现等容积模型,因此可以把模型想象成在一定范围内的数据的集合. 由此变化我们可以剪切圆得 if( (($X<0)||($X>1)||($Y<0)||($Y>1)||($Z<0)||($Z>1)),$X^2+$Y^2+$Z^2-1,$X^2+$Y^2+$Z^2+1) 接下来我们写一个方块既     if ( ((-1<$X)&&($X<1)&&(-1<$Y)&&($Y<1)&&(-1<$Z)&&($Z<1)) ,1 , 0)   再次变化方程     if(((-1<$X)&&($X<1)&&(-1<$Y)&&($Y<1)&&(-1<$Z)&&($Z<1)),noise($X,$Y,$Z),0)   再次加入时间变化得      if(((-1<$X)&&($X<1)&&(-1<$Y)&&($Y<1)&&(-1<$Z)&&($Z<1)),noise($X*10+($T-1),$Y*10,$Z*10+$T),0)  奶酪状的模型出现了:) (ISO SURFACE 可以写出很多有意思的复杂几何体,但是最多的用处还是用来转换I3D.但是个人用下来ISO

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有