当前位置:网站首页>【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建立节点发现节点
建立子节点如下
边栏推荐
- MySQL database error The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
- Neuron Newsletter 2022-07|新增非 A11 驱动、即将支持 OPC DA
- The Secrets of the Six-Year Team Leader | The Eight Most Important Soft Skills of Programmers
- 动态内存开辟(C语言)
- express hot-reload
- 【零基础玩转BLDC系列】无刷直流电机无位置传感器三段式启动法详细介绍及代码分享
- DPU — 功能特性 — 网络系统的硬件卸载
- 好资料汇总
- sql server中 两表查询 平均数 分组
- 使用 External Secrets Operator 安全管理 Kubernetes Secrets
猜你喜欢

2022.8.3

使用 External Secrets Operator 安全管理 Kubernetes Secrets

sql server中 两表查询 平均数 分组

How to make pictures clear in ps, self-study ps software photoshop2022, simple and fast use ps to make photos clearer and more textured

施一公:科学需要想象,想象来自阅读

让程序员崩溃的N个瞬间(非程序员误入)

画法几何及工程制图考试卷A卷

网页直接访问链接不让安全中心拦截

15.1.1、md—md的基础语法,快速的写文本备忘录

复现一次循环和两次循环
随机推荐
DPU — 功能特性 — 安全系统的硬件卸载
MySQL内部函数介绍
Dynamic memory development (C language)
sphinx匹配指定字段
Chapter 12 Bayesian Networks
十一道家常小菜详细攻略[图文并茂]
ECCV 2022 Oral Video Instance Segmentation New SOTA: SeqFormer & IDOL and CVPR 2022 Video Instance Segmentation Competition Champion Scheme...
接口全周期的生产力利器Apifox
网页直接访问链接不让安全中心拦截
openpyxl to manipulate Excel files
Creo 9.0 基准特征:基准坐标系
Walk 100 trick society
Dry goods!Generative Model Evaluation and Diagnosis
好资料汇总
Creo 9.0 基准特征:基准轴
Linux导出数据库数据到硬盘
Undefined symbols for architecture arm64解决方案
嵌入式实操----基于RT1170 移植memtester做SDRAM测试(二十五)
工程制图试题
leetcode 剑指 Offer 10- I. 斐波那契数列