CN116797486A - 用于体素模型的平滑方法、装置及电子设备 - Google Patents

用于体素模型的平滑方法、装置及电子设备 Download PDF

Info

Publication number
CN116797486A
CN116797486A CN202310800699.9A CN202310800699A CN116797486A CN 116797486 A CN116797486 A CN 116797486A CN 202310800699 A CN202310800699 A CN 202310800699A CN 116797486 A CN116797486 A CN 116797486A
Authority
CN
China
Prior art keywords
voxel
vertex
model
smoothing
normal
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
CN202310800699.9A
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.)
Beijing Lanya Box Technology Co ltd
Original Assignee
Beijing Lanya Box Technology Co ltd
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 Beijing Lanya Box Technology Co ltd filed Critical Beijing Lanya Box Technology Co ltd
Priority to CN202310800699.9A priority Critical patent/CN116797486A/zh
Publication of CN116797486A publication Critical patent/CN116797486A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering

Abstract

本申请实施例公开了一种用于体素模型的平滑方法、装置及电子设备,在该方法中,确定体素模型中待进行平滑处理的第一体素顶点的坐标参数;基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数;根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数;将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数,无需修改体素模型的原有架构的同时,还能令体素模型具有平滑、优美的效果。

Description

用于体素模型的平滑方法、装置及电子设备
本专利申请是申请号为202010347774.7专利申请的分案申请,申请日为2020年4月27日,发明名称为“用于体素模型的平滑方法、装置及电子设备”。
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种用于体素模型的平滑方法、装置及电子设备。
背景技术
“体素”是数字数据于三维空间分割上的基本单位,体素用于3D成像、游戏设计、科学数据与医学影像等领域,其在概念上可以类似于二维空间的基本单位-像素,像素用在二维计算机图像的影像数据上。
通过3D体素编辑,可以对3D体素进行拼接,构建出相应的场景模型,如拼接成各种各样的电子化建筑、人物、植物等。举例来说,游戏开发用户可以通过编辑3D体素来构建设计游戏中的各种体素模型或场景,用户只需要用简单的cube盒子(即3D体素的一种表现)进行拼装,类似摆放积木一样,无需理解什么是组成cube盒子的点、线、面,更不需要用户进行代码编程,可以降低游戏开发门槛,面向大众创作者。
目前,通过3D体素所构建的体素模型可能会导致“像素化”或“马赛克”似的视觉效果(如图1所示),在视觉观感上可能无法实现一些专业软件所构建模型的平滑效果。
因此,在利用体素编辑的操作方式制作体素模型之后,不借助额外专门的专业软件如何让体素模型更加平滑而不再呈现出马赛克似的效果,是目前业界亟待解决的难题。
发明内容
有鉴于此,本申请实施例提供了一种用于体素模型的平滑方法、装置及电子设备,用于至少解决目前相关技术中通过体素编辑所实现的体素模型的平滑效果较差的问题。
本申请实施例采用下述技术方案:
本申请实施例提供一种用于体素模型的平滑方法,包括:确定体素模型中待进行平滑处理的第一体素顶点的坐标参数;基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数;根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数;将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数。
本申请实施例还提供一种用于体素模型的平滑装置,包括:目标顶点坐标确定单元,被配置为确定体素模型中待进行平滑处理的第一体素顶点的坐标参数;平滑顶点坐标计算单元,被配置为基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数;法线参数计算单元,被配置为根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数;法线参数替换单元,被配置为将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数。
本申请实施例还提供一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上述的方法。
本申请实施例还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上述的方法
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过改变法线和光照来巧妙地实现平滑的效果,并不会改变体素模型原有的架构,有利于针对体素模型的后续操作。
附图说明
此处所说明的附图用来提供对本申请实施例的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了目前相关技术中的体素模型的一示例的效果示意图;
图2示出了根据本申请实施例的用于体素模型的存储优化方法的一示例的流程图;
图3示出了根据本申请实施例的通过分布式存储来实现用于体素模型的存储优化方法的一示例的流程图;
图4示出了根据本申请实施例的针对体素模型的立方体分层划分的一示例的示意图;
图5A示出了根据本申请实施例的在外部存储器中的用于体素模型的存储优化方法的一示例的流程图;
图5B示出了根据本申请实施例的体素模型中的Box4分布的一示例的效果示意图;
图6示出了根据本申请实施例的在显存中的用于体素模型的存储优化方法的一示例的流程图;
图7示出了对由体素编辑而成的体素模型进行平滑处理的一示例的示意图;
图8示出了根据本申请实施例的用于体素模型的平滑方法的一示例的流程图;
图9示出了根据本申请实施例的对体素模型的进行平滑处理的一示例的示意图;
图10示出了通过应用本申请实施例的平滑和减面之后的体素模型的一示例的效果示意图;
图11A示出了无损减面的一示例的效果示意图;
图11B示出了有损减面的一示例的效果示意图;
图12示出了根据本申请实施例的用于体素模型的平滑方法中的减面处理过程的一示例的流程图;
图13示出了根据本申请实施例的减面合并操作的一示例的效果示意图;
图14示出了根据本申请实施例的用于体素模型的平滑方法中的减面过程的一示例的流程图;
图15A示出了通过目前相关技术中的减面处理而得到的体素模型的一示例的效果示意图;
图15B示出了通过本申请实施例的减面操作所得到的体素模型的一示例的效果示意图;
图16示出了根据本申请实施例的经平滑处理的体素模型的一示例的效果示意图;
图17示出了根据本申请实施例的用于体素模型的存储优化装置的一示例的结构框图;
图18示出了根据本申请实施例的用于体素模型的平滑装置的一示例的结构框图。
具体实施方式
目前,传统方案难以存储超大场景下的体素模型,对体素模型的应用范围和客户群体产生了限制。具体地,在传统方案中,存储每个体素的坐标信息和颜色信息(x、y、z、color),按照每个信息4个字节来计算,占用内存合计=16字节*2.6亿≈3GB,导致在移动端设备上根本无法运行。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施的范围。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个申请中是一致的。
术语“顶点”可以表示体素的各个顶点。术语“法线”可以表示点法线、线法线或面法线,在体素模型中,法线其取决于光照的体素对象的类型,并且光照方向是与法线方向相对应的。
图2示出了根据本申请实施例的用于体素模型的存储优化方法的一示例的流程图。
在步骤210中,获取体素模型中各个体素顶点所分别对应的颜色计算机表示值。这里,颜色计算机表示值可以是颜色信息在计算机中所对应的数值,一般可以采用uint32来表示颜色,其包括RGBA信息。例如,0xfffffff=白色,0xffff0000=红色。
因此,在计算机的存储格式中,如果每个体素顶点的颜色用uint32来存储,会占用4个字节。
在步骤220中,针对不同的颜色计算机表示值分别定义相应的颜色键值,并将所获取的各个颜色计算机表示值分别转换为相应的颜色键值。这里,根据颜色计算机表示值的不同分别定义相应的颜色键值,例如当体素模型中存在4种颜色时,可以分别针对这4种颜色分别定义相应的颜色键值为0、1、2和3。
在步骤230中,根据不同的颜色计算机表示值和相应的颜色键值构建颜色键值表。
示例性地可以得到如下表1所示的颜色键值表:
键值 0 1 2 3
颜色计算机表示值 0xffff0000 0xffffff00 0xff0000ff 0xffffffff
表1
在步骤240中,存储颜色键值表和各个体素顶点所分别对应的颜色键值至内存空间。
这样,相比于现有技术中的采用uint32(4个字节)的颜色计算机表示值的存储方式,能够有效降低体素模型中颜色信息的存储量。
具体地,参照下表2中的内容,当体素模型中的颜色数量(或者,颜色计算表示值的不同数目)不超过28种时,键值占用的内存是1个字节,可以使用byte数据类型来存储相应的键值,节省了3个字节。当体素模型中的颜色数量不超过216种时,键值占用的内存是2个字节,可以使用short数据类型来存储相应的键值,节省了2个字节。
条件 颜色数量≤256 颜色数量≤65536 颜色数量>65536
键值存储方式 使用byte存储 使用short存储 无需构建键值表
占用内存 1字节 2字节 4字节
表2
经过统计单个体素模型的颜色数量一般都不超过256种(占比>98%)。这样,当体素模型的颜色不超过256种的时候,针对体素模型的颜色数据,都只需要通过一个byte(1个字节)进行存储,真正使用的时候再去颜色键值表中去查找,大大的降低了内存消耗量,可以支持超大场景的体素模型。
图3示出了根据本申请实施例的通过分布式存储来实现用于体素模型的存储优化方法的一示例的流程图。
在一些3D体素场景(例如3D体素沙盒游戏)中的模型、建筑中存在大量重复的区块以及体素的坐标都是具有规律性的,通过分布式存储来将这些重复的区块具有的规律性有效的利用起来,便能大量的节省内存。
如图3所示,在步骤310中,按照体素立方体对体素模型进行划分,并确定体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个体素立方体是由设定数量个体素所组成的立方体。这里,设定位置可以是预先定义的,例如对应立方体的主视面的左上边角的体素顶点的位置。
具体地,可以通过体素立方体来将整个模型分成多层存储结构(两层或两层以上)。在本申请实施例的一些示例中,可以将整个模型分为多个Box4,每个Box4又是由4*4*4=64个体素组合而成,这样就分成了两层存储结构。在本申请实施例的另一些示例中,可以将整个模型分为三层存储结构,在模型中包含多个Box32,在Box32中又包含了多个Box4。需说明的是,关于Box(或体素立方体)的设定数量(或边长中所含的体素数量),可以是多样化的,并且可以根据业务需求而进行调整,在此应不加限制。
在步骤320中,针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同。
在步骤320中的判断结果指示存在其中一个或多个体素立方体(也被称为第一体素立方体)中的各个体素顶点的颜色相同时,跳转执行步骤331中的步骤。在步骤320中的判断结果指示存在其中一个或多个体素立方体(也被称为第二体素立方体)中的各个体素顶点的颜色并不相同(即,在体素立方体中存在多种颜色)时,跳转执行步骤333中的步骤。
在步骤331中,判断第一体素立方体是否具有设定数量个体素顶点。也就是说,判断第一体素立方体是否具有完整数量个的体素单元,例如,存在一些位于边缘的体素立方体的边角体素缺失的情况。
在步骤331中的判断结果指示第一体素立方体具有设定数量个体素顶点时,跳转至步骤341。在步骤331中的判断结果指示第一体素立方体不具有设定数量个体素顶点(即,少于设定数量)时,跳转至步骤343。
在步骤341中,存储第一体素立方体的设定位置的体素顶点的坐标参数和第一体素立方体所对应的颜色键值至内存空间。
在步骤343中,存储第一体素立方体中各个体素的标识码和该第一体素立方体所对应的颜色键值至内存空间,每一标识码分别与体素立方体中唯一位置的体素相对应。
在步骤333中,存储所述第二体素立方体中各个体素的标识码和相应的颜色键值至内存空间。
通过本申请实施例,不需要将体素模型中各个体素的三维坐标(x、y、z)都进行存储,只需要存储体素立方体的整体坐标参数(即,立方体设定位置的体素顶点的坐标参数)和颜色值,并且通过标识码来标识体素立方体中的不同体素,可以降低体素模型中各个体素的坐标参数所消耗的内存量。
图4示出了根据本申请实施例的针对体素模型的立方体分层划分的一示例的示意图。
如图4所示,整个模型分为三层存储结构,在模型中包含多个Box32,在Box32中又包含了多个Box4。
结合图3中所描述的分布式存储的方式,只需要存储Box32的整体坐标信息(x、y、z),具体Box4的起始坐标以及Box4中的每个体素坐标,根据在容器中的index(索引值),便可直接计算出每个体素的具体坐标值。
具体地,还可以参照下面表3所描述结合Box4的存储示例:
表3
参照如表3中的示例,当体素立方体(或Box4)中各个体素的颜色完全一样且完整(具有64个体素)时,只需要存储该体素立方体整体(Box4)所对应的颜色值即可。当体素立方体(或Box4)中各个体素的颜色完全一样但不完整(少于64个体素)时,需要存储该体素立方体整体(Box4)所对应的颜色值和各个体素的标识码,每一标识码可以与立方体上唯一位置的体素相对应(例如,64个标识码来分别表示Box4中不同的体素),从而标记出Box4中的哪些体素是缺失的。
在本申请实施例的一些实施方式中,还可以利用分布式存储和数据模板,可以将颜色一样的Box4对象,构建出对象模版,通过键值来可以快速定位到该对象,避免重复构建对象和内存,并可以提高效率。
是否FULL 键值 模板
FULL 颜色 真正的对象(包含数据区)
NOTFULL 颜色+64位整数 真正的对象(包含数据区)
表4
图5A示出了根据本申请实施例的在外部存储器中的用于体素模型的存储优化方法的一示例的流程图。
需说明的是,当用户通过体素编辑操作,在内存中构建出体素模型之后,需要将体素模型生成相应的文件以存储在外部存储器(例如,硬盘等)中,从而便于后期上传至服务器或其他用途。
因此,超大规模的场景除了针对内存空间的优化之外,在文件存储方面也是非常重要的,文件尺寸极致优化同样是需要考虑的问题。这里,文件尺寸小不仅可以减少服务器的存储压力、网络流量,还能提高文件加载、解析效率。
如图5A所示,在步骤510中,按照体素立方体对体素模型进行划分。关于步骤510的细节,可以参照上面参考图3中的步骤310的描述,在此便不赘述。
在步骤520中,遍历体素模型中的各个体素立方体,以识别体素模型中的各个体素立方体的分布是否满足预设的至少一个体素分布规则,每一所述体素分布规则分别被预配置了唯一相对应的体素压缩方式。
在步骤530中,针对满足第一体素分布规则的各个体素立方体,采用与第一体素分布规则相应的体素压缩方式压缩成存储文件。
在步骤540中,将存储文件保存至外部存储器。
在本申请实施例中,可以利用出现相同的体素立方体的规律来进行压缩存储。因为,在体素编辑的场景中会存在大规模重复的现象,例如重复一大片区域都是存储绿色Full的Box4,正常存储方式需要存储各个Box4的信息,但可以通过规则压缩的方式来进一步降低文件的大小。结合如图5B所描述的示例,各个Box4的都相同,可以通过一些压缩方式来降低文件量大小。
在本申请实施例的一个示例中,体素分布规则包括:存在连续分布的具有相同颜色的超过第一设定数量阈值的体素立方体,和/或,存在连续间隔分布的对应两种颜色的超过第二设定数量阈值的体素立方体。
参照下面结合表5中针对Box4的文件优化的示例:
表5
示例性地,在从位置N到位置M连续出现了ID号=X的Box4时,只需要存储“N~M,Box4,X”,而不需要存储各个Box4的ID,可以有效降低文件量。
图6示出了根据本申请实施例的在显存中的用于体素模型的存储优化方法的一示例的流程图。
在对图像进行渲染时,需要利用到DrawCall,其为CPU调用图形编程接口,能够命令GPU(显卡处理器)进行渲染的操作。在每次调用DrawCall之前,CPU需要向GPU发送很多内容,包括数据、状态、命令等。在这一阶段,CPU需要完成很多工作,例如组织数据、检查渲染状态等。而一旦CPU完成了这些准备工作,GPU就可以开始本次的渲染。GPU的渲染能力是很强的,渲染300个和3000个三角网格通常没有什么区别,有效的利用GPU的渲染能力,减少DrawCall的数量,可以有效的提高程序的运行效率。
在3D渲染中,所有物体的形状取决于三维空间中的一个点,这些点进行连接(连接方式分为点、线、面)从而组合成我们所看见的不同形状的三维模型,VertexBuffer就是该模型的顶点数据,称为顶点缓冲区,将顶点缓冲区上传显卡,显卡再通过一些规则进行绘制。
IndexBuffer(索引缓冲区)要配合VertexBuffer进行使用,也就是通过索引缓冲区的数值,通知GPU,使用哪几个点进行绘制。
举例说明,如有以下几个顶点数据(v1,v2,v3,v4,v5)保存在VertexBuffer中,而在indexBuffer中的数据为(014),那么显卡就会把顶点缓冲区中的v1、v2、v5这三个点组成一个三角形进行绘制。
根据渲染需求每个体素顶点在显存中的数据一般由坐标参数(x、y、z)、法线参数(normalX、normalY、normalZ)和颜色参数(R、G、B、A)组成,目前一般用float来表示(占用显存4个字节),合计占用为40个字节。如果超大场景模型具有2.6亿个体素,每个体素由6个面组合而成,每个面4个顶点,计算下来显存的占用是巨大的(例如,即:2.6亿*6*4*40)。
这里,为了支持超大模型或场景,显存也必须做到极致优化。
如图6所示,在步骤610中,依据颜色键值表将所述体素模型中各个体素顶点所分别对应的颜色键值还原成相应的颜色计算机表示值。
在一些示例中,可以是在需要对模型进行渲染时,CPU将颜色键值还原成原始的颜色计算机表示值,并将其传递至显卡处理器。
在步骤620中,将经还原成的各个颜色计算机表示值所对应的颜色与预存储的颜色纹理图阵列进行比对,以确定各个体素顶点的颜色在颜色纹理图阵列中的阵列位置信息。这里,颜色纹理图阵列是由多个颜色纹理图(例如,所有颜色所对应的颜色纹理图)所组成的阵列,例如256*256个颜色,这样所有的颜色都能够在颜色纹理图二维阵列中找到唯一相对应的阵列位置点。
在一些示例中,可以是调用显卡处理器来通过预存储的颜色纹理图阵列来与体素模型中的各种颜色进行比对,从而确定相应的阵列位置信息。
在步骤630中,存储各个体素顶点所对应的阵列位置信息至显存空间,以在针对所述体素模型的颜色渲染阶段进行调用。这样,只需要存储阵列位置信息就可以确定体素顶点相应的颜色,而不需要记录各个体素顶点的颜色信息(RGBA),大幅降低了体素模型数据的显存占用空间。
具体地,可以通过以下步骤将4个float的值(RGBA)降到2个byte:
1)创建一张256*256的一张纹理贴图,把整个模型场景中使用的颜色,每个颜色占用一个像素点上传到这张纹理中,共可容纳65536种颜色。
2)使用byte来表示UV的值,0-256之间,在显卡的shader语言中uv/256来计算出浮点数的UV坐标,这里U可以表示横坐标,V可以表示纵坐标。
3)通过UV去采样这张纹理贴图,可以实现相应颜色的效果。
在本申请实施例的一些实施方式中,还可以使用byte来描述坐标信息以优化显存空间。
为了降低超大模型场景的显存占用,这里可以使用byte来替代float表示坐标的信息,但是byte的的取值范围为-128-127之间。
由于3D体素体系中每个体素有着一定的规律,本发明中将128*128*128个体素作为一个drawCall,再结合图3中的分布式存储,将体素立方体的起始的坐标信息(即,对应设定位置的体素顶点的坐标参数)通过shader的uniform方式传入显卡,再通过显卡的shader语言计算计算出每个体素顶点的真实坐标,例如shaderUniform代表整体的位置的定义为:
vec3 u_vertextPostion;三个float值代表整体的位置信息。
每个顶点的坐标变命令字为
Byte3 a_position;(这个值为-127-128之间)
那么,该点的真正值realPosition为:
realPosition=u_vertextPostion+a_position;
这样,通过体素立方体的起始的坐标信息和每个顶点的相对坐标位置,可以精确地找到各个体素顶点的真实坐标位置。
在本申请实施例的一些示例中,还可以使用byte来描述normal信息(或法线参数)。
在传统的3D渲染中,每个点的normal(法线x、y、z)信息也是用三个float值来表示。为了更节省显存,结合3D体素的特点,在本申请实施例的一些实施方式中,可以使用三个byte来表示法线信息,在显卡的shader语言中,再将其normal/128,得到一个浮点数来表示顶点的normal信息。
在本申请实施例中,可以结合上述三种显存优化方式,将常规的x、y、z、normalX、normalY、normalZ、R、G、G、A占用的40字节压缩到8字节,只占原来的1/5,节省了显存空间。
图7示出了对由体素编辑而成的体素模型进行平滑处理的一示例的示意图。
如图7所示,将黑色实心圈的点(即,701)进行平滑计算,得到了图中空心圈的点(即,703),这样产生了新的顶点,使得原有的规整的体素(或Cube)数据发生了改变,不是真正的Cube了而变成了异型,打破了原来的Cube操作方式,不方便进行二次编辑(例如,无法堆叠新的Cube)。
图8示出了根据本申请实施例的用于体素模型的平滑方法的一示例的流程图。
如图8所示,在步骤810中,确定体素模型中待进行平滑处理的第一体素顶点的坐标参数。
在步骤820中,基于预设平滑算法,计算由第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数。这里,可以采用各种已有的或潜在的平滑计算算法,例如可以使用如图7中所示的计算方法进行平滑处理。
在步骤830中,根据第二体素顶点的坐标参数,计算第二体素顶点的法线参数。
在步骤840中,将第一体素顶点的法线参数替换为第二体素顶点的法线参数。
需说明的是,关于第一体素顶点和第二体素顶点的数量,其可以是一个或多个,例如可以是一个线的两个顶点或一个面上的三个顶点,且都属于本申请的保护范围内。
参照如图9的示例,可以通过以下操作方式来实现平滑效果:
1)可以通过平滑算法将两个点A、B进行平滑,而得到了一个新的点C。
2)计算C点的法线,得到了一个新的法线NC。
3)不修改A、B点的真正位置坐标,只修改A、B点的法线信息为NC。
4)利用光照效果,使得模型看上去是平滑的效果。
在本申请实施例中,通过改变法线和光照来巧妙地实现平滑的效果,其并不会改变体素原有的架构,有利于针对体素模型的后续操作。
需说明的是,在体素模型的平滑过程中,并不应该一味的将所有的面全部进行平滑,并且可以只针对体素模型的角和边进行平滑处理。具体地,可以识别体素模型外表的边部和角部,并将所识别的边部和角部所对应的体素顶点的坐标参数确定为待进行平滑处理的第一体素顶点的坐标参数。
此外,如果单纯经过如图9中所描述的技术方案,将体素模型进行平滑后,体素模型的面数非常的多,轻松超过10万三角面。由于显卡性能限制,无法大批量使用,所以需要将其减面处理。
作为本申请实施例的一些优选实施方式,可以针对体素模型外表的多个体素面进行减面处理。但应理解的是,先进行减面操作后进行平滑处理也是可行的,只要在渲染操作之前完成即可,其都属于本申请所涵盖的保护范围内。
图10示出了通过应用本申请实施例的平滑和减面之后的体素模型的示例。不难看出,当减面到7000面时,体素模型相比于图1中现有的体素模型,能够实现较好的平滑效果,几乎消除了马赛克风格。
需说明的是,减面算法分为无损减面和有损减面,无损减面的最基本原理就是将同一水平面上的点进行合并,但是不影响其显示效果,如下图11A所示,很多点在一个平面上,将其合并,丝毫不影响最终的显示效果和形状。有损减面,则是增加一定的容忍阈值,小于这个阈值的点都可以进行合并,如下图11B所示,即使有很多点不完全在一个平面上,但是由于小于容忍值,但是仍然将其合并了。图11A示出了无损减面的一示例的效果示意图。图11B示出了有损减面的一示例的效果示意图。
图12示出了根据本申请实施例的用于体素模型的平滑方法中的减面处理过程的一示例的流程图。
如图12所示,在步骤1210中,判断在体素模型外表的相邻的第一体素顶点与第二体素顶点各自的法线之间的夹角是否小于夹角阈值。
在步骤1220中,当法线夹角小于夹角阈值时,假设消减第一体素顶点和第二体素顶点中的一者,并判断未被消减的体素顶点与具有被假设消减的体素顶点的各个体素面之间的距离是否均小于距离阈值。
在步骤1230中,当均小于所述距离阈值时,确定对该被假设消减的体素顶点进行消减操作。
在本申请实施例中,预设定夹角阈值和距离阈值,并将两个顶点的法线之间的夹角与夹角阈值对比以确定是否进行假设合并(或消减),最后通过比较未被合并的体素顶点与具有被假设合并的体素顶点的各个体素面之间的距离来确定是否执行顶点合并操作。这样,可以避免将两个方位相差较大的平面进行合并,保障了减面后的模型效果。
图13示出了根据本申请实施例的减面合并操作的一示例的效果示意图。
参照图13的示例,可以先判断P5和P6两点的法线是否小于预设的角度阈值,如果满足条件,再将P5和P6点进行合并成了新的P5+,再计算P5+点到合并前(具有P6点)的T1、T2、T3、T4、T5面的距离,如果距离小于预设的距离阈值,则可以将P5和P6这两个点进行合并。
图14示出了根据本申请实施例的用于体素模型的平滑方法中的减面过程的一示例的流程图。
应理解的是,在减面过程中,不同颜色的点是不可以合并的,在传统的减面算法中,会把这些不同颜色的点设置为不可合并。这样,就会导致本可以合并的面都无法合并了,造成很多的浪费,如图15A中所描述的一样,存在很多三角面,减面效果不够充分。图15A示出了通过目前相关技术中的减面处理而得到的体素模型的一示例的效果示意图。
如图14所示,在步骤1410中,识别体素模型的外表的相邻的体素面之间是否存在颜色交汇处。
在步骤1420中,在颜色交汇处设置辅助体素面,其中辅助体素面与相交的各个体素面之间的夹角大于所述夹角阈值。
在本申请实施例中,不需要定义不同颜色点是不许合并的,只是在颜色交汇的地方设置辅助体素面(例如,垂直体素面),再结合如图12中所描述的减面方法,可以较有效地完成减面操作,且具有较佳的减面效果。
图15B示出了通过本申请实施例的减面操作所得到的体素模型的一示例的效果示意图。如图15B所示,通过设置垂直面,使得在相同颜色的范围区域中不会存在额外的三角面,减掉了更多的面,具有优秀的减面效果。
需说明的是,这些辅助体素面,可以是单纯地仅在减面合并操作中使用,而不能被提交给显卡进行渲染。示例性地,可以是在完成针对体素模型的减面操作之后,消除辅助体素面。
图16示出了根据本申请实施例的经平滑处理的体素模型的一示例的效果示意图。
参照图16中的示例,综合前面讲述的减面过程,在一些应用场景下需要避免误合并一些点,例如,虽然P1和P3法线的数值非常接近,也具备合并的条件,但是其实为了保留圆滑的弧度,而不应该让它们轻易地合并。
因此,可以通过设置权重信息而避免针对体素模型中平滑点的错误合并。具体地,每一所述体素顶点具有针对所述夹角阈值和/或所述距离阈值的校准权重。并且,经平滑处理的体素顶点所对应校准权重可以低于未经平滑处理的体素顶点所对应的校准权重。这样,可以避免平滑点的弧度受到影响,保障了模型的平滑效果。具体地,降低第一和第二体素顶点的关于夹角阈值和/或距离阈值的校准权重。
示例性地,根据平滑的影响点数据,将每个点设置为不同的权重值。示例性地,未经平滑点的权重值为1,平滑的点的权重值设置为0.3。(即P1点的权重为1,P3点的权重为0.3),利用该权重值来对减面处理中的阈值(例如,夹角阈值和/或距离阈值)进行校准,那么现在真正的阈值的公式为:
真正使用的阈值=预设的阈值*权重值
这样,通过权重的影响,P1和P3点就没有那么容易合并,可以保留预期的圆滑效果。
图17示出了根据本申请实施例的用于体素模型的存储优化装置的一示例的结构框图。
如图17所示,用于体素模型的存储优化装置1700包括计算机颜色值获取单元1710、颜色键值配置单元1720、颜色键值表构建单元1730和颜色信息存储单元1740。
计算机颜色值获取单元1710被配置为获取体素模型中的各个体素顶点所分别对应的颜色计算机表示值。
颜色键值配置单元1720被配置为针对不同的颜色计算机表示值分别定义相应的颜色键值,并将所获取的各个颜色计算机表示值分别转换为相应的颜色键值。
颜色键值表构建单元1730被配置为根据所述不同的颜色计算机表示值和相应的颜色键值构建颜色键值表。
颜色信息存储单元1740被配置为存储所述颜色键值表和所述各个体素顶点所分别对应的颜色键值至内存空间。
如上参照图1到图17,对根据本申请实施例的用于体素模型的存储优化方法及装置的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本申请装置的实施例。上面的用于体素模型的平滑装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图18示出了根据本申请实施例的用于体素模型的平滑装置的一示例的结构框图。
如图18所示,用于体素模型的平滑装置1800包括目标顶点坐标确定单元1810、平滑顶点坐标计算单元1820、法线参数计算单元1830和法线参数替换单元1840。
目标顶点坐标确定单元1810被配置为确定体素模型中待进行平滑处理的第一体素顶点的坐标参数。
平滑顶点坐标计算单元1820被配置为基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数。
法线参数计算单元1830被配置为根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数。
法线参数替换单元1840被配置为将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数。
如上参照图1到图18,对根据本申请实施例的用于体素模型的平滑方法及装置的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本申请装置的实施例。上面的用于体素模型的平滑装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种用于通过3D体素构建的体素模型的平滑方法,包括:
确定体素模型中待进行平滑处理的第一体素顶点的坐标参数;
基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数;
根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数;
将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数;
通过替换后的法线参数利用光照效果实现平滑。
2.如权利要求1所述的用于体素模型的平滑方法,其中,确定体素模型中待进行平滑处理的第一体素顶点的坐标参数,具体包括:
识别所述体素模型外表的边部和角部;
将所识别的边部和角部所对应的体素顶点的坐标参数确定为待进行平滑处理的第一体素顶点的坐标参数。
3.如权利要求1所述的用于体素模型的平滑方法,在渲染操作完成之前,先针对所述体素模型外表的多个体素面进行减面处理,再进行平滑处理;或者在渲染操作完成之前,先进行平滑处理后再针对所述体素模型外表的多个体素面进行减面处理。
4.如权利要求3所述的用于体素模型的平滑方法,针对所述体素模型外表的多个体素面进行减面处理,具体包括:
判断在所述体素模型外表的相邻的第一体素顶点与第三体素顶点各自的法线之间的夹角是否小于夹角阈值;
当所述法线夹角小于所述夹角阈值时,假设消减所述第一体素顶点和所述第三体素顶点中的一者,并判断未被消减的体素顶点与具有被假设消减的体素顶点的各个体素面之间的距离是否均小于距离阈值;
当均小于所述距离阈值时,确定对该被假设消减的体素顶点进行消减操作。
5.如权利要求4所述的用于体素模型的平滑方法,其中,每一所述体素顶点具有针对所述夹角阈值和/或所述距离阈值的校准权重,在将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数之后,所述方法还包括:
降低所述第一和第三体素顶点的关于所述夹角阈值和/或所述距离阈值的校准权重。
6.如权利要求3或4所述的用于体素模型的平滑方法,其中,针对所述体素模型外表的多个体素面进行减面处理,具体包括:
识别所述体素模型的外表的相邻的体素面之间是否存在颜色交汇处;
在所述颜色交汇处设置辅助体素面,其中所述辅助体素面与相交的各个体素面之间的夹角大于所述夹角阈值。
7.如权利要求6所述的用于体素模型的平滑方法,在对所述体素模型外表的多个体素面进行减面处理之后,所述方法还包括:消除所述辅助体素面。
8.一种用于通过3D体素构建的体素模型的平滑装置,包括:
目标顶点坐标确定单元,被配置为确定体素模型中待进行平滑处理的第一体素顶点的坐标参数;
平滑顶点坐标计算单元,被配置为基于预设平滑算法,计算由所述第一体素顶点的坐标参数经平滑后所对应的第二体素顶点的坐标参数;
法线参数计算单元,被配置为根据所述第二体素顶点的坐标参数,计算所述第二体素顶点的法线参数;
法线参数替换单元,被配置为将所述第一体素顶点的法线参数替换为所述第二体素顶点的法线参数;
通过替换后的法线参数利用光照效果实现平滑。
9.一种电子设备,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1到7中任一所述的方法。
10.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到7中任一所述的方法。
CN202310800699.9A 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备 Pending CN116797486A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310800699.9A CN116797486A (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010347774.7A CN113643191B (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备
CN202310800699.9A CN116797486A (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010347774.7A Division CN113643191B (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN116797486A true CN116797486A (zh) 2023-09-22

Family

ID=78415323

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310800699.9A Pending CN116797486A (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备
CN202010347774.7A Active CN113643191B (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010347774.7A Active CN113643191B (zh) 2020-04-27 2020-04-27 用于体素模型的平滑方法、装置及电子设备

Country Status (1)

Country Link
CN (2) CN116797486A (zh)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4383585B2 (ja) * 1998-06-30 2009-12-16 シーメンス コーポレイト リサーチ インコーポレイテツド コンピュータグラフィック処理方法
JP2004141514A (ja) * 2002-10-28 2004-05-20 Toshiba Corp 画像処理装置及び超音波診断装置
US6867774B1 (en) * 2002-12-02 2005-03-15 Ngrain (Canada) Corporation Method and apparatus for transforming polygon data to voxel data for general purpose applications
JP4122314B2 (ja) * 2004-06-15 2008-07-23 ザイオソフト株式会社 投影画像処理方法、投影画像処理プログラム、投影画像処理装置
CN102004922B (zh) * 2010-12-01 2012-12-26 南京大学 基于骨架特征的高分辨率遥感影像飞机提取方法
US9082218B2 (en) * 2012-03-23 2015-07-14 Roblox Corporation Method for manipulating three-dimensional voxel data for on-screen visual
WO2015006790A1 (en) * 2013-07-18 2015-01-22 A.Tron3D Gmbh Method of capturing three-dimensional (3d) information on a structure
US10019784B2 (en) * 2015-03-18 2018-07-10 Toshiba Medical Systems Corporation Medical image processing apparatus and method
CN107316337B (zh) * 2016-04-20 2020-11-10 网易(杭州)网络有限公司 顶点法线的处理方法及装置
CN107689076B (zh) * 2017-08-28 2018-09-04 哈尔滨理工大学 一种用于虚拟手术系统切割时的高效渲染方法
CN107895401A (zh) * 2017-11-23 2018-04-10 塔普翊海(上海)智能科技有限公司 三维模型的数据简化系统及其简化方法和应用
CN108537718B (zh) * 2018-04-12 2022-12-02 长沙景美集成电路设计有限公司 Gpu中一种实现点图元反走样的装置和方法
CN109189725B (zh) * 2018-07-23 2020-09-18 广州都市圈网络科技有限公司 面向规则建筑物的obj文件无损压缩方法
US10650587B2 (en) * 2018-09-07 2020-05-12 Canon U.S.A., Inc. Isosurface generation method and visualization system
CN109919827A (zh) * 2019-02-22 2019-06-21 搜游网络科技(北京)有限公司 一种图形绘制方法、装置及计算机可读介质、设备

Also Published As

Publication number Publication date
CN113643191A (zh) 2021-11-12
CN113643191B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
KR102527255B1 (ko) 3차원 메쉬들의 직교-투사-기반 텍스처 아틀라스 패킹
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US20070018994A1 (en) Texture encoding apparatus, texture decoding apparatus, method, and program
US20240078740A1 (en) Compressed ray direction data in a ray tracing system
CN112347546A (zh) 基于轻量级设备的bim渲染方法、设备和计算机可读存储介质
US20200026516A1 (en) Systems and Methods For Rendering Vector Data On Static And Dynamic-Surfaces Using Screen Space Decals And A Depth Texture
CN111243094B (zh) 一种基于点灯法的三维模型精确体素化方法
CN115984506A (zh) 建立模型的方法和相关装置
CN113570691B (zh) 用于体素模型的存储优化方法、装置及电子设备
Choe et al. Random accessible mesh compression using mesh chartification
CN113643191B (zh) 用于体素模型的平滑方法、装置及电子设备
CN114119831A (zh) 积雪模型的渲染方法、装置、电子设备及可读介质
CN112837416A (zh) 基于三角剖分的多边形渲染方法、装置及存储介质
CN117541744B (zh) 一种城市级实景三维图像的渲染方法及装置
US11488347B2 (en) Method for instant rendering of voxels
US20230269357A1 (en) Stereoscopic Graphics Processing
CN111243073B (zh) 一种规则栅格的相交加速方法、装置及计算机存储介质
WO2023236645A1 (zh) 光照信息加载方法、装置、计算机设备和存储介质
TWI719379B (zh) 光線追蹤方法與電腦程式產品
WO2023179710A1 (zh) 编码方法及终端
CN117541744A (zh) 一种城市级实景三维图像的渲染方法及装置
CN117851704A (zh) 一种大体量模型加载的方法、装置、设备及介质
FI117579B (fi) Menetelmä, laite ja tietokoneohjelma tietokoneavusteisen polygonimallin prosessointiin
CN114037791A (zh) 一种基于webgl的三维模型渲染显示系统及使用方法

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