91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HT 流暢過(guò)渡動(dòng)畫 × 場(chǎng)景切換實(shí)現(xiàn)方案

圖撲-數(shù)字孿生 ? 來(lái)源:圖撲-數(shù)字孿生 ? 作者:圖撲-數(shù)字孿生 ? 2025-09-03 14:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在圖撲 HT 項(xiàng)目中,尤其是復(fù)雜應(yīng)用里,單一場(chǎng)景或圖紙通常難以承載所有需求,因此在多個(gè)圖紙或場(chǎng)景之間進(jìn)行切換是一種常見的實(shí)現(xiàn)方式。本文將深入解析圖撲 HT 項(xiàng)目中場(chǎng)景/圖紙切換的核心實(shí)現(xiàn)方法,并詳細(xì)介紹如何為切換過(guò)程添加流暢自然的過(guò)渡效果,以提升用戶體驗(yàn)。

wKgZO2i35PCAToFmAAei5wYc7Ok341.png

場(chǎng)景 / 圖紙核心切換步驟

圖撲 HT 項(xiàng)目中,實(shí)現(xiàn)圖紙或場(chǎng)景的無(wú)縫切換需嚴(yán)格遵循以下關(guān)鍵步驟,以避免潛在問(wèn)題并確保切換過(guò)程穩(wěn)定可靠:

  1. 清除當(dāng)前的數(shù)據(jù)模型
  2. 使用 dataModel.clear() 清除當(dāng)前場(chǎng)景關(guān)聯(lián)的所有數(shù)據(jù)模型。
  3. 反序列化新場(chǎng)景/圖紙
  4. 通過(guò) view.deserialize(url) 方法加載并反序列化新的場(chǎng)景或圖紙資源文件,完成新場(chǎng)景的載入。

注意:不建議通過(guò)創(chuàng)建多個(gè) ht.graph3d.GraphView 進(jìn)行切換。

原因在于 ht.graph3d.GraphView 是基于 WebGL 的 3D 渲染組件。而多數(shù)瀏覽器對(duì)單個(gè)頁(yè)面可運(yùn)行的 WebGL 上下文數(shù)量有嚴(yán)格限制。頻繁創(chuàng)建新實(shí)例會(huì)導(dǎo)致內(nèi)存泄漏或資源耗盡,引發(fā)場(chǎng)景顯示異常甚至瀏覽器崩潰。

場(chǎng)景切換過(guò)渡效果

為了在場(chǎng)景切換時(shí)獲得更流暢、更具視覺吸引力的體驗(yàn),可以添加過(guò)渡動(dòng)畫。常見的實(shí)現(xiàn)思路有兩種:

利用場(chǎng)景屬性實(shí)現(xiàn)過(guò)渡

通過(guò)控制場(chǎng)景的特定屬性,在切換過(guò)程中產(chǎn)生動(dòng)態(tài)過(guò)渡效果,常見的有景深動(dòng)畫和亮度調(diào)節(jié)等。

景深動(dòng)畫過(guò)渡

景深效果主要通過(guò)以下兩個(gè)屬性控制:

  • image 屬性:模擬景深的貼圖(通常為四周黑色、中間透明的 PNG 圖片,黑色區(qū)域應(yīng)用景深模糊,透明區(qū)域保持清晰)。
  • aperture(孔徑)屬性:代表中間空白區(qū)域的大小,取值范圍 0~1,0 表示無(wú)景深效果,1 表示景深效果最明顯。
wKgZPGi35PGAdy6vADBsqMO5GU0259.gif

實(shí)現(xiàn)步驟

使用一張全黑景深貼圖(確保整個(gè)場(chǎng)景受景深影響),在舊場(chǎng)景切換前開啟景深并執(zhí)行遞增孔徑值的動(dòng)畫,新場(chǎng)景加載后執(zhí)行遞減孔徑值的動(dòng)畫,形成“漸隱漸顯”的過(guò)渡效果。

let dof = g3d.getPostProcessingModule('Dof');
dof.image = 'assets/景深.png'
dof.aperture = 0
// 景深開啟
g3d.enablePostProcessing('Dof', true);
let anim = {
      duration: 800,
      easing: (t: number) => {
         return t * t;
      },
      action: (v: number, t: number) => {
        // 動(dòng)態(tài)設(shè)置景深閾值
        dof.aperture = v * 0.2
        }
}
ht.Default.startAnim(anim);

新場(chǎng)景反序列化后,新場(chǎng)景也需要執(zhí)行景深動(dòng)畫。這時(shí)執(zhí)行的景深動(dòng)畫跟舊場(chǎng)景的景深動(dòng)畫區(qū)別在于 action 中的邏輯是遞減的過(guò)程:dof.aperture =0.2-v*0.2。

wKgZO2i35PKAceGLAD-0Ceg3Sls538.gifwKgZPGi35PSAUHcdADxyVBw7d1Y445.gif

其他屬性過(guò)渡效果

除景深外,還可通過(guò)調(diào)節(jié)亮度等場(chǎng)景屬性實(shí)現(xiàn)過(guò)渡,原理與景深動(dòng)畫一致:

  • 舊場(chǎng)景切換前,執(zhí)行屬性動(dòng)畫(如亮度逐漸降低至 0,場(chǎng)景變暗);
  • 新場(chǎng)景加載后,執(zhí)行反向動(dòng)畫(如亮度從 0 逐漸恢復(fù)至正常值,場(chǎng)景變亮)。

利用 2D 圖紙動(dòng)畫實(shí)現(xiàn)過(guò)渡

通過(guò)在 3D 場(chǎng)景上層疊加 2D 圖紙,利用 2D 元素的動(dòng)畫效果遮蔽切換過(guò)程,創(chuàng)意自由度更高,為整體呈現(xiàn)帶來(lái)了更多的藝術(shù)動(dòng)感和技術(shù)深度。

幀動(dòng)畫過(guò)渡(云朵過(guò)渡)

舊場(chǎng)景被“云朵”圖片序列逐漸覆蓋(遮蔽),切換新場(chǎng)景后,“云朵”再逐漸消散以展現(xiàn)新場(chǎng)景。

wKgZO2i35PaAdj9RADoYPHHgvtI927.gif

實(shí)現(xiàn)步驟

  1. 準(zhǔn)備一組連續(xù)的過(guò)渡圖片(如從透明到完全遮蔽再到透明的云朵圖片序列);
  2. 舊場(chǎng)景切換前,執(zhí)行動(dòng)畫使圖片從初始狀態(tài)過(guò)渡到完全遮蔽場(chǎng)景;
  3. 新場(chǎng)景加載后,執(zhí)行反向動(dòng)畫使圖片從完全遮蔽過(guò)渡到消失。

代碼示例

const cloudList = [    
    "assets/cloud1.png",
    "assets/cloud2.png",
    ...
    "assets/cloud20.png",
];
const image = this.getDataByTag('cloud');
let i = 0;
ht.Default.startAnim({
    frames: 20,
    interval:50,
    action: (t) => {
        cloudList[i] && image.setImage(cloudList[i]);
    }
})

在新舊場(chǎng)景內(nèi)執(zhí)行的動(dòng)畫代碼基本一樣,區(qū)別在于切換前 action 中是從第一張圖片切換到最后一張,在新場(chǎng)景反序列化后是從最后一張切換回第一張。

其他創(chuàng)意效果

利用 2D 覆蓋層進(jìn)行過(guò)渡的核心優(yōu)勢(shì)在于創(chuàng)意自由度極高。開發(fā)者可以結(jié)合 HT 強(qiáng)大的 2D 動(dòng)畫能力,對(duì)覆蓋元素應(yīng)用多種屬性動(dòng)畫組合:

  • 漸入漸出的遮罩層動(dòng)畫;
  • 模擬鏡頭推拉的縮放動(dòng)畫;
  • 基于路徑的元素移動(dòng)動(dòng)畫;
  • ……
wKgZPGi35PiAOPbXAEGCLGXSTzc160.gif

2D 圖紙間切換過(guò)渡

前文主要探討了 3D 場(chǎng)景的切換過(guò)渡。同樣地,在純 2D 圖紙 (ht.graph.GraphView) 之間進(jìn)行切換時(shí),也可以利用 HT 的 2D 特性實(shí)現(xiàn)平滑的過(guò)渡效果。一種實(shí)用的方法是動(dòng)態(tài)生成并動(dòng)畫化當(dāng)前視圖的縮略圖。

利用縮略圖過(guò)渡

在圖紙切換前動(dòng)態(tài)生成縮略圖并施加動(dòng)畫,實(shí)現(xiàn)平滑過(guò)渡的效果,具體的實(shí)現(xiàn)步驟:

■生成當(dāng)前視圖縮略圖:在觸發(fā)圖紙切換前,使用 gv.toDataURL() 生成當(dāng)前視圖的縮略圖。

■創(chuàng)建過(guò)渡節(jié)點(diǎn):

生成與圖紙視圖窗口尺寸相同的節(jié)點(diǎn)。

將縮略圖設(shè)置為該節(jié)點(diǎn)的內(nèi)容。

■應(yīng)用動(dòng)畫效果:在動(dòng)畫中調(diào)整縮略圖節(jié)點(diǎn)的裁切、透明等屬性,以達(dá)到過(guò)渡效果。

wKgZO2i35PqAIjgNAC9NdSOOBF8233.gif

代碼示例

functiongenerateThumbnail() {
     var jsonSerializer = new ht.JSONSerializer(dm); // 創(chuàng)建序列化器,并傳入舊圖紙的 dm
     jsonSerializer.isSerializable = function (data) { // 過(guò)濾節(jié)點(diǎn)
         return data.getTag() != 'mask';
     }
     var json = ht.Default.parse(jsonSerializer.serialize()); 
     json.a = {};
     const gv = new ht.graph.GraphView(); // 創(chuàng)建一個(gè)新的2D 視圖
     gv.dm().deserialize(json); // 反序列化


     const thumbnail = gv.toDataURL(null, null, 1, 0); // 生成縮略圖
}
functioncreateThumbnailData(thumbnail){
     const thumbnail_data = new ht.Node(); // 生成縮略圖節(jié)點(diǎn)
     thumbnail_data.setImage(thumbnail);
     const contentRect = gv.getContentRect(); // 獲取所有圖元占用的矩形區(qū)域
     const rect = div.getBoundingClientRect();// 獲取2D視圖尺寸
     const width = rect.width;
     const height = rect.height;
     thumbnail_data.p({ x: contentRect.x + contentRect.width / 2, y: contentRect.y + contentRect.height / 2 }) // 為縮略圖節(jié)點(diǎn)設(shè)置位置
     thumbnail_data.setSize({ width, height });// 為縮略圖節(jié)點(diǎn)設(shè)置尺寸
     thumbnail_data.setScale(contentRect.width / width, contentRect.height / height);// 為縮略圖節(jié)點(diǎn)設(shè)置縮放
     thumbnail_data.setAnchor({ x: 0.5, y: 0.5 });
     dm.add(thumbnail_data);


     const mask = dm.getDataByTag('mask'); 
     thumbnail_data.setHost(mask); 
     thumbnail_data.s('clip.host', true); // 開啟吸附裁切后,縮略圖節(jié)點(diǎn)會(huì)根據(jù)吸附的節(jié)點(diǎn)進(jìn)行裁切


     ht.Default.startAnim({
        duration: 2000,
        easing: function (t) { return t; },
        finishFunc: function () {
              dm.remove(thumbnail_data); // 動(dòng)畫結(jié)束后移除縮略圖節(jié)點(diǎn)
        },
        action: function (v, t) {
              thumbnail_data.s('opacity', 1 - v + 0.1);
              mask.setScaleX(1 - v);
              thumbnail_data.iv();
        }
     });
}


view.mi((e) =>{
  if(e.kind === 'onClick' && e.type === 'data'){
        if(e.data.getTag() === 'switchBtn'){ // 點(diǎn)擊按鈕切換圖紙
        const thumbnail = generateThumbnail(); // 生成縮略圖
        ....
        createThumbnailData(thumbnail); // 生成縮略圖節(jié)點(diǎn)
        ...
      }
    }
})

在圖撲軟件 HT 項(xiàng)目中實(shí)現(xiàn)場(chǎng)景/圖紙切換,關(guān)鍵在于遵循 dataModel.clear() + view.deserialize() 的核心步驟,并避免重復(fù)創(chuàng)建 ht.graph3d.GraphView 實(shí)例。

為了提升用戶體驗(yàn),添加過(guò)渡效果是重要環(huán)節(jié)。無(wú)論是通過(guò)動(dòng)態(tài)調(diào)整場(chǎng)景后處理屬性(如景深、亮度)還是利用精心設(shè)計(jì)的 2D 圖紙動(dòng)畫(如幀序列),本質(zhì)上都是對(duì) HT 引擎靈活性和設(shè)計(jì)者創(chuàng)意的結(jié)合應(yīng)用。不僅優(yōu)化了技術(shù)流程,更能創(chuàng)造出引人入勝的視覺表現(xiàn),是當(dāng)前 Web 可視化項(xiàng)目中的重要實(shí)踐。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HT
    HT
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    30915
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1353

    瀏覽量

    22806
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    雙電源冗余供電的靜態(tài)切換方案有哪些優(yōu)缺點(diǎn)?

    靜態(tài)切換(STS,Static Transfer Switch)是雙電源冗余供電的高端方案,核心基于晶閘管(SCR)、IGBT 等無(wú)機(jī)械觸點(diǎn)半導(dǎo)體開關(guān)實(shí)現(xiàn)電源切換,廣泛應(yīng)用于對(duì)
    的頭像 發(fā)表于 02-25 17:20 ?1167次閱讀

    基于圖撲 HT 引擎:數(shù)字孿生民航飛聯(lián)網(wǎng)方案

    與動(dòng)態(tài)效果呈現(xiàn),能夠搭建標(biāo)準(zhǔn)化、可交互的可視化管控界面,為工業(yè)互聯(lián)網(wǎng)監(jiān)控運(yùn)維場(chǎng)景提供一體化前端可視化實(shí)現(xiàn)方案。 核心技術(shù)架構(gòu)設(shè)計(jì) 引擎底層支撐 HT for Web 引擎基于 WebG
    的頭像 發(fā)表于 02-05 14:26 ?109次閱讀
    基于圖撲 <b class='flag-5'>HT</b> 引擎:數(shù)字孿生民航飛聯(lián)網(wǎng)<b class='flag-5'>方案</b>

    圖撲 HT 數(shù)字孿生地鐵站功能實(shí)現(xiàn)解析

    WebGL、物聯(lián)網(wǎng)(IoT)、人工智能(AI)等前沿技術(shù),構(gòu)建了覆蓋地鐵站全場(chǎng)景的數(shù)字孿生解決方案。該方案以技術(shù)賦能運(yùn)營(yíng)、管理、服務(wù)全流程,本文將從技術(shù)底層邏輯出發(fā),拆解核心功能的實(shí)現(xiàn)
    的頭像 發(fā)表于 12-25 14:07 ?303次閱讀
    圖撲 <b class='flag-5'>HT</b> 數(shù)字孿生地鐵站功能<b class='flag-5'>實(shí)現(xiàn)</b>解析

    變頻器的多段速切換時(shí),如何做到平穩(wěn)過(guò)渡

    在工業(yè)自動(dòng)化控制領(lǐng)域,變頻器多段速切換的平穩(wěn)過(guò)渡實(shí)現(xiàn)設(shè)備高效運(yùn)行的關(guān)鍵技術(shù)。以西門子MM440變頻器為例,其內(nèi)置的多種控制模式(如固定頻率設(shè)定、模擬量給定、通信控制等)為速度切換提供
    的頭像 發(fā)表于 12-12 07:42 ?690次閱讀
    變頻器的多段速<b class='flag-5'>切換</b>時(shí),如何做到平穩(wěn)<b class='flag-5'>過(guò)渡</b>

    CW32 SysClk系統(tǒng)時(shí)鐘的應(yīng)用場(chǎng)景切換規(guī)則

    。 主要應(yīng)用場(chǎng)景包括: 1、時(shí)鐘故障自動(dòng)切換當(dāng)檢測(cè)到當(dāng)前系統(tǒng)時(shí)鐘源失效時(shí),可快速安全切換到其它可用時(shí)鐘源上,提高產(chǎn)品可靠性。 2、功耗管理在待機(jī)狀態(tài)切換 SysClk 的時(shí)鐘源為低速
    發(fā)表于 12-11 07:51

    圖撲軟件 3D 場(chǎng)景預(yù)加載應(yīng)用實(shí)現(xiàn)

    應(yīng)用中,資源預(yù)加載尤為重要,可有效解決首次加載時(shí)的卡頓、白屏及交互延遲等問(wèn)題。 預(yù)加載實(shí)現(xiàn)方案 01 基礎(chǔ)實(shí)現(xiàn)原理 HT for Web 中所有資源的請(qǐng)求都會(huì)經(jīng)過(guò)
    的頭像 發(fā)表于 12-01 16:04 ?536次閱讀
    圖撲軟件 3D <b class='flag-5'>場(chǎng)景</b>預(yù)加載應(yīng)用<b class='flag-5'>實(shí)現(xiàn)</b>

    HT7180單串多串鋰電池升壓方案2.7V-12V電壓10A電流禾潤(rùn)電子一級(jí)代理聚能芯半導(dǎo)體原廠技術(shù)支持

    在智能硬件、便攜設(shè)備迭代加速的當(dāng)下,電源方案的適配性、動(dòng)力性與安全性成為產(chǎn)品競(jìng)爭(zhēng)力的核心。禾潤(rùn) HT7180 寬壓升壓芯片橫空出世,以四大核心優(yōu)勢(shì)打破行業(yè)瓶頸,為多場(chǎng)景設(shè)備提供高效穩(wěn)定的電源解決
    發(fā)表于 11-19 18:02

    禾潤(rùn)電子HT0104:4 路雙向電平轉(zhuǎn)換的高效解決方案聚能芯半導(dǎo)體一級(jí)代理原廠技術(shù)支持

    中尤為重要。 從物聯(lián)網(wǎng)設(shè)備的跨模塊通信,到工業(yè)總線的電平匹配,再到消費(fèi)電子的多電壓域交互,HT0104 以其寬兼容、高可靠、易集成的優(yōu)勢(shì),完美適配各類應(yīng)用場(chǎng)景。無(wú)需復(fù)雜外圍電路,即可實(shí)現(xiàn)穩(wěn)定的跨電壓域
    發(fā)表于 11-13 17:21

    智能顯示模塊可以播放動(dòng)畫嗎?動(dòng)畫功能怎么實(shí)現(xiàn),在哪可以添加?

    智能顯示模塊可以播放動(dòng)畫嗎?動(dòng)畫功能怎么實(shí)現(xiàn),在哪可以添加?
    發(fā)表于 11-08 08:57

    圖撲 HT 自研技術(shù)架構(gòu)下 AR 應(yīng)用開發(fā)與行業(yè)解決方案實(shí)現(xiàn)

    、實(shí)時(shí)數(shù)據(jù)交互與空間識(shí)別能力,在建筑施工建造、數(shù)據(jù)中心機(jī)柜管理、辦公空間導(dǎo)航三大核心場(chǎng)景中,實(shí)現(xiàn)了從技術(shù)架構(gòu)到落地應(yīng)用的全鏈路自研可控,為行業(yè)提供高效、精準(zhǔn)、安全的數(shù)字化解決方案,推動(dòng)傳統(tǒng)行業(yè)向智能化管理模式升級(jí)。 圖撲
    的頭像 發(fā)表于 10-10 11:27 ?526次閱讀
    圖撲 <b class='flag-5'>HT</b> 自研技術(shù)架構(gòu)下 AR 應(yīng)用開發(fā)與行業(yè)解決<b class='flag-5'>方案</b><b class='flag-5'>實(shí)現(xiàn)</b>

    SGTools--動(dòng)畫控件--屏幕實(shí)現(xiàn)動(dòng)畫顯示 就是這么簡(jiǎn)單

    詳細(xì)步驟可以觀看視頻, 實(shí)現(xiàn)動(dòng)畫很簡(jiǎn)單,提前準(zhǔn)備好gif文件和一個(gè)張背景圖 使用SGTools工具,就可以制作動(dòng)畫界面啦 視頻中屏幕型號(hào)是7寸 HMT070ATA-9C
    發(fā)表于 09-16 10:29

    分享---儲(chǔ)能UI界面能量流動(dòng)動(dòng)畫實(shí)現(xiàn)方法

    本文分享 工商業(yè)儲(chǔ)能設(shè)備的UI界面中如何實(shí)現(xiàn) 能量流動(dòng)的動(dòng)畫效果。 本例子效果 基于拓普微工業(yè)級(jí) 7寸屏電容串口屏(HMT070ETA-D型號(hào))實(shí)現(xiàn): 第1步:建立工程和頁(yè)面 使用SGTools新建
    發(fā)表于 09-02 18:22

    禾潤(rùn) HT0104MTNR:TXB0104PWR/TXS0104EPWR/RSO1O4YQ 的完美替代方案,重新定義電平轉(zhuǎn)換價(jià)值

    TXB0104PWR 的 VCCA、VCCB、A/B 端口及 OE 控制邏輯。這意味著無(wú)需修改 PCB 布局,即可直接替換現(xiàn)有方案,顯著降低開發(fā)成本與時(shí)間風(fēng)險(xiǎn)。無(wú)論是工業(yè)設(shè)備升級(jí)還是消費(fèi)電子量產(chǎn),均能快速實(shí)現(xiàn)平滑過(guò)渡
    發(fā)表于 08-08 17:48

    鴻蒙5開發(fā)寶藏案例分享---體驗(yàn)流暢的首頁(yè)信息流

    ?** 鴻蒙新聞?lì)愂醉?yè)開發(fā)全攻略:流暢動(dòng)效+懶加載實(shí)戰(zhàn)** Hey 各位鴻蒙開發(fā)者! 今天要分享一個(gè)超實(shí)用的鴻蒙新聞?lì)愂醉?yè)開發(fā)方案,官方文檔里藏著的寶藏案例被我挖出來(lái)了!從流暢的Tab切換
    發(fā)表于 06-12 11:42

    鴻蒙5開發(fā)寶藏案例分享---在線短視頻流暢切換

    的優(yōu)化方案躺在那兒,從短視頻秒切到金融App防崩潰,連代碼都給你打包好了!**最離譜的是,這么硬核的案例庫(kù)居然沒幾個(gè)人知道? 今天必須當(dāng)回課代表,把壓箱底的黑科技掏出來(lái),尤其那個(gè)讓短視頻切換如德芙般絲滑
    發(fā)表于 06-12 11:31