`
isiqi
  • 浏览: 16354773 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

水面与纹理动画

阅读更多

一、水面实现方法

l 最找人们考虑水面,往往将其考虑为一堆三角形组成的网格,网格的规则抖动便构成了波纹。但是,这种方法可以让场景比蜗牛还慢,因此只用作研究。

l 早期水面的实现方法基本上都是纹理动画,这种方法直到今天为止还在使用。纹理动画最简单最基础,对美工的要求比较高,对程序要求相当低。

l Bump Env技术出现后,水面的实现方法便开始多样起来,这些水面为场景的真实性做出了不朽的贡献。

l Shader改变了水面实现的方式,它使得人们创建动感的水成为了可能。

l Shader实现的水面可以完美地显示出波动和其他特殊的效果。

二、纹理动画原理

l 类如电影胶片,纹理动画将循环播放一组纹理,并用这组纹理来描述动画。

l 纹理动画的用途相当广泛,水面只是这些应用中比较出彩的一种。

l 平均每s毫秒顺序播放一个纹理,播放完毕后重头开始播放,以此便可实现纹理动画

l 动画更新函数

Void Update( float fElapsed )

{

m_fElapsed += fElapsed; // 更新时间

if( m_fElapsed >= s ) // 如果到了需要切换纹理的时间

{ ++Texture_Index; // 切换纹理标号

if (Texture_Index >= MAX_TEX_INDEX) // 如果已经播放完毕

{ Texture_Index = 0; } // 重头开始播放

m_fElapsed = 0.0f; // 重新计时

}

}

l 渲染函数

Void Render()
{
//
根据当前的纹理标号进行渲染
SetTexture( m_Textures[Texture_Index] );
DrawPrimitive();
}

l 纹理动画所实现的水面一般由大量平板组成。

三、水面的VBIB

l 纹理动画实现的水面很少有需要动态变化的,因此创建静态的VBIB以提高渲染速度成为了一个优化的手段。

l 具体实现参看代码

四、魔兽水面纹理算法

l 魔兽水面经过打光处理,所以我们必须添加一个光源,和一个材质。

l 同时,为了将光的影响和水本身的纹理因素添加到一起,由于水本身的纹理较暗,我们使用ADD算法,使得光对水面的影响更加明显。

l 最后,水纹理在Alpha通道中存的高光信息,通过MODULATEALPHA_ADDCOLOR算法使之影响到场景中。

l MODULATEALPHA_ADDCOLORArg1RGB + Arg2RGB*Arg1Alpha

l 这里只需要为Arg1Arg2都取Current就可以了。

五、总结

l 水面的实现技术包括网格化水面、纹理动画、硬件BumpEnv和各种不同的水面Shader算法。

l 用纹理动画实现水面,必须依照纹理的特性而选择不同的纹理算法。

l 对于魔兽的水面,除了打光外,我们开启了两条纹理通道,分别使用了ADD算法和MODULATEALPHA_ADDCOLOR算法。

分享到:
评论

相关推荐

    Flash纹理动画,像水波一荡漾

    本篇将围绕“Flash纹理动画,像水波一荡漾”这一主题,深入探讨Flash源码、背景动画及其在实际应用中的可能性。 首先,Flash源码是使用ActionScript编程语言编写的脚本,它控制着Flash动画的行为和交互。...

    HTML5+three.js水面倒影太阳动画特效.zip

    "HTML5+three.js水面倒影太阳动画特效.zip"这个压缩包中包含的资源是一个结合HTML5和three.js技术实现的动态水面倒影与太阳动画效果。通过这个示例,我们可以学习到以下几个关键知识点: 1. **HTML5 Canvas**: ...

    HTML5 WebGL实现的水面波光闪动动画特效源码.zip

    3. **水面纹理**:为了实现逼真的水面效果,通常会使用纹理来代表水面。这些纹理可能包含波动的法线信息,或者通过时间变化来实现波动的效果。 4. **时间变量**:为了让水面有动态感,代码会引入时间变量,随着时间...

    HTML5+WebGL实现暗夜云雾缭绕和月亮水面倒影模糊动画特效源码.zip

    此外,这个源码可能还包括一些用户交互元素,如鼠标或触摸事件,以使用户能够与场景互动,比如改变视角或调整动画速度。这样的交互性增强了用户体验,让静态的网页变得更加生动。 总之,"HTML5+WebGL实现暗夜云雾...

    HTML5 SVG基于图片紊流滤镜实现的水面波纹动画特效源码.zip

    水面波纹动画特效的实现涉及到SVG滤镜的运用,SVG滤镜是一种能够对图形进行复杂图像处理的技术。在HTML5中,我们可以使用`<filter>`元素定义一个滤镜,然后将其应用到SVG图形或任何HTML元素上。在水面波纹效果中,...

    2.5D游戏无素演示含骨骼动画换装系统水面倒影

    "2.5D游戏无素演示含骨骼动画换装系统水面倒影"这一项目,正是这种技术的生动展示。 首先,骨骼动画是现代游戏中的关键元素,特别是在角色动作和表情的表现上。这种技术通过将3D模型的各个部分与虚拟的骨骼结构关联...

    Unity卡通水面shader

    Shader可以检测物体在水面的位置,并根据其位置和速度动态地调整纹理坐标,从而使这些漂浮物看起来像是随着水波起伏。有时,还会使用粒子系统来增强这种效果,增加更多的动态细节。 再者,岸边波纹是卡通水面Shader...

    html5 canvas+three.js绘制的水面下太阳倒影动画特效源码.zip

    3. **水面纹理**:为了实现逼真的水面效果,通常需要使用纹理贴图,这可能是一个包含波动和反射信息的图像。Three.js 允许我们加载和应用纹理到几何体表面。 4. **动画**:动画是通过不断更新场景并重新渲染来实现...

    OSG如何实现一个水面

    你可以创建或使用现成的水面纹理,并结合UV坐标来映射到3D模型上。 2. **法线贴图(Normal Mapping)**:为了增强水面的深度感和动态感,可以使用法线贴图。这种技术通过模拟表面的微小高低变化,使得静态的纹理看...

    HTML5+Three.js使用立方体组成的水面波动动画效果源码.zip

    4. **动画循环**:水面波动动画的关键在于更新。开发者可能通过定时器(如requestAnimationFrame)来定期更新每个立方体的位置、旋转或大小,模拟波浪的起伏。同时,纹理的UV坐标也会随时间变化,造成视觉上的波动感...

    精通Direct3D图形与动画程序设计 33_第三十三章 凹凸纹理映射应用.rar

    在Direct3D图形与动画程序设计中,凹凸纹理映射是提高三维场景真实感的重要技术之一。本章主要探讨了如何通过凹凸纹理映射实现逼真的水下视觉效果和水波效果模拟,这对于游戏编程和实时渲染场景的创建至关重要。 ...

    d3d凹凸纹理实现水波纹

    在这个特定的例子中,我们关注的是“d3d凹凸纹理实现水波纹”,这是一个关于如何利用D3D9.0b版本中的凹凸纹理技术来模拟水面波动效果的知识点。 凹凸纹理是一种增强表面细节的技术,它通过在纹理坐标空间内对表面...

    HTML5 WebGL水面水波荡漾特效 可多视角展示 超逼真

    源代码可能包含了实现水面动画和反射的关键逻辑,纹理图像用于给水面赋予颜色和细节,而着色器文件则包含运行在GPU上的定制代码,用于计算像素的颜色和光照效果。 总的来说,"HTML5 WebGL水面水波荡漾特效 可多视角...

    城市扫光水面效果.rar

    此外,通过调整法线贴图,可以进一步增加水面的纹理和深度感。 在代码实现过程中,我们还需要考虑性能优化。例如,使用WebGL的实例化特性,可以减少大量重复几何体的内存开销;或者使用LOD(Level of Detail)技术,...

    water_6_13.rar_多重纹理

    多重纹理结合水面的动画效果,如涟漪扩散和雨滴溅起的水花,可能使用了纹理坐标(Texture Coordinates)的偏移或者时间变量来实现。通过调整这些坐标,可以使纹理在时间和空间上产生动态变化,模拟出雨滴击打水面后...

    Android水波纹过渡动画

    "Android水波纹过渡动画"就是一个专注于实现这种效果的实例,它结合了技术与艺术,使得用户界面更加生动有趣。在这个项目中,我们将深入探讨如何创建一个水波纹特效,并了解其背后的技术原理。 水波纹特效通常指的...

    实现画面水面波纹效果

    水面波纹效果可以通过顶点着色器和片段着色器来实现,通过对水面纹理进行扭曲和变形,模拟光线在波动水面上的反射和折射。 2. **数学模型**:水面波动通常基于物理模型,如傅里叶变换或者有限差分法,模拟水面粒子...

    455款高清高质特效烟雾纹理海浪设计素材笔刷下载2

    海浪的形态变化无穷,既有平静如镜的水面,也有汹涌澎湃的波涛,能够反映出不同的情绪和场景。在平面设计中,海浪图案可以作为海报的主元素,传达出海洋的广阔和自由;在UI设计中,它们可以作为滚动条或背景动画,...

    Animated Water Texture Pack.rar

    1. **水面纹理**:这是基础的静态水面纹理,通常用于模拟平静的水面颜色和反光。 2. **动画帧**:一系列用于创建水波动画的纹理帧,每帧代表水面在不同时间的状态。 3. **法线贴图**:提供水面起伏的深度感,通过...

    OpenGL动画演示(包含代码)

    这需要对纹理动画、时间变量和顶点移动有深入的理解。 7. **效果综合**:这个可能是一个集成了多种OpenGL效果的示例,比如阴影投射、环境映射、多重采样抗锯齿等,旨在展示OpenGL的强大功能和灵活性。 8. **数字...

Global site tag (gtag.js) - Google Analytics