返回顶部
首页 > 资讯 > 前端开发 > html >HTML5怎么实现多视角3D逼真水波动画
  • 628
分享到

HTML5怎么实现多视角3D逼真水波动画

2024-04-02 19:04:59 628人浏览 八月长安
摘要

这篇文章主要介绍“HTML5怎么实现多视角3D逼真水波动画”,在日常操作中,相信很多人在html5怎么实现多视角3D逼真水波动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

这篇文章主要介绍“HTML5怎么实现多视角3D逼真水波动画”,在日常操作中,相信很多人在html5怎么实现多视角3D逼真水波动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HTML5怎么实现多视角3D逼真水波动画”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

HTML代码

XML / HTML代码将内容复制到文本

< img id = “ tiles” src = “ tiles.jpg” >    

< img id = “ xneg” src = “ xneg.jpg” >    

< img id = “ xpos” src = “ xpos.jpg” >    

< img id = “ ypos” src = “ ypos.jpg” >    

< img id = “ zneg” src = “ zneg.jpg” >    

< img id = “ zpos” src = “ zpos.jpg” >    

javascript代码

JavaScript代码将内容复制到

函数 Water(){   

  var  vertexShader =  '/ 

    变化的vec2坐标; /  

    void main(){/  

      坐标= gl_Vertex.xy * 0.5 + 0.5; /  

      gl_Position = vec4(gl_Vertex.xyz,1.0); /  

    } /  

  ' ;   

  这个.plane = GL.Mesh.plane();   

  如果 (!GL.Texture.canUseFloatingPointTextures()){   

    抛出新的 错误(“此演示需要OES_texture_float扩展名” );    

  }   

  var  filter = GL.Texture.canUseFloatingPointLinearFiltering()吗?gl.LINEAR:gl.NEAREST;   

  这个.textureA = 新的 GL.Texture(256,256,{类型:gl.FLOAT,过滤器:过滤器});   

  这个.textureB = 新的 GL.Texture(256,256,{类型:gl.FLOAT,过滤器:过滤器});   

  这个.dropShader =  new  GL.Shader(vertexShader,  '/ 

    const float PI = 3.141592653589793; /  

    均匀的sampler2D纹理; /  

    统一的vec2中心; /  

    均匀的浮动半径; /  

    均匀的浮力; /  

    变化的vec2坐标; /  

    void main(){/  

      / *获取顶点信息* //  

      vec4信息= texture2D(纹理,坐标); /  

      /  

      / *将下落添加到高度* //  

      浮动落差= max(0.0,1.0-长度(中心* 0.5 + 0.5-坐标)/半径); /  

      下降= 0.5-cos(下降* PI)* 0.5; /  

      info.r + =下降*强度; /  

      /  

      gl_FraGColor = info; /  

    } /  

  ' );   

  这个.updateShader =  new  GL.Shader(vertexShader,  '/ 

    均匀的sampler2D纹理; /  

    统一的vec2增量; /  

    变化的vec2坐标; /  

    void main(){/  

      / *获取顶点信息* //  

      vec4信息= texture2D(纹理,坐标); /  

      /  

      / *计算平均邻居身高* //  

      vec2 dx = vec2(delta.x,0.0); /  

      vec2 dy = vec2(0.0,delta.y); /  

      浮动平均值=(/  

        texture2D(纹理,坐标-dx).r + /  

        texture2D(纹理,坐标-dy).r + /  

        texture2D(纹理,坐标+ dx).r + /  

        texture2D(纹理,坐标+ dy).r /  

      )* 0.25; /  

      /  

      / *更改速度以移向平均值* //  

      info.g + =(平均值-info.r)* 2.0; /  

      /  

      / *稍微减弱速度,所以波浪不会永远持续* //  

      info.g * = 0.995; /  

      /  

      / *沿速度移动顶点* //  

      info.r + = info.g; /  

      /  

      gl_FragColor = info; /  

    } /  

  ' );   

  这个.nORMalShader =  new  GL.Shader(vertexShader,  '/ 

    均匀的sampler2D纹理; /  

    统一的vec2增量; /  

    变化的vec2坐标; /  

    void main(){/  

      / *获取顶点信息* //  

      vec4信息= texture2D(纹理,坐标); /  

      /  

      / *更新常规* //  

      vec3 dx = vec3(delta.x,texture2D(texture,vec2(coord.x + delta.x,coord.y))。r-info.r,0.0); /  

      vec3 dy = vec3(0.0,texture2D(纹理,vec2(coord.x,coord.y + delta.y))。r-info.r,delta.y); /  

      info.ba = normalize(cross(dy,dx))。xz; /  

      /  

      gl_FragColor = info; /  

    } /  

  ' );   

  这个.sphereShader =  new  GL.Shader(vertexShader,  '/ 

    均匀的sampler2D纹理; /  

    统一的vec3 oldCenter; /  

    统一的vec3 newCenter; /  

    均匀的浮动半径; /  

    变化的vec2坐标; /  

    /  

    float volumeInSphere(vec3 center){/  

      vec3到Center = vec3(coord.x * 2.0-1.0,0.0,coord.y * 2.0-1.0)-中心; /  

      浮点t =长度(到中心)/半径; /  

      浮点dy = exp(-pow(t * 1.5,6.0)); /  

      浮点ymin = min(0.0,center.y-dy); /  

      浮点ymax = min(max(0.0,center.y + dy),ymin + 2.0 * dy); /  

      回报率(ymax-ymin)* 0.1; /  

    } /  

    /  

    void main(){/  

      / *获取顶点信息* //  

      vec4信息= texture2D(纹理,坐标); /  

      /  

      / *添加旧卷* //  

      info.r + = volumeInSphere(oldCenter); /  

      /  

      / *减去新音量* //  

      info.r-= volumeInSphere(newCenter); /  

      /  

      gl_FragColor = info; /  

    } /  

  ' );   

}   

Water.prototype.aDDDrop = 函数(x,y,半径,强度){   

  var  this_ =  this ;   

  这个.textureB.drawTo(function (){   

    this_.textureA.bind();   

    this_.dropShader.uniforms({   

      中心:[x,y],   

      半径:半径,   

      实力:实力   

    })。draw(this_.plane);   

  });   

  this .textureB.swapWith(this .textureA);   

};   

Water.prototype.moveSphere = 函数(旧中心,新中心,半径){   

  var  this_ =  this ;   

  这个.textureB.drawTo(function (){   

    this_.textureA.bind();   

    this_.sphereShader.uniforms({   

      oldCenter:oldCenter,   

      newCenter:newCenter,   

      半径:半径   

    })。draw(this_.plane);   

  });   

  this .textureB.swapWith(this .textureA);   

};   

Water.prototype.stepSimulation =  function (){   

  var  this_ =  this ;   

  这个.textureB.drawTo(function (){   

    this_.textureA.bind();   

    this_.updateShader.uniforms({   

      增量:[1 / / this_.textureA.width,1 / / this_.textureA.height]   

    })。draw(this_.plane);   

  });   

  this .textureB.swapWith(this .textureA);   

};   

Water.prototype.updateNormals =  function (){   

  var  this_ =  this ;   

  这个.textureB.drawTo(function (){   

    this_.textureA.bind();   

    this_.normalShader.uniforms({   

      增量:[1 / / this_.textureA.width,1 / / this_.textureA.height]   

    })。draw(this_.plane);   

  });   

  this .textureB.swapWith(this .textureA);   

};   

到此,关于“HTML5怎么实现多视角3D逼真水波动画”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: HTML5怎么实现多视角3D逼真水波动画

本文链接: https://lsjlt.com/news/92249.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML5怎么实现多视角3D逼真水波动画
    这篇文章主要介绍“HTML5怎么实现多视角3D逼真水波动画”,在日常操作中,相信很多人在HTML5怎么实现多视角3D逼真水波动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • 如何制作多视角3D逼真HTML5水波动画
    如何制作多视角3D逼真HTML5水波动画 ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。这是一款基于HTML5的3D水波动画特效,它的效果...
    99+
    2024-04-02
  • HTML5怎么实现多视角3D可旋转的标志动画
    这篇“HTML5怎么实现多视角3D可旋转的标志动画”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • HTML5中怎么用Canvas实现3D水体模拟动画
    这篇文章主要介绍了HTML5中怎么用Canvas实现3D水体模拟动画的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTML5中怎么用Canvas实现3D水体模拟动画文章都会有所...
    99+
    2024-04-02
  • html5中怎么实现3d旋转动画效果
    这篇“html5中怎么实现3d旋转动画效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“h...
    99+
    2024-04-02
  • 怎么用纯CSS3打造逼真的多层云彩动画特效
    这篇文章主要介绍了怎么用纯CSS3打造逼真的多层云彩动画特效的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用纯CSS3打造逼真的多层云彩动画特效文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • 怎么在HTML5中实现一个3D焦点图动画
    怎么在HTML5中实现一个3D焦点图动画?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HTML代码<div class="dg-wrapper&quo...
    99+
    2023-06-09
  • 怎么用纯CSS实现抽象的水波荡漾的动画
    这篇文章主要为大家展示了“怎么用纯CSS实现抽象的水波荡漾的动画”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用纯CSS实现抽象的水波荡漾的动画”这篇文章吧...
    99+
    2024-04-02
  • 怎么在HTML5中实现一个3D书本翻页动画
    这期内容当中小编将会给大家带来有关怎么在HTML5中实现一个3D书本翻页动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML代码 <div class="back...
    99+
    2023-06-09
  • WPF怎么实现3D画廊动画效果
    要实现3D画廊动画效果,可以使用WPF的3D功能和动画功能。以下是一个简单的实现步骤:1. 创建一个WPF项目,并添加一个Viewp...
    99+
    2023-08-18
    WPF
  • 纯CSS怎么实现水波纹的电池充电动画特效
    本篇内容主要讲解“纯CSS怎么实现水波纹的电池充电动画特效”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS怎么实现水波纹的电池充电动画特效”吧!前置知识:...
    99+
    2024-04-02
  • 怎么用css实现3d动画特效
    小编给大家分享一下怎么用css实现3d动画特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   属性   perspect...
    99+
    2024-04-02
  • css3怎么实现3d旋转动画特效
    这篇文章主要介绍“css3怎么实现3d旋转动画特效”,在日常操作中,相信很多人在css3怎么实现3d旋转动画特效问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css3怎么实现...
    99+
    2024-04-02
  • CSS3怎么实现3D星空动画特效
    这篇文章主要介绍“CSS3怎么实现3D星空动画特效”,在日常操作中,相信很多人在CSS3怎么实现3D星空动画特效问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS3怎么实现3D星空动画特效”的疑惑有所帮助!...
    99+
    2023-06-04
  • Android视图动画怎么实现
    本文小编为大家详细介绍“Android视图动画怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android视图动画怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。介绍视图动画主要有两种:一、Twe...
    99+
    2023-06-04
  • HTML5中怎么实现动画效果
    这期内容当中小编将会给大家带来有关HTML5中怎么实现动画效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.canvas html代码: 代码如下:<html&...
    99+
    2024-04-02
  • 怎么利用css实现波纹动画效果
    这篇文章给大家分享的是有关怎么利用css实现波纹动画效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更...
    99+
    2023-06-08
  • JavaScript canvas怎么实现水球加载动画
    这篇文章主要讲解了“JavaScript canvas怎么实现水球加载动画”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript canvas怎么实现水球加载...
    99+
    2023-06-30
  • html5怎么实现动画播放状态
    今天小编给大家分享一下html5怎么实现动画播放状态的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • html5动画过渡效果怎么实现
    本篇内容介绍了“html5动画过渡效果怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   1、动...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作