CN107886574B - 一种基于粒子***的全局雨效仿真方法 - Google Patents
一种基于粒子***的全局雨效仿真方法 Download PDFInfo
- Publication number
- CN107886574B CN107886574B CN201710845934.9A CN201710845934A CN107886574B CN 107886574 B CN107886574 B CN 107886574B CN 201710845934 A CN201710845934 A CN 201710845934A CN 107886574 B CN107886574 B CN 107886574B
- Authority
- CN
- China
- Prior art keywords
- particles
- particle
- rain
- cuboid
- main camera
- 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
Links
Images
Classifications
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明实施例提供了一种基于粒子***的全局雨效仿真方法,其中,上述方法包括:步骤1、初始化雨效粒子***;步骤2、初始化深度相机;步骤3、计算主相机的变化参数、更新深度相机;步骤4、对雨效粒子进行更新操作。本发明的中基于视锥体可见范围内分布雨效粒子,减少了粒子数过多带来的资源消耗,且越靠近视点的粒子密度更高,符合人的视觉效应,更加有效的使用了粒子资源;采用了空间网格划分方法,解决了视点移动太快,导致粒子在视域范围内分布不均匀的问题;基于深度图技术检测粒子与地面的碰撞,保证了更好的真实感。
Description
技术领域
本发明涉及计算机虚拟现实仿真领域,更具体地说,涉及一种基于粒子***的全局雨效仿真方法。
背景技术
在3D游戏中,传统雨水仿真多采用全屏光效,就是通过美术制作工具(如3dmax或者maya)制作出雨的粒子特效,然后将其预渲染成平面动画,在游戏内使用反复播放,以达到在游戏场景内营造雨效的目的。这种技术就好像在镜头前放一块透明玻璃,而透明玻璃上不断重复几张变化的图片。玩家只能看到一种预渲染好的美术效果,没有其他的变化,如果希望保持长时间的变化,就需要预渲染大量的单帧画面,而支持这些画面的每张纹理需要覆盖整个屏幕,因此对内存的消耗非常大。
另有一种改进方案,不使用预渲染的动画,而是直接在游戏场景中使用实时的粒子***,解决了预渲染动画缺少变化的问题,但是单纯使用粒子***模拟真实雨水,要求在场景内存在成千上万的粒子,而每个粒子在其生存期内的运动情况都需要消耗CPU运算,数量过多和CPU的串行设计,影响了***的运行速度。另外一个关键的问题是如何高效的计算雨水与地面的碰撞,因为粒子数量多,传统的碰撞检测方法对计算资源的消耗难以接受。
发明内容
为了解决上述问题,本发明提出了一种基于粒子***的全局雨效仿真方法,其包括:
步骤1、初始化雨效粒子***,包括初始化粒子***的粒子数和粒子属性;
步骤2、初始化深度相机参数;
步骤3,当视点移动了,计算主相机的变化参数、更新深度相机参数;
步骤4,对雨效粒子进行更新操作。
其中,所述步骤1包括:
(1)建立包围所述主相机的视锥体的长方体,其中长方体的长为视锥体近截面到远截面的距离,宽为视锥体远截面左侧到右侧的距离,高为视锥体远截面下底到上底的距离;
(2)沿着所述长方体区域的长、宽、高三个方向进行网格划分;
(3)在每个网格采用相同粒子数随机洒下雨效粒子;
(4)对所述长方体区域进行扭曲。
其中,所述步骤2包括:
(1)计算主相机视锥体的外包围球的半径;
(2)从视锥体中心点的位置,沿着垂直水平面向上的方向平移一个所述外包围球的半径长度,在该位置放置一个深度相机,设置深度相机的投影方式为正交投影,对整个视锥体区域进行深度渲染;
(3)通过渲染到纹理RTT技术将视锥体内的深度值渲染到一张深度纹理中,供雨效粒子与地面的碰撞检测使用。
其中,所述对所述长方体区域进行扭曲的过程具体为:
(1)所述长方体区域的长、宽方向扭曲成扇形,其中圆心为主相机位置,弧度为主相机张角;以宽、长方向和主相机作为原点建立二维坐标系xoy,保证x坐标相同的点扭曲后沿视线方向到所述主相机的距离依然相等,保证y坐标相同的点扭曲后与主相机位置在一条直线上;
(3)按照所述长方体区域的长、宽方向的扭曲方法,对所述长方体区域的宽、高方向进行扭曲;
(4)经过扭曲后,沿着所述主相机视线方向的长方体四条边分别与视锥体的四条棱重合。
其中,步骤3包括:计算所述主相机的平移向量、旋转四元数和当前帧与上一帧的时间差,构建视锥体六个面的面方程;重新计算深度相机的视图和投影矩阵。
其中,步骤4包括:
(1)根据雨的速度和方向,更新雨效粒子位置;
(2)对于超出视锥体范围的粒子进行再生;
(3)判断雨效粒子是否到达地面,如果到达地面,进行粒子再生;
其中,对于超出视锥体范围的粒子进行再生具体为:
(1)按照所述的扭曲方法反推出上一帧粒子在所述长方体中的坐标,建立所述长方体的网格索引关系,进而计算出粒子的网格索引;
(2)按照所述主相机的平移和旋转参数计算粒子再生的网格索引;
(3)在网格内随机再生一个粒子;
(4)通过扭曲方法将粒子坐标位置映射到视锥体空间内。
其中,判断雨效粒子是否到达地面,如果到达地面,进行粒子再生,具体为:
计算所述雨效粒子与所述深度相机的距离,如果大于深度纹理中对应的深度值,则表明雨效粒子已到达地面;
如果粒子到达地面,通过扭曲方法反推出雨效粒子在长方体区域中的位置,在长方体区域内从雨效粒子的当前位置沿着雨的反方向发射一条射线,查找最外侧网格,在网格内随机再生一个粒子。
本发明的中基于视锥体可见范围内分布雨效粒子,减少了粒子数过多带来的资源消耗,且越靠近视点的粒子密度更高,符合人的视觉效应,更加有效的使用了粒子资源;采用了空间网格划分方法,解决了视点移动太快,导致粒子在视域范围内分布不均匀的问题;基于深度图技术检测粒子与地面的碰撞,保证了更好的真实感。
附图说明
图1为与本发明实施例一致的一种基于粒子***的全局雨效仿真方法流程图。
具体实施例
如图1所示,本发明提出了一种基于粒子***的全局雨效仿真方法,其特征在于,包括:
步骤1、初始化雨效粒子***,包括初始化粒子***的粒子数和粒子属性;
步骤2、初始化深度相机参数;
步骤3,当视点移动了,计算主相机的变化参数、更新深度相机参数;
步骤4,对雨效粒子进行更新操作。
其中,所述步骤1包括:
(1)建立包围所述主相机的视锥体的长方体,其中长方体的长为视锥体近截面到远截面的距离,宽为视锥体远截面左侧到右侧的距离,高为视锥体远截面下底到上底的距离;
(2)沿着所述长方体区域的长、宽、高三个方向进行网格划分;
(3)在每个网格采用相同粒子数随机洒下雨效粒子;
(4)对所述长方体区域进行扭曲。
其中,所述步骤2包括:
(1)计算主相机视锥体的外包围球的半径;
(2)从视锥体中心点的位置,沿着垂直水平面向上的方向平移一个所述外包围球的半径长度,在该位置放置一个深度相机,设置深度相机的投影方式为正交投影,对整个视锥体区域进行深度渲染;
(3)通过渲染到纹理RTT技术将视锥体内的深度值渲染到一张深度纹理中,供雨效粒子与地面的碰撞检测使用。
其中,所述对所述长方体区域进行扭曲的过程具体为:
(1)所述长方体区域的长、宽方向扭曲成扇形,其中圆心为主相机位置,弧度为主相机张角;以宽、长方向和主相机作为原点建立二维坐标系xoy,保证x坐标相同的点扭曲后沿视线方向到所述主相机的距离依然相等,保证y坐标相同的点扭曲后与主相机位置在一条直线上;
(3)按照所述长方体区域的长、宽方向的扭曲方法,对所述长方体区域的宽、高方向进行扭曲;
(4)经过扭曲后,沿着所述主相机视线方向的长方体四条边分别与视锥体的四条棱重合。
其中,步骤3包括:计算所述主相机的平移向量、旋转四元数和当前帧与上一帧的时间差,构建视锥体六个面的面方程;重新计算深度相机的视图和投影矩阵。
其中,步骤4包括:
(1)根据雨的速度和方向,更新雨效粒子位置;
(2)对于超出视锥体范围的粒子进行再生;
(3)判断雨效粒子是否到达地面,如果到达地面,进行粒子再生;
其中,对于超出视锥体范围的粒子进行再生具体为:
(1)按照所述的扭曲方法反推出上一帧粒子在所述长方体中的坐标,建立所述长方体的网格索引关系,进而计算出粒子的网格索引;
(2)按照所述主相机的平移和旋转参数计算粒子再生的网格索引;
(3)在网格内随机再生一个粒子;
(4)通过扭曲方法将粒子坐标位置映射到视锥体空间内。
其中,判断雨效粒子是否到达地面,如果到达地面,进行粒子再生,具体为:
计算所述雨效粒子与所述深度相机的距离,如果大于深度纹理中对应的深度值,则表明雨效粒子已到达地面;
如果所述雨效粒子到达地面,通过扭曲方法反推出雨效粒子在长方体区域中的位置,在长方体区域内从所述雨效粒子的当前位置沿着雨的反方向发射一条射线,计算射线与长方体区域边界的交点,,在该交点所在网格内随机再生一个粒子。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (8)
1.一种基于粒子***的全局雨效仿真方法,其特征在于,包括:
步骤1、初始化雨效粒子***,包括初始化粒子***的粒子数和粒子属性;
步骤2、初始化深度相机参数;
步骤3、当视点移动,计算主相机的变化参数、更新深度相机参数;
步骤4、对雨效粒子进行更新操作;
其中所述步骤1包括:
(1)建立包围所述主相机的视锥体的长方体,其中长方体的长为视锥体近截面到远截面的距离,宽为视锥体远截面左侧到右侧的距离,高为视锥体远截面下底到上底的距离;
(2)沿着所述长方体区域的长、宽、高三个方向进行网格划分;
(3)在每个网格采用相同粒子数随机洒下雨效粒子;
(4)对所述长方体区域进行扭曲。
2.根据权利要求1所述的方法,其中所述步骤2包括:
(1)计算主相机视锥体的外包围球的半径;
(2)从视锥体中心点的位置,沿着垂直水平面向上的方向平移一个所述外包围球的半径长度,在该位置放置一个深度相机,设置深度相机的投影方式为正交投影,对整个视锥体区域进行深度渲染;
(3)通过渲染到纹理RTT技术将视锥体内的深度值渲染到一张深度纹理中,供雨效粒子与地面的碰撞检测使用。
3.根据权利要求1所述的方法,其中所述对所述长方体区域进行扭曲的过程具体为:
(1)所述长方体区域的长、宽方向扭曲成扇形,其中圆心为主相机位置,弧度为主相机张角;以宽、长方向和主相机作为原点建立二维坐标系xoy,保证x坐标相同的点扭曲后沿视线方向到所述主相机的距离依然相等,保证y坐标相同的点扭曲后与主相机位置在一条直线上;
(3)按照所述长方体区域的长、宽方向的扭曲方法,对所述长方体区域的宽、高方向进行扭曲;
(4)经过扭曲后,沿着所述主相机视线方向的长方体四条边分别与视锥体的四条棱重合。
4.根据权利要求1所述的方法,其中步骤3包括:计算所述主相机的平移向量、旋转四元数和当前帧与上一帧的时间差,构建视锥体六个面的面方程;重新计算深度相机的视图和投影矩阵。
5.根据权利要求2所述的方法,其中步骤4包括:
(1)根据雨的速度和方向,更新雨效粒子位置;
(2)对于超出视锥体范围的粒子进行再生;
(3)判断雨效粒子是否到达地面,如果到达地面,进行粒子再生。
7.根据权利要求5所述的方法,对于超出视锥体范围的粒子进行再生包括:
(1)按照所述的扭曲方法反推出上一帧粒子在所述长方体中的坐标,建立所述长方体的网格索引关系,进而计算出粒子的网格索引;
(2)按照所述主相机的平移和旋转参数计算粒子再生的网格索引;
(3)在网格内随机再生一个粒子;
(4)通过扭曲方法将粒子坐标位置映射到视锥体空间内。
8.根据权利要求5所述的方法,判断雨效粒子是否到达地面,如果到达地面,进行粒子再生,具体为:
计算所述雨效粒子与所述深度相机的距离,如果大于深度纹理中对应的深度值,则表明所述雨效粒子已到达地面;
如果所述雨效粒子到达地面,通过扭曲方法反推出雨效粒子在长方体区域中的位置,在长方体区域内从所述雨效粒子的当前位置沿着雨的反方向发射一条射线,计算射线与长方体区域边界的交点,在该交点所在网格内随机再生一个粒子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710845934.9A CN107886574B (zh) | 2017-09-19 | 2017-09-19 | 一种基于粒子***的全局雨效仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710845934.9A CN107886574B (zh) | 2017-09-19 | 2017-09-19 | 一种基于粒子***的全局雨效仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107886574A CN107886574A (zh) | 2018-04-06 |
CN107886574B true CN107886574B (zh) | 2021-04-16 |
Family
ID=61780685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710845934.9A Active CN107886574B (zh) | 2017-09-19 | 2017-09-19 | 一种基于粒子***的全局雨效仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107886574B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111667393B (zh) * | 2019-08-26 | 2023-07-07 | 福建数***信息科技有限公司 | 一种虚拟场景中模拟下雨的方法及终端 |
CN115814414A (zh) * | 2020-08-21 | 2023-03-21 | 完美世界(北京)软件科技发展有限公司 | 游戏资源的制作方法及装置、存储介质、终端 |
CN112116689B (zh) * | 2020-09-22 | 2024-05-14 | 威创集团股份有限公司 | 一种实时雨雪特效渲染方法和装置 |
CN115423913A (zh) * | 2021-05-31 | 2022-12-02 | 北京字跳网络技术有限公司 | 一种粒子渲染方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106204418A (zh) * | 2016-06-24 | 2016-12-07 | 南京睿悦信息技术有限公司 | 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法 |
CN106846474A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院电子学研究所苏州研究院 | 基于时序特征和粒子***的WebGIS时空过程模拟方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120000024A1 (en) * | 2010-06-30 | 2012-01-05 | Raytheon Company | Automated camera cleaning system |
-
2017
- 2017-09-19 CN CN201710845934.9A patent/CN107886574B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106204418A (zh) * | 2016-06-24 | 2016-12-07 | 南京睿悦信息技术有限公司 | 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法 |
CN106846474A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院电子学研究所苏州研究院 | 基于时序特征和粒子***的WebGIS时空过程模拟方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107886574A (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107886574B (zh) | 一种基于粒子***的全局雨效仿真方法 | |
US11069117B2 (en) | Optimal texture memory allocation | |
US10346950B2 (en) | System and method of capturing and rendering a stereoscopic panorama using a depth buffer | |
JP6423435B2 (ja) | 物理的光景を表すための方法および装置 | |
US7586489B2 (en) | Method of generating surface defined by boundary of three-dimensional point cloud | |
US10068547B2 (en) | Augmented reality surface painting | |
JP2019071111A (ja) | 用紙 | |
CN108919954B (zh) | 一种动态变化场景虚实物体碰撞交互方法 | |
CN107038745A (zh) | 一种3d旅游景观漫游交互方法及装置 | |
CN105205861B (zh) | 基于Sphere‑Board的树木三维可视化模型实现方法 | |
CN104331918A (zh) | 基于深度图实时绘制室外地表遮挡剔除以及加速方法 | |
WO2020114274A1 (zh) | 潜在可视集合的确定方法、装置、设备及存储介质 | |
CN106204713B (zh) | 静态合并处理方法和装置 | |
CN107015654A (zh) | 基于增强现实的导航方法及装置 | |
CN103473802B (zh) | 基于粒子***的全局天气模拟方法 | |
US10325403B2 (en) | Image based rendering techniques for virtual reality | |
CN104407521A (zh) | 一种实现水下机器人实时仿真的方法 | |
CN112365572B (zh) | 一种基于曲面细分的渲染方法及其相关产品 | |
CN106570926B (zh) | 一种飞行视景仿真中高效的粒子云层绘制方法 | |
EP3610461A1 (en) | High quality layered depth image texture rasterization | |
CN113457137A (zh) | 游戏场景生成方法、装置、计算机设备及可读存储介质 | |
CN105243268A (zh) | 一种游戏地图定位方法、装置及用户终端 | |
WO2017174006A1 (zh) | 图片处理的方法和装置 | |
CN113744403A (zh) | 建筑物的三维模型的生成方法及*** | |
CN109064546A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |