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

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| 亚洲精品视频久久偷拍| 国产日韩欧美亚洲中文| 91精品国产综合久久香蕉麻豆| 一区二区三区精品人妻| 色哟哟亚洲精品在线视频| 人妻中文字幕av资源| 日本女优中文字幕久久| 毛片一区二区三区免费看| 自拍偷拍一区蜜桃视频| 中文字幕一区免费视频| 中文字幕一区二区精品区| 成人综合影视中文字幕| 九九九热在线观看视频| 在线观看国产小视频不卡 | 天堂8在线最新版av| 精品国产女同一区二区| 成人午夜激情在线免费观看| 国产高清不卡午夜福利| 中文字幕在线一级色视频| 亚洲婷婷综合久久一区二区| 日本一区二区三区中文字幕不卡| 粉嫩av一男战三女高潮| 日韩人妻中出中文字幕| 99精品人妻一区二区三区| 日本啪啪啪一区二区三区| 丰满人妻视频一二三区| 亚洲av丰满熟妇在线观看| 人妻乱人伦中文字幕在线| 成年人免费在线不卡视频| 精品毛片av一区二区三区| 大香蕉一区二区亚洲欧美| 尤物在线观看精品视频| 91最新精品丝袜国产在线| 自由成熟性生活免费视频| 热门精品一区二区三区| 91精品国产综合久久香蕉麻豆| 亚洲综合日韩精品国产av|