delphi启动ie调用本地html传参数_通过Python调用houdini的HAPI

a6537c22249e86f2976a9091d19d5ec1.png

大概几个月前,工作上有的个需求要给自研的引擎做一个类似HoudiniEngine的自动化管线,于是我大概看了一下houdiniengine for unreal 的结构,其中还是有不少收获。这里就当作是备忘。

如有我理解错的地方还请给位看官多多赐教~~

HAPI

什么是HAPI(“哈皮”, 对,你没听错,官方就这么读的)

SideFX 官方说 HoudiniEngine是一个houdini的无头版本, 但是看了HoudiniEngine的结构后, 我发现实际上 houdini engine 可以拆分成两个模块:一个是根据应用场景不同而变化的类似于客户端(也就是我们通常在引擎或者DCC里面看到的HoudiniEngine), 另一个模块则是在本地或者服务端实际执行HDA节点功能的无头版Houdini (HARS=Houdini-Engine API Remote Server)。而负责这两个模块之间通信的便是HAPI:

https://www.sidefx.com/docs/hengine/_h_a_p_i_8h.html​www.sidefx.com

从HAPI的文档开始,有C++基础的小伙伴们就可以直接起飞了,毕竟直接调用HAPI的命令就能够实现Houdini里面的几乎所有操作。甚至连完整代码样例都已经提供了。具体的细节文档上面都有,我这里就不多说了。(虽然说配置C++ 环境可能会有点繁琐,特别是像我这样的C++萌新,这里就推荐一位大神的配置视频)

张家乐:Houdini Engine API配置​zhuanlan.zhihu.com

配置好之后我们就能够直接通过HAPI,用“传入数据-载入HDA-Cook-读取数据”这样的方法简单的实现类似于HoudiniEngine的功能了。

本来故事到这里就结束了,但是我更想通过python来调用HAPI,一是使用C++每次测试都需要build出来,我测试起来很不方便,二是有不少软件的高层脚本语言都支持python, 只是实现一些基于HAPI的简单功能的话,python调试起来也更方便(相对的,性能会有所牺牲)。

在大佬们的指引下,我终于发现,HAPI的通信似乎是通过thrift实现的?这个我不确定,但是我在houdini的安装目录下找到了HART.thrift HART_Auto.thrift 这两个文件,再去下载一个thrift的执行文件。理论上就能够生成用于不同语言的HAPI接口。

thrift -r --gen py XXXX.thrift

果然,通过上面的命令就能够生成能够用于Python的HAPI。include这写生成的文件到python里面就能直接调用HAPI了。

但是光有这个调用端是不够的,我们还需要一个HARS来接受调用命令并在处理后返回信息。

https://www.sidefx.com/docs/hengine/_h_a_p_i__sessions.html#HAPI_Sessions_Thrift_Server​www.sidefx.com
../.../HARS.exe -s 1234

找到houdini安装文件夹中的HARS.exe文件, 通过上面的系统命令,便能启动一个基于1234端口的HARS服务(端口需要根据你所在的网络环境来自己决定), 这个服务程序可以是在本地,也可以在局域网中的机器上。(需要注意的是,HARS需要houdini engine 或者更高级别的license, 确保运行HARS的机器上要有可用的license

那么现在我们就能实现通过Python来调用HAPI了!!

import 

到这一步,通过python如同使用C++一样的调用HAPI了,如果想测试一下HARS是否在整成运作,可以添加以下语句:

VGeo 

这样就会在HARS那台机器上的对用目录中生成一个Debug.hip文件,其中有一个命名为Validation_Geo的GEO节点。

所有的API都在HART_Auto 与HART之中能够找到,更具体的使用可以直接到HAPI文档之中找到对应的API,名字基本上都是对应的,参数会有些许不同,但不影响使用。

至此,我就能够在任何使用或者支持python作为脚本语言的应用当中直接使用HAPI并把Houdini里面的强大功能直接代入到其中~~

比如说,写个houdini engine for blender 啥的~(并不)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值