基于Unity3D的网格生成方法及装置转让专利

申请号 : CN201910315492.6

文献号 : CN110038302B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵神州汤琦何晋平罗毅

申请人 : 成都四方伟业软件股份有限公司

摘要 :

本申请提供一种基于Unity3D的网格生成方法及装置,涉及Unity3D领域。该方法包括:将导入Unity3D内的模型加载至预设场景;利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像;根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。相对于现有技术,解决了通过扫描仪扫描的模型定点和布线太乱,网格合并的效果不佳甚至不能进行网格合并,不但会消耗多余的内存,并且会造成人力的浪费的问题。

权利要求 :

1.一种基于Unity3D的网格生成方法,其特征在于,所述方法包括:将导入Unity3D内的模型加载至预设场景;

利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像;

接收用户输入的所述用户指令,所述用户指令包括:网格数量参数;

根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。

2.如权利要求1所述的方法,其特征在于,所述利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像,包括:利用虚拟相机对所述模型每间隔预设角度获取一张拍摄的图像,获取对所述模型360°的拍摄图像。

3.如权利要求1所述的方法,其特征在于,所述根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线,包括:根据所述拍摄的图像、预设三角化方式以及用户指令,生成所述模型对应的网格和布线。

4.如权利要求1所述的方法,其特征在于,所述根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线之后,还包括:计算获取预设贴图的纹理坐标信息;

根据所述纹理坐标信息,将所述预设贴图添加至所述模型对应的网格上,获取重建的模型。

5.一种基于Unity3D的网格生成装置,其特征在于,所述装置包括:导入模块、拍摄模块、生成模块,其中:所述导入模块,用于将导入Unity3D内的模型加载至预设场景;

所述拍摄模块,用于利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像;

所述生成模块,用于接收用户输入的所述用户指令,所述用户指令包括:网格数量参数;根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。

6.如权利要求5所述的装置,其特征在于,所述拍摄模块,具体用于利用虚拟相机对所述模型每间隔预设角度获取一张拍摄的图像,获取对所述模型360°的拍摄图像。

7.如权利要求5所述的装置,其特征在于,所述生成模块,具体用于根据所述拍摄的图像、预设三角化方式以及用户指令,生成所述模型对应的网格和布线。

8.如权利要求5所述的装置,其特征在于,还包括:获取模块、贴图模块,其中:所述获取模块,用于计算获取预设贴图的纹理坐标信息;

所述贴图模块,用于根据所述纹理坐标信息,将所述预设贴图添加至所述模型对应的网格上,获取重建的模型。

说明书 :

基于Unity3D的网格生成方法及装置

技术领域

[0001] 本申请涉及Unity3D领域,具体而言,涉及一种基于Unity3D的网格生成方法及装置。

背景技术

[0002] Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
[0003] 当前在U3D中进行网格优化处理的方法,在使用了同一个材质球的情况下,可以进行网格的合并来进行优化;每一种模型都提供了多套不同的网格,可以使用LOD进行优化。但是现有技术中的通过扫描仪扫描的模型定点和布线太乱,网格合并的效果不佳甚至不能进行网格合并,不但会消耗多余的内存,并且会造成人力的浪费。

发明内容

[0004] 本申请的目的在于,针对上述现有技术中的不足,提供一种基于Unity3D的网格生成方法及装置,以解决现有的网格合并需要手动写代码或者手动控制模型,不但会消耗多余的内存,并且会造成人力的浪费的问题。
[0005] 为实现上述目的,本申请实施例采用的技术方案如下:
[0006] 第一方面,本申请实施例提供了一种基于Unity3D的网格生成方法,包括:
[0007] 将导入Unity3D内的模型加载至预设场景;
[0008] 利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像;
[0009] 根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。
[0010] 进一步地,所述根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线,包括:
[0011] 接收用户输入的所述用户指令,所述用户指令包括:网格数量参数;
[0012] 根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。
[0013] 进一步地,所述利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像,包括:
[0014] 利用虚拟相机对所述模型每间隔预设角度获取一张拍摄的图像,获取对所述模型360°的拍摄图像。
[0015] 进一步地,所述根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线,包括:
[0016] 根据所述拍摄的图像、预设三角化方式以及用户指令,生成所述模型对应的网格和布线。
[0017] 进一步地,所述根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线之后,还包括:
[0018] 计算获取预设贴图的纹理坐标信息;
[0019] 根据所述纹理坐标信息,将所述预设贴图添加至所述模型对应的网格上,获取重建的模型。
[0020] 第二方面,本申请另一实施例提供了一种基于Unity3D的网格生成装置,所述装置包括:导入模块、拍摄模块、生成模块,其中:
[0021] 所述导入模块,用于将导入Unity3D内的模型加载至预设场景;
[0022] 所述拍摄模块,用于利用虚拟相机对所述模型进行360°拍摄,获取拍摄的图像;
[0023] 所述生成模块,用于根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。
[0024] 进一步地,所述生成模块,具体用于接收用户输入的所述用户指令,所述用户指令包括:网格数量参数;
[0025] 根据所述拍摄的图像、预设算法以及用户指令,生成所述模型对应的网格和布线。
[0026] 进一步地,所述拍摄模块,具体用于利用虚拟相机对所述模型每间隔预设角度获取一张拍摄的图像,获取对所述模型360°的拍摄图像。
[0027] 进一步地,所述生成模块,具体用于根据所述拍摄的图像、预设三角化方式以及用户指令,生成所述模型对应的网格和布线。
[0028] 进一步地,还包括:获取模块、贴图模块,其中:
[0029] 所述获取模块,用于计算获取预设贴图的纹理坐标信息;
[0030] 所述贴图模块,用于根据所述纹理坐标信息,将所述预设贴图添加至所述模型对应的网格上,获取重建的模型。
[0031] 本申请的有益效果是:采用本申请所述的基于Unity3D的网格生成方法及装置,通过直接导入模型至Unity3D中,通过Unity3D中的虚拟相机对模型进行拍照,根据用户指令自动生成合理的网格和布线,相对于传统技术,可以解决现有技术中网格的合并需要手动写代码或者手动控制模型的方式,会消耗多余的内存的同时,造成人力的浪费。

附图说明

[0032] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0033] 图1为本申请一实施例提供的基于Unity3D的网格生成方法的流程示意图;
[0034] 图2为本申请另一实施例提供的基于Unity3D的网格生成方法的流程示意图;
[0035] 图3为本申请一实施例提供的基于Unity3D的网格生成装置的结构示意图;
[0036] 图4为本申请另一实施例提供的基于Unity3D的网格生成装置的结构示意图;
[0037] 图5为本申请另一实施例提供的基于Unity3D的网格生成装置的流程示意图。

具体实施方式

[0038] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
[0039] 首先,在对本申请进行介绍之前,先对本申请中所使用到的名字进行相应的解释,具体解释如下。
[0040] Unity3D:是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
[0041] API(Application Programming Interface,应用程序编程接口):是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
[0042] 网格合并:分为静态合并和动态合并两种,其中,预先放置在场景中不会移动的物体,可以使用静态合并,但当模型网格顶点数过多时,没有任何效果;通过程序即时生成的物体,可以使用动态合并,但是也存在网格过多时,没有任何效果,并且这些操作都是需要手动写代码或者手动控制模型。
[0043] LOD(Levels of Detail):多细节层次,是指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
[0044] 图1为本申请一实施例提供的一种基于Unity3D的网格生成方法的流程示意图,如图1所示,该方法包括:
[0045] S101:将导入Unity3D内的模型加载至预设场景。
[0046] 需要说明的是,模型的构建可以事先在maya、3D Studio Max、Cheetach 3D中构建完成后(模型的种类不做任何限制,并不限于这三种,具体模型的选择根据用户需要设计,在此并不做任何限制),再将模型直接导入Unity3D内,并通过Unity3D的API接口把模型加载至预设场景中。
[0047] S102:利用虚拟相机对模型进行360°拍摄,获取拍摄的图像。
[0048] 需要说明的是,对导入的模型进行拍摄的过程中,对虚拟相机与模型之间的距离没有要求,只需虚拟相机环绕模型拍摄一周的照片即可,环绕方式可以为左右环绕或是上下环绕,但并不局限于此,具体根据用户需要设计,在此并不做任何限制。
[0049] S103:根据拍摄的图像、预设算法以及用户指令,生成模型对应的网格和布线。
[0050] 需要说明的是,此时生成的网格和布线是Unity3D根据拍摄的模型图像和用户指令,按照预设算法自动生成的,这样生成的网格和布线不但布局合理,并且排布有序,方便后续的网格合并。
[0051] 采用本申请提供的Unity3D的网格生成方法,由于使用了Unity3D内的摄像机对导入的模型进行拍摄,并使用拍摄的图片进行网格的生成和重建,相对于传统技术,解决了现有技术中的通过扫描仪扫描的模型定点和布线太乱,网格合并效果不佳甚至不能网格合并的问题,大大节约了人力成本和时间成本。
[0052] 进一步地,步骤S103包括:
[0053] 接收用户输入的用户指令,用户指令包括:网格数量参数;根据拍摄的图像、预设算法以及用户指令,生成模型对应的网格和布线。
[0054] 需要说明的是,用户指令为网格的数量,接收到用户输入的指令后,根据拍摄的图像和用户指令,依据预设算法生成对应的网格和布线,其中,每一个用户指令对应生成一套网格和布线。
[0055] 网格的数量越多,对模型的处理就越精细,同时对计算机性能的要求也就越高;网格数量越低,对模型的处理相对粗糙,但对计算机性能的要求相对较低;用户可以根据自己的需要输入相应的预设指令,本申请在此并不做任何限制。
[0056] 进一步地,步骤S102包括:利用虚拟相机对模型每间隔预设角度获取一张拍摄的图像,获取对模型360°的拍摄图像。
[0057] 需要说明的是,预设角度可以为1°,即虚拟相机每间隔一°对模型进行一次拍摄,从而获取围绕模型360°的拍摄图像;但预设角度也可以设置为2°或者3°,具体根据用户需要选择,在此并不做任何限制。
[0058] 进一步地,步骤S103包括:根据拍摄的图像、预设三角化方式以及用户指令,生成模型对应的网格和布线。
[0059] 需要说明的是,预设三角化方式为:以规则且排布有序(角对角、边对边)的三角形对模型进行网格划分;传统技术中通过三维扫描仪或者激光扫描仪生成的网格划分模型,存在除三角形外的多边形,排布乱,模型网格定点数量多,后续的网格合并时可能会没有任何效果,或者是导致模型原本的样子发生改变;本申请提供的方法相对于传统技术通过扫描仪得到的网格和布线,网格的排布更加有序整齐,后续使用LOD对网格进行的优化过程更加方便,减少了计算机内存的消耗,同时提高了优化效果;相对于传统技术中技术员人为操作对网格进行划分,大大节约了人力成本和时间成本。
[0060] 图2为本申请另一实施例提供的一种基于Unity3D的网格生成方法的流程示意图,如图2所示,步骤S103之后,还包括:
[0061] S104:计算获取预设贴图的纹理坐标信息。
[0062] 需要说明的是,计算获取纹理坐标信息,一般是在模型完全做好以后,在纹理贴图之前进行。
[0063] 其中,纹理坐标UV是驻留在多边形网格顶点(在本申请提供的实施例中,多边形为三角形)上的二维纹理坐标点,它们定义了一个二维纹理坐标系统,称为UV纹理空间,这个空间用U和V两个字母定义坐标轴,水平方向是U,垂直方向是V,用于确定如何将一个纹理图像放置在三维的模型表面。本质上,UV是提供了一种模型表面与纹理图像之间的连接关系,UV负责确定纹理图像上的一个点(像素)应该放置在模型表面的哪一个定点上,由此可将整个纹理都铺盖到模型上。所以说多边形的顶点除了具有三维的空间坐标外。还具有二维的UV纹理坐标。对于纹理贴图而言,每张贴图的U和V坐标的数值范围都是0到1。
[0064] S105:根据纹理坐标信息,将预设贴图添加至模型对应的网格上,获取重建的模型。
[0065] 需要说明的是,贴图的方式可以为自动贴图,也可以为用户根据自己的需要进行自定义贴图,具体根据用户需要设计,在此并不做任何限制。
[0066] 本实施例中,通过直接导入模型至Unity3D中,通过Unity3D中的虚拟相机对导入的模型进行拍照,并使用拍摄的图片根据用户指令自动生成合理的网格和布线,相对于传统技术,解决了现有技术中的通过扫描仪扫描的模型定点和布线太乱,网格合并效果不佳甚至不能网格合并的问题,大大节约了人力成本和时间成本。
[0067] 图3为本申请一实施例提供的Unity3D的网格生成装置的结构示意图,如图3所示,该装置包括:导入模块201、拍摄模块202、生成模块203,其中:
[0068] 导入模块201,用于将导入Unity3D内的模型加载至预设场景。
[0069] 拍摄模块202,用于利用虚拟相机对模型进行360°拍摄,获取拍摄的图像。
[0070] 生成模块203,用于根据拍摄的图像、预设算法以及用户指令,生成模型对应的网格和布线。
[0071] 进一步地,生成模块203,具体用于接收用户输入的用户指令,用户指令包括:网格数量参数;
[0072] 根据拍摄的图像、预设算法以及用户指令,生成模型对应的网格和布线。
[0073] 进一步地,拍摄模块202,具体用于根据拍摄的图像、预设三角化方式以及用户指令,生成模型对应的网格和布线。
[0074] 图4为本申请一实施例提供的Unity3D的网格生成装置的结构示意图,如图4所示,该装置还包括:获取模块204、贴图模块205,其中:
[0075] 获取模块204,用于计算获取贴图的纹理坐标信息。
[0076] 贴图模块205,用于根据纹理坐标信息,将预设贴图添加至模型对应的网格上,获取重建的模型。
[0077] 上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
[0078] 以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
[0079] 图5为本申请另一实施例提供的Unity3D的网格生成装置的结构示意图,如图5所示,该装置可以集成于终端设备或者终端设备的芯片,该终端可以是具备图像处理功能的计算设备。
[0080] 该装置包括:存储器501、处理器502。
[0081] 存储器501用于存储程序,处理器502调用存储器501存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
[0082] 可选地,本申请还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
[0083] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0084] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0085] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0086] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。