如何扩展一个自定义SOP节点

平安夜祝大家平平安安,以后的文章关于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》,以及临摹源代码的写法,写出来问题就不大。

本文来自企鹅号 - CGRnDStudio媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序

bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序 也许单页程序(Single Pa...

3375
来自专栏FreeBuf

Offset2lib攻击测试:看我如何全面绕过64位Linux的内核防护

前言 免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! 地址空间布局随机化(ASLR),在你知道目标代码或数据定位的前...

2609
来自专栏文大师的新世界

9. redux如何精简代码

通过之前的代码不难看出redux系统里的ActionType、Action、Reducer都有一定的共性,小项目无所谓,这样写更清晰,但是一旦组件以及业务增多,...

1695
来自专栏腾讯Bugly的专栏

移动App入侵与逆向破解技术-iOS篇

如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术,另外,通过“入侵”,将帮助您理解如何规避常见的安全漏洞,文章大纲: 简单...

2.5K6
来自专栏向治洪

iOS 组件化之路由设计思路分析

前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM...

7416
来自专栏逸鹏说道

MVCforum 支持多国语言

MVCforum支持多国语言。要创建一个更新的语言,你需要去您的管理面板 /admin/ adminlanguage 在这里,您可以添加新的语言键和关联的值。或...

2744
来自专栏Python小屋

Python开发环境Anaconda3使用指南(入门篇)

虽然说,我认为IDLE是世界上最美的Python开发环境,但是确实略显简陋,对Python内功(代码编写和调试)要求也高,并且每个扩展库都需要自己安装和配置,所...

3774
来自专栏冰霜之地

iOS 组件化 —— 路由设计思路分析

随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VI...

1733
来自专栏技术墨客

Ubuntu修改分辨率 转

通常情况下,图形界面的发行版 linux 可以在 Setting->Device->Display 中直接设置多个屏幕的分辨率。但是坑总是无处不在的,有时候明明...

1.2K4
来自专栏君赏技术博客

怎么让继承的类直接使用XIB的布局试图

最近做的一个小工具,一键替换key,就是为了解放双手,不然每次运行测试和正式的版本都要手动的替换key。

1572

扫码关注云+社区

领取腾讯云代金券