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,但没有两者结合的. 所以我把 ...
随机推荐
- VTP管理交换机的VLAN配置
实验要求:将Switch1设置为VTPserver.Switch2设置为VTPtransparent.Swtich3和4设置为VTPclient 拓扑如下: 涉及内容: 1.VTP的创建 2.VTP的 ...
- thinkphp+redis实现秒杀功能(转)
1,安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下) 1.1,安装 php_igbinary.dll,php_redis.dll扩展此处需要注意你的php版本如图: ...
- 2017青岛赛区网络赛 Smallest Minimum Cut 求最小割的最小割边数
先最大流跑一遍 在残存网络上把满流边容量+1 非满流边容量设为无穷大 在进行一次最大流即可 (这里的边都不包括建图时用于反悔的反向边) #include<cstdio> #include& ...
- 九度OJ-1042-最长公共子序列(LCS)
题目1042:Coincidence 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4045 解决:2208 题目描述: Find a longest common subsequence ...
- Java中break和continue跳出指定循环
https://www.cnblogs.com/miys/p/b7f6a463bc58785d74a8a7fccd1f1243.html 在Java中,break和continue可以跳出指定循环,在 ...
- canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上
canvas 里绘制的图形不是一个实体 DOM,所以要给每个绘制的图形添加事件操作比给 DOM 添加事件要复杂很多. 所以,我们需要使用一个 canvas 的 isPointInPath(x, y) ...
- LG2516 【[HAOI2010]最长公共子序列】
前言 感觉这几篇仅有的题解都没说清楚,并且有些还是错的,我再发一篇吧. 分析 首先lcs(最长公共子序列)肯定是板子.但这题要求我们不能光记lcs是怎么打的,因为没这部分分,并且另外一个方程的转移要用 ...
- x的奇幻之旅 (史蒂夫·斯托加茨 著)
第1部分 数字 第1章 数学:从企鹅的"鱼"订单到无穷大 (已看) 第2章 一组组石头与加减乘除运算 (已看) 第3章 "敌人的敌人就是朋友“与"负负得正&qu ...
- S老师 背包系统 装备系统 锻造系统 学习
Inventory using UnityEngine; using System.Collections; using System.Collections.Generic; using Syste ...
- ASP.NET WebApi使用Swagger生成api说明文档
最近做的项目使用mvc+webapi(非.Net Core),采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用 ...