CN104112017A - 一种基于3dmax脚本模型导出的实现方法 - Google Patents
一种基于3dmax脚本模型导出的实现方法 Download PDFInfo
- Publication number
- CN104112017A CN104112017A CN201410345679.8A CN201410345679A CN104112017A CN 104112017 A CN104112017 A CN 104112017A CN 201410345679 A CN201410345679 A CN 201410345679A CN 104112017 A CN104112017 A CN 104112017A
- Authority
- CN
- China
- Prior art keywords
- information
- model
- summit
- interface
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Abstract
本发明公开了一种基于3DMAX脚本模型导出的实现方法,主要包括:获取场景模型相对于世界位置的矩阵信息和模型包围盒信息;基于场景模型相对于世界位置的矩阵信息和模型包围盒信息,把变换信息从OpenGL变换为DirectX矩阵,从脚本中导出三维模型供程序调用。本发明所述基于3DMAX脚本模型导出的实现方法,可以克服现有技术中成本高、开发效率低和适用范围小等缺陷,以实现成本低、开发效率高和适用范围广的优点。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种基于3DMAX脚本模型导出的实现方法。
背景技术
随着计算机的不断发展,带动了新兴的游戏产业从虚拟世界走向了真实的世界。作为引擎技术的一项分支领域,脚本也是一个非常重要的模块,本发明提供了一种基于脚本模型的导出方法,其主要依靠目前的三维软件制作的三维模型:例如:3DMAX,MAYA等,这些模型中包含了模型的所有信息。对这些模型的变换需要一个复杂的变换。
目前游戏市场应用软件多样化,对三维模型的导出更是随着三维软件和第三方插件的多样化而不同,目前大多数游戏市场是通过一些工具人员撰写本引擎的插件,或者是3DMAX使用的PandaDXExport插件导出.X文件,然后将模型发布的时候,根据模型的数据转化成XPL格式。
以上两种方式是一方面引擎开发周期长,对于人员流动大的公司,维护起来比较困难另一方面是容易出现错误,需要反复的检查。
基于目前模型导出出现的各种问题,需要提供一种基于DirectX的3DMAX脚本模型的导出方法,以便适应所有程序员开发普遍实用、而且导出模型方便,也可以大大节约成本,提高开发效率。
在实现本发明的过程中,发明人发现现有技术中至少存在成本高、开发效率低和适用范围小等缺陷。
发明内容
本发明的目的在于,针对上述问题,提出一种基于3DMAX脚本模型导出的实现方法,以实现成本低、开发效率高和适用范围广的优点。
为实现上述目的,本发明采用的技术方案是:一种基于3DMAX脚本模型导出的实现方法,主要包括:
a、获取场景模型相对于世界位置的矩阵信息和模型包围盒信息;
b、基于场景模型相对于世界位置的矩阵信息和模型包围盒信息,把变换信息从OpenGL变换为DirectX矩阵,从脚本中导出三维模型供程序调用。
进一步地,所述步骤a,具体包括:
a1、设置场景中三维软件的模型信息;
a2、基于场景中三维软件的模型信息,获取该模型信息的接口;
a3、基于该模型信息的接口,获取场景对象的矩阵信息。
进一步地,所述步骤a1,具体包括:
将场景中的三维软件模型,按用途分为几何信息、材质信息以及蒙皮信息;
需要用脚本实现的模型,主要包括几何信息和材质信息以及蒙皮信息;其中:
几何信息包括顶点的位置信息、法线信息、颜色信息、Alpha信息、顶点受骨骼影响的权重值,对于模型面的信息包括面的索引;
模型的材质信息包括模型面的U、V信息,以及每个面的贴图ID;
蒙皮信息,通过该方法获得:获取模型的顶点数量,遍历模型中的每个顶点,依次获取该顶点受那些权重值的影响。
进一步地,所述步骤a2,具体包括:
获取顶点的局部坐标位置信息,考虑模型中心点pivot位置,程序是返回顶点的局部位置信息local vertex;
通过in coordsys local getvert obj i,求得 local vertex;
依次通过函数GetVertexNormals获得顶点的法线信息接口,通过GetVertexColor获得顶点的颜色信息接口,通过GetVertexAlpha获得顶点的Alpha信息,通过getFaceRNormals获得面法线信息;
对于蒙皮信息:分别从受顶点权重影响的骨骼ID接口(GetVertexWeightBoneID),获得骨骼数量的接口(GetNumberBones),获得骨骼名称的接口(GetBoneName),获得顶点权重的接口(GetVertexWeight)获得相应信息。
进一步地,所述步骤a3,具体包括:
首先获取模型的世界位置的变换矩阵;
其次获得模型的世界矩阵信息;
然后获取模型的包围盒信息。
进一步地,所述步骤b,具体包括:
基于DirectX的API接口信息,将场景模型相对于世界位置的矩阵信息和模型包围盒信息中返回的世界矩阵转化为DirectX接口下;
把三维软件中的模型所有信息导入任何游戏引擎中使用。
本发明各实施例的基于3DMAX脚本模型导出的实现方法,由于主要包括:获取场景模型相对于世界位置的矩阵信息和模型包围盒信息;基于场景模型相对于世界位置的矩阵信息和模型包围盒信息,把变换信息从OpenGL变换为DirectX矩阵,导出所需三维模型;从而可以克服现有技术中成本高、开发效率低和适用范围小的缺陷,以实现成本低、开发效率高和适用范围广的优点。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明基于3DMAX脚本模型导出的实现方法中从脚本导出模型的界面示意图;
图2为本发明基于3DMAX脚本模型导出的实现方法中基于脚本导出模型的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
根据本发明实施例,如图1和图2所示,提供了一种基于3DMAX脚本模型导出的实现方法,属于三维模型的导出方法即通过三维软件脚本导出的特别方法。
在虚拟的三维世界中,场景中我们所见所得的物件都可以视为“模型”,而这些模型在导出的时候能够保证完好无损的应用到游戏中,需要复杂的变换。首先了解一下所谓的游戏中模型,虚拟的来模拟现实人物,场景,我们都称为模型;这些是计算机图形学的产物,那么导出的一个完整的模型信息会携带网格蒙皮信息,骨骼信息和关键帧信息,蒙皮信息是模型的多边形信息,这些模型信息一般都是顶点构成,这些顶点中包含了顶点位置,法线信息和纹理材质信息以及哪些骨骼影响了该点和影响权重值等。骨骼信息就是这个模型所有的骨骼组成一个骨骼树。关键帧信息包含了组成骨骼运动的关键帧序列,可以确定某一个时刻每个骨骼的新的位置和朝向。导出模型之后需要记录模型中心点的坐标值,任何将模型的中心点归零在导出。
第一:概括三维软件导出模型信息:
一个模型按用途可分为几何信息、材质信息以及蒙皮信息构成。
对于我们需要用脚本实现的模型主要包括几何信息和材质信息以及蒙皮信息
几何信息包括顶点的位置信息,法线信息,颜色信息,Alpha信息,顶点受骨骼影响的权重值,对于模型面的信息包括面的索引。
模型的材质信息包括模型面的U、V信息,每个面的贴图ID。
蒙皮信息:是将网格中的顶点附着在骨骼之上,而且每个顶点可以被多个骨骼控制,通过获取模型的顶点数量,遍历模型中的每个顶点,依次获取该顶点受那些权重值的影响。
第二:获取模型各类信息的接口信息:
具体获取的函数如下:
获取顶点的局部坐标位置信息,考虑模型中心点(pivot)位置,程序是返回顶点的局部位置信息(local vertex)。通过in coordsys local getvert obj i,就可以很容易地求得 local vertex,但是,3D MAX三维软件中的 pivot不是 local坐标系的原点,只是旋转的中心轴.通过以下脚本的算法可以得到:
fn GetLocalVertices obj =
(
varSetVertex= #()
TM = obj.transform
InvTM = inverse TM
for i = 1 to obj.numverts do
(
local vl -- vertex local
local vw -- vertex world
vw = in coordsys world getvert obj i
vl = vw * InvTM
append varSetVertex vl
)
varSetVertex
),
依次通过函数 GetVertexNormals获得顶点的法线信息接口,通过GetVertexColor获得顶点的颜色信息接口,通过GetVertexAlpha获得顶点的Alpha信息。通过getFaceRNormals获得面法线信息。
对于蒙皮信息:分别从GetVertexWeightBoneID,GetNumberBones,GetBoneName,GetVertexWeight获得受顶点权重影响的骨骼ID,骨骼名字以及骨骼权重值。
第三:获取场景对象的矩阵。
首先获取模型的世界位置的变换矩阵:
XMLElementBegin nTabCount g_strLocalTM true
tm = m_oUtil.ConvertToD3D_TM (m_oUtil.GetLocalTM obj)
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._11 tm._12 tm._13 tm._14 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._21 tm._22 tm._23 tm._24 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._31 tm._32 tm._33 tm._34 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._41 tm._42 tm._43 tm._44 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementEnd nTabCount g_strLocalTM
其次获得模型的世界矩阵信息:
XMLElementBegin nTabCount g_strWorldTM true
tm = m_oUtil.ConvertToD3D_TM (obj.transform)
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._11 tm._12 tm._13 tm._14 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._21 tm._22 tm._23 tm._24 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._31 tm._32 tm._33 tm._34 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementBegin (nTabCount+1) g_strValue false
format "[%,%,%,%]" tm._41 tm._42 tm._43 tm._44 to:m_fileTarget
XMLElementEnd 0 g_strValue
XMLElementEnd nTabCount g_strWorldTM
StackClearAttr()
然后获取模型的包围盒信息:
XMLElementBegin nTabCount g_strBoundingBox true
invTM = inverse (obj.transform)
XMLElementBegin (nTabCount+1) g_strMax false
format "%" (m_oUtil.ConvertToD3D_POS (obj.max * invTM)) to:m_fileTarget
XMLElementEnd 0 g_strMax
XMLElementBegin (nTabCount+1) g_strMin false
format "%" (m_oUtil.ConvertToD3D_POS (obj.min * invTM)) to:m_fileTarget
XMLElementEnd 0 g_strMin
XMLElementBegin (nTabCount+1) g_strCenter false
format "%" (m_oUtil.ConvertToD3D_POS (obj.center * invTM)) to:m_fileTarget
XMLElementEnd 0 g_strCenter
XMLElementEnd nTabCount g_strBoundingBox
通过这个三个主要的步骤,就可以得到模型的相对于世界位置的矩阵信息和模型包围盒信息。
第四:把变换信息从OpenGL变换为DirectX矩阵:
本发明是基于DirectX的API接口信息,就把上述基于返回的世界矩阵转化为DirectX接口下才可以应用,然后把这些MAX中的脚本信息导出到XML中供程序使用,如图1。通过最后一步的转换,我们就可以把三维软件中的模型所有信息都可以导入任何游戏引擎中使用。
本发明的技术方案,提供的一种基于3dMAX脚本模型导出的方法,适合与所有程序人员开发和维护,至少具有简单、灵活、执行速度快和运行效率高的优点。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于3DMAX脚本模型导出的实现方法,其特征在于,主要包括:
a、获取场景模型相对于世界位置的矩阵信息和模型包围盒信息;
b、基于场景模型相对于世界位置的矩阵信息和模型包围盒信息,把变换信息从OpenGL变换为DirectX矩阵,从脚本中导出三维模型供程序调用。
2.根据权利要求1所述的基于3DMAX脚本模型导出的实现方法,其特征在于,所述步骤a,具体包括:
a1、设置场景中三维软件的模型信息;
a2、基于场景中三维软件的模型信息,获取该模型信息的接口;
a3、基于该模型信息的接口,获取场景对象的矩阵信息。
3.根据权利要求2所述的基于3DMAX脚本模型导出的实现方法,其特征在于,所述步骤a1,具体包括:
将场景中的三维软件模型,按用途分为几何信息、材质信息以及蒙皮信息;
需要用脚本实现的模型,主要包括几何信息和材质信息以及蒙皮信息;其中:
几何信息包括顶点的位置信息、法线信息、颜色信息、Alpha信息、顶点受骨骼影响的权重值,对于模型面的信息包括面的索引;
模型的材质信息包括模型面的U、V信息,以及每个面的贴图ID;
蒙皮信息,是将网格中的顶点附着在骨骼之上,而且每个顶点可以被多个骨骼控制,通过获取模型的顶点数量,遍历模型中的每个顶点,依次获取该顶点受那些权重值的影响。
4.根据权利要求3所述的基于3DMAX脚本模型导出的实现方法,其特征在于,所述步骤a2,具体包括:
获取顶点的局部坐标位置信息,考虑模型中心点pivot位置,程序是返回顶点的局部位置信息local vertex;
通过in coordsys local getvert obj i,求得 local vertex;
依次通过函数GetVertexNormals获得顶点的法线信息接口,通过GetVertexColor获得顶点的颜色信息接口,通过GetVertexAlpha获得顶点的Alpha信息,通过getFaceRNormals获得面法线信息;
对于蒙皮信息:分别从受顶点权重影响的骨骼ID接口GetVertexWeightBoneID、获得骨骼数量的接口GetNumberBones、获得骨骼名称的接口GetBoneName、以及获得顶点权重的接口GetVertexWeight获得相应信息。
5.根据权利要求4所述的基于3DMAX脚本模型导出的实现方法,其特征在于,所述步骤a3,具体包括:
首先获取模型的世界位置的变换矩阵;
其次获得模型的世界矩阵信息;
然后获取模型的包围盒信息。
6.根据权利要求1-5中任一项所述的基于3DMAX脚本模型导出的实现方法,其特征在于,所述步骤b,具体包括:
基于DirectX的API接口信息,将场景模型相对于世界位置的矩阵信息和模型包围盒信息中返回的世界矩阵转化为DirectX接口下;
把三维软件中的模型所有信息导入任何游戏引擎中使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410345679.8A CN104112017B (zh) | 2014-07-21 | 2014-07-21 | 一种基于3dmax脚本模型导出的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410345679.8A CN104112017B (zh) | 2014-07-21 | 2014-07-21 | 一种基于3dmax脚本模型导出的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104112017A true CN104112017A (zh) | 2014-10-22 |
CN104112017B CN104112017B (zh) | 2018-09-28 |
Family
ID=51708808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410345679.8A Active CN104112017B (zh) | 2014-07-21 | 2014-07-21 | 一种基于3dmax脚本模型导出的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104112017B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537715A (zh) * | 2015-01-09 | 2015-04-22 | 中国电建集团昆明勘测设计研究院有限公司 | 一种实现fbx三维模型自动转换为obj三维模型的方法 |
CN106709979A (zh) * | 2016-12-29 | 2017-05-24 | 福州智永信息科技有限公司 | 一种模型网格数据导出Obj文件的方法以及系统 |
CN108744520A (zh) * | 2018-06-05 | 2018-11-06 | 网易(杭州)网络有限公司 | 确定游戏模型摆放位置的方法、装置和电子设备 |
CN111462283A (zh) * | 2020-03-27 | 2020-07-28 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882077A (zh) * | 2010-05-19 | 2010-11-10 | 广东威创视讯科技股份有限公司 | 高效率绘制与渲染基本图形的方法及装置 |
US20130241930A1 (en) * | 2012-03-19 | 2013-09-19 | Electronics For Imaging, Inc. | Method and apparatus for dimensional printing |
CN103729885A (zh) * | 2014-01-21 | 2014-04-16 | 北京邮电大学 | 多视角投影与三维注册联合的手绘场景三维建模方法 |
-
2014
- 2014-07-21 CN CN201410345679.8A patent/CN104112017B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882077A (zh) * | 2010-05-19 | 2010-11-10 | 广东威创视讯科技股份有限公司 | 高效率绘制与渲染基本图形的方法及装置 |
US20130241930A1 (en) * | 2012-03-19 | 2013-09-19 | Electronics For Imaging, Inc. | Method and apparatus for dimensional printing |
CN103729885A (zh) * | 2014-01-21 | 2014-04-16 | 北京邮电大学 | 多视角投影与三维注册联合的手绘场景三维建模方法 |
Non-Patent Citations (1)
Title |
---|
王璐 等: "MaxScript在构建三维城市中的应用", 《计算机与数字工程》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537715A (zh) * | 2015-01-09 | 2015-04-22 | 中国电建集团昆明勘测设计研究院有限公司 | 一种实现fbx三维模型自动转换为obj三维模型的方法 |
CN106709979A (zh) * | 2016-12-29 | 2017-05-24 | 福州智永信息科技有限公司 | 一种模型网格数据导出Obj文件的方法以及系统 |
CN108744520A (zh) * | 2018-06-05 | 2018-11-06 | 网易(杭州)网络有限公司 | 确定游戏模型摆放位置的方法、装置和电子设备 |
CN108744520B (zh) * | 2018-06-05 | 2022-02-22 | 网易(杭州)网络有限公司 | 确定游戏模型摆放位置的方法、装置和电子设备 |
CN111462283A (zh) * | 2020-03-27 | 2020-07-28 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
CN111462283B (zh) * | 2020-03-27 | 2023-03-03 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104112017B (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103337093B (zh) | 一种基于Unity3D着色器实现三维机房实时温场效果的方法 | |
CN102508644A (zh) | 一种3d用户界面图形引擎架构 | |
CN108537891A (zh) | 三维材质和贴图数据自动转换到ue4的方法 | |
CN104112017A (zh) | 一种基于3dmax脚本模型导出的实现方法 | |
CN112530005B (zh) | 一种三维模型直线结构识别与自动修复方法 | |
CN104199659A (zh) | 一种导出3dmax可识别的模型信息的方法及装置 | |
CN104391683A (zh) | 一种基于3Dmax脚本导出三维软件中模型动画的方法及装置 | |
KR20210063828A (ko) | 3차원 모델링 파일 변환 시스템 | |
Guerrero et al. | 3D visualisation of underground pipelines: best strategy for 3D scene creation | |
Wang et al. | A review of collision detection for deformable objects | |
Zou et al. | Characteristics of models that impact transformation of BIMs to virtual environments to support facility management operations | |
CN111369649B (zh) | 一种基于高精度三维扫描模型的制作计算机蒙皮动画的方法 | |
CN114254238A (zh) | 一种基于数字孪生的三维Web建模平台 | |
CN106296575A (zh) | 基于bim的模型和图片合并和分离方法及系统 | |
Cao et al. | Webgl-based research on virtual visualization simulation display platform of ship | |
Zang et al. | Virtual reality and the application in virtual experiment for agricultural equipment | |
Duanmu et al. | 3D Visual Management of Substation Based on Unity3D | |
Chen et al. | Mesh sequence morphing | |
CN112184874A (zh) | 一种轻量化三维模型高性能图形标记、进度模拟及导航方法 | |
Gaisbauer et al. | Introducing a Modular Concept for Exchanging Character Animation Approaches. | |
CN104699850A (zh) | 三维地理信息的处理方法及装置 | |
CN113724399B (zh) | 一种基于虚拟现实教学知识点展示方法和系统 | |
CN111210525A (zh) | 三维模型交互编辑的方法、平台、设备及可读存储介质 | |
Zheng et al. | Mixed-reality-based product display technology and implementation | |
CN117078812B (zh) | 一种轨道交通列车三维动画仿真方法、存储介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |