简单概括HAPI(Houdini Engine API)所涵盖的功能
概念
“Houdini Engine” 这一角色让“宿主程序”(指UE4、Unity、Maya等)可以与Houdini数据进行交互。
各宿主程序都有其对应的 “Houdini Engine 插件” 。
Houdini Engine API,简称 HAPI
,是 “Houdini Engine” 最底层的接口 。
换句话说:无论是哪个宿主程序,无论插件版本是什么,无论上层经过了何种封装,他们最底层都在使用同一套接口,即 HAPI
。
比如,对于UE来说:
相对于插件代码来说,HAPI本身的变化是不大的。比如,UE4插件的“第二版”(这篇博客是翻译官方对第二版插件的介绍),对比其“旧版”(这篇博客对旧版插件代码进行了梳理),第二版是全新的面貌,且有很多新功能。但是,第二版的改变主要在于UE4插件的C++代码,HAPI几乎没变化。
(主要的变化是加了“Session同步”相关的功能,见Houdini Engine 3.5: What’s New in HAPI):
目标
HAPI
所有函数都在HAPI.h中,大概有200多个。
本篇的目标是:
- 依照官方文档中的分类,简单概括一遍所有函数。并结合自己的使用经验,指出其中相对重要的函数。最后概括下一般的使用流程。
下面是所有的分类:
(其中“★”表示我认为最基础且必要的分类,“☆”是经常会用到的分类,不常用的放在了最后)
- 1. ★ Sessions(13个函数)
- 2. ★ Nodes(23个函数)
- 3. ★ Parms(33个函数)
- 4. ★ Geometry Getters(15个函数)
- 5. ★ Attributes(36个函数)
- 6. ★ Geometry Setters(8个函数)
- 7. ★ Volumes(16个函数)
- 8. ☆ Environment(8个函数)
- 9. ☆ Status(12个函数)
- 10. ☆ Strings(6个函数)
- 11. ☆ Assets(8个函数)
- 12. ☆ Hip Files(5个函数)
- 13. ☆ Presets(3个函数)
- 14. ☆ Objects(8个函数)
- 15. ☆ Curves(8个函数)
- 16. ☆ SessionSync(5个函数)
- 17. ☆ PDG/TOPs(36个函数)
1. ★ Sessions(13个函数)
关于 “Session” 的概念,可以参考之前对官方文档的翻译。
简单来说,你通过Session和后台的Houdini进程进行通信。因此几乎所有HAPI函数都要求一个Session指针作为参数。
这个分类下的函数大概包括:
- 创建各种类型的Session
- 查询session状态
- 清理session
- 关闭session
- 等其他和session直接相关的函数
2. ★ Nodes(23个函数)
这个分类包含了和节点相关的关键操作。比如:
- 创建节点
- Cook节点
- 删除节点
- 连接节点
- 获得节点的子节点
3. ★ Parms(33个函数)
这个分类包含了参数相关的关键操作。比如:
- 获得节点的所有参数
- 对 整数/浮点数/字符串/等类型 的参数进行设置
- 得到 整数/浮点数/字符串/等类型 的参数的值
4. ★ Geometry Getters(15个函数)
这个分类包含了“得到几何数据”相关的操作。比如:
- 得到 Object 节点中的当前Display的 geo节点
- 得到Geo信息
- 得到Part信息
- 得到面数
- 获得顶点列表
5. ★ Attributes(36个函数)
这个分类包含了Attribute相关的关键操作。比如:
- 获得 attribute 信息。
- 获得各种类型的 attribute 的数据。
- 设置各种类型的 attribute 的数据。
6. ★ Geometry Setters(8个函数)
这个分类包含了“设置几何数据”相关的操作。比如:
- 设置Part信息
- 设置面数
- 设置顶点列表
- 提交几何体(
CommitGeo
)
还需要注意的是:如果要设置几何数据,当然还需要上面 Attributes 分类下一些设置 attribute 数据的函数。
最后要注意:设置完数据后,最后一定要调用CommitGeo
来提交几何数据。如果此时Open Scene in Houdini,可以看到这个节点是被冻结的,其中就是设置的几何数据。
7. ★ Volumes(16个函数)
这个分类包含了 体积(高度场) 相关的操作。比如:
- 获得Volume的信息
- 获得Volume的数据
- 设置Volume的数据
8. ☆ Environment(8个函数)
包含了对环境相关的一些操作。比如:
- 设置环境变量
- 获得环境变量
9. ☆ Status(12个函数)
包含了对各种状态的查询。以及其他状态查询的函数。
10. ☆ Strings(6个函数)
字符串相关的函数。
最主要的是HAPI_StringHandle和字符串数据之间的转换。
11. ☆ Assets(8个函数)
这里的 “Assets” 指的是HDA。
这个分类包含HDA相关的一些操作,比如:
- 加载HDA
- 获得HDA信息
12. ☆ Hip Files(5个函数)
包含了HIP文件相关的操作,比如:
- 读取Hip文件
- 保存Hip文件
13. ☆ Presets(3个函数)
包含了Preset相关的函数,比如:
- 生成Preset文件
- 根据Preset设置参数
14. ☆ Objects(8个函数)
OBJ节点相关的操作,比如:
- 获得OBJ节点的信息
- 设置OBJ节点的transform
15. ☆ Curves(8个函数)
包含了曲线相关的操作,比如:
- 获得/设置曲线信息
- 获得/设置曲线上的顶点数目
16. ☆ SessionSync(5个函数)
包含了SessionSync功能需要的接口
17. ☆ PDG/TOPs(36个函数)
这个部分有大量PDG相关的接口。
其他分类
至于其他的分类,从我自己的使用经验来看并不常用(也许对于某些任务来说是关键的)。包括:
- Utility(6个函数):从名字看似乎想要包含一些通用函数,但现在主要是Transform矩阵计算相关的函数。
- Time(7个函数):时间相关的一些操作
- Height Fields(2个函数):创建用来输入高度场数据的节点的辅助函数
- Materials(14个函数):材质相关的一些操作
- Animation(2个函数):动画相关的一些操作
- InputCurves(5个函数):创建用来输入曲线数据的节点的辅助函数
- Caching(11个函数):缓存相关的函数?不确定。。
一般的使用流程
首先使用Sessions分类下的函数创建session,并维护它,管理它的生命周期。
然后使用Nodes分类下的函数创建节点,并维护若干需要的节点,对其做需要的操作,比如连接节点,或是用Parms分类下的函数操控参数。
你还可能需要将数据传入Houdini中,这时候就要用到Geometry Setters分类下的函数,和Attributes下的函数来输入几何体。曲线,高度场也有对应的函数可以输入。
最后,当一切参数以及输入都准备就绪,就可以对节点进行Cook了。然后,就可以得到结果,比如Geometry Getters可以得到几何体数据,Attributes可以得到属性数据,Volumes能得到高度场数据。
简单概括HAPI(Houdini Engine API)所涵盖的功能相关推荐
- 翻译Houdini官方对UE4新版插件的介绍:Houdini Engine for Unreal - V2
原视频:Houdini For Unreal - YouTube 目录 介绍 0. 总览 1. 简介HoudiniEngine 2. UE4的HoudiniEngine - 第二版 为什么要做&quo ...
- ue4怎么导出fbx文件_【教程】Houdini Engine在UE4中的基本使用(一)
后续文章更新移步→微信公众号"虚幻社区"(mantra-xhsq),您的支持是我创作的动力. 在读本篇文章之前大家最好搞懂"程序化建模"的概念. 1.Houdi ...
- GEE_API Docs_Tutorials_1.编程基础和Earth Engine API入门
API Docs_Tutorials_1.编程基础和Earth Engine API入门 一.Introduction to JavaScript for Earth Engine(JavaScrip ...
- 内含JAVA简单概括和JAVA所需安装的软件和详细教程,想学习JAVA无从下手,这篇文章带你迈出第一步
本文大致概括了JAVA编程语言的简史和特点,主要介绍了JAVA开发环境安装,涉及JDK,Sublime Text IntelliJ IDEA三个软件的简单介绍,安装和使用,最后编写了第一个JAVA代码 ...
- HTTP请求解析过程 (简单概括)
1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...
- 简单概括 文明进化的各个阶段 (39)
简单概括一下,一切文明进化的各个阶段并不难,我会总结一下.来结束这本书,这种勾勒或许能带来某些启示.帮助人们理解当前各民治国家的命运. 当我们探究那些伟大而古老的文明的兴衰主线,会发现什么? 在文明之 ...
- WormHole是一个简单、易用的api管理平台,支持dubbo服务调用
WormHole服务网关管理平台 相关快速链接 管理台操作说明 C端对接网关及签名说明 回调接口使用说明 多环境配置使用说明 网关错误码说明 WormHole更新说明 配置好即可运行 GitHub地址 ...
- JSR 94: JavaTM Rule Engine API
JSR 94: JavaTM Rule Engine API Drools的JSR94实现形式 JAVA规则引擎JSR-94笔札 Java规则引擎与其API(JSR-94) 漫话规则引擎(4): Ja ...
- nested exception is org.flowable.common.engine.api.FlowableException: Error initialising dmn data mo
FactoryBean threw exception on object creation; nested exception is org.flowable.common.engine.api.F ...
- 搭建一个最简单的首页随机图片api
搭建一个最简单的首页随机图片api 1. 引言 首页的图片每天都是重样的是在是看得心烦意乱,就希望每次访问网页都能看到不一样的风景,既然是用Typora+PicGo写博客,图片通过JSDlivr全球分 ...
最新文章
- WPF#39;s Style BasedOn
- 14个实用的数据库设计技巧!
- Python教程:列表推导式和嵌套的列表推导式讲解
- @excel注解_java bean 一对多,多对一 poi导出excel表格
- MySql绿色版安装过程记录
- UBUNtu·E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 问题解决方法
- c 语言 结构体 编程,C语言:结构体的编程问题(很简单)
- 计算机处理信息的过程按先后顺序可表述为,信息加工理论按照信息处理的先后顺序将记忆区分为三个阶段系统;感觉记忆、()长时记忆。...
- 建筑与计算机技术,计算机技术与建筑设计的不完全认识
- 7-10 数组循环左移 (20 分)
- C语言大作业学生选课系统,C语言学生选课管理系统
- arcgis中的图像裁剪
- 苏鹏的乘风归去 - 犹入画境
- iOS开发之Tom猫
- NAIPC2018-K-Zoning Houses
- 即时通讯软件安全问题分析
- flutter flame基本结构
- 论文中参考文献的引用
- python中day_python(day03)
- ubuntu - touchpad
热门文章
- 23位子网掩码是多少_23位子网掩码包含哪几个网段
- 微信小程序|开发FAQ篇
- 关于XShell下载安装和连接Ubuntu(linux)
- 判断多边形边界曲线顺/逆时针 两种方法
- web项目034-----JS模版引擎
- Encoded password does not look like BCrypt 异常处理
- 201809-1 卖菜(100分)
- 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
- Android Framebuffer介绍及使用
- java 分布式缓存 开源_Java开源分布式键-值缓存系统Voldemort