平安夜祝大家平平安安,以后的文章关于C++语言方面的内容会多一些,不太理解的话就当一乐子看,了解一下Houdini底层架构知识也是好的。能保证的是文章的内容都是笔者自己验证过的,只要足够用心,文章内容是可以起到一些授人以渔的作用。
我们平时解决问题特别是使用API来写代码的时候,掌握两条规则可能会轻松一点,一条是不能一口吃一个胖子,遇到复杂的问题尽可能先简单化,想登天得造台阶不是,只要目标方向是对的,时间总能解决问题。第二条是既然用别人的API接口,就没必要钻牛角尖把每一点都弄的很明白,即使把头发熬白了,也不可能完全掌握别人制定的一套规则,遵循这套规则去写代码就好了,尽可能多参考API的范例去写,当有能力独立写一套自己的架构的时候,应该会有一种英雄所见之感吧。
本篇文字以在Houdini中创建一个SOP_Custom.dll插件(一个空的SOP节点)的案例来讲一些C++代码的基础和实现。
演示效果:
从演示中可以看到我编译了一个Custom Node节点,这个节点什么参数都没有,也没有任何几何信息,这是HDK中使用C++开发一个自定义节点最基本的代码实现的,唯一不同的是我给这个节点添加了图标,显得好看一些。下面来具体实现吧。
Step 1、随便找个路径创建个文件夹叫SOP_Custom,在内部文件夹和文件目录如下:
文件内容如下(这是前面两篇文字的内容,稍微做了一些改动,如果你的Houdini版本不是16.0.705,可能要稍微修改一些内容):
SOP_Custom\build\houdini.bat
SOP_Custom\modules\FindHoudini.cmake
SOP_Custom\src\CMakeLists.txt
SOP_Custom\src\SOP_Custom.cpp文件为空
SOP_Custom\src\SOP_Custom.h文件为空
SOP_Custom\CMakeLists.txt
Step 2、进入SOP_Custom\build文件夹,按shift+右键打开命令行窗口,输入下面指令编译vs项目工程
Step 3、双击打开SOP_Custom\build\SOP_Custom.sln工程文件(需要安装Visual Studio Professional 2015 Update 3)
Step 4、我们打开SOP_Custom\src\SOP_Custom.h和SOP_Custom\src\SOP_Custom.cpp文件分别写入如下的C++代码
SOP_Custom\src\SOP_Custom.h
SOP_Custom\src\SOP_Custom.cpp
Step 5、在SOP_Custom\build文件夹中打开命令行窗口,输入如下编译插件的命令并打开Houdini软件调试,这样就创建了一个自定义的SOP节点。
如果你能看到这里的话,说明你对C++还是有点兴趣的,C++代码要比Python复杂的多,这里就可以解释为什么有”人生苦短,我用Python”这句话了,因为写C++代码要比写Python代码花费多得多的时间和精力,但它们同为和计算机交流的语言,自然有共通之处。
在SOP_Custom.h头文件中,主要是用来写类的声明,包括声明类的成员和方法,但具体的实现都是在SOP_Custom.cpp源文件中去做的,下图中可以看到一一对应关系,声明是C++跟Python最大不同之一。
这些代码能写出来主要是仔细阅读HDK文档Building Custom Operators部分以及Files中的源代码来参考完成的,想完成这部分工作,基础语法需要多看几本书,比如《C++ Primer Plus》,以及临摹源代码的写法,写出来问题就不大。
领取专属 10元无门槛券
私享最新 技术干货