CN113570691B - 用于体素模型的存储优化方法、装置及电子设备 - Google Patents
用于体素模型的存储优化方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113570691B CN113570691B CN202010347773.2A CN202010347773A CN113570691B CN 113570691 B CN113570691 B CN 113570691B CN 202010347773 A CN202010347773 A CN 202010347773A CN 113570691 B CN113570691 B CN 113570691B
- Authority
- CN
- China
- Prior art keywords
- voxel
- cube
- model
- color
- voxels
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种用于体素模型的存储优化方法、装置及电子设备,在该方法中,按照体素立方体对体素模型进行划分,并确定体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个体素立方体是由设定数量个体素所组成的立方体;针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同;当存在第一体素立方体中均具有相同颜色时,判断第一体素立方体是否具有设定数量个体素;当第一体素立方体具有设定数量个体素时,存储第一体素立方体的设定位置的体素顶点的坐标参数和第一体素立方体所对应的颜色至内存空间。由此,降低了体素模型的内存占用量,并可以支持超大场景或模型。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种用于体素模型的存储优化方法、装置及电子设备。
背景技术
“体素”是数字数据于三维空间分割上的基本单位,体素用于3D成像、游戏设计、科学数据与医学影像等领域,其在概念上可以类似于二维空间的基本单位-像素,像素用在二维计算机图像的影像数据上。
通过3D体素编辑,可以对3D体素进行拼接,构建出相应的场景模型,如可以拼接成各种各样的电子化建筑、人物、植物等。举例来说,游戏开发用户可以通过编辑3D体素来构建设计游戏中的各种体素模型或场景,用户只需要用简单的cube盒子(即3D体素的一种表现)进行拼装,类似摆放积木一样,无需理解什么是组成cube盒子的点、线、面,更不需要用户进行代码编程,可以降低游戏开发门槛,面向大众创作者。
目前,传统方案难以存储超大场景下的体素模型,对体素模型的应用范围和客户群体产生了限制。具体地,在传统方案中,存储每个体素的坐标信息和颜色信息(x、y、z、color),按照每个信息4个字节来计算,占用内存合计=16字节*2.6亿≈3GB,导致在移动端设备上根本无法运行。
针对上述问题,目前业界暂无较佳的解决方案。
发明内容
有鉴于此,本申请实施例提供了一种用于体素模型的存储优化方法、装置及电子设备,用于至少解决目前相关技术中难以存储和应用超大场景的体素模型的问题。
本申请实施例采用下述技术方案:
本申请实施例提供一种用于体素模型的存储优化方法,包括:按照体素立方体对所述体素模型进行划分,并确定所述体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个所述体素立方体是由设定数量个体素所组成的立方体;针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同;当存在第一体素立方体中均具有相同颜色时,判断所述第一体素立方体是否具有所述设定数量个体素;当所述第一体素立方体具有所述设定数量个体素时,存储所述第一体素立方体的所述设定位置的体素顶点的坐标参数和所述第一体素立方体所对应的颜色至内存空间。
本申请实施例还提供一种用于体素模型的存储优化装置,包括:体素立方坐标确定单元,被配置为按照体素立方体对所述体素模型进行划分,并确定所述体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个所述体素立方体是由设定数量个体素所组成的立方体;立方体素颜色判断单元,被配置为针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同;立方体素数量判断单元,被配置为当存在第一体素立方体中均具有相同颜色时,判断所述第一体素立方体是否具有所述设定数量个体素;立方体素信息存储单元,被配置为当所述第一体素立方体具有所述设定数量个体素时,存储所述第一体素立方体的所述设定位置的体素顶点的坐标参数和所述第一体素立方体所对应的颜色至内存空间。
本申请实施例还提供一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上述的方法。
本申请实施例还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上述的方法
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
按照含设定数量个体素的体素立方体来划分体素模型,并确定体素模型中的各个体素立方体的对应设定位置的体素顶点的坐标参数,在体素立方体中的颜色都相同且具有完整数量的体素时,可以仅存储该体素立方体的设定位置的体素顶点的坐标参数(其可用于表达该体素立方体的坐标位置)和相应的颜色,而不需要存储立方体中各个体素的坐标和颜色参数,有效降低了体素模型的内存空间占用量,并可以支持超大场景下的体素模型。
附图说明
此处所说明的附图用来提供对本申请实施例的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了目前相关技术中的体素模型的一示例的效果示意图;
图2示出了根据本申请实施例的用于体素模型的存储优化方法的一示例的流程图;
图3示出了根据本申请实施例的通过分布式存储来实现用于体素模型的存储优化方法的一示例的流程图;
图4示出了根据本申请实施例的针对体素模型的立方体分层划分的一示例的示意图;
图5A示出了根据本申请实施例的在外部存储器中的用于体素模型的存储优化方法的一示例的流程图;
图5B示出了根据本申请实施例的体素模型中的Box4分布的一示例的效果示意图;
图6示出了根据本申请实施例的在显存中的用于体素模型的存储优化方法的一示例的流程图;
图7示出了对由体素编辑而成的体素模型进行平滑处理的一示例的示意图;
图8示出了根据本申请实施例的用于体素模型的平滑方法的一示例的流程图;
图9示出了根据本申请实施例的对体素模型的进行平滑处理的一示例的示意图;
图10示出了通过应用本申请实施例的平滑和减面之后的体素模型的一示例的效果示意图;
图11A示出了无损减面的一示例的效果示意图;
图11B示出了有损减面的一示例的效果示意图;
图12示出了根据本申请实施例的用于体素模型的平滑方法中的减面处理过程的一示例的流程图;
图13示出了根据本申请实施例的减面合并操作的一示例的效果示意图;
图14示出了根据本申请实施例的用于体素模型的平滑方法中的减面过程的一示例的流程图;
图15A示出了通过目前相关技术中的减面处理而得到的体素模型的一示例的效果示意图;
图15B示出了通过本申请实施例的减面操作所得到的体素模型的一示例的效果示意图;
图16示出了根据本申请实施例的经平滑处理的体素模型的一示例的效果示意图;
图17示出了根据本申请实施例的用于体素模型的存储优化装置的一示例的结构框图;
图18示出了根据本申请实施例的用于体素模型的平滑装置的一示例的结构框图。
具体实施方式
目前,通过3D体素所构建的体素模型可能会导致“像素化”或“马赛克”似的视觉效果(如图1所示),在视觉观感上可能无法实现一些专业软件所构建模型的平滑效果。
因此,在利用体素编辑的操作方式制作体素模型之后,不借助额外专门的专业软件如何让体素模型更加平滑而不再呈现出马赛克似的效果是目前业界亟待解决的难题。该难题的解决,既能降低用户制作门槛,又能展现出精美的画面。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施的范围。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个申请中是一致的。
术语“顶点”可以表示体素的各个顶点。术语“法线”可以表示点法线、线法线或面法线,在体素模型中,法线其取决于光照的体素对象的类型,并且光照方向是与法线方向相对应的。
图2示出了根据本申请实施例的用于体素模型的存储优化方法的一示例的流程图。
在步骤210中,获取体素模型中各个体素顶点所分别对应的颜色计算机表示值。这里,颜色计算机表示值可以是颜色信息在计算机中所对应的数值,一般可以采用uint32来表示颜色,其包括RGBA信息。例如,0xffffffff=白色,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中,存储第一体素立方体的设定位置的体素顶点的坐标参数和第一体素立方体所对应的颜色至内存空间。这里,可以结合图2中的示例,在内存空间中所存储的颜色参数为颜色键值(而不是原始的颜色计算机表示值),可以进一步优化体素模型的内存空间。
在步骤343中,存储第一体素立方体中各个体素的标识码和该第一体素立方体所对应的颜色至内存空间,每一标识码分别与体素立方体中唯一位置的体素相对应。
在步骤333中,存储所述第二体素立方体中各个体素的标识码和相应的颜色至内存空间。
通过本申请实施例,不需要将体素模型中各个体素的三维坐标(x、y、z)都进行存储,只需要存储体素立方体的整体坐标参数(即,立方体设定位置的体素顶点的坐标参数)和颜色值,并且通过标识码(例如,2进制的位码)来标识体素立方体中的不同体素,可以降低体素模型中各个体素的坐标参数所消耗的内存量。
图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
参照如表4中的示例,当颜色一样的第一体素立方体具有设定数量个体素(即,为FULL)时,针对第一体素立方体的颜色构建相应的第一对象模板,并生成针对第一对象模板的第一模板键值;或者,在另一种情况下,当第一体素立方体不具有设定数量个体素(即,为NOTFULL)时,针对第一体素立方体的颜色和64位整数(或,64个标识码)来构建相应的第二对象模板,并生成针对第二对象模板的第二模板键值。这样,针对不同情况的第一体素立方体构建不同的对象模板,且可选地,对象模板还可以是被存储在非内存空间中。进而,可以将针对第一体素立方体的第一模板键值或第二模板键值存储至内存空间,更能降低体素模型的内存空间占用量。
图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中的数据为(0 1 4),那么显卡就会把顶点缓冲区中的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;
这样,通过体素立方体的起始的坐标信息和每个顶点的相对坐标位置,可以精确地找到各个体素顶点的真实坐标位置。
在本申请实施例的一些示例中,还可以对法线参数进行压缩,以进一步优化显存空间。
具体地,可以获取分别针对体素模型中的各个体素顶点的法线参数集,并按照预设的法线参数转换规则来将各个体素顶点的法线参数集分别转换为相应的法线压缩值,进而存储体素模型的各个体素顶点的法线压缩值至显存空间。
需说明的是,在传统的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,对根据本申请实施例的用于体素模型的平滑方法及装置的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本申请装置的实施例。上面的用于体素模型的平滑装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种用于体素模型的存储优化方法,包括:
按照体素立方体对所述体素模型进行划分,并确定所述体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个所述体素立方体是由设定数量个体素所组成的立方体;
针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同;
当存在第一体素立方体中均具有相同颜色时,判断所述第一体素立方体是否具有所述设定数量个体素;
当所述第一体素立方体具有所述设定数量个体素时,存储所述第一体素立方体的所述设定位置的体素顶点的坐标参数和所述第一体素立方体所对应的颜色至内存空间;
当所述第一体素立方体不具有所述设定数量个体素时,所述方法还包括:
存储所述第一体素立方体中各个体素的标识码和该第一体素立方体所对应的颜色至内存空间,每一标识码分别与所述体素立方体中唯一位置的体素相对应。
2.如权利要求1所述的用于体素模型的存储优化方法,当存在第二体素立方体中存在多种颜色的体素顶点时,所述方法还包括:
存储所述第二体素立方体中各个体素的标识码和相应的颜色至内存空间,每一标识码分别与所述体素立方体中唯一的体素相对应。
3.如权利要求1所述的用于体素模型的存储优化方法,在按照体素立方体对所述体素模型进行划分之后,所述方法还包括:
遍历体素模型中的各个体素立方体,以识别所述体素模型中的各个体素立方体的分布是否满足预设的至少一个体素分布规则,每一所述体素分布规则分别被预配置了唯一相对应的体素压缩方式;
针对满足第一体素分布规则的各个体素立方体,采用与所述第一体素分布规则相应的体素压缩方式压缩成存储文件;
将所述存储文件保存至外部存储器。
4.如权利要求1所述的用于体素模型的存储优化方法,其中,
当所述第一体素立方体具有所述设定数量个体素时,所述方法还包括:
针对所述第一体素立方体的所述设定位置的体素顶点的坐标参数和颜色构建相应的第一对象模板;以及
生成针对所述第一对象模板的第一模板键值;
或者,当所述第一体素立方体不具有所述设定数量个体素时,所述方法还包括:
针对所述第一体素立方体中的各个体素、所述设定位置的体素顶点的坐标参数和颜色构建相应的第二对象模板;以及
生成针对所述第二对象模板的第二模板键值;
其中,存储所述第一体素立方体的所述设定位置的体素顶点的坐标参数和所述第一体素立方体所对应的颜色至内存空间,具体包括:
将针对所述第一体素立方体的所述第一模板键值或第二模板键值存储至内存空间。
5.如权利要求1所述的用于体素模型的存储优化方法,还包括:
获取体素模型中各个体素顶点所分别对应的颜色计算机表示值;
针对不同的颜色计算机表示值分别定义相应的颜色键值,并将所获取的各个颜色计算机表示值分别转换为相应的颜色键值;
根据所述不同的颜色计算机表示值和相应的颜色键值构建颜色键值表;
存储所述颜色键值表和所述各个体素顶点所分别对应的颜色键值至内存空间。
6.如权利要求5所述的用于体素模型的存储优化方法,还包括:
依据所述颜色键值表将所述体素模型中各个体素顶点所分别对应的颜色键值还原成相应的颜色计算机表示值;
将经还原成的各个颜色计算机表示值所对应的颜色与预存储的颜色纹理图阵列进行比对,以确定各个体素顶点的颜色在所述颜色纹理图阵列中的阵列位置信息;
存储各个体素顶点所对应的阵列位置信息至显存空间,以在针对所述体素模型的颜色渲染阶段进行调用。
7.如权利要求1所述的用于体素模型的存储优化方法,还包括:
针对所述体素模型中的每一体素立方体,将该体素立方体中的设定位置的体素顶点相对应的坐标参数和该体素立方体中的各个体素顶点与所述设定位置的体素顶点之间的相对位置存储至显存空间,以使得在进行渲染时通过所述设定位置的体素顶点的坐标参数和各个所述相对位置来确定该体素立方体中的各个体素顶点的坐标参数。
8.如权利要求1所述的用于体素模型的存储优化方法,还包括:
获取分别针对所述体素模型中的各个体素顶点的法线参数集;
按照预设的法线参数转换规则,将所述各个体素顶点的法线参数集分别转换为相应的法线压缩值;
存储所述体素模型的所述各个体素顶点的法线压缩值至显存空间。
9.一种用于体素模型的存储优化装置,包括:
体素立方坐标确定单元,被配置为按照体素立方体对所述体素模型进行划分,并确定所述体素模型中各个体素立方体的对应设定位置的体素顶点的坐标参数,每一个所述体素立方体是由设定数量个体素所组成的立方体;
立方体素颜色判断单元,被配置为针对各个体素立方体,判断该体素立方体中各个体素顶点的颜色是否都相同;
立方体素数量判断单元,被配置为当存在第一体素立方体中均具有相同颜色时,判断所述第一体素立方体是否具有所述设定数量个体素;
立方体素信息存储单元,被配置为当所述第一体素立方体具有所述设定数量个体素时,存储所述第一体素立方体的所述设定位置的体素顶点的坐标参数和所述第一体素立方体所对应的颜色至内存空间;当所述第一体素立方体不具有所述设定数量个体素时,存储所述第一体素立方体中各个体素的标识码和该第一体素立方体所对应的颜色至内存空间,每一标识码分别与所述体素立方体中唯一位置的体素相对应。
10.一种电子设备,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1到8中任一所述的方法。
11.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到8中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310693301.6A CN116721193A (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、电子设备及可读存储介质 |
CN202010347773.2A CN113570691B (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010347773.2A CN113570691B (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、装置及电子设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310693301.6A Division CN116721193A (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113570691A CN113570691A (zh) | 2021-10-29 |
CN113570691B true CN113570691B (zh) | 2023-07-25 |
Family
ID=78157848
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010347773.2A Active CN113570691B (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、装置及电子设备 |
CN202310693301.6A Pending CN116721193A (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、电子设备及可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310693301.6A Pending CN116721193A (zh) | 2020-04-27 | 2020-04-27 | 用于体素模型的存储优化方法、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113570691B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114627221B (zh) * | 2021-12-08 | 2023-11-10 | 北京蓝亚盒子科技有限公司 | 一种场景渲染方法、装置及运行器、可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986205A (zh) * | 2018-06-08 | 2018-12-11 | 广州虎牙信息科技有限公司 | 一种绘制体素模型的方法、装置、设备和存储介质 |
CN110276829A (zh) * | 2018-06-15 | 2019-09-24 | 北京京东尚科信息技术有限公司 | 通过多尺度体素哈希处理的三维表示 |
CN110599391A (zh) * | 2019-06-17 | 2019-12-20 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
-
2020
- 2020-04-27 CN CN202010347773.2A patent/CN113570691B/zh active Active
- 2020-04-27 CN CN202310693301.6A patent/CN116721193A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986205A (zh) * | 2018-06-08 | 2018-12-11 | 广州虎牙信息科技有限公司 | 一种绘制体素模型的方法、装置、设备和存储介质 |
CN110276829A (zh) * | 2018-06-15 | 2019-09-24 | 北京京东尚科信息技术有限公司 | 通过多尺度体素哈希处理的三维表示 |
CN110599391A (zh) * | 2019-06-17 | 2019-12-20 | 搜游网络科技(北京)有限公司 | 一种图形绘制方法、装置及计算机可读介质、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113570691A (zh) | 2021-10-29 |
CN116721193A (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10249087B2 (en) | Orthogonal-projection-based texture atlas packing of three-dimensional meshes | |
US8482560B2 (en) | Image forming techniques | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
US20070018994A1 (en) | Texture encoding apparatus, texture decoding apparatus, method, and program | |
CN112347546A (zh) | 基于轻量级设备的bim渲染方法、设备和计算机可读存储介质 | |
Strugar | Continuous distance-dependent level of detail for rendering heightmaps | |
US10074211B2 (en) | Method and device for establishing the frontier between objects of a scene in a depth map | |
US20200026516A1 (en) | Systems and Methods For Rendering Vector Data On Static And Dynamic-Surfaces Using Screen Space Decals And A Depth Texture | |
CN115984506A (zh) | 建立模型的方法和相关装置 | |
CN113570691B (zh) | 用于体素模型的存储优化方法、装置及电子设备 | |
US9607435B2 (en) | Method for rendering an image synthesis and corresponding device | |
CN112843700B (zh) | 地形图像的生成方法、装置、计算机设备和存储介质 | |
CN116261740A (zh) | 基于每个信道压缩纹理数据 | |
CN113643191B (zh) | 用于体素模型的平滑方法、装置及电子设备 | |
US20180137671A1 (en) | Out-of-core point rendering with dynamic shapes | |
CN115049531A (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
CN114119831A (zh) | 积雪模型的渲染方法、装置、电子设备及可读介质 | |
CN115082609A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
CN112837416A (zh) | 基于三角剖分的多边形渲染方法、装置及存储介质 | |
US11488347B2 (en) | Method for instant rendering of voxels | |
WO2024021089A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2023179710A1 (zh) | 编码方法及终端 | |
CN117456079A (zh) | 场景渲染方法、装置、设备、存储介质及程序产品 | |
CN116934938A (zh) | 三维模型纹理处理方法、设备和存储介质 | |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |