当前位置:网站首页>【zeno】为zeno增加子模块/新节点的最小化的例子
【zeno】为zeno增加子模块/新节点的最小化的例子
2022-08-05 09:13:00 【beidou111】
说明
本文旨在建立一个zeno的最小化的自定义节点(子模块)。
最终,你将看见自己新建的子节点
这里我建立的子模块名字为PBD
1. git设置
自己fork一下zeno,然后把源换成自己的远程仓库,然后自己新建一个branch
这是为了保证自己随意写BUG(bushi),不影响其他部分。
2. 在projects的目录下面新建文件夹并添加3个文件

其下有这PBD.h PBD.cpp, CMakeLists.txt, .gitignore四个文件
(gitignore只是用来告诉git哪些不需要纳入版本管理的,就不讲了)
3. 在projects/PBD/CMakeLists.txt中写

增加这一行
target_sources(zeno PRIVATE PBD.cpp PBD.h)
没错就这一行
4. 在projects/CMakeLists.txt中增加


没错就增加这一行
5. 在PBD.h和PBD.cpp中写自己的类
我们最终要的是编译出一个新的节点
一个模板
PBD.h
#pragma once
#if defined (_MSC_VER)
#undef max
#undef min
#define NOMINMAX
#endif
// disable some warnings on Windows
#if defined (_MSC_VER)
__pragma(warning (push))
__pragma(warning (disable : 4244))
__pragma(warning (disable : 4457))
__pragma(warning (disable : 4458))
__pragma(warning (disable : 4389))
__pragma(warning (disable : 4996))
#elif defined (__GNUC__)
_Pragma("GCC diagnostic push")
_Pragma("GCC diagnostic ignored \"-Wconversion\"")
_Pragma("GCC diagnostic ignored \"-Wsign-compare\"")
_Pragma("GCC diagnostic ignored \"-Wshadow\"")
#endif
//=============================================================
class PBD
{
public:
PBD();
};
#if defined (_MSC_VER)
__pragma(warning (pop))
#elif defined (__GNUC__)
_Pragma("GCC diagnostic pop")
#endif
PBD.cpp
#include <zeno\zeno.h>
#include "PBD.h"
namespace zeno {
struct PBD : zeno::INode {
virtual void apply() override {
}
};
ZENDEFNODE(PBD, {
{
{
}
},
{
},
{
},
{
"PBD"
},
});
} // namespace zeno
解释一下:
zeno.h这个头文件包含了大部分所需要的工具类
然后在zeno这个命名空间里写两部分:
- 类PBD的方法定义
- 类PBD在GUI中对应的节点
类PBD:
zeno写类用的是struct而不是class(其实也没啥大区别,不知道为什么他们这么用)
然后继承INode类(前面的zeno::也是命名空间)
然后重写一个虚函数apply
对应节点
采用ZENDEFNODE这个宏。来将后台代码绑定到GUI上
6. 开启CMake编译宏
更改build/CMakeCache.txt
或者利用VS Code的CMake插件编译

编译运行和最终效果
编译运行
选择如下配置,然后点击运行(那个三角形)
结果
按tab建立节点发现节点
建立子节点如下
边栏推荐
猜你喜欢

CCVR eases heterogeneous federated learning based on classifier calibration

基于 Kubernetes 的微服务项目整体设计与实现

Chapter 12 Bayesian Networks

eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑

上海控安技术成果入选市经信委《2021年上海市网络安全产业创新攻关成果目录》

Code Audit - PHP

【Excel实战】--图表联动demo_001

并发之CAS

express hot-reload

How to replace colors in ps, self-study ps software photoshop2022, replace one color of a picture in ps with another color
随机推荐
Creo 9.0 基准特征:基准点
2022.8.3
express hot-reload
放大器OPA855的噪声计算实例
苹果官网商店新上架Mophie系列Powerstation Pro、GaN充电头等产品
DTcloud 装饰器
【ASM】字节码操作 方法的初始化 Frame
动态库之间回调函数使用
轩辕实验室丨欧盟EVITA项目预研 第一章(四)
【 a daily topic 】 1403. The increasing order of the sequence, boy
k-nearest neighbor fault monitoring based on multi-block information extraction and Mahalanobis distance
PAT乙级-B1021 个位数统计(15)
Thinking and summary of the efficiency of IT R&D/development process specification
代码审计—PHP
线程之Happens-before规则
Excuse me if you want to write data in mysql, with flink - connector - JDBC directly is ok, but I'm in the f
Three solutions to solve cross-domain in egg framework
HStreamDB Newsletter 2022-07|分区模型优化、数据集成框架进一步完善
egg framework
交换机端口的三种类型详解与hybrid端口实验