<tbody id="c8gyz"><noscript id="c8gyz"><video id="c8gyz"></video></noscript></tbody>

    1. <li id="c8gyz"><tr id="c8gyz"></tr></li>

      <dd id="c8gyz"></dd>
    2. <tbody id="c8gyz"><pre id="c8gyz"></pre></tbody>
        专注3D产业技术16年,三维动画制作,3D特效动画,3D交互开发优质服务商!
        咨询电话:1868 148 2869 (微信同步)  客服QQ:390551442  1931122198
        CASES ·
        新闻中心
        这里象征着我们的方向和能力
        移动终端当前位置:首页 > 新闻中心

        扒一扒houdini中的局部变量与vex变量

        发表日期:2018/5/19 17:09:45     文章编辑:CG猎人     浏览次数:1565     标签:houdini,VEX

        很多初学者会被houdini中各种变量的写法搞得晕头转向,特别是houdini15之后对vex的大量使用,很多看老教材的同学发现局部变量不起作用了,被弄得无所适从。

        这里,小编就尽所能给大家解释一下,其实这里是两套系统完成同样的功能而已。

        本文会部分会收录在即将出版的houdini书本中,敬请期待

        1attribute create不起作用了?

        这个是最常见的旧版本教程里的问题。添加attribute create节点,创建自定义属性var,使用$VAR就可以进行局部变量访问,但是在houdini15之后就不可以了。

        这里最核心的问题在于旧版本的houdini默认是勾选 local variable把创建的属性转化为局部变量,而新版本默认是关闭的。

        注意

        默认开启后,不输入任何值,那么局部变量就是变量的大写形式 var→$VAR。当然,你也可以手动输入你需要的局部变量名字(一般不会这样操作)。

        转化为局部变量后我们在spreads中查看

        没有开启local variable的情况下:只有在对应层级多了var这个属性

        开启了local variable的情况下:在detail层级还会多了一个把var转化为局部变量VAR的过程

        所以,如果大家想按照旧版教程使用attribute create创建局部变量,那么记得勾选这个选项就行了。

        2局部变量/全局变量的写法

        一般是$符号+大写字母,但是也有不少特殊的写法

        比如位置 $TX,$TY,$TZ,还有颜色是$CR,$CB,$CG,这些特殊的写法就需要死记硬背了

        除了上面常用的局部变量和全局变量外(从帧开始,因为这些变量不需要任何的局部节点和属性都可以存在的,所以称为全局变量)

        还有比较常用的对于copy节点中的局部变量

        $CY 表示当前拷贝的顺序(第几份)

        $NCY 表示拷贝的总数量

        3vex变量的写法

        @+变量名字(大部分不需要大写)

        当然,vex中也有部分比较特殊的写法(比如@Frame需要开头大写,@P需要缩略大写)

        对于特殊vex变量的记忆

        直接创建vop(pointvop,attribute vop等都一样)进入内部,找到geometryvop global节点,里面就是常用vex变量写法

        也可以通过添加houdini16中的point_old节点,都使用使用了vex变量(旧版本point中使用$TX,$TY,$TZ)

        4为什么是vex取代局部变量

        1更加直接和简洁,比如上面定义的var,不需要通过转化为$VAR,可以直接使用@var进行调用

        2vex电脑运行效率更高(速度更快)

        3vex更加统一,比如之前的位置 @P颜色是@Cd,如果要访问里面的分量通道,使用点格式,比如@P.x,@Cd.r(@Cd.x也是可以的)。并且vex除了在sop和shader中广泛使用,在dop中的粒子也是非常常用的,可以贯穿整个houdini,实现统一。

        4vex除了调用变量,更多的是一些表达式和函数的调用,使用wrangle节点可以完成绝大部分节点的功能。创建变量非常方便

        在houdini中,越来越多的节点除了局部变量外也支持vex变量(除了一些比较旧的节点)并且有很多新的节点只支持vex变量,所以这小编建议大家尽量使用vex变量(即使看到旧教材中做法,试着使用vex变量来实现)

        5是不是局部变量/全局变量就没用了?

        这倒不是,特别是全局变量还是非常有用的

        比如$T,$FF,$HIP,$OS等代表时间,工程文件路径,节点名字,在控制紊乱变化,输出路径中等都非常有用。

        某些节点的局部变量比如copy中的$CY和$NCY也是比较常用。

        6如何创建属性

        创建属性的方法有非常多,这里主要讲解最常用的attributecreate和wrangle节点

        attributecreate 注意四个部分

        1name 名字

        2class 层级

        3type 数据类型

        4赋值

        当然,这里还有是否需要转化为局部变量和size就是里面的元素多少需要注意

        对于wrangle中创建属性同样需要上面的几个元素

        run over 代表选择层级,f表示浮点类型,@rot变量名字是rot,赋值是1.0,还有分号结尾

        常用的vex的数据类型有

        i整形

        f浮点

        s字符

        v矢量

        marix 矩阵

        ......

        7如何把变量转化为局部变量/全局变量

        创建全局变量

        除了默认已有的全局变量,我们可以通过Edit/ aliases and variable 别名和变量中进行设定

        在这里添加了一个$MYNAME局部字符变量,用来存储我的名字carldrifter

        大家还可以存储自己常用的工程文件路径或者数值等。

        把已有的属性转化局部变量方法

        方法一 attribute create的方法,勾选local vairable进行转化,注意输入同样的名字,激活local variable,并且关闭write value 创建值(否者会覆原来的值)

        方法二 wrangle中转化局部变量的方法

        使用函数addvariablename(输入端口,原来名字,后来名字)

        方法三 在vop中转化成局部变量的方法 add attribute节点

        旧版教程中使用add attribute节点进行输出输出自定义属性,现在使用的是bind export节点,而add attribute节点仅保留转化为局部变量的功能。

        相关文章
        • 服务热线:18681482869
        • 手机:1868 148 2869
        • 网址:www.k7ylc732.com
        • 地址:深圳市龙岗区大运软件小镇54栋202室

        Copyright ? 2015-2018 sx8d.com All Rights Reserved. 深圳市深信数字科技有限公司 版权所有 | 粤ICP备15084676号

        • qq客服
        • 公众号
        • 手机版
        • 公安备案查询
         
        预约上门

        请拨打销售热线 18681482869,或让我们联系您!

        姓名:  
        电话:  
        地址:  
        建设项目:  
        验证码:  验证码
        ×
        成年男女免费视频在线观看不卡_国产福利萌白酱精品tv一区_老司机成人午夜精品福利视频_欧美肥妇毛多水多bbxx