CN117036560B - 一种适用于虚拟场景的风场模拟方法、介质和设备 - Google Patents

一种适用于虚拟场景的风场模拟方法、介质和设备 Download PDF

Info

Publication number
CN117036560B
CN117036560B CN202311303926.3A CN202311303926A CN117036560B CN 117036560 B CN117036560 B CN 117036560B CN 202311303926 A CN202311303926 A CN 202311303926A CN 117036560 B CN117036560 B CN 117036560B
Authority
CN
China
Prior art keywords
wind
virtual scene
map
wind field
pixel position
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
Application number
CN202311303926.3A
Other languages
English (en)
Other versions
CN117036560A (zh
Inventor
熊炜
廖玉春
靳勍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuzhou Zhuque Network Technology Co ltd
Original Assignee
Fuzhou Zhuque Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuzhou Zhuque Network Technology Co ltd filed Critical Fuzhou Zhuque Network Technology Co ltd
Priority to CN202311303926.3A priority Critical patent/CN117036560B/zh
Publication of CN117036560A publication Critical patent/CN117036560A/zh
Application granted granted Critical
Publication of CN117036560B publication Critical patent/CN117036560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/603D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明涉及一种适用于虚拟场景的风场模拟方法、介质和设备,所述方法包括:获取风场初始参数,根据风场初始参数更新3D贴图;基于虚拟场景中各个位置对应的第一风场数据的变化趋势,采用流体动力学模型计算下一时刻各个位置对应的第二风场数据,并将第二风场数据更新至3D贴图中;基于3D贴图和虚拟场景的坐标位置映射关系,在虚拟场景中渲染出当前时刻对应的风场数据。由于虚拟场景中各个像素位置的风场数据是通过3D贴图来进行实时维护的,能够使得虚拟场景中模拟风的呈现更加逼真。且开发人员还可以通过调整风场初始参数的方式,实现对虚拟场景中模拟风各项参数的实时调整,而无需存储多张UV贴图,有效提升了游戏整体的性能。

Description

一种适用于虚拟场景的风场模拟方法、介质和设备
技术领域
本发明涉及虚拟游戏场景领域,具体涉及一种适用于虚拟场景的风场模拟方法、介质和设备。
背景技术
目前,在大型的游戏场景中通常涉及到对风场数据的渲染,以使得游戏场景更加真实,但目前的引擎渲染出来的风场数据存在着调整不方便,模拟效果不逼真等缺点。
以基于虚幻引擎的风场模拟为例,其所针对的是一个简单的自然风的模拟,并且需要全局具有统一的参数,这就导致对于整个虚拟场景的不同位置、不同区域所呈现出的风的效果都是已知的,无法根据不同的虚拟场景位置的需要或者设定的模式对注入不同类型的模拟风数据。
公开号为CN112562050A的专利中提到的对虚拟对象风动画的生成方法和装置,主要是对获取了引擎内的风场数据,进行一个虚拟对象的表现处理,对于如何使得虚拟场景中风的注入更加逼真并没有提出一种很好的解决方案。
再比如公开号为WO2022111037A 的专利,其提到的对于虚拟风的呈现也仅限于对自然风(环境风,静态风)的模拟,并且采用的是UV贴图动画的方式进行模拟,在虚拟场景中始终呈现出的是一个静态制作好的风的效果,并不能实时的去模拟和修改虚拟场景中各个场景位置风的效果,而且随着风的种类制作的增加,其UV贴图数量也会增加,将会直接影响游戏的性能。
发明内容
鉴于上述问题,本发明提供了一种适用于虚拟场景的风场模拟方法、介质和设备,解决现有的虚拟场景中对于风的模拟存在着效果不够逼真、更新实时性差、无法满足在场景中不同位置动态呈现不同模拟风的需求的问题。
为实现上述目的,在第一方面,本发明提供了一种适用于虚拟场景的风场模拟方法,所述方法包括以下步骤:
获取风场初始参数,根据所述风场初始参数更新3D贴图,所述3D贴图用于记录所述虚拟场景中各个位置对应的第一风场数据,所述第一风场数据包括模拟风的速度矢量值;
基于所述虚拟场景中各个位置对应的第一风场数据的变化趋势,采用流体动力学模型计算下一时刻各个位置对应的第二风场数据,并将所述第二风场数据更新至所述3D贴图中;
基于所述3D贴图和所述虚拟场景的坐标位置映射关系,在所述虚拟场景中渲染出当前时刻对应的风场数据。
作为一种可选的实施例,所述方法还包括:
接收对所述风场初始参数的输入指令,获取所述风场初始参数,所述风场初始参数包括风的类型、注入的风在所述虚拟场景中的相对位置、风的强度大小、风的注入范围、风的方向、风的轴向以及注入风的单位像素所代表的在虚拟场景中的范围中的任一项或多项。
作为一种可选的实施例,所述3D贴图的数量为三张,包括第一3D贴图、第二3D贴图和第三3D贴图,所述第一3D贴图、第二3D贴图和第三3D贴图分别用于记录所述虚拟场景中各个位置在三个不同坐标维度方向的风场数据。
作为一种可选的实施例,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
计算当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,判断该距离是否位于对应的注入风场的距离范围,若是获取当前像素位置的风的速度矢量值,叠加对应的注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
作为一种可选的实施例,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将所述风的方向乘以对应的风的强度,得到风的速度矢量值;
获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
作为一种可选的实施例,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将计算的所述风的方向与预设的轴向进行叉乘,获得该像素位置最终风的方向;
将所述像素位置最终风的方向乘以当前该像素位置风的强度,得到该像素位置最终风的速度矢量值;
获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
作为一种可选的实施例,所述方法还包括:
在计算得到某一像素位置的速度矢量值后,获取该像素位置的多个邻域像素位置的速度矢量值,对当前像素位置的速度矢量值与其对应的邻域像素的速度矢量值进行加权平均,得到当前像素位置最终的速度矢量值,并将所述最终的速度矢量值作为当前像素位置对应的第二风场数据写入所述3D贴图中。
作为一种可选的实施例,所述方法包括:
通过雅可比求解器计算得到的风的速度场,计算其散度,所述散度用于描述速度场中的涡旋和收缩现象;
根据速度场的散度构建压力方程,所述压力方程被配置为满足流体力学原理和质量守恒物理约束条件;
使用雅可比迭代法,对压力方程进行求解,得到压力场;
根据求解得到的压力场,对所述速度场进行修正,将修正后的速度场作为第二风场数据写入所述3D贴图中。
在第二方面,本发明还提供一种计算机可读存储介质,其上存储计算机程序指令,计算机程序指令在被处理器执行时实现第一方面所述的方法。
在第三方面,本发明还提供一种电子设备,包括存储器和处理器,存储器用于存储一条或多条计算机程序指令,其中,一条或多条计算机程序指令被处理器执行以实现第一方面所述的方法。
区别于现有技术,上述技术方案涉及的一种适用于虚拟场景的风场模拟方法、介质和设备,所述方法包括以下步骤:获取风场初始参数,根据所述风场初始参数更新3D贴图;基于所述虚拟场景中各个位置对应的第一风场数据的变化趋势,采用流体动力学模型计算下一时刻各个位置对应的第二风场数据,并将所述第二风场数据更新至所述3D贴图中;基于所述3D贴图和所述虚拟场景的坐标位置映射关系,在所述虚拟场景中渲染出当前时刻对应的风场数据。由于虚拟场景中各个像素位置的风场数据是通过3D贴图来进行实时维护的,而3D贴图中的风场数据又是由所述流体动力学模型根据当前时刻各个位置的风场效果推移叠加计算得到的,能够使得虚拟场景中模拟风的呈现更加逼真。且开发人员还可以通过调整风场初始参数的方式,实现对虚拟场景中风的大小、位置、范围、类型等参数进行实时调整,而无需存储多张UV贴图,有效提升了游戏整体的性能。
上述发明内容相关记载仅是本发明技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本发明的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本发明的上述目的及其它目的、特征和优点能够更易于理解,以下结合本发明的具体实施方式及附图进行说明。
附图说明
附图仅用于示出本发明具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本发明的限制。
在说明书附图中:
图1为本发明第一示例性实施例所述方法步骤图;
图2为本发明第二示例性实施例所述方法步骤图;
图3为本发明第三示例性实施例所述方法步骤图;
图4为本发明第四示例性实施例所述方法步骤图;
图5为本发明第五示例性实施例所述方法步骤图;
图6为本发明第一示例性实施例所述电子设备的模块示意图;
上述各附图中涉及的附图标记说明如下:
1、电子设备;
11、存储器;
12、处理器。
具体实施方式
为详细说明本发明可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本发明中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
除非另有定义,本文所使用的技术术语的含义与本发明所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本发明。
在本发明的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如A和/或B,表示:存在A,存在B,以及同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
在本发明中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
在没有更多限制的情况下,在本发明中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的开放式表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
与《审查指南》中的理解相同,在本发明中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本发明实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
在现有技术,对于虚拟游戏场景中风的模拟通常需要依赖于UV贴图来完成,针对不同效果的风就需要提前制备不同的UV贴图,当UV贴图数量增加时容易影响游戏整体的性能,且UV贴图一旦制作完成,其所对应的风的各项参数(如风的方向、风的大小、风的影响范围等)都是相对固定的,存在着调整不方便的问题。
本申请通过渲染线程实现对虚拟场景中的模拟风进行注入,并采用流体动力学模型对注入的风力进行模拟,可以高效地实现对虚拟场景中的风场数据进行处理和渲染,能够在虚拟场景中模拟出更加真实和逼真的风的效果。
请参阅图1,在第一方面,本发明提供了一种适用于虚拟场景的风场模拟方法,所述方法包括以下步骤:
首先进入步骤S101获取风场初始参数,根据所述风场初始参数更新3D贴图,所述3D贴图用于记录所述虚拟场景中各个位置对应的第一风场数据,所述第一风场数据包括模拟风的速度矢量值;
而后进入步骤S102基于所述虚拟场景中各个位置对应的第一风场数据的变化趋势,采用流体动力学模型计算下一时刻各个位置对应的第二风场数据,并将所述第二风场数据更新至所述3D贴图中;
而后进入步骤S103基于所述3D贴图和所述虚拟场景的坐标位置映射关系,在所述虚拟场景中渲染出当前时刻对应的风场数据。
在本实施例中,对于虚拟场景中风场数据的渲染可以通过渲染进程来完成。渲染线程是指在计算机图形学中用于处理和渲染图形的线程。它通常是一种在图形处理单元(GPU)上执行的并行线程,它负责将图形数据转换成可视化的图像或动画。
在本实施例中,3D贴图为3D纹理贴图,是一种在三维图形中应用纹理贴图的技术,用于增强模型的视觉效果。3D纹理贴图通常包含了模型表面的颜色、纹理、反射等信息,并可以通过GPU的渲染功能在模型表面呈现出来。
在本实施例中,流体动力学模型是一种模拟和分析流体运动的数学模型。它基于质量守恒和动量守恒等基本物理定律,通过数值计算方法模拟流体运动的行为和特性,以实现对流体流动的准确预测和控制。
本申请的工作原理如下:若需要在虚拟场景中模拟出一个风的效果,则需要先有风的形成,也就是风的注入。对于存放风的注入数据我们称之为风力电机(Motor),在不同虚拟场景中的坐标位置可以放置一个或多个不同的风力电机,每个风力电机的初始参数可以被配置为不同,以生成不同的风的效果。在同一个虚拟场景中,风的注入可以是多个的,即在一个虚拟游戏场景内,可以对虚拟游戏场景范围的不同位置进行不同类型的风的注入,以产生不同的风的自然效果,比如局部的方向风,局部的全向风等等。
风的注入所需要的参数,主要分为2种,第一种为外部参数,也就是可以调节的参数,用来进行风形成的参数计算,第二种参数为用来存储风的数据,也就是实现风真正注入的数据。
在本实施例中,外部参数即前文所描述的风场初始参数,所述风场初始参数包括风的类型、注入的风在所述虚拟场景中的相对位置、风的强度大小、风的注入范围、风的方向、风的轴向以及注入风的单位像素所代表的在虚拟场景中的范围中的任一项或多项。各项外部参数定义如下:
(1)风的类型:不同的风,注入的方式也存在不同。例如不同类型的风,有不同的方向。以方向风为例,所有的风都朝着统一方向进行注入。再比如全向风,是指来自所有方向的风在注入时以一个圆心为起点,圆的半径为方向进行注入。
(2)注入的风在所述虚拟场景中的相对位置:即风的中心位置,具体是指模拟出的风的中心在所述虚拟场景中的相对坐标位置。
(3)风的强度大小:不同强度的风将影响风的模拟效果和风的扩散速度。
(4)风的注入范围:以注入的位置为中心,在设定的范围内进行风的注入。
(5)风的方向:为方向风(风的类型的一种)的独有参数,表示风注入的方向。
(6)风的轴向:为涡流风(风的类型的另一种)独有参数,表示涡流风的旋转轴方向。
(7)注入风的单位像素所代表的在虚拟场景中的范围:比如参数为400,代表在3D贴图中一个像素位置将影响所述虚拟场景内的4米(这里是指虚拟游戏场景中的比例尺)的范围,也就是说在所述虚拟场景对应的4米范围内共享同一个风场数据。
第二种参数为第一种参数具体的实例实现,也就是计算完成的风的注入信息(包含具体的数值),可以通过3D贴图的方式进行存储。在三维的虚拟游戏场景中,通常使用3D纹理贴图(Texture3D)来表示三维空间中的属性,Texture3D的每一个像素代表着三维立体空间的位置。在本实施例中,3D贴图的尺寸为16*16*16,表示长宽高分别为16个像素的贴图。当然,在另一些实施例中,3D贴图的尺寸可以用根据虚拟游戏场景的规模和需求进行变更。优选的,在所述3D贴图中,可以采用精度为32位的浮点数来记录风场注入的速度(包含风的方向和风的速率)。
由于虚拟场景中各个像素位置的风场数据是通过3D贴图来进行实时维护的,而3D贴图中的风场数据又是由所述流体动力学模型根据当前时刻各个位置的风场效果推移叠加计算得到的,能够使得虚拟场景中模拟风的呈现更加逼真。且开发人员还可以通过调整风场初始参数的方式,实现对虚拟场景中风的大小、位置、范围、类型等参数进行实时调整,而无需存储多张UV贴图,有效提升了游戏整体的性能。
在某些实施例中,所述方法还包括:接收对所述风场初始参数的输入指令,获取所述风场初始参数。所述输入指令可以通过触控、键盘、滑动、双击、点击、遥控等方式触发。这样,研发人员在设计虚拟场景的模拟风时,可以随时对虚拟场景中风的注入位置、大小、范围等参数进行调整,从而满足不同的游戏中虚拟地图的应用需求,实现在不同虚拟场景中呈现出不同且更加逼真的模拟风效果。
在某些实施例中,所述3D贴图的数量为三张,包括第一3D贴图、第二3D贴图和第三3D贴图,所述第一3D贴图、第二3D贴图和第三3D贴图分别用于记录所述虚拟场景中各个位置在三个不同坐标维度方向的风场数据。例如所述第一3D贴图用于记录虚拟场景中各个位置在X方向上风场数据,所述第二3D贴图用于记录虚拟场景中各个位置在Y方向上风场数据,所述第三3D贴图用于记录虚拟场景中各个位置在Z方向上风场数据。所述风场数据包括风的方向和/或风的速度大小值。这样,采用三张3D贴图进行风的注入,每张贴图的一个像素代表虚拟游戏场景的一个空间位置(一般为贴图中的一个像素对应于虚拟场景中的一片区域范围),每个像素可以写入一个方向上的值,使得通过3D贴图中就可以记录整个虚拟场景中各个位置的风场数据,能够使得虚拟场景中风的数据的记录和更新更加便捷高效。
在某些实施例中,可以将虚拟场景中风的类型设置为方向风,方向风是一种特殊的风场类型,它是指在三维空间中,每个点的风速都是相同的,但是方向可能不同。方向风的模拟是三维游戏和模拟中的一种技术,它可以在虚拟场景中模拟出自然界的各种风场,例如气旋、尘暴等等。方向风可以用于控制游戏中的粒子效果、动态植被、布料模拟、飞行器模拟等。通常,方向风可以用一个向量来表示,这个向量指示了风吹过该点时的方向。如图2所示,可以通过步骤S201-步骤S203实现方向风的模拟,具体如下:
首先进入步骤S201将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
而后进入步骤S202计算当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,判断该距离是否位于对应的注入风场的距离范围;
若步骤S202的结果判定为是,则进入步骤S203获取当前像素位置的风的速度矢量值,叠加对应的注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
在一些实施例中,还可以将虚拟场景中风的类型设置为全向风,全向风是指风向随机且来自不同方向的风,与定向风相对。全向风可以在各个方向上给物体带来相似的风力和风速。在实际应用中,全向风通常指的是风机或者风洞中的气流,其风向在水平面上随机变化,而风速和风力则保持不变。如图3所示,可以通过步骤S301-步骤S303实现全向风的模拟,具体如下:
首先进入步骤S301将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
而后进入步骤S302根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将所述风的方向乘以对应的风的强度,得到风的速度矢量值;
而后进入步骤S303获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
在另一些实施例中,还可以将虚拟场景中风的类型设置为涡流风,涡流风的形成是由于气体在受到外力作用时,呈现出旋转的流动形态,形成旋涡。如图4所示,可以通过步骤S401-步骤S404实现涡流风的模拟,具体如下:
首先进入步骤S401将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
而后进入步骤S402根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将计算的所述风的方向与预设的轴向进行叉乘,获得该像素位置最终风的方向;
而后进入步骤S403将所述像素位置最终风的方向乘以当前该像素位置风的强度,得到该像素位置最终风的速度矢量值;
而后进入步骤S404获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
通过如图2-图4的方式,每次在3D动态贴图中更新完成各个像素位置的风场数据后(即完成风的注入后),接下来可以对注入的风进行模拟。风的模拟主要采用的是流体模拟的方式,分为3个阶段进行模拟,具体包括:风的对流(advect),风的扩散(diffuse)和风的投射(project)三个阶段。首先使用advect方法根据风的速度(包括大小或方向)进行移动,然后使用diffusion方法对风的速度进行扩散,最后使用project方法计算速度场中的压力,并使其满足连续性方程的要求。具体的,可以针对3D贴图中的每个像素位置执行以上3个阶段的操作步骤,并在所有像素位置都操作完成后,实现对虚拟场景整体模拟风效的调整。具体的操作如下:
首先进行的是模拟风的水平对流(advect),具体操作步骤为:根据风力的强度计算出在对应的风向(通过注入风的中心至当前像素位置的矢量可以作为风的方向)上需要移动的像素距离,再根据这个需要移动的像素距离将速度信息移动到目标的像素格子上。
在实现方式上,可以先根据风场上一次注入的数据,获取3D贴图中每个像素位置的对应风速和风向信息,而后通过插值的方式将风速和风向信息应用到对应的流体速度格点上。而后根据更新后的流体速度场,计算流体在下一个时间步的位置。而后根据计算的时间步位置,得到对应的速度,并更新到3DTexture中,实现对应的风场速度的移动。
其次是进行模拟风的扩散(diffuse),风的扩散指的是模拟风的传播过程中的扩散效应。
具体的,所述方法还包括:在计算得到某一像素位置的速度矢量值后,获取该像素位置的多个邻域像素位置的速度矢量值,对当前像素位置的速度矢量值与其对应的邻域像素的速度矢量值进行加权平均,得到当前像素位置最终的速度矢量值,并将所述最终的速度矢量值作为当前像素位置对应的第二风场数据写入所述3D贴图中。
简言之,可以获取上一个操作(即风的水平对流)得到的3D贴图,对获取的3D贴图中的每一个像素进行以下的操作:采集当前像素的速度值,以及其前后左右上下的6个像素(假设邻域像素的数量为6个)的速度信息,根据传入的权重参数(该权重参数记录有前后左右上下6个邻域像素影响当前像素最终速度计算的权重百分比)进行加权平均,再将计算得到的风场数据作为当前像素更新后的速度矢量值存入3D贴图中。
而后进行模拟风的投射(project),具体是对计算得到的速度场进行修正,以保证速度场满足一些物理条件和约束条件的过程。投射步骤是风场模拟中的一项重要计算,用于消除速度场中的非物理行为和保持质量守恒,具体实现方式如图5所示,包括以下步骤:
首先进入步骤S501通过雅可比求解器计算得到的风的速度场,计算其散度,所述散度用于描述速度场中的涡旋和收缩现象;
而后进入步骤S502根据速度场的散度构建压力方程,所述压力方程被配置为满足流体力学原理和质量守恒物理约束条件;
而后进入步骤S503使用雅可比迭代法,对压力方程进行求解,得到压力场;
而后进入步骤S504根据求解得到的压力场,对所述速度场进行修正,将修正后的速度场作为第二风场数据写入所述3D贴图中。修正的过程会根据压力梯度和速度场的散度来调整速度场的值,以确保速度场满足质量守恒和流体力学条件。
自此,整个虚拟场景中的风场模拟过程结束。
采用上述方案,可以先向引擎注入风场的初始信息(即初始参数),并对其进行动态模拟,同时可以根据不同需求增删不同类型的风场信息,在实现风场效果的同时,不会增加游戏的开销,也保证了游戏的性能。
在第二方面,本发明还提供一种计算机可读存储介质,其上存储计算机程序指令,计算机程序指令在被处理器执行时实现第一方面所述的方法。
其中,所述计算机可读存储介质可以是易失性存储器或非易失性存储器,也可以包括易失性和非易失性存储器两者。
所述非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、电可擦除可编程只读存储器 (EEPROM,Electrically Erasable Programmable Read Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD ROM,Compact Disc Read Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。
所述易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器 (SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,DynamicRandom Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic RandomAccess Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data RateSynchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的计算机可读存储介质旨在包括这些和任意其它适合类型的存储器。
请参阅图6,在第三方面,本发明还提供一种电子设备1,包括存储器11和处理器12,存储器11用于存储一条或多条计算机程序指令,其中,一条或多条计算机程序指令被处理器执行以实现第一方面所述的方法。
所述处理器可以通过软件、硬件、固件或者其组合实现,可以使用电路、单个或多个为特定用途集成电路(Application Specific Integrated Circuit, ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital SignalProcessing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器 (Central ProcessingUnit,CPU)、控制器、微控制器、微处理器中的至少一种,从而使得该处理器可以执行本申请的各个实施例中的风场模拟方法中的部分步骤或全部步骤或其中步骤的任意组合。
最后需要说明的是,尽管在本发明的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本发明的专利保护范围。凡是基于本发明的实质理念,利用本发明说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本发明的专利保护范围之内。

Claims (9)

1.一种适用于虚拟场景的风场模拟方法,其特征在于,所述方法包括以下步骤:
在所述虚拟场景中放置一个或多个不同的风力电机,并根据获取的风场初始参数设置各个风力电机的初始参数,完成风的注入,所述风场初始参数包括注入的风在所述虚拟场景中的相对位置;以及根据所述风场初始参数更新3D贴图,所述3D贴图用于记录所述虚拟场景中各个位置对应的第一风场数据,所述第一风场数据包括模拟风的速度矢量值,所述速度矢量值包括风速信息和风向信息;
基于所述虚拟场景中各个位置对应的第一风场数据的变化趋势,采用流体动力学模型计算下一时刻各个位置对应的第二风场数据,并将所述第二风场数据更新至所述3D贴图中,具体包括:获取当前所述3D贴图中每个像素位置对应速度矢量值,通过插值的方式将风速信息和风向信息应用到对应的流体速度格点上,得到更新后的流体速度场,并根据所述更新后的流体速度场计算流体在下一个时间步的位置,并将计算的所述流体在下一个时间步位置的速度矢量值作为所述第二风场数据更新所述3D贴图;
所述将计算的所述流体在下一个时间步位置的速度矢量值作为所述第二风场数据更新所述3D贴图包括:在计算得到某一像素位置的速度矢量值后,获取该像素位置的多个邻域像素位置的速度矢量值,对当前像素位置的速度矢量值与其对应的邻域像素的速度矢量值进行加权平均,得到当前像素位置最终的速度矢量值,并将所述最终的速度矢量值作为当前像素位置对应的第二风场数据写入所述3D贴图中;
基于所述3D贴图和所述虚拟场景的坐标位置映射关系,在所述虚拟场景中渲染出当前时刻对应的风场数据。
2.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,所述方法还包括:
接收对所述风场初始参数的输入指令,获取所述风场初始参数;
所述风场初始参数还包括风的类型、风的强度大小、风的注入范围、风的方向、风的轴向以及注入风的单位像素所代表的在虚拟场景中的范围中的任一项或多项。
3.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,所述3D贴图的数量为三张,包括第一3D贴图、第二3D贴图和第三3D贴图,所述第一3D贴图、第二3D贴图和第三3D贴图分别用于记录所述虚拟场景中各个位置在三个不同坐标维度方向的风场数据。
4.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
计算当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,判断该距离是否位于对应的注入风场的距离范围,若是获取当前像素位置的风的速度矢量值,叠加对应的注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
5.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将所述风的方向乘以对应的风的强度,得到风的速度矢量值;
获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
6.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,所述方法还包括:
将所述3D贴图中的像素位置换算成所述虚拟场景中的坐标位置;
根据当前某一像素位置与虚拟场景中各个注入风场的中心位置的距离,计算出来自不同注入风场中心位置的风的方向,将计算的所述风的方向与预设的轴向进行叉乘,获得该像素位置最终风的方向;
将所述像素位置最终风的方向乘以当前该像素位置风的强度,得到该像素位置最终风的速度矢量值;
获取当前像素位置的风的速度矢量值,叠加各个注入风场在当前时刻在该像素位置的速度矢量值,得到更新后的第二风场数据,并将所述第二风场数据更新至所述3D贴图中。
7.如权利要求1所述的适用于虚拟场景的风场模拟方法,其特征在于,在将所述最终的速度矢量值作为当前像素位置对应的第二风场数据写入所述3D贴图中之前,所述方法还包括:
对所述第二风场数据进行修正,具体包括:
通过雅可比求解器计算得到的风的速度场,计算其散度,所述散度用于描述速度场中的涡旋和收缩现象;
根据速度场的散度构建压力方程,所述压力方程被配置为满足流体力学原理和质量守恒物理约束条件;
使用雅可比迭代法,对压力方程进行求解,得到压力场;
根据求解得到的压力场,对所述速度场进行修正;
所述将所述最终的速度矢量值作为当前像素位置对应的第二风场数据写入所述3D贴图中包括:
将修正后的速度场作为第二风场数据写入所述3D贴图中。
8.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-7中任一项所述的方法。
CN202311303926.3A 2023-10-10 2023-10-10 一种适用于虚拟场景的风场模拟方法、介质和设备 Active CN117036560B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311303926.3A CN117036560B (zh) 2023-10-10 2023-10-10 一种适用于虚拟场景的风场模拟方法、介质和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311303926.3A CN117036560B (zh) 2023-10-10 2023-10-10 一种适用于虚拟场景的风场模拟方法、介质和设备

Publications (2)

Publication Number Publication Date
CN117036560A CN117036560A (zh) 2023-11-10
CN117036560B true CN117036560B (zh) 2024-01-02

Family

ID=88637740

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311303926.3A Active CN117036560B (zh) 2023-10-10 2023-10-10 一种适用于虚拟场景的风场模拟方法、介质和设备

Country Status (1)

Country Link
CN (1) CN117036560B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222434A (ja) * 2001-01-29 2002-08-09 Namco Ltd ゲームシステム、プログラム及び情報記憶媒体
CN107170044A (zh) * 2017-05-09 2017-09-15 福州大学 一种基于三维地形的风的动态可视化方法
CN110322540A (zh) * 2019-07-09 2019-10-11 北京电影学院 基于流体力学与gpu优化渲染的可交互水墨模拟方法
CN112132936A (zh) * 2020-09-22 2020-12-25 上海米哈游天命科技有限公司 画面渲染方法、装置、计算机设备及存储介质
CN113838170A (zh) * 2021-08-18 2021-12-24 网易(杭州)网络有限公司 目标虚拟对象的处理方法、装置、存储介质和电子装置
CN114299213A (zh) * 2021-12-27 2022-04-08 网易(杭州)网络有限公司 虚拟场景的显示方法、装置、介质及设备
CN114676616A (zh) * 2021-11-30 2022-06-28 合肥火星科技有限公司 一种三维场景下流体风场图渲染方法
CN114768251A (zh) * 2022-04-26 2022-07-22 完美世界互娱(北京)科技有限公司 风场效果图的生成方法及装置、存储介质、计算机设备
CN115564878A (zh) * 2022-10-09 2023-01-03 珠海金山数字网络科技有限公司 虚拟对象更新方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5031260B2 (ja) * 2006-05-02 2012-09-19 任天堂株式会社 オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222434A (ja) * 2001-01-29 2002-08-09 Namco Ltd ゲームシステム、プログラム及び情報記憶媒体
CN107170044A (zh) * 2017-05-09 2017-09-15 福州大学 一种基于三维地形的风的动态可视化方法
CN110322540A (zh) * 2019-07-09 2019-10-11 北京电影学院 基于流体力学与gpu优化渲染的可交互水墨模拟方法
CN112132936A (zh) * 2020-09-22 2020-12-25 上海米哈游天命科技有限公司 画面渲染方法、装置、计算机设备及存储介质
CN113838170A (zh) * 2021-08-18 2021-12-24 网易(杭州)网络有限公司 目标虚拟对象的处理方法、装置、存储介质和电子装置
CN114676616A (zh) * 2021-11-30 2022-06-28 合肥火星科技有限公司 一种三维场景下流体风场图渲染方法
CN114299213A (zh) * 2021-12-27 2022-04-08 网易(杭州)网络有限公司 虚拟场景的显示方法、装置、介质及设备
CN114768251A (zh) * 2022-04-26 2022-07-22 完美世界互娱(北京)科技有限公司 风场效果图的生成方法及装置、存储介质、计算机设备
CN115564878A (zh) * 2022-10-09 2023-01-03 珠海金山数字网络科技有限公司 虚拟对象更新方法及装置

Also Published As

Publication number Publication date
CN117036560A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
US20210232733A1 (en) Systems and methods for computer simulation of detailed waves for large-scale water simulation
US7468730B2 (en) Volumetric hair simulation
US8749588B2 (en) Positioning labels in an engineering drawing
US6268861B1 (en) Volumetric three-dimensional fog rendering technique
CN102426691A (zh) 一种基于gpu的实时火焰效果的模拟方法
US20120078598A1 (en) Custom Physics Simulation Joints
CN109448137B (zh) 交互方法、交互装置、电子设备及存储介质
US7349832B2 (en) Water particle manipulation
US9098937B2 (en) Electronic device and method for simulating three-dimensional model of workpiece
CN107134004A (zh) 一种在Flash动画中模拟球体运动的方法及装置
CN110400366B (zh) 一种基于OpenGL的实时洪水灾害可视化仿真方法
CN113129420B (zh) 一种基于深度缓冲加速的光线追踪渲染方法
CN117036560B (zh) 一种适用于虚拟场景的风场模拟方法、介质和设备
CN102867336B (zh) 一种基于热力学模型的固体燃烧过程模拟方法
CN112802165A (zh) 游戏场景积雪渲染方法、装置及介质
Weier et al. Generating and rendering large scale tiled plant populations
Merrell et al. Constraint-based model synthesis
Giannakidis et al. 3D photorealistic scientific visualization of tsunami waves and sea level rise
Zawadzki et al. Hybrid of shape grammar and morphing for procedural modeling of 3d caves
Kang et al. Real-time cloud modelling and rendering approach based on L-system for flight simulation
WO2016107356A1 (zh) 一种基于静态图片的动态交互方法和装置
Bender et al. HW3D: A tool for interactive real-time 3D visualization in GIS supported flood modelling
Su et al. Computer Aided Animation Post Effects Editing on Accurate Dynamic Simulation of Ocean Scene
Wei et al. Real-time visualization of the East China Sea based on priceton ocean model and volume rendering
JP4528036B2 (ja) プログラム、情報記憶媒体、及び画像生成システム

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