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的中点。
Fabric Engine2.0的自定义节点功能的更多相关文章
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...
- 微信公众号php从0开发,包括功能(自定义菜单,分享)
之前写的一篇微信公众号文章. 工作需要,进行此次调研,并记录开发过程. 开发目的,页面授权,页面获取用户头像,用户昵称 微信id, 分享页面. 微信订阅号 无法获取用户个人信息 写在记录前,公众号也是 ...
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多 ...
- Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)
1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先 ...
- HyperLedger Fabric 1.0的Transaction处理流程
如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作.以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为 ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- hyperledger fabric 1.0.5 分布式部署 (七)
fabric 使用 fabric-ca 服务 准备部分 首先需要用户从github上download fabric-ca 的工程代码 cd $GOPATH/src/github.com/hyperle ...
- ztree : 增删改功能demo与自定义DOM功能demo的结合
最近有个项目要用ztree,需要用ztree自带的功能(增删改),也需要自定义DOM的功能(置顶). ztree的demo里有增删改的demo,也有自定义DOM的demo,但没有两者结合的. 所以我把 ...
随机推荐
- JS/JavaScript简介及基本常识
JavaScript (JS)以客户端事件为驱动的弱类型脚本语言 JS脚本一般写在<head>内部 流:文本流.html流 回避关键字的基本策略:单词合并(v_function) null ...
- https://stackoverflow.com/questions/40949967/running-storm-from-intellij-nimbus-error
https://stackoverflow.com/questions/40949967/running-storm-from-intellij-nimbus-error 0down votefavo ...
- each的break
$.each var arr = [1, 2, 'test', 3, 4, 5, 6] // break $.each(arr, function(index, value) { if (value ...
- Java IntelliJ IDEA 不能显示项目里的文件结构
方法一: 关闭IDEA, 然后删除项目文件夹下的.idea文件夹 重新用IDEA工具打开项目 方法二: 菜单:File -> Invalidate Caches / Restart
- innerHTML与innerText功能的强大
例: <div id="study"> <span style="color:red">学习</span>study < ...
- 快速排序改进——3区快速排序(3-way quicksort)
1.快速排序缺陷 快速排序面对重复的元素时的处理方法是,把它放在了左部分数组或右部分数组,下次进行分区时,还需检测它.如果需要排序的数组含有大量重复元素,则这个问题会造成性能浪费. 解决方法:新增一个 ...
- WINDOWS系统的正确安装-硬盘格式如何选择
有一种这样的说法,WIN7改装WIN10必须要重新分区,将硬盘格式化为GPT格式(GUID分区表 ), WIN10改装WIN7必须要重新分区,将硬盘格式化为MBR格式. 这种说法一直困扰着我,于是经过 ...
- 使用python requests模块搭建http load压测环境
网上开源的压力测试工具超级的多,但是总有一些功能不是很符合自己预期的,于是自己动手搭建了一个简单的http load的压测环境 1.首先从最简单的http环境着手,当你在浏览器上输入了http://w ...
- debian 配置linuxptp 软件时间戳
编程之路刚刚开始,错误难免,希望大家能够指出. ntp,ptp,ntp,ptp 本文只说软件时间戳 先上几个推荐的网址,可以更好的了解ptp: https://docs.fedoraproject.o ...
- day 57 jQuery的补充
.data() 在匹配的元素集合中的所有元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值. .data(key, value): 描述:在匹配的元素上存储任意相关数据. ...