CN115294258B - 三维模型的展开方法、装置、设备及计算机可读存储介质 - Google Patents
三维模型的展开方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115294258B CN115294258B CN202211171681.9A CN202211171681A CN115294258B CN 115294258 B CN115294258 B CN 115294258B CN 202211171681 A CN202211171681 A CN 202211171681A CN 115294258 B CN115294258 B CN 115294258B
- Authority
- CN
- China
- Prior art keywords
- triangular patch
- triangular
- unfolding
- determining
- result
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 239000011159 matrix material Substances 0.000 claims abstract description 124
- 230000009466 transformation Effects 0.000 claims abstract description 72
- 238000012937 correction Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 78
- 238000004422 calculation algorithm Methods 0.000 claims description 51
- 230000004888 barrier function Effects 0.000 claims description 30
- 230000015654 memory Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 21
- 238000000354 decomposition reaction Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 18
- 238000007781 pre-processing Methods 0.000 claims description 13
- 230000007306 turnover Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 9
- 238000009877 rendering Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000007480 spreading Effects 0.000 description 5
- 238000003892 spreading Methods 0.000 description 5
- 238000005520 cutting process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/02—Non-photorealistic rendering
-
- 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
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种三维模型的展开方法、装置、设备及计算机可读存储介质;方法包括:获取待展开三维模型的初始展开结果,初始展开结果中包括的多个三角面片均未发生翻转;利用展开结果中各个三角面片的坐标信息确定各个三角面片的刚性变换矩阵;基于各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息;当基于各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于各个三角面片的刚性变换矩阵和第二能量函数确定各个三角面片的第二修正坐标信息;确定达到预设的收敛条件时,基于各个三角面片的第二修正后坐标信息,确定目标展开结果。通过本申请,能够得到无翻转的二维展开结果,从而提高展开结果质量。
Description
技术领域
本申请涉及模型处理技术,尤其涉及一种三维模型的展开方法、装置、设备及计算机可读存储介质。
背景技术
现有游戏美术制作流程中的UV展开方案,大多直接使用各种三维建模软件中提供的方法,通常的操作流程是人工在模型上选择需要进行UV展开的分区,再使用软件提供的UV展开方法获得UV的结果,通常选择的分区具有较为简单的形状。目前对三维模型进行二维展开时,一般采用“尽可能刚性”方法和“最小二乘共形”方法。但是相关技术中,对三维模型进行二维展开时没有考虑防止翻转的产生,因此可能得到带有翻转的UV展开结果,会导致二维展开结果发生局部的重叠,从而使得三维网格中的不同区域对应到二维展开结果上的相同区域,因此无法在这些三维网格上的不同区域存储不同的信息,从而造成信息丢失。
发明内容
本申请实施例提供一种三维模型的展开方法、装置及计算机可读存储介质,能够得到无翻转的二维展开结果,从而提高展开结果质量。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种三维模型的展开方法,包括:
获取待展开三维模型的初始展开结果,所述初始展开结果中包括的多个三角面片均未发生翻转;
利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵;
基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的形变矩阵;
当基于所述各个三角面片的形变矩阵确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的修正后的坐标信息,所述第二能量函数包括能够阻止三角面片发生翻转的障碍函数分量;
当确定达到预设的收敛条件时,将所述各个三角面片的第二修正坐标信息确定为目标展开结果。
本申请实施例提供一种三维模型的展开装置,包括:
第一获取模块,用于获取待展开三维模型的初始展开结果,所述初始展开结果中包括的多个三角面片均未发生翻转;
第一确定模块,用于利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵;
第二确定模块,用于基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息;
第三确定模块,用于当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,所述第二能量函数包括能够阻止三角面片发生翻转的障碍函数分量;
第四确定模块,用于当确定达到预设的收敛条件时,基于所述各个三角面片的第二修正坐标信息,确定目标展开结果。
本申请实施例提供一种计算机设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的方法。
本申请实施例具有以下有益效果:
在本申请实施例提供的三维模型的展开方法中,首先获取待展开三维模型的初始展开结果,其中,该初始展开结果中包括的三角面片未发生翻转,然后利用初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵,基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息,当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,所述第二能量函数为所述第一能量函数与障碍函数分量构成的,由于该障碍函数分量能够阻止展开的三角面片发生翻转,也就是说,此时得到的各个三角面片修正后的坐标信息得到的展开结果中三角面片是均未发生翻转的,最后如果确定达到预设的收敛条件,那么基于所述各个三角面片的修正后的坐标信息,确定目标展开结果,进而保证得到的目标展开结果中不包括发生翻转的三角面片,提高展开结果质量。
附图说明
图1是本申请实施例提供的虚拟对象渲染系统100的网络架构示意图;
图2是本申请实施例提供的第二终端400的结构示意图;
图3是本申请实施例提供的三维模型的展开方法的一种实现流程示意图;
图4是本申请实施例提供的获取初始展开结果的实现流程示意图;
图5为本申请实施例提供的三维模型的展开方法的另一种实现流程示意图;
图6为不可向性的示意图;
图7A为非流形边的示意图;
图7B为非流形点的示意图;
图8为三维模型展开得到二维图像的示意图;
图9为本申请实施例提供的利用局部-全局步骤最小化能量的实现示意图;
图10为本申请实施例提供的三维模型的展开方法的再一种实现流程示意图;
图11为本申请实施例提供的获取初始展开结果的再一种实现流程示意图;
图12为待展开三维模型和待展开三维模型的展开结果示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)三维模型:待渲染的三维空间中的三维物体。由于渲染时通常仅关注模型的视觉特征,即三维物体的内部并非关心的对象,因此三维模型也通常指三维物体的表面。
2)网格:计算机中对三维模型表面的一种离散表达形式,将三维模型表面表示为顶点、边和面的组合。其中顶点是三维空间中的点,边是连接两个顶点的直线,面是由边围成的多边形。
3)三角形网格:所有的面都是三角形的网格。
4)纹理:利用二维平面存储的网格信息,例如颜色、法向等,通常采用图片的形式。在渲染领域由有非常广泛的应用。
5)UV:代表三维网格与二维纹理的对应关系的二维网格。
6)UV展开:给定一个三维空间中的网格,寻找与之对应的UV的过程。
7)无翻转UV:UV的每个面的法向均与它周围的所有面的法向一致。
8)UV展开的扭曲:三维网格上的面和与之对应的UV上的面之间,由于被展平而产生的形变程度。
9)尽可能刚性的UV展开:一种针对三角形网格的UV展开算法,它使得在UV展开的过程中,三维网格上的三角面和与之对应的UV上的三角面的形状尽可能一致,因此扭曲较低。
针对相关技术中,在进行三维模型展开时,会造成因三角面片发生翻转而导致UV展开质量较差的问题,本申请实施例提供一种三维模型的展开方法,能够全自动的对三角形网格进行尽可能刚性的无翻转UV展开的通用算法,在无需人工修改的情况下,能对各种带切缝的模型快速生成扭曲较低的UV,并且保证无翻转。在保证生成时间满足要求的基础上,避免了由于翻转和高扭曲带来的UV展开质量较差的情况。
下面说明本申请实施例提供的计算机设备的示例性应用,本申请实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为终端时示例性应用。
参见图1,图1是本申请实施例提供的虚拟对象渲染系统系统100的网络架构示意图,如图1所示,该系统包括第一终端200、网络300和第二终端400,其中,第一终端200和第二终端400通过网络建立有通信连接,网络300可以是广域网或者局域网,又或者是二者的组合。
用户可以利用第一终端200完成虚拟对象的三维模型设计,该虚拟对象可以是游戏场景中的虚拟对象,还可以是虚拟现实场景或者增强现实场景中的虚拟对象,例如可以是虚拟人物,虚拟建筑物,以及虚拟植物等,而显示在虚拟场景中的虚拟对象是通过纹理映射技术(Texture Mapping)对该虚拟对象的三维模型进行纹理贴图后得到的,从而可提升显示在游戏画面中的虚拟对象的真实性和生动性。在本申请实施例中,第一终端200在完成对虚拟对象的三维模型设计后,将三维模型数据发送至第二终端400,第二终端400可以对虚拟对象的三维模型进行二维展开,得到展开结果。在实现时,第二终端400获取待展开三维模型的初始展开结果,初始展开结果中包括的三角面片均未发生翻转;利用展开结果中各个三角面片的坐标信息确定各个三角面片的刚性变换矩阵;基于各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的形变矩阵;当基于各个三角面片的形变矩阵确定存在发生翻转的三角面片,基于各个三角面片的刚性变换矩阵和第二能量函数确定各个三角面片的修正后的坐标信息,第二能量函数为所述第一能量函数与障碍函数分量构成的;当确定达到预设的收敛条件时,基于各个三角面片的修正后的坐标信息,确定目标展开结果,然后基于目标展开结果进行纹理渲染。
在一些实施例中,第一终端200和第二终端400可以是同一个终端,也即通过同一个终端完成对象设计和纹理渲染功能。在一些实施例中,第二终端400还可以是从服务器中获取待渲染的虚拟三维虚拟对象,然后第二终端400对三维虚拟对象进行展开处理,得到目标展开结果,并基于目标展开结果进行纹理渲染。
这里的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。第一终端200和第二终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载智能终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图2,图2是本申请实施例提供的第二终端400的结构示意图,图2所示的第二终端400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器450中的三维模型的展开装置455,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块4551、第一确定模块4552、第二确定模块4553、第三确定模块4554和第四确定模块4555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的三维模型的展开方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
将结合本申请实施例提供的终端的示例性应用和实施,说明本申请实施例提供的三维模型的展开方法。
本申请实施例提供一种三维模型的展开方法,应用于计算机设备,该计算机设备可以是终端,也可以是服务器,在本申请实施例中以计算机设备为终端为例进行说明。图3是本申请实施例提供的三维模型的展开方法的一种实现流程示意图,以下将结合图3对本申请实施例提供的三维模型的展开方法的各个步骤进行说明。
步骤S101,获取待展开三维模型的初始展开结果。
其中,待展开三维模型可以游戏场景中的虚拟对象对应的三维模型,还可以是虚拟现实场景或者增强现实场景中的虚拟对象对应的三维模型,其中,虚拟对象可以是虚拟人物,虚拟建筑物,以及虚拟植物等,而显示在虚拟场景中的虚拟对象是通过纹理映射技术对该虚拟对象的三维模型进行纹理贴图后得到的。对三维模型进行纹理贴图在实现时,是将三维模型进行展开处理,得到二维展开结果,然后对二维展开结果中包括的各个三角面片进行纹理贴图。
该步骤中在实现时,可以利用相关技术中的共形映射算法对三维模型进行二维展开,得到候选展开结果,如果确定候选展开结果中不存在未发生翻转的三角面片,那么将候选展开结果确定为初始展开结果,如果确定候选展开结果中存在发生翻转的三角面片,那么利用能够保证不发生翻转的另一种展开算法对三维模型进行展开处理,得到初始展开结果。因此,初始展开结果中包括的多个三角面片均未发生翻转。在本申请实施例中,初始展开结果中包括各个三角面片中所包含顶点的顶点标识和坐标信息。
步骤S102,利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵。
该步骤在实现时,可以从初始展开结果中获取各个三角面片的坐标信息(对应其他实施例中的UV坐标),并从三维模型的模型信息中获取三角面片对应的三维坐标,进而确定三角面片在其所在的平面的局部坐标系下的二维坐标,并确定各个三角面片的形变矩阵,然后对各个形变矩阵进行奇异值分解,最后基于分解结果,确定出各个三角面片的旋转变换矩阵。
在本申请实施例中,形变矩阵为从三角面片的所在平面的局部二维坐标映射到二维UV坐标的线性转换矩阵,刚性变换矩阵为二维平面上的旋转变换矩阵。
步骤S103,基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息。
在本申请实施例中,第一能量函数可以如公式(1-1)表示:
其中,A T 表示三角面片的面积,是利用三角面片对应的三维坐标确定的。J T 表示代表三角面片T的形变矩阵,三角面片的形变矩阵可以用三角面片的三维坐标和二维坐标表示,R T 表示与三角面片T对应的刚性变换矩阵。由于在步骤S102中已经确定出三角面片T对应的刚性变换矩阵,因此在公式(1-1)中,A T 和R T 均为已知量,需要求解J T ,将J T 用三角面片的三维坐标对应的局部二维坐标和二维UV坐标表示,由于三角面片的三维坐标是已知的,因此通过最小化求解第一能量函数,可以确定出各个三角面片二维UV坐标,也即各个三角面片的第一修正坐标信息。
步骤S104,当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息。
在该步骤之前需要确定是否存在发生翻转的三角面片,在实现时首先基于各个三角面片的第一修正坐标信息确定所述各个三角面片的形变矩阵,进而求得各个三角面片的形变矩阵的行列式,最后确定各个行列式是否均大于0,其中,当不存在小于0的行列式时,确定不存在发生翻转的三角面片;此时可以确定是否达到收敛条件,如果确定达到收敛条件,将本次迭代得到的修正后的坐标信息,确定为目标展开结果。当存在小于0的行列式时,确定存在发生翻转的三角面片,此时需要基于所述各个三角面片的旋转变换矩阵对所述第二能量函数进行最小化求解,得到本次迭代对应的最小能量值和达到所述最小能量值时,所述各个三角面片修正后的坐标信息。在本申请实施例中,第二能量函数为所述第一能量函数与障碍函数分量构成的,可用公式(1-2)表示:
步骤S105,当确定达到预设的收敛条件时,将所述各个三角面片的第二修正坐标信息确定为目标展开结果。
在一些实施例中,可以至少以下两种方式,确定是否达到收敛条件:
第一种方式:获取预设的能量阈值;当本次迭代对应的最小能量值小于所述能量阈值时,确定达到预设的收敛条件。
第二种方式:获取预设的能量差值阈值;确定上一次迭代对应的最小能量值和本次迭代对应的最小能量值的能量差值;当所述能量差值小于所述能量差值阈值时,确定达到预设的收敛条件。
在确定达到预设的收敛条件时,说明可以将本次迭代得到的各个三角面片的第二修正坐标信息确定为目标展开结果。
在一些实施例中,当确定未达到收敛条件时,基于本次迭代得到的各个三角面片的第二修正坐标信息,再次确定各个三角面片的刚性变换矩阵,进而将各个三角面片的刚性变换矩阵确定为已知量,最小化第一能量函数或最小化第二能量函数,得到各个三角面片的修正后的坐标信息,如此迭代,直至达到算法收敛条件。
在本申请实施例提供的三维模型的展开方法中,首先获取待展开三维模型的初始展开结果,其中,该初始展开结果中包括的三角面片未发生翻转,然后利用初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵,基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的形变矩阵,当基于所述各个三角面片的形变矩阵确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的修正后的坐标信息,所述第二能量函数为所述第一能量函数与障碍函数分量构成的,由于该障碍函数分量能够阻止展开的三角面片发生翻转,也就是说,此时得到的各个三角面片修正后的坐标信息得到的展开结果中三角面片是均未发生翻转的,最后如果确定达到预设的收敛条件,那么基于所述各个三角面片的修正后的坐标信息,确定目标展开结果,由于在初始展开结果中三角面片是均未发生翻转的,然后再基于各个三角面片的坐标信息确定出刚性变换矩阵,从而实现尽可能刚性的二维展开,如果确定存在发生翻转的三角面片,再利用包含障碍函数分量的第二能量函数和刚性变换矩阵求解形变矩阵,从而得到各个三角面片修正后的坐标信息,直至达到收敛条件,进而保证得到的目标展开结果中不包括发生翻转的三角面片,提高展开结果质量。
在一些实施例中,上述步骤S101中的“获取待展开三维模型的初始展开结果”,可以通过图4所示的步骤S1011至步骤S1018实现,以下结合图4对各个步骤进行说明。
步骤S1011,获取待展开三维模型的模型信息,对所述模型信息进行预处理,得到处理后的模型信息。
待处理的三维模型的模型信息可以包括构成该三维模型的多个三角面片的顶点标识和顶点索引,通过该顶点索引能够获得三角面片的三维坐标信息,该三维坐标信息包括三角面片的三个顶点的三维坐标。
由于并不是任意一个三维模型均能进行二维展开,通常二维展开算法会要求三维模型的网格区域为可定向、流形、几何拓扑为带洞或不带洞圆盘并且不含退化面的三角形网格,因此在对三维模型进行展开之前需要进行预处理过程。对三维模型进行预处理在实现时,首先确定三维模型中包括的网格区域是否满足展开条件。在本申请实施例中,展开条件可以包括三角形网格为可定向、流形且几何拓扑为带洞或不带洞圆盘,如果三维模型满足展开条件,则确定各个三角形网格的面积,将面积为0的退化面删除,得到处理后的模型信息。
步骤S1012,利用第一预设算法对所述处理后的模型信息进行二维展开处理,得到候选展开结果。
其中,第一预设算法为共形映射方法,共形映射又可以称为保角映射,是指两个曲面映射后和映射前每一个点上两个向量的夹角保持不变。第一预设算法可以为最小二乘保角映射算法。最小二乘保角映射算法不需要固定边界来进行二维展开,所采用的目标函数的最小值可以使得展开后的三角面片的角度变形最小。因此,通过该算法得到的候选展开结果具有较低的角度扭曲,但是面积扭曲较大。最小二乘保角映射算法能够处理几何拓扑为带洞或不带洞圆盘的网格区域,但是可能出现翻转。
步骤S1013,确定所述候选展开结果中是否存在发生翻转的三角面片。
该步骤在实现时,首先基于候选展开结果获取各个三角面片的候选坐标信息,该候选坐标信息为二维坐标,然后再获取各个三角面片对应的三维坐标信息,并基于各个三角面片的候选坐标信息和三维坐标信息确定各个三角面片的形变矩阵,确定各个形变矩阵的行列式。当各个行列式均大于0时,确定候选展开结果中不存在发生翻转的三角面片,此时进入步骤S1014;当存在小于或者等于0的行列式时,确定候选展开结果中存在发生翻转的三角面片,此时进入步骤S1015。
步骤S1014,将所述候选展开结果确定为初始展开结果。
步骤S1015,确定处理后的模型信息是否包括孔洞。
其中,当确定处理后的模型信息中包括孔洞,进入步骤S1016,当确定处理后的模型信息中不包括孔洞,进入步骤S1018。
步骤S1016,对所述处理后的模型信息进行补洞处理,得到补洞后的模型信息。
在本申请实施例中,第二预设算法只能对不带孔洞的网格区域进行展开处理,因此在该不中需要对处理后的模型信息进行补洞处理。补洞处理在实现时,首先确定出处理后的模型信息中包括的孔洞,并确定出各个孔洞在三维空间的中心点,然后将孔洞的各个顶点与对应的中心点进行连接,从而得到补洞后的模型信息。
步骤S1017,利用第二预设算法对所述补洞后的模型信息进行二维展开处理,得到初始展开结果。
这里,第二预设算法为无翻转的展开方法,第二预设算法可以是“Tutte嵌入”方法,还可以是其他保证不会发生翻转的其他展开算法,在本申请实施例中,不对第二预设算法进行限定。
步骤S1018,利用第二预设算法对处理后的模型信息进行二维展开处理,得到初始展开结果。
由于第二预设算法为无翻转的展开方法,因此,利用第二预设算法对模型信息进行二维展开处理,得到的初始展开结果中不存在发生翻转的三角面片。
在上述步骤S1011至步骤S1018所在的实施例中,首先对待展开的三维模型进行预处理,从而保证处理后的模型信息是满足展开条件,并且不存在面积为0的退化面的,然后再利用处理速度较快的共形映射算法对处理后的模型信息进行二维展开,得到候选展开结果,如果候选展开结果中存在发生翻转的三角面片,则再利用能够保证不会发生翻转的第二预设算法对处理后的模型信息进行二维展开处理,得到不存在发生翻转的三角面片的初始展开结果,如此能够在保证处理效率的基础上,同样保证得到不存在发生翻转的三角面片的初始展开结果,从而为最终得到不发生翻转的目标展开结果提供必要的数据基础。
在一些实施例中,上述步骤S1011中的“对所述模型信息进行预处理,得到处理后的模型信息”可以通过以下步骤实现:
步骤S111,确定所述模型信息是否满足展开条件。
其中,所述展开条件包括模型可定向、不包含流形边和流形顶点且几何拓扑为带洞或不带洞圆盘;确定所述模型信息满足展开条件时,进入步骤S112;确定不满足展开条件时,进入步骤S115。
在本申请实施例中,可定向性要求三维模型中不能包含不可定向的相邻面,不可定向的相邻面是指两个相邻面的法线方向相反。在实现时,将两个相邻面沿公共边旋转至同一个平面,此时两个相邻面在公共边两侧,然后确定此时两个相邻面的法线方向是否相反。流形边是指相邻面具有多于两个的公共边,而非流形点指与该顶点相邻的面没有通过边相邻的方式连接成一个整体的顶点。确定几何拓扑是否为带洞或不带洞圆盘在实现时,可以通过确定是否满足欧拉示性数与边界条数和为2且边界条数大于0这一条件。其中当满足欧拉示性数与边界条数和为2且边界条数大于0这一条件,说明几何拓扑为带洞或不带洞圆盘。
步骤S112,基于所述模型信息确定各个三角网格的面积。
在本申请实施例中,三角网格是指三维模型中的三角面,三角面片是指二维的三角面。该步骤在实现时,是基于模型信息中三角网格的顶点的坐标信息确定出三角网格的面积。在已知三角网格的三个顶点的三维坐标时,可以基于三个顶点的三维坐标确定出三条边长的长度,然后再利用海伦公式确定出三角网格的面积。
步骤S113,将面积为0的三角网格确定为待删除网格。
满足下列条件之一的三角形面积为0:三个内角的度数为(180°,0°,0°)或者(90°,90°,0°);三边其中一条边的长度为0;一条边的长度等于另外两条之和。在本申请实施例中,将面积为0的三角网格称为退化面,并且将面积为0的三角网格确定为待删除网格。
步骤S114,将所述待删除网格从所述模型信息中删除,得到处理后的模型信息。
步骤S115,输出三维模型不满足展开条件的提示信息,并结束流程。
通过上述步骤S111至步骤S115,可以在对三维模型进行展开处理之前,首先判断三维模型是否满足展开条件,在确定三维模型满足展开条件时,再对三维模型中面积为0的退化面进行删除,从而保证对三维模型进行展开处理的过程能够正确执行,从而保证展开结果的准确性。
在一些实施例中,上述步骤S102“利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵”,可以通过以下步骤实现:
步骤S1021,利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的初始形变矩阵。
假设三角面片T的三个顶点的二维坐标分别为(u 0,T ,v 0,T )、(u 1,T ,v 1,T )、(u 2,T ,v 2,T ),在三维空间中所在平面的局部二维坐标分别为、、,那么三角面片T的初始形变矩阵可以利用公式(1-3)得出:
步骤S1022,对所述各个三角面片的初始形变矩阵进行奇异值分解,得到所述各个三角面片对应的分解结果。
奇异值分解(SVD,Singular Value Decomposition)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。对于三角面片T的初始形变矩阵J T 进行奇异值分解,得到如下分解结果:
其中,假设J T 为m*m阶矩阵,那么U是m×m阶酉矩阵;Σ是半正定m×m阶对角矩阵;而VT,即V的共轭转置,是m×m阶酉矩阵。Σ对角线上的元素Σi,其中Σi即为M的奇异值。
步骤S1023,基于所述各个三角面片对应的分解结果,确定所述各个三角面片的刚性变换矩阵。
在得到各个三角面片对应的分解结果后,可以按照公式(1-5)确定出三角面片的刚性变换矩阵:
需要说明的是,上述步骤S1021至步骤S1023对于每个三角面片来说是独立执行的,因此步骤S1021至步骤S1023在一些实施例中被称为是局部步骤,通过上述步骤S1021至步骤S1023能够在已知三角面片的形变矩阵的前提下,确定出刚性变换矩阵,从而为后续利用刚性变换矩阵确定目标展开结果提供数据基础。
基于前述的实施例,本申请实施例再提供一种三维模型的展开方法,图5为本申请实施例提供的三维模型的展开方法的另一种实现流程示意图,以下结合图5对本申请实施例提供的三维模型的展开方法进行说明。
步骤S301,获取待展开三维模型的初始展开结果,所述初始展开结果中包括的三角面片未发生翻转。
步骤S302,利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵。
步骤S303,基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息。
需要说明的是,上述步骤S301至步骤S303的实现过程与步骤S101至步骤S103的实现过程是相同的。
步骤S304,基于所述各个三角面片的第一修正坐标信息确定是否存在发生翻转的三角面片。
该步骤在实现时,可以首先参考公式(1-3)基于各个三角面片的第一修正坐标信息确定所述各个三角面片的形变矩阵,进而求得各个三角面片的形变矩阵的行列式,最后确定各个行列式是否均大于0,其中,当存在小于0的行列式时,确定存在发生翻转的三角面片,进入步骤S305;当基于各个三角面片的第一修正坐标信息确定不存在发生翻转的三角面片时,进入步骤S308。
步骤S305,获取预设的障碍函数分量和所述障碍函数分量对应的权重值。
当且仅当时取最小值,此时形变矩阵J T 就是刚性变换矩阵,因此这个函数也可以作为形变扭曲的度量。当形变矩阵J T 的行列式逐渐减小到接近0时,由于,因此和中至少有一个会趋于0,即会趋于无穷大。这样就说明了对称狄利克雷能量满足障碍函数分量的要求,并且对其进行优化可以帮助降低扭曲。
权重值可以为小于1的正实数,在实际应用时,权重值可以是小于1且接近于0的实数,例如权重值可以为0.1,或者0.05、0.01等。
步骤S306,基于所述第一能量函数、所述障碍函数分量和所述权重值确定第二能量函数。
在实现时,将第一能量函数与障碍函数分量进行加权求和,得到第二能量函数,也即第二能量函数可以用公式(1-7)得出:
步骤S307,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息。
步骤S308,确定是否达到预设的收敛条件。
其中,当确定未达到收敛条件时,进入步骤S309,当确定达到预设的收敛条件时,进入步骤S310。
步骤S309,将所述各个三角面片本次迭代得到的修正后的坐标信息确定为初始展开结果,并进入步骤S302。
当是在执行步骤S304确定不存在发生翻转的三角面片转入步骤S308时,那么本次迭代得到的修正后的坐标信息为第一修正坐标信息,那么在该步骤中,将第一修正坐标信息确定为初始展开结果;当是在执行步骤S307之后转入步骤S308时,那么本次迭代得到的修正后的坐标信息为第二修正坐标信息,那么在该步骤中,将第二修正坐标信息确定为初始展开结果。
步骤S310,将所述各个三角面片本次迭代得到的修正后的坐标信息确定为目标展开结果。
与步骤S309类似,本次迭代得到的修正后的坐标信息为第一修正坐标信息或第二修正坐标信息,其中,如果是在执行步骤S304确定不存在发生翻转的三角面片转入步骤S308的,那么本次迭代得到的修正后的坐标信息为第一修正坐标信息,那么在该步骤中,将第一修正坐标信息确定为目标展开结果;当是在执行步骤S307之后转入步骤S308时,那么本次迭代得到的修正后的坐标信息为第二修正坐标信息,将第二修正坐标信息确定为目标展开结果。
在本申请实施例提供的三维模型的展开方法中,首先获取待展开三维模型的初始展开结果,其中,该初始展开结果中包括的三角面片未发生翻转,然后利用初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵,基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息,当基于所述各个三角面片的坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,由于第二能量函数是将所述第一能量函数和障碍函数分量进行加权求和得到的,由于该障碍函数分量能够阻止展开的三角面片发生翻转,也就是说,此时得到的各个三角面片第二修正坐标信息对应的各个三角面片是均未发生翻转的,最后如果确定达到预设的收敛条件,那么基于所述各个三角面片的修正后的坐标信息,确定目标展开结果,能够在没有大幅增加计算时间的基础上,避免UV展开的结果出现翻转,从而允许更为复杂的三维网格区域进行UV展开,得到没有翻转的高质量UV展开结果,从而减少了三维网格的过度切割,降低了切缝的长度,从而提高了UV展开结果的质量。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种三维模型的展开方法,在实现时,首先对三维模型进行预处理,然后再进行无翻转的尽可能刚性的UV展开。以下为本申请实施例提供的三维模型的展开方法的实现过程进行说明。
一、对三维模型进行预处理。
预处理过程首先对输入模型网格区域进行检测,剔除不能UV展开的网格区域。然后对网格区域上的一些影响算法进行的瑕疵进行修补。
通常不是所有的三维网格区域均能进行UV展开,因此,在本申请实施例中,要求输入的三维网格区域为可定向、流形、几何拓扑为带洞或不带洞圆盘并且不含退化面的三角形网格。
UV展开的算法要求输入的网格是三角形网格,是因为三角形拥有诸多良好的性质,例如三角形必然位于同一个平面上,三角形内部的点具有唯一且连续的关于顶点的重心坐标,以及平面上的任意两个三角形之间均可由线性变换进行形变而得到,这些性质是许多UV展开算法的理论基础。而输入网格可能包含四边形、五边形等非三角形的面,因此对于这样的情形,在预处理流程会对非三角形面进行三角化,从而将一般的网格转换为算法需求的三角形网格。
可定向性要求网格区域内不能包含不可定向的相邻面,不可定向相邻面如图6所示,在摊平后两个面(601和602)的法向朝向相反的方向。
流形三角形网格要求网格中不能包含如图7A所示的非流形边701和图7B所示的非流形顶点711,其中,非流形边指相邻面多于2个的边,而非流形点指与它相邻的面没有通过边相邻的方式连接成一个整体的顶点。
进行UV展开的网格若包含不可定向和非流形的区域,则会导致算法失败,因此在预处理流程会对这些情况进行检测,若存在则停止算法并给出相应提示。
几何拓扑是对曲面的一种分类方式,若两个曲面可以通过连续地拉伸并且不产生破损的情况下由一个变形为另一个,那么它们属于同一类几何拓扑。对于可定向流形网格而言,属于同一类几何拓扑的网格具有相同的欧拉示性数(顶点数-边数+面数)和边界条数。根据相关理论只有几何拓扑为带洞或不带洞圆盘的网格区域才能被UV展开,这等价于网格区域需满足欧拉示性数与边界条数之和为2以及边界条数大于0这两个条件。
表1、不同几何拓扑的欧拉示性数、边界条数以及是否能被UV展开的对比表
网格可以通过在表面进行切割的方式改变其几何拓扑,从而将不可被UV展开的网格区域转换为几何拓扑为带洞或不带洞圆盘的网格区域。因此UV展开算法的输入通常是带有切缝的一个网格区域。预处理流程会对带切缝的网格区域计算其欧拉示性数与边界条数,以检查其几何拓扑是否为带洞或不带洞圆盘的网格区域。若不是,则停止算法并给出相应提示。
退化面是指面积为0的三角形面,这类面的存在会使许多UV展开算法失败,然而由于游戏美术在制作模型时并没有这样的需求,因此常常结果模型会带有退化的面。预处理流程会对退化面进行去除,并在非退化面之间保留网格区域原有的连接关系。
二、无翻转的尽可能刚性的UV展开。
首先,对尽可能刚性的UV展开原理进行说明。UV展开是寻找与一个三维空间中的网格对应的二维UV网格的过程。经过预处理过程,待输入的三维网格为可定向、流形、几何拓扑为带洞或不带洞圆盘并且不含退化面的三角形网格。一个UV展开的例子如图8所示,其中,801为三维网格,802为UV展开结果。
对一个三维空间中的三角形网格进行UV展开后,在每个三角形面上也会存在着一个到二维平面的三角形的对应。由于三维空间中的三角形必然在一个平面上,因此这个对应也可以看作二维平面上的两个三角形之间的一个变形,根据三角形的性质,这是一个线性变换,也就是可以用矩阵表示。
如果变换是刚性的(旋转、平移),那么并不会改变三角形的形状,也就是不会产生扭曲。基于这个思想,尽可能刚性的UV展开算法便通过让这个变换尽可能接近刚性变换来求UV展开,即极小化公式(1-1)所示的第一能量函数:
由于第一能量函数具有较为复杂的形式,为求解带来了困难。为此,在本申请实施例中采用了一种局部-全局策略,最小化能量的过程如图9所示,可以包括以下过程:
步骤S901,获取初始UV展开结果。
步骤S902,执行局部步骤。
在该步骤中,将能量中的J T 视为已知量去求解,即已知每个三角面的形变矩阵J T ,求刚性变换矩阵。在实现时,将矩阵进行奇异值分解,即,其中矩阵和均为刚性变换矩阵,则。这个步骤是对每个三角面分别独立进行的,因此被称为局部步骤。
步骤S903,执行全局步骤。
在该步骤中,将第一能量函数中的视为已知量去求解J T ,即已知每个三角面的刚性变换矩阵,求形变矩阵J T 。由于J T 由UV坐标得出,因此不同三角形的J T 是相互关联的,于是整个过程需要全局求解。不过由于已知,因此问题变为二次能量无约束问题,只需求解公式(2-2)所示的线性方程组:
其中,i=1,2,…,n;j=1,2,…,n,n为顶点总数。
步骤S904,判断算法是否收敛。
在实现时,可以判断执行全局步骤时得到的最小能量是否小于预设的能量阈值,当最小能量小于该能量阈值时,确定算法收敛;还可以是判断本次执行全局步骤得到的最小能量和上一次执行全局步骤得到的最小能量的差值绝对值是否小于差值阈值,当该差值绝对值小于差值阈值,确定算法收敛。在确定算法收敛时,进入步骤S905;在确定算法未收敛时,进入步骤S902。
步骤S905,确定得到最终的UV展开结果。
在上述步骤S901至步骤S905中,首先从一个由其他方法得到的质量不够好的初始UV展开结果(即初始的形变矩阵J T )出发,反复迭代执行局部步骤和全局步骤直至算法收敛,便得到最终的UV展开结果。
通过上述步骤S901至步骤S905,能够可以得到一个扭曲较低的UV展开结果,然而由于其并没有考虑翻转的问题,其结果容易出现翻转。一个UV展开是无翻转的,等价于每个三角面的形变矩阵的行列式都是正的,即。这是一个非线性约束,将其直接加入全局步骤的能量中会导致求解难度极大,因此,考虑使用内点法来解决这一问题:保证初始的UV展开结果无翻转,并且保证每次迭代不会产生翻转,这样就能保证结果无翻转。
本申请实施例再提供一种三维模型的展开方法,利用该展开方法,能够保证得到的展开结果无翻转,图10为本申请实施例提供的三维模型的展开方法的再一种实现流程示意图,如图10所示,该流程包括:
步骤S1001,获取初始UV展开结果。
步骤S1002,执行局部步骤。
步骤S1003,执行全局步骤。
上述步骤S1002和步骤S1003的实现过程与步骤S902和步骤S903是相同的,可参考步骤S902和步骤S903的实现过程。
步骤S1004,判断是否存在翻转。
该步骤在实现时,可以是确定每个三角面对应的形变矩阵的行列式是否均大于0,当每个三角面对应的形变矩阵的行列式均大于0,则确定不存在翻转,此时进入步骤S1006;如果存在行列式小于0的三角面,则确定存在翻转,此时进入步骤S1005。
步骤S1005,执行无翻转全局步骤。
该步骤在实现时,在上述最小能量函数公式(1-1)中加入障碍函数分量,得到第二能量函数公式(1-7):
当且仅当时取最小值,此时形变矩阵就是刚性变换矩阵,因此这个函数也可以作为形变扭曲的度量。当形变矩阵的行列式逐渐减小到接近0时,由于,因此和中至少有一个会趋于0,即会趋于无穷大。这样就说明了对称狄利克雷能量满足障碍函数分量的要求,并且对其进行优化可以帮助降低扭曲。
步骤S1006,判断算法是否收敛。
其中,如果算法收敛,进入步骤S1007,如果算法未收敛,进入步骤S1002。
步骤S1007,确定得到最终的UV展开结果。
在每个三角面上,在形变矩阵的行列式为正且绝对值较大时值较小,但是一旦形变矩阵的行列式减小到接近0时,迅速增大直至无穷来阻止形变矩阵的行列式变为负值。然而加入了障碍函数分量后,全局步骤变为非二次能量的无约束问题,只能使用例如梯度下降法、牛顿法、拟牛顿法的优化方法进行求解,速度相比于解方程较慢。因此为了综合二者的优点,在上述步骤S1001至步骤S1007所在实施例中,只有当普通的全局步骤产生翻转时才执行无翻转的全局步骤。
由前述分析可知,无翻转的尽可能刚性的UV展开需要一个由其他方法得到的UV展开作为初始。这个初始的UV展开的方法应当较为简单且速度较快,并且结果无翻转,而结果的扭曲可以比较高。常见的较为简单的UV展开算法有:“最小二乘共形”方法和“Tutte嵌入”方法。
“最小二乘共形”方法是一种共形(保角)映射方法,具有较低的角度扭曲,但是面积扭曲较大,能够处理几何拓扑为带洞或不带洞圆盘的网格区域,但是可能出现翻转。而“Tutte嵌入”方法虽然能够从理论角度保证无翻转,但是只能处理几何拓扑为不带洞圆盘的网格区域,这个方法把三维网格映射到一个用户给定的二维凸多边形上(例如矩形或圆形),扭曲极高。这两种方法均只需求解一个线性方程组便可以得到结果,计算速度快。为了综合这二者的优势,对于输入的网格区域,首先尝试用“最小二乘共形”方法进行展开,然后检查是否存在翻转,若无翻转则将其作为初始UV展开结果,否则对输入的网格区域进行补洞操作,再使用“Tutte嵌入”方法得到初始UV展开结果,获取初始UV展开结果的实现流程如图11所示,包括以下步骤:
步骤S1101,获取经过预处理的网格区域。
步骤S1102,对所述网格区域利用最小二乘共形方法进行展开。
步骤S1103,确定展开结果是否存在翻转。
其中,如果展开结果存在翻转,进入步骤S1104;如果展开结果不存在翻转,进入步骤S1106。
步骤S1104,进行网格补洞。
步骤S1105,对补洞后的网格区域利用“Tutte嵌入”方法进行展开。
步骤S1106,得到初始展开结果。
图12为待展开三维模型和待展开三维模型的展开结果示意图,如图12所示,对待展开三维模型1201利用本申请实施例提供的展开方法进行二维展开,得到的展开结果如1202所示,通过1202可以看出,对待展开三维模型进行展开得到的展开结果没有出现翻转。
本申请实施例提供的三维模型的展开方法,在没有大幅增加计算时间的基础上,避免了UV展开的结果出现翻转,从而允许更为复杂的三维网格区域进行UV展开,得到没有翻转的高质量UV展开结果,从而减少了三维网格的过度切割,降低了切缝的长度,从而提高了UV展开结果的质量。并且也允许人工或自动化工具在选择切缝时可以更多地考虑更为重要的硬边、可见性、对称性等因素,而非展开的成功率,进一步地提高UV展开结果的质量。
可以理解的是,在本申请实施例中,涉及到用户信息的内容,例如,三维模型的模型信息等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面继续说明本申请实施例提供的三维模型的展开装置455的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器450的三维模型的展开装置455中的软件模块可以包括:
第一获取模块4551,用于获取待展开三维模型的初始展开结果,所述初始展开结果中包括的多个三角面片均未发生翻转;
第一确定模块4552,用于利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵;
第二确定模块4553,用于基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息;
第三确定模块4554,用于当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,所述第二能量函数包括能够阻止三角面片发生翻转的障碍函数分量;
第四确定模块4555,用于当确定达到预设的收敛条件时,基于所述各个三角面片的第二修正坐标信息,确定目标展开结果。
在一些实施例中,该第一获取模块4551,还用于:
获取待展开三维模型的模型信息,对所述模型信息进行预处理,得到处理后的模型信息;
利用第一预设算法对所述处理后的模型信息进行二维展开处理,得到候选展开结果,所述第一预设算法为共形映射方法;
当确定所述候选展开结果中三角面片未发生翻转时,将所述候选展开结果确定为初始展开结果。
在一些实施例中,该装置还包括:
第五确定模块,用于当确定所述候选展开结果中存在发生翻转的三角面片时,确定处理后的模型信息是否包括孔洞;
补洞模块,用于当确定处理后的模型信息中包括孔洞,对所述处理后的模型信息进行补洞处理,得到补洞后的模型信息;
二维展开模块,用于利用第二预设算法对所述处理后的模型信息进行二维展开处理,得到初始展开结果,所述第二预设算法为无翻转的展开方法。
在一些实施例中,该第一获取模块4551,还用于:
确定所述模型信息是否满足展开条件,其中,所述展开条件包括模型可定向、不包含流形边和流形顶点且几何拓扑为带洞或不带洞圆盘;
确定所述模型信息满足展开条件时,基于所述模型信息确定各个三角网格的面积;
将面积为0的三角网格确定为待删除网格;
将所述待删除网格从所述模型信息中删除,得到处理后的模型信息。
在一些实施例中,该第一确定模块4552,还用于:
利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的初始形变矩阵;
对所述各个三角面片的初始形变矩阵进行奇异值分解,得到所述各个三角面片对应的分解结果;
基于所述各个三角面片对应的分解结果,确定所述各个三角面片的刚性变换矩阵。
在一些实施例中,该装置还包括:
第六确定模块,用于基于所述各个三角面片的第一修正坐标信息确定所述各个三角面片的形变矩阵;
第七确定模块,用于确定所述各个三角面片的形变矩阵的行列式;
第八确定模块,用于确定各个行列式是否均大于0,其中,当存在小于0的行列式时,确定存在发生翻转的三角面片。
在一些实施例中,该装置还包括:
第二获取模块,用于获取预设的障碍函数分量和所述障碍函数分量对应的权重值;
第九确定模块,用于基于所述第一能量函数、所述障碍函数分量和所述权重值确定第二能量函数。
在一些实施例中,该第三确定模块4554还用于:
基于所述各个三角面片的刚性变换矩阵对所述第二能量函数进行最小化求解,得到本次迭代对应的最小能量值和达到所述最小能量值时,所述各个三角面片的第二修正坐标信息。
在一些实施例中,该装置还包括:
第三获取模块,用于获取预设的能量阈值;
第十确定模块,用于当本次迭代对应的最小能量值小于所述能量阈值时,确定达到预设的收敛条件。
在一些实施例中,该装置还包括:
第四获取模块,用于获取预设的能量差值阈值;
第十一确定模块,用于确定上一次迭代对应的最小能量值和本次迭代对应的最小能量值的能量差值;
第十二确定模块,用于当所述能量差值小于所述能量差值阈值时,确定达到预设的收敛条件。
需要说明的是,本申请实施例针对三维模型的展开装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的三维模型的展开方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的三维模型的展开方法,例如,如图3、图5示出的三维模型的展开方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (13)
1.一种三维模型的展开方法,其特征在于,所述方法包括:
获取待展开三维模型的初始展开结果,所述初始展开结果中包括的多个三角面片均未发生翻转;
利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵;
基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息,所述第一能量函数为,A T 表示三角面片的面积,J T 表示代表三角面片T的形变矩阵,R T 表示与三角面片T对应的刚性变换矩阵;
当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,所述第二能量函数包括第一能量函数和能够阻止三角面片发生翻转的阻碍函数分量构成,所述阻碍函数分量为,B(J T )使用对称狄利克雷能量;
当确定达到预设的收敛条件时,将所述各个三角面片的第二修正坐标信息确定为目标展开结果。
2.根据权利要求1中所述的方法,其特征在于,所述获取待展开三维模型的初始展开结果,包括:
获取待展开三维模型的模型信息,对所述模型信息进行预处理,得到处理后的模型信息;
利用第一预设算法对所述处理后的模型信息进行二维展开处理,得到候选展开结果,所述第一预设算法为共形映射方法;
当确定所述候选展开结果中三角面片未发生翻转时,将所述候选展开结果确定为初始展开结果。
3.根据权利要求2中所述的方法,其特征在于,所述方法还包括:
当确定所述候选展开结果中存在发生翻转的三角面片时,确定处理后的模型信息是否包括孔洞;
当确定处理后的模型信息中包括孔洞,对所述处理后的模型信息进行补洞处理,得到补洞后的模型信息;
利用第二预设算法对所述处理后的模型信息进行二维展开处理,得到初始展开结果,所述第二预设算法为无翻转的展开方法。
4.根据权利要求2中所述的方法,其特征在于,所述对所述模型信息进行预处理,得到处理后的模型信息,包括:
确定所述模型信息是否满足展开条件,其中,所述展开条件包括模型可定向、不包含流形边和流形顶点且几何拓扑为带洞或不带洞圆盘;
确定所述模型信息满足展开条件时,基于所述模型信息确定各个三角网格的面积;
将面积为0的三角网格确定为待删除网格;
将所述待删除网格从所述模型信息中删除,得到处理后的模型信息。
5.根据权利要求1中所述的方法,其特征在于,所述利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵,包括:
利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的初始形变矩阵;
对所述各个三角面片的初始形变矩阵进行奇异值分解,得到所述各个三角面片对应的分解结果;
基于所述各个三角面片对应的分解结果,确定所述各个三角面片的刚性变换矩阵。
6.根据权利要求1中所述的方法,其特征在于,所述方法还包括:
基于所述各个三角面片的第一修正坐标信息确定所述各个三角面片的形变矩阵;
确定所述各个三角面片的形变矩阵的行列式;
确定各个行列式是否均大于0,其中,当存在小于0的行列式时,确定存在发生翻转的三角面片。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
获取预设的障碍函数分量和所述障碍函数分量对应的权重值;
基于所述第一能量函数、所述障碍函数分量和所述权重值确定第二能量函数。
8.根据权利要求1中所述的方法,其特征在于,所述基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片第二修正坐标信息,包括:
基于所述各个三角面片的刚性变换矩阵对所述第二能量函数进行最小化求解,得到本次迭代对应的最小能量值和达到所述最小能量值时,所述各个三角面片的第二修正坐标信息。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取预设的能量阈值;
当本次迭代对应的最小能量值小于所述能量阈值时,确定达到预设的收敛条件。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取预设的能量差值阈值;
确定上一次迭代对应的最小能量值和本次迭代对应的最小能量值的能量差值;
当所述能量差值小于所述能量差值阈值时,确定达到预设的收敛条件。
11.一种三维模型的展开装置,其特征在于,所述装置包括:
第一获取模块,用于获取待展开三维模型的初始展开结果,所述初始展开结果中包括的多个三角面片均未发生翻转;
第一确定模块,用于利用所述初始展开结果中各个三角面片的坐标信息确定所述各个三角面片的刚性变换矩阵;
第二确定模块,用于基于所述各个三角面片的刚性变换矩阵和第一能量函数确定所述各个三角面片的第一修正坐标信息,所述第一能量函数为,A T 表示三角面片的面积,J T 表示代表三角面片T的形变矩阵,R T 表示与三角面片T对应的刚性变换矩阵;
第三确定模块,用于当基于所述各个三角面片的第一修正坐标信息确定存在发生翻转的三角面片,基于所述各个三角面片的刚性变换矩阵和第二能量函数确定所述各个三角面片的第二修正坐标信息,所述第二能量函数包括第一能量函数和能够阻止三角面片发生翻转的阻碍函数分量构成,所述阻碍函数分量为,B(J T )使用对称狄利克雷能量;
第四确定模块,用于当确定达到预设的收敛条件时,基于所述各个三角面片的第二修正坐标信息,确定目标展开结果。
12.一种计算机设备,其特征在于,所述计算机设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至10任一项所述的三维模型的展开方法。
13.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令被处理器执行时实现权利要求1至10任一项所述的三维模型的展开方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211171681.9A CN115294258B (zh) | 2022-09-26 | 2022-09-26 | 三维模型的展开方法、装置、设备及计算机可读存储介质 |
PCT/CN2023/119421 WO2024067209A1 (zh) | 2022-09-26 | 2023-09-18 | 三维模型的展开方法、装置、设备、计算机可读存储介质及计算机程序产品 |
US18/664,404 US20240338895A1 (en) | 2022-09-26 | 2024-05-15 | Three-Dimensional Model Expansion Methods and Systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211171681.9A CN115294258B (zh) | 2022-09-26 | 2022-09-26 | 三维模型的展开方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115294258A CN115294258A (zh) | 2022-11-04 |
CN115294258B true CN115294258B (zh) | 2022-12-23 |
Family
ID=83833229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211171681.9A Active CN115294258B (zh) | 2022-09-26 | 2022-09-26 | 三维模型的展开方法、装置、设备及计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240338895A1 (zh) |
CN (1) | CN115294258B (zh) |
WO (1) | WO2024067209A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115294258B (zh) * | 2022-09-26 | 2022-12-23 | 腾讯科技(深圳)有限公司 | 三维模型的展开方法、装置、设备及计算机可读存储介质 |
CN115631317B (zh) * | 2022-11-30 | 2023-03-14 | 北京建筑大学 | 隧道衬砌正射影像生成方法及装置、存储介质、终端 |
CN116129076B (zh) * | 2023-04-17 | 2023-06-27 | 深圳大学 | 一种规则特征保持的建筑物Mesh模型简化方法 |
CN117315375B (zh) * | 2023-11-20 | 2024-03-01 | 腾讯科技(深圳)有限公司 | 虚拟部件分类方法、装置、电子设备及可读存储介质 |
CN118246257B (zh) * | 2024-05-30 | 2024-07-30 | 浙江凌迪数字科技有限公司 | 服装模型的板片生成方法及电子设备、存储介质、计算机程序产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880906A (zh) * | 2022-05-23 | 2022-08-09 | 江南大学 | 一种映射皮肤材料特性的三维创面有限单元展开法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346408B2 (en) * | 2005-09-06 | 2008-03-18 | Esko Ip Nv | Two-dimensional graphics for incorporating on three-dimensional objects |
US9135750B2 (en) * | 2013-03-05 | 2015-09-15 | Autodesk, Inc. | Technique for filling holes in a three-dimensional model |
US9396585B2 (en) * | 2013-12-31 | 2016-07-19 | Nvidia Corporation | Generating indirection maps for texture space effects |
US10755441B1 (en) * | 2019-11-18 | 2020-08-25 | Ncku Research And Development Foundation | Geometric camera calibration system and method |
CN112085750A (zh) * | 2020-09-15 | 2020-12-15 | 广东奥普特科技股份有限公司 | 一种三角网格的分割去噪方法 |
CN112561788B (zh) * | 2020-12-22 | 2024-05-10 | 广联达科技股份有限公司 | 一种bim模型的二维展开方法及纹理贴图方法、装置 |
CN114241151A (zh) * | 2021-11-15 | 2022-03-25 | 中国南方电网有限责任公司 | 三维模型简化方法、装置、计算机设备和计算机存储介质 |
CN114445564B (zh) * | 2022-04-08 | 2022-06-17 | 腾讯科技(深圳)有限公司 | 一种模型展开方法、设备、存储介质及计算机程序产品 |
CN114494668B (zh) * | 2022-04-13 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 三维模型的展开方法、装置、设备及存储介质 |
CN114943818A (zh) * | 2022-04-29 | 2022-08-26 | 湖南华曙高科技股份有限公司 | 模型处理方法、装置、计算机设备及计算机可读存储介质 |
CN115294258B (zh) * | 2022-09-26 | 2022-12-23 | 腾讯科技(深圳)有限公司 | 三维模型的展开方法、装置、设备及计算机可读存储介质 |
-
2022
- 2022-09-26 CN CN202211171681.9A patent/CN115294258B/zh active Active
-
2023
- 2023-09-18 WO PCT/CN2023/119421 patent/WO2024067209A1/zh unknown
-
2024
- 2024-05-15 US US18/664,404 patent/US20240338895A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880906A (zh) * | 2022-05-23 | 2022-08-09 | 江南大学 | 一种映射皮肤材料特性的三维创面有限单元展开法 |
Also Published As
Publication number | Publication date |
---|---|
WO2024067209A1 (zh) | 2024-04-04 |
US20240338895A1 (en) | 2024-10-10 |
CN115294258A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115294258B (zh) | 三维模型的展开方法、装置、设备及计算机可读存储介质 | |
CN109145366B (zh) | 基于Web3D的建筑信息模型轻量级可视化方法 | |
US20210027532A1 (en) | Primitive-based 3d building modeling, sensor simulation, and estimation | |
JP4083238B2 (ja) | プログレッシブメッシュの適応細分方法および装置 | |
CN110543716B (zh) | 三维架空电缆层级电网优化方法、装置和计算机设备 | |
EP3940649A1 (en) | Methods and systems for constructing ray tracing acceleration structures | |
CN113112603B (zh) | 三维模型优化的方法和装置 | |
CN115222806B (zh) | 多边形处理方法、装置、设备及计算机可读存储介质 | |
JPH08138082A (ja) | 四角形メッシュの生成方法及びシステム | |
WO2023226583A1 (zh) | 对象处理方法、装置、设备、计算机可读存储介质及计算机程序产品 | |
CN112364190B (zh) | 一种球面图像索引方法及装置 | |
WO2023197779A1 (zh) | 三维模型的展开方法、装置、设备及存储介质 | |
CN113724401A (zh) | 一种三维模型切割方法、装置、计算机设备和存储介质 | |
US20240212285A1 (en) | Processing three-dimensional model based only on visible model region | |
CN113593033A (zh) | 一种基于网格细分结构的三维模型特征提取方法 | |
CN110675323B (zh) | 一种三维地图语义处理方法、系统、设备及计算机介质 | |
CN112734900B (zh) | 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质 | |
CN113658342B (zh) | Ar导航路径生成的方法、系统、电子装置和存储介质 | |
CN113034688B (zh) | 一种三维地图模型的生成方法以及装置 | |
KR101919085B1 (ko) | 3차원 메쉬 데이터 간소화 방법 및 장치 | |
US20230351696A1 (en) | Data processing method and apparatus, device, computer-readable storage medium, and computer program product | |
WO2023241212A1 (zh) | 对象处理方法、装置、设备、计算机可读存储介质及计算机程序产品 | |
CN116863137A (zh) | 输电铁塔三维模型的优化方法、装置和计算机设备 | |
US7330183B1 (en) | Techniques for projecting data maps | |
CN112487674B (zh) | 晶格结构的模型生成方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40075366 Country of ref document: HK |