本发明涉及计算机领域,尤其涉及一种三维模型全息交互方法和一种三维模型全息交互系统。
背景技术:
近年来,随着信息产业的飞速发展与技术的不断革新,人们对视觉要求不再停留于照片或平面显示设备的展示,因此,全息投影技术也得到了极大的发展。
三维模型全息投影是一种利用干涉和衍射原理记录并再现物体真实的三维图像,是一种观众无需佩戴眼睛便可以看到立体的虚拟的人物的3d技术。随着计算机软硬件技术的快速发展,计算机技术渐渐可以代替全息干板实现干涉条纹的记录,这种技术被称为计算机全息技术。
市面上用于三维模型全息交互系统主要用于一些简单的交互。对于具有较大规模的三维模型,在进行全息交互展示投影时会存在绘制批次过多而导致无法实现的问题。
技术实现要素:
本发明的目的在于提供一种三维模型全息交互方法和一种三维模型全息交互系统,可以实现大规模三维模型的全息交互展示投影,从而克服背景技术中的不足,提高用户体验。
为了实现上述目的,本发明提出一种三维模型全息交互方法,包括:
获取基础模型的源文件;
将所述源文件中特定对象的资源数据写入目标文件;
接收交互指令;
根据所述交互指令对应修改所述目标文件;
根据修改后的目标文件生成用于全息投影的三维模型。
在一优选实施方式中,所述获取基础模型的源文件的步骤,包括:
从所述本地文件夹中加载所述基础模型的源文件,或者,从服务器中下载所述基础模型的源文件。
在一优选实施方式中,在所述从所述本地文件夹中加载所述基础模型的源文件的步骤之前,包括:
绘制基础模型;
将所述基础模型的源文件保存至本地文件夹中。
在一优选实施方式中,在所述从服务器中下载所述基础模型的源文件的步骤之前,包括:
绘制基础模型;
将所述基础模型的源文件上传至服务器中。
在一优选实施方式中,所述目标文件包括索引子文件、模型子文件和材质子文件,所述将所述源文件中特定对象的资源数据写入目标文件的步骤,包括:
从所述源文件中提取特定对象的资源数据;
将所述特定对象的索引数据写入所述索引子文件;
将所述特定对象的模型数据写入所述模型子文件;
将所述特定对象的材质数据写入所述材质子文件。
在一优选实施方式中,从所述源文件中提取特定对象的资源数据的步骤,包括:
解析所述源文件;
确定静态属性的对象;
将所述静态属性的对象中包含可见属性和设置为动态批次的对象确定为特定对象;
提取所述特定对象的资源数据。
在一优选实施方式中,所述交互指令包括交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述根据所述交互指令对应修改所述目标文件的步骤,包括:
根据所述交互索引数据修改所述索引子文件中对应的特定对象的索引数据;和/或,
根据所述交互模型数据修改所述模型子文件中对应的特定对象的模型数据;和/或,
根据所述交互材质数据修改所述材质子文件中对应的特定对象的材质数据。
在一优选实施方式中,所述根据修改后的目标文件生成用于全息投影的三维模型的步骤,包括:
将所述源文件中除所述特定对象的资源数据之外的资源数据写入固定文件;
根据修改后的目标文件和所述固定文件生成用于全息投影的三维模型。
为了实现上述目的,本发明还提供一种三维模型全息交互系统,包括
源文件获取模块,用于获取基础模型的源文件;
目标文件生成模块,用于将所述源文件中特定对象的资源数据写入目标文件;
接收交互指令模块,用于接收交互指令;
目标文件修改模块,用于根据所述交互指令对应修改所述目标文件;
三维模型生成模块,用于根据修改后的目标文件生成用于全息投影的三维模型。
在一优选实施方式中,所述源文件获取模块包括:
绘制基础模型子模块,用于绘制基础模型;
上传源文件子模块,用于将所述基础模型的源文件保存至本地文件夹中,或者,将所述基础模型的源文件上传至服务器中;
加载源文件子模块,用于从所述本地文件夹中加载所述基础模型的源文件,或者,从服务器中下载所述基础模型的源文件。
与现有技术相比,本发明提供的一种三维模型全息交互方法和系统的有益效果在于:通过获取基础模型的源文件,将源文件中特定对象的资源数据写入目标文件;并根据交互指令对应修改目标文件生成用于全息投影的三维模型。本实施例通过将资源数据合并保存,使用时直接调用的方式,以减少全息交互展示投影时的绘制批次,从而实现大规模三维模型全息交互展示的功能。
附图说明
图1是本发明的三维模型全息交互方法实施例的步骤流程图;
图2是本发明的三维模型全息交互方法实施例的步骤流程图;
图3是本发明的三维模型全息交互方法实施例的步骤流程图;
图4是本发明的三维模型全息交互系统实施例的结构框图;
图5是本发明的三维模型全息交互系统实施例的结构框图;
图6是本发明的三维模型全息交互系统实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,本发明提出一种三维模型全息交互方法,包括:
s01,获取基础模型的源文件;
s02,将所述源文件中特定对象的资源数据写入目标文件;
s03,接收交互指令;
s04,根据所述交互指令对应修改所述目标文件;
s05,根据修改后的目标文件生成用于全息投影的三维模型。
如上述步骤s01,获取基础模型的源文件。
三维模型全息交互是通过计算机连接的投影仪或者显示器将全息投影模型投影在全息投影金字塔或者全息投影屏上,并呈现与交互信息匹配的全息投影图像。所述基础模型是指用于最初存储在计算机内用于展示的模型,例如,大型商场的三维模型。所述源文件即通过绘图软件制作所述基础模型时生成的文件。
如上述步骤s02,将所述源文件中特定对象的资源数据写入目标文件。
所述基础模型包括多个对象,所述对象包括构成所述基础模型的组件,例如,大型商场的三维模型包括电梯组件、建筑结构组件等;或者,所述对象包括构成所述基础模型的点、线、面、体。所述特定对象是指满足一定条件的对象,将满足一定条件的对象的资源数据写入目标文件。
如上述步骤s03,接收交互指令。
在当前展示的三维模型的全息投影下,通过红外体感设备接收手势交互指令,或者通过语音识别设备接收语音交互指令,或者通过键盘、鼠标等输入设备接收交互指令。所述交互指令包括左转、右转、上翻、下翻、向左平移、向右平移、放大、缩小等指示。
如上述步骤s04,根据所述交互指令对应修改所述目标文件。
所述交互指令携带对所述基础模型的修改信息。所述修改信息包括增加资源数据、减少资源数据、与原文件对应的位置数据、与源文件对应的比例数据等其中的一种或多种。例如,若所述交互指令为基础模型向左平移m的距离,则所述交互指令包括位置数据,根据所述交互指令对应修改所述目标文件中涉及位置的数据,并保存修改后的数据,使得生成的三维模型表现为所述基础模型向左平移m的距离。
如上述步骤s05,根据修改后的目标文件生成用于全息投影的三维模型。
所述源文件包括保存特定对象的资源数据的目标文件和除所述特定对象的资源数据之外的资源数据。所述用于全息投影的三维模型是指与所述交互指令对应的三维模型,修改后的目标文件中的资源数据和所述源文件中除所述特定对象的资源数据之外的资源数据作为与所述交互指令对应的三维模型的源文件。所述与交互指令对应的三维模型的源文件通过对应的绘图软件生成对应的三维模型图像,然后通过计算机连接的投影仪或者显示器将所述三维模型图像投影在全息投影金字塔或者全息投影屏上。
本实施例中,在所述三维模型全息交互方法中,所述获取基础模型的源文件的步骤,包括:
从所述本地文件夹中加载所述基础模型的源文件,或者,从服务器中下载所述基础模型的源文件。
实际应用中,基础模型的源文件保存在本地文件夹和/或服务器中,查找本地文件夹中是否存在基础模型的源文件,若存在,则从本地文件夹中加载基础模型的源文件;若不存在,则从服务器下载基础模型的源文件。
本实施例中,在所述三维模型全息交互方法中,在所述获取基础模型的源文件的步骤之前,包括:
绘制基础模型;采用三维模型制作软件设计制作全息交互场景中的基础模型,三维模型制作软件包括如revit、3dmax、sketchup等。
将所述基础模型的源文件保存至本地文件夹中,或者,将所述基础模型的源文件上传至服务器中。
请参照图2,本实施例中,在所述三维模型全息交互方法中,所述目标文件包括索引子文件、模型子文件和材质子文件;所述将所述源文件中特定对象的资源数据写入目标文件的步骤,包括:
s201,从所述源文件中提取特定对象的资源数据;
s202,将所述特定对象的索引数据写入所述索引子文件;
s203,将所述特定对象的模型数据写入所述模型子文件;
s204,将所述特定对象的材质数据写入所述材质子文件。
具体的,请参照图3,所述步骤s201包括:
s2011,解析所述源文件;
s2012,确定静态属性的对象;
s2013,将所述静态属性的对象中包含可见属性和开启动态批次合并功能的对象确定为特定对象;
s2014,提取所述特定对象的资源数据。
所述静态属性的对象是指对象之间通过属性互相联系,且对象之间的关系不随时间而转移。所述可见属性是指对类外的元素是否可访问。本实施例中,所述包含可见属性的对象是指任何类都可以访问该属性的对象。所述开启动态批次合并功能的对象是指允许对资源数据进行动态批次合并的对象。
所述索引数据是指对顶点属性数组中元素的一个位置标记,使用时,先通过顶点属性数组指定数据,然后利用指向这些数据的索引来指示opengl完成绘图。当绘制的模型包含多个重叠的顶点时,每个顶点属性包括了位置、颜色、纹理坐标、法向量等属性,若要修改重复的顶点的数据,通过修改索引数据即可全部修改过来,并不需要挨个顶点进行修改,从而节约时间成本和同时减少存储空间。所述模型数据包含各个顶点顶点之间的连接关系即面信息。所述材质数据包括环境光、漫射光、反射光、透明度、纹理图像等材质属性。
将特定对象的索引数据写入所述索引子文件,所述索引子文件用第一关键字对来表示;将特定对象的模型数据写入所述模型子文件,所述模型子文件用第二关键字对来表示;将所述特定对象的材质数据写入所述材质子文件,所述材质子文件用第三关键字对来表示。所述第一关键字对、第二关键字对、第三关键字对均可表示为<drawstart,drawcount>,用一个64位的longlong类型存储,其中,高位存储start,地位存储end。
本实施例中,在所述三维模型全息交互方法中,所述交互指令包括交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述根据所述交互指令对应修改所述目标文件的步骤,包括:
根据所述交互索引数据修改所述索引子文件中对应的特定对象的索引数据;和/或,
根据所述交互模型数据修改所述模型子文件中对应的特定对象的模型数据;和/或,
根据所述交互材质数据修改所述材质子文件中对应的特定对象的材质数据。
在一实施方式中,所述交互指令包括对应于所述交互指令的三维模型的交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述根据所述交互指令对应修改所述目标文件,可以理解为,将所述交互指令对应于所述交互指令的三维模型的交互索引数据、交互模型数据、交互材质数据中的一种或多种,分别对应替换所述索引子文件中对应的特定对象的索引数据、所述模型子文件中对应的特定对象的模型数据、所述材质子文件中对应的特定对象的模型数据。
在另一实施方式中,所述交互指令包括交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述交互索引数据、交互模型数据、交互材质数据为对应于所述交互指令的三维模型和所述基础模型的修改信息,所述索引子文件中对应的特定对象的索引数据基于所述交互指令的交互索引数据修改,所述模型子文件中对应的特定对象的模型数据基于所述交互指令的模型数据修改,所述交互材质子文件中对应的特定对象的材质数据基于所述交互指令的材质数据修改。
本实施例中,在所述三维模型全息交互方法中,所述根据修改后的目标文件生成用于全息投影的三维模型的步骤,包括:
将所述源文件中除所述特定对象的资源数据之外的资源数据写入固定文件。所述源文件中包括所述特定对象的资源数据和除所述特定对象的资源数据之外的资源数据。所述特定对象与所述交互指令相关,所述除所述特定对象的资源数据之外的资源数据与所述交互指令无关,因此,将所述除所述特定对象的资源数据之外的资源数据写入固定文件,可以实现一份数据多处引用的目的,以减少存储空间和绘制批次。
根据修改后的目标文件和所述固定文件生成用于全息投影的三维模型。所述修改后的目标文件中的资源数据和所述固定文件中的资源数据构成了与所述交互指令对应的三维模型的源文件,将所述与所述交互指令对应的三维模型的源文件应用对应的绘图软件中,再通过计算机连接的投影仪或者显示器将全息投影模型投影在全息投影金字塔或者全息投影屏幕上。
本发明通过获取基础模型的源文件,将源文件中特定对象的资源数据写入目标文件;并根据交互指令对应修改目标文件生成用于全息投影的三维模型。本实施例通过将资源数据合并保存,使用时直接调用的方式,以减少全息交互展示投影时的绘制批次,从而实现大规模三维模型全息交互展示的功能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
请参照图4,本发明提出一种三维模型全息交互系统,包括:
源文件获取模块100,用于获取基础模型的源文件;
目标文件生成模块200,用于将所述源文件中特定对象的资源数据写入目标文件;
接收交互指令模块300,用于接收交互指令;
目标文件修改模块400,用于根据所述交互指令对应修改所述目标文件;
三维模型生成模块500,用于根据修改后的目标文件生成用于全息投影的三维模型。
所述源文件获取模块100,用于获取基础模型的源文件;三维模型全息交互是通过计算机连接的投影仪或者显示器将全息投影模型投影在全息投影金字塔或者全息投影屏上,并呈现与交互信息匹配的全息投影图像。所述基础模型是指用于最初存储在计算机内用于展示的模型,例如,大型商场的三维模型。所述源文件即通过绘图软件制作所述基础模型时生成的文件。
所述目标文件生成模块200,用于将所述源文件中特定对象的资源数据写入目标文件;所述基础模型包括多个对象,所述对象包括构成所述基础模型的组件,例如,大型商场的三维模型包括电梯组件、建筑结构组件等;或者,所述对象包括构成所述基础模型的点、线、面、体。所述特定对象是指满足一定条件的对象,将满足一定条件的对象的资源数据写入目标文件。
所述接收交互指令模块300,用于接收交互指令;在当前展示的三维模型的全息投影下,通过红外体感设备接收手势交互指令,或者通过语音识别设备接收语音交互指令,或者通过键盘、鼠标等输入设备接收交互指令。所述交互指令包括左转、右转、上翻、下翻、向左平移、向右平移、放大、缩小等指示。
所述目标文件修改模块400,用于根据所述交互指令对应修改所述目标文件;所述交互指令携带对所述基础模型的修改信息。所述修改信息包括增加资源数据、减少资源数据、与原文件对应的位置数据、与源文件对应的比例数据等其中的一种或多种。例如,若所述交互指令为基础模型向左平移m的距离,则所述交互指令包括位置数据,根据所述交互指令对应修改所述目标文件中涉及位置的数据,并保存修改后的数据,使得生成的三维模型表现为所述基础模型向左平移m的距离。
所述三维模型生成模块500,用于根据修改后的目标文件生成用于全息投影的三维模型;所述源文件包括保存特定对象的资源数据的目标文件和除所述特定对象的资源数据之外的资源数据。所述用于全息投影的三维模型是指与所述交互指令对应的三维模型,修改后的目标文件中的资源数据和所述源文件中除所述特定对象的资源数据之外的资源数据作为与所述交互指令对应的三维模型的源文件。所述与交互指令对应的三维模型的源文件通过对应的绘图软件生成对应的三维模型图像,然后通过计算机连接的投影仪或者显示器将所述三维模型图像投影在全息投影金字塔或者全息投影屏上。
本实施例中,在所述三维模型全息交互系统中,所述源文件获取模块100包括:
绘制基础模型子模块,用于绘制基础模型;
上传源文件子模块,用于将所述基础模型的源文件保存至本地文件夹中,或者,将所述基础模型的源文件上传至服务器中。
加载源文件子模块,用于从所述本地文件夹中加载所述基础模型的源文件,或者,从服务器中下载所述基础模型的源文件。
实际应用中,采用三维模型制作软件设计制作全息交互场景中的基础模型,三维模型制作软件包括如revit、3dmax、sketchup等。基础模型的源文件保存在本地文件夹和/或服务器中,查找本地文件夹中是否存在基础模型的源文件,若存在,则从本地文件夹中加载基础模型的源文件;若不存在,则从服务器下载基础模型的源文件。
请参照图5,本实施例中,在所述三维模型全息交互系统中,所述目标文件包括索引子文件、模型子文件和材质子文件;所述目标文件生成模块200包括:
特定对象提取子模块201,用于从所述源文件中提取特定对象的资源数据;
索引子文件模块202,用于将所述特定对象的索引数据写入所述索引子文件;
模型子文件模块203,用于将所述特定对象的模型数据写入所述模型子文件;
材质子文件模块204,用于将所述特定对象的材质数据写入所述材质子文件。
具体的,请参照图6,特定对象提取子模块201包括:
源文件解析子模块2011,用于解析所述源文件;
静态属性确定子模块2012,用于确定静态属性的对象;
特定对象确定子模块2013,用于将所述静态属性的对象中包含可见属性和开启动态批次合并功能的对象确定为特定对象;
提取资源数据子模块2014,用于提取所述特定对象的资源数据。
所述静态属性的对象是指对象之间通过属性互相联系,且对象之间的关系不随时间而转移。所述可见属性是指对类外的元素是否可访问。本实施例中,所述包含可见属性的对象是指任何类都可以访问该属性的对象。所述开启动态批次合并功能的对象是指允许对资源数据进行动态批次合并的对象。
所述索引数据是指对顶点属性数组中元素的一个位置标记,使用时,先通过顶点属性数组指定数据,然后利用指向这些数据的索引来指示opengl完成绘图。当绘制的模型包含多个重叠的顶点时,每个顶点属性包括了位置、颜色、纹理坐标、法向量等属性,若要修改重复的顶点的数据,通过修改索引数据即可全部修改过来,并不需要挨个顶点进行修改,从而节约时间成本和同时减少存储空间。所述模型数据包含各个顶点顶点之间的连接关系即面信息。所述材质数据包括环境光、漫射光、反射光、透明度、纹理图像等材质属性。
将特定对象的索引数据写入所述索引子文件,所述索引子文件用第一关键字对来表示;将特定对象的模型数据写入所述模型子文件,所述模型子文件用第二关键字对来表示;将所述特定对象的材质数据写入所述材质子文件,所述材质子文件用第三关键字对来表示。所述第一关键字对、第二关键字对、第三关键字对均可表示为<drawstart,drawcount>,用一个64位的longlong类型存储,其中,高位存储start,地位存储end。
本实施例中,在所述三维模型全息交互系统中,所述交互指令包括交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述目标文件修改模块400包括:
索引数据修改子模块,用于根据所述交互索引数据修改所述索引子文件中对应的特定对象的索引数据;和/或,
模型数据修改子模块,用于根据所述交互模型数据修改所述模型子文件中对应的特定对象的模型数据;和/或,
材质数据修改子模块,用于根据所述交互材质数据修改所述材质子文件中对应的特定对象的材质数据。
在一实施方式中,所述交互指令包括对应于所述交互指令的三维模型的交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述根据所述交互指令对应修改所述目标文件,可以理解为,将所述交互指令对应于所述交互指令的三维模型的交互索引数据、交互模型数据、交互材质数据中的一种或多种,分别对应替换所述索引子文件中对应的特定对象的索引数据、所述模型子文件中对应的特定对象的模型数据、所述材质子文件中对应的特定对象的模型数据。
在另一实施方式中,所述交互指令包括交互索引数据、交互模型数据、交互材质数据中的一种或多种,所述交互索引数据、交互模型数据、交互材质数据为对应于所述交互指令的三维模型和所述基础模型的修改信息,所述索引子文件中对应的特定对象的索引数据基于所述交互指令的交互索引数据修改,所述模型子文件中对应的特定对象的模型数据基于所述交互指令的模型数据修改,所述交互材质子文件中对应的特定对象的材质数据基于所述交互指令的材质数据修改。
本实施例中,在所述三维模型全息交互系统中,所述三维模型生成模块包括:
固定文件子模块,用于将所述源文件中除所述特定对象的资源数据之外的资源数据写入固定文件。所述源文件中包括所述特定对象的资源数据和除所述特定对象的资源数据之外的资源数据。所述特定对象与所述交互指令相关,所述除所述特定对象的资源数据之外的资源数据与所述交互指令无关,因此,将所述除所述特定对象的资源数据之外的资源数据写入固定文件,可以实现一份数据多处引用的目的,以减少存储空间和绘制批次。
生成模型子模块,用于根据修改后的目标文件和所述固定文件生成用于全息投影的三维模型。所述修改后的目标文件中的资源数据和所述固定文件中的资源数据构成了与所述交互指令对应的三维模型的源文件,将所述与所述交互指令对应的三维模型的源文件应用对应的绘图软件中,再通过计算机连接的投影仪或者显示器将全息投影模型投影在全息投影金字塔或者全息投影屏幕上。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种三维模型全息交互方法和三维模型全息交互系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。