本文内容来自于jurajtomori 的 CREATING A SIMPLE C++ OPENVDB NODE IN HDK
一、节点功能
基于输入点激活VDB中的体素。
二、代码编写
头文件(vdb_activate_from_points.h)
头文件包含类(节点)的定义和用于构造(myConstructor()、SOP_VdbActivateFromPoints()、~SOP_VdbActivateFromPoints()、UI参数(myTemplateList[])、输入标记(inputLabel()的函数。执行实际几何处理的函数cookMySop()。这里还设置了一个DEBUG()函数,它将在node的UI中计算调试参数(最后一个参数可以是计算的帧数,但是我们不太可能激活调试选项)。
#ifndef __SOP_vdb_activate_from_points_h__
#define __SOP_vdb_activate_from_points_h__
#include <SOP/SOP_Node.h>
namespace VdbActivateFromPoints {
class SOP_VdbActivateFromPoints : public SOP_Node
{
public:
// HDK的节点构造函数
static OP_Node *myConstructor(OP_Network*, const char *, OP_Operator *);
// Houdini UI的参数数组
static PRM_Template myTemplateList[];
protected:
// 构造函数与析构函数
SOP_VdbActivateFromPoints(OP_Network *net, const char *name, OP_Operator *op);
virtual ~SOP_VdbActivateFromPoints();
// 在Houdini UI中标记节点输入
virtual const char *inputLabel(unsigned idx) const;
// 节点的主要功能函数
virtual OP_ERROR cookMySop(OP_Context &context);
private:
// 帮助函数访问节点的参数值
int DEBUG() {
return evalInt("debug", 0, 0); }
};
}
#endif
源文件(vdb_activate_from_points.C)
//加入相关头文件,然后是访问Houdini功能的头文件,最后是Houdini附带的OpenVDB头文件。
#include "vdb_activate_from_points.h"
#include <limits.h>
#include <SYS/SYS_Math.h>
#include <UT/UT_DSOVersion.h>
#include <UT/UT_Interrupt.h>
#

本文介绍如何使用C++和OpenVDB库在Houdini中创建一个简单的VDB节点,该节点能够根据输入点集激活VDB体积中的体素。文章详细讲解了代码结构、编译流程及在Houdini中使用该自定义节点的方法。
最低0.47元/天 解锁文章
1840

被折叠的 条评论
为什么被折叠?



