技术领域
[0001] 本公开实施例涉及计算机图形处理技术领域,具体而言,涉及一种虚拟场景的生成方法、虚拟场景的生成装置、计算机可读存储介质以及电子设备。
相关背景技术
[0002] 在相关的一些技术方案中,可以通过3D建模渲染和制作软件(例如3ds MAX)来制作雨柱下落的面片,然后将该雨柱下落的面片叠加至水材质的贴图以达到雨柱下落的效果;但是,该方式存在立体感不足、模型形态不真实以及缺少水的动态感等缺点,进而使得所得到的虚拟雨柱降落场景的精确度较低。
[0003] 需要说明的是,在上述背景技术部分发明的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
具体实施方式
[0038] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
[0039] 此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0040] 特效动画作为游戏中的重要组成部分,对游戏场景的推进起着推波助澜的作用;在实际的游戏场景中,若加入一些创新的特效表现,可能成为二创或曝光的一个契机点。在一些特效游戏场景中,比如雨柱下落的特效场景,是较为常用的特效场景。因此,如何在游戏里把雨柱下落技能特效做的更真实成了亟需解决的技术问题。
[0041] 在实际应用的过程中,若要达到将雨柱下落技能特效做的更真实的目的,则需要满足如下条件:一方面,要做出水连成线的形态;另一方面,还要让特效在慢放时候可以看到每一帧的动态变化。为了满足该条件,在相关的一些技术方案中,可以通过3D建模渲染和制作软件(例如3ds MAX)来制作雨柱下落的面片,然后将该雨柱下落的面片叠加至水材质的贴图以达到雨柱下落的效果;但是,该方式存在立体感不足、模型形态不真实以及缺少水的动态感等缺点。
[0042] 在相关的技术方案中,常用的3ds MAX制作流程可以通过如下方式实现:首先,使用曲线放样和十字插片出来模型,然后给Noise躁波,让模型形态呈现水流的状态;其中,曲线放样和十字插片所得到的模型可以参考图1中的101所示,Noise躁波后得到的模型可以参考图1中的102所示;其次,利用引擎内的材质给水材质的贴图以及mask遮罩,让整体流动更像水;其中,所得到渲染结果可以参考图1中的103所示。但是,该方式制作的模型比较简易且手段有限,缺少灵活的动态感;并且,固有的制作方式实现出来的效果,片状感太重、不够饱满真实、没有水连成线的不规则形态以及进入子弹时间时,缺少每一帧都在运动的变化。
[0043] 基于此,本公开提出了一种新的下落雨柱特效的实现方案,基于该方案可以在Houdini里制作下落雨柱特效,基于该方式所得到的下落雨柱特效可以在解决模型的体积问题的基础上解决水的运动动态问题。
[0044] 在一种示例实施例中,本示例实施方式中首先提供了一种虚拟场景的生成方法,该方法可以运行于游戏引擎所在的终端设备、服务器、服务器集群或云服务器等;当然,本领域技术人员也可以根据需求在其他平台运行本公开的方法,本示例性实施例中对此不做特殊限定。具体的,参考图2所示,该虚拟场景的生成方法可以包括以下步骤:
[0045] 步骤S210.创建原始虚拟雨柱模型;
[0046] 步骤S220.根据所述原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,并根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型;
[0047] 步骤S230.对所述虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型进行融合,得到所述原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图;
[0048] 步骤S240.根据所述模型顶点贴图以及旋转信息贴图渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。
[0049] 上述虚拟场景的生成方法中,一方面,通过创建原始虚拟雨柱模型;然后根据原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,并根据第一虚拟粒子,生成虚拟雨柱的雨滴模型;再对虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型进行融合,得到原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图;最后根据模型顶点贴图以及旋转信息贴图渲染原始虚拟雨柱模型,得到虚拟雨柱降落场景,基于该方法可以得到一个具有动态变化效果的虚拟雨柱降落场景,进而解决了现有技术中由于立体感不足、模型形态不真实以及缺少水的动态感等缺点导致的所得到的虚拟雨柱降落场景的精确度较低的问题,提高了虚拟雨柱降落场景的精确度;另一方面,还提高了虚拟雨柱降落场景的生成效率。
[0050] 以下,将结合附图对本公开示例实施例所记载的虚拟场景的生成方法进行详细的解释以及说明。
[0051] 首先,对本公开示例实施例所涉及到的名词进行解释。
[0052] Polygons模型:Polygons模型是一种基于多边形进行建模的方法,它是三维建模中的一种基本且直观的技术。Polygons建模也可以被称为多边形建模,其可以通过控制三维空间中物体的点、线和面来塑造物体的外形;通过Polygons创建的物体表面由直线组成,适用于创建由多个平面组成的复杂模型,如建筑模型、环境艺术设计等。
[0053] 在Polygons建模过程中,模型由多个多边形面组成,这些面可以通过编辑和修改来实现建模。首先,需要将一个对象转化为可编辑的多边形对象,然后通过对该多边形对象的各种子对象(如顶点、边、面等)进行编辑和修改来实现建模过程。这种方法的一个优势是,在创建物体的过程中,可以先创建出较少的面,并使用优化工具来创造出光滑的物体表面。在编辑时,可以保持使用低面数的Polygon物体,这样可以用较少的面来控制复杂物体的结构,同时保持模型的细节和光滑度。
[0054] Polygons建模命令集包括保持面在一起(keep faces together)、挤出面(extrude faces)、平滑角度设置(extrude faces/smoothing angle)、偏移设置(extrude faces/offset)、使用曲线挤压(use selected curve for extrusion)等,这些命令提供了对模型细节和形状的精细控制。例如,通过挤出面命令,可以将所选的面向一个方向挤出,通过设置分割数(divisions)来控制每次挤出的面或边被细分的段数,从而实现模型的扩展和变形。
[0055] POP(Particle Operations Processor)是一个用于模拟粒子效果的工具,广泛应用于数字媒体和视觉效果的制作中。POP允许用户创建、操作和控制大量的粒子系统,这些粒子系统可以模拟烟雾、火焰、灰尘等多种自然现象和视觉效果。POP提供了丰富的功能,包括粒子的发射、运动、碰撞、与表面的交互等,通过这些功能,艺术家和设计师能够创建出复杂且逼真的粒子动画。POP的主要功能和应用包括:粒子发射:可以从几何体或空间点创建粒子,也可以从已有的粒子上创建新粒子;应用力:可以应用力来引导粒子运动,这些力可以来自于几何体(吸引或排斥的球)或常用的方向力(如重力);粒子运动:粒子可以围绕一个领导者移动,形成旋涡状运动,或者沿着特定的路径移动;粒子碰撞:粒子之间以及与静态对象之间的碰撞可以模拟真实的物理交互;渲染和可视化:POP支持高效的渲染和可视化,使得艺术家能够实时预览和调整粒子效果;参数调整:通过调整粒子的各种属性,如大小、速度、生命周期等,可以控制粒子的表现和行为;此外,POP还支持多线程和高效内存使用,提供了广泛的艺术控制,使得粒子系统的创建和调整变得更加高效和灵活。
[0056] 子弹时间(Bullet time)是一种使用在电影、电视广告或电脑游戏中的摄影技术模拟变速特效,例如强化的慢镜头、时间静止等效果。
[0057] 其次,对本公开示例实施例的技术实现原理进行解释以及说明。具体的,本公开示例实施例所记载的虚拟场景的生成方法,可以解决相关技术中不能做出水动态变化的效果的问题;同时,基于本公开示例实施例所记载的虚拟场景的生成方法所得到的虚拟雨柱降落场景,不仅可以在形态上还原水连成线,从而解决厚度问题,以便游戏中各个角度的观看;还可以在游戏内发现节奏不准确时,可以返回软件中快速调整节奏,确保即使进入子弹时间也有一个很好的动态感;进一步的,本公开示例实施例所记载的虚拟场景的生成方法,可以通过Houdini粒子系统制作水连成线下落,通过对真实世界雨水的分析,提高对美术品质的要求;同时,由于水的型态和动态是过去游戏中没有实现过的,因此可以做出业内标杆的品质;进一步的,本公开示例实施例所记载的虚拟场景的生成方法,还可以在游戏中水轨迹运动的效果都可以快速实现,提高了生产的效率。
[0058] 以下,将对图2所示出的虚拟场景的生成方法进行进一步的解释以及说明。其中:
[0059] 在步骤S210中,创建原始虚拟雨柱模型。
[0060] 具体的,可以在游戏引擎中创建原始虚拟雨柱模型;其中,此处所加载的游戏引擎,可以Houdini引擎,或者也可以是其他引擎,本示例对此不做特殊限制;此处所记载的原始虚拟雨柱模型,可以是圆柱模型;具体所得到的示例图可以参考图3所示;同时,此处所记载的原始虚拟雨柱模型,可以被配置为虚拟雨柱下落过程中的所需要的粒子发射源。
[0061] 在步骤S220中,根据所述原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,并根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型。
[0062] 在本示例实施例中,首先,根据原始虚拟雨柱模型以及第一虚拟粒子生成虚拟雨柱的主干模型;具体的,参考图4所示,可以包括以下步骤:
[0063] 步骤S410,对所述原始虚拟雨柱模型进行噪波处理,得到噪波处理后的雨柱模型。
[0064] 具体的,噪波处理的具体实现过程,可以通过如下方式实现:首先,对所述原始虚拟雨柱模型进行分帧处理,得到多个模型图像帧;其次,对各所述模型图像帧进行噪波变化处理,得到多个具有不同形状的模型图像帧;然后,根据各所述具有不同形状的模型图像帧得到噪波处理后的雨柱模型。也即,在实际应用的过程中,为了让各模型图像帧中的每一帧的第一虚拟粒子发射的位置不同,可以创建Attribute Noise节点,并在Offset位置给模型每一帧做噪波变化,使每一帧的形状都不同;同时,在实际应用的过程中,可以通过在houdini里使用$F符号来引入时间元素;其中,此处所记载$F是一个变量,代表当前帧数;比如,该原始虚拟雨柱模型中一共包括了30帧,那么$F的具体取值为[1‑30],具体的顺序可以从下到上一次排列;下方的位置可以以水平地面作为参考,靠近水平地面的一侧为下方;同时,还需要给帧数一个倍数值(例如可以是0.1倍,或者0.2倍,本示例对此不做特殊限制);基于该方式,可以使得每一帧时间变化的幅度更小;当然,此处还需要补充说明的是,基于Attribute Noise节点可以让模型图像帧变形,填写$F是为了每一帧有一个不规则的模型变化。同时,所得到的噪波处理后的雨柱模型,可以参考图5所示。
[0065] 步骤S420,为噪波处理后的雨柱模型添加第一虚拟粒子,并根据所述第一虚拟粒子构建第一粒子模型。
[0066] 具体的,第一粒子模型的具体构建过程,可以通过如下方式实现:首先,为噪波处理后的雨柱模型配置粒子向下发射的范围以及粒子发射帧数;其次,为噪波处理后的雨柱模型添加第一虚拟粒子,并为所述第一虚拟粒子添加粒子应力以及粒子阻力;然后,根据所述粒子应力以及粒子阻力确定所述第一虚拟粒子的粒子运动趋势,并根据所述粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型。具体的,在实际应用的过程中,首先,以原始虚拟雨柱模型作为粒子发射源(也即,可以将原始虚拟雨柱模型作为噪波处理后的雨柱模型中包括的每一帧具有不同形状的模型图像帧配置粒子发射源),并为噪波处理后的雨柱模型配置粒子向下发射的范围以及粒子发射帧数(例如可以是K帧,K的取值可以是小于模型图像帧的总帧数的任意一个值,具体可以根据实际需要自行选取,本示例对此不做特殊限制);其次,添加POP粒子(也即第一虚拟粒子),PopObject给到第一个输入接口,继承前面的圆柱模型(也即粒子向下发射的范围以及粒子发射帧数可以通过PopObject的方式进行引入);进一步的,基于Popcurveforce添加force应力(粒子应力)以及drag阻力(也即粒子阻力),让整体运动趋势不是匀速;最后,对粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数进行逻辑运算即可得到第一粒子模型;其中,具体的逻辑运算过程可以参考图6所示。
[0067] 在一种示例实施例中,在图6所示出的逻辑运算示例图中,Popsolver是当前粒子系统的解算器,为一个时间步更新粒子;也就是说,可以把物体和力等节点,放在这里做运算逻辑;Popobject将常规粒子系统转换成动态对象,能够与当前粒子系统内的其他对象正确交互;也即,可以通过PopObject的方式引入粒子向下发射的范围以及粒子发射帧数;Popcurveforce由曲线产生的力的POP节点,引导粒子沿着曲线运动;Popforce为作用粒子的应力;Popdrag为作用粒子的阻力;Pop source为一个pop节点,它从前面模型几何体中生成粒子(也即第一虚拟粒子);Popfluid通过在附近粒子之间施加力来控制局部的密度;
Merge合并节点;Output输出,也即输出第一粒子模型。
[0068] 在一种示例实施例中,根据所述粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型,可以通过如下方式实现:首先,为噪波处理后的雨柱模型中包括的每一帧具有不同形状的模型图像帧配置粒子发射源,并确定每一帧具有不同形状的模型图像帧下落到预设场景位置处的图像帧下落时间;其次,基于所述粒子发射源以及所述图像帧下落时间发射第二虚拟粒子,并为所述第二虚拟粒子配置目标粒子生命周期;然后,基于所述第二虚拟粒子、目标粒子生命周期、粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型。其中,为所述第二虚拟粒子配置目标粒子生命周期,可以通过如下方式实现:首先,为所述第二虚拟粒子配置原始粒子生命周期,并基于预设的随机数生成函数,生成与每一个第二虚拟粒子对应的随机数;其次,基于各所述随机数以及原始粒子生命周期,确定所述目标粒子生命周期。也即,在实际应用的过程,为了可以进一步的提高所得到的场景的真实度,还需要控制粒子的发射源在下落到地面前发射第二虚拟粒子6000个,下落到地面后则变为0;原始粒子生命周期life存在的时间为0.25秒,上下0.05秒生命时长随机;也即,需要基于预设的随机数生成函数生成[‑0.05~0.05]之间的随机数,仅为在0.25的基础上加上或者减去该随机数,即可得到目标粒子生命周期;在实际应用的过程中,可以通过如下的方式来实现具体的第二虚拟粒子的发射:例如,在前7帧发射了6000个第二虚拟粒子,在第8帧落到地面时候不再发射第二虚拟粒子;其中,所发射的第二虚拟粒子,可以参考图7中的701、702以及703所示。
[0069] 步骤S430,根据所述第一粒子模型对所述噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果。
[0070] 具体的,模型重塑的具体实现过程,可以通过如下方式来实现:首先,对所述第一粒子模型中的第一虚拟粒子进行过滤,得到第一过滤结果,并根据第一过滤结果中的第一虚拟粒子创建模型体积数据块;其次,基于所述模型体积数据块对噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果。具体的,在实际应用的过程中,在进行模型重塑之前,首先利用粒子的ID随机删除多余的第一虚拟粒子对应的点;具体的,在具体的过滤过程中,可以随机选取第一虚拟粒子的ID小于某个数值的第一虚拟粒子对应的点;其中,此处的数值可以是0.5,也可以是其他数值,本示例对此不做特殊限制;其次,通过第一虚拟粒子创建体积数据块VDB;其中,所得到的体积数据块VDB可以参考图8中的801所示;然后,基于模型体积数据块对噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果;其中,所得到的模型重塑结果可以参考图8中的802所示。
[0071] 步骤S440,对所述模型重塑结果进行平滑处理以及面数重新分布处理,得到所述虚拟雨柱的主干模型。
[0072] 具体的,平湖处理以及面数重新分布处理的具体实现过程,可以通过如下方式来实现:首先,基于预设的平滑函数对所述模型重塑结果进行平滑处理得到平滑处理结果,并对所述平滑处理结果进行模型收缩,得到模型收缩结果;其次,对所述模型收缩结果进行转换,得到多边形雨柱模型转化结果,并对所述多边形雨柱模型转换结果进行面数重新分布处理,得到所述虚拟雨柱的主干模型。也即,在实际应用的过程中,当得到模型重塑结果以后,还需要对模型重塑结果进行平滑处理;其中,具体的平滑处理过程可以基于smooth平滑函数来实现;其中,所得到的平滑处理结果可以参考图9中的901所示;进一步的,在得到平滑处理结果以后,还需要进行模型侵蚀处理;其中,所得到侵蚀处理结果可以参考图9中的902所示;更进一步的,还需要进行模型收缩,以得到模型收缩结果;最后,还需要添加convert转成多边形雨柱模型转化结果Polygons,并对多边形雨柱模型转化结果进行remesh,以降低模型的面数,进而得到虚拟雨柱的主干模型;其中,所得到的虚拟雨柱的主干模型,可以参考图9中的903所示。
[0073] 其次,根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型。具体的,虚拟雨柱的雨滴模型的具体生成过程,可以通过如下方式实现:首先,对所述第一虚拟粒子进行过滤,得到第二过滤结果,并为第二过滤结果中包括的第一虚拟粒子配置粒子体积;其次,为第二过滤结果中包括的第一虚拟粒子配置粒子生存周期,并根据所述粒子体积以及粒子生存周期,生成原始雨滴模型;最后,对所述原始雨滴模型进行模型减面处理,得到所述虚拟雨柱的雨滴模型。具体的,在实际应用的过程中,当虚拟雨柱的主干模型生成完成以后,还需要添加一些细节素材;其中,在细节素材添加的过程中,首先,可以利用第一虚拟粒子的ID删除95%的第一粒子对应的点,以得到第二过滤结果;然后,给第二过滤结果中包括的第一虚拟粒子(也即剩余存在的第一虚拟粒子)配置粒子体积fit,让其大小控制在0.1‑0.3之间(也即粒子体积可以控制在0.1‑0.3之间,具体的取值可以基于随机数生成函数来确定),为下一步vop控制粒子随生命缩放做准备;进一步的,添加vop,用age年龄除以life生命,然后乘以pscale点的大小,利用ramp在外面控制粒子随生命缩放消失(也即为第二过滤结果中包括的第一虚拟粒子配置粒子生存周期);最后,对粒子体积以及粒子生存周期进行融合以得到原始雨滴模型,并对原始雨滴模型进行添加Particle Fluid Surface,让粒子转成Polygons,然后再进行模型减面(也即remesh)处理,得到虚拟雨柱的雨滴模型;其中,所得到的虚拟雨柱的雨滴模型,可以参考图10所示。
[0074] 在步骤S230中,对所述虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型进行融合,得到所述原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图。
[0075] 具体的,在实际应用的过程中,可以将虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型融合merge到一起,将原始虚拟雨柱模型的整体降落时间控制在23帧出现以及消失,即可得到原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图;其中,原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图是以动画的方式呈现的,所得到的动画可以参考图11中的1101以及1102所示;基于该方式,可以解决现有技术中的立体感不足、模型形态不真实以及缺少水的动态感的问题。
[0076] 在步骤S240中,根据所述模型顶点贴图以及旋转信息贴图渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。
[0077] 具体的,虚拟雨柱降落场景的具体渲染过程,可以通过如下方式实现:首先,获取与所述原始虚拟雨柱模型对应的原始雨柱材质数据;其次,根据所述模型顶点贴图、旋转信息贴图以及原始雨柱材质数据,生成目标雨柱材质数据;然后,基于所述目标雨柱材质数据渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。也即,在实际应用的过程中,首先,可以从Houdini引擎中将模型顶点贴图以及旋转信息贴图以VAT(Vertex Aniamtion Texture)即顶点动画贴图的方式导入到Messiah引擎;其中,此处所记载的顶点动画贴图可以参考图12中的1201以及1202所示;然后,将模型顶点贴图中的每个顶点位移数据记录在贴图中,通过记录信息的两张贴图,控制模型顶点的位置偏移和旋转信息,从而还原出雨柱下落动画;最后,结合引擎内的水材质(也即原始雨柱材质数据)进行渲染,最终得到游戏中的虚拟雨柱降落场景的效果呈现;其中,所得到的虚拟雨柱降落场景可以参考图13中的1301以及1302所示。
[0078] 至此,本公开示例实施例所记载的虚拟场景的生成方法已经全部实现。基于前述所记载的内容可以得知,本公开示例实施例所记载的虚拟场景的生成方法,一方面,通过分析雨水连成线的形态和动态,进而使得所得到的虚拟雨柱降落场景的效果做的更真实可信;另一方面,还可以大幅的提高虚拟雨柱降落场景的生成效率,缩短了制作调试的时间成本,最终效果把控度高。
[0079] 下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
[0080] 本公开示例实施例还提供了一种虚拟场景的生成装置。具体的,参考图14所示,该虚拟场景的生成装置可以包括模型创建模块1410、主干模型生成模块1420、模型融合模块1430以及虚拟雨柱降落场景渲染模块1440。其中:
[0081] 模型创建模块1410,可以用于创建原始虚拟雨柱模型;
[0082] 主干模型生成模块1420,可以用于根据所述原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,并根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型;
[0083] 模型融合模块1430,可以用于对所述虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型进行融合,得到所述原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图;
[0084] 虚拟雨柱降落场景渲染模块1440,可以用于根据所述模型顶点贴图以及旋转信息贴图渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。
[0085] 在本公开的一种示例性实施例中,根据所述原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,包括:对所述原始虚拟雨柱模型进行噪波处理,得到噪波处理后的雨柱模型;为噪波处理后的雨柱模型添加第一虚拟粒子,并根据所述第一虚拟粒子构建第一粒子模型;根据所述第一粒子模型对所述噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果;对所述模型重塑结果进行平滑处理以及面数重新分布处理,得到所述虚拟雨柱的主干模型。
[0086] 在本公开的一种示例性实施例中,对所述原始虚拟雨柱模型进行噪波处理,得到噪波处理后的雨柱模型,包括:对所述原始虚拟雨柱模型进行分帧处理,得到多个模型图像帧;对各所述模型图像帧进行噪波变化处理,得到多个具有不同形状的模型图像帧;根据各所述具有不同形状的模型图像帧得到噪波处理后的雨柱模型。
[0087] 在本公开的一种示例性实施例中,为噪波处理后的雨柱模型添加第一虚拟粒子,并根据所述第一虚拟粒子构建第一粒子模型,包括:为噪波处理后的雨柱模型配置粒子向下发射的范围以及粒子发射帧数;为噪波处理后的雨柱模型添加第一虚拟粒子,并为所述第一虚拟粒子添加粒子应力以及粒子阻力;根据所述粒子应力以及粒子阻力确定所述第一虚拟粒子的粒子运动趋势,并根据所述粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型。
[0088] 在本公开的一种示例性实施例中,根据所述粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型,包括:为噪波处理后的雨柱模型中包括的每一帧具有不同形状的模型图像帧配置粒子发射源,并确定每一帧具有不同形状的模型图像帧下落到预设场景位置处的图像帧下落时间;基于所述粒子发射源以及所述图像帧下落时间发射第二虚拟粒子,并为所述第二虚拟粒子配置目标粒子生命周期;基于所述第二虚拟粒子、目标粒子生命周期、粒子运动趋势、第一虚拟粒子、粒子向下发射的范围以及粒子发射帧数构建所述第一粒子模型。
[0089] 在本公开的一种示例性实施例中,为所述第二虚拟粒子配置目标粒子生命周期,包括:为所述第二虚拟粒子配置原始粒子生命周期,并基于预设的随机数生成函数,生成与每一个第二虚拟粒子对应的随机数;基于各所述随机数以及原始粒子生命周期,确定所述目标粒子生命周期。
[0090] 在本公开的一种示例性实施例中,根据所述第一粒子模型对所述噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果,包括:对所述第一粒子模型中的第一虚拟粒子进行过滤,得到第一过滤结果,并根据第一过滤结果中的第一虚拟粒子创建模型体积数据块;基于所述模型体积数据块对噪波处理后的雨柱模型进行模型重塑,得到模型重塑结果。
[0091] 在本公开的一种示例性实施例中,对所述模型重塑结果进行平滑处理以及面数重新分布处理,得到所述虚拟雨柱的主干模型,包括:基于预设的平滑函数对所述模型重塑结果进行平滑处理得到平滑处理结果,并对所述平滑处理结果进行模型收缩,得到模型收缩结果;对所述模型收缩结果进行转换,得到多边形雨柱模型转化结果,并对所述多边形雨柱模型转换结果进行面数重新分布处理,得到所述虚拟雨柱的主干模型。
[0092] 在本公开的一种示例性实施例中,根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型,包括:对所述第一虚拟粒子进行过滤,得到第二过滤结果,并为第二过滤结果中包括的第一虚拟粒子配置粒子体积;为第二过滤结果中包括的第一虚拟粒子配置粒子生存周期,并根据所述粒子体积以及粒子生存周期,生成原始雨滴模型;对所述原始雨滴模型进行模型减面处理,得到所述虚拟雨柱的雨滴模型。
[0093] 在本公开的一种示例性实施例中,根据所述模型顶点贴图以及旋转信息贴图渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景,包括:获取与所述原始虚拟雨柱模型对应的原始雨柱材质数据;根据所述模型顶点贴图、旋转信息贴图以及原始雨柱材质数据,生成目标雨柱材质数据;基于所述目标雨柱材质数据渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。
[0094] 上述虚拟场景的生成装置中各模块的具体细节已经在对应的虚拟场景的生成方法中进行了详细的描述,因此此处不再赘述。
[0095] 应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0096] 此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0097] 在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0098] 所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0099] 下面参照图15来描述根据本公开的这种实施方式的电子设备1500。图15显示的电子设备1500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0100] 如图15所示,电子设备1500以通用计算设备的形式表现。电子设备1500的组件可以包括但不限于:上述至少一个处理单元1510、上述至少一个存储单元1520、连接不同系统组件(包括存储单元1520和处理单元1510)的总线1530以及显示单元1540。
[0101] 其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1510执行,使得所述处理单元1510执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1510可以执行如图2中所示的步骤S210:创建原始虚拟雨柱模型,并为所述原始虚拟雨柱模型配置第一虚拟粒子;步骤S220:根据所述原始虚拟雨柱模型以及第一虚拟粒子,生成虚拟雨柱的主干模型,并根据所述第一虚拟粒子,生成虚拟雨柱的雨滴模型;步骤S230:对所述虚拟雨柱的主干模型以及虚拟雨柱的雨滴模型进行融合,得到所述原始虚拟雨柱模型的模型顶点贴图以及旋转信息贴图;步骤S240:根据所述模型顶点贴图以及旋转信息贴图渲染所述原始虚拟雨柱模型,得到虚拟雨柱降落场景。
[0102] 存储单元1520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)15201和/或高速缓存存储单元15202,还可以进一步包括只读存储单元(ROM)15203。
[0103] 存储单元1520还可以包括具有一组(至少一个)程序模块15205的程序/实用工具15204,这样的程序模块15205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0104] 总线1530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0105] 电子设备1500也可以与一个或多个外部设备1600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1500交互的设备通信,和/或与使得该电子设备1500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1550进行。并且,电子设备1500还可以通过网络适配器1560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1560通过总线1530与电子设备1500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0106] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0107] 在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
[0108] 根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD‑ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0109] 所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0110] 计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0111] 可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0112] 可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0113] 此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0114] 本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。