C++包扩展_理解胡迪尼底层代码,掌握一种扩展功能的新思路

a9bc61ff94ace570ffe52d2b6c1f627e.png

    本篇文字我讲四个案例来展示Houdini扩展开发的一种新思路,可依据公司流程扩展一个增强版Houdini来使用。

    之前写Houdini扩展开发的文字已经很多,可以后台搜索Houdini相关文字,这篇文字为了演示一种通用扩展功能的理论依据,实际之前也写过相关文字,但没有理论依据,只知其然不知其所以然,有了理论依据,就可以举一反三,文字试图在引导大家如何增强自己的Houdini一些功能。

    我们先来看四个案例,左侧图片是Houdini原始的配置,右侧图片是我测试的扩展配置。

aebb378fa0b59d699b67e42525e4f9c4.png

ae96c86e00cef3655335a495880ec49c.png

d53d00fb448943c464fe1ce9e54b1c32.png

89bc7cfb53aadeb75ad2b6aaa052b468.png

    下面我们来讲讲如何来配置,为什么可以这样来配置以及采用的通用方案是什么?

    首先我们创建一个mantra节点,打开齿轮菜单>Edit Parameter Interface...

4a65d7580f1102313e75d59e22d6a323.png

    找到Output Picture参数,选择右侧的Menu

9a88fd5cd119a0836436f2ca43df1b28.png

    可以看到此参数使用的是Menu Scripts,其中写了一行代码

echo `pythonexprs("__import__('toolutils').parseDialogScriptMenu('FBrender')")`

    其实调用的是toolutils模块中的parseDialogScriptMenu方法读取的FBrender配置文件

    我们可以打开一个Python Shell来验证此事。

594a89ae0e020429f5279d172624ac5f.png

    实际toolutils.py和FBrender配置文件都在Houdini安装包中

C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\python2.7libs\toolutils.pyC:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\FBrender

    可以查看toolutils.py源代码,第1114行有所描述

24e5d54381c5325ec95f12457d233b18.png

    实际咱们直接修改FBrender文件就可以做到扩展菜单的作用,但这里本着不修改任何安装文件的前提下,我们需要思考使用HOUDINI_PATH的方式来扩展,在D盘新建一个houdini文件夹(此路径仅测试,你可以放在任何位置,包括服务器),然后在我的文档\houdini18.0\houdini.env文件中添加一行环境变量,将D:\houdini添加到HOUDINI_PATH中。

2d99272658f9cbd3d2fc8c276542ca3d.png

    然后将文件C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\FBrender

拷贝到D:\houdini文件夹中并做需求修改,比如添加一行。

9daf3754192f7539409753fcfa8d2823.png

此时重启我们的胡迪尼就可以发现修改的变化

415054d2a0a2c53bfb68a77159f1eaee.png

    Houdini搜索一些配置文件有自己的路径优先级,所以它会优先获取到D:\houdini\FBrender

7ac04e6f90f56447172904fb987081dc.png

    我们再创建一个相机节点看看,同样齿轮菜单找到对应参数

8c60be20dff14d457a599f79d4023a7f.png

    可以看到也是使用的Menu Script

echo `pythonexprs("__import__('toolutils').parseDialogScriptMenu('FBres')")`

    聪明的你肯定知道将文件C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\FBres

拷贝到D:\houdini文件夹中并做相应的修改

61687935aed6ee9ec992c3839a35cc49.png

    重新开Houdini看看,你会得到你的扩展配置。

609d27f7d4ed8b25d267fec4ffcf084a.png

    然后我们在geo节点中创建一个Python节点,依然打开齿轮菜单找到对应参数

43ce68f0d2f35361bc3fbd76d2cd0fda.png

    可以看到也是使用的Menu Script,但此时代码有所不同

import pythonscriptmenureturn pythonscriptmenu.buildSnippetMenu('Sop/pythonscript/python')

    我们找到源代码C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\python2.7libs\pythonscriptmenu.py打开

b94d01712c4b44ab7c99b6ba7654e7e6.png

    代码的第16行实际调用的是PythonScripts.txt文件,我们将文件C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\PythonScripts.txt

拷贝到D:\houdini文件夹中找到Sop/pythonscript/python并做相应的修改

d79ce62096ef657d2af0cc9034471eee.png

    重新开Houdini看看,你会得到你的扩展配置。

c671f254141e40ae499005018020b89e.png

    我们再来看Wrangle,创建一个Attribute Wrangle节点,打开齿轮菜单找到对应参数

82d68044f918519dc91a3d5d27dae583.png

    可以看到使用的也是Menu Script,代码如下

import vexpressionmenureturn vexpressionmenu.buildSnippetMenu('attribwrangle/snippet')

    我们找到源代码C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\python2.7libs\vexpressionmenu.py打开

b13baf5c75fb377c7c5b696dab71a66a.png

    代码的第528行实际调用的是VEXpression.txt配置文件,我们将文件C:\Program Files\Side Effects Software\Houdini 18.0.460\houdini\VEXpression.txt

拷贝到D:\houdini文件夹中找到attribwrangle/snippet并做相应的修改

cce9a2f9309371a66fc7cc385f3c0d85.png

    重新开Houdini看看,你会得到你的扩展配置。

04d4f1dc5315ef9568d866ca9e23d212.png

    所以扩展的通用方案就是通过查看菜单中Menu Script脚本找到具体的配置文件,然后通过HOUDINI_PATH来修改新的配置文件。胡迪尼整个在环境变量控制,API完善性,扩展开发的友好性都不是别的CG软件可以比拟的。

    今日份文字到这里,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值