【zeno】为zeno增加子模块/新节点的最小化的例子

说明

本文旨在建立一个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这个命名空间里写两部分:

  1. 类PBD的方法定义
  2. 类PBD在GUI中对应的节点

类PBD:
zeno写类用的是struct而不是class(其实也没啥大区别,不知道为什么他们这么用)
然后继承INode类(前面的zeno::也是命名空间)
然后重写一个虚函数apply

对应节点
采用ZENDEFNODE这个宏。来将后台代码绑定到GUI上

6. 开启CMake编译宏

更改build/CMakeCache.txt
或者利用VS Code的CMake插件编译
在这里插入图片描述

在这里插入图片描述

编译运行和最终效果

编译运行

选择如下配置,然后点击运行(那个三角形)
在这里插入图片描述

结果

按tab建立节点发现节点
在这里插入图片描述
建立子节点如下
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值