CN116402931A - 体积渲染方法、装置、计算机设备和计算机可读存储介质 - Google Patents
体积渲染方法、装置、计算机设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116402931A CN116402931A CN202310247486.8A CN202310247486A CN116402931A CN 116402931 A CN116402931 A CN 116402931A CN 202310247486 A CN202310247486 A CN 202310247486A CN 116402931 A CN116402931 A CN 116402931A
- Authority
- CN
- China
- Prior art keywords
- model
- rendering
- volume
- sub
- sampling
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 445
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000005070 sampling Methods 0.000 claims abstract description 176
- 238000013507 mapping Methods 0.000 claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000004927 fusion Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 37
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241000196324 Embryophyta Species 0.000 description 1
- 244000035744 Hura crepitans Species 0.000 description 1
- 241001310793 Podium Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000012549 training 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/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/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- 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/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- 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)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了体积渲染方法、装置、计算机设备和计算机可读存储介质;可获取由至少两层子模型嵌套生成的体积模型和预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;本发明实施例烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,可减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
Description
技术领域
本发明涉及显示技术领域,具体涉及体积渲染方法、装置、计算机设备和计算机可读存储介质。
背景技术
随着显示技术的快速发展,各类显示画面中常常需要对立体的体积渲染效果进行显示。例如,在一些虚拟场景中需要显示天空中实时变化的立体的云、显示具有丁达尔效应的立体的烟雾,等等。
目前,要在显示画面中显示立体的体积渲染效果常采用的方法是,使用光线步进的方式进行模拟计算,以实现需要的体积渲染效果。但是采用光线步进的方法,需要占用大量的计算资源,对于计算机设备来说需要大量的性能消耗,渲染成本高。
发明内容
本发明实施例提供体积渲染方法、装置、计算机设备和计算机可读存储介质,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
本发明实施例提供一种体积渲染方法,包括:
获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
根据所述子模型对所述三维纹理贴图进行贴图采样,得到所述子模型对应的采样结果;
基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型;
烘焙所述体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示。
本发明实施例还提供一种体积渲染装置,包括:
模型获取单元,用于获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
贴图采样单元,用于根据所述子模型对所述三维纹理贴图进行贴图采样,得到所述子模型对应的采样结果;
模型渲染单元,用于基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型;
图像烘焙单元,用于烘焙所述体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
图像显示单元,用于基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示。
本发明实施例还提供一种计算机设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行本发明实施例所提供的任一种体积渲染方法中的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种体积渲染方法。
此外,本发明实施例还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本发明实施例所提供的任一种体积渲染方法。
采用本发明实施例的方案,可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据该子模型对该三维纹理贴图进行贴图采样,得到该子模型对应的采样结果,基于该采样结果和该子模型对应的透明度,对该体积模型进行渲染,得到体积渲染模型,烘焙该体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从该渲染结果图像集合中选择该摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的体积渲染方法的场景示意图;
图2是本发明实施例提供的体积渲染方法的流程图;
图3是本发明实施例提供的体积模型的示意图;
图4是本发明实施例提供的体积渲染模型的示意图;
图5是本发明实施例提供的渲染结果图像集合的示意图;
图6是本发明实施例提供的四边形面片的示意图;
图7是本发明实施例提供的目标渲染结果图像的显示效果示意图;
图8是本发明实施例提供的体积渲染方法的另一流程图;
图9是本发明实施例提供的体积渲染装置的结构示意图;
图10是本发明实施例提供的体积渲染装置的另一结构示意图;
图11是本发明实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种体积渲染方法、装置、计算机设备和计算机可读存储介质。具体地,本发明实施例提供适用于体积渲染装置的体积渲染方法,该体积渲染装置可以集成在计算机设备中。
该计算机设备可以为终端等设备,包括但不限于移动终端和固定终端,例如移动终端包括但不限于智能手机、智能手表、平板电脑、笔记本电脑、智能车载等,其中,固定终端包括但不限于台式电脑、智能电视等。
该计算机设备还可以为服务器等设备,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
本发明实施例的体积渲染方法,可以由服务器实现,也可以由终端和服务器共同实现。
下面以终端和服务器共同实现该体积渲染方法为例,对该方法进行说明。
如图1所示,本发明实施例提供的体积渲染系统包括终端10和服务器20等;终端10与服务器20之间通过网络连接,比如,通过有线或无线网络连接等,其中,服务器20可以作为向终端10发送渲染结果图像集合的计算机设备存在。
其中,服务器20可以用于获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和各子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合。
服务器20可以将渲染结果图像集合发送给终端10,终端10可以基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示。
可以理解的是,在一些实施例中,终端10执行的体积渲染的步骤也可以由服务器20执行,本发明实施例对此不做限定。
以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本发明实施例将从体积渲染装置的角度进行描述,该体积渲染装置具体可以集成在服务器和/或终端中。
如图2所示,本实施例的体积渲染方法的具体流程可以如下:
201、获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图。
其中,体积模型为实现体积渲染效果的模型。具体的,体积模型可以是由多层子模型嵌套而成,通过叠加各层子模型的渲染效果,实现具有立体效果的体积渲染。
例如,如图3所示,体积模型可以为“由内到外”多层正方形嵌套的正方体模型。或者,体积模型也可以由若干层形状相同或者不同的子模型嵌套生成,比如,体积模型也可以为“由内到外”两层正方形、两层长方形嵌套的模型,等等。
具体的,体积模型中的每层子模型可以分别是独立的渲染模型,每层子模型可以实现相同或者不同的渲染效果,各层子模型之间存在嵌套关系。
可选的,体积模型可以在渲染引擎中用来采样预先设置的三维纹理贴图,每一层子模型采样到的三维纹理贴图,可以通过每一层的透明度叠加将得到一个体积的渲染。
其中,三维纹理贴图也可以称为3D(3Dimensions,三维)纹理贴图,是包含了3D纹理的贴图。3D纹理就是立体的“图形”,3D纹理是一个(x,y,z)形式的三维像素矩阵,每一个(x,y,z)对应一个标量值;通过三维纹理贴图可以把这个三维的像素阵列映射到三维的物体空间中去。
在一些可选的示例中,可以将物体和3D纹理处理成立方体或圆柱体,3D纹理和体绘制技术密切相关,体绘制(volume rendering)是科学可视化的重要手段。
例如,可以在Unity引擎(一种游戏引擎)中,通过如下的程序代码导入三维纹理贴图进行采样:
using System.Collections;
using System.Collections.Generic:
using UnityEngine;
using UnityEngine.Rendering:
[ExecuteAlways]
public class impostor:MonoBehaviour
{public Texture3D_3DTex:
void Start()
{
}
void Update()
{
Shader.SetGlobalTexture("3DTex",_3DTex);
}
}
其中,可以通过使用Shader.SetGlobalTexture()命令,将三维纹理贴图传递给着色器使用。具体的,着色器是用来实现图像渲染的,用来替代固定渲染管线的可编辑程序。
202、根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果。
比如说,在本发明实施例中,可以针对各个子模型分别对三维纹理贴图进行贴图采样,每个子模型都会对应有一个由三维纹理贴图采样得到的采样结果。
在另一些示例中,也可以对部分子模型进行贴图采样。例如,可以预先设置体积模型中的某几个子模型共享采样结果,则在进行贴图采样时,针对共享采样结果的子模型,可以只根据其中的某个子模型进行贴图采样,等等。
其中,进行贴图采样的子模型可以是预先设置的,也可以是随机选择的,本发明实施例对此不作限定。
可以理解的是,各子模型对应的采样结果可以是图像的形式,也可以是由各个像素点对应的像素值构成的矩阵的形式等等,本发明实施例对此不作限定。
在一些可选的实施例中,在进行贴图采样时,为了使得采样结果中包括更全面的信息,可以采样三维纹理贴图的多种信息生成采样结果,例如颜色信息、各个角度的法线、粗糙度信息等。
在另一些可选的实施例中,为了减少采样结果对存储空间的占用,在进行采样时,也可以只采样三维纹理贴图的颜色信息。也就是说,步骤“根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果”,具体可以包括:
根据子模型在体积模型的模型空间中的顶点坐标,确定子模型在三维纹理贴图中对应的采样纹理贴图坐标;
对三维纹理贴图在采样纹理贴图坐标对应的颜色信息进行采样,得到子模型对应的采样结果。
其中,顶点坐标为各个子模型的顶点在模型空间中的坐标。顶点为3D空间中的一个点,顶点可以包含关于法线方向、纹理坐标和其他网格属性的信息。
其中,采样纹理贴图坐标又可称为采样UV坐标,即在对某一贴图进行采样时的UV坐标。在计算机图形学领域,UV坐标是U、V纹理贴图坐标的简称,也可以称为纹理映射坐标,其可以定义二维图像中每个点的位置。
可选的,在确定采样纹理贴图坐标时,可以基于各子模型在模型空间中的顶点坐标进行归一化处理后的处理结果得到。
具体的,采样纹理贴图坐标可以为对三维纹理贴图进行采样的UV坐标。
例如,在进行贴图采样时,可以导入Impostor插件(一种可下载的商业插件)到渲染引擎,在多层嵌套的正方体模型上新建impostor插件的烘焙组件,并选中进入BakePreset。在Bake Preset中,技术人员可以只勾选第一项输出“_AlbedoAlpha”,Bake Shader中放入插件目录“Shaders/Baking”中的“ImpostorBakeTemplate”着色器。
其中,“Bake Preset”是插件烘焙出图类型的设置,只会烘焙勾选的对应贴图类型,如果只需要得到各个角度的颜色信息,只需要勾选AldeboAlpha选项即可,其他的选项会烘焙出各个角度的法线、粗糙度等信息,技术人员可以根据实际渲染需求进行选择。
203、基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型。
在渲染过程中,为了渲染出物体的透明效果,可以会在不透明物体的基础上渲染透明部分,在实现透明部分的渲染时,通常是将透明部分的颜色与不透明物体的颜色进行混合以实现透明效果。而透明度可以用于表示透明部分与不透明部分的混合程度。
例如,对于某个像素点可以设置有RGBA的值,其中,A部分表示alpha值,即透明度,取值范围可以是0~1。
在一些可选的实施例中,可以是分别得到各层子模型在渲染时的渲染结果后,再对各层子模型的渲染结果进行叠加渲染,即。步骤“基于采样结果和各子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型”,具体可以包括:
将所述子模型对应的所述采样结果和透明度进行融合计算,得到子模型对应的透明采样信息;
叠加渲染子模型对应的透明采样信息,得到体积渲染模型。
其中,子模型对应的透明采样信息为该模型的采样结果与子模型的透明度进行融合计算后得到的计算结果。各子模型对应的透明采样信息可以是图像的形式,也可以是由各个像素点对应的像素值构成的矩阵的形式等等,本发明实施例对此不作限定。
比如,可以将该子模型的采样结果作为透明部分的颜色,再通过透明度将采样结果和各子模型对应的不透明部分的颜色进行加权计算,即可得到透明采样信息。
例如,可以通过如下的代码对体积模型进行渲染:
UNITY SETUP INSTANCE ID(i);
/*ase_frag_code:i=v2f*/
float_3d=tex3D(_3DTex,i.uvw.xyz+float3(0.5,-0.5,0.5)).r*0.01f;
outGBuffer0=float4(3d,3d,3d,1);
outGBuffer1=/*ase_frag_out:Output RT 1:Float4*/0/*end*/;
outGBuffer2=/*ase_frag_out:Output RT 2:Float4*/0/*end*/;
outGBuffer3=/*ase_frag_out:Output RT 3:Float4*/0/*end*/;
outGBuffer4=/*ase_frag_out:Output RT 4:Float4*/0*end*/;
outGBuffer5=/*ase_frag_out:Output RT 5:Float4*/0/*end*/;
outGBuffer6=/*ase_frag_out:Output RT 6:Float4*/0/*end*/;
outGBuffer7=/*ase_frag_out:Output RT 7:Float4*/0/*end*/;
float alpha=/*ase_frag_out:Clip:Float*/1/*end*/;
clip(alpha);
outDepth=i.pos.z.
其中,i.uvw.xyz+float3(0.5,-0.5,0.5)为计算得到的采样纹理贴图坐标(这里采样纹理贴图坐标可以使用模型空间的顶点坐标进行归一化处理后计算得到),0.01为各层子模型分别叠加的每层透明度。
可以理解的是,每层子模型叠加的透明度可以相同,也可以不同,本发明实施例对此不作限定。
其中,在采样3D贴图外部素材时,可以对渲染引擎进行设置。例如,以基于Impostor插件进行渲染为例,可以通过前述的代码修改输出的第一项“outGBuffer0”为采样的结果,使着色器以3D贴图的图案进行叠加输出。
由于在Bake Preset中,勾选了渲染出图的类型是AlbedoAlpha,其实对应的就是渲染outGbuffer0的数据,其他的各个outGbuffer对应的是不同项的渲染出图数据填充,由于在本发明实施例中只需要AlbedoAlpha,那么修改第一项“outGBuffer0”即可。
可以理解的是,如果在Bake Preset中勾选了其他渲染出图的类型,那么也可以修改outGBuffer0-outGBuffer7中的对应项。
在实际应用过程中,要实现对具有透明度的子模型的渲染,需要渲染引擎能够支持对透明物体的渲染。因此,在对体积模型进行渲染前,需要在渲染引擎内进行一定的配置。
以通过Impostor插件实现体积模型的渲染为例,需要修改Impostor插件填入的烘焙着色器,让Impostor插件实现可烘焙体积半透明物体。在Impostor插件的Shaders/Baking目录下找到Impostor的默认烘焙着色器“ImpostorBakeTemplate”,以及,打开shader文件代码,修改Tag(渲染状态标签)为"Queue"="Transparent"、"IgnoreProjector"="True"和"RenderType"="Transparent",使shader以透明渲染状态渲染,修改Blend(渲染混合模式)为Blend One One,使shader以相加模式渲染,关闭Cull背面剔除与Zwrite深度写入。
其中,在shader以相加模式渲染时,实际上各层子模型的透明渲染信息的亮度也会叠加渲染,因此,步骤“叠加渲染各透明采样信息,得到体积渲染模型”,具体可以包括:
基于子模型对应的透明采样信息的亮度信息,对透明采样信息进行叠加渲染,生成体积渲染模型。
以体积模型为多层嵌套正方体为例,每层子模型坐标采样外部3D贴图,得到的每层图像进行亮度叠加,由内到外多层采样结果的亮度叠加后,有体积累计的立体显示效果。也就是说,在渲染时,每层子模型由内到外采样出来的结果中的亮度信息会叠加。
在一些可选的示例中,在进行渲染时,可以是先渲染游戏场景所有的不透明物体,再将具有一定透明度的物体按照到摄影机的距离从远处到近处排序,逐一渲染。也就是说,步骤“基于采样结果和各子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型”之前,本发明实施例提供的体积渲染方法还可以包括:
获取体积模型对应的虚拟场景中的虚拟对象的对象烘焙信息,对象烘焙信息用于指示虚拟对象是否进行透明烘焙;
若虚拟场景中,存在至少一个对象烘焙信息指示虚拟对象不进行透明烘焙,对不进行透明烘焙的虚拟对象进行烘焙,直至虚拟场景中不进行透明烘焙的虚拟对象均已被烘焙。
其中,需要进行透明烘焙的虚拟对象,指的是该虚拟对象在虚拟场景中需要以一定透明度进行烘焙,即,该虚拟对象在显示时是具有一定透明度的。例如,需要进行透明烘焙的虚拟对象可以是云朵、光线等。
而不进行透明烘焙的虚拟对象,指的是该虚拟对象在虚拟场景中以不透明的方式进行烘焙,在显示时也是不透明的。
也就是说,可以是先对虚拟场景中所有的不进行透明烘焙的虚拟对象进行烘焙后,再对体积模型进行渲染。
具体的,对象烘焙信息可以是在对虚拟对象进行烘焙时游戏引擎输出的烘焙结果代码,也可以是与虚拟对象烘焙状态相关的标识信息,等等。
其中,体积模型对应的虚拟场景可以是应用程序在终端或服务器上运行时显示(或提供)的虚拟场景。可选地,该虚拟场景是对真实世界的仿真环境,或者是半仿真半虚构的虚拟环境,或者是纯虚构的虚拟环境。虚拟场景是二维虚拟场景和三维虚拟场景中的任意一种,虚拟环境可以为天空、陆地、海洋等,其中,该陆地包括沙漠、城市等环境元素。
其中,虚拟场景可以为用户控制虚拟对象完成完整游戏逻辑的场景,例如,对于沙盒类3D射击游戏中,虚拟场景为用于供玩家控制虚拟对象进行对战的3D游戏世界,实例性的虚拟场景可以包括:山川、平地、河流、湖泊、海洋、沙漠、天空、植物、建筑、车辆中的至少一种元素;例如,对于2D卡牌类游戏中,虚拟场景为供展示释放卡牌或是展示卡牌对应的虚拟对象的场景,实例性的虚拟场景可以包括:擂台场、决战场、或是其他可以显示卡牌对战状态的“场”元素或是其他元素;对于2D或是3D的多人在线战术竞技游戏,虚拟场景为供虚拟对象进行对战的2D或3D地形场景,实例性的虚拟场景可以包括:峡谷风格的山脉、线路、河流、教室、桌椅、讲台等元素。
其中,虚拟对象可以为当前的虚拟场景中在虚拟场景中可被控制的动态对象。可选地,该动态对象可以是虚拟人物、虚拟动物、动漫人物等。该虚拟对象是玩家通过输入设备进行控制的角色,或者是通过训练设置在虚拟环境对战中的人工智能(ArtificialIntelligence,AI),或者是设置在虚拟场景对战中的非玩家角色(Non-Player Character,NPC)。
例如,对于标签"Queue"的设置,令"Queue"="Transparent"可以用于控制渲染顺序,该标签会让所赋予该Shader的模型依照透明的渲染顺序渲染,会在不透明物体的渲染之后,如果不同的模型,可以是按照由远到近的顺序。
一般来说,用透明的渲染顺序,是因为透明顺序会在不透明的虚拟对象渲染完之后再渲染具有透明度的虚拟对象,如果虚拟场景中有不透明物体,多层嵌套正方体的会在不透明物体渲染后再叠加,否则会和不透明物体的顺序不稳定互相冲突,造成闪烁,影响烘焙结果。
在另一些可选的实施例中,也可以将具有一定透明度的物体按照到摄影机的距离从近处到远处排序后,逐一渲染。
可选的,可以根据各个子模型的模型顶点,确定各个子模型的渲染顺序。也就是说,步骤“基于采样结果和各子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型”之前,本发明实施例提供的体积渲染方法还可以包括:
基于各子模型在模型空间中的模型顶点的顶点标识,确定各模型顶点对应的模型渲染顺序。
其中,顶点标识可以是模型顶点的顶点ID(Identity document,身份标识号),也可以是其他可以将对应的模型顶点与其他模型顶点进行区分的标识信息。
相应的,步骤“基于采样结果和各子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型”,具体可以包括:
根据子模型对应的透明度和模型渲染顺序,分别将各子模型对应的采样结果在子模型中进行渲染,得到体积渲染模型。
比如,多层子模型嵌套的体积模型可以是同一个子模型进行多层嵌套,而不同子模型中同一个模型顶点的渲染顺序不同,在半透明叠加模式下会影响结果。或者,也可以多层是ADD模式的叠加,顺序不一致对最终结果影响不是很明显,类似于积分计算,从后往前加和从前往后加,结果没有差别。
具体的,渲染顺序可以是根据模型的各顶点ID的顺序确定。
204、烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合。
其中,体积渲染模型可以如图4所示。
在游戏的开发中,画面表现经常需要涉及体积渲染的需求,比如模拟天空实时变化的体积云,模拟丁达尔效应的体积雾,模拟特效中的体积烟雾,这类效果在现代图像渲染中,由于模型是由于点线面组成,无法模拟云雾中半透明的叠加及丰富的结构。
所以实际开发中常使用Raymarching(光线步进)的方式来计算模拟,该方式不可避免的问题便是需要大量的性能消耗,此类方案在主机端盛行,而在移动端则是一种对性能开销望而却步的方案,在目前的移动平台上,此类立体的云雾效果一般是使用固定面向摄像机的特效面片制作,缺乏体积感。
采用本发明实施例的方案,在3Dmax/Maya等建模软件中,可以制作一个多层嵌套的体积模型,为体积采样做准备。在Unity中修改Impostor插件中烘焙的着色器代码,使其只输出颜色Buffer,并且使用半透明混合模式,使用模型空间采样3D纹理,并将透明度设置为一个0.01或者0.02因子,多层正方形嵌套的模型使用此着色器将积累3D纹理不同切面的透明度,达到体积效果。
最终替换Impostor的烘焙着色器后,点击烘焙即可获得各个角度的体积渲染图集,再使用Impostor中常规的面片采样即可达到伪体积渲染的结果,消耗非常可观,在所有的手机端都可以接受,对于一些远处云雾的渲染,本发明实施例的方案是非常好的选择。
在挂接了impostor组件的嵌套正方体中,点击烘焙按钮,即可烘焙出各个角度体积渲染结果的图集,即得到了各个角度的渲染结果图像集合。
具体的,渲染结果图像集合。比如,渲染结果图像集合可以如图5所示。
205、基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示。
其中,摄像机方向为视线向量,即游戏界面的视线方向的向量。具体的,摄像机方向可以为预设的用户查看方向。在制作游戏的过程中,可以设置有摄像机,其中摄像机放置的朝向即为预设的用户查看方向,根据摄像机放置的位置以及角度的不同,可以从不同的方向查看游戏的对象,在实际游戏过程中,摄像机方向可以理解为垂直于显示游戏画面的屏幕的方向。
在一些可选的实施例中,可以直接将目标渲染结果图像显示在虚拟场景中。
在另一些可选的实施例中,也可以设置多边形面片,以呈现目标渲染结果图像,即,步骤“基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示”之前,本发明实施例提供的体积渲染方法还可以包括:
在体积模型对应的虚拟场景中生成多边形面片,多边形面片用于显示目标渲染结果图像。
其中,多边形面片可以是任意多边形形状的面片。
例如,最终Impostor会生成一个四边形面片,并填入材质与贴图,只需将材质的透明改为使用图集的黑白控制,即可得到一个体积的渲染。具体的,四边形面片可以如图6所示。
相应的,步骤“基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示”,具体可以包括:
基于当前的摄像机方向,对多边形面片的面片朝向进行修改,得到目标多边形面片;
根据摄像机方向,计算摄像机方向针对目标多边形面片的目标观察方向;
从渲染结果图像集合中选择与目标观察方向匹配的目标渲染结果图像;
在目标多边形面片中对目标渲染结果图像进行显示。
其中,目标多边形面片的面片朝向是面向摄像机的,即,目标多边形面片的面片朝向与摄像机方向相反。
也就是说,最终可以生成一个永远面对摄像机的四边形面片,配合一张拥有各个角度渲染结果的贴图,计算观察者、四边形、贴图图集图像角度三者的关系(这部分可以由Impostor插件自身着色器完成),即可在各个角度显示对应的图像,得到伪体积的渲染方案,消耗非常低。
在游戏引擎中,摄像机每帧的角度是已知的数据,而四边形面片的朝向在放进场景的那一刻就是固定的,为了让四边形面片每帧都朝向摄像机,可以通过获取摄像机的角度去计算四边形的顶点朝向并每帧修改顶点坐标,达到永远朝向摄像机。
然后插件会计算摄像机方向围绕这个面片的一个观察角度,和当时烘焙出来的各个角度图集的角度图坐标对应关系,计算出观察角度对应的图集采样坐标,采样到图集中对应的那个角度的烘焙图像,每帧切换不同的图集对应角度的图,达到如图7中所示的以假乱真的3D效果,图集烘焙的角度图数量,将决定观察时切换不同角度图的顺滑度。
由上可知,本发明实施例可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将结合图1的系统进行说明。
如图8所示,本实施例的体积渲染方法,具体流程可以如下:
801、获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图。
其中,体积模型可以在渲染引擎中用来采样预先设置的三维纹理贴图,每一层子模型采样到的三维纹理贴图,可以通过每一层的透明度叠加将得到一个体积的渲染。
802、根据子模型在模型空间中的顶点坐标,确定子模型在三维纹理贴图中对应的采样纹理贴图坐标,采样三维纹理贴图在采样纹理贴图坐标对应的颜色信息,得到子模型对应的采样结果。
在一些可选的实施例中,在进行采样时,也以只采样三维纹理贴图的颜色信息。
例如,在进行贴图采样时,可以导入Impostor插件(一种可下载的商业插件)到渲染引擎,在多层嵌套的正方体模型上新建impostor插件的烘焙组件,并选中进入BakePreset。在Bake Preset中,技术人员可以只勾选第一项输出“_AlbedoAlpha”,Bake Shader中放入插件目录“Shaders/Baking”中的“ImpostorBakeTemplate”着色器。
其中,“Bake Preset”是插件烘焙出图类型的设置,只会烘焙勾选的对应贴图类型,如果只需要得到各个角度的颜色信息,只需要勾选AldeboAlpha选项即可。
803、分别基于子模型对应的采样结果和透明度进行融合计算,得到各子模型对应的透明采样信息。
其中,在采样3D贴图外部素材时,可以对渲染引擎进行设置。例如,以基于Impostor插件进行渲染为例,可以通过前述的代码修改输出的第一项“outGBuffer0”为采样的结果,使着色器以3D贴图的图案进行叠加输出。
由于在Bake Preset中,勾选了渲染出图的类型是AlbedoAlpha,其实对应的就是渲染outGbuffer0的数据,其他的各个outGbuffer对应的是不同项的渲染出图数据填充,由于在本发明实施例中只需要AlbedoAlpha,那么修改第一项“outGBuffer0”即可。
804、将透明采样信息中的亮度信息进行叠加,生成体积渲染模型。
在实际应用过程中,要实现对具有透明度的子模型的渲染,需要渲染引擎能够支持对透明物体的渲染。因此,在对体积模型进行渲染前,需要在渲染引擎内进行一定的配置。
以通过Impostor插件实现体积模型的渲染为例,需要修改Impostor插件填入的烘焙着色器,让Impostor插件实现可烘焙体积半透明物体。在Impostor插件的Shaders/Baking目录下找到Impostor的默认烘焙着色器“ImpostorBakeTemplate”,以及,打开shader文件代码,修改Tag(渲染状态标签)为"Queue"="Transparent"、"IgnoreProjector"="True"和"RenderType"="Transparent",使shader以透明渲染状态渲染,修改Blend(渲染混合模式)为Blend One One,使shader以相加模式渲染,关闭Cull背面剔除与Zwrite深度写入。
805、烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合。
在3Dmax/Maya等建模软件中,可以制作一个多层嵌套的体积模型,为体积采样做准备。在Unity中修改Impostor插件中烘焙的着色器代码,使其只输出颜色Buffer,并且使用半透明混合模式,使用模型空间采样3D纹理,并将透明度设置为一个0.01或者0.02因子,多层正方形嵌套的模型使用此着色器将积累3D纹理不同切面的透明度,达到体积效果。
最终替换Impostor的烘焙着色器后,点击烘焙即可获得各个角度的体积渲染图集,再使用Impostor中常规的面片采样即可达到伪体积渲染的结果,消耗非常可观,在所有的手机端都可以接受,对于一些远处云雾的渲染,本发明实施例的方案是非常好的选择。
在挂接了impostor组件的嵌套正方体中,点击烘焙按钮,即可烘焙出各个角度体积渲染结果的图集,即得到了各个角度的渲染结果图像集合。
806、在虚拟场景中生成多边形面片,多边形面片用于显示目标渲染结果图像。
Impostor会生成一个四边形面片,并填入材质与贴图,只需将材质的透明改为使用图集的黑白控制,即可得到一个体积的渲染。
807、基于当前的摄像机方向,对多边形面片的面片朝向进行修改,得到目标多边形面片,根据摄像机方向,计算摄像机方向针对目标多边形面片的目标观察方向。
在游戏引擎中,摄像机每帧的角度是已知的数据,而四边形面片的朝向在放进场景的那一刻就是固定的,为了让四边形面片每帧都朝向摄像机,可以通过获取摄像机的角度去计算四边形的顶点朝向并每帧修改顶点坐标,达到永远朝向摄像机。
808、从渲染结果图像集合中选择与目标观察方向匹配的目标渲染结果图像,在目标多边形面片显示目标渲染结果图像。
插件会计算摄像机方向围绕这个面片的一个观察角度,和当时烘焙出来的各个角度图集的角度图坐标对应关系,计算出观察角度对应的图集采样坐标,采样到图集中对应的那个角度的烘焙图像,每帧切换不同的图集对应角度的图,达到以假乱真的3D效果,图集烘焙的角度图数量,将决定观察时切换不同角度图的顺滑度。
由上可知,本发明实施例可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
为了更好地实施以上方法,相应的,本发明实施例还提供一种体积渲染装置。
参考图9,该装置包括:
模型获取单元901,可以用于获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
贴图采样单元902,可以用于根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果;
模型渲染单元903,可以用于基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型;
图像烘焙单元904,可以用于烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
图像显示单元905,可以用于基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示。
在一些可选的实施例中,贴图采样单元902,可以用于根据各子模型在体积模型的模型空间中的顶点坐标,确定各子模型在三维纹理贴图中对应的采样纹理贴图坐标;
对三维纹理贴图在采样纹理贴图坐标对应的颜色信息进行采样,得到各子模型对应的采样结果。
在一些可选的实施例中,模型渲染单元903,可以用于将子模型对应的采样结果和透明度进行融合计算,得到子模型对应的透明采样信息;
叠加渲染子模型对应的透明采样信息,得到体积渲染模型。
在一些可选的实施例中,模型渲染单元903,可以用于基于子模型对应的透明采样信息的亮度信息,对透明采样信息进行叠加渲染,生成体积渲染模型。
在一些可选的实施例中,如图10所示,本发明实施例提供的体积渲染装置还可以包括烘焙控制单元906,可以用于获取体积模型对应的虚拟场景中的虚拟对象的对象烘焙信息,对象烘焙信息用于指示虚拟对象是否进行透明烘焙;
若虚拟场景中,存在至少一个对象烘焙信息指示虚拟对象不进行透明烘焙,对不进行透明烘焙的虚拟对象进行烘焙,直至虚拟场景中不进行透明烘焙的虚拟对象均已被烘焙。
在一些可选的实施例中,本发明实施例提供的体积渲染装置还可以包括顺序确定单元907,可以用于基于子模型在模型空间中的模型顶点的顶点标识,确定模型顶点对应的模型渲染顺序;
模型渲染单元903,可以用于根据子模型对应的透明度和模型渲染顺序,分别将子模型对应的采样结果在子模型中进行渲染,得到体积渲染模型。
在一些可选的实施例中,如图10所示,本发明实施例提供的体积渲染装置还可以包括面片生成单元908,可以用于在体积模型对应的虚拟场景中生成多边形面片,多边形面片用于显示目标渲染结果图像;
图像显示单元905,可以用于基于当前的摄像机方向,对多边形面片的面片朝向进行修改,得到目标多边形面片;
根据摄像机方向,计算摄像机方向针对目标多边形面片的目标观察方向;
从渲染结果图像集合中选择与目标观察方向匹配的目标渲染结果图像;
在目标多边形面片中对目标渲染结果图像进行显示。
由上可知,通过体积渲染装置,可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
此外,相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端。如图11所示,图11为本申请实施例提供的计算机设备的结构示意图。该计算机设备1100包括有一个或者一个以上处理核心的处理器1101、有一个或一个以上计算机可读存储介质的存储器1102及存储在存储器1102上并可在处理器上运行的计算机程序。其中,处理器1101与存储器1102电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器1101是计算机设备1100的控制中心,利用各种接口和线路连接整个计算机设备1100的各个部分,通过运行或加载存储在存储器1102内的软件程序和/或模块,以及调用存储在存储器1102内的数据,执行计算机设备1100的各种功能和处理数据,从而对计算机设备1100进行整体监控。
在本申请实施例中,计算机设备1100中的处理器1101会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器1102中,并由处理器1101来运行存储在存储器1102中的应用程序,从而实现各种功能:
获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果;
基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型;
烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示。
在一些可选的实施例中,根据各子模型对三维纹理贴图进行贴图采样,得到各子模型对应的采样结果,可以包括:
根据子模型在体积模型的模型空间中的顶点坐标,确定子模型在三维纹理贴图中对应的采样纹理贴图坐标;
对三维纹理贴图在采样纹理贴图坐标对应的颜色信息进行采样,得到子模型对应的采样结果。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,可以包括:
将子模型对应的采样结果和透明度进行融合计算,得到子模型对应的透明采样信息;
叠加渲染子模型对应的透明采样信息,得到体积渲染模型。
在一些可选的实施例中,叠加渲染各透明采样信息,得到体积渲染模型,可以包括:
基于子模型对应的透明采样信息的亮度信息,对透明采样信息进行叠加渲染,生成体积渲染模型。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型之前,本发明实施例提供的体积渲染方法还可以包括:
获取体积模型对应的虚拟场景中的虚拟对象的对象烘焙信息,对象烘焙信息用于指示虚拟对象是否进行透明烘焙;
若虚拟场景中,存在至少一个对象烘焙信息指示虚拟对象不进行透明烘焙,对不进行透明烘焙的虚拟对象进行烘焙,直至虚拟场景中不进行透明烘焙的虚拟对象均已被烘焙。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型之前,本发明实施例提供的体积渲染方法还可以包括:
基于子模型在模型空间中的模型顶点的顶点标识,确定模型顶点对应的模型渲染顺序;
基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,可以包括:
根据子模型对应的透明度和模型渲染顺序,分别将子模型对应的采样结果在子模型中进行渲染,得到体积渲染模型。
在一些可选的实施例中,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示之前,本发明实施例提供的体积渲染方法还可以包括:
在体积模型对应的虚拟场景中生成多边形面片,多边形面片用于显示目标渲染结果图像;
基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示,可以包括:
基于当前的摄像机方向,对多边形面片的面片朝向进行修改,得到目标多边形面片;
根据摄像机方向,计算摄像机方向针对目标多边形面片的目标观察方向;
从渲染结果图像集合中选择与目标观察方向匹配的目标渲染结果图像;
在目标多边形面片中对目标渲染结果图像进行显示。
本方案可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图11所示,计算机设备1100还包括:触控显示屏1103、射频电路1104、音频电路1105、输入单元1106以及电源1107。其中,处理器1101分别与触控显示屏1103、射频电路1104、音频电路1105、输入单元1106以及电源1107电性连接。本领域技术人员可以理解,图11中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏1103可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏1103可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1101,并能接收处理器1101发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器1101以确定触摸事件的类型,随后处理器1101根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏1103而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏1103也可以作为输入单元1106的一部分实现输入功能。
射频电路1104可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
音频电路1105可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路1105可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路1105接收后转换为音频数据,再将音频数据输出处理器1101处理后,经射频电路1104以发送给比如另一计算机设备,或者将音频数据输出至存储器1102以便进一步处理。音频电路1105还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
输入单元1106可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源1107用于给计算机设备1100的各个部件供电。可选的,电源1107可以通过电源管理系统与处理器1101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1107还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图11中未示出,计算机设备1100还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
由上可知,本实施例提供的计算机设备,可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种体积渲染方法中的步骤。例如,该计算机程序可以执行如下步骤:
获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果;
基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型;
烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示。
在一些可选的实施例中,根据各子模型对三维纹理贴图进行贴图采样,得到各子模型对应的采样结果,可以包括:
根据子模型在体积模型的模型空间中的顶点坐标,确定子模型在三维纹理贴图中对应的采样纹理贴图坐标;
对三维纹理贴图在采样纹理贴图坐标对应的颜色信息进行采样,得到子模型对应的采样结果。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,可以包括:
将子模型对应的采样结果和透明度进行融合计算,得到子模型对应的透明采样信息;
叠加渲染子模型对应的透明采样信息,得到体积渲染模型。
在一些可选的实施例中,叠加渲染各透明采样信息,得到体积渲染模型,可以包括:
基于子模型对应的透明采样信息的亮度信息,对透明采样信息进行叠加渲染,生成体积渲染模型。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型之前,本发明实施例提供的体积渲染方法还可以包括:
获取体积模型对应的虚拟场景中的虚拟对象的对象烘焙信息,对象烘焙信息用于指示虚拟对象是否进行透明烘焙;
若虚拟场景中,存在至少一个对象烘焙信息指示虚拟对象不进行透明烘焙,对不进行透明烘焙的虚拟对象进行烘焙,直至虚拟场景中不进行透明烘焙的虚拟对象均已被烘焙。
在一些可选的实施例中,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型之前,本发明实施例提供的体积渲染方法还可以包括:
基于子模型在模型空间中的模型顶点的顶点标识,确定模型顶点对应的模型渲染顺序;
基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,可以包括:
根据子模型对应的透明度和模型渲染顺序,分别将子模型对应的采样结果在子模型中进行渲染,得到体积渲染模型。
在一些可选的实施例中,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示之前,本发明实施例提供的体积渲染方法还可以包括:
在体积模型对应的虚拟场景中生成多边形面片,多边形面片用于显示目标渲染结果图像;
基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示,可以包括:
基于当前的摄像机方向,对多边形面片的面片朝向进行修改,得到目标多边形面片;
根据摄像机方向,计算摄像机方向针对目标多边形面片的目标观察方向;
从渲染结果图像集合中选择与目标观察方向匹配的目标渲染结果图像;
在目标多边形面片中对目标渲染结果图像进行显示。
本方案可以获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图,根据子模型对三维纹理贴图进行贴图采样,得到子模型对应的采样结果,基于采样结果和子模型对应的透明度,对体积模型进行渲染,得到体积渲染模型,烘焙体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合,基于当前的摄像机方向,从渲染结果图像集合中选择摄像机方向对应的目标渲染结果图像进行显示;由于在本发明实施例中,通过多层嵌套的体积模型,使得各层子模型的渲染效果叠加得到体积渲染模型,烘焙出体积渲染模型在多个观察方向的渲染结果图像以根据实际的摄像机方向进行显示,因此,可以减少在体积渲染时的性能开销,降低渲染成本,实现可信度和立体感高的体积渲染效果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种体积渲染方法中的步骤,因此,可以实现本申请实施例所提供的任一种体积渲染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种体积渲染方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种体积渲染方法,其特征在于,包括:
获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
根据所述子模型对所述三维纹理贴图进行贴图采样,得到所述子模型对应的采样结果;
基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型;
烘焙所述体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示。
2.根据权利要求1所述的体积渲染方法,其特征在于,所述根据所述子模型对所述三维纹理贴图进行贴图采样,得到所述子模型对应的采样结果,包括:
根据所述子模型在所述体积模型的模型空间中的顶点坐标,确定所述子模型在所述三维纹理贴图中对应的采样纹理贴图坐标;
对所述三维纹理贴图在所述采样纹理贴图坐标对应的颜色信息进行采样,得到所述子模型对应的采样结果。
3.根据权利要求1所述的体积渲染方法,其特征在于,所述基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型,包括:
将所述子模型对应的所述采样结果和透明度进行融合计算,得到所述子模型对应的透明采样信息;
叠加渲染所述子模型对应的所述透明采样信息,得到体积渲染模型。
4.根据权利要求3所述的体积渲染方法,其特征在于,所述叠加渲染所述子模型对应的所述透明采样信息,得到体积渲染模型,包括:
基于所述子模型对应的所述透明采样信息的亮度信息,对所述透明采样信息进行叠加渲染,生成体积渲染模型。
5.根据权利要求1所述的体积渲染方法,其特征在于,所述基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型之前,所述方法还包括:
获取所述体积模型对应的虚拟场景中的虚拟对象的对象烘焙信息,所述对象烘焙信息用于指示所述虚拟对象是否进行透明烘焙;
若所述虚拟场景中,存在至少一个所述对象烘焙信息指示所述虚拟对象不进行透明烘焙,对不进行透明烘焙的所述虚拟对象进行烘焙,直至所述虚拟场景中所述不进行透明烘焙的虚拟对象均已被烘焙。
6.根据权利要求1所述的体积渲染方法,其特征在于,所述基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型之前,所述方法还包括:
基于所述子模型在模型空间中的模型顶点的顶点标识,确定所述模型顶点对应的模型渲染顺序;
所述基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型,包括:
根据所述子模型对应的透明度和所述模型渲染顺序,将所述子模型对应的所述采样结果在所述子模型中进行渲染,得到体积渲染模型。
7.根据权利要求1所述的体积渲染方法,其特征在于,所述基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示之前,所述方法还包括:
在所述体积模型对应的虚拟场景中生成多边形面片,所述多边形面片用于显示所述目标渲染结果图像;
所述基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示,包括:
基于当前的摄像机方向,对所述多边形面片的面片朝向进行修改,得到目标多边形面片;
根据所述摄像机方向,计算所述摄像机方向针对所述目标多边形面片的目标观察方向;
从所述渲染结果图像集合中选择与所述目标观察方向匹配的目标渲染结果图像;
在所述目标多边形面片中对所述目标渲染结果图像进行显示。
8.一种体积渲染装置,其特征在于,包括:
模型获取单元,用于获取由至少两层子模型嵌套生成的体积模型,以及预设的三维纹理贴图;
贴图采样单元,用于根据所述子模型对所述三维纹理贴图进行贴图采样,得到所述子模型对应的采样结果;
模型渲染单元,用于基于所述采样结果和所述子模型对应的透明度,对所述体积模型进行渲染,得到体积渲染模型;
图像烘焙单元,用于烘焙所述体积渲染模型在若干个观察方向对应的渲染结果图像,得到渲染结果图像集合;
图像显示单元,用于基于当前的摄像机方向,从所述渲染结果图像集合中选择所述摄像机方向对应的目标渲染结果图像进行显示。
9.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至7任一项所述的体积渲染方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的体积渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310247486.8A CN116402931A (zh) | 2023-03-14 | 2023-03-14 | 体积渲染方法、装置、计算机设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310247486.8A CN116402931A (zh) | 2023-03-14 | 2023-03-14 | 体积渲染方法、装置、计算机设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116402931A true CN116402931A (zh) | 2023-07-07 |
Family
ID=87006608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310247486.8A Pending CN116402931A (zh) | 2023-03-14 | 2023-03-14 | 体积渲染方法、装置、计算机设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116402931A (zh) |
-
2023
- 2023-03-14 CN CN202310247486.8A patent/CN116402931A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112263837B (zh) | 虚拟环境中的天气渲染方法、装置、设备及存储介质 | |
CN112370784B (zh) | 虚拟场景显示方法、装置、设备以及存储介质 | |
CN107886562A (zh) | 水面渲染方法、装置及可读存储介质 | |
CN111729307A (zh) | 虚拟场景显示方法、装置、设备以及存储介质 | |
CN111325822B (zh) | 热点图的显示方法、装置、设备及可读存储介质 | |
CN115082608A (zh) | 虚拟角色服装渲染方法、装置、电子设备和存储介质 | |
CN112884874A (zh) | 在虚拟模型上贴花的方法、装置、设备及介质 | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
CN111445563A (zh) | 一种图像生成的方法以及相关装置 | |
CN112206519B (zh) | 实现游戏场景环境变化的方法、装置、存储介质及计算机设备 | |
CN112884873B (zh) | 虚拟环境中虚拟物体的渲染方法、装置、设备及介质 | |
CN108230430B (zh) | 云层遮罩图的处理方法及装置 | |
CN112950753B (zh) | 虚拟植物显示方法、装置、设备及存储介质 | |
CN117218273A (zh) | 图像渲染方法以及装置 | |
CN116212374A (zh) | 模型处理方法、装置、计算机设备和存储介质 | |
CN116402931A (zh) | 体积渲染方法、装置、计算机设备和计算机可读存储介质 | |
CN113313796B (zh) | 场景生成方法、装置、计算机设备和存储介质 | |
CN114949863A (zh) | 虚拟角色眼睛渲染方法、装置、电子设备和存储介质 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
CN107038737B (zh) | 立体棋牌绘制方法和装置 | |
CN116524063B (zh) | 光照颜色的计算方法、装置、设备及介质 | |
CN116704107B (zh) | 一种图像渲染方法和相关装置 | |
CN115810077A (zh) | 一种虚拟对象渲染方法、装置、计算机设备和存储介质 | |
CN116030179B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN118134773A (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 |