CN102663829A - 一种实现三维模型矩阵变换的方法 - Google Patents

一种实现三维模型矩阵变换的方法 Download PDF

Info

Publication number
CN102663829A
CN102663829A CN2012100741156A CN201210074115A CN102663829A CN 102663829 A CN102663829 A CN 102663829A CN 2012100741156 A CN2012100741156 A CN 2012100741156A CN 201210074115 A CN201210074115 A CN 201210074115A CN 102663829 A CN102663829 A CN 102663829A
Authority
CN
China
Prior art keywords
node
matrixing
dimensional model
dimensional
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.)
Pending
Application number
CN2012100741156A
Other languages
English (en)
Inventor
任雁鹏
曹玮
梁利平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Microelectronics of CAS
Original Assignee
Institute of Microelectronics of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Microelectronics of CAS filed Critical Institute of Microelectronics of CAS
Priority to CN2012100741156A priority Critical patent/CN102663829A/zh
Publication of CN102663829A publication Critical patent/CN102663829A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种实现三维模型矩阵变换的方法。该方法包括:设置一个对应于该三维场景的场景根节点,多个分别对应于三维场景中多个三维模型的三维模型节点;将用户选中要编辑的三维模型对应的三维模型节点添加入矩阵变换节点,将矩阵变换节点作为场景根节点的一个子节点,将该三维模型节点作为矩阵变换节点的子节点;将用户对三维模型的矩阵变换操作映射于该三维模型对应矩阵变换节点的矩阵变换操作,获得该矩阵变换节点对应的矩阵向量;将选定被编辑三维模型上所有坐标点的坐标值与该矩阵向量进行矩阵运算,获得矩阵变换后所述三维模型上所有坐标点的坐标值,从而实现三维模型的矩阵变换。本发明简化了三维场景实时计算的运算量,节省硬件资源的占用率。

Description

一种实现三维模型矩阵变换的方法
技术领域
本发明涉及信息技术行业计算机虚拟现实领域,尤其涉及一种在三维渲染引擎系统底层实现三维模型矩阵变换的方法。
背景技术
随着计算机硬件、三维图形技术、虚拟现实技术的发展,逼真的三维视觉世界正在逐步走入人们的生活,它给人们呈现的梦幻般的境界,正在引起人们的广泛关注,建立三维视图体系并进行推广和发展已经成为当前技术的热门领域。在虚拟现实领域,三维渲染引擎侧重于交互和三维动画的实时性,在三维场景中需要对三维模型进行实时的旋转、平移和缩放的矩阵变换,实时矩阵变换需要占用大量的内存资源,尤其对于场景中有大批三维模型需要进行实时变换时,对于硬件的资源需求将非常巨大,因此,在三维引擎系统底层对于三维模型批量矩阵变换提出好的解决方案就更加重要。
在三维渲染引擎系统中,当对三维场景中的三维模型进行矩阵变换如平移、缩放、旋转时,场景中的三维模型需要实时计算并更新变换后的坐标值,此时引擎底层需要实时进行大量的数学运算。对于简单的三维模型如长方体、圆球之类,实时变换的运算量相对较小,而对于复杂度较高的三维模型比如人物角色,或者对于批量人物角色同时进行矩阵变换,如果三维引擎底层仍然逐点进行实时运算,则对于硬件资源的占用将非常大,甚至可能使系统崩溃。
发明内容
(一)要解决的技术问题
为解决上述的一个或多个问题,本发明提供了一种在三维渲染引擎系统底层实现三维模型矩阵变换的方法,以使用户能够方便使用,满足用户的功能需求,同时尽量降低软件开发对硬件资源的占用率。
(二)技术方案
根据本发明的一个方面,提供了一种实现三维模型矩阵变换的方法。该方法包括:步骤A,设置一个对应于该三维场景的场景根节点,多个分别对应于三维场景中多个三维模型的三维模型节点,该多个三维模型节点全部继承自场景根节点,属于场景根节点的子节点;步骤B,将用户选中要编辑的三维模型对应的三维模型节点添加入矩阵变换节点,将矩阵变换节点作为场景根节点的一个子节点,将该三维模型节点作为矩阵变换节点的子节点,矩阵变换节点的坐标中心与三维模型节点的坐标中心重合;步骤C,将用户对三维模型的矩阵变换操作映射于该三维模型对应矩阵变换节点的矩阵变换操作,获得该矩阵变换节点对应的矩阵向量;步骤D,将选定被编辑三维模型上所有坐标点的坐标值与该矩阵向量进行矩阵运算,获得矩阵变换后所述三维模型上所有坐标点的坐标值,从而实现三维模型的矩阵变换。
(三)有益效果
从上述技术方案可以看出,本发明三维渲染引擎系统具有下列有益效果:
(1)本发明中,通过矩阵变换节点进行三维模型的矩阵变换简化了三维场景实时计算的运算量,节省硬件资源的占用率;
(2)本发明中,只对矩阵变换节点进行记录操作,使三维渲染引擎底层对于命令操作的记录更加简化。
附图说明
图1为本发明实施例实现三维模型矩阵变换方法中初始状态下场景根节点和三维模型节点关系的示意图;
图2为本发明实施例实现三维模型矩阵变换方法中操作状态下场景根节点和三维模型节点关系的示意图;
图3为本发明实施例实现多个同级三维模型矩阵变换方法中操作状态下场景根节点和三维模型节点关系的示意图;
图4为本发明实施例实现不同级三维模型矩阵变换方法中操作状态下场景根节点和三维模型节点关系的示意图;
图5为在实际场景下,本发明实施例实现不同级三维模型矩阵变换方法中操作状态下场景根节点和三维模型节点关系的示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。
在本发明的一个示例性实施例中,提出了一种在三维渲染引擎系统底层实现矩阵变换的方法。在三维场景中具有一个或多个三维模型,用户需要对该三维场景中的其中一个三维模型进行矩阵变换,则本实施例包括:
步骤S102,设置一个对应于该三维场景的场景根节点,多个分别对应于三维场景中多个三维模型的三维模型节点,该多个三维模型节点全部继承自场景根节点,属于场景根节点的子节点;
图1为本发明实施例实现三维模型矩阵变换方法中初始状态下场景根节点和三维模型子节点关系的示意图。如图1所示,此刻的矩阵变换节点则为虚拟存在的,即不会引入场景根节点。
步骤S104,将用户选中要编辑的三维模型对应的三维模型节点添加入矩阵变换节点,矩阵变换节点成为场景根节点的一个子节点,同时该三维模型节点作为矩阵变换节点的子节点,矩阵变换节点的坐标中心与三维模型节点的坐标中心重合,如图2所示。
步骤S106,将用户对三维模型的矩阵变换操作,映射于该三维模型对应矩阵变换节点的矩阵变换操作,获得该矩阵变换节点对应的矩阵向量;
换句话说,用户在操作界面上对选中三维模型的矩阵变换操作,并不是直接对该三维模型对应三维模型节点进行矩阵变换操作,而是映射于与该三维模型节点同坐标中心的矩阵变换节点之上。
以用户对三维模型做平移操作为例说明,当用户希望三维场景中的三维模型从三维世界坐标系(1,2,3)平移到(2,5,8)的位置,三维模型的起初坐标中心即在世界坐标系的(1,2,3)位置,同样添加的矩阵变换节点的坐标中心也在世界坐标系的(1,2,3)位置。当用户平移三维模型至位置(2,5,8)时,三维模型的坐标中心需要经过(2-1,5-2,8-3)即三维矢量(1,3,5)的数学变换,即在X轴方向沿正方向移动1,Y轴方向沿正方向移动3,Z轴方向沿正方向移动5。三维渲染引擎底层所进行的操作是首先对矩阵变换节点经过三维矢量(1,3,5)的数学变换,即在X轴方向沿正方向移动1,Y轴方向沿正方向移动3,Z轴方向沿正方向移动5。所进行的变换矩阵向量即为三维矢量(1,3,5)。
步骤S108,将选定被编辑三维模型上所有坐标点的坐标值与该矩阵向量相乘,获得矩阵变换后所述三维模型上所有坐标点的坐标值,从而实现三维模型的矩阵变换。承接步骤S106的例子,本步骤包括:
S108a:三维模型底层实现和记录了矩阵变换节点实现平移操作所进行的变换矩阵向量(1,3,5);
S108b:选中的三维模型实现上述变换矩阵向量(1,3,5)的坐标变换。要编辑的三维模型中心坐标为(1,2,3),需要经过变换矩阵向量(1,3,5)的数学变换,即在X轴方向沿正方向移动1,Y轴方向沿正方向移动3,Z轴方向沿正方向移动5;
S108c:三维模型本身会包含很多曲线曲面等,每个曲线曲面在三维场景中都会有对应的坐标值,所有的这些曲线曲面同样需要经过变换矩阵向量(1,3,5)的数学变换。此时即需要对三维模型的所有曲线曲面的所有坐标点全部进行三维矢量(1,3,5)的数学变换。
通过此运算即完成了对一个三维模型的一次平移操作。而借助于底层矩阵变换节点的存在,仅需要记录和保存变换矩阵向量(1,3,5),而不需要记录和保存三维模型所有曲线曲面所进行的变换矩阵向量(1,3,5)的运算。
步骤S110,当用户对选中三维模型编辑结束后,矩阵变换节点撤销。撤销后的矩阵变换接点成为虚拟节点,恢复步骤S102中三维场景中的拓扑结构。经过本步骤的操作,不会增大场景的节点数,同时也不改变三维场景中相应的三维拓扑结构。
本实施例中,只对矩阵变换节点进行矩阵变换操作,从而节省了被编辑节点上大量坐标点的中间过程的大量变换运算,不仅使用户能够方便使用,满足用户的功能需求,同时降低了软件开发对硬件资源的占用率。
通过上述实施例,对于场景中的一个三维模型可以很方便的完成矩阵变换操作,如果用户需要对场景中的多个三维模型节点同时进行相同的矩阵变换操作,即批处理运算时,选中的多个三维模型节点仍然共用一个矩阵变换节点,成为矩阵变换节点的子节点,而不需要为每一个变换节点添加一个矩阵变换节点。在该场景下:
上述步骤S104包括:将用户选中要编辑的多个三维模型对应的三维模型节点添加入一个矩阵变换节点,该矩阵变换节点成为场景根节点的一个子节点,同时该多个三维模型节点作为矩阵变换节点的子节点,矩阵变换节点的坐标中心与该多个三维模型节点的相对坐标中心重合,如图3所示。当然,该多个三维模型可以为同级的三维模型,也可以为不同级的三维模型,如图4所示。对于该步骤,具体实现的过程如下:
S104a′:接收三维场景中用户选中的要编辑的多个三维模型节点;
S104b′:对选中的多个三维模型节点添加一个矩阵变换节点,此时矩阵变换节点的坐标中心不与该多个三维模型节点中一个三维模型节点的坐标中心重合,而是根据所选三维模型的具体坐标位置,做平均计算,得出一个相对中心坐标值作为该矩阵变换节点的坐标中心。例如选中四个三维模型的坐标中心有(1,1,1),(2,2,2),(-1,-1,-1),(-2,-2,-2),则通过计算各坐标中心在每个三维轴上的平均点,得到相对中心位置(0,0,0)。
上述步骤S108包括:将选定被编辑多个三维模型上所有坐标点的坐标值与该矩阵向量进行矩阵运算,获得矩阵变换后所述多个三维模型上所有坐标点的坐标值,从而实现多个三维模型的矩阵变换。
下面以一个具体场景为例进行表述,实施例图示如图5。三维场景中的三维模型以节点的模式组织起来,三维场景根节点为场景中所有节点的父节点,场景中有一个人物角色、一头牛、一座房子、一个球,则每个三维模型都是场景根节点的子节点,这些子节点都是平行关系。有的复杂的三维模型本身又有子节点,比如人物角色,其头、躯干、手、脚又是人体节点的子节点。此时,人体的各个子节点就属于场景根节点的更下一层子节点。
如果对场景中的一个人物整体或者一头牛做矩阵变换,则采取图2的方法。如果同时对一个人物整体和一头牛做矩阵变换,则采取图3的方法。如果对一个人物的头和一头牛做矩阵变换,则可以采取图4的方法。对于矩阵变换节点的坐标中心设置以及整个场景的子节点层级关系如下述步骤实施,整体实施例示意图见图5。在该场景的三维模型的矩阵变换操作包括:
步骤S104a″:用户用鼠标点击选中要编辑的三维模型节点,包括一头牛和人物角色的头;
步骤S104b″:三维渲染引擎底层会为三维模型添加一个矩阵变换节点。矩阵变换节点的中心坐标节点可参照S104b′进行计算得到。此时场景的节点层次关系会有所改变。在执行这个编辑操作的过程中,人物角色的头和牛会成为矩阵变换节点的子节点,如图5所示;
步骤S106,将用户对人物角色的头和牛的矩阵变换操作,映射于该矩阵变换节点的矩阵变换操作,获得该矩阵变换节点对应的矩阵向量;
步骤S108:将选定被编辑的人物角色的头和牛上所有坐标点的坐标值与该矩阵向量相乘,获得矩阵变换后人物角色的头和牛上所有坐标点的坐标值;
步骤S110,当这些操作结束后,矩阵变换节点撤销,人物角色的头重新成为人物角色的子节点。
通过本实施例,实现了处于同级或不同级的多个三维模型的矩阵变换操作,避免了对多个三维模型分别进行矩阵变换,方便了用户使用,进一步降低了软件开发对硬件资源的占用率。
同时,本方法还可以实现操作撤销。在实现操作撤销时:
在步骤S106之后还包括:记录矩阵变换节点所对应的矩阵向量,即只记录一个(1,3,5)的矩阵变换向量;
在步骤S110之后还包括:步骤S112a,矩阵变换节点进行上述矩阵向量的逆运算,即矩阵变换节点的中心坐标由三维世界坐标系的(2,5,8)变换到原始坐标(1,2,3);S112b,该矩阵变换节点对应一个或多个三维模型的中心节点以及所有曲线曲面的坐标点都需要经过上述矩阵变换向量的逆运算,从而实现了操作撤销,即在X轴方向沿负方向移动1,Y轴方向沿负方向移动3,Z轴方向沿负方向移动5。
同时,本方法还可以实现重复撤销。在实现操作重复时:
在步骤S106之后还包括:记录矩阵变换节点所对应的矩阵向量,即(1,3,5);
在步骤S110之后还包括:S114a:矩阵变换节点重新进行上述矩阵向量,即三维矢量(1,3,5),的数学变换,即在X轴方向沿正方向移动1,Y轴方向沿正方向移动3,Z轴方向沿正方向移动5;S114b:三维模型的中心节点以及所有曲线曲面的坐标点都进行上述矩阵变换向量(1,3,5)的运算,即在X轴方向沿正方向移动1,Y轴方向沿正方向移动3,Z轴方向沿正方向移动5。
通过本实施例,对于编辑操作的撤销重复等记录,也只针对变换矩阵做记录,而不需要记录所有编辑节点的中间变换数据。上述只是以平移操作为例进行详细说明,对于缩放和旋转操作仍然是类似的步骤,只是进行计算的坐标变换向量会有不同而已。
此外,需要说明的是,整个发明所阐述引入的矩阵变换节点主要为了简化计算和简化中间过程保存操作的数据量,并不会修改整个场景的原始节点层次关系。值得注意的是,图中未绘示或描述的元件或实现方式,为所属技术领域中普通技术人员所知的形式,并没有给出详细、具体说明。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种实现三维模型矩阵变换的方法,包括:
步骤A,设置一个对应于该三维场景的场景根节点,多个分别对应于三维场景中多个三维模型的三维模型节点,该多个三维模型节点属于场景根节点的子节点;
步骤B,将用户选中要编辑的三维模型对应的三维模型节点添加入矩阵变换节点,将矩阵变换节点作为场景根节点的一个子节点,将该三维模型节点作为矩阵变换节点的子节点,矩阵变换节点的坐标中心与三维模型节点的坐标中心重合;
步骤C,将用户对三维模型的矩阵变换操作映射于该三维模型对应矩阵变换节点的矩阵变换操作,获得该矩阵变换节点对应的矩阵向量;
步骤D,将选定被编辑三维模型上所有坐标点的坐标值与该矩阵向量进行矩阵运算,获得矩阵变换后所述三维模型上所有坐标点的坐标值,从而实现三维模型的矩阵变换。
2.根据权利要求1所述的实现三维模型矩阵变换的方法,其中,所述用户选中要编辑的三维模型为多个,所述步骤B包括:
将用户选中要编辑的多个三维模型对应的三维模型节点添加入一个矩阵变换节点,将该一个矩阵变换节点作为场景根节点的一个子节点,同时将该多个三维模型节点作为矩阵变换节点的子节点,矩阵变换节点的坐标中心与多个三维模型节点的相对坐标中心重合。
3.根据权利要求2所述的实现三维模型矩阵变换的方法,其中,所述用户选中要编辑的三维模型为同级或不同级的三维模型。
4.根据权利要求1所述的实现三维模型矩阵变换的方法,其中,
所述步骤C之后还包括:记录矩阵变换节点所对应的矩阵向量;
所述步骤D之后还包括:矩阵变换节点进行上述矩阵向量的逆运算;该矩阵变换节点对应三维模型的中心节点以及所有曲线曲面的坐标点都经过上述矩阵变换向量的逆运算,从而实现了三维模型矩阵变换的撤销。
5.根据权利要求1所述的实现三维模型矩阵变换的方法,其中,
在步骤C之后还包括:记录矩阵变换节点所对应的矩阵向量; 
在步骤D之后还包括:矩阵变换节点重新进行上述矩阵向量的运算;三维模型的中心节点以及所有曲线曲面的坐标点都进行上述矩阵变换向量运算。
6.根据权利要求1至5中任一项所述的实现三维模型矩阵变换的方法,其中,所述步骤D之后还包括:
当用户对选中三维模型编辑结束后,撤销矩阵变换节点,撤销后的矩阵变换接点成为虚拟节点,恢复场景根节点和三维模型节点的拓扑结构。
7.根据权利要求1至5中任一项所述的实现三维模型矩阵变换的方法,其中,所述步骤C中,用户对三维模型的矩阵变换操作包括以下操作中的一种或多种:平移、缩放和旋转。 
CN2012100741156A 2012-03-20 2012-03-20 一种实现三维模型矩阵变换的方法 Pending CN102663829A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100741156A CN102663829A (zh) 2012-03-20 2012-03-20 一种实现三维模型矩阵变换的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012100741156A CN102663829A (zh) 2012-03-20 2012-03-20 一种实现三维模型矩阵变换的方法

Publications (1)

Publication Number Publication Date
CN102663829A true CN102663829A (zh) 2012-09-12

Family

ID=46773305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100741156A Pending CN102663829A (zh) 2012-03-20 2012-03-20 一种实现三维模型矩阵变换的方法

Country Status (1)

Country Link
CN (1) CN102663829A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902848A (zh) * 2012-09-18 2013-01-30 大连理工大学 针对边界元分析的三维可视化仿真方法
CN104281279A (zh) * 2013-07-11 2015-01-14 北京中盈安信技术服务有限公司 一种三维模型操作方法和电子终端
CN106033351A (zh) * 2015-03-20 2016-10-19 广州金山移动科技有限公司 一种顶点编辑方法及装置
CN110880201A (zh) * 2019-09-26 2020-03-13 广州都市圈网络科技有限公司 精细的室内拓扑模型构建方法、信息查询方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902848A (zh) * 2012-09-18 2013-01-30 大连理工大学 针对边界元分析的三维可视化仿真方法
CN102902848B (zh) * 2012-09-18 2015-04-22 大连理工大学 针对边界元分析的三维可视化仿真方法
CN104281279A (zh) * 2013-07-11 2015-01-14 北京中盈安信技术服务有限公司 一种三维模型操作方法和电子终端
CN106033351A (zh) * 2015-03-20 2016-10-19 广州金山移动科技有限公司 一种顶点编辑方法及装置
CN110880201A (zh) * 2019-09-26 2020-03-13 广州都市圈网络科技有限公司 精细的室内拓扑模型构建方法、信息查询方法及装置

Similar Documents

Publication Publication Date Title
CN104794752B (zh) 基于移动终端和全息展示的虚拟场景协同建模方法及系统
Takayama et al. Geobrush: Interactive mesh geometry cloning
CN106780642B (zh) 迷雾遮罩贴图的生成方法及装置
CN109003325A (zh) 一种三维重建的方法、介质、装置和计算设备
CN103500467A (zh) 基于图像的三维模型构成方法
CN102663829A (zh) 一种实现三维模型矩阵变换的方法
CN103632394B (zh) 一种特征保持的模型简化方法
CN109448078A (zh) 一种图像编辑系统、方法及设备
CN107341846A (zh) 一种实时显示大规模三维重建场景的方法及设备
CN102622476A (zh) 用于建筑算量领域的cad图纸整合系统
CN106575158A (zh) 环境映射虚拟化机构
CN104881518A (zh) 一种飞行器的三维视景仿真系统
KR101835974B1 (ko) 가상현실환경에서 사용자 단말들의 시점 동기화 장치 및 방법
CN101266691A (zh) 一种任意拓扑的多边形网格模型融合方法
CN101794462A (zh) 一种基于纹理的三维网格模型变形方法及系统
CN101789030A (zh) Vge符号模型及基于该模型的地图符号共享系统和方法
CN104616335B (zh) 一种三维角色循环动画的自动累积方法
CN106202247B (zh) 一种基于经纬度的碰撞检测方法
CN106408654A (zh) 一种三维地图的创建方法及系统
CN115222894A (zh) 一种基于laplace优化的图像拓扑变形方法
CN109859294A (zh) 一种vr动漫人物三维建模优化方法
CN108553900A (zh) 一种基于ue引擎的可叠加存储反复使用的方法
CN110009729B (zh) 一种基于人工智能的三维体素建模方法及系统
Bao et al. [Retracted] Artificial Intelligence and VR Environment Design of Digital Museum Based on Embedded Image Processing
Zoccheddu et al. HexBox: interactive box modeling of hexahedral meshes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120912