一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf

上传人:小** 文档编号:4575331 上传时间:2018-10-21 格式:PDF 页数:11 大小:1.39MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510257817.1

申请日:

2015.05.19

公开号:

CN104851128A

公开日:

2015.08.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06T 17/00申请日:20150519|||公开

IPC分类号:

G06T17/00; G06T15/00(2011.01)I

主分类号:

G06T17/00

申请人:

北京控制工程研究所

发明人:

石磊; 贾永; 景海龙; 张聪; 白旭辉; 管乐鑫

地址:

100080北京市海淀区北京2729信箱

优先权:

专利代理机构:

中国航天科技专利中心11009

代理人:

王琼

PDF下载: PDF下载
内容摘要

本发明公开了一种OSG三维引擎加载3DS模型文件的格式转换方法,包括步骤如下:读取三维模型的结构信息:将3DS三维模型的网格信息,生成三维模型网格信息数据链表,再经OSG三维引擎读取生成OSG三维引擎的基础结构;读取三维模型的效果:通过将3DS三维模型的材质和光照信息,生成材质读取队列及光照信息数组,再经OSG三维引擎读取,转换为OSG三维引擎的基础结构,并根据需求对光照进行增强以及对材质信息做适应性修改,最后再由OSG三维引擎重新渲染并加载光照模型还原三维模型效果。本发明解决了目前普遍采用的OSG三维引擎加载3DS模型文件方法加载模型不完整,渲染效果丢失等问题。

权利要求书

1.  一种OSG三维引擎加载3DS模型文件的格式转换方法,其特征在于包括步骤如下:
(1)读取三维模型的结构信息:将3DS三维模型的网格信息,由节点树的存储方式,生成三维模型网格信息数据链表,再经OSG三维引擎读取,生成OSG三维引擎的基础结构;所述的3DS三维模型的网格信息包括模型ID、顶点数目、顶点值、线条数目、曲面数目;所述的基础结构为OSG的几何模型节点,包含模型ID、顶点数目、顶点值、线条数目、曲面数目信息;
(2)读取三维模型的效果:通过将3DS三维模型的材质和光照信息,由节点树的形式,生成材质读取队列及光照信息数组,根据需求对光照进行增强以及对材质信息做适应性修改,同时对3DS三维模型凹凸效果、环境反射效果、高光效果进行设置,再经OSG三维引擎读取,生成OSG三维引擎中材质、光照和效果节点,最后再由OSG三维引擎重新渲染并加载光照信息和效果,用于还原三维模型效果;
(3)根据步骤(1)的三维模型基础结构和步骤(2)中的三维模型效果以及OSG三维引擎的渲染顺序,重构三维模型结构。

2.
  根据权利要求1所述的一种OSG三维引擎加载3DS模型文件的格式转换方法,其特征在于:所述的读取三维模型结构包括以下步骤:
(1a)定位3DS三维模型网格信息的根chunk及根chunk的子节点;
(1b)将已定位的3DS三维模型网格信息从节点树的存储方式中读取,并遍历模型ID以及模型ID对应模型的顶点数目、顶点值、线条数目、曲面数目,将模型ID以及其他网格信息按照各个三维模型节点的形式存储,构成三维模型网格信息数据链表;
(1c)由OSG三维引擎重构根chunk节点信息及根chunk与其子节点的继承关系,重绘3DS三维模型基础结构;
(1d)将OSG三维引擎重构后的3DS三维模型结构信息写入*.osg、*.ive格式的文件中进行存储。

3.
  根据权利要求1所述的一种OSG三维引擎加载3DS模型文件的格式转换方法,其特征在于:所述读取三维模型的效果包括以下步骤:
(2a)定位3DS三维模型材质信息和光照信息的根chunk及根chunk的子节点;
(2b)将已定位的3DS三维模型材质信息和光照信息从节点树的存储方式,读取并生成材质读取队列及光照信息数组,;
(2c)根据用户需求,对光照进行增强包括修光源基础属性的反射率、折射率和光强,以及修改材质信息包括修改纹理贴图的颜色、色彩亮度、漫射、镜面、光泽度及反射,同时对3DS三维模型凹凸效果、环境反射效果、高光效果进行设置;
(2d)经OSG三维引擎读取步骤(2c)设置的三维模型效果以及材质及光照信息,生成OSG三维引擎中材质、光照和效果节点,并由OSG三维引擎重新渲染修改以后的材质信息的根chunk及其子节点的继承关系,并加载增强后的光照信息和效果,用于还原3DS三维模型效果;
(2e)将OSG三维引擎重新渲染的材质信息及光照信息写入*.osg、*.ive格式的文件中,完成整体3DS三维模型的效果构建。

4.
  根据权利要求3所述的一种OSG三维引擎加载3DS模型文件的格式转换方法,其特征还在于:对于3DS三维模型的凹凸效果、环境反射效果、高光 效果,无法通过3DS文件读取,通过在步骤(2c)用户修改过程中引入着色器编程,设置3DS三维模型的凹凸效果、环境反射效果、高光效果属性,经OSG三维引擎读取并设置材质及光照信息属性。

说明书

一种OSG三维引擎加载3DS模型文件的格式转换方法
技术领域
本发明涉及一种OSG三维引擎加载3DS模型文件的格式转换方法,属于三维可视化技术领域
背景技术
三维模型是三维仿真演示系统软件中的重要组成部分。目前普遍采用先将建模对象利用3DS建模软件生成可描述建模对象细节特征的3DS模型文件,再将3DS模型文件经过格式转换导入三维仿真演示系统中的三维模型加载方法。由于3DS建模软件与三维仿真演示系统中OpenSceneGraph(OSG)三维引擎在三维模型的数据结构上存在差异,因此此种三维模型加载方法在实际应用过程中存在导入后的三维模型与原三维模型相比部分数据结构丢失,出现三维模型显示精度下降、纹理贴图和光照效果紊乱等问题。为了解决OSG三维引擎加载3DS模型文件失真的问题,开展OSG三维引擎加载3DS模型文件的格式转换方法的研究十分重要。
现有的OSG三维引擎加载3DS模型文件的格式转换方法主要有两种,一种是OSG直接读取,这种方法可以完成对3DS模型文件的加载,但不会保留3DS模型材质、灯光等信息,而且模型整体失真严重,无法直接作为不失真模型使用。另一种方法是插件法,主流插件是OsgExp,这种插件可以几乎不失真的加载3DS模型文件,且可以导出部分3ds MAX自带的材质效果。但此种方式可导出的材质信息有限,且缺少灵活性。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提出了一种OSG三维引 擎加载3DS模型文件的格式转换方法,实现了3DS模型文件无失真的加载到OSG三维引擎下,并能够根据用户需求对模型信息进行修改和增强,最大程度上满足复杂材质的导出需求。
本发明的技术解决方案
一种OSG三维引擎加载3DS模型文件的格式转换方法,包括步骤如下:
(1)读取三维模型的结构信息:将3DS三维模型的网格信息,由节点树的存储方式,生成三维模型网格信息数据链表,再经OSG三维引擎读取,生成OSG三维引擎的基础结构;所述的3DS三维模型的网格信息包括模型ID、顶点数目、顶点值、线条数目、曲面数目;所述的基础结构为OSG的几何模型节点,包含模型ID、顶点数目、顶点值、线条数目、曲面数目信息;
(2)读取三维模型的效果:通过将3DS三维模型的材质和光照信息,由节点树的形式,生成材质读取队列及光照信息数组,根据需求对光照进行增强以及对材质信息做适应性修改,同时对3DS三维模型凹凸效果、环境反射效果、高光效果进行设置,再经OSG三维引擎读取,生成OSG三维引擎中材质、光照和效果节点,最后再由OSG三维引擎重新渲染并加载光照信息和效果,用于还原三维模型效果;
(3)根据步骤(1)的三维模型基础结构和步骤(2)中的三维模型效果以及OSG三维引擎的渲染顺序,重构三维模型结构。
读取三维模型结构包括以下步骤:
(1a)定位3DS三维模型网格信息的根chunk及根chunk的子节点;
(1b)将已定位的3DS三维模型网格信息从节点树的存储方式中读取,并遍历模型ID以及模型ID对应模型的顶点数目、顶点值、线条数目、曲面数目, 将模型ID以及其他网格信息按照各个三维模型节点的形式存储,构成三维模型网格信息数据链表;
(1c)由OSG三维引擎重构根chunk节点信息及根chunk与其子节点的继承关系,重绘3DS三维模型基础结构;
(1d)将OSG三维引擎重构后的3DS三维模型结构信息写入*.osg、*.ive格式的文件中进行存储。
读取三维模型的效果包括以下步骤:
(2a)定位3DS三维模型材质信息和光照信息的根chunk及根chunk的子节点;
(2b)将已定位的3DS三维模型材质信息和光照信息从节点树的存储方式,读取并生成材质读取队列及光照信息数组,;
(2c)根据用户需求,对光照进行增强包括修光源基础属性的反射率、折射率和光强,以及修改材质信息包括修改纹理贴图的颜色、色彩亮度、漫射、镜面、光泽度及反射,同时对3DS三维模型凹凸效果、环境反射效果、高光效果进行设置;
(2d)经OSG三维引擎读取步骤(2c)设置的三维模型效果以及材质及光照信息,生成OSG三维引擎中材质、光照和效果节点,并由OSG三维引擎重新渲染修改以后的材质信息的根chunk及其子节点的继承关系,并加载增强后的光照信息和效果,用于还原3DS三维模型效果;
(2e)将OSG三维引擎重新渲染的材质信息及光照信息写入*.osg、*.ive格式的文件中,完成整体3DS三维模型的效果构建。
对于3DS三维模型的凹凸效果、环境反射效果、高光效果,无法通过3DS 文件读取,通过在步骤(2c)用户修改过程中引入着色器编程,设置3DS三维模型的凹凸效果、环境反射效果、高光效果属性,经OSG三维引擎读取并设置材质及光照信息属性。
本发明相对于现有技术的有益效果为:
(1)本发明通过读取3DS三维模型的网格信息,从节点树的存储方式,按照模型节点的方式重新存储成三维模型网格信息链表,使各个子模型网格信息集中存储,提高OSG三维引擎的读取效率,同时避免3DS三维模型网格信息缺失,很大程度上保持3DS三维模型网格信息的完整性,避免了直接读取3DS三维模型信息不完整,效率低下的问题。
(2)本发明通过读取3DS三维模型的材质信息,将材质信息存入材质读取队列,并对多层贴图构成的材质进行拆分处理,将贴图以子节点的形式存储于三维模型材质信息链表中,提高OSG三维引擎的读取效率,并分别设置对应OSG三维引擎下的纹理贴图属性,完成多层贴图构成的材质的凹凸、透明效果。很大程度上提高了3DS三维模型的显示效果,解决了传统插件无法到处多层贴图构成的材质的局限性。
(3)本发明通过提供用户自定义修改材质及增强光照的算法,在读取3DS三维模型材质信息及光照信息的基础上,用户可以通过修改3DS三维模型材质信息链表中的材质属性(颜色/RGB、漫射、镜面、反射、凹凸、光泽度),并增强光照信息数组中光照属性,在读取阶段对材质及光照信息进行修改,消除了传统插件只能导出部分材质及光照信息的局限性,大大提高了本发明的灵活性及通用性。
(4)本发明增添三维模型网格信息的转化方法,从节点树存储方式转化为 模型节点链表形式的存储方式,便于OSG三维引擎加载三维模型网格信息,由于以模型节点形式存储,各个子模型的网格信息集中,不易发生读取不全的现象。
(5)本发明在模型信息读取阶段引入着色器编程,支持设置3DS三维模型的凹凸效果、环境反射效果、高光效果,提高三维模型显示效果。
附图说明
图1是本发明方法流程图;
图2是本发明3DS三维模型基本结构块(chunk)结构图;
图3是本发明未经用户自定义修改材质、增强光照的3DS基础木质材质图;
图4是本发明经用户自定义修改材质、增强光照后的金材质图。
具体实施方式
下面结合附图对本发明的具体工作原理做进一步解释。
3DS建模软件与三维仿真演示系统中OSG三维引擎在三维模型的存储形式上存在一定的差异,3DS建模软件中建立的三维模型以节点树的形式存储,各个子模型的网格信息(包括模型ID、顶点数目、顶点值、线条数目、曲面数目)以子节点的形式存储于节点树的最底层,且分别存储于不同的子节点下,存储结构相对较分散。而OSG三维引擎中的三维模型以模型节点形式存储,一个模型节点下包含本模型对应的所有网格信息(包括模型ID、顶点数目、顶点值、线条数目、曲面数目),各模型之间网格信息的存储相对独立。
根据上述3DS三维模型和OSG三维渲染引擎下的三维模型信息存储形式的差异,为了更真实、更高效的还原3DS三维模型,本发明提出一种将3DS三维模型节点树形式的存储方式转化为OSG三维引擎中的三维模型节点的存 储方式。
如图1所示,一种OSG三维引擎加载3DS模型文件的格式转换方法包括步骤如下:
(1)读取三维模型的结构信息:将3DS三维模型的网格信息,由节点树的存储方式,生成三维模型网格信息数据链表,再经OSG三维引擎读取,生成OSG三维引擎的基础结构;所述的3DS三维模型的网格信息包括模型ID、顶点数目、顶点值、线条数目、曲面数目;所述的基础结构为OSG的几何模型节点,包含模型ID、顶点数目、顶点值、线条数目、曲面数目信息;
读取三维模型结构包括以下步骤:
(1a)定位3DS三维模型网格信息的根chunk及根chunk的子节点;如图2所示,3DS三维模型文件结构由“块(chunk)”组成,而chunk是相互嵌套的,这就决定了必须以递归的方式读取它们。通过递归方式定位chunk-ID来定位三维模型网格信息(包括模型ID、顶点数目、顶点值、线条数目、曲面数目)。需定位的各个块(chunk)的父子继承关系及层级递进关系,3DS三维模型块(chunk)树图。
(1b)将已定位的3DS三维模型网格信息从节点树的存储方式中读取,并遍历模型ID以及模型ID对应模型的顶点数目、顶点值、线条数目、曲面数目,将模型ID以及其他网格信息按照各个三维模型节点的形式存储,构成三维模型网格信息数据链表(模型节点下包含本模型的所有网格信息,形式根据用户的需求选择,只要该数据链表包括各模型对应的所有网格信息就可以);
(1c)由三维仿真演示系统中的OSG三维引擎重构根chunk节点信息及根chunk与其子节点的继承关系,重绘3DS三维模型基础结构;
(1d)将OSG三维引擎重构后的3DS三维模型结构信息写入*.osg、*.ive格式的文件中进行存储。
(2)读取三维模型的效果:通过将3DS三维模型的材质和光照信息,由节点树的形式,生成材质读取队列及光照信息数组,根据需求对光照进行增强以及对材质信息做适应性修改,同时对3DS三维模型凹凸效果、环境反射效果、高光效果进行设置,再经OSG三维引擎读取,生成OSG三维引擎中材质、光照和效果节点,最后再由OSG三维引擎重新渲染并加载光照信息和效果,用于还原三维模型效果;
读取三维模型的效果包括以下步骤:
(2a)定位3DS三维模型材质信息和光照信息的根chunk及根chunk的子节点;
(2b)将已定位的3DS三维模型材质信息和光照信息从节点树的存储方式,读取并生成材质读取队列及光照信息数组;
(2c)通过着色器编程,设置3DS三维模型的凹凸效果、环境映射、高光效果材质,具体设置情况如下:
凹凸效果:
凹凸贴图通过随机扰动表面法线的方法,改变光线的反射方向,从而生成表面凹凸纹理的真实感效果。从3DS三维模型中读取三维模型的纹理坐标及其法向量、光线向量、视线向量,从顶点信息传递到片段着色器中,设置NormalMap(法线贴图)属性,由片段着色器对每个片段进行法向量扰动法,设置offset属性控制扰动量,再将扰动存储为纹理。
环境映射效果:
设置环境立方图纹理,定义主纹理和alpha通道定义物体表面的反射强度。用反射向量在立方图中定位纹理,达到环境映射的效果。
高光效果:
计算简单光照,设置面角、光角和观察角附加依赖于观察者的高光亮点。该亮点是对光源模糊反射的实时适宜模拟。亮点的模糊层次通过设置反光(Shininess)属性控制。
(2d)经OSG三维引擎读取并设置材质及光照信息属性,生成OSG三维引擎的基础结构;
(2e)由三维仿真演示系统中的OSG三维引擎重新渲染步骤(2c)中修改以后的材质信息的根chunk及其子节点的继承关系,并加载增强后的光照模型,还原3DS三维模型效果;
(2f)将OSG三维引擎重新渲染的材质信息及光照信息写入*.osg、*.ive格式的文件中,完成整体3DS三维模型的效果构建。
(3)根据步骤(1)的三维模型基础结构和步骤(2)中的三维模型效果以及OSG三维引擎的渲染顺序,重构三维模型结构。
实施例
通过本发明提供的一种OSG三维引擎加载3DS模型文件的格式转换方法,用户自定义修改/增强材质及光照信息,实现从3DS基础木质材质(如图3所示)到用户自定义设置的金材质(如图4所示)的转化。
图3所示材质为不经用户自定义修改/增强的3DS基础木质材质,且本身场景并不包含光源,3DS三维模型棱角不分明,整体场景较昏暗。
图4所示所示材质为经过用户自定义增强/修改过后的增强材质,用户自定 义设置材质的颜色/RGB、漫射、镜面、反射、光泽度等基础属性为金材质,并添加环境光源,3DS三维模型的可视化效果有了显著的提高。
本发明未公开的部分属于本领域公知常识。

一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf_第1页
第1页 / 共11页
一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf_第2页
第2页 / 共11页
一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf》由会员分享,可在线阅读,更多相关《一种OSG三维引擎加载3DS模型文件的格式转换方法.pdf(11页珍藏版)》请在专利查询网上搜索。

本发明公开了一种OSG三维引擎加载3DS模型文件的格式转换方法,包括步骤如下:读取三维模型的结构信息:将3DS三维模型的网格信息,生成三维模型网格信息数据链表,再经OSG三维引擎读取生成OSG三维引擎的基础结构;读取三维模型的效果:通过将3DS三维模型的材质和光照信息,生成材质读取队列及光照信息数组,再经OSG三维引擎读取,转换为OSG三维引擎的基础结构,并根据需求对光照进行增强以及对材质信息做适。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1