图形工作站、集群应用方案
  • 网站首页
  • 商城
  • 产品
  • 行业计算
  • 科学工程计算
  • 化学&生物
  • 图形设计
  • 图像处理
  • 视景仿真
  • 人工智能
  • 影视后期
全球领先的高端图形工作站供应商

免费测试 热线 : 400-7056-800 【 为任何应用提供 最快计算设备 如不符,退货】【最新报价】【选购指南】【京东商城】



企业通用模版网站

  • 科研团队全能超算平台25v1
  • 超高分拼接 数字孪生
  • 科学计算MatLAB工作站24
  • 地质建模 油藏模拟工作站
  • 工业CT扫描 机器视觉计算
  • 电力系统关键应用配置24
  • 网站首页
  • 商城
  • 产品
  • 行业计算
  • 科学工程计算
  • 化学&生物
  • 图形设计
  • 图像处理
  • 视景仿真
  • 人工智能
  • 影视后期
  • 送无人机啦 8核6.4GHz  96核4.8GHz 加速改装 

  • 高性能集群 虚拟并行计算 芯片设计 光学仿真 

  • 蛋白质预测 生物信息 冷冻电镜 材料模拟

  • RSS订阅
  • 理科计算推荐
  • 仿真计算最快最完美25v1
  • 电磁仿真单机与集群25v1
  • 航拍实景建模单机集群
  • 遥感图像处理工作站集群
  • 4K/8K剪辑特效调色24v1
  • AI大模型工作站集群25v1
  • Abaqus硬件配置大全24v3
  • CST电磁仿真工作站25v1
  • 多物理场仿真单机与集群
  • 流体/空气动力学仿真25v1
  • 量子化学 分子动力模拟
  • 三维设计24v2  3D打印

 

您的位置:UltraLAB图形工作站方案网站 > 视景仿真 > 超高分可视化 > 基于顶点纹理的无限大海水仿真

基于顶点纹理的无限大海水仿真

时间:2009-08-22 10:57:00   来源:UltraLAB图形工作站方案网站   人气:14611 作者:admin

最近手上有了一块7800的显卡,因此就想利用这块强大的显卡做点东西出来。基于顶点纹理的无限大面积海水的算法在脑子想了很久了,但一直苦于没有支持顶点纹理的显卡而无法实现。
        拿到显卡以后,就开始三下五除二的写程序。下面是最终的效果图。
ocean1.jpg 

                                                                                               效果图1

ocean2.jpg 

                                                                                               效果图2


ocean3.jpg 

                                                                                                  效果图3
        主要的方法是,使用一个与视相关的自适应网格(1),使用tessendorf的基于2DFFT的海水仿真算法(2)生成动态的海水高度场,并将高度场存入到顶点纹理当中,然后在顶点着色器中通过取顶点纹理的值对自适应网格进行扰动,形成动态的海水效果。
        这个思路虽然简单,但是在目前的显卡中,不支持浮点纹理的双线性滤波,只支持最近点采样的方式,如果使用最近点采样的方式你会发现整个波动效果会有很明显的块状效果(非常讨厌),因此,必须通过shader自己来写一个双线性滤波的函数,另外在我这个算法中还要求根据高度场计算出法线场,由于取顶点纹理是一个非常耗时的操作,如果把这些计算都放在顶点着色器里面进行的话,顶点着色器会成为整个绘制过程的一个大瓶颈。
        最终我采用的是多次绘制的方法。首先在一个PS里面进行高度场的滤波,并且计算对应的法线,并且把这个结果渲染到一张浮点纹理中(在PS中做这些操作要比在VS中做这些操作要快很多),然后再利用这张经过滤波处理和法线预计算的浮点纹理作为顶点着色器中的高度场和法线纹理进行高度扰动,以及取法线。
       另外。在光照处理方面,海水着色方面参考了(3)。
        于是就有了以上的渲染效果图。
        最后,我还是要打击一下自己,下面这张是用3dmax加dreamscape插件渲染的海水效果图。看来效果差距还是有的。当然我可以用1/65秒渲染一帧,而它却需要65秒来渲染一帧。

ocean4.jpg 

                                                                                     3dsmax海水效果图
 

(1)http://www-evasion.imag.fr/Publications/2002/HNC02/wavesSCA.pdf
 

这是法国人写的论文,这个网格构造的思路确实巧妙,值得去研究下。
(2)Simulating Ocean Water, Jerry Tessendorf 
 这个经典的海水仿真算法我就不解释了,不过这里面最近更新了一个交互海水的算法,也是很值得研究。 
(3)http://graphics.cs.lth.se/theses/projects/projgrid/
一个英国人的硕士论文,用到了投影网格概念,不过他的水面效果是使用perlin noise生成#p#page_title#e#

 

海水仿真在虚拟训练系统、3D游戏中有着广泛的应用。与地形绘制算法相比,动态的海水仿真算法要更为复杂,同时兼顾到海水仿真效果的真实性和实时性是一个很具有挑战性的任务,但是我们勇敢的接受了这个挑战。在这一章节里面,首先简单的介绍了正弦波动的情况,然后引入Gestner-wave以及Gestner-wave海水仿真算法,最后我们再通过一个巧妙而简单的推导出基于二维快速傅利叶变换的海水仿真算法。为了不至于曲高和寡,我这里没有涉及复杂的流体力学内容,而对于没有学过信号处理,不了解快速傅立叶变换的朋友,这也没有关系,我这里对算法的推导处理得很巧妙,你不需要任何信号处理的知识,只需要简单的初等数学知识就可以看明白。
1.言归正传,我们首先来介绍正弦波动的基本概念,以下这些参数是确定正弦波动的主要参数:
波动振幅(A):波峰到波谷的高度差的二分之一
波长(L):两个相邻波峰之间的距离
空间角频率向量(w):空间角频率向量w的方向和波传播的方向相同,空间角频率向量的大小|w|和波长L的关系为:|w|=2*PI/L。
波速(S):每秒钟波峰移动的距离。
时间角频率(wt):时间角频率wt=S*2*PI/L。
波动传播方向(D):波峰移动的方向。
初始相位(FI):初始相位。
根据上述参数可以写出正弦波动的波动方程:
Y(x,y,t)=A*cos(w *(x,y)+ wt*t + FI)
根据正弦波动的等相位面,可以将正弦波动分为方向波和圆形波,等相位面为平行的平面的正弦波动,为方向波。而等相位面为一系列圆柱面的波动为圆形波。一般来说在风驱动的广阔的水体适合采用方向波,而对于一些较小的池塘,输入激励近似为点激励的情况下(例如扔一个小石子到河里面去,激起一圈一圈的波纹)则适合采用圆形波。在本章里面,主要涉及的是方向波。
2.Gestner-wave是最早的用于计算机图形学海水仿真的方法(1986年Fourier和Reeves)。P为海水表面上任意一点,没有经过波动时P点的位置为 (x0,0,z0),下列表达式为Gestner-wave波动计算公式:
 (x,z)=(x0,z0)+  Q*A*sin(w *(x0,y0)+ wt*t + FI)    (1)
     y  = A*cos(w *(x0,y0)+ wt*t + FI)                  (2)
这里波浪传播的时间角频率和空间角频率存在一个直接关系(在深海情况下,wt=sqrt(g*w),g为重力加速度),与前面的正弦波动稍有不同的是Gestner-wave在水平方向也有波动,而这种波动产生了波浪挤压的效果,而Q为控制波浪的陡峭程度,但是最好不要使Q超过1,否则会在表面出现环的效果。有时,为了模拟出更为真实的海水效果,采用多个正弦波叠加的方法来模拟复杂的波动效果。
3.单纯的基于Gestner-Wave的海洋仿真算法无法模拟出真实的海水效果,一个能够真实模拟出海水效果的经典算法是基于快速傅利叶变换的海水仿真算法(Jerry Tessendorf,SIGGRAPH Course Notes)。
下面我们来通过推导这个算法。首先分析一维的情况,考查一个长度为Ls的一维区域AB的海水波动情况,如下图所示。

 

 

 
这里有两个前提条件:
a:整个区域的波动情况具有周期为L的空间周期性。
b:我们希望使用多个Gestner-Wave的叠加来合成出整个波动效果。由于整个区域的波动效果具有周期为Ls的空间周期性,因此空间周期Ls必须为每个叠加的Gestner-wave的波长L的整数倍,如下图所示。
 
 
 
波长等于周期Ls

 
波长为空间周期的二分之一
波长为空间周期的三分之一
波长为空间周期的四分之一
。。。

波长为空间周期的n分之一
 
对于Gestner-wave,在已知波长L的情况下,可以确定出空间角频率w和时间角频率wt可以通过以下两个式子来确定。
w = 2*PI/L.                                                       (3)
wt = sqrt(g*w).                                                 (4)
其中L=Ls/k;k为正整数。
在确定这两个参数之后,对于确定整个波动方程,还缺振幅和初始相位这两个参数。而对于振幅和初始相位这两个参数我们无法通过解析的方法来求出,对于怎样来获取这两个参数,我们将会在后面的方法里面介绍。
将这n个正弦波进行叠加之后得到一个复合的波动效果,如下式:
                                       (6)
通过欧拉公式我们可以将上式改写为傅立叶变换的形式:
  (7)
即
                               (8)
也就是
                           (9)
如果得到了初相位以及振幅的信息,我们就可以通过快速傅立叶变化的形式来进行整个海水波动计算。
 
在考察完一维的情况后,来考察二维的情况。选择一个长为Lx,宽为Ly的矩形区域,如下图所示。

 

前提条件和一维时候的情况基本相同:

 
a:整个区域的波动情况具有一定的空间周期性,在x方向上具有周期为Lx的空间周期性,在z方向上具有周期为Ly的空间周期性。
b:使用多个Gestner-Wave的叠加来合成出整个波动效果。
考虑一个沿AB方向传播的正弦波,要使得这个波动在x方向上具有Lx的空间周期性,则相当于点A和点C的相位差是2PI的整数倍。CE垂直于波传播的方向AB,因此C,E处在同一波阵面上,具有相同的相位。于是要求A和E的相差为2PI的整数倍,也就是AE的长度为正弦波的波长L的整数倍。
AC的长度为Lx,则AE的长度为Lx*cos(a)。
AE的长度为波长L的整数倍,即
Lx*cos(a)= k1*L, k1为整数。                                 (10)
同时波动在y方向也具有周期为Ly的空间周期性。
同样可以得到
Ly*sin(a)= k2*L,k2为整数。                                   (11)
其中k1和k2都为整数(可以是负整数)。
反过来,而对于任意一个给定的整数对(k1,k2),可以得到一个沿方向
(cos(a),sin(a))传播,波长为L的Gestner-Wave波满足我们空间周期性的要求。
在给定k1,k2的情况下,通过求解式(10)(11)方程组。
可以得到
Tan(a)= k2*Lx/(k1*Ly)。                                      (12)
a = atan( k2*Lx/(k1*Ly))或者 a = PI + atan( k2*Lx/(k1*Ly)) , 这里把a的值范围限定在-PI<a<=PI.
这里a有两个值,而且相差180度,这个含义是,在一条直线上,有两个Gestner-Wave的传播方向在这条直线上,而且这两个波的传播方向相反。
根据a值可以解算出波长L。
L=1/sqrt((k1/Lx)*(k1/Lx)+(k2/Lx)*(k2/Lx))                (13)
进一步我们可以求出一对空间角频率的向量。
w =(2*PI*k1/Lx,2*PI*k2/Ly)以及 -w =(-2*PI*k1/Lx,-2*PI*k2/Ly)
而根据传播关系,我们可以计算出时间角频率。
wt = sqrt(g*|w|)。
根据上述参数就可以写出(k1,k2)确定的一对Gestner-Wave
Y1= A0 * cos( w *(x,y) + wt*t + FI0)                        
Y2= A1 * cos( w *(x,y) - wt*t + FI1)                        (14)
最后我们选取多个这样的Gestner-Wave波进行叠加,选取整数对的范围是-N/2<k1<N/2, -M/2<k2<M/2. 这样的取值范围使得我们尽可能多的得到覆盖到任意方向上的波动。复合波动的计算公式为

oceanA.jpg 
 
(15)
再次使用欧拉公式将这个式子转化为二维福利叶变换的形式

ocean.jpg 
 
(16)
这个公式就是使用二维快速傅立叶变换来计算海水波动的公式。
在后面的章节里,将要介绍使用海洋统计学频谱结合上述使用傅立叶变换描述的海水波动计算公式来进行海水模拟

 

引自:http://www.cnblogs.com/sinkongda/

关闭此页
上一篇:鸟巢环形无缝全景展示系统解决方案
下一篇:飞行器设计领域的专家--CATIA软件

相关文章

  • 05/09Xeon6代+4块GPU--图灵超算工作站GT450M介绍
  • 05/09汽车风阻测试模拟分析、算法,及服务器/工作站计算设备硬件配置推荐
  • 04/26高频交易(HFT)应用分析、算法,服务器/工作站硬件配置推荐
  • 04/25衍生品定价与风险对冲应用分析、算法,及服务器工作站硬件配置
  • 04/25量化交易策略应用算法分析、服务器工作站硬件配置
  • 04/24金融风险管理应用算法分析、服务器/工作站硬件配置推荐
  • 04/19油藏模拟软件的算法分析以及图形工作站/服务器硬件配置推荐25v2
  • 04/17大型3D设计软件CATIA-算法分析与图形工作站硬件配置
  • 04/17Cadence EDA主要软件计算特点分析,服务器/工作站硬件配置推荐
  • 04/16Synopsys EDA主要软件计算特点分析,服务器/工作站硬件配置推荐

工程技术(工科)专业工作站/服务器硬件配置选型

    左侧广告图2

新闻排行榜

  • 1Quadro FX5600 SLI创造SPEC测分新纪录
  • 2智慧城市规划超高分可视化的超级利器—UltraLAB视景仿真工作站硬件配置推荐
  • 3最新最全-移动/便携图形工作站应用配置推荐2022
  • 4鸟巢环形无缝全景展示系统解决方案
  • 5超高分辨率可视化-视景仿真图形工作站V系列介绍2021
  • 6最佳实时、三维、可交互的视景仿真平台
  • 7电视演播室/博物馆/体验中心超高分大屏可视化工作站方案23v2
  • 8从虚拟现实走向复合现实:高临场感空间的实现
  • 9基于虚拟现实技术的汽车性能试验系统的设计与开发
  • 103D游戏场景中的可视性处理

最新信息

  • 韦伯望远镜观测数据处理、分析及超高分显示和配套图形工作站硬件配置选型
  • 智慧城市规划超高分可视化的超级利器—UltraLAB视景仿真工作站硬件配置推荐
  • 电视演播室/博物馆/体验中心超高分大屏可视化工作站方案23v2
  • 控制中心/调度中心/监控中心大屏工作站硬件方案23v2
  • 最新最全-移动/便携图形工作站应用配置推荐2022
  • 超高分辨率可视化-视景仿真图形工作站V系列介绍2021
  • 鸟巢环形无缝全景展示系统解决方案
  • 基于顶点纹理的无限大海水仿真

应用导航:

工作站产品中心 京东商城 中关村商城 淘宝商城 超高分可视化商城 便携工作站商城 ANSYS CATIA Microsoft INTEL NVIDIA 网站统计

公司简介-业务咨询-招聘英才-资料下载-UM-

本网站所有原创文字和图片内容归西安坤隆计算机科技有限公司版权所有,未经许可不得转载
陕ICP备16019335号 陕公网安备61010302001314号
Copyright © 2008-2023 , All Rights Reserved

首页
热线
商城
分类
联系
顶部