max导出模型插件
首先,需要做好如下的准备工作:
1. 安装一个完整版本的3D MAX与Visual Stdio。
我安装的是3D MAX 2012,最好是找一个完整的版本,因为完整的版本中有很多的学习资料与sdk供学习,很省事。3D MAX的二次开发对VS的要求是有一个对应关系的,在SDK文档中可以找到,3D MAX 2012对应的VS开发版本应该是VS 2010,确保电脑上已经安装了VS 2010,我用的是vs2012,不过一样。
2.定制3D MAX plug-in向导。
a.找到安装目录的3dsmaxPluginWizard文件夹(我的安装目录是C:\Program Files\Autodesk\3ds Max 2012 SDK
\maxsdk\howto\3dsmaxPluginWizard
),
b.打开此目录下的MaxPluginWizard.vsz 文件,编辑ABSOLUTE PATH参数为:
Param="ABSOLUTE_PATH=C:\Program Files\Autodesk\3ds Max 2012\SDK\maxsdk\howto\3dsmaxPluginWizard"
c.将3dsmaxPluginWizard文件夹下的三个文件3dsmaxPluginWizard.ico、3dsmaxPluginWizard.vsdir、3dsmaxPluginWizard.vsz拷贝到VS 2005安装目录的 VC Projects 目录下,我电脑上的目录是C:\Program Files\Microsoft Visual Studio 12\VC\vcprojects。
d.启动VS 2012,File-New Project,选择Visual C++就可以看到3ds max Plugin Wizard选项,说明定制成功。
以上只是开发前的一些准备工作,都可以直接在3D MAX SDK的文档中直接找到,不过文档可都是英文的哦,要耐心的读下去。
在以上准备工作做好以后,就可以开始开发一个插件了,由简单到复杂,先做一个简单的插件程序。插件程序的编写有两种方法,一是用插件向导,就是刚才上面所说的;另一种是通过手工创建一个插件项目,在这里暂时只讨论用插件向导来开发,比较便捷,手工开发以后在补上。
1.第一步,生成一个插件程序的工程,具体如下:
a. 打开File —>New Project —>选择3ds max Plugin Wizard,输入project名字,如 “MyExport”。
b. 进入Welcome to the 3ds max Plugin Wizard 画面,选择plugin type如图所示:
c.这里显示各种插件类型,目前要做的是一个文件的导出插件,所以选择FileExport类型。
d.下一步,再出现一个对话框
max sdk的目录里面的框架放到vs目录下,然后新建项目就max的工程选项,方便建工程,少了配置步骤


选择file export,然后 配置路径
class MeshEnumProc : public ITreeEnumProc {
public:
MeshEnumProc(const char *name,IScene *scene,Interface *i,DWORD options);
~MeshEnumProc();
int callback(INode *node);
void export(INode *node,TriObject *tri);
FILE *file;
IScene *scene;
Interface *i;
int selected;
int num_surfaces;
};
写一个类继承自 ITreeEnumProc,这个类有一个EnumTree方法,遍历所有的max场景节点,会调用callback方法
int MeshEnumProc::callback(INode *node)
{
if(selected && node->Selected() == FALSE) return TREE_CONTINUE;
Object *obj = node->EvalWorldState(i->GetTime()).obj;
if(obj->CanConvertToType(Class_ID(TRIOBJ_CLASS_ID,))) {
TriObject *tri = (TriObject*)obj->ConvertToType(i->GetTime(),Class_ID(TRIOBJ_CLASS_ID,));
export(node,tri);
if(obj != tri) delete tri;
}
return TREE_CONTINUE;
}
export方法写保存顶点数据和法线,贴图uv
doexport里面写这个类导出
int Exp1::DoExport(const TCHAR *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts, DWORD options)
{
//#pragma message(TODO("Implement the actual file Export here and"))
/*
if(!suppressPrompts)
DialogBoxParam(hInstance,
MAKEINTRESOURCE(IDD_PANEL),
GetActiveWindow(),
Exp1OptionsDlgProc, (LPARAM)this);
*/ MessageBox(,"abc","Enter MeshEnumProc",MB_OK);
MeshEnumProc mesh(name,ei->theScene,i,options); return true;
}
const TCHAR *Exp1::Ext(int n)
{
//#pragma message(TODO("Return the 'i-th' file name extension (i.e. \"3DS\")."))
return _T("MiMesh");
}
这个是后缀名
编译完成后生成.dle文件,把它拷贝到max目录下的pugines文件夹 如:D:\Program Files\Autodesk\3ds Max 2012\plugins

3dmax里面编辑模型

导出选择

保存好文件,使用自己的框架加载显示

加入贴图后
Mtl *mat =_node->GetMtl();
if(!mat) //if not have material
return NULL; if(mat->ClassID()!=Class_ID(DMTL_CLASS_ID,))
return NULL;
//yes it's stdmat
StdMat *stdmat =(StdMat *)mat;
Texmap *texmap =stdmat->GetSubTexmap(ID_DI);
if(!texmap||(texmap->ClassID()!=Class_ID(BMTEX_CLASS_ID,)))
return NULL;
BitmapTex *bitmaptex =static_cast<BitmapTex*>(texmap);
const char *fullpath =bitmaptex->GetMapName();


max导出模型插件的更多相关文章
- 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》
ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...
- 关于用Max导出Unity3D使用的FBX文件流程注解
原地址:http://hi.baidu.com/phpstyle/item/c167a4c0694670b10d0a7b87 关于用Max导出Unity3D使用的FBX文件流程注解(转载) (2011 ...
- 用Max导出Unity3D使用的FBX文件流程注解(转载)
http://www.cnblogs.com/wantnon/p/4564522.html 从max导出FBX到Unity,以下环节需要特别注意.1,单位设置 很多人在建模,动画的时候,默认的ma ...
- mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
1,mysql数据库导出模型到powerdesigner 2,CRL+Shift+X 3,复制以下内容,执行 '******************************************** ...
- 支持10种格式的 HTML 表格导出 jQuery 插件
HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...
- Mac下导出chrome插件
chrome最强大的功能之一就是插件,有时候需要给小伙伴们共享一些插件,所以需要将自己chrome中的插件打包,在mac下打包插件还是挺费劲的,在此记录. 打开chrome的扩展程序,找到要导出的插件 ...
- 学习笔记TF022:产品环境模型部署、Docker镜像、Bazel工作区、导出模型、服务器、客户端
产品环境模型部署,创建简单Web APP,用户上传图像,运行Inception模型,实现图像自动分类. 搭建TensorFlow服务开发环境.安装Docker,https://docs.docker. ...
- revit导出模型数据到sqlserver数据库
revit软件可以导出模型数据到sqlserver数据库,有时候,为了对模型做数据分析,需要导出模型的数据,下面总结一下导出过程: 首先在sqlserver中建立一个数据库,如:revit_wujin ...
- 导出Excel插件——Export-CSV ---20150610
出处:http://bbs.hcharts.cn/thread-99-1-1.html 导出Excel插件——Export-CSV 一.插件信息 插件名:Export-CSV(导出Execl文件) ...
随机推荐
- maven多环境发布.
需要设定profile和build <profiles> <profile> <id>develop</id> <properties> & ...
- java基础篇---网络编程(IP与URL)
一:IP与InetAddress 在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议 可靠地连接传输,使用三方握手的方式完成通讯 不可靠的连接传输,传输的时候接受方不一 ...
- [转]Tomcat启动报错:AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
原文地址:https://blog.csdn.net/daochuwenziyao/article/details/54949151 问题描述: 控制台输出AnnotationConfigBeanDe ...
- AT24Cxx(EEPROM)子系统
1.配置内核 打开I2C功能: 打开杂项设备,该选项打开后,EEPROM也就打开了. 2. 修改代码 修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c ...
- 简单的Http请求数据保存到Hdfs
使用okhttp工具集来开发:(如果文件已经存在会报错) package com.etl; import java.io.IOException; import org.apache.commons. ...
- maven配置阿里云仓库
在mirrors的节点中添加: <mirror> <!--This sends everything else to /public --> <id>nexus-a ...
- hive表增量抽取到oracle数据库的通用程序(一)
hive表增量抽取到oracle数据库的通用程序(二) sqoop在export的时候 只能通过--export-dir参数来指定hdfs的路径.而目前的需求是需要将hive中某个表中的多个分区记录一 ...
- jstorm之于storm
关于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm.简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一 ...
- Jackson 处理复杂类型(List,map)两种方法
http://blog.csdn.net/zhuyijian135757/article/details/38269715 —————————————————————————————————————— ...
- 线段树 + 区间更新 + 模板 ---- poj 3468
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 59798 ...