伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HT 流暢過渡動畫 × 場景切換實現方案

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

掃碼添加小助手

加入工程師交流群

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

wKgZO2i35PCAToFmAAei5wYc7Ok341.png

場景 / 圖紙核心切換步驟

圖撲 HT 項目中,實現圖紙或場景的無縫切換需嚴格遵循以下關鍵步驟,以避免潛在問題并確保切換過程穩定可靠:

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

注意:不建議通過創建多個 ht.graph3d.GraphView 進行切換。

原因在于 ht.graph3d.GraphView 是基于 WebGL 的 3D 渲染組件。而多數瀏覽器對單個頁面可運行的 WebGL 上下文數量有嚴格限制。頻繁創建新實例會導致內存泄漏或資源耗盡,引發場景顯示異常甚至瀏覽器崩潰。

場景切換過渡效果

為了在場景切換時獲得更流暢、更具視覺吸引力的體驗,可以添加過渡動畫。常見的實現思路有兩種:

利用場景屬性實現過渡

通過控制場景的特定屬性,在切換過程中產生動態過渡效果,常見的有景深動畫和亮度調節等。

景深動畫過渡

景深效果主要通過以下兩個屬性控制:

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

實現步驟

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

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) => {
        // 動態設置景深閾值
        dof.aperture = v * 0.2
        }
}
ht.Default.startAnim(anim);

新場景反序列化后,新場景也需要執行景深動畫。這時執行的景深動畫跟舊場景的景深動畫區別在于 action 中的邏輯是遞減的過程:dof.aperture =0.2-v*0.2。

wKgZO2i35PKAceGLAD-0Ceg3Sls538.gifwKgZPGi35PSAUHcdADxyVBw7d1Y445.gif

其他屬性過渡效果

除景深外,還可通過調節亮度等場景屬性實現過渡,原理與景深動畫一致:

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

利用 2D 圖紙動畫實現過渡

通過在 3D 場景上層疊加 2D 圖紙,利用 2D 元素的動畫效果遮蔽切換過程,創意自由度更高,為整體呈現帶來了更多的藝術動感和技術深度。

幀動畫過渡(云朵過渡)

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

wKgZO2i35PaAdj9RADoYPHHgvtI927.gif

實現步驟

  1. 準備一組連續的過渡圖片(如從透明到完全遮蔽再到透明的云朵圖片序列);
  2. 舊場景切換前,執行動畫使圖片從初始狀態過渡到完全遮蔽場景;
  3. 新場景加載后,執行反向動畫使圖片從完全遮蔽過渡到消失。

代碼示例

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]);
    }
})

在新舊場景內執行的動畫代碼基本一樣,區別在于切換前 action 中是從第一張圖片切換到最后一張,在新場景反序列化后是從最后一張切換回第一張。

其他創意效果

利用 2D 覆蓋層進行過渡的核心優勢在于創意自由度極高。開發者可以結合 HT 強大的 2D 動畫能力,對覆蓋元素應用多種屬性動畫組合:

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

2D 圖紙間切換過渡

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

利用縮略圖過渡

在圖紙切換前動態生成縮略圖并施加動畫,實現平滑過渡的效果,具體的實現步驟:

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

■創建過渡節點:

生成與圖紙視圖窗口尺寸相同的節點。

將縮略圖設置為該節點的內容。

■應用動畫效果:在動畫中調整縮略圖節點的裁切、透明等屬性,以達到過渡效果。

wKgZO2i35PqAIjgNAC9NdSOOBF8233.gif

代碼示例

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


     const thumbnail = gv.toDataURL(null, null, 1, 0); // 生成縮略圖
}
functioncreateThumbnailData(thumbnail){
     const thumbnail_data = new ht.Node(); // 生成縮略圖節點
     thumbnail_data.setImage(thumbnail);
     const contentRect = gv.getContentRect(); // 獲取所有圖元占用的矩形區域
     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 }) // 為縮略圖節點設置位置
     thumbnail_data.setSize({ width, height });// 為縮略圖節點設置尺寸
     thumbnail_data.setScale(contentRect.width / width, contentRect.height / height);// 為縮略圖節點設置縮放
     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); // 開啟吸附裁切后,縮略圖節點會根據吸附的節點進行裁切


     ht.Default.startAnim({
        duration: 2000,
        easing: function (t) { return t; },
        finishFunc: function () {
              dm.remove(thumbnail_data); // 動畫結束后移除縮略圖節點
        },
        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'){ // 點擊按鈕切換圖紙
        const thumbnail = generateThumbnail(); // 生成縮略圖
        ....
        createThumbnailData(thumbnail); // 生成縮略圖節點
        ...
      }
    }
})

在圖撲軟件 HT 項目中實現場景/圖紙切換,關鍵在于遵循 dataModel.clear() + view.deserialize() 的核心步驟,并避免重復創建 ht.graph3d.GraphView 實例。

為了提升用戶體驗,添加過渡效果是重要環節。無論是通過動態調整場景后處理屬性(如景深、亮度)還是利用精心設計的 2D 圖紙動畫(如幀序列),本質上都是對 HT 引擎靈活性和設計者創意的結合應用。不僅優化了技術流程,更能創造出引人入勝的視覺表現,是當前 Web 可視化項目中的重要實踐。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HT
    HT
    +關注

    關注

    0

    文章

    48

    瀏覽量

    30938
  • 可視化
    +關注

    關注

    1

    文章

    1362

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    2026年4大KVM切換方案深度解析:從技術到場景的實用選型指南

    4K/8K超清普及、多設備協同需求激增的當下,KVM切換器早已從“辦公工具”升級為“高清場景核心樞紐”——無論是企業會議室的多電腦管控、專業創作者的跨設備協作,還是家庭影院的超清信號切換,都需要穩定
    的頭像 發表于 03-31 16:35 ?120次閱讀

    RGBWY方案電源管理:多供電模式如何實現智能、無縫切換

    在這類多電源混合使用場景中常顯不足:電源切換時燈光易出現閃爍甚至中斷現象,供電效率偏低,且系統無法自動篩選最優電源,進而影響使用體驗與燈光呈現效果。 理想的多電源管理,應具備自動識別、智能擇優、無縫過渡的核心能力。但傳統
    的頭像 發表于 03-25 14:15 ?895次閱讀
    RGBWY<b class='flag-5'>方案</b>電源管理:多供電模式如何<b class='flag-5'>實現</b>智能、無縫<b class='flag-5'>切換</b>

    HT for Web 幀動畫 | 3D 動態渲染設計與實現

    動畫憑借靈活的序列幀設計與精準時序控制,成為圖撲軟件 HT 可視化項目的核心視覺能力。結合完善的動畫體系與性能優化方案,可打造高沉浸、高真實感的數字孿生
    的頭像 發表于 03-24 11:05 ?162次閱讀
    <b class='flag-5'>HT</b> for Web 幀<b class='flag-5'>動畫</b> | 3D 動態渲染設計與<b class='flag-5'>實現</b>

    HT7180高功率異步升壓轉換器:便攜式系統的高效電源解決方案

    、移動電源、Type-C 供電等場景的核心供電方案,為各類便攜設備注入強勁且穩定的電力 HT7180 性能硬核,適配性拉滿:擁有 2.7V-12V 寬輸入電壓范圍,完美支持單節、兩節鋰電池供電
    發表于 03-14 11:18

    雙電源冗余供電的靜態切換方案有哪些優缺點?

    靜態切換(STS,Static Transfer Switch)是雙電源冗余供電的高端方案,核心基于晶閘管(SCR)、IGBT 等無機械觸點半導體開關實現電源切換,廣泛應用于對
    的頭像 發表于 02-25 17:20 ?1286次閱讀

    圖撲 HT 數字孿生地鐵站功能實現解析

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

    變頻器的多段速切換時,如何做到平穩過渡

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

    圖撲軟件 3D 場景預加載應用實現

    應用中,資源預加載尤為重要,可有效解決首次加載時的卡頓、白屏及交互延遲等問題。 預加載實現方案 01 基礎實現原理 HT for Web 中所有資源的請求都會經過
    的頭像 發表于 12-01 16:04 ?865次閱讀
    圖撲軟件 3D <b class='flag-5'>場景</b>預加載應用<b class='flag-5'>實現</b>

    HT7180單串多串鋰電池升壓方案2.7V-12V電壓10A電流禾潤電子一級代理聚能芯半導體原廠技術支持

    在智能硬件、便攜設備迭代加速的當下,電源方案的適配性、動力性與安全性成為產品競爭力的核心。禾潤 HT7180 寬壓升壓芯片橫空出世,以四大核心優勢打破行業瓶頸,為多場景設備提供高效穩定的電源解決
    發表于 11-19 18:02

    禾潤電子HT0104:4 路雙向電平轉換的高效解決方案聚能芯半導體一級代理原廠技術支持

    中尤為重要。 從物聯網設備的跨模塊通信,到工業總線的電平匹配,再到消費電子的多電壓域交互,HT0104 以其寬兼容、高可靠、易集成的優勢,完美適配各類應用場景。無需復雜外圍電路,即可實現穩定的跨電壓域
    發表于 11-13 17:21

    智能顯示模塊可以播放動畫嗎?動畫功能怎么實現,在哪可以添加?

    智能顯示模塊可以播放動畫嗎?動畫功能怎么實現,在哪可以添加?
    發表于 11-08 08:57

    分享---儲能UI界面能量流動動畫實現方法

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

    禾潤 HT0104MTNR:TXB0104PWR/TXS0104EPWR/RSO1O4YQ 的完美替代方案,重新定義電平轉換價值

    TXB0104PWR 的 VCCA、VCCB、A/B 端口及 OE 控制邏輯。這意味著無需修改 PCB 布局,即可直接替換現有方案,顯著降低開發成本與時間風險。無論是工業設備升級還是消費電子量產,均能快速實現平滑過渡
    發表于 08-08 17:48

    鴻蒙5開發寶藏案例分享---體驗流暢的首頁信息流

    ?** 鴻蒙新聞類首頁開發全攻略:流暢動效+懶加載實戰** Hey 各位鴻蒙開發者! 今天要分享一個超實用的鴻蒙新聞類首頁開發方案,官方文檔里藏著的寶藏案例被我挖出來了!從流暢的Tab切換
    發表于 06-12 11:42

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

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