CN114299213A - 虚拟场景的显示方法、装置、介质及设备 - Google Patents
虚拟场景的显示方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN114299213A CN114299213A CN202111614030.8A CN202111614030A CN114299213A CN 114299213 A CN114299213 A CN 114299213A CN 202111614030 A CN202111614030 A CN 202111614030A CN 114299213 A CN114299213 A CN 114299213A
- Authority
- CN
- China
- Prior art keywords
- virtual scene
- unit
- unit space
- force field
- speed
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本公开的实施例提供了一种虚拟场景的显示方法、虚拟场景的显示装置、计算机可读介质及电子设备,涉及计算机技术领域,上述方法可以当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;获取每个单元空间在风力的作用下得到的力场值;根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;根据更新后的顶点的材质信息进行虚拟场景的渲染。这样可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种虚拟场景的显示方法、虚拟场景的显示装置、计算机可读介质及电子设备。
背景技术
在虚拟场景渲染领域,为了表现虚拟场景中各个模型之间的互动关系,通常会通过虚拟场景中的风力强度以及方向参数等调整各个模型的姿态,从而达到模型互动的效果,但是,这种方式通常是通过预设参数值的方式实现的,当一个模型更新了姿态后自然会触发另一个模型的姿态更新,但是,这两者之间不存在关联关系,即,另一个模型的姿态更新并不依赖于已更新姿态的模型的变化参数,这样容易导致虚拟场景中模型交互的真实性较低的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种虚拟场景的显示方法、虚拟场景的显示装置、计算机可读介质及电子设备,可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
本公开实施例的第一方面提供了本公开实施例的第一方面提供了一种虚拟场景的显示方法,通过终端设备提供图形用户界面,图形用户界面包括虚拟场景,虚拟场景包含目标模型,上述方法包括:
当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;
获取每个单元空间在风力的作用下得到的力场值;
根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;
根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;
根据更新后的顶点的材质信息进行虚拟场景的渲染。
在本公开的一种示例性实施例中,在虚拟场景中建立流体场,包括:
判断风力是否为根据目标模型的运动生成的;
若是,则根据目标模型的运动在虚拟场景中建立流体场;
若否,则根据风力的类型以及预设的力场参数建立流体场。
在本公开的一种示例性实施例中,根据目标模型的运动在虚拟场景中建立流体场,包括:
获取目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,第一虚拟场景图像和第二虚拟场景图像为相邻的两帧图像;
根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度;
根据瞬时速度确定待建立的流体场的力场值;
根据力场值建立流体场。
在本公开的一种示例性实施例中,根据瞬时速度确定待建立的流体场的力场值,包括:
根据瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值。
在本公开的一种示例性实施例中,根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:
根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度。
在本公开的一种示例性实施例中,风力的类型包括直线型风力、涡旋状风力、放射状的风力。
在本公开的一种示例性实施例中,根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度,包括:
对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度:
根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
本公开实施例的第二方面提供了一种虚拟场景的显示装置,上述装置提供图形用户界面,图形用户界面包括虚拟场景,虚拟场景包含目标模型,上述装置包括:流体场建立单元、参数获取单元、力场注入单元、信息更新单元、场景渲染单元。
流体场建立单元,用于当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;
参数获取单元,用于获取每个单元空间在风力的作用下得到的力场值;
力场注入单元,用于根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;
信息更新单元,用于根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;
场景渲染单元,用于根据更新后的顶点的材质信息进行虚拟场景的渲染。
在本公开的一种示例性实施例中,流体场建立单元在虚拟场景中建立流体场,包括:
流体场建立单元判断风力是否为根据目标模型的运动生成的;
若是,流体场建立单元根据目标模型的运动在虚拟场景中建立流体场;
若否,流体场建立单元根据风力的类型以及预设的力场参数建立流体场。
在本公开的一种示例性实施例中,流体场建立单元根据目标模型的运动在虚拟场景中建立流体场,包括:
流体场建立单元获取目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,第一虚拟场景图像和第二虚拟场景图像为相邻的两帧图像;
流体场建立单元根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度;
流体场建立单元根据瞬时速度确定待建立的流体场的力场值;
流体场建立单元根据力场值建立流体场。
在本公开的一种示例性实施例中,流体场建立单元根据瞬时速度确定待建立的流体场的力场值,包括:
流体场建立单元根据瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值。
在本公开的一种示例性实施例中,流体场建立单元根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:
流体场建立单元根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度。
在本公开的一种示例性实施例中,风力的类型包括直线型风力、涡旋状风力、放射状的风力。
在本公开的一种示例性实施例中,力场注入单元根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度,包括:
力场注入单元对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度:
力场注入单元根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
根据本公开实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现如上述实施例中第一方面的虚拟场景的显示方法。
根据本公开实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上述实施例中第一方面的虚拟场景的显示方法。
根据本申请的第五方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
本公开实施例提供的技术方案可以包括以下有益效果:
在本公开的一些实施例所提供的技术方案,具体包括:当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;获取每个单元空间在风力的作用下得到的力场值;根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;根据更新后的顶点的材质信息进行虚拟场景的渲染。实施本公开的实施例,可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了可以应用本公开实施例的一种虚拟场景的显示方法及虚拟场景的显示装置的示例性系统架构的示意图;
图2示意性示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一个实施例的虚拟场景的显示方法的流程图;
图4示意性示出了根据本公开的一个实施例的力场示意图;
图5示意性示出了根据本公开的另一个实施例的力场示意图;
图6示意性示出了根据本公开的一个实施例的当前单元空间和待偏移的单元空间示意图;
图7示意性示出了根据本公开的另一个实施例的当前单元空间和待偏移的单元空间示意图;
图8示意性示出了根据本公开的一个实施例的放射状力场示意图;
图9示意性示出了根据本公开的一个实施例的放射状力场中心压力真空示意图;
图10示意性示出了根据本公开的一个实施例的单位空间的压力清零处理结果示意图;
图11示意性示出了根据本公开的一个实施例的草模型示意图;
图12示意性示出了根据本公开的一个实施例的噪声示意图;
图13示意性示出了根据本公开的一个实施例的噪声处理示意图;
图14示意性示出了根据本公开的一个实施例的虚拟场景的显示方法的流程图;
图15示意性示出了根据本公开的一个实施例的虚拟场景的显示装置的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示意性示出了可以应用本公开实施例的一种虚拟场景的显示方法及虚拟场景的显示装置的示例性系统架构的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。其中,服务器105用于执行:当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;获取每个单元空间在风力的作用下得到的力场值;根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;根据更新后的顶点的材质信息进行虚拟场景的渲染。其中,终端设备101、102、103用于执行:当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;获取每个单元空间在风力的作用下得到的力场值;根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;根据更新后的顶点的材质信息进行虚拟场景的渲染。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从储存部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在(RAM)203中,还存储有系统操作所需的各种程序和数据。(CPU)201、(ROM)202以及(RAM)203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至(I/O)接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的储存部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至(I/O)接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入储存部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的方法和装置中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中的方法。例如,图2所示的电子设备可以实现如图3所示的各个步骤等。
本示例实施方式提供了一种虚拟场景的显示方法,通过终端设备提供图形用户界面,图形用户界面包括虚拟场景,虚拟场景包含目标模型,参考图3所示,该虚拟场景的显示方法可以包括以下步骤S310至步骤S350,具体地:
步骤S310:当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间。
步骤S320:获取每个单元空间在风力的作用下得到的力场值。
步骤S330:根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度。
步骤S340:根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新。
步骤S350:根据更新后的顶点的材质信息进行虚拟场景的渲染。
可见,实施图3所示的方法,可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
针对上述步骤,进行以下详细说明。
对于步骤S310中,当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间。
具体地,目标模型可以用于表征运动对象,目标模型可以为人物模型、植物模型、动物模型等,本申请实施例不作限定,目标模型的展示方式可以为三维模型/二维模型。
此外,虚拟场景可以用于表征目标模型所处的环境,虚拟场景可以包括虚拟游戏场景、VR场景、AR场景等,其中的虚拟游戏场景可以展示为游戏画面。
此外,风力可以理解为基于目标模型的运动产生的用于影响虚拟场景中其他模型的动态参数,风力的类型包括直线型风力、涡旋状风力、放射状的风力等多种类型。
此外,流体场是一种欧拉场,是基于流体力学构建的,流体力学是力学的一个分支,主要研究在各种力的作用下,流体本身的静止状态和运动状态以及流体和固体界壁间有相对运动时的相互作用和流动规律。流体场中可以包括一个或多个场景模型,虚拟场景中包括目标模型和场景模型,举例来说,场景模型可以为草模型、树模型、汽车模型等用于填充虚拟场景的模型。
此外,单元空间可以理解为3D虚拟场景中的三维立方体,也可以理解为虚拟场景中的2D虚拟场景中的二维矩形(如,正方形)。流体场中包含的多个单元空间可以为等尺寸的单元空间,多个单元空间的堆叠/排列可以与虚拟场景占用的空间等尺寸。
可选的,在步骤S310之前,上述方法还可以包括:当检测到目标模型发生动态变化时,确定与该动态变化对应的运动类型,若该运动类型属于预设类型,则判定检测到目标模型在虚拟场景中产生风力;其中,预设类型可以包括一种或多种,如,走路、跑步、冲刺、挥刀、投掷、突刺、跳斩等。此外,目标模型可以理解为游戏角色,目标模型的动态变化可以是由玩家触发的动作(如,玩家触发目标角色执行挥刀动作),也可以为游戏中预设的动作(如,目标模型在单位时间内未被玩家操控,则执行原地坐下休息的动作)。
作为步骤S310的一种可选实施例,在虚拟场景中建立流体场,包括:判断风力是否为根据目标模型的运动生成的;若是,则根据目标模型的运动在虚拟场景中建立流体场;若否,则根据风力的类型以及预设的力场参数建立流体场。
具体地,风力的类型可以包括一种或多种,如,直线风力(如,风扇风力)、漩涡状风力(如,旋风风力)、放射状风力(如,爆炸风力)等,本申请实施例不作限定。
可选的,若风力的类型为直线风力,根据风力的类型以及预设的力场参数建立流体场,包括:获取直线风力对应的力场参数,力场参数至少包括力场强度和力场方向,具体力场参数对应的力场可以为图4所示的椭锥形直线力场或球形直线力场;根据力场参数建立流体场。
可选的,若风力的类型为漩涡状风力,根据风力的类型以及预设的力场参数建立流体场,包括:获取漩涡状风力对应的力场参数,力场参数至少包括旋转强度f、轴方向D、力场位置P0,具体力场参数对应的力场可以为图5所示的椭锥形漩涡力场或球形漩涡力场;将待处理位置P和力场位置P0代入表达式V0=P-P0,以确定出向量V0;将向量V0归一化为V1并计算叉积D×V1,以确定出力场方向向量F;进而,将F与强度f的乘积确定为力场值;根据力场值建立流体场。进而,可选的,将向量V0归一化为V1并计算叉积D×V1,以确定出力场方向向量F,包括:根据预设的缩放因子对向量V0进行长度适应性调整,并将适应性调整结果归一化为V1,根据V1以及预设的缩放因子,计算叉积D×V1。
可选的,若风力的类型为放射状风力,根据风力的类型以及预设的力场参数建立流体场,包括:获取放射状风力对应的力场参数,力场参数至少包括强度f、力场中心位置P0;将待处理位置P和力场中心位置P0代入表达式(P-P0)*f,以确定力场值;根据力场值建立流体场。进而,可选的,将待处理位置P和力场中心位置P0代入表达式(P-P0)*f,以确定力场值,包括:基于表达式(P-P0)*f以及将待处理位置P、力场中心位置P0、预设的缩放因子确定力场值。
可见,实施该可选实施例,可以通过对于风力的产生源头进行判定,对于不同的产生源头执行不同的流体场建立方式,这样可以提升对于虚拟场景中的渲染精度,提升渲染得到的虚拟场景质量,使得画面中的各个模型的运动更为生动、逼真。
作为上述实施例的进一步实施方式,根据目标模型的运动在虚拟场景中建立流体场,包括:获取目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,第一虚拟场景图像和第二虚拟场景图像为相邻的两帧图像;根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度;根据瞬时速度确定待建立的流体场的力场值;根据力场值建立流体场。
具体地,当风力时根据目标模型的运动生成的,则目标模型可以为人物模型/角色模型,该目标模型的运动可以由玩家操控。基于此,可以获取目标模型在第一虚拟场景图形中的第一位置P和在第二虚拟场景图形中的第二位置P1,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔△t1(如,0.1ms);其中,第一虚拟场景图形可以理解为游戏画面的当前帧,第二虚拟场景图形可以理解为当前帧的上一帧,第一位置P和第二位置P1均可以通过相对坐标/绝对坐标进行表示,本申请实施例不作限定。
基于此,根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:将第一位置P、第二位置P1以及显示时间间隔△t1代入表达式V=(P-P1)/△t1,以确定目标模型在第二虚拟场景图形中对应的瞬时速度V。其中,需要说明的是,针对任意两个相邻的虚拟场景图像(即,相邻帧)都可以通过执行上述实施例的步骤获取对应的瞬时速度。
可见,实施该可选实施例,可以通过对于虚拟场景图形对应的瞬时速度的计算,提升所建立的流体场精度,基于精度更高的流体场可渲染出更为生动自然的虚拟场景图形。
作为上述实施方式的更进一步实施方式,根据瞬时速度确定待建立的流体场的力场值,包括:根据瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值。
具体地,预设的缩放因子可以用于表征瞬时速度和力场值之间的比例。
可见,实施该可选实施例,可以通过瞬时速度和缩放因子确定出更准确的力场值,从而提升力场值的精度。
作为上述实施方式的更进一步实施方式,根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度。
具体地,根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:将第一位置P、第二位置P1、显示时间间隔△t1代入表达式V0=(P-P1)/△t1,以计算出瞬时速度V0;进而,将瞬时速度V0、预设的平滑因子r、目标模型在第一虚拟场景图形中对应的瞬时速度V1代入表达式V=V0*r+V1*(1-r),以计算出目标模型在第二虚拟场景图形中对应的瞬时速度V。其中,平滑因子r可以表示为数值,举例来说,该数值的取值范围可以为(0,1]。针对任意两个相邻的虚拟场景图像(即,相邻帧)都可以通过执行上述实施例的步骤获取平滑处理后的瞬时速度。需要说明的是,平滑处理后的瞬时速度V与平滑前的瞬时速度V可以表示为不同的数值。
基于此,不仅可以根据瞬时速度确定待建立的流体场的力场值,也可以根据平滑处理后的瞬时速度确定待建立的流体场的力场值;其中的力场值属于一种力场参数。
可见,实施该可选实施例,可以使得各虚拟场景图形对应的瞬时速度之间的变化更为平滑,据此确定的力场值能够使得渲染出的虚拟场景中各模型的变化更为真实、自然。
对于步骤S320中,获取每个单元空间在风力的作用下得到的力场值。
具体地,每个单元空间在风力的作用下得到的力场值可以相同也可以不同,本申请实施例不作限定。举例来说,对于放射状风力/直线型风力,相对于放射中心而言,处于同一半径下的单元空间可以对应于相同的力场值。
对于步骤S330中,根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度。
具体地,每个单元空间更新后的目标速度不同于每个单元空间更新前的目标速度,或者,部分单元空间更新后的目标速度不同于更新前的目标速度,本申请实施例不作限定。
作为步骤S330的一种可选实施例,根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度,包括:对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度:根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
具体地,根据每个单元空间的力场值进行力场注入处理,包括:将各单元空间的力场值F、各单元空间对应的力场作用时长△t2、各单元空间的速度V0代入表达式V=V0+F*△t2,得到各单元空间更新后的目标速度V。
具体地,当虚拟场景为三维场景时,根据每个单元空间的力场值进行扩散处理,包括:确定各单元空间的相邻单元空间,相邻单元空间至少包括当前单元空间的上单元、下单元、左单元、右单元、前单元、后单元中至少一种;将相邻单元空间分别对应的速度V0上、V0下、V0左、V0右、V0前、V0后代入表达式V=(V0+(V0上+V0下+V0左+V0右+V0前+V0后)*a)/(1+a*6),以确定各单元空间更新后的目标速度V;其中,a为预设扩散值,可以表示为常数。
具体地,当虚拟场景为二维场景时,根据每个单元空间的力场值进行扩散处理,包括:确定各单元空间的相邻单元空间,相邻单元空间至少包括当前单元空间的上单元、下单元、左单元、右单元中至少一种;将相邻单元空间分别对应的速度V0上、V0下、V0左、V0右代入表达式V=(V0+(V0上+V0下+V0左+V0右)*a)/(1+a*4),以确定各单元空间更新后的目标速度V;其中,a为预设扩散值,可以表示为常数。
具体地,根据每个单元空间的力场值进行不可压缩处理,包括:根据各单元空间的速度确定各单元空间的散度;根据各单元空间的散度迭代各单元空间的压力值;根据各单元空间的压力值以及各单元空间的速度计算各单元空间的目标速度。
进一步地,若虚拟场景为三维场景,三维虚拟场景对应的长、宽、高分别可以表示为Nx个单元、Ny个单元、Nz个单元,x代表x轴,y代表y轴,z代表z轴,Nx还代表x轴上第N个单元空间,Ny还代表y轴上第N个单元空间,Nz还代表z轴上第N个单元空间,N为正整数。
基于此,根据各单元空间的速度确定各单元空间的散度,包括:确定各单元空间的速度向量的分量V0.x、V0.y、V0.z;确定V0上对应的V0上.y、V0下对应的V0下.y、V0左对应的V0左.x、V0右对应的V0右.x、V0前对应的V0前.z、V0后对应的V0后.z;将当前单位空间(即,虚拟场景中任一单位空间)对应的Nx、Ny、Nz以及V0上.y、V0下.y、V0左.x、V0右.x、V0前.z、V0后.z代入表达式d=((V0左.x-V0右.x)/Nx+(V0上.y-V0下.y)/Ny+V0前.z-V0后.z)/Nz)*0.5,以确定出当前单元空间的散度d。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的散度。
进一步地,若虚拟场景为二维场景,二维虚拟场景对应的长、宽分别可以表示为Nx个单元、Ny个单元,x代表x轴,y代表y轴,Nx还代表x轴上第N个单元空间,Ny还代表y轴上第N个单元空间,N为正整数。
基于此,根据各单元空间的速度确定各单元空间的散度,包括:确定各单元空间的速度向量的分量V0.x、V0.y;确定V0上对应的V0上.y、V0下对应的V0下.y、V0左对应的V0左.x、V0右对应的V0右.x;将当前单位空间(即,虚拟场景中任一单位空间)对应的Nx、Ny以及V0上.y、V0下.y、V0左.x、V0右.x代入表达式d=((V0左.x-V0右.x)/Nx+(V0上.y-V0下.y)/Ny)*0.5,以确定出当前单元空间的散度d。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的散度。
进而,可选的,若虚拟场景为三维场景,根据各单元空间的压力值以及各单元空间的速度计算各单元空间的目标速度,包括:在各单元空间的压力值为初始值0时,对各单元空间的压力值进行迭代次数(如,100)的迭代,得到各单元空间最终的压力值p0,确定当前单位空间的上单元、下单元、左单元、右单元、前单元、后单元分别对应的p0上、p0下、p0左、p0右、p0前、p0后;将p0上、p0下、p0左、p0右、p0前、p0后当前单位空间的d代入表达式p=(d+p0左+p0右+p0上+p0下+p0前+p0后)/6,以确定出当前单位空间最终的压力值;根据各单元空间最终的压力值以及各单元空间的速度计算各单元空间的目标速度。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的最终的压力值。
进而,可选的,若虚拟场景为二维场景,根据各单元空间的压力值以及各单元空间的速度计算各单元空间的目标速度,包括:在各单元空间的压力值为初始值0时,对各单元空间的压力值进行迭代次数(如,100)的迭代,得到各单元空间最终的压力值p0,确定当前单位空间的上单元、下单元、左单元、右单元分别对应的p0上、p0下、p0左、p0右;将p0上、p0下、p0左、p0右当前单位空间的d代入表达式p=(d+p0左+p0右+p0上+p0下)/4,以确定出当前单位空间最终的压力值;根据各单元空间最终的压力值以及各单元空间的速度计算各单元空间的目标速度。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的最终的压力值p。
此外,上述方法还可以包括:根据流体场对应的不可压缩度I值确定上述的迭代次数。举例来说,若针对的模型为液体,则流体场对应的不可压缩度I值越大,迭代次数也就越高,若针对的模型为气体,则流体场对应的不可压缩度I值越小,迭代次数也就越少。
进一步地,若虚拟场景为三维场景,根据各单元空间最终的压力值以及各单元空间的速度计算各单元空间的目标速度,包括:确定当前单元空间对应的上单元、下单元、左单元、右单元、前单元、后单元分别对应的p左、p右、p上、p下、p前、p后;将p左、p右、p上、p下、p前、p后当前单元空间的速度V0、代入表达式V=V0+向量(p左-p右,p上-p下,p前-p后)*0.5,以确定出当前单位空间的目标速度V。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的目标速度。
进一步地,若虚拟场景为二维场景,根据各单元空间最终的压力值以及各单元空间的速度计算各单元空间的目标速度,包括:确定当前单元空间对应的上单元、下单元、左单元、右单元分别对应的p左、p右、p上、p下;将p左、p右、p上、p下当前单元空间的速度V0、代入表达式V=V0+向量(p左-p右,p上-p下)*0.5,以确定出当前单位空间的目标速度V。需要说明的是,针对虚拟场景中各单位空间,均可以执行上述步骤,以确定相应的目标速度。
作为一种可选的实施方式,根据每个单元空间的力场值进行对流处理,包括:初始化各单元空间的速度V0为0;将各单元空间的速度V0和力场作用时长△t2分别代入表达式S=V0*△t,以确定各单元空间的流动距离向量S;进而,确定各单元空间的长度间隔△s,根据△s确定各单元空间的偏移单元值S,其中,流动距离向量S可以表示为小数向量。
进而,对偏移单元值S进行向上取整处理以及向下取整处理,以确定当前单元空间的坐标(如,(x,y,z))对应的待偏移的单元空间。例如,将△S=(1.0,2.1,3.8)向上取整为△S=(1,2,3),将△S=(1.0,2.1,3.8)向下取整为△S=(1,3,4),待偏移的单元空间包括(x+1,y+2,z+3)和(x+1,y+2,z+4)。
进而,通过线性插值算法根据当前单元空间的速度V0确定待偏移的单元空间对应的速度值比例,根据速度值比例以及当前单元空间的速度V0确定各单元空间的目标速度;如图6所示,当前单元空间可以展示为左图多个单元空间中的阴影部分,当前单元空间的待偏移的单元空间可以展示为右图多个单元空间中的阴影部分。
其中,待偏移的单元空间对应的速度值比例之和为1,这样可以使得整个流体场的总体速度与目标速度守恒。例如,(x+1,y+2,z+3)单元空间对应的速度值比例为(1-(2.1-2))*(1-(3.8-3)),(x+1,y+2,z+4)单元空间对应的速度值比例为(1-(2.1-2))*(4-3.8),(x+1,y+3,z+4)单元空间对应的速度值比例为(3-2.1)*(4-3.8),(x+1,y+3,z+3)单元空间对应的速度值比例为(3-2.1)*(1-(3.8-3)。
作为另一种可选的实施方式,根据每个单元空间的力场值进行对流处理,包括:将各单元空间的速度V0和力场作用时长△t2分别代入表达式S=V0*△t,以确定各单元空间的流动距离向量S;进而,确定各单元空间的长度间隔△s,根据△s确定各单元空间的偏移单元值S,其中,流动距离向量S可以表示为小数向量;对△s取反,得到-△S。根据-△S进行向上取整处理以及向下取整处理,以确定当前单元空间的坐标(如,(x,y,z))对应的待偏移的单元空间;通过线性插值算法根据当前单元空间的速度V0确定待偏移的单元空间对应的速度值比例,根据速度值比例以及当前单元空间的速度V0确定各单元空间的目标速度。如图7所示,当前单元空间可以展示为左图多个单元空间中的阴影部分,当前单元空间的待偏移的单元空间可以展示为右图多个单元空间中的阴影部分。
此外,由于不可压缩迭代容易使得带压缩的力场注入效果减弱,例如,放射状力场(如图8所示)通过一个点往各方向产生速度,此时该点压力真空(如,图9所示),压力的迭代容易抵消这个力场的影响。基于此,针对放射状力场,方法还可以包括:在根据速度值比例以及当前单元空间的速度V0确定各单元空间的目标速度之后,对受放射状压力影响下变化率大于预设变化率的单位空间的压力清零,处理结果可以入图10所示。
此外,若虚拟场景为Nx*Ny*Nz的三维场景,则该三维场景可以为表示为3D纹理资源;若虚拟场景为Nx*Ny的二维场景,则该二维场景可以为表示为2D纹理资源。
需要说明的是,在实际应用过程中可以根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理中至少一种,若根据每个单元空间的力场值进行的处理包括一种以上,则可以根据力场注入处理、扩散处理、不可压缩处理、对流处理对应的预设顺序依次进行处理,前处理得到的单元空间的目标速度V可以作为后处理的单元空间的速度V0。
可见,实施该可选实施例,可以通过对于每个单元空间目标速度更新,实现对于虚拟场景图形中模型形态的逐帧更新,以实现实时性的真实、逼真的场景特效。
对于步骤S340中,根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新。
具体地,材质信息可以包括用于表征顶点的一个或多个维度的参数。
可选的,根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新,包括:获取每个单元空间的颜色参数;根据每个单元空间的颜色参数和目标速度对相应的单元空间中的顶点的材质信息进行更新。
对于步骤S350中,根据更新后的顶点的材质信息进行虚拟场景的渲染。
可选的,根据更新后的顶点的材质信息进行虚拟场景的渲染,包括:获取刚体所在单元空间的位置,根据刚体所在单元空间的位置、更新比例关系以及更新范围确定刚体所在单元空间的冲量,将冲量转化为风速值,根据风速值及更新后的顶点的材质信息进行虚拟场景的渲染。
可选的,根据更新后的顶点的材质信息进行虚拟场景的渲染,包括:获取布料所在单元空间的位置,根据布料所在单元空间的位置、更新比例关系以及更新范围确定布料所在单元空间的冲量,将冲量转化为风速值,根据风速值及更新后的顶点的材质信息进行虚拟场景的渲染。
可选的,根据更新后的顶点的材质信息进行虚拟场景的渲染,包括:获取音效所在单元空间的被倾听位置,根据音效所在单元空间的被倾听位置确定音效所在单元空间的风速值,根据风速值及更新后的顶点的材质信息进行虚拟场景的渲染。
此外,根据更新后的顶点的材质信息进行虚拟场景的渲染之后,还包括:在下一帧的渲染响应得到针对当前帧的更新结果,这样可以减少对于计算资源的消耗。
举例来说,若虚拟场景中包含的模型包括草模型(如图11所示)材质信息包括草模型的顶点摆动方向和摆动周期,根据更新后的顶点的材质信息进行虚拟场景的渲染的方式可以为:根据草模型顶点位置确定流体风场贴图的单元空间位置;根据流体风场贴图的所在单元空间的位置、更新比例关系以及更新范围确定所在单元空间的冲量,将冲量转化为风速值;根据风速值从预设的多个噪声贴图中选取目标噪声贴图,目标噪声贴图的数量可以为一个或多个;根据目标噪声贴图确定草模型的摆动频率;根据草模型摆动频率、草模型风速值、草模型摆动方向进行虚拟场景的渲染。
需要说明的是,噪声贴图可以包括一个或多个,若存在多个,则可以如图12所示,图12中的噪声贴图1210、噪声贴图1220、噪声贴图1230、噪声贴图1240、噪声贴图1250、噪声贴图1260、噪声贴图1270分别对应的频率成倍频比例;噪声贴图1210、噪声贴图1220、噪声贴图1230、噪声贴图1240、噪声贴图1250、噪声贴图1260、噪声贴图1270分别对应的尺寸可以为1*1、2*2、4*4、8*8、16*16、32*32、64*64;噪声贴图1210、噪声贴图1220、噪声贴图1230、噪声贴图1240、噪声贴图1250、噪声贴图1260、噪声贴图1270分别对应了1、2、4、8、16、32、64倍的摆动频率摆动频率和风速成对应关系。
其中,针对噪声贴图1210、噪声贴图1220、噪声贴图1230、噪声贴图1240、噪声贴图1250、噪声贴图1260、噪声贴图1270的生成方式可以为,基于预设的噪声贴图1210生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1220;基于噪声贴图1220生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1230;基于噪声贴图1230生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1240;基于噪声贴图1240生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1250;基于噪声贴图1250生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1260;基于噪声贴图1260生成(n+2)*(n+2)的随机数,通过平滑插值生成噪声贴图1270。
此外,针对上述实施例,当风速值介于上述噪声贴图1210、噪声贴图1220、噪声贴图1230、噪声贴图1240、噪声贴图1250、噪声贴图1260、噪声贴图1270中任意两个或两个以上噪声贴图之间,则可以通过插值算法计算摆动频率以及风速值。
如图13所示,当风速值介于图13中的噪声贴图1311、噪声贴图1312、噪声贴图1313之间时,根据横向排列的噪声贴图1311、噪声贴图1312、噪声贴图1313的单侧边长作为底边确定等腰三角形;等腰三角形的高可以表示风速值,噪声贴图1311、噪声贴图1312、噪声贴图1313则可以为频率噪声范围,其中,可以将该等腰三角形的斜率调整至预设斜率,再对调整后的等腰三角形所覆盖的噪声贴图进行叠加,以得到目标噪声贴图,进而可以根据目标噪声贴图确定草模型的摆动频率。
当风速值介于图13中的噪声贴图1321、噪声贴图1322、噪声贴图1323、噪声贴图1324之间时,根据横向排列的噪声贴图1321、噪声贴图1322、噪声贴图1323、噪声贴图1324的单侧边长作为底边确定等腰三角形;等腰三角形的高可以表示风速值,噪声贴图1321、噪声贴图1322、噪声贴图1323、噪声贴图1324则可以为频率噪声范围,其中,可以将该等腰三角形的斜率调整至预设斜率,再对调整后的等腰三角形所覆盖的噪声贴图进行叠加,以得到目标噪声贴图,进而可以根据目标噪声贴图确定草模型的摆动频率。
在图3的基础上,请参阅图14,图14示意性示出了根据本公开的一个实施例的虚拟场景的显示方法的流程图,图14是与图3的步骤及其实施例相对应的实施例,用于限定图3的步骤及其实施例之间的一种可选执行关系,如图14所示的虚拟场景的显示方法,通过终端设备提供图形用户界面,图形用户界面包括虚拟场景,虚拟场景包含目标模型,该虚拟场景的显示方法可以包括:步骤S1400~步骤S1490。
步骤S1400:当检测到目标模型在虚拟场景中产生风力时,判断风力是否为根据目标模型的运动生成的。如果是,则执行步骤S1420。如果否,则执行步骤S1410。
步骤S1410:根据风力的类型以及预设的力场参数建立流体场,流体场包含多个单元空间。进而执行步骤S1450。
步骤S1420:获取目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,第一虚拟场景图像和第二虚拟场景图像为相邻的两帧图像。
步骤S1430:根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度。
步骤S1440:根据瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值,并根据力场值建立流体场,流体场包含多个单元空间。进而执行步骤S1450。
步骤S1450:获取每个单元空间在风力的作用下得到的力场值。
步骤S1460:对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度。
步骤S1470:根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
步骤S1480:根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新。
步骤S1490:根据更新后的顶点的材质信息进行虚拟场景的渲染。
需要说明的是,步骤S1400~步骤S1490与图3所示的各步骤及其实施例相对应,针对步骤S1400~步骤S1490的具体实施方式,请参阅图3所示的各步骤及其实施例,此处不再赘述。
可见,实施图14所示的方法,可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
进一步的,在图3的基础上,本示例实施方式中,还提供了一种虚拟场景的显示装置,上述装置提供图形用户界面,图形用户界面包括虚拟场景,虚拟场景包含目标模型,参考图15所示,该虚拟场景的显示装置1500,可以包括:流体场建立单元1501、参数获取单元1502、力场注入单元1503、信息更新单元1504、场景渲染单元1505。
流体场建立单元1501,用于当检测到目标模型在虚拟场景中产生风力时,在虚拟场景中建立流体场,流体场包含多个单元空间;
参数获取单元1502,用于获取每个单元空间在风力的作用下得到的力场值;
力场注入单元1503,用于根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;
信息更新单元1504,用于根据每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;
场景渲染单元1505,用于根据更新后的顶点的材质信息进行虚拟场景的渲染。
其中,风力的类型包括直线型风力、涡旋状风力、放射状的风力。
可见,实施图15所示的装置,可以提升虚拟场景中模型交互的真实性,提升模型之间的姿态变化关联度,进而提升虚拟场景的真实性。
在本公开的一种示例性实施例中,流体场建立单元1501在虚拟场景中建立流体场,包括:
流体场建立单元1501判断风力是否为根据目标模型的运动生成的;
若是,流体场建立单元1501根据目标模型的运动在虚拟场景中建立流体场;
若否,流体场建立单元1501根据风力的类型以及预设的力场参数建立流体场。
可见,实施该可选实施例,可以通过对于风力的产生源头进行判定,对于不同的产生源头执行不同的流体场建立方式,这样可以提升对于虚拟场景中的渲染精度,提升渲染得到的虚拟场景质量,使得画面中的各个模型的运动更为生动、逼真。
在本公开的一种示例性实施例中,流体场建立单元1501根据目标模型的运动在虚拟场景中建立流体场,包括:
流体场建立单元1501获取目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,第一虚拟场景图像和第二虚拟场景图像为相邻的两帧图像;
流体场建立单元1501根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度;
流体场建立单元1501根据瞬时速度确定待建立的流体场的力场值;
流体场建立单元1501根据力场值建立流体场。
可见,实施该可选实施例,可以通过对于虚拟场景图形对应的瞬时速度的计算,提升所建立的流体场精度,基于精度更高的流体场可渲染出更为生动自然的虚拟场景图形。
在本公开的一种示例性实施例中,流体场建立单元1501根据瞬时速度确定待建立的流体场的力场值,包括:
流体场建立单元1501根据瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值。
可见,实施该可选实施例,可以通过瞬时速度和缩放因子确定出更准确的力场值,从而提升力场值的精度。
在本公开的一种示例性实施例中,流体场建立单元1501根据第一位置、第二位置以及显示时间间隔,确定目标模型在第二虚拟场景图形中对应的瞬时速度,包括:
流体场建立单元1501根据第一位置、第二位置、显示时间间隔,以及预设的平滑因子、以及目标模型在第一虚拟场景图形中对应的瞬时速度,确定目标模型在第二虚拟场景图形中对应的瞬时速度。
可见,实施该可选实施例,可以使得各虚拟场景图形对应的瞬时速度之间的变化更为平滑,据此确定的力场值能够使得渲染出的虚拟场景中各模型的变化更为真实、自然。
在本公开的一种示例性实施例中,力场注入单元1503根据每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度,包括:
力场注入单元1503对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度:
力场注入单元1503根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
可见,实施该可选实施例,可以通过对于每个单元空间目标速度更新,实现对于虚拟场景图形中模型形态的逐帧更新,以实现实时性的真实、逼真的场景特效。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
由于本公开的示例实施例的虚拟场景的显示装置的各个功能模块与上述虚拟场景的显示方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的虚拟场景的显示方法的实施例。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种虚拟场景的显示方法,通过终端设备提供图形用户界面,所述图形用户界面包括虚拟场景,所述虚拟场景包含目标模型,其特征在于,所述方法包括:
当检测到所述目标模型在所述虚拟场景中产生风力时,在所述虚拟场景中建立流体场,所述流体场包含多个单元空间;
获取所述每个单元空间在所述风力的作用下得到的力场值;
根据所述每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;
根据所述每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;
根据更新后的顶点的材质信息进行所述虚拟场景的渲染。
2.根据权利要求1所述的显示方法,其特征在于,在所述虚拟场景中建立流体场,包括:
判断所述风力是否为根据所述目标模型的运动生成的;
若是,则根据所述目标模型的运动在所述虚拟场景中建立流体场;
若否,则根据所述风力的类型以及预设的力场参数建立流体场。
3.根据权利要求2所述的显示方法,其特征在于,所述根据所述目标模型的运动在所述虚拟场景中建立流体场,包括:
获取所述目标模型在第一虚拟场景图形中的第一位置和在第二虚拟场景图形中的第二位置,以及所述第一虚拟场景图形和第二虚拟场景图形的显示时间间隔;其中,所述第一虚拟场景图像和所述第二虚拟场景图像为相邻的两帧图像;
根据所述第一位置、所述第二位置以及所述显示时间间隔,确定所述目标模型在所述第二虚拟场景图形中对应的瞬时速度;
根据所述瞬时速度确定待建立的流体场的力场值;
根据所述力场值建立流体场。
4.根据权利要求3所述的显示方法,其特征在于,所述根据所述瞬时速度确定待建立的流体场的力场值,包括:
根据所述瞬时速度以及预设的缩放因子,确定待建立的流体场的力场值。
5.根据权利要求3所述的显示方法,其特征在于,根据所述第一位置、所述第二位置以及所述显示时间间隔,确定所述目标模型在所述第二虚拟场景图形中对应的瞬时速度,包括:
根据所述第一位置、所述第二位置、所述显示时间间隔,以及预设的平滑因子、以及所述目标模型在所述第一虚拟场景图形中对应的瞬时速度,确定所述目标模型在所述第二虚拟场景图形中对应的瞬时速度。
6.根据权利要求2所述的显示方法,其特征在于,所述风力的类型包括直线型风力、涡旋状风力、放射状的风力。
7.根据权利要求1所述的显示方法,其特征在于,所述根据所述每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度,包括:
对每个单元空间的速度依次进行以下处理后,得到每个单元空间更新后的目标速度:
根据每个单元空间的力场值进行力场注入处理、扩散处理、不可压缩处理、对流处理。
8.一种虚拟场景的显示装置,所述装置提供图形用户界面,所述图形用户界面包括虚拟场景,所述虚拟场景包含目标模型,其特征在于,所述装置包括:
流体场建立单元,用于当检测到所述目标模型在所述虚拟场景中产生风力时,在所述虚拟场景中建立流体场,所述流体场包含多个单元空间;
参数获取单元,用于获取所述每个单元空间在所述风力的作用下得到的力场值;
力场注入单元,用于根据所述每个单元空间对应的力场值对对应的单元空间的速度进行力场注入处理,得到每个单元空间更新后的目标速度;
信息更新单元,用于根据所述每个单元空间的目标速度对相应的单元空间中的顶点的材质信息进行更新;
场景渲染单元,用于根据更新后的顶点的材质信息进行所述虚拟场景的渲染。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~7中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111614030.8A CN114299213A (zh) | 2021-12-27 | 2021-12-27 | 虚拟场景的显示方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111614030.8A CN114299213A (zh) | 2021-12-27 | 2021-12-27 | 虚拟场景的显示方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114299213A true CN114299213A (zh) | 2022-04-08 |
Family
ID=80970436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111614030.8A Pending CN114299213A (zh) | 2021-12-27 | 2021-12-27 | 虚拟场景的显示方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114299213A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117036560A (zh) * | 2023-10-10 | 2023-11-10 | 福州朱雀网络科技有限公司 | 一种适用于虚拟场景的风场模拟方法、介质和设备 |
-
2021
- 2021-12-27 CN CN202111614030.8A patent/CN114299213A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117036560A (zh) * | 2023-10-10 | 2023-11-10 | 福州朱雀网络科技有限公司 | 一种适用于虚拟场景的风场模拟方法、介质和设备 |
CN117036560B (zh) * | 2023-10-10 | 2024-01-02 | 福州朱雀网络科技有限公司 | 一种适用于虚拟场景的风场模拟方法、介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10916054B2 (en) | Three-dimensional mesh deformation using deep learning neural networks | |
US7983884B2 (en) | Water particle manipulation | |
KR20080090671A (ko) | 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치 | |
Nadalutti et al. | Rendering of X3D content on mobile devices with OpenGL ES | |
CN110298922B (zh) | 一种三维模型简化方法、装置及设备 | |
Livnat et al. | Interactive point-based isosurface extraction | |
CN114494328B (zh) | 图像显示方法、装置、电子设备及存储介质 | |
CN110930492B (zh) | 模型渲染的方法、装置、计算机可读介质及电子设备 | |
CN112489183A (zh) | 基于Unity3D的骨骼动画渲染方法及系统 | |
CN114299213A (zh) | 虚拟场景的显示方法、装置、介质及设备 | |
CN114742931A (zh) | 渲染图像的方法、装置、电子设备及存储介质 | |
Wrenninge et al. | Efficient rendering of volumetric motion blur using temporally unstructured volumes | |
CN105023289A (zh) | 图形图像三维处理平台 | |
KR20160033551A (ko) | 광선-노드 교차검사를 수행하는 방법 및 장치 | |
Lee et al. | Adaptive synthesis of distance fields | |
US20200183566A1 (en) | Hybrid image rendering system | |
Mateo et al. | Hierarchical, Dense and Dynamic 3D Reconstruction Based on VDB Data Structure for Robotic Manipulation Tasks | |
CN111681307B (zh) | 一种应用于三维软件的动态三维坐标轴的实现方法 | |
US9858710B2 (en) | Method and apparatus for representing cordinate values of bounding box of object | |
Aman et al. | Multi‐level tetrahedralization‐based accelerator for ray‐tracing animated scenes | |
Risser et al. | Interval mapping | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
García-Feal et al. | Advanced fluid visualization with DualSPHysics and Blender | |
CN110738719A (zh) | 一种基于视距分层优化的Web3D模型渲染方法 | |
McMullen et al. | Procedural generation of terrain within highly customizable javascript graphics utilities for 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 |