基于MAX SDK的3DMAX模型结构分析与导出实现*

2016-08-11 06:59任培祥
计算机与数字工程 2016年4期
关键词:面片顶点纹理

周 安 任培祥 严 研 王 科 尚 轲

(1.北京洛斯达数字遥感技术有限公司 北京 100120)(2.中南电力设计院 武汉 430074)(3.华中科技大学 武汉 430074)



基于MAX SDK的3DMAX模型结构分析与导出实现*

周安1任培祥1严研1王科2尚轲3

(1.北京洛斯达数字遥感技术有限公司北京100120)(2.中南电力设计院武汉430074)(3.华中科技大学武汉430074)

摘要随着智能电网技术的发展,三维数字化的电网平台给电力规划设计提供了有力的支撑。模型数据生产是平台设计的基础环节。然而,AutoCAD和Microstation等建模软件通常达不到预期的渲染效果,所以论文选择3DMAX软件建立模型数据。论文利用3DMAX SDK,在VC++的环境中,开发了3DMAX模型导出插件,实现了3DMAX模型几何结构和渲染效果的读取与优化。该插件支持自定义数据组织,方便各类三维数字化平台的模型数据加载和调度。该文对多个电站模型进行了实验,有效获取并优化了原有的数据模型,取得了良好的效果。

关键词三维数字化; 3DMAX SDK; 导出插件; 优化

Class NumberTP393

1 引言

三维数字化电网平台作为坚强智能电网中的一环,提升了电网工程的管理水平,加快了电网工程的建设进度,实现了电网工程的信息化升级。承担智能电网数据管理基础平台的三维数字化电网具有整合资源,集成功能,真实场景的特点,是电网信息化领域重要的研究方向之一。三维数字化电网平台需要大量模型数据的支持,模型数据的生产自然就是平台建设的基础根基之一。

国内的三维模型生产技术经过多年的发展,在国外三维模型设计软件平台的基础上进行二次开发,得到了长足的进步并取得了一定的成绩和突破。鉴于AutoCAD和Microstation等建模软件通常达不到预期的渲染效果,对变电站、换流站等复杂模型的建立和渲染,目前大多数设计单位通常采用3DMAX软件进行设计。然而,实际应用中,3DMAX格式的数据模型无法满足大数据量的实时渲染和调度要求。这一问题的解决关键在于对模型数据进行分块管理,也就需要对文件格式重新组织,对3DMAX模型结构的分析和导出便是在这样的工程背景下提出。

2 3DMAX模型结构分析

3DMAX默认的文件格式是.max,该格式的文件结构复杂,数据量大,信息丰富,包含了模型网格的顶点、面、材质、贴图信息和场景的光照、摄像机等信息。简化的导出模型一般只包含模型的网格、材质、纹理信息,这也是模型最基础的数据[1~2]。

2.1模型的场景节点管理

3DMAX模型导入场景后,便由场景统一管理和组织模型数据。场景以树状形式来组织数据,场景中的网格、材质、灯光、摄像机等物体都附着在树的节点(INode)上。节点保存了指向场景物体的指针,通过树的根节点可遍历场景中的所有节点。

3DMAX场景关联图如图1所示,场景视口中的每一个对象实体都与一个树节点关联,关联的节点存储了对象实体的相关属性,这些属性包括网格点面信息、材质信息、空间变换矩阵信息、灯光信息、摄像头信息等。同时,节点存储的空间变换矩阵信息又包括节点本身的变换矩阵和关联对象实体的变换矩阵[3]。

图1 3DMAX场景关联图

2.2模型材质结构分析

模型材质与节点相关联,通过节点便可获得材质的详细信息,不同类别的材质以特有的类标识符区分。3DMAX中的材质类别有标准材质、多材质和壳材质等,其中,前两者又最为常用[4~5]。

标准材质的标识符是DMTL_CLASS_ID,记录了渲染物体的材质属性,包括环境光颜色、漫反射颜色、高光颜色、高光级别、光泽度、自发光、不透明度等信息。标准材质的每一个属性都可以存取贴图纹理,贴图纹理记录了纹理通道、纹理坐标方式等信息。用户读取的纹理坐标需要与纹理通道匹配,否则渲染的物体纹理会发生错误。多材质的标识符是MULTI_CLASS_ID,由多个子材质构成,每个子材质由ID标识符来唯一标识。子材质可以是标准材质,也可以是多材质,模型面片采用的材质通过获取材质ID来匹配。

图2展示了材质可视化结构图,图中左边展示的是标准材质,图中右边展示的是多材质,从图上可见,多材质包含了两个标准子材质,标准材质也都包含了纹理贴图。

图2 标准材质和多材质可视化结构图

2.3模型网格结构分析

三角面片构成了3DMAX模型网格(Mesh)结构,所有的对象实体都以三角网格的形式被渲染,所以对模型网格(Mesh)结构的分析,也就是对三角面片构建规则的分析。模型网格(Mesh)与节点相关联,通过遍历节点可以获得模型的所有网格(Mesh)结构。

网格(Mesh)存储了模型顶点、面、法向量、材质索引、纹理坐标等信息,包含了模型最重要的属性数据。网格顶点面片和纹理面片一一对应,分别映射面片的顶点索引和纹理坐标索引,两种映射方式导致了网格顶点可以具有不同的纹理坐标,同时,顶点的纹理坐标需与材质中记录的纹理通道匹配。网格(Mesh)对象的不同三角面片可以匹配不同的材质,面片的材质索引映射了子材质或者标准材质的标识符[6]。

3 模型的导出实现

3.13DMAX SDK

3DMAX提供了MAX SDK开发包来支持用户的二次开发,利用SDK提供的类和API,用户可以开发不同的插件。本文在对模型分析的基础上,开发了模型的优化导出插件。

模型的导出从DoExport()函数开始,参数Interface*iface提供了访问模型对象的接口。根节点的获取可以调用iface->GetRootNode()函数,利用节点提供的GetRootNode()函数和NumberOfChildren()函数,便可获得根节点关联下的所有子节点个数,然后递归调用GetChildNode()函数,便可获取场景中的所有节点。

3.2导出模型数据结构定义

本文主要读取了模型的网格、材质、纹理等信息,这些信息存储在自定义的数据结构中,方便后续的数据优化和逻辑分块。

模型场景网格(Mesh)存储数据结构如表1所示。

表1 网格数据结构

其中,纹理通道和纹理坐标可以记录多重纹理信息,分别记录每一层纹理的通道信息和纹理坐标信息。

3.3导出结构的设计与优化

3.3.1网格结构的优化

网格(Mesh)是TriObject对象的成员数据,调用TriObject提供的GetMesh()方法便可获得模型对象的网格(Mesh)结构。同时,网格(Mesh)信息与节点(INode)关联,节点(INode)的成员方法EvalWorldState()提供了获取TriObject对象的途径[7]。

鉴于网格顶点可能具有不同的纹理坐标和不同的面法向量,确保导出的模型纹理正确和模型表面光照反射平仄有致,本文采取了先扩充,后精简顶点的方式来优化模型。先扩充顶点是指以面片的方式来组织顶点,顶点个数是三角面片个数的三倍,顶点位置是三角面片对应顶点的位置,这样使每一个纹理坐标得到了保留,导出模型的纹理效果才不失真。

扩充后的顶点存在大量冗余和重复的信息,需要优化精简顶点个数。网格顶点可能只有一个纹理坐标,也可能具有多个纹理坐标。对于只有一个纹理坐标的顶点,如果其所在的面的法向量与其现在的顶点法向量角度相差小于45°,则合并此类顶点,只保留一个顶点的信息。顶点精简合并算法如下:

1:获取节点非重复顶点位置信息;

2:获取节点贴图通道上的纹理坐标数据;

3:for int i=0; igetNumFaces(); i++//遍历面信息;

for int j=0; j<3; j++ //一个面三个顶点;

获取旧的面顶点索引,顶点,纹理,法向量信息;

if相同的顶点位置没有读取过转4;

else if 顶点的纹理坐标没有读取过转4;

elseif顶点的面法向量与记录中具有相同位置;

和纹理坐标的顶点的法向量夹角大于45°转4;

else 更新面顶点索引为记录中具有相同纹理坐标顶点的索引

4:记录其顶点,纹理,法向量信息,面顶点索引为记录中顶点数据的个数;

3.3.2材质和纹理的优化

3DMAX的材质与节点对应,同一标准材质或者多材质可能被不同的节点引用,纹理贴图也一样,不同的材质可能引用同一纹理贴图[8]。优化材质和纹理的方法是采用统一的编码方式,编码方式如下。

materialID=(nodeID+1)〈〈8+offsetID;

(1)

其中materialID表示材质编码,nodeID表示节点编码,offsetID表示子材质的偏移编码,如果没有子材质,offsetID编码为0。编码后的材质,根据其内容进行合并优化,同一材质的内容只保存一次,同时分配新的材质编码,记录所有旧的材质编码。

计算面的材质索引,&mesh->faces[i]->getMatID()方法获取的是材质的偏移编码,加上node->GetHandle()方法获得的nodeID节点编码,便可计算出合并优化前的材质编码,根据这一编码便可查询到合并后的材质编码[9~11]。优化后的材质和纹理极大地减少了数据的冗余度,节省了存储空间。

3.4模型导出实验

3.4.1实验环境和设置

针对本文提出的模型读取和优化算法,设计了在3DMAX 2012 64位软件中,对电网接地极模型和变电站模型导出的实验,两者文件大小分别为2.04MB和514MB。导出的模型组织成特定的文件格式,经过重新解释,在NSC Globle三维GIS平台上实时渲染。模型导出和渲染的计算机平台配置参数:windows 7操作系统,i3处理器,4GB内存,AMD HD 6450显卡。

3.4.2实验结果

图3序列展示了电网接地极模型不同部分在导出前和导出后的渲染效果图,上半部分图片展示了模型在3DMAX中的渲染效果,下半部分图片展示了模型同一部分在NSC Globle三维GIS平台上的渲染效果。不同平台的光照环境差异导致的模型明暗程度和阴影差别不在本文实验考虑范围之内,刨去这一因素,从图中可以看出,转换后的模型完整度和模型纹理映射与转换前一致,细节处的纹理贴图和纹理对比度也是基本一致。

图3 青岛接地极模型导出效果图对比

变电站模型导出实验结果如图4序列所示,左半部分图片展示的原始模型和右半部分图片展示的转换模型渲染效果也是大致相似。

图4 变电站模型导出效果图对比

从实验结果显示,本文提出的模型分析和优化算法能较好地完成模型的导出,还原模型的顶点和面片结构,保留模型的材质、纹理和法向量特征。在转换时间上,本文模型导出算法处理结果如表2所示,达到了模型的实时处理效果。

表2 模型导出处理时间

4 结语

在3DMAX SDK的基础上,本文设计了一种导出插件,实现了3DMAX模型几何结构和渲染效果的读取与优化。该插件支持自定义数据组织,方便各类三维数字化平台的模型数据加载和调度。在对多个电站模型的实验中,取得了良好的效果。

参 考 文 献

[1] LIU X, XIONG Z, CAO Q. Research for the Process of Establishing VR Model Based on 3Dmax[J]. West-China Exploration Engineering,2009,2:031.

[2] 郑付联.3DMAX建模技术及其优化的研究[J].大众科技,2010(2):43-44.

ZHENG Fulian. Research on 3DMAX modeling and optimization[J]. Popular Science,2010(2):43-44.

[3] 郑超,余上斌,黄肖丹,等.利用3DMAX和数码摄像头技术实现颅骨的三维重建[J].华中科技大学学报:医学版,2003,32(3):346-348.

ZHENG Cao, YU Shangbin, HUANG Xiaodan, et al. Use 3DMAX and digital camera technology to achieve a three-dimensional reconstruction of the skull[J]. Huazhong University of Science and Technology: Medical Sciences,2003,32(3):346-348.

[4] 李江平.DirectX中3DMAX模型的应用[J].湖北工学院学报,2003,18(4):58-59.

LI Jiangpin. DirectX application in 3DMAX Model[J]. Hubei Institute of Technology,2003,18(4):58-59.

[5] Bin F. The Application of 3DMAX Modelling to OPENGL[J]. Journal of Guizhou University of Technology(Natural Science Edition),1999,6:009.

[6] 张晋西.利用3DMAX获取任意三维空间曲线坐标数据文件[J].计算机应用,2000,3:027.

ZHANG Jinxi. Use 3DMAX get any three-dimensional space curve coordinate data file[J]. Journal of Computer Applications,2000,3:027.

[7] Peng G, He Y, Sun Y, et al. Three-Dimensional Game Modeling and Design Research Based on 3Dmax Software[M]. Advances in Computer Science, Environment, Ecoinformatics, and Education. Springer Berlin Heidelberg,2011:192-196.

[8] 杨帆,杨克俭,王玉华,等.3DS文件格式与自定义文件格式的转换[J].交通与计算机,2004,22(3):101-104.

YANG Fan, YANG Kejian, WANG Yuhua, et al. 3DS file format conversion and custom file formats[J]. Computer and Communications,2004,22(3):101-104.

[9] 刘芳,刘贤梅.3DS文件读取,绘制与控制方法的研究与应用[J].计算机工程与设计,2009(19):4575-4578.

LIU Fang, LIU Xianmei. 3DS file to read, study and application of drawing and control methods[J]. Computer Engineering and Design,2009(19):4575-4578.

[10] Chunxiang W, Shiwei B, Huaijian H. Study on Geological Modeling in 3D Strata Visualization[J]. Chinese Journal of Rock Mechanics and Engineering,2003,10:028.

[11] Zhang J, Li D. Research on 4D virtual construction and dynamic management system based on BIM[C]//Proceedings of the International Conference on Computing in Civil and Building Engineering, ICCBE,2010.

收稿日期:2015年10月5日,修回日期:2015年11月25日

作者简介:周安,男,硕士,工程师,研究方向:电力信息化建设。任培祥,男,硕士,工程师,研究方向:电力三维GIS研究与应用。严研,男,硕士,工程师,研究方向:电网工程信息化、电力管理信息化。王科,男,硕士,工程师,研究方向:电力工程管理。尚轲,男,博士,研究方向:图像处理,目标识别。

中图分类号TP393

DOI:10.3969/j.issn.1672-9722.2016.04.042

Analysis and Export of 3DMAX Model Based on MAX SDK

ZHOU An1REN Peixiang1YAN Yan1WANG Ke2SHANG Ke3

(1. Beijing North-Star Digital Remote Sensing Technology Co., Ltd., Beijing100120)(2. Central Southern China Electric Power Design Institute, Wuhan430074)(3. Huazhong University of Science and Technology, Wuhan430074)

AbstractWith the development of smart grid technologies, three-dimensional digital grid platform provides support to the electric planning and design. Effective data model constitutes the basis of three-dimensional digital grid platform.Because of AutoCAD, Microstation and other CAD software connot achieve the desired rendering effect. Then, the model data is built by 3DMAX.In this paper, the API provided by 3DMAX SDK in VC++ environment is used to develop export plugin, reading and optimizing 3DMAX model are implemented, the developers building 3D model in early stage is supported and the model is converted to the custom data formats in the late. It is convenient for loading and scheduling the model. In this paper, through the experiment to multiple model of power plant, the original data model is accessed effectively and optimized and good results are achieved.

Key Wordsthree-dimensional digital, 3DMAX SDK, export plug-in, optimize

猜你喜欢
面片顶点纹理
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
基于BM3D的复杂纹理区域图像去噪
初次来压期间不同顶板对工作面片帮影响研究
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
甜面片里的人生
消除凹凸纹理有妙招!
基于三角面片包围模型的数字矿山技术研究
青海尕面片