CN110378958A - 基于fft数据预烘焙技术的海面生成方法 - Google Patents

基于fft数据预烘焙技术的海面生成方法 Download PDF

Info

Publication number
CN110378958A
CN110378958A CN201910531924.7A CN201910531924A CN110378958A CN 110378958 A CN110378958 A CN 110378958A CN 201910531924 A CN201910531924 A CN 201910531924A CN 110378958 A CN110378958 A CN 110378958A
Authority
CN
China
Prior art keywords
fft
texture
data
height field
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.)
Granted
Application number
CN201910531924.7A
Other languages
English (en)
Other versions
CN110378958B (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.)
Beijing Babe Times Technology Co Ltd
Original Assignee
Beijing Babe Times 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 Beijing Babe Times Technology Co Ltd filed Critical Beijing Babe Times Technology Co Ltd
Priority to CN201910531924.7A priority Critical patent/CN110378958B/zh
Publication of CN110378958A publication Critical patent/CN110378958A/zh
Application granted granted Critical
Publication of CN110378958B publication Critical patent/CN110378958B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • G06T7/41Analysis of texture based on statistical description of texture
    • G06T7/42Analysis of texture based on statistical description of texture using transform domain methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; 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数据预烘焙技术的海面生成方法
技术领域
本发明涉及一种基于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不同规格的序列帧纹理。
进一步的,在上述方法中,在这个过程中将所述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 waterrendering-introducing theprojected 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 (7)

1.一种基于FFT数据预烘焙技术的海面生成方法,其特征在于,包括:
使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据,并在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中;
在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化。
2.如权利要求1所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,所述纹理为LDR纹理。
3.如权利要求2所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,所述LDR纹理保存的值域范围为[0,1]。
4.如权利要求1所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,使用实时计算Butterfly算法的水面波形生成器,生成FFT高度场数据中,
所述高度场数据包括:海水每个点的高度Y方向的起伏、以及海水水平面上XZ两个方向的Chop偏移。
5.如权利要求4所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,在这个过程中将所述FFT高度场数据抽帧作为中间数据保存在纹理中,包括:
在这个过程中将所述FFT高度场数据按30FPS的帧率进行烘培,获得64x64、128x128、256x256不同规格的序列帧纹理。
6.如权利要求5所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,在这个过程中将所述FFT高度场数据按30FPS的帧率进行烘培,获得64x64、128x128、256x256不同规格的序列帧纹理中,
以3秒一次循环,30FPS为标准,则生产序列帧90张序列帧纹理。
7.如权利要求6所述的基于FFT数据预烘焙技术的海面生成方法,其特征在于,在运行中采样所述纹理获得连续动态的FFT高度场数据,以驱动海水顶点的坐标变化,包括:
将所述序列帧纹理按时序排列,运行时在Vertex Shader里根据时间从不同的序列帧纹理中采样,以获得连续动态的FFT高度场数据,驱动海水顶点的坐标变化。
CN201910531924.7A 2019-06-19 2019-06-19 基于fft数据预烘焙技术的海面生成方法 Active CN110378958B (zh)

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 true CN110378958A (zh) 2019-10-25
CN110378958B 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 (4)

* Cited by examiner, † Cited by third party
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多遍绘制的三维动态海洋模拟方法
US20170358120A1 (en) * 2016-06-13 2017-12-14 Anthony Ambrus Texture mapping with render-baked animation

Patent Citations (4)

* Cited by examiner, † Cited by third party
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多遍绘制的三维动态海洋模拟方法
US20170358120A1 (en) * 2016-06-13 2017-12-14 Anthony Ambrus Texture mapping with render-baked animation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
宋歌等: "一种视点相关的实时海洋渲染算法", 《四川大学学报(工程科学版)》 *
陈祥望: "《中国优秀硕士学位论文全文数据库》", 1 May 2014 *

Also Published As

Publication number Publication date
CN110378958B (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
US8102428B2 (en) Content-aware video stabilization
US6825850B2 (en) System and process for optimal texture map reconstruction from multiple views
CN107085629B (zh) 一种基于视频重建与欧拉模型耦合的流体仿真方法
US8878849B2 (en) Horizon split ambient occlusion
US20050285872A1 (en) System and process for optimal texture map reconstruction from multiple views
CN111199518B (zh) Vr设备的图像呈现方法、装置、设备和计算机存储介质
CN111724313B (zh) 一种阴影贴图生成方法与装置
CN109493297A (zh) 低质量人脸图像增强方法、***、设备及存储介质
CN115601484B (zh) 虚拟人物面部驱动方法、装置、终端设备和可读存储介质
Noguera et al. Volume rendering strategies on mobile devices
CN116342782A (zh) 生成虚拟形象渲染模型的方法和装置
CN106204418A (zh) 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法
CN110378958A (zh) 基于fft数据预烘焙技术的海面生成方法
CN107920252B (zh) 一种全景视频数据处理方法、装置及***
Peng et al. A real-time system for crowd rendering: parallel lod and texture-preserving approach on gpu
CN112203074B (zh) 一种基于两步迭代的相机平移新视点图像生成方法和***
CN109360263B (zh) 一种面向资源受限移动设备的实时软阴影生成方法及装置
Kämäräinen et al. Foveated spatial compression for remote rendered virtual reality
CN114693857A (zh) 光线追踪多帧降噪方法、电子设备、芯片及可读存储介质
van Wijk et al. Image based rendering of iterated function systems
Derevyannykh Real-time path-guiding based on parametric mixture models
CN116778053B (zh) 基于目标引擎的贴图生成方法、装置、设备及存储介质
CN103108162A (zh) 高清高帧率实时视频增透仪
CN115035230B (zh) 视频渲染处理方法、装置、设备及存储介质
Kwon et al. Fast Ray Reordering and Approximate Sibson Interpolation for Foveated Rendering on GPU

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