zoukankan      html  css  js  c++  java
  • Fabric Engine2.0的自定义节点功能

    Fabric Engine是一个多用途的引擎,针对maya等软件写节点写功能很方便。尤其是canvas节点编辑面板,提供了大量现有的功能供用户调用,当然这些节点功能都是可被用户编辑修改的,除此之外还提供了自定义节点的功能,非常强大灵活。

    初涉Fabric很容易被编辑器的各种数据类型弄迷糊。于是我扒了Write Canvas nodes in Maya-Fabric Engine这个视频来理清思路。

    操作系统:windos7

    软件平台:maya

    使用工具:Fabric Engine2.0

    案例内容:建立三个locator点,将第三个locator的位置放在前两个locator的中间点上。单个locator的位置可以用Vec3来存储,两个locator就得用Vec3[]来存储了,而最终输出给第三个locator的位置数据应该是Vec3,所以Vec3[]到Vec3,中间有一个计算过程。该案例会新建一个节点来处理这个中间的计算过程。

    1.进入maya,打开节点编辑器,按tab键建立三个locator节点,选中locatorShape节点,点击节点编辑器上方的remove selected nodes from graph按钮,将其移除节点编辑器,留下三个locator节点。

    2.在节点编辑器中,调出dfgMayaNode节点,在该节点的属性面板点击Open Canvas按钮。即可打开Canvas节点编辑面板。

    3.在canvas的右侧Expose右键点击creat port功能,新建一个名为result,类型为Vec3的输出点。在canvas的左侧Expose右键点击creat port,新建一个名为targets,类型为Vec3[]的输入点。

    4.怎么使用canvas中的现有节点,这里不谈。主要讲怎么新建一个节点,并用该节点将Vec3[]数据类型转换为Vec3数据类型。在Fabic的KL语言中,Vec3类型指的是三维数据类型,例如:Vec3(0,0,0),该数据类型可用于存储rgb信息,或者xyz信息,不一而足,根据需求使用。而Vec3[]指的是Vec3数据列表,这是由一个或多个Vec3数据类型构成的list。Fabric中的其他数据类型也是如此,比如:xfo[],xfo,该数据类型用于表示空间位置,例如:Xfo(ori, tr, sc)。

    5.基于上面的分析,从Vec3[]到Vec3的转换就很容易了。我们都知道对列表操作的方法最简单的就是For循环语句,下面我们将把这个转换实现出来。

    6.在canvas节点编辑器面板右键,点击New empty function,新建一个空白节点,命名为interpolatepositionarray;然后选中该节点,右键点击Edit进入编辑模式。建一个in口,名为targets,数据类型为Vec3[],建一个out口,名为result,数据类型为Vec3.

    在该编辑模式下修改代码块为:

    dfgEntry {
      result = Vec3(0,0,0);
      for(Size i = 0,i < targets.size(),i++)
        result += target[i] / Float32(targets.size());
    }
    

     上代码块通过for语句求得了targets中Vec3[]数据类型的平均值,并到导出为Vec3数据类型。targets.size()方法用于计算该列表中元素数量。

    7.点击Save保存该代码块,点击Go up回到canvas节点编辑器界面,将左右两侧Expose栏中的targets和result接口与interpolatepositionarray节点的targets[]与result接口相连。这样dfgMayaNode节点的编辑工作就完成了。关闭canvas回到maya节点编辑器面板。将两个locator连接到dfgMayaNode节点的入点,另一个locator连接到dfgMayaNode的出点,工作完成。

    8.无论前两个locator怎么移动,第三个locator都会在这两个locator的中点。

  • 相关阅读:
    Linux三阶段之十一:keepalived高可用集群
    Linux三阶段之十:nginx反向代理负载均衡
    Linux三阶段之九:期中架构LNMP章节
    【Linux面试题7】三剑客笔试题集合
    【Linux面试题6】定时任务
    【Linux面试题5】文件编辑和查找类
    【Linux面试题4】用户管理
    【Linux面试题3】磁盘管理
    【Linux面试题2】目录结构及相关命令
    【Linux面试题1】服务器硬件与基础命令
  • 原文地址:https://www.cnblogs.com/hksac/p/4913753.html
Copyright © 2011-2022 走看看