Vue中使用vue-3d-model實現加載3D模型預覽展示

場景

要實現在頁面中簡單快速的加載3D模型用于產品展示。

實現效果如下:

注:

博客:
霸道流氓氣質-CSDN博客

實現

3D模型技術方案對比

這里用于快速展示簡單3d模型。

3D模型文件下載

可下載的網站較多,比如:

Sketchfab - The best 3D viewer on the web

3D Models for Free - Free3D.com

這里去free3d進行模型文件下載

這里下載obj和mtl格式的。

下載之后將其放在項目的public/models/demo目錄下

加載模型顯示

安裝依賴

npm install vue-3d-model --save

新建頁面,修改代碼

<template><el-dialog :visible.sync="visible"? :title="title" style="height: 500px;"><!-- 3D模型區 --><div class="model-part"><model-objref="modelViewer":src="modelPath":mtl="mtlPath":rotation="modelRotation":scale="modelScale"backgroundColor="#050a30"@on-load="handleModelLoad"@on-error="handleModelError"class="model-container"></model-obj></div></el-dialog>
</template><script>
import { ModelObj } from 'vue-3d-model';export default {components: { ModelObj },data() {return {visible: true,title: '標題',// 模型配置// 確保路徑指向正確的模型文件modelPath: process.env.BASE_URL? + 'models/demo/aa.obj?t='? + Date.now(),mtlPath: process.env.BASE_URL? + 'models/demo/aa.mtl?t='? + Date.now(),modelRotation: {x: -0.3,y: 0.5,z: 0},modelScale: { x: 0.8, y: 0.8, z: 0.8 }, // 統一縮放比例loadFailed: false}},// 在mounted中添加驗證代碼mounted() {fetch(this.modelPath).then(res => res.text()).then(text => {console.log(' 文件頭信息:', text.substring(0,? 50));console.assert(!text.includes('<!DOCTYPE? html>'), '錯誤:加載到HTML文件而非OBJ模型');});},methods: {handleModelLoad() {console.log('3D 模型加載完成');// 可添加模型加載成功后的回調邏輯},handleModelError(error) {console.error(' 模型加載失敗:', error);this.loadFailed? = true;}}
}
</script><style scoped>
/* 模型容器樣式 */
.model-container {position: relative;width: 100%;height: 100%;min-height: 300px;
}/* 備用加載樣式 */
.model-fallback {text-align: center;padding-top: 30%;color: rgba(255, 255, 255, 0.5);
}
.model-fallback i {font-size: 40px;display: block;margin-bottom: 10px;
}</style>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91698.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GaussDB join 連接的用法

1 join 連接的作用join 連接用于把來自兩個或多個表的行結合起來&#xff0c;基于這些表之間的共同字段。 最常見的 join 類型&#xff1a;inner join&#xff08;簡單的 join&#xff09;。 inner join 從多個表中返回滿足 join條件的所有行。2 示例數據讓我們看看選自 "…

GitHub開源輕量級語音模型 Vui:重塑邊緣智能語音交互的未來

前言 今天將深入解析一款顛覆性開源語音模型——Vui&#xff08;來自 Fluxions-AI 項目&#xff09;。它正以“輕量化”為矛&#xff0c;刺破傳統語音模型高耗能的壁壘&#xff0c;讓智能語音無處不在。 GitHub&#xff1a;https://github.com/fluxions-ai/vuihuggingface&am…

用aws下載NOAA的MB文件

安裝aws下載某航次MB文件 安裝aws curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install下載對應航次數據 aws s3 cp s3://noaa-wcsd-pds/data/raw/Atlantis/AT26-09 /home/xxx/…

Kubernetes (k8s)、Rancher 和 Podman 的異同點分析

1. Kubernetes (k8s) 類型&#xff1a;容器編排系統。功能&#xff1a; 自動化部署、擴展和管理容器化應用。支持跨多臺主機的容器編排。提供服務發現、負載均衡、滾動更新等功能。 架構&#xff1a;基于 Master-Node 架構&#xff0c;Master 負責調度和管理&#xff0c;Node 運…

71 模塊編程之新增一個字符設備

前言這個 主要是 最開始的時候了解驅動的時候, 看到的一系列的 case, 這里 來大致剖析一下 相關的道理這些模塊 是怎么和內核交互的, 內核的這些業務是怎么實現的 這里主要是一個模塊來注冊了一個字符設備 然后這個字符設備 可讀可寫, 基于的是分配的一段空間 測試用例測試模塊…

小眾創新方向!多傳感器融合與視覺慣性導航,定位精度和效率大幅提升!

多傳感器融合與視覺慣性導航技術&#xff08;VINS&#xff09;取得了顯著進展。近期&#xff0c;研究人員通過優化視覺與慣性傳感器數據的融合算法、引入深度學習技術以及改進系統架構&#xff0c;顯著提升了VINS在復雜環境下的定位精度和魯棒性。基于深度學習的特征提取方法能…

超簡單linux上部署Apache

1.Apache是什么&#xff1f;Apache 是世界上最流行的 ??開源Web服務器軟件??&#xff0c;由 Apache 軟件基金會維護。??主要功能??&#xff1a;接收客戶端&#xff08;如瀏覽器&#xff09;的HTTP請求&#xff0c;返回網頁、圖片等靜態/動態資源。??特點??&#xf…

前端 SSE 實戰應用:用最簡單的方式實現實時推送

前端 SSE 實戰應用&#xff1a;用最簡單的方式實現實時推送 &#x1f4cc; 點贊收藏關注不迷路&#xff01; 在前端項目中&#xff0c;我們常聽到“實時通信”這個需求 —— 聊天、進度、狀態變化、系統消息。 但提到實時&#xff0c;大家首先想到的是 WebSocket&#xff0c;對…

第16章 基于AB實驗的增長實踐——驗證想法:AB實驗實踐

?一、AB實驗全流程框架?實驗分為5個核心環節&#xff1a;實驗假設? → 實驗設計? →實驗運行? → 實驗分析? → 實驗決策??二、各環節核心要點詳解??1. 實驗假設??原則?&#xff1a;目標性、可歸因、可復用&#xff08;前兩者必選&#xff09;?&#xff08;1&…

解決【軟件安裝路徑】失敗的方法

出現問題上圖所示問題為&#xff1a;你的臨時目錄路徑中包含 Unicode 字符&#xff0c;這可能會導致安裝損壞。請參閱故障排除指南以獲取解決方法。出現問題的原因&#xff1a;添加路徑下存在中文&#xff0c;導致系統文件無法識別。解決方法步驟一&#xff1a;創建Temp(臨時文…

FreeRTOS學習筆記——總覽

考慮到RTOS能夠提升單片機開發能力&#xff0c;也是開發復雜任務的必經之路&#xff0c;還是有必要學習的。 FreeRTOS教程多&#xff0c;免費開源&#xff0c;是個不錯的選擇。后續可以考慮繼續學習RT-Thread等。 參考1&#xff1a;FreeRTOS(教程非常詳細&#xff09;——作者&…

Clip微調系列:《coOp: learning to prompt for vision-language models》

論文鏈接&#xff1a;arxiv.org/pdf/2109.01134v1 推薦視頻(clip_coop的代碼邏輯講解&#xff0c;代碼簡單&#xff0c;有助于理解)&#xff1a;CLIP和CoOp工作的簡單Pytorch復現和理解_嗶哩嗶哩_bilibili 其他參考鏈接&#xff1a;CoOp - CLIP 自適應Prompt工程 【一】_coop…

[論文閱讀] 人工智能 + 軟件工程 | 開源軟件中的GenAI自白:開發者如何用、項目如何管、代碼質量受何影響?

開源軟件中的GenAI自白&#xff1a;開發者如何用、項目如何管、代碼質量受何影響&#xff1f; 論文&#xff1a;Self-Admitted GenAI Usage in Open-Source SoftwarearXiv:2507.10422 Self-Admitted GenAI Usage in Open-Source Software Tao Xiao, Youmei Fan, Fabio Calefato…

AI繪畫版權問題全解析:你的作品真的屬于你嗎?

AI繪畫版權問題全解析:你的作品真的屬于你嗎? 關鍵詞:AI繪畫、版權歸屬、生成式AI、訓練數據、獨創性、法律合規、知識產權 摘要:當你用MidJourney生成一張“賽博朋克風格的熊貓”,或用Stable Diffusion畫出“梵高筆觸的星空咖啡館”時,你是否想過:這張圖的版權屬于你、…

深入理解Linux文件I/O:系統調用與標志位應用

目錄 一、引入 二、標志位 1、什么是標志位&#xff1f; 2、標志位傳遞示例 輸出結果分析 關鍵點解釋 三、文件描述符(File Descriptor)&#xff08;先大概了解&#xff09; 四、接口介紹&#xff1a;open()函數 1、命令查看 2、頭文件 3、函數原型 4、參數說明 …

海康線掃相機通過采集卡的取圖設置

目錄 1、掃描高度小于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置項 1.2 硬觸發 1、采集卡設置項 2、相機設置項 2、掃描高度大于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置 1.2 硬觸發 1、采集卡設置項 2、相機設置 2.1 幀掃描 2.2 行掃描 3、注意…

InfluxDB 3與Apache Parquet:打造高性能時序數據存儲與分析解決方案

在當今數據驅動的時代&#xff0c;各行業產生的數據量呈爆炸式增長&#xff0c;如何高效存儲和管理海量數據成為企業和開發者面臨的重大挑戰。對于時序數據而言&#xff0c;其具有數據量大、寫入頻繁、查詢模式多樣等特點&#xff0c;對存儲系統的性能和效率提出了更高的要求。…

20250718-4-Kubernetes 應用程序生命周期管理-Pod對象:實現機制_筆記

一、Pod對象&#xfeff;&#xfeff;1. 資源共享實現機制1&#xff09;共享網絡&#xfeff;基本概念實現方式&#xff1a;通過將業務容器網絡加入到負責網絡的容器&#xff08;infra container&#xff09;實現網絡共享核心特點&#xff1a;共享網絡協議棧&#xff08;包括TC…

防爆手機是什么?能用普通手機改裝嗎?

在石油開采平臺的井架之上&#xff0c;在化工車間的反應釜旁&#xff0c;在煤礦深達千米的巷道中&#xff0c;一群特殊的工作人員正使用著看似普通的通訊設備。這些設備外殼上醒目的Ex防爆認證標志&#xff0c;揭示著其與眾不同的身份——防爆手機。這類專為易燃易爆環境設計的…

gem install報錯解析

報錯內容 [rootlocalhost ~]# gem install bundler Fetching: bundler-2.6.9.gem (100%) ERROR: Error installing bundler:bundler requires Ruby version > 3.1.0. The current ruby version is 2.5.0.解決方案&#xff08;任選其一&#xff09; 這個錯誤表明你當前的 Ru…