概念

“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相关的接口。

其他分类

至于其他的分类,从我自己的使用经验来看并不常用(也许对于某些任务来说是关键的)。包括:

  1. Utility(6个函数):从名字看似乎想要包含一些通用函数,但现在主要是Transform矩阵计算相关的函数。
  2. Time(7个函数):时间相关的一些操作
  3. Height Fields(2个函数):创建用来输入高度场数据的节点的辅助函数
  4. Materials(14个函数):材质相关的一些操作
  5. Animation(2个函数):动画相关的一些操作
  6. InputCurves(5个函数):创建用来输入曲线数据的节点的辅助函数
  7. Caching(11个函数):缓存相关的函数?不确定。。

一般的使用流程

首先使用Sessions分类下的函数创建session,并维护它,管理它的生命周期。

然后使用Nodes分类下的函数创建节点,并维护若干需要的节点,对其做需要的操作,比如连接节点,或是用Parms分类下的函数操控参数。

你还可能需要将数据传入Houdini中,这时候就要用到Geometry Setters分类下的函数,和Attributes下的函数来输入几何体。曲线,高度场也有对应的函数可以输入。

最后,当一切参数以及输入都准备就绪,就可以对节点进行Cook了。然后,就可以得到结果,比如Geometry Getters可以得到几何体数据,Attributes可以得到属性数据,Volumes能得到高度场数据。

简单概括HAPI(Houdini Engine API)所涵盖的功能相关推荐

  1. 翻译Houdini官方对UE4新版插件的介绍:Houdini Engine for Unreal - V2

    原视频:Houdini For Unreal - YouTube 目录 介绍 0. 总览 1. 简介HoudiniEngine 2. UE4的HoudiniEngine - 第二版 为什么要做&quo ...

  2. ue4怎么导出fbx文件_【教程】Houdini Engine在UE4中的基本使用(一)

    后续文章更新移步→微信公众号"虚幻社区"(mantra-xhsq),您的支持是我创作的动力. 在读本篇文章之前大家最好搞懂"程序化建模"的概念. 1.Houdi ...

  3. GEE_API Docs_Tutorials_1.编程基础和Earth Engine API入门

    API Docs_Tutorials_1.编程基础和Earth Engine API入门 一.Introduction to JavaScript for Earth Engine(JavaScrip ...

  4. 内含JAVA简单概括和JAVA所需安装的软件和详细教程,想学习JAVA无从下手,这篇文章带你迈出第一步

    本文大致概括了JAVA编程语言的简史和特点,主要介绍了JAVA开发环境安装,涉及JDK,Sublime Text IntelliJ IDEA三个软件的简单介绍,安装和使用,最后编写了第一个JAVA代码 ...

  5. HTTP请求解析过程 (简单概括)

    1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...

  6. 简单概括 文明进化的各个阶段 (39)

    简单概括一下,一切文明进化的各个阶段并不难,我会总结一下.来结束这本书,这种勾勒或许能带来某些启示.帮助人们理解当前各民治国家的命运. 当我们探究那些伟大而古老的文明的兴衰主线,会发现什么? 在文明之 ...

  7. WormHole是一个简单、易用的api管理平台,支持dubbo服务调用

    WormHole服务网关管理平台 相关快速链接 管理台操作说明 C端对接网关及签名说明 回调接口使用说明 多环境配置使用说明 网关错误码说明 WormHole更新说明 配置好即可运行 GitHub地址 ...

  8. JSR 94: JavaTM Rule Engine API

    JSR 94: JavaTM Rule Engine API Drools的JSR94实现形式 JAVA规则引擎JSR-94笔札 Java规则引擎与其API(JSR-94) 漫话规则引擎(4): Ja ...

  9. 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 ...

  10. 搭建一个最简单的首页随机图片api

    搭建一个最简单的首页随机图片api 1. 引言 首页的图片每天都是重样的是在是看得心烦意乱,就希望每次访问网页都能看到不一样的风景,既然是用Typora+PicGo写博客,图片通过JSDlivr全球分 ...

最新文章

  1. WPF#39;s Style BasedOn
  2. 14个实用的数据库设计技巧!
  3. Python教程:列表推导式和嵌套的列表推导式讲解
  4. @excel注解_java bean 一对多,多对一 poi导出excel表格
  5. MySql绿色版安装过程记录
  6. UBUNtu·E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 问题解决方法
  7. c 语言 结构体 编程,C语言:结构体的编程问题(很简单)
  8. 计算机处理信息的过程按先后顺序可表述为,信息加工理论按照信息处理的先后顺序将记忆区分为三个阶段系统;感觉记忆、()长时记忆。...
  9. 建筑与计算机技术,计算机技术与建筑设计的不完全认识
  10. 7-10 数组循环左移 (20 分)
  11. C语言大作业学生选课系统,C语言学生选课管理系统
  12. arcgis中的图像裁剪
  13. 苏鹏的乘风归去 - 犹入画境
  14. iOS开发之Tom猫
  15. NAIPC2018-K-Zoning Houses
  16. 即时通讯软件安全问题分析
  17. flutter flame基本结构
  18. 论文中参考文献的引用
  19. python中day_python(day03)
  20. ubuntu - touchpad

热门文章

  1. 23位子网掩码是多少_23位子网掩码包含哪几个网段
  2. 微信小程序|开发FAQ篇
  3. 关于XShell下载安装和连接Ubuntu(linux)
  4. 判断多边形边界曲线顺/逆时针 两种方法
  5. web项目034-----JS模版引擎
  6. Encoded password does not look like BCrypt 异常处理
  7. 201809-1 卖菜(100分)
  8. 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
  9. Android Framebuffer介绍及使用
  10. java 分布式缓存 开源_Java开源分布式键-值缓存系统Voldemort