houdini hdk范例文件sop_flatten中文注释笔记

这里写图片描述
这个案例是houdini安装后samples文件夹里面官方提供的,操作很简单就是把一个三维的模型某一个轴向设置为0,就是把一个模型拍扁。
这个案例主要讲了在有输入端的时候操作数据的一些注意事项,本地变量的操作,组的操作,几个默认的parm,简单的手动操作DataID,编写一个简单的Guide(就是图上蓝色的哪个网格,这个经常在一些生成点和发射器节点上看到类似的东西),分块操作点数据和一些简单的初学者应当知道的操作。
个人理解了大概百分之60左右。很多注释是我靠着自己的理解写上去的。是给自己做个笔记也希望能给其他人帮助。如果后续达到了更正确的理解我会在其他案例里面更新。
这个范例不是做一个完整的节点,只是给初学者说明一些常规操作的用法。

SOP_Flatten.h


//防止重复声明宏命令
#ifndef __SOP_Myflatten_h__
#define __SOP_Myflatten_h__
//SOP节点从这里继承
#include <SOP/SOP_Node.h>
//命名空间防止重复类名
namespace HDK_Sample {
class SOP_Myflatten : public SOP_Node
{
public:
    SOP_Myflatten(OP_Network* net, const char* name, OP_Operator* op);
    virtual ~SOP_Myflatten();
    //对于组的操作
    virtual OP_ERROR cookInputGroups(OP_Context &context, int alone = 0);
    //构建函数
    static OP_Node *myConstructor(OP_Network*, const char*, OP_Operator*);
    //参数表
    static PRM_Template myTemplateList[];
protected:
    virtual bool updateParmsFlags();
    //后面的const表示这个函数不会修改该类的任何成员数据的值
    //前面的const由于const在*前面所以表示不能通过该指针修改指向数据的值
    virtual const char *inputLabel(unsigned idx) const;
    //操作节点数据的函数
    virtual OP_ERROR cookMySop(OP_Context &context);
    //编写一个guide
    virtual OP_ERROR cookMyGuide1(OP_Context &context);
private:
    void    getGroups(UT_String &str) { evalString(str, "GROUP", 0, 0); }
    fpreal  DIST(fpreal t)            { return evalFloat("dist", 0, t); }
    int     DIRPOP()                  { return evalInt("usedir", 0, 0); }
    //(参数名,参数idx,time)
    int     ORIENT()                  { return evalInt("orient", 0, 0); }
    fpreal  NX(fpreal t)              { return evalFloat("dir", 0, t); }
    fpreal  NY(fpreal t)              { return evalFloat("dir", 1, t); }
    fpreal  NZ(fpreal t)              { return evalFloat("dir", 2, t); }
    //操作组
    const GA_PointGroup *myGroup;
};
} //END HDK_Sample namespace

#endif

SOP_Flatten.cpp


#include "SOP_Myflatten.h"
#include <UT/UT_DSOVersion.h>
#include <OP/OP_OperatorTable.h>
#include <OP/OP_AutoLockInputs.h>
#include <UT/UT_Interrupt.h>
#include <iostream>

using namespace HDK_Sample;

void
newSopOperator(OP_OperatorTable *table)
{
    //table frome <OP/OP_OperatorTable.h>
    
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值