欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

HTML5怎么實現(xiàn)多視角3D逼真水波動畫

這篇文章主要介紹“HTML5怎么實現(xiàn)多視角3D逼真水波動畫”,在日常操作中,相信很多人在HTML5怎么實現(xiàn)多視角3D逼真水波動畫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”HTML5怎么實現(xiàn)多視角3D逼真水波動畫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)是專業(yè)的潛江網(wǎng)站建設公司,潛江接單;提供成都網(wǎng)站設計、網(wǎng)站建設、外貿網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行潛江網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

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代碼將內容復制到

函數(shù) 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紋理; /  

    統(tǒng)一的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紋理; /  

    統(tǒng)一的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; /  

      /  

      / *稍微減弱速度,所以波浪不會永遠持續(xù)* //  

      info.g * = 0.995; /  

      /  

      / *沿速度移動頂點* //  

      info.r + = info.g; /  

      /  

      gl_FragColor = info; /  

    } /  

  ' );   

  這個.normalShader =  new  GL.Shader(vertexShader,  '/ 

    均勻的sampler2D紋理; /  

    統(tǒng)一的vec2增量; /  

    變化的vec2坐標; /  

    void main(){/  

      / *獲取頂點信息* //  

      vec4信息= texture2D(紋理,坐標); /  

      /  

      / *更新常規(guī)* //  

      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紋理; /  

    統(tǒng)一的vec3 oldCenter; /  

    統(tǒng)一的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 = 函數(shù)(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 = 函數(shù)(舊中心,新中心,半徑){   

  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怎么實現(xiàn)多視角3D逼真水波動畫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

網(wǎng)頁標題:HTML5怎么實現(xiàn)多視角3D逼真水波動畫
文章URL:http://aaarwkj.com/article4/jjggie.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器搜索引擎優(yōu)化、網(wǎng)站策劃品牌網(wǎng)站設計、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
日韩丰满少妇在线观看| 亚洲av成人噜噜网站| 国产无遮挡又黄又爽网站 | 国产免费成人黄视频网站| 亚洲国产精品一区一区 | 激情五月婷婷中文字幕| 麻豆看片高清在线播放| 四虎在线经典视频播放| 日本av成人激情视频| av中文字幕熟妇人妻少妇| 中文字幕午夜av福利| 国产福利成人一区二区| 日本一区二区免费视频| 一区二区在线日韩欧美| 日韩免费中文视频不卡| 自拍日韩亚洲一区在线| 午夜福利亚洲免费久久| 一区二区三区四区中文在线| 午夜精品久久福利视频| 中文字幕久久av一区二区| 女同毛片一区二区三区| 欧美香蕉视频播放二区| 免费在线一区二区av| 欧美亚洲午夜精品久久久| 午夜丁香婷婷爽少妇av| 久久91超碰青草在哪里看| 久久久久久国产精彩视频| 欧美性大片免费在线观看| 亚洲精品av一区二区久久 | 人妻一区日韩二区国产| 亚洲av成人在线播放| 人妻av一区二区三区| 99国产综合精品女| 日本一区二区 视频| 久久人妻一区二区三区免费密臀| 男人天堂手机视频在线| 国产日韩欧美精品激情| 日韩欧美黄网站免费看| 东京热加勒比在线播放| 高清区一区二区在线播放| 成人激情在线免费电影|