国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 H5 與 WebGL 的3D太陽系立體展示

這篇具有很好參考價值的文章主要介紹了基于 H5 與 WebGL 的3D太陽系立體展示。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

近年來隨著引力波的發(fā)現(xiàn)、黑洞照片的拍攝、火星上存在水的證據(jù)發(fā)現(xiàn)等科學(xué)上的突破,以及文學(xué)影視作品中諸如《三體》、《流浪地球》、《星際穿越》等的傳播普及,宇宙空間中那些原本遙不可及的事物離我們越來越近,人們對未知文明的關(guān)注和對宇宙空間的好奇達(dá)到了前所未有的高度。站在更高的立足點(diǎn)上,作為人類這個物種中的一員,我們理所應(yīng)當(dāng)對我們生活的星球、所在的太陽系有一定的認(rèn)識,對 8 大行星各自的運(yùn)行軌道、質(zhì)量、資源存儲量甚至是地形有一定的了解。

本系統(tǒng)采用 Hightopo 的 HT for Web 產(chǎn)品來構(gòu)造輕量化的 3D 可視化場景。

Solar System 這套系統(tǒng)主要用于兩種場景:

  1.作為科研成果、新發(fā)現(xiàn)的載體,做 3D 太空數(shù)據(jù)可視化呈現(xiàn),用于向普通民眾科普太陽系的構(gòu)成、各行星組織結(jié)構(gòu)等知識,可置于博物館大屏、學(xué)校大屏,也可用于互聯(lián)網(wǎng)產(chǎn)品,作為航空航天類網(wǎng)站的門戶頁、展示頁。

  2.作為宇航局、航空航天相關(guān)研究機(jī)構(gòu)的駕駛艙,在 3D 可視化界面中對行星相對位置、星體狀態(tài)、星體氣象、星體地形有一個直觀快速的了解,在宇宙空間探索越來越成功的當(dāng)下,在數(shù)據(jù)傳輸技術(shù)得到速度和質(zhì)量上的突破后,甚至可以通過該系統(tǒng)對行星狀態(tài)做實(shí)時監(jiān)控呈現(xiàn),對宇航員的作業(yè)點(diǎn)、作業(yè)情況做在線監(jiān)控。在配置上人造衛(wèi)星軌道、監(jiān)控區(qū)域的數(shù)據(jù)后,本系統(tǒng)可用作衛(wèi)星系統(tǒng),描述覆蓋范圍和呈現(xiàn)觀測數(shù)據(jù)。

預(yù)覽地址:?https://www.hightopo.com/demo/solar-system/

界面簡介及效果預(yù)覽?

主題一:太陽系檢測系統(tǒng)

?本系統(tǒng)主要展示8大行星繞太陽公轉(zhuǎn)軌道、相對位置、星體質(zhì)量、資源含量等信息。

右上角行星按鈕會觸發(fā)視角切換,切換至相對應(yīng)的行星觀測點(diǎn)

this.g3d.flyTo(data, {
    animation: {
        duration: 1000,
        easing: function (t) {
            return (2-t) * t;
        }
    },
    distance: 2000
});

效果:

該主題提供兩種視角,鳥瞰和斜視,其它視角可以通過鼠標(biāo)自行旋轉(zhuǎn)

兩種視角的切換由右上角第二、三個圓形按鈕觸發(fā)。

調(diào)用 moveCamera 方法重新設(shè)置相機(jī)位置:

/\*\*
 \* 切換鏡頭
 \* @param {Number} num - 主題編號
 */
triggerThemeCamera(num) {
    //...
    this.g3d.moveCamera(
        \[ 6742.5, 4625.6, -836.7\],
        \[0, 0, 0\],
        {
            duration: 500,
            easing: function (t) {
                return (2-t) * t;
            }
        }
    );
}

?效果:

信息框默認(rèn)采用跟隨星體一起旋轉(zhuǎn),這可以達(dá)到俯視視角不出現(xiàn)信息框,看起來更清爽。

如果需要查看星體詳情,可以通過點(diǎn)擊右上角播放按鈕,該按鈕會觸發(fā)所有信息框朝向屏幕方向。

通過改變消息面板 shape3d.autorotate 來實(shí)現(xiàn):

setBillboardToCamera(flag) {
    const list = this.dm3d.getDatas();
    list.each( item => {
        if (item instanceof ht.Node) {
            if (/_board$/.test(item.getTag())) {
                if (flag) {
                    item.s('shape3d.autorotate', true);
                }
                else {
                    item.s('shape3d.autorotate', false);
                }
            }
        }
    });
}

效果:

主題二:戴森球星體 3D 拓?fù)浣Y(jié)構(gòu)

本系統(tǒng)主要展示用戶所點(diǎn)選的行星與其它星際物質(zhì)的相互作用,也可用于展示行星周圍衛(wèi)星的分布情況,以及展示星體間引力、輻射范圍等的拓?fù)浣Y(jié)構(gòu)。

鼠標(biāo)懸停在一個星體上會觸發(fā)選中狀態(tài),右側(cè)會監(jiān)控該星體的相關(guān)數(shù)據(jù)。

通過監(jiān)聽 mousemove 后調(diào)用 resetPinkOutside 方法,將粉色邊框重新設(shè)置到懸停的 node 位置:

/\*\*
 \* 重新設(shè)置邊框
 \* @param node
 */
resetPinkOutside(node) {
    const pinkOutside = this.dm3d.getDataByTag('billboard4');
    pinkOutside.setPosition3d(node.getPosition3d()\[0\],node.getPosition3d()\[1\],node.getPosition3d()\[2\]);
}

效果:

主題三:星體氣象、地形檢測系統(tǒng)

該主題主要用于呈現(xiàn)在場景二中點(diǎn)選的星體上具體的檢測點(diǎn)位,點(diǎn)位周邊的等高線在左側(cè)自動生成一個 3D 的地形和閃爍的點(diǎn)位示意,并與右側(cè)的檢測點(diǎn)位一一對應(yīng)。

該功能可用于地形的呈現(xiàn),也可以用于星體大氣層的氣象狀態(tài)展示。

左下角實(shí)時監(jiān)控點(diǎn)位的地質(zhì)熱量、氣象流動數(shù)據(jù)。

點(diǎn)選右側(cè)對應(yīng)檢測點(diǎn),會觸發(fā)右側(cè)點(diǎn)的縮放動畫,同時左側(cè)對應(yīng)的 3D 點(diǎn)位也會同步變化,其它的點(diǎn)則調(diào)用 setAnimation(null)

setTwinkleToPoints(flag) {
    //...
    if (flag) {
        if (point1_3D && point1) {
            if (this.animationFlags.twinklePointNum === 1) {
                point1_3D.setAnimation({
                    change: {},
                    start: \["change"\]
                });
                point1.setAnimation({
                    width: {},
                    height: {},
                    start: \["width", "height"\]
                });
            } else {
                SolarSystem.disableTwinkle(point1_3D, point1);
            }
        } else {
            SolarSystem.disableTwinkle(point1_3D, point1);
            //...
        }
    }
}

效果:

關(guān)聯(lián):三個主題(系統(tǒng))的聯(lián)動

三個系統(tǒng)是互相關(guān)聯(lián)的,相互切換的方式有三種。

  1.點(diǎn)選左上角的切換按鈕:

  左上角部分均為導(dǎo)航欄的響應(yīng)范圍,鼠標(biāo)懸停時會改變動畫控制器 animationFlags 的對應(yīng)值,觸發(fā)導(dǎo)航欄落下來,懸停和點(diǎn)選按鈕會通過 setImage 方法設(shè)置不同的背景

this.g2d.getView().addEventListener('mousemove', event => {
    const node = this.g2d.getDataAt(event);
    let tag = '';
    if (node) {
        tag = node.getTag();
    }
    if('navigator' === tag){
        if(!this.animationFlags.navigatorRotate && this.animationFlags.navAnimationDone){
            this.animationFlags.navAnimationDone = false;
            this.animationControl(0, true);
        }
        this.resetButtonStyle();
    }
    else if (/^navButton/.test(tag)) {
        this.animationFlags.navButtonOnHover = true; // 防止動畫過快導(dǎo)致無法點(diǎn)選按鈕
        this.resetButtonStyle();
        if (!node.a('buttonOnClick')) {
            node.setImage('buttonOnHover');
        }
    }
    else {
        this.resetButtonStyle();
        this.animationFlags.navButtonOnHover = false;
        if(this.animationFlags.navigatorRotate && this.animationFlags.navAnimationDone){
            setTimeout(() => {
                if(!this.animationFlags.navButtonOnHover){
                    this.animationFlags.navButtonOnHover = true;
                    this.animationFlags.navAnimationDone = false;
                    this.animationControl(0, false);
                }
            }, 500);
        }
    }
}, false);

效果:

  2.點(diǎn)擊最下方的標(biāo)尺欄,分別對應(yīng) 3 個模塊:

?  3.點(diǎn)選主題一中的行星跳轉(zhuǎn)到的主題二的拓?fù)浣Y(jié)構(gòu),點(diǎn)選主題二的星體跳轉(zhuǎn)主題三的地形,主題三無法向前關(guān)聯(lián),只能通過前兩種方式進(jìn)行跳轉(zhuǎn):

總結(jié):

該系統(tǒng)使用輕量高效的 ht 庫,矢量平面信息與 3D 對象進(jìn)行關(guān)聯(lián),并采用 3D 拓?fù)淇梢暬尸F(xiàn),相對位置清晰直觀,3D 地形與等高線圖對應(yīng),海拔高度和相互遮擋關(guān)系都可以準(zhǔn)確把握。

該系統(tǒng)滿足了最基本的太空場景和數(shù)據(jù)呈現(xiàn)的框架,更為詳盡的數(shù)據(jù)呈現(xiàn)和業(yè)務(wù)功能有待相關(guān)的工作人員根據(jù)具體的業(yè)務(wù)場景提出更詳盡的需求。

作者:hightopo

原文地址:https://segmentfault.com/a/1190000021685881文章來源地址http://www.zghlxwxcb.cn/news/detail-829306.html

喜歡 1

到了這里,關(guān)于基于 H5 與 WebGL 的3D太陽系立體展示的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenGL太陽系行星系統(tǒng)簡單實(shí)現(xiàn)

    OpenGL太陽系行星系統(tǒng)簡單實(shí)現(xiàn)

    使用OpenGL(glfw, glad)模擬太陽系(地球、月球、太陽)系統(tǒng),涉及三維圖形變換、坐標(biāo)系統(tǒng),光照模型(待添加)、鍵盤鼠標(biāo)事件處理等內(nèi)容,在main函數(shù)中封裝了絕大部分的OpenGL接口,極大的減少了代碼量,操作簡便。 Shader.h Camera.h與Texture.h封裝著色器、攝像機(jī)與紋理類,其

    2024年02月04日
    瀏覽(23)
  • 150行Python代碼模擬太陽系行星運(yùn)轉(zhuǎn)

    150行Python代碼模擬太陽系行星運(yùn)轉(zhuǎn)

    今天我們用Python來模擬一下太陽系行星運(yùn)動軌跡玩玩~ 先上成品圖(運(yùn)行效果含音樂的呦) 想要實(shí)現(xiàn)這樣的效果并不難 1、準(zhǔn)備材料 首先我們需要準(zhǔn)備這樣一些材料 宇宙背景圖 背景透明的行星圖 ? 2:編寫代碼 代碼分塊詳解 導(dǎo)入需要的模塊 定義窗口大小、標(biāo)題名稱、字體設(shè)

    2024年02月15日
    瀏覽(23)
  • 【計(jì)算機(jī)圖形學(xué)】【實(shí)驗(yàn)報(bào)告】太陽系繪制、B樣條曲線繪制(附代碼)

    【計(jì)算機(jī)圖形學(xué)】【實(shí)驗(yàn)報(bào)告】太陽系繪制、B樣條曲線繪制(附代碼)

    實(shí) 驗(yàn) 報(bào) 告 一、實(shí)驗(yàn)?zāi)康?掌握三維圖形的顯示原理和方法,掌握三維觀察的原理和方法; 掌握OpenGL中矩陣堆棧函數(shù)的使用,會使用堆棧函數(shù)進(jìn)行復(fù)雜場景的組裝。 掌握OpenGL中三維觀察變換常用的函數(shù)的使用方法,了解三維模型的貼圖方法; 掌握自由曲線的生成方法,熟練

    2024年02月10日
    瀏覽(31)
  • Unity 3D模型展示之webGL平臺展現(xiàn)

    Unity 3D模型展示之webGL平臺展現(xiàn)

    在之前的項(xiàng)目基礎(chǔ)上我們已經(jīng)打包后在PC端進(jìn)行展示了。這篇文章主要介紹在切換到webGL上時效果展示不出來需要進(jìn)行調(diào)整,特此記錄一下。 1.平臺切換 選擇WebGL平臺切換,沒有的可以進(jìn)行安裝,安裝之后關(guān)閉IDE重新啟動。選擇WebGL切換,參數(shù)參照以下設(shè)置即可。 2.構(gòu)建WebGL項(xiàng)

    2024年02月01日
    瀏覽(17)
  • 大型加油站3d全景虛擬現(xiàn)實(shí)展示平臺實(shí)現(xiàn)全方位立體呈現(xiàn)

    近年來,隨著國民經(jīng)濟(jì)的快速發(fā)展,交通基礎(chǔ)設(shè)施的不斷改善,機(jī)動車保有量的持續(xù)飆升,以至于加油站的建設(shè)數(shù)量和密度也在不斷擴(kuò)張。加油站作為人流量大且常見的城市場景,對加油站進(jìn)行安全防范措施具有非常重要的安全意義。 相比隨處可見的加油站,加油廠除了有加

    2024年02月06日
    瀏覽(19)
  • 【3D圖像分類】基于Pytorch的3D立體圖像分類--基礎(chǔ)篇

    【3D圖像分類】基于Pytorch的3D立體圖像分類--基礎(chǔ)篇

    在我們一般的圖像數(shù)據(jù)的采集場景中,得到的大多是二維圖像。比如手機(jī)拍照,所以大多數(shù)深度學(xué)習(xí)網(wǎng)絡(luò)的雛形都是基于二維圖像展開的工作。 但是,在某些場景下,比如 醫(yī)學(xué)影像CT數(shù)據(jù) ,監(jiān)控場景 連續(xù)拍攝的視頻 和自動駕駛使用到的 激光點(diǎn)云 等等,多是連續(xù)的、多層的

    2023年04月09日
    瀏覽(20)
  • 【3D圖像分類】基于Pytorch的3D立體圖像分類1--基礎(chǔ)篇

    【3D圖像分類】基于Pytorch的3D立體圖像分類1--基礎(chǔ)篇

    在我們一般的圖像數(shù)據(jù)的采集場景中,得到的大多是二維圖像。比如手機(jī)拍照,所以大多數(shù)深度學(xué)習(xí)網(wǎng)絡(luò)的雛形都是基于二維圖像展開的工作。 但是,在某些場景下,比如 醫(yī)學(xué)影像CT數(shù)據(jù) ,監(jiān)控場景 連續(xù)拍攝的視頻 和自動駕駛使用到的 激光點(diǎn)云 等等,多是連續(xù)的、多層的

    2023年04月26日
    瀏覽(20)
  • WebGL入門之基于WebGL的3D可視化引擎介紹

    WebGL入門之基于WebGL的3D可視化引擎介紹

    WebGL(Web Graphics Library)是一個JavaScript API,用于在任何兼容的Web瀏覽器中渲染高性能交互式3D和2D圖形,而無需使用插件。WebGL通過引入一個非常符合OpenGL ES 2.0的API來實(shí)現(xiàn)這一點(diǎn),該API可以在HTML 元素中使用。這種一致性使 API 可以利用用戶設(shè)備提供的硬件圖形加速。WebGL完全集

    2024年02月11日
    瀏覽(93)
  • 基于threejs(webgl)的3D元宇宙云展廳

    基于threejs(webgl)的3D元宇宙云展廳

    首先看看效果圖: ? 基于 threejs 開發(fā)的 3D 展廳,展品可以自由擺放。支持 gltf/glb 格式 github地址:GitHub - mtsee/vr-hall: three.js 3D vr hall

    2024年02月12日
    瀏覽(21)
  • 基于Conv3D實(shí)現(xiàn)三維立體MNIST數(shù)據(jù)集分類

    基于Conv3D實(shí)現(xiàn)三維立體MNIST數(shù)據(jù)集分類

    大家好,我是阿光。 本專欄整理了《PyTorch深度學(xué)習(xí)項(xiàng)目實(shí)戰(zhàn)100例》,內(nèi)包含了各種不同的深度學(xué)習(xí)項(xiàng)目,包含項(xiàng)目原理以及源碼,每一個項(xiàng)目實(shí)例都附帶有完整的代碼+數(shù)據(jù)集。 正在更新中~ ? ?? 我的項(xiàng)目環(huán)境: 平臺:Windows10 語言環(huán)境:python3.7 編譯器:PyCharm PyTorch版本:

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包