注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[c++] 导出 vertex xyz  

2011-12-06 18:32:21|  分类: 3d_3dmax |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

INode, 对应一个object,比如一个 box

3dmax 的 IScene 保存着整个 pipeline 的所有object。
Geometry Pipeline System
BaseObject => ...(modifiers) => WorldSpaceState(for rendering)
通过 EvalWorldState() 可以获得 WorldSpaceState。

ConvertToType() 然后拿到 Mesh。可以发现 Mesh 的 member func 和我们在 maxscript 中用的函数一致。
- -! 用 C++ 来导出数据就是麻烦。

------------------------------ ExportVertex.cpp -------------------------------
#include "ExportVertex.h"
#include <inode.h>
#include <string>

class MyNodeEnum : public ITreeEnumProc
{
public:
    MyNodeEnum(TimeValue t, const char *filename) : t_(t), filename_(filename) {}

    virtual int callback(INode *node);

private:
    TimeValue t_;
    std::string filename_;
};

int MyNodeEnum::callback(INode *node)
{
    if (!node->Selected())
        return TREE_CONTINUE;

    Object *obj = node->EvalWorldState(t_).obj;
    if (!obj->CanConvertToType(triObjectClassID))
        return TREE_CONTINUE;

    FILE *fp = fopen(filename_.c_str(), "wt+");

    TriObject *tri = (TriObject *)obj->ConvertToType(t_, triObjectClassID);
    Mesh &mesh = tri->GetMesh();
    int numVerts = mesh.getNumVerts();
    for (int i=0; i<numVerts; i++)
    {
        Point3 &point = mesh.getVert(i);
        fprintf(fp, "#%d: %.2f, %.2f, %.2f\n", i, point.x, point.y, point.z);
    }

    if ((Object *)(tri) != obj)
    {
        tri->DeleteThis();
        tri = NULL;
    }

    fclose(fp);
    return TREE_CONTINUE;
}

int ExportVertex::DoExport(const TCHAR *name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options)
{
    IScene *scene = ei->theScene;
    MyNodeEnum myenum(i->GetTime(), name);
    scene->EnumTree(&myenum); 
    return IMPEXP_SUCCESS;
}
------------------------------------------------------------------------------------
  评论这张
 
阅读(637)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017