国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WebGL three.js學(xué)習(xí)筆記 自定義頂點(diǎn)建立幾何體

joyvw / 3537人閱讀

摘要:自定義頂點(diǎn)建立幾何體與克隆本身已經(jīng)有很多的網(wǎng)格模型,基本已經(jīng)夠我們的使用,但是如果我們還是想自己根據(jù)頂點(diǎn)坐標(biāo)來(lái)建立幾何模型的話,也是可以的。并且不僅要更新頂點(diǎn),還要更新線條的連接方式,否則是沒(méi)有效果的。

自定義頂點(diǎn)建立幾何體與克隆

Three.js本身已經(jīng)有很多的網(wǎng)格模型,基本已經(jīng)夠我們的使用,但是如果我們還是想自己根據(jù)頂點(diǎn)坐標(biāo)來(lái)建立幾何模型的話,Three.js也是可以的。

基本效果如圖:

點(diǎn)擊查看demo演示 demo演示:https://nsytsqdtn.github.io/d...

實(shí)際上出于性能的考慮,three.js是認(rèn)為我們的幾何體在整個(gè)生命周期中是不會(huì)改變的,但是我們還是想使用dat.gui.js去實(shí)時(shí)更新我們自定義幾何體的頂點(diǎn)信息。

當(dāng)頂點(diǎn)信息發(fā)生變化時(shí),我們就需要使用
geometry.verticesNeedUpdate = true;
但是在每一幀渲染完后這個(gè)值又會(huì)變?yōu)閒alse,所以我們需要每次渲染中都更新這個(gè)值。

完整代碼如下:




    
    Three.js
    
    
    
    
    
    
    


*

特別要注意的是

在頂點(diǎn)發(fā)生變化時(shí),如果是多材質(zhì)對(duì)象的話,需要使用遍歷每一個(gè)子對(duì)象來(lái)進(jìn)行更新頂點(diǎn)數(shù)據(jù)。并且不僅要更新頂點(diǎn),還要更新線條的連接方式geometry.elementsNeedUpdate = true,否則是沒(méi)有效果的。(甚至嘗試了一下不更新頂點(diǎn),只更新線條也是可以達(dá)到實(shí)時(shí)更新的效果)

let vertices = [];
        for (let i = 0; i < 8; i++) {
            vertices.push(new THREE.Vector3(controlPoints[i].x, controlPoints[i].y, controlPoints[i].z));
        }
        mesh.children.forEach(function (e) {
            e.geometry.vertices = vertices;
            e.geometry.verticesNeedUpdate = true;//通知頂點(diǎn)更新
            e.geometry.elementsNeedUpdate = true;//特別重要,通知線條連接方式更新
            e.geometry.computeFaceNormals();
        });

如果是單一的材質(zhì)幾何體,就不需要去遍歷每一個(gè)子物體,直接把幾何體的每一個(gè)頂點(diǎn)值更改,然后在通知頂點(diǎn)更新,就可以了。

     //單材質(zhì)幾何體要更新頂點(diǎn)的話使用這一段語(yǔ)句
         for (let i = 0; i < 8; i++) {
             console.log(mesh);
            mesh.geometry.vertices[i].set(controlPoints[i].x, controlPoints[i].y, controlPoints[i].z);
            mesh.geometry.verticesNeedUpdate = true;
            mesh.geometry.computeFaceNormals();
        }
注:

老版本的three.js,SceneUtils是沒(méi)有多帶帶拿出來(lái)作為一個(gè)js文件的,是直接寫在three.js里。
而且使用69版本的three.js時(shí),不需要更新線條的連接方式也可以實(shí)現(xiàn)實(shí)時(shí)更新。但是103版本試了很多次,都不行。
另外,使用的OrbitControls.js和dat.gui.min.js最好都是和自己用的Three.js版本要一致,否則可能會(huì)報(bào)錯(cuò)。有一些教程的示例程序版本可能就比較舊了,如果直接拿來(lái)用可能會(huì)出問(wèn)題,注意分辨一下。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/103808.html

相關(guān)文章

  • WebGL three.js學(xué)習(xí)筆記 使用粒子系統(tǒng)模擬時(shí)空隧道(蟲(chóng)洞)

    摘要:學(xué)習(xí)筆記使用粒子系統(tǒng)模擬時(shí)空隧道本例的運(yùn)行結(jié)果如圖時(shí)空隧道演示地址的粒子系統(tǒng)的粒子系統(tǒng)主要是依靠精靈體來(lái)創(chuàng)建的,要實(shí)現(xiàn)中的粒子系統(tǒng)創(chuàng)建,一般有兩種方式。 WebGL three.js學(xué)習(xí)筆記 使用粒子系統(tǒng)模擬時(shí)空隧道 本例的運(yùn)行結(jié)果如圖:showImg(https://img-blog.csdnimg.cn/20190426222855492.png?x-oss-process=ima...

    Guakin_Huang 評(píng)論0 收藏0
  • three.js 入門詳解(一)

    摘要:一般說(shuō)來(lái),對(duì)于制圖建模軟通常使正交投影,這樣不會(huì)因?yàn)橥队岸淖兾矬w比例而對(duì)于其他大多數(shù)應(yīng)用,通常使用透視投影,因?yàn)檫@更接近人眼的觀察效果。 showImg(https://segmentfault.com/img/remote/1460000012581680?w=1920&h=1080); 1. 概述 1.1 什么是WebGL? WebGL是在瀏覽器中實(shí)現(xiàn)三維效果的一套規(guī)范 想要使用...

    Jacendfeng 評(píng)論0 收藏0
  • 產(chǎn)品三維模型在線預(yù)覽

    摘要:次時(shí)代傳統(tǒng)的方式就是創(chuàng)建次時(shí)代模型,對(duì)應(yīng)中的材質(zhì)是高光網(wǎng)格材質(zhì)對(duì)象,通常貼圖文件包含顏色貼圖法線貼圖和高光貼圖。 產(chǎn)品在線展示案例預(yù)覽 玉鐲在線預(yù)覽:http://www.yanhuangxueyuan.co... 汽車在線預(yù)覽:http://www.yanhuangxueyuan.co... Web3D技術(shù)歷史 可通過(guò)插件或WebGL技術(shù)實(shí)現(xiàn)Web3D,在線網(wǎng)頁(yè)上預(yù)覽操作三維...

    DirtyMind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<