CN110378958B - 基于fft数据预烘焙技术的海面生成方法 - Google Patents
基于fft数据预烘焙技术的海面生成方法 Download PDFInfo
- Publication number
- CN110378958B CN110378958B CN201910531924.7A CN201910531924A CN110378958B CN 110378958 B CN110378958 B CN 110378958B CN 201910531924 A CN201910531924 A CN 201910531924A CN 110378958 B CN110378958 B CN 110378958B
- Authority
- CN
- China
- Prior art keywords
- fft
- height field
- sequence
- textures
- field data
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
- G06T7/41—Analysis of texture based on statistical description of texture
- G06T7/42—Analysis of texture based on statistical description of texture using transform domain methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Discrete Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种基于FFT数据预烘焙技术的海面生成方法,本发明通过将Butterfly算法的结果保存在纹理中,在运行中采样纹理获得连续动态的高度场数据,从而控制海面顶点起伏变化。本发明能够实现离线完成Butterfly算法的计算,用空间换时间的方法保证高效性和实时性。实现在移动端上性能可以接受的FFT海面效果。
Description
技术领域
本发明涉及一种基于FFT(Fast Fourier Transformation,即为快速傅氏变换)数据预烘焙技术的海面生成方法。
背景技术
近年来实时渲染领域,海水起伏变化的几何模拟是较为复杂的。海水起伏变化具有随机性,不能用静态的几何多边形表示海水模型,每一帧都必须实时计算出海水的几何变化。海水起伏变化的物理规律十分复杂,由于硬件受限,实时计算中会采用近似的算法来模拟海水的运动规律。FFT是目前应用比较广泛的模拟海水运动的算法,但由于计算的复杂度,很难在效果和效率之间找到一个平衡点。
发明内容
本发明的目的在于提供一种基于FFT数据预烘焙技术的海面生成方法。
为解决上述问题,本发明提供一种基于FFT数据预烘焙技术的海面生成方法,包括:
使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据,并在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中;
在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化。
进一步的,在上述方法中,所述纹理为LDR纹理。
进一步的,在上述方法中,所述LDR纹理保存的值域范围为[0,1]。
进一步的,在上述方法中,使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据中,
所述高度场数据包括:海水每个点的高度Y方向的起伏、以及海水水平面上XZ两个方向的Chop偏移。
烘焙进一步的,在上述方法中,在这个过程中将所述FFT高度场数据按30FPS的帧率进行烘焙,获得64x64、128x128、256x256不同规格的序列帧纹理中,
以3秒一次循环,30FPS为标准,则生产序列帧90张序列帧纹理。
进一步的,在上述方法中,在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化,包括:
将所述序列帧纹理按时序排列,运行时在Vertex Shader里根据时间从不同的序列帧纹理中采样,以获得连续动态的FFT高度场数据,驱动海水顶点的坐标变化。
与现有技术相比,本发明通过将Butterfly算法的结果保存在纹理中,在运行中采样纹理获得连续动态的高度场数据,从而控制海面顶点起伏变化。本发明能够实现离线完成Butterfly算法的计算,用空间换时间的方法保证高效性和实时性。实现在移动端上性能可以接受的FFT海面效果。
附图说明
图1是本发明一实施例的基于FFT数据预烘焙技术的海面生成方法的序列帧纹理效果图;
图2是本发明一实施例的生成的海面效果图;
图3为本发明一实施例的基于FFT数据预烘焙技术的海面生成方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
水面在计算机模拟中相当的普遍,比如在游戏和电影当中,它们是能够显著提高场景真实度级别的重要元素。比如,Jerry Tessendorf成功地利用FFT技术结合海洋学的统计数据,采用相应的模型实现了对大场景水面的模拟。现有计算机等终端设备中使用Compute Shader完成Butterfly算法的计算,获得傅里叶变换的海面高度场数据,从而控制海面顶点起伏变化。
进一步地说,现代GPU很多时候不仅仅用于Graphics,很多时候可以用GPU来做很多并行性较强的通用计算,简称GPGPU(General Purpose GPU),在渲染中,我们很多数据的计算方式是类似的,是比较通用的,如高斯模糊,SSAO,SSR等等都可以放到ComputeShader计算,又如海洋渲染的GerstnerWave或者FFT(快速傅里叶变换)也可以放到ComputeShader中计算。相比CPU计算,性能提高了。单核计算CPU的计算能力远胜于GPU,胜在GPU的Core(核心)多,并行能力强,总体上计算并行数据的能力比CPU强。即,ComputeShader计算的效率很强。ComputeShader不属于图形渲染管线的任何阶段,但它可以计算图形渲染管线的通用数据,加快整个渲染流程。但是以手机为主的智能终端中目前是无法支持ComputeShader特性,因此本发明对现有的FFT的处理方案进行改进,具体如下:
如图1所示,本发明提供一种基于FFT数据预烘焙技术的海面生成方法,包括:
步骤S1,使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据,并在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中;
本发明的基于FFT数据预烘焙技术的海面生成方法一实施例中,步骤S1,使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据。
比如,使用基于统计模型和FFT方法等传统方式来进行水面创建生成高度场。所述高度场数据包括:海面每个点的高度Y方向的起伏、以及水平面上X、Z两个方向的Chop偏移。
在此,在抽帧保存的中间计算结果的时候,需要进行编码(需要说明的是:上述抽帧保存的中间计算结果的范围是[-1,1],而纹理只能保存[0,1]的数据,所以需要编码将[-1,1]编码成[0,1]),高度场数据包含了海水每个点的高度Y方向的起伏、以及海水水平面上X、Z两个方向的Chop偏移;故需要保存三个轴向的信息,其编码公式如下:
LDRColor.rgb=(HeightField.xyz+1)*0.5。
本发明的基于FFT数据预烘焙技术的海面生成方法一实施例中,在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中,其进一步包括:
在这个过程中将所述编好码的FFT高度场数据按30FPS的帧率进行烘焙,获得64x64、128x128、256x256不同规格的序列帧纹理,以3秒一次循环,30FPS为标准,则生产序列帧90张序列帧纹理。
在此,使用步骤S11的方法按30FPS的帧率进行烘焙,根据需求获得64x64、128x128、256x256等不同规格的序列帧纹理。以3秒一次循环,30FPS为标准,则生产序列帧90张。序列帧纹理效果如图1所示。上述仅是以30FPS的帧率为举例说明,因为30FPS是现有产品在终端运行的通常标准帧率。烘焙都是按照256x256的规格,保存序列帧纹理时根据需要进行尺寸压缩(比如,这里的压缩只是直接将纹理尺寸缩小,是有损压缩,例如压缩4倍,就是宽高各除以2,将4个像素的信息加权平均合到1个像素上)。不同规格主要是兼顾效果和性能,根据相机的远近选择不同规格的序列帧纹理,比如,离相机近的地方需要用精度更高的纹理,离相机远的地方可以用精度更低的纹理。
在此,保存的中间数据可以使用LDR纹理而非HDR纹理,因为LDR数据拥有更高的压缩比和更低的带宽占用,更有利于移动端设备使用,故采用LDR纹理;而LDR纹理保存的值域范围为[0,1],故在调制实时计算Butterfly算法的水面生成效果时,需要通过调参保证水面起伏范围在[-1,1]之间(比如,通过调节水面的振幅,将水面起伏的数值范围限制到[-1,1]),便于接下来的编码解码操作。
步骤S2,在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化。
本发明的基于FFT数据预烘焙技术的海面生成方法一实施例中,步骤S2,在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化,包括:
将所述序列帧纹理按时序排列(按时序排列后以“固定名字+帧号”命名保存在硬盘,运行时读取序列帧纹理提交到显存,根据当前时间计算出帧号去采样指定帧号的序列帧纹理,比如,按时序排列后即可获得时序排列的先后顺序,根据当前时间可获得其时间排列的顺序,由此可计算出对应的帧号,进而获得对应的序列帧纹理数据),运行时在VertexShader里根据时间从不同的序列帧纹理中采样,以获得连续动态的FFT高度场数据,驱动海水顶点的坐标变化。假设动画单次循环长度为1秒,通过时间Time计算出本次循环的当前帧数index(1秒30帧,所以index的范围是0~29,每个数对应一张纹理),对当前帧数index对应的纹理进行采样。
在此,序列帧纹理的RGB分量保存顶点XYZ变化的信息。后面一段就是更具体的描述这个过程,得到原始的顶点数据之后,加上序列帧纹理采样所获得的顶点坐标变化,就是最终的顶点数据.
在这里,本专利对“投影”概念进行解释,引入Projective Grid(投影网络)的概念,隆德大学计算机科学系Calle Lejdfors与萨博博福斯动力公司合作后曾发表了一个论文,名称为实时水绘制.引入投影网格概念(Real-time water rendering-introducingthe projected grid concept),相关的论文请参考http://fileadmin.cs.lth.se/ graphics/theses/projects/projgrid/。
这里做一个简要的说明,传入VertexShader的是CPU构建的动态顶点数据,其X、Z范围是[0,1](高度Y是由序列帧纹理中采样获得,不需要顶点数据),同时还会传入水平面和相机视锥体相交的4个交点在相机空间的坐标(作为顶点在相机空间的坐标范围),通过每个顶点[0,1]范围的X、Z坐标去映射,具体做法是对4个交点插值,计算出每个顶点在相机空间的坐标(可以把4个交点想象成一个平面,通过[0,1]范围的二维坐标就可以确定一个平面上的点),再通过相机变换的逆变换,转换到世界空间。
设经过上面段落提及的投影变换后已经获得了世界空间坐标的顶点数据为WorldPosv,当前使用的序列帧为FFTSquence,当前索引为index,现实时间为Time,则计算公式如下:
index=(int)(Time*30)%30,
WorldPosv=WorldPosv+(Sample(FFTSquence[index],WorldPosv.xz).rgb*2-1)。
最终的效果如图2所示。
由于LDR纹理数据拥有更高的压缩比和更低的带宽占用,水面起伏Y范围在[-1,1]之间,上面的[0,1]指的是投影变换前的X、Z坐标,这里的[-1,1]表示从纹理采样再转换后的Y坐标,因此加上Y以防止混淆。数据小且易于缓冲,比较方便获得海面顶点起伏变化。数据量小且容易运算,因此能够实现离线完成Butterfly算法的计算。
传统的FFT技术,使用Compute Shader完成Butterfly算法的计算,获得傅里叶变换的海面高度场数据,从而控制海面顶点起伏变化。首先移动端不支持Compute Shader特性,另外Butterfly算法的计算量对于移动端GPU也是巨大的性能负载。
本发明通过将Butterfly算法的结果保存在纹理中,在运行中采样纹理获得连续动态的高度场数据,从而控制海面顶点起伏变化。本发明能够实现离线完成Butterfly算法的计算,用空间换时间的方法保证高效性和实时性。实现在移动端上性能可以接受的FFT海面效果。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (3)
1.一种基于FFT数据预烘焙技术的海面生成方法,其特征在于,包括:
使用实时计算Butterfly算法的水面波形生成器,生成快速傅立叶变换FFT高度场数据,并在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中;
其中,使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据,其进一步包括:
使用基于统计模型和FFT方法在内的方式来进行水面创建生成高度场,所述高度场数据包括:海面每个点的高度Y方向的起伏、以及水平面上X、Z两个方向的Chop偏导数偏移,
在抽帧保存的中间计算结果的时候,需要进行编码,将[-1,1]编码成[0,1],高度场数据包含了海水每个点的高度Y方向的起伏、以及海水水平面上X、Z两个方向的Chop偏移;保存三个轴向的信息,其编码公式如下:
LDRColor.rgb=(HeightField.xyz+1)*0.5
HeightField为高度场数据的编码方,LDRColor.rgb为将xyz信息保存进纹理rgb通道中,用于将所述FFT高度场数据抽帧作为中间数据保存在纹理中,其进一步包括:
将编好码的FFT高度场数据按30FPS每秒的帧率进行烘焙,获得64x64、128x128、256x256不同规格的序列帧纹理,以3秒一次循环,30FPS为标准,则生产序列帧90张序列帧纹理;
按30FPS的帧率进行烘焙,根据需求获得64x64、128x128、256x256在内不同规格的序列帧纹理,以3秒一次循环,30FPS为标准,则生产序列帧90张,烘焙按照256x256的规格,保存序列帧纹理时根据需要进行尺寸压缩,
在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化,其进一步包括:
将所述序列帧纹理按时序排列,按时序排列后以“固定名字+帧号”命名保存在硬盘,运行时读取序列帧纹理提交到显存,根据当前时间计算出帧号去采样指定帧号的序列帧纹理,运行时在Vertex Shader顶点着色器里根据时间从不同的序列帧纹理中采样,以获得连续动态的FFT高度场数据,驱动海水顶点的坐标变化。
2.如权利要求1所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,所述纹理为LDR低动态范围纹理。
3.如权利要求2所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,所述LDR纹理保存的值域范围为[0,1]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910531924.7A CN110378958B (zh) | 2019-06-19 | 2019-06-19 | 基于fft数据预烘焙技术的海面生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910531924.7A CN110378958B (zh) | 2019-06-19 | 2019-06-19 | 基于fft数据预烘焙技术的海面生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110378958A CN110378958A (zh) | 2019-10-25 |
CN110378958B true CN110378958B (zh) | 2022-04-22 |
Family
ID=68250526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910531924.7A Active CN110378958B (zh) | 2019-06-19 | 2019-06-19 | 基于fft数据预烘焙技术的海面生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110378958B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587594A (zh) * | 2009-06-19 | 2009-11-25 | 大连海事大学 | 航海模拟器场景中的海浪构网算法 |
CN103700134A (zh) * | 2013-12-24 | 2014-04-02 | 四川川大智胜软件股份有限公司 | 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法 |
CN103700143A (zh) * | 2013-12-30 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种基于gpu多遍绘制的三维动态海洋模拟方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10134174B2 (en) * | 2016-06-13 | 2018-11-20 | Microsoft Technology Licensing, Llc | Texture mapping with render-baked animation |
-
2019
- 2019-06-19 CN CN201910531924.7A patent/CN110378958B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587594A (zh) * | 2009-06-19 | 2009-11-25 | 大连海事大学 | 航海模拟器场景中的海浪构网算法 |
CN103700134A (zh) * | 2013-12-24 | 2014-04-02 | 四川川大智胜软件股份有限公司 | 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法 |
CN103700143A (zh) * | 2013-12-30 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种基于gpu多遍绘制的三维动态海洋模拟方法 |
Non-Patent Citations (1)
Title |
---|
一种视点相关的实时海洋渲染算法;宋歌等;《四川大学学报(工程科学版)》;20160630;第48卷;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110378958A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552989B2 (en) | Point cloud attribute compression method based on KD tree and optimized graph transformation | |
KR20080090671A (ko) | 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치 | |
CN104484852A (zh) | 一种点云曲面的复合几何图像表示方法 | |
CN101626509A (zh) | 三维网格编码、解码方法及编码、解码装置 | |
EP3603071A1 (en) | Implicit view-dependent quantization | |
CN110163945B (zh) | 一种实时渲染中的水面仿真方法 | |
CN113592711B (zh) | 点云数据不均匀的三维重建方法、***、设备及存储介质 | |
Noguera et al. | Volume rendering strategies on mobile devices | |
CN116342782A (zh) | 生成虚拟形象渲染模型的方法和装置 | |
CN114820327A (zh) | 基于卷积神经网络利用额外渲染信息的实时超分辨率方法 | |
CN103544731A (zh) | 一种基于多相机的快速反射绘制方法 | |
CN116843841A (zh) | 基于网格压缩的大规模虚拟现实*** | |
CN113096015B (zh) | 基于渐进式感知和超轻量级网络的图像超分辨率重建方法 | |
CN110969690A (zh) | 一种基于纹理的顶点动画数据存储方法及其*** | |
CN104463937A (zh) | 基于不规则物体的动画生成方法及装置 | |
CN110378958B (zh) | 基于fft数据预烘焙技术的海面生成方法 | |
CN105160705A (zh) | 一种基于三维引擎对移动终端三维图像数据的处理方法 | |
CN111383158A (zh) | 遥感图像预处理方法 | |
CN109360263B (zh) | 一种面向资源受限移动设备的实时软阴影生成方法及装置 | |
CN114419182A (zh) | 图像处理方法和装置 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
CN113240780A (zh) | 生成动画的方法和装置 | |
She et al. | Real-time rendering of temporal volumetric data on a gpu | |
CN116778053B (zh) | 基于目标引擎的贴图生成方法、装置、设备及存储介质 | |
Kim et al. | A distance-based compression of 3d meshes for mobile devices |
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 |