亚洲综合99,国产精品美女,国产99久久久久 http://m.netizenbag.com/ zh-hans 虛擬展廳技術:WebGL完整工作流程以及 Three.js 原理 http://m.netizenbag.com/news/512 <span>虛擬展廳技術:WebGL完整工作流程以及 Three.js 原理</span> <span><span lang="" about="http://m.netizenbag.com/user/1" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">Jyadmin</span></span> <span>周五, 02/19/2021 - 16:42</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>?</p> <h4><strong>虛擬展廳技術:WebGL的完整工作流程</strong></h4> <p>1、準備數據階段</p> <p>在這個階段,我們需要提供頂點坐標、索引(三角形繪制順序)、uv(決定貼圖坐標)、法線(決定光照效果),以及各種矩陣(比如投影矩陣)。</p> <p>其中頂點數據存儲在緩存區(因為數量巨大),以修飾符attribute傳遞給頂點著色器;</p> <p>矩陣則以修飾符uniform傳遞給頂點著色器。</p> <p>2、生成頂點著色器</p> <p>根據我們需要,由Javascript定義一段頂點著色器(opengl es)程序的字符串,生成并且編譯成一段著色器程序傳遞給GPU。</p> <p>3、圖元裝配</p> <p>GPU根據頂點數量,挨個執行頂點著色器程序,生成頂點最終的坐標,完成坐標轉換。</p> <p>4、生成片元著色器</p> <p>模型是什么顏色,看起來是什么質地,光照效果,陰影(流程較復雜,需要先渲染到紋理,可以先不關注),都在這個階段處理。</p> <p>5、光柵化</p> <p>能過片元著色器,我們確定好了每個片元的顏色,以及根據深度緩存區判斷哪些片元被擋住了,不需要渲染,最終將片元信息存儲到顏色緩存區,最終完成整個渲染。</p> <p><img alt="光柵化" data-entity-type="file" data-entity-uuid="eeccf534-ffd3-49d4-a7b6-2aef854c7a42" src="http://m.netizenbag.com/sites/default/files/inline-images/%E5%85%89%E6%A0%85%E5%8C%96.jpg" width="727" height="299" loading="lazy" /></p> <h4><strong>虛擬展廳技術:Three.js 原理</strong></h4> <p>three.js參與的流程:</p> <p><img alt="three.js參與的流程" data-entity-type="file" data-entity-uuid="aa6f5fa7-e71a-4133-87be-57e71d88cd3c" src="http://m.netizenbag.com/sites/default/files/inline-images/three.js%E5%8F%82%E4%B8%8E%E7%9A%84%E6%B5%81%E7%A8%8B.jpg" width="712" height="244" loading="lazy" /></p> <p>黃色和綠色部分,都是three.js參與的部分,其中黃色是javascript部分,綠色是opengl es部分。</p> <p>three.js可以實現:</p> <ul><li> <p>輔助我們導出了模型數據;</p> </li> <li> <p>自動生成了各種矩陣;</p> </li> <li> <p>生成了頂點著色器;</p> </li> <li> <p>輔助我們生成材質,配置燈光;</p> </li> <li> <p>根據我們設置的材質生成了片元著色器。</p> </li> <li> <p>而且將webGL基于光柵化的2D API,封裝成了我們人類能看懂的 3D API。</p> </li> </ul><h5><strong>?Three.js頂點處理流程</strong></h5> <p>從WebGL工作原理的章節中,我們已經知道了頂點著色器會將三維世界坐標轉換成屏幕坐標,但實際上,坐標轉換不限于投影矩陣。</p> <p>如下圖:</p> <p><img alt="Three.js頂點處理流程" data-entity-type="file" data-entity-uuid="f4315902-b88b-415c-8782-0aba132ccc34" src="http://m.netizenbag.com/sites/default/files/inline-images/Three.js%E9%A1%B6%E7%82%B9%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.jpg" width="709" height="202" loading="lazy" /></p> <p>之前WebGL在圖元裝配之后的結果,由于我們認為模型是固定在坐標原點,并且相機在x軸和y軸坐標都是0,其實正常的結果是這樣的:</p> <p><img alt="WebGL在圖元裝配之后的結果" data-entity-type="file" data-entity-uuid="c4615c8b-2c34-494c-b971-7bd12ae60dd4" src="http://m.netizenbag.com/sites/default/files/inline-images/WebGL%E5%9C%A8%E5%9B%BE%E5%85%83%E8%A3%85%E9%85%8D%E4%B9%8B%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C.jpg" width="676" height="181" loading="lazy" /></p> <h5><strong>模型矩陣</strong></h5> <p><strong><img alt="模型矩陣" data-entity-type="file" data-entity-uuid="0bc27d25-073f-4b55-86aa-7308e0fc225f" src="http://m.netizenbag.com/sites/default/files/inline-images/%E6%A8%A1%E5%9E%8B%E7%9F%A9%E9%98%B5.jpg" width="639" height="183" loading="lazy" /></strong></p> <p>現在,將模型順時針旋轉Math.PI/6,所有頂點位置肯定都變化了。</p> <blockquote> <p>box.rotation.y = Math.PI/6;</p> </blockquote> <p>?但是,如果我們直接將頂點位置用javascript計算出來,那性能會很低(頂點通常成千上萬),而且,這些數據也非常不利于維護。</p> <h5><strong>視圖矩陣</strong></h5> <p><strong><img alt="視圖矩陣" data-entity-type="file" data-entity-uuid="ca7509e5-3ab0-484b-b4fb-aa6c59437b4c" src="http://m.netizenbag.com/sites/default/files/inline-images/%E8%A7%86%E5%9B%BE%E7%9F%A9%E9%98%B5.jpg" width="677" height="230" loading="lazy" /></strong></p> <p>將相機往上偏移30。</p> <blockquote> <blockquote> <p>camera.position.y = 30;</p> </blockquote> </blockquote> <p>?同理,我們用矩陣viewMatrix將移動信息記錄下來。</p> <h5><strong>投影矩陣</strong></h5> <p><strong><img alt="投影矩陣" data-entity-type="file" data-entity-uuid="abd24d16-b371-4ac1-807b-1136ed4a67d1" src="http://m.netizenbag.com/sites/default/files/inline-images/%E6%8A%95%E5%BD%B1%E7%9F%A9%E9%98%B5.jpg" width="677" height="218" loading="lazy" /></strong></p> <p>用projectMatrix記錄。</p> <h5><strong>應用矩陣</strong></h5> <p>編寫頂點著色器:</p> <blockquote> <p>gl_Position = position * modelMatrix * viewMatrix * projectionMatrix;</p> </blockquote> <p>?</p> <p>這樣,我們就在GPU中,將最終頂點位置計算出來了。</p> <p>實際上,上面所有步驟,three.js都幫我們完成了。</p> <p><img alt="應用矩陣" data-entity-type="file" data-entity-uuid="1c71ec1e-e9a0-4462-9d7f-8fbd81903665" src="http://m.netizenbag.com/sites/default/files/inline-images/%E5%BA%94%E7%94%A8%E7%9F%A9%E9%98%B5.jpg" width="723" height="361" loading="lazy" /></p> <h4><strong>片元著色器處理流程</strong></h4> <p>片元著色器負責處理材質、燈光等信息,但具體是怎么處理呢?</p> <p>如下圖:</p> <p><img alt="片元著色器處理流程" data-entity-type="file" data-entity-uuid="94f1bd98-fb5f-46d5-933a-2ced20baea40" src="http://m.netizenbag.com/sites/default/files/inline-images/%E7%89%87%E5%85%83%E7%9D%80%E8%89%B2%E5%99%A8%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.jpg" width="712" height="334" loading="lazy" /></p> <h4><strong>three.js完整運行流程</strong></h4> <p><img alt="three.js完整運行流程" data-entity-type="file" data-entity-uuid="90ade1ce-0dc6-42e4-9152-732bfa431a5f" src="http://m.netizenbag.com/sites/default/files/inline-images/three.js%E5%AE%8C%E6%95%B4%E8%BF%90%E8%A1%8C%E6%B5%81%E7%A8%8B.jpg" width="711" height="272" loading="lazy" /></p> <p>當選擇材質后,three.js會根據所選的材質,選擇對應的頂點著色器和片元著色器。</p> <p>three.js中已經內置了我們常用著色器。</p> <p>?</p> <p>?</p> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">標簽</div> <div class="field--items"> <div class="field--item"><a href="http://m.netizenbag.com/taxonomy/term/21" hreflang="zh-hans">虛擬展廳,WebGL,Three.js</a></div> </div> </div> Fri, 19 Feb 2021 08:42:37 +0000 Jyadmin 512 at http://m.netizenbag.com netizenbag.com-99久久精品国产精品久久,欧美日韩免费,精品久久久久久久久久久久久久久久久,天堂美国久久
日韩精品五月天| www.亚洲精品| 国产精品对白交换视频| 色婷婷久久综合| 婷婷国产v国产偷v亚洲高清| 日韩美女一区二区三区| 懂色av一区二区在线播放| 一区二区三区中文在线| 日韩一区二区三区四区五区六区 | 日韩精品国产精品| 精品久久久久久久久久久久包黑料| 国产麻豆精品一区二区| 亚洲美女屁股眼交3| 欧美一区二区三区男人的天堂| 国产成人午夜片在线观看高清观看| 日韩一区中文字幕| 欧美一区二区三级| 不卡一区二区在线| 亚洲a一区二区| 国产日韩在线不卡| 欧美日韩中字一区| 国产91精品一区二区麻豆网站 | 国产不卡视频一区二区三区| 亚洲男女一区二区三区| 日韩网站在线看片你懂的| 成人一级视频在线观看| 日韩专区一卡二卡| 国产精品乱码一区二三区小蝌蚪| 欧美日韩精品免费观看视频| 国产很黄免费观看久久| 一区二区三区不卡视频 | 亚洲一区成人在线| 久久精品亚洲国产奇米99| 欧美在线视频你懂得| 久久久噜噜噜久久中文字幕色伊伊| 成人免费看片app下载| 强制捆绑调教一区二区| 亚洲天堂av老司机| 欧美精品一区二区不卡| 欧美偷拍一区二区| 成人av电影在线| 日本91福利区| 亚洲激情一二三区| 国产日本欧美一区二区| 7777女厕盗摄久久久| www.久久久久久久久| 精品中文字幕一区二区小辣椒| 一区二区三区日韩| 国产日韩高清在线| 欧美成人综合网站| 欧美日韩中文字幕一区二区| 成人av网址在线观看| 六月丁香婷婷久久| 一区二区三区日韩| 欧美激情在线观看视频免费| 日韩免费看的电影| 精品视频色一区| 99re8在线精品视频免费播放| 久久草av在线| 天天做天天摸天天爽国产一区| 中文字幕在线免费不卡| 日韩精品一区二区三区四区视频 | 色婷婷综合久久| 国产伦理精品不卡| 久久99日本精品| 日本 国产 欧美色综合| 亚洲国产成人av好男人在线观看| 一色桃子久久精品亚洲| 国产亚洲福利社区一区| 欧美r级在线观看| 欧美一卡二卡三卡| 欧美精品免费视频| 欧美主播一区二区三区美女| 色综合一个色综合亚洲| 成人教育av在线| 国产成人午夜精品影院观看视频| 精品在线你懂的| 久久成人久久爱| 日本视频中文字幕一区二区三区| 亚洲一级片在线观看| 一区二区三区加勒比av| 亚洲欧美激情插| 亚洲欧美一区二区三区国产精品| 中文在线资源观看网站视频免费不卡| 久久网站热最新地址| 2024国产精品| 久久久777精品电影网影网| 久久午夜免费电影| 久久久三级国产网站| 精品99999| 精品欧美一区二区三区精品久久 | 亚洲免费在线播放| 亚洲九九爱视频| 亚洲综合色区另类av| 亚洲精品一二三| 亚洲免费毛片网站| 亚洲一二三四区不卡| 亚洲第一狼人社区| 亚洲va天堂va国产va久| 首页欧美精品中文字幕| 青草av.久久免费一区| 久久狠狠亚洲综合| 久久97超碰色| 国产成人一区在线| zzijzzij亚洲日本少妇熟睡| www.色综合.com| 色狠狠av一区二区三区| 在线精品视频小说1| 欧美丝袜自拍制服另类| 欧美裸体bbwbbwbbw| 欧美一级视频精品观看| 欧美大尺度电影在线| 精品国产91亚洲一区二区三区婷婷| 精品黑人一区二区三区久久 | 日韩国产成人精品| 精品一区二区三区不卡| 国产精品一级片| 99久久久精品| 欧美日韩性生活| 日韩你懂的在线观看| 久久精品一区二区三区不卡| 国产精品免费aⅴ片在线观看| 日韩理论片在线| 亚洲国产精品欧美一二99| 美女脱光内衣内裤视频久久影院| 美女视频免费一区| 国产精品456露脸| 丁香五精品蜜臀久久久久99网站| 成人免费毛片app| 欧美三级中文字幕在线观看| 91精品国产综合久久福利软件| 精品国产三级电影在线观看| 国产精品三级视频| 亚洲一区在线观看免费 | 久久青草国产手机看片福利盒子 | 亚洲va国产va欧美va观看| 老司机精品视频在线| 丁香激情综合国产| 色94色欧美sute亚洲13| 欧美酷刑日本凌虐凌虐| 国产色婷婷亚洲99精品小说| 亚洲黄色尤物视频| 激情综合色综合久久综合| 91小视频免费看| 日韩免费高清av| 1000精品久久久久久久久| 视频一区欧美精品| 成人午夜在线免费| 欧美日韩国产高清一区| 久久在线观看免费| 亚洲精品成a人| 久久精品国产999大香线蕉| 99视频精品在线| 91麻豆精品国产| 国产精品不卡一区| 另类小说视频一区二区| 99re视频精品| 精品人在线二区三区| 亚洲狠狠丁香婷婷综合久久久| 久久精品99久久久| 91久久精品日日躁夜夜躁欧美| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久亚洲私人国产精品va媚药| 一区二区三区.www| 国产一区二区三区在线看麻豆| 欧美亚洲一区二区三区四区| 国产视频一区在线播放| 视频一区二区三区中文字幕| av网站免费线看精品| 欧美一级片免费看| 一区av在线播放| 国产成人av电影在线| 91精品国产色综合久久久蜜香臀| 国产精品久久国产精麻豆99网站| 久久精品国产一区二区| 欧美亚洲国产一区二区三区va| 国产日产欧美一区二区三区| 日韩和欧美一区二区| 色综合久久中文综合久久牛| 久久久国产一区二区三区四区小说| 午夜私人影院久久久久| 91影院在线免费观看| 久久免费美女视频| 日产国产欧美视频一区精品| 色婷婷av一区二区三区gif| 欧美经典一区二区| 精品亚洲免费视频| 欧美人妖巨大在线| 亚洲免费色视频| 成人精品国产一区二区4080| 久久综合九色综合97_久久久| 丝袜国产日韩另类美女| 欧美亚洲日本一区| 亚洲欧洲中文日韩久久av乱码| 国产91精品一区二区麻豆网站 | 欧美α欧美αv大片| 三级影片在线观看欧美日韩一区二区 | 丝瓜av网站精品一区二区| 在线亚洲精品福利网址导航| 中文字幕一区二区三|