CN116402936A - 一种基于八叉树的透明渲染复杂场景深度估计方法和装置 - Google Patents
一种基于八叉树的透明渲染复杂场景深度估计方法和装置 Download PDFInfo
- Publication number
- CN116402936A CN116402936A CN202310379686.9A CN202310379686A CN116402936A CN 116402936 A CN116402936 A CN 116402936A CN 202310379686 A CN202310379686 A CN 202310379686A CN 116402936 A CN116402936 A CN 116402936A
- Authority
- CN
- China
- Prior art keywords
- octree
- scene depth
- node
- depth estimation
- scene
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000009877 rendering Methods 0.000 title claims abstract description 57
- 238000004364 calculation method Methods 0.000 claims abstract description 11
- 238000010276 construction Methods 0.000 claims abstract description 8
- 238000005070 sampling Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 8
- 239000013598 vector Substances 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 5
- 238000002156 mixing Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 235000020004 porter Nutrition 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 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/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于八叉树的透明渲染复杂场景深度估计方法和装置,该方法利用八叉树空间划分的收敛性进行场景表面近似,在八叉树代理数据结构的构建阶段,首先对场景进行八叉树划分,将叶子节点中的三角面片集合向节点轴对齐包围盒的各面投影,采样估算非空叶子节点所处空间的场景深度;其次依次应用自底向上和自顶向下的遍历,进行八叉树节点的局部场景深度和全局场景深度估计;最后实时运行时,利用八叉树代理数据结构,执行基于视点的快速查询,检索当前视点下场景最大深度的估值,进行透明效果绘制。本发明计算开销低,可应用于多种类型透明绘制框架,可实时动态适应视点变化,为高质量、顺序无关的复杂数字场景透明渲染提供解决方案。
Description
技术领域
本发明涉及计算机图形学三维实时显示领域,尤其涉及一种基于八叉树的透明渲染复杂场景深度估计方法和装置。
背景技术
透明渲染是可视化绘制的重要内容,正确合理地表现场景中的透明效果,可以突显场景结构,解释隐藏细节,同时维持次重要的环境背景信息。场景透明渲染有着广泛的需求,包括自然对象真实感绘制、数字模型结构展示、流场矢量可视化、自动驾驶仿真车体轨迹绘制、脑神经元连接图等。
Porter和Duff首次提出了透明度混合(Alpha Blending)方法,绘制过程中,新的片元(Fragment)被合成到RGB三元素中,存储到帧缓存。由于其实现简单、性能优良以及得到了图形规范和硬件厂商的广泛支持,Alpha Blending已成为当前实时应用中,透明绘制的实际标准。但是,该方法在场景元素级排序,容易出现失效情形,造成画面合成错误。
Everitt提出的深度剥离技术是一种多遍(Pass)渲染方法,需要两个深度缓存,其中之一保存前一个渲染遍的深度值。当第i遍渲染时,与第i-1遍的深度值进行比较,得到对每个像素产生贡献的第i近的渲染层。由于该方法采用多遍绘制,性能难以满足复杂场景的实时渲染需要。Carpenter提出了一种图像空间方法,使用A-Buffer数据结构,保存对屏幕每个像素产生贡献的所有图元,在随后的处理中进行深度排序及颜色混合。这种方法由于存储需求及性能原因,主要应用于离线渲染。Yang等在GPU(Graphics Processing Unit,图形处理器)上为每个像素应用变长的链表(Per-Pixel Linked List)存储对其有贡献的图元集合,之后进行排序,执行混合操作。
由于透明效果本身具有模糊属性,对遮挡关系复杂、深度层次高的场景执行精确绘制不仅会降低性能,还会造成过模糊(Overblurring)现象,考虑透明效果这一固有的特性,大量近似透明渲染方法被提出。K-Buffer技术基于链表方法,但不保存完整图元集,而仅存储K个最近的图元,当有高于数目K的图元覆盖到同一像素时,采用启发式的策略合并图元进行近似。自适应透明(Adaptive Transparency)在K-Buffer方法的基础上,为每个像素存储透明度函数的近似,使用第二个渲染遍,应用该近似进行Alpha混合操作。Maule等提出了混合透明(Hybrid Transparency),利用K-Buffer聚集图元,根据深度和透明度执行启发式地合并。这种方法是顺序无关的,但是对深度数目大的场景难以正确处理。多层透明度混合(Multi-Layer Alpha Blending)是一类单遍技术,沿视线方向应用固定数目的逐像素透明度层做近似。当对应固定数目透明层的存储空间被占满后,则创建新层,再选出两个临近层合并。随机透明(Stochastic Transparency)使用加权技术,基于透明度数值混合或舍弃片元。加权混合顺序无关的透明(Weighted Blended Order-IndependentTransparency)提出使用基于遮挡和距离视点远近的权重,进行片元的合并。随机分层透明度混合(Stochastic Layered Alpha Blending)和现象透明(PhenomenologicalTransparency)对每个像素应用多采样技术进行透明渲染。这类透明绘制方法合理地进行了透明效果的近似,但运行时的复杂近似计算,影响了方法的实时性能。
总体上,前述的典型方法分属深度剥离族系和A-Buffer族系两类。但无论哪类方法,其高效实现均依赖视口内场景的最大深度。该参数表征了场景的属性,决定了透明绘制所需的计算资源开销和存贮资源开销。
现有实现方案在解决场景最大深度值计算时,或者采用运行时高开销的近似,或者简单的预定义固定值,计算效率与场景适应性差。本发明致力于设计一种满足大规模复杂场景的深度代理机制,实时动态适应视点状态,可普遍应用于多种类型透明绘制框架,为高质量、顺序无关(Order Independent Transparency,OIT)的透明渲染提供优化的解决方案。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于八叉树的透明渲染复杂场景深度估计方法和装置。
本发明的目的是通过以下技术方案来实现的:本发明实施例第一方面提供了一种基于八叉树的透明渲染复杂场景深度估计方法,包括以下步骤:
(1)对场景进行八叉树空间划分,将场景的三角形面片分配到八叉树叶子节点,并进行采样计算,将结果保存到叶子节点;
(2)根据所述步骤(1)中完成非空叶子节点采样的八叉树,采用局部-全局构建策略,计算八叉树中所有节点的全局场景深度估计,以构建八叉树场景深度估计代理数据结构;
(3)实时遍历所述步骤(2)构建的八叉树场景深度估计代理数据结构,检索视点所在空间位置所处的场景全局深度估计。
可选地,所述步骤(1)包括以下子步骤:
(1.1)采用轴对齐包围盒空间结构根据待渲染的透明对象空间位置数据生成包围盒;
(1.2)以所述步骤(1.1)生成的包围盒为根节点,每次将当前节点划分为8个子节点,判断当前节点是否满足预设的划分终止条件,若满足,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分;
(1.3)对所述步骤(1.2)的叶子节点中的三角形面片进行采样计算,以获取该节点所处空间的场景深度估计,并保存至叶子节点。
可选地,所述步骤(1.2)中所述判断当前节点是否满足预设的划分终止条件具体包括:判断当前节点所处的八叉树层深是否大于等于预设的最大值或当前节点的L2范数是否小于等于预设的L2范数阈值,若是,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分。
可选地,所述步骤(1.3)具体为:首先将所述步骤(1.2)的叶子节点三角形面片集合中的每一个面片,逐一沿轴向投影到包围盒的对应表面;然后对投影到包围盒表面中的面片集合做相交测试,保留最大叠加计数,作为该节点对应方向的场景深度估计,并保存至叶子节点。
可选地,所述步骤(2)包括以下子步骤:
(2.1)采用所述步骤(1)中的方法对八叉树的所有节点中的三角形面片进行采样计算,以获取所有节点所处空间的局部场景深度估计;
(2.2)基于所述步骤(2.1)获取的所有节点的局部场景深度估计获取所有节点在整个场景中的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
可选地,所述步骤(2.1)包括以下子步骤:
(2.1.1)获取八叉树的空叶子节点的局部场景深度,空叶子节点的局部场景深度估计为0;
(2.1.2)根据所述步骤(1)保存到叶子节点的场景深度估计获取八叉树的非空叶子节点的局部场景深度;
(2.1.3)自底向上对八叉树进行遍历,沿轴向,采用所述步骤(1)中的方法对八叉树的中间节点的所有子节点中的三角形面片进行采样计算,以获取当前中间节点的所有子节点的场景深度估计,将上下两层沿轴向对齐的两个子节点的场景深度估计相加以获取每组子节点的场景深度估计,根据每组子节点的场景深度估计获取当前中间节点的局部场景深度估计;
(2.1.4)重复所述步骤(2.1.3),直至遍历过程到达根节点,以获取所有中间节点的局部场景深度估计。
可选地,所述步骤(2.2)包括以下子步骤:
(2.2.1)自顶向下对八叉树进行递归遍历,将外部全局场景深度作为参数传递给下一层级,初始调用时,根节点各个面的外部全局场景深度均为0;
(2.2.2)根据步骤(2.2.1)获取节点当前面邻接的外部全局场景深度,将该外部全局场景深度与所述步骤(2.1)获取的节点的局部场景深度估计进行累加,以获取节点当前面沿相应方向的全局场景深度估计;
(2.2.3)根据所述步骤(1)中的八叉树子节点空间布局结构更新所有子节点沿轴向各面的外部全局场景深度;
(2.2.4)重复所述步骤(2.2.1)-所述步骤(2.2.3),直至获取所有节点各面沿轴向正负方向的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
可选地,所述步骤(3)包括以下子步骤:
(3.1)判断视点是否位于八叉树的外部,若视点位于八叉树的外部,则直接进入步骤(3.2);否则,基于视点位置pv从八叉树根节点开始自顶向下对八叉树进行遍历,以确定视点所处的节点;
(3.2)根据视点朝向与所述步骤(3.1)获取的节点的六个表面的表面法矢获取视点与相对应表面的余弦值,根据余弦值确定主方向;
(3.3)根据所述步骤(3.2)确定的主方向对所述步骤(2)构建的八叉树场景深度估计代理数据结构进行索引,以获取视点位置pv所在节点中对应表面记录的全局场景深度估计。
本发明实施例第二方面提供了一种基于八叉树的透明渲染复杂场景深度估计装置,包括一个或多个处理器,用于实现上述的基于八叉树的透明渲染复杂场景深度估计方法。
本发明实施例第三方面提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,用于实现上述的基于八叉树的透明渲染复杂场景深度估计方法。
本发明的有益效果是,本发明基于八叉树空间结构内在的收敛属性,将八叉树划分作为原始场景的空间代理,在构建阶段,由于是离线模式,其开销对运行时的性能影响不计;在渲染阶段,基于高效的八叉树空间访问属性,实时遍历八叉树场景深度估计代理数据结构,可以检索视点所在空间位置处的场景深度参数,与现有的运行时复杂的近似处理方法相比,具有计算开销低的优点;本发明能够动态适应视点变化,实现高效率的、自由漫游状态的场景透明渲染;能够被方便地整合到现有主流透明渲染算法中,提升所合成的透明渲染画面品质和算法性能。
附图说明
图1是本发明的八叉树空间划分及相应的层级结构示意图;其中,图1中的(a)为八叉树划分空间结构示意图,图1中的(b)为八叉树空间划分所对应的逻辑层级示意图;
图2是本发明的八叉树叶子节点中的三角形面片集沿y轴正负方向投影到轴对齐包围盒上/下表面的示意图;
图3是本发明的八叉树子节点的空间布局示意图;
图4是本发明中以二维形式表示的当前节点在全局层级结构中的空间位置关系示意图;
图5是本发明的根据视点位置和朝向确定主方向的示意图;
图6是本发明的基于八叉树的透明渲染复杂场景深度估计装置的一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
本发明的基于八叉树的透明渲染复杂场景深度估计方法,具体包括以下步骤:
(1)对场景进行八叉树空间划分,将场景的三角形面片(即三角形图元)分配到八叉树叶子节点,并进行采样计算,将结果保存到叶子节点。
本实施例中,八叉树结构是一种非规则、自适应场景复杂度的空间划分结构。应用八叉树对场景进行划分的过程中,随着划分深度的增加,生成的八叉树形状逐渐向场景表面收敛,能够对场景几何特征有效逼近。基于八叉树空间结构这一内在的收敛属性,本实施例中将八叉树划分作为原始场景的空间代理(Proxy),用于透明渲染时的场景深度估计。
(1.1)采用轴对齐包围盒空间结构,根据待渲染的透明对象空间位置数据生成包围盒。
本实施例中,采用轴对齐包围盒(Axis Aligned Bound Box,AABB)空间结构,根据待渲染的透明对象空间位置数据生成包围盒,表示为:
AABB={(x,y,z)|xmin≤x≤xmax,ymin≤y≤ymax,zmin≤z≤zmax}
其中,x、y、z分别表示透明图元集合在x轴、y轴、z轴的坐标,xmin、ymin、zmin分别表示透明面片集合在x轴、y轴、z轴的坐标最小值,xmax、ymax、zmax分别表示透明面片集合在x轴、y轴、z轴的坐标最大值。
(1.2)以步骤(1.1)生成的包围盒为根节点,每次将当前节点划分为8个子节点,判断当前节点是否满足预设的划分终止条件,若满足,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分。
其中,以包围盒为根节点进行八叉树空间划分,如图1中的(a)所示,相应的,该八叉树对应的逻辑层级如图1中的(b)所示。
需要说明的是,通常的八叉树空间划分终止条件包括预定义最大八叉树层深、最小节点尺寸、节点中包含图元的最大数目等等。终止条件决定了八叉树的性质,并直接影响运行时的性能和存储空间。而本实施例中,划分终止条件采用改进的L2范数结合最大层深。
本实施例中,判断当前节点是否满足预设的划分终止条件具体包括:判断当前节点所处的八叉树层深是否大于等于预设的最大值或当前节点的L2范数是否小于等于预设的L2范数阈值,若是,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分。
应当理解的是,不同的场景所对应的划分终止条件也不同,即预设的最大八叉树层深和L2范数阈值可以根据实际场景情况进行设置。
本实施例中,改进的节点三角形面片集的L2范数的表达式为:
应当理解的是,计算出的L2范数结果值越大,表明节点中三角形面片集合朝向越杂乱,三角形面片间的遮挡概率越高,需要进一步对八叉树进行空间划分,以简化节点中三角形面片集的复杂度。反之,则表明当前节点中的面片朝向一致度好,互相遮挡的概率低。
本实施例中,当前节点的场景深度可以通过对当前节点中的三角形面片进行采样计算获取当前节点所处空间的场景深度,具体可参见步骤(1.3)中所述的方法。
(1.3)对步骤(1.2)的叶子节点中的三角形面片进行采样计算,以获取该节点所处空间的场景深度估计,并保存至叶子节点。
本实施例中,由于实际场景的复杂度在空间各向互不相同,采用单一参量的方式无法反映这种各向异性,因此,基于AABB空间结构对实际场景进行投影,沿节点AABB各轴向分别处理复杂度。
本实施例中,首先将叶子节点三角形面片集中的每一个面片,逐一沿轴向投影到包围盒的对应表面;然后对投影到包围盒表面中的面片集合做相交测试,保留最大叠加计数,作为该节点对应方向的场景深度估计,并保存至叶子节点。
应当理解的是,由于包围盒的对称性,沿轴正负向两个表面的空间复杂度相同,一次投影计算得到的结果可以表征两个面的参量,对包围盒的6个表面,每个节点沿x、y、z方向共执行3次计算,可以获取节点在三个方向上的场景深度估计,将这三个方向上的场景深度估计保存到叶子节点上。
示例性地,如图2所示,叶子节点内的三角形面片集包括三个面片,以y轴为例,首先将三个面片逐一沿y轴投影到包围盒的上表面和下表面,由于包围盒的对称性,可以只将三个面片逐一沿y轴正向投影到包围盒的上表面。然后对投影到包围盒上表面中的面片集合做相交测试,如图2所示,其中左边的面片与右边的两个面片均不相交,右边的两个面片相交,相应的,最大计数为2,则叶子节点在y轴正向的场景深度估计为2,并将该结果保存至叶子节点。
(2)根据步骤(1)中完成非空叶子节点采样的八叉树,采用局部-全局构建策略,计算八叉树中所有节点的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
(2.1)采用步骤(1)中的方法对八叉树的所有节点中的三角形面片进行采样计算,以获取所有节点所处空间的局部场景深度估计。
本实施例中,局部场景深度估计仅考虑节点自身空间范围,将其定义为:该节点包含的三角面片集合对其所覆盖的空间贡献的复杂度。
(2.1.1)获取八叉树的空叶子节点的局部场景深度,空叶子节点的局部场景深度估计为0。
(2.1.2)根据步骤(1)保存至叶子节点的场景深度估计获取八叉树的非空叶子节点的局部场景深度。
应当理解的是,非空叶子节点的局部场景深度估计为步骤(1.3)保存至叶子节点的场景深度估计。
(2.1.3)自底向上对八叉树进行遍历,沿轴向,采用步骤(1.3)中的方法对八叉树的中间节点的所有子节点中的三角形面片进行采样计算,以获取当前中间节点的所有子节点的场景深度估计,将上下两层沿轴向对齐的两个子节点的场景深度估计相加以获取每组子节点的场景深度估计,根据每组子节点的场景深度估计获取当前中间节点的局部场景深度估计。
本实施例中,八叉树的每个中间节点拥有8个子节点,沿轴向平铺两层,每层包含2×2分布的4个子节点,上下两层沿轴向对齐的两个子节点构成1组,共为4组,其空间布局如图3所示。采用步骤(1.3)中的方法对子节点中的三角形面片进行采样计算,以获取中间节点的八个子节点的场景深度估计,将上下两层沿轴向对齐的两个子节点的场景深度估计相加以获取每组子节点的场景深度估计,选取4组中的最大场景深度估计作为当前节点的沿该轴向的局部场景深度估计。
(2.1.4)重复步骤(2.1.3),直至遍历过程到达根节点,以获取所有中间节点的局部场景深度估计。
(2.2)基于步骤(2.1)获取的所有节点的局部场景深度估计获取所有节点在整个场景中的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
本实施例中,八叉树节点的局部场景深度估计仅表征了当前节点覆盖的空间状态,并未基于八叉树的全局结构考虑周围外部节点对当前节点所处空间的影响,因此,需要进一步为每个节点计算其在整个场景中的全局场景深度估计,基于局部-全局构建策略生成的八叉树场景深度估计才能作为最终代理数据结构,用于运行时场景最大深度估计的快速检索。
如图4所示,以二维形式表示了当前节点在整棵树中的全局位置关系,其中,灰色方框表示当前节点。由图示意可知,八叉树节点的全局场景深度估计沿其包围盒的6个面具有各向异性,因此,在估计每个节点的全局场景深度时,需要沿每个坐标轴的正负方向,依次考虑包围盒的全部6个面。
(2.2.1)自顶向下对八叉树进行递归遍历,将外部全局场景深度作为参数传递给下一层级,初始调用时,根节点各个面的外部全局场景深度均为0。
(2.2.2)根据步骤(2.2.1)获取节点当前面邻接的外部全局场景深度,将该外部全局场景深度与步骤(2.1)获取的节点的局部场景深度估计进行累加,以获取节点当前面沿相应方向的全局场景深度估计。
(2.2.3)根据步骤(1)中的八叉树子节点空间布局结构,更新所有子节点沿轴向各面的外部全局场景深度。
(2.2.4)重复步骤(2.2.1)-步骤(2.2.3),直至获取所有节点各面沿轴向正负方向的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
本实施例中,构建完成后的八叉树场景深度估计代理数据结构的各个节点均记录了全局场景深度估计,定量地表征了节点所处空间在场景中的复杂度构成。此外,由于八叉树空间划分良好的空间适应性,以及节点中信息存储的紧凑性,该代理数据结构具有低存储开销的优势。
(3)实时遍历步骤(2)构建的八叉树场景深度估计代理数据结构,检索视点所在空间位置所处的场景全局深度估计。
本实施例中的场景深度估计代理策略在构建阶段将将场景的深度信息预处理编码到了八叉树结构中,在实时渲染阶段,执行一次索引即可自适应地获取当前视点状态下场景深度的可靠估值,进行透明渲染的快速执行。
(3.1)判断视点是否位于八叉树的外部,若视点位于八叉树的外部,则直接进入步骤(3.2);否则,基于视点位置pv从八叉树根节点开始自顶向下对八叉树进行遍历,以确定视点所处的节点。
本实施例中,将视点位置表示为pv=(x,y,z),将视点朝向表示为nv=(nx,ny,nz),由视点位置与视点朝向的六自由度参量定义完整视点信息。
(3.2)根据视点朝向与步骤(3.1)获取的节点的六个表面的表面法矢获取视点与相对应表面的余弦值,根据余弦值确定主方向。
本实施例中,对于步骤(3.1)获取的节点的六个表面,可以按照下列公式计算视点与相对应表面的余弦值:
(3.3)根据步骤(3.2)确定的主方向对步骤(2)构建的八叉树场景深度估计代理数据结构进行索引,以获取视点位置pv所在节点中对应表面记录的全局场景深度估计。进行透明度渲染所需计算资源、存储资源的优化配置。
本发明提出的基于八叉树代理机制的场景深度估计策略,用于透明渲染时的场景深度估计。在构建阶段,进行场景深度估值编码,由于是离线模式,其开销对运行时的性能影响不计。在渲染阶段,基于高效的八叉树空间划分属性,实时遍历八叉树场景深度估计代理数据结构,可以检索视点所在空间位置所处的场景深度参数,如此便可执行高效的点-八叉树空间遍历和主方向查询测试,与现有的运行时高复杂度近似处理方法相比,具有计算开销低的优点。本发明能够动态适应视点变化,实现高效率的、自由漫游状态的场景透明渲染,可以被方便地整合到现有主流透明渲染算法中,提升所合成的透明渲染画面品质和算法性能。
与前述基于八叉树的透明渲染复杂场景深度估计方法的实施例相对应,本发明还提供了基于八叉树的透明渲染复杂场景深度估计装置的实施例。
参见图6,本发明实施例提供的一种基于八叉树的透明渲染复杂场景深度估计装置,包括一个或多个处理器,用于实现上述实施例中的基于八叉树的透明渲染复杂场景深度估计方法。
本发明基于八叉树的透明渲染复杂场景深度估计装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本发明基于八叉树的透明渲染复杂场景深度估计装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于八叉树的透明渲染复杂场景深度估计方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,包括以下步骤:
(1)对场景进行八叉树空间划分,将场景的三角形面片分配到八叉树叶子节点,并进行采样计算,将结果保存到叶子节点;
(2)根据所述步骤(1)中完成非空叶子节点采样的八叉树,采用局部-全局构建策略,计算八叉树中所有节点的全局场景深度估计,以构建八叉树场景深度估计代理数据结构;
(3)实时遍历所述步骤(2)构建的八叉树场景深度估计代理数据结构,检索视点所在空间位置所处的场景全局深度估计。
2.根据权利要求1所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(1)包括以下子步骤:
(1.1)采用轴对齐包围盒空间结构根据待渲染的透明对象空间位置数据生成包围盒;
(1.2)以所述步骤(1.1)生成的包围盒为根节点,每次将当前节点划分为8个子节点,判断当前节点是否满足预设的划分终止条件,若满足,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分;
(1.3)对所述步骤(1.2)的叶子节点中的三角形面片进行采样计算,以获取该节点所处空间的场景深度估计,并保存至叶子节点。
3.根据权利要求2所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(1.2)中所述判断当前节点是否满足预设的划分终止条件具体包括:判断当前节点所处的八叉树层深是否大于等于预设的最大值或当前节点的L2范数是否小于等于预设的L2范数阈值,若是,则划分结束,并将场景的三角形面片分配到所属的叶子节点;否则,继续进行划分。
4.根据权利要求2所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(1.3)具体为:首先将所述步骤(1.2)的叶子节点三角形面片集合中的每一个面片,逐一沿轴向投影到包围盒的对应表面;然后对投影到包围盒表面中的面片集合做相交测试,保留最大叠加计数,作为该节点对应方向的场景深度估计,并保存至叶子节点。
5.根据权利要求1所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(2)包括以下子步骤:
(2.1)采用所述步骤(1)中的方法对八叉树的所有节点中的三角形面片进行采样计算,以获取所有节点所处空间的局部场景深度估计;
(2.2)基于所述步骤(2.1)获取的所有节点的局部场景深度估计获取所有节点在整个场景中的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
6.根据权利要求5所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(2.1)包括以下子步骤:
(2.1.1)获取八叉树的空叶子节点的局部场景深度,空叶子节点的局部场景深度估计为0;
(2.1.2)根据所述步骤(1)保存到叶子节点的场景深度估计获取八叉树的非空叶子节点的局部场景深度;
(2.1.3)自底向上对八叉树进行遍历,沿轴向,采用所述步骤(1)中的方法对八叉树的中间节点的所有子节点中的三角形面片进行采样计算,以获取当前中间节点的所有子节点的场景深度估计,将上下两层沿轴向对齐的两个子节点的场景深度估计相加以获取每组子节点的场景深度估计,根据每组子节点的场景深度估计获取当前中间节点的局部场景深度估计;
(2.1.4)重复所述步骤(2.1.3),直至遍历过程到达根节点,以获取所有中间节点的局部场景深度估计。
7.根据权利要求5所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(2.2)包括以下子步骤:
(2.2.1)自顶向下对八叉树进行递归遍历,将外部全局场景深度作为参数传递给下一层级,初始调用时,根节点各个面的外部全局场景深度均为0;
(2.2.2)根据步骤(2.2.1)获取节点当前面邻接的外部全局场景深度,将该外部全局场景深度与所述步骤(2.1)获取的节点的局部场景深度估计进行累加,以获取节点当前面沿相应方向的全局场景深度估计;
(2.2.3)根据所述步骤(1)中的八叉树子节点空间布局结构更新所有子节点沿轴向各面的外部全局场景深度;
(2.2.4)重复所述步骤(2.2.1)-所述步骤(2.2.3),直至获取所有节点各面沿轴向正负方向的全局场景深度估计,以构建八叉树场景深度估计代理数据结构。
8.根据权利要求1所述的基于八叉树的透明渲染复杂场景深度估计方法,其特征在于,所述步骤(3)包括以下子步骤:
(3.1)判断视点是否位于八叉树的外部,若视点位于八叉树的外部,则直接进入步骤(3.2);否则,基于视点位置pv从八叉树根节点开始自顶向下对八叉树进行遍历,以确定视点所处的节点;
(3.2)根据视点朝向与所述步骤(3.1)获取的节点的六个表面的表面法矢获取视点与相对应表面的余弦值,根据余弦值确定主方向;
(3.3)根据所述步骤(3.2)确定的主方向对所述步骤(2)构建的八叉树场景深度估计代理数据结构进行索引,以获取视点位置pv所在节点中对应表面记录的全局场景深度估计。
9.一种基于八叉树的透明渲染复杂场景深度估计装置,其特征在于,包括一个或多个处理器,用于实现权利要求1-8中任一项所述的基于八叉树的透明渲染复杂场景深度估计方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,用于实现权利要求1-8中任一项所述的基于八叉树的透明渲染复杂场景深度估计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379686.9A CN116402936A (zh) | 2023-04-11 | 2023-04-11 | 一种基于八叉树的透明渲染复杂场景深度估计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379686.9A CN116402936A (zh) | 2023-04-11 | 2023-04-11 | 一种基于八叉树的透明渲染复杂场景深度估计方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116402936A true CN116402936A (zh) | 2023-07-07 |
Family
ID=87008665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310379686.9A Pending CN116402936A (zh) | 2023-04-11 | 2023-04-11 | 一种基于八叉树的透明渲染复杂场景深度估计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116402936A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234451A (zh) * | 2023-11-10 | 2023-12-15 | 北京睿呈时代信息科技有限公司 | 面向大场景渲染的场景剔除方法及其对应的装置 |
CN117808949A (zh) * | 2023-12-29 | 2024-04-02 | 中数科技(青岛)有限公司 | 一种场景渲染方法 |
-
2023
- 2023-04-11 CN CN202310379686.9A patent/CN116402936A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234451A (zh) * | 2023-11-10 | 2023-12-15 | 北京睿呈时代信息科技有限公司 | 面向大场景渲染的场景剔除方法及其对应的装置 |
CN117234451B (zh) * | 2023-11-10 | 2024-05-24 | 北京睿呈时代信息科技有限公司 | 面向大场景渲染的场景剔除方法及其对应的装置 |
CN117808949A (zh) * | 2023-12-29 | 2024-04-02 | 中数科技(青岛)有限公司 | 一种场景渲染方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9569885B2 (en) | Technique for pre-computing ambient obscurance | |
US7864174B2 (en) | Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system | |
US11138782B2 (en) | Systems and methods for rendering optical distortion effects | |
CN105378796B (zh) | 可伸缩体积3d重构 | |
US20200160587A1 (en) | Systems and methods for reducing rendering latency | |
US8284195B2 (en) | Cooperative utilization of spatial indices between application and rendering hardware | |
US20080024489A1 (en) | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
US8725466B2 (en) | System and method for hybrid solid and surface modeling for computer-aided design environments | |
US7836258B2 (en) | Dynamic data cache invalidate with data dependent expiration | |
US10748332B2 (en) | Hybrid frustum traced shadows systems and methods | |
US20080122838A1 (en) | Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index | |
US20100289799A1 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
US20080074416A1 (en) | Multiple Spacial Indexes for Dynamic Scene Management in Graphics Rendering | |
US20080238919A1 (en) | System and method for rendering of texel imagery | |
JP2024510265A (ja) | 高解像度ニューラル・レンダリング | |
US10553012B2 (en) | Systems and methods for rendering foveated effects | |
US20080074418A1 (en) | Methods and Systems for Texture Prefetching Based on a Most Recently Hit Primitive Algorithm | |
US20080122846A1 (en) | Adaptive Ray Data Reorder for Optimized Ray Temporal Locality | |
GB2549217A (en) | 3-D Graphics rendering with implicit geometry | |
CN116402936A (zh) | 一种基于八叉树的透明渲染复杂场景深度估计方法和装置 | |
CN111951368A (zh) | 一种点云、体素和多视图融合的深度学习方法 | |
Gu et al. | Silhouette mapping | |
JP4001733B2 (ja) | 幾何学面上の注釈を簡略化する装置、システム、および方法 | |
CN110738719A (zh) | 一种基于视距分层优化的Web3D模型渲染方法 |
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 |