Three.js中AR實現詳解并詳細介紹基于圖像標記模式AR生成的詳細步驟

文檔地址

Three.js中AR實現詳解

以下是Three.js中實現AR功能的詳細解析,涵蓋技術原理、實現步驟、核心組件及優化策略:

🧩 一、技術基礎

AR.js框架的核心作用

AR.js是Three.js實現AR的基石,提供以下核心能力:

  • 多模式追蹤:支持圖像標記(Pattern Marker)自然特征(NFT)地理位置(Location Based)平面檢測(WebXR)。

  • 跨平臺性:基于WebGL和WebRTC,兼容iOS/Android/PC主流瀏覽器,無需安裝插件。

  • 輕量化:核心庫僅200KB(gzip壓縮),渲染效率達60fps。

Three.js與AR.js的協作關系

Three.js負責3D場景渲染,AR.js處理現實世界追蹤與虛擬對象對齊:
在這里插入圖片描述

?? 二、實現步驟詳解

步驟1:環境搭建

引入依賴庫

      <!-- 使用A-Frame簡化開發(推薦) --><script src="https://aframe.io/releases/1.4.0/aframe.min.js"></script><script src="https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar.js"></script><!-- 或Three.js原生集成 --><script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script><script src="https://raw.githack.com/AR-js-org/AR.js/master/three.js/build/ar.js"></script>

啟動本地服務器

   使用http-server避免跨域問題:npm install -g http-serverhttp-server -o

步驟2:標記生成與模型準備

創建圖像標記(.patt文件)

工具:https://jeromeetienne.github.io/AR.js/three.js/examples/marker-training/examples/generator.html

要求:正方形PNG(≥512×512),高對比度+非對稱圖案(示例:)

操作:上傳圖像 → 設置Pattern Ratio=0.7 → 下載.patt文件
準備3D模型

格式:GLTF(支持動畫/PBR材質)或OBJ

優化:面數≤10萬三角面,紋理≤2MB

工具:Blender建模或https://sketchfab.com/下載免費模型

步驟3:場景集成

方案A:A-Frame聲明式開發(快速入門)

<a-scene embedded arjs><a-marker type="pattern" url="assets/marker.patt"    <!-- 替換為你的.patt路徑 -->
<a-entity gltf-model="assets/model.glb" scale="0.5 0.5 0.5"position="0 0.5 0"       <!-- 模型懸浮高度 -->></a-entity></a-marker><a-entity camera></a-entity>
</a-scene>

方案B:Three.js編程式開發(靈活控制)

// 初始化場景
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.1, 100);
scene.add(camera);// 配置AR追蹤
const arToolkitContext = new THREEx.ArToolkitContext({cameraParametersUrl: 'https://raw.githubusercontent.com/AR-js-org/AR.js/master/data/data/camera_para.dat',detectionMode: 'mono'
});
arToolkitContext.init(() => camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix()));// 綁定標記與模型
const markerControls = new THREEx.ArMarkerControls(arToolkitContext, camera, {type: 'pattern',patternUrl: 'assets/marker.patt'
});
const model = await new GLTFLoader().loadAsync('assets/model.glb');
scene.add(model.scene);

步驟4:交互與動畫增強

模型動畫控制

     model.animations.forEach(clip => {const mixer = new THREE.AnimationMixer(model.scene);mixer.clipAction(clip).play();});用戶交互事件  // 點擊模型旋轉window.addEventListener('click', () => {raycaster.setFromCamera(mouse, camera);const intersects = raycaster.intersectObject(model.scene);if (intersects.length) model.scene.rotation.y += Math.PI/2;});

🚀 三、核心優化策略

在這里插入圖片描述

🌐 四、應用場景案例

  • 教育領域

生物課本疊加3D細胞模型(NFT自然特征追蹤)

  • 電商展示

-家具AR預覽(WebXR平面檢測 + 物理碰撞模擬)

  • 工業維修

設備拆解指引(多標記協同定位 + 交互動畫)

💎 總結

在這里插入圖片描述

完整項目示例參考:https://github.com/AR-js-org/AR.js 或 https://aframe.io/blog/webvr-ar-js/


在這里插入圖片描述

圖像標記模式patt文件生成詳解

以下是利用一張圖片生成 .patt 文件并關聯三維模型的完整步驟詳解,結合 AR.js 框架和 3D 模型處理技術實現:

🔧 一、原理簡述

.patt 是 AR.js 的圖像標記模式文件,通過識別物理圖像(如打印的標記圖)觸發 AR 內容。流程分三步:

  1. 圖像預處理 → 生成 .patt 文件
  2. 3D 模型準備 → 導出兼容格式(如 GLTF、OBJ)
  3. AR 場景集成 → 將模型綁定到標記

? 技術棧:AR.js(圖像識別) + Three.js(3D 渲染)

🖼? 二、詳細步驟

步驟 1:準備源圖像(生成 .patt 的關鍵)

在這里插入圖片描述

步驟 2:生成 .patt 文件

訪問在線工具:https://jeromeetienne.github.io/AR.js/three.js/examples/marker-training/examples/generator.html
在這里插入圖片描述

步驟 3:準備 3D 模型

模型來源(三選一):
自定義建模:
在這里插入圖片描述

步驟 4:集成到 AR.js 場景

<!DOCTYPE html>
<script src="https://aframe.io/releases/1.4.0/aframe.min.js"></script>
<script src="https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar.js"></script>
<body><a-scene embedded arjs="trackingMethod: best;"><!-- 綁定 .patt 文件 --><a-marker type="pattern" url="path/to/your-pattern.patt"  <!-- 替換為你的 .patt 路徑 -->
<!-- 關聯 3D 模型 --><a-entity gltf-model="path/to/model.glb" scale="0.5 0.5 0.5"position="0 0.5 0"  <!-- 模型懸浮高度 -->></a-entity></a-marker><a-entity camera></a-entity></a-scene>
</body>

?? 關鍵配置:

  • trackingMethod: best:自動選擇最佳追蹤模式(優先 WebXR)

  • 必須 HTTPS 環境(Chrome 要求攝像頭權限)

?? 三、調試與優化技巧

在這里插入圖片描述

高級功能擴展
  • 多標記互動:

    <a-marker type="pattern" url="marker1.patt">...</a-marker>
    

  • 事件交互(點擊模型觸發動畫):

      AFRAME.registerComponent('click-handler', {init: function () {this.el.addEventListener('click', () => {this.el.setAttribute('animation', 'property: rotation; to: 0 360 0; loop: true');});
});
  • 光照適配:

    <a-entity light="type: ambient; intensity: 0.8"></a-entity>
    

💎 四、工具與資源匯總
在這里插入圖片描述

🌟 最佳實踐:

  • 打印標記時使用 啞光材質紙張(減少反光干擾)

  • 復雜場景優先用 GLTF 格式(支持動畫、PBR材質)

  • 調試工具:Chrome 手機模擬器 + AR.js 控制臺日志

通過以上步驟,即可實現從圖片生成 .patt 到關聯 3D 模型的完整 AR 體驗。深入技術細節可參考
https://ar-js-org.github.io/AR.js-Docs/。

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

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

相關文章

Vue3.5 企業級管理系統實戰(二十三):權限指令

在實際應用場景中&#xff0c;常常需要依據用戶角色對按鈕的操作權限實施控制。實現這一控制主要有兩種方式&#xff1a;一種是借助前端指令基于角色進行權限管控&#xff0c;另一種是通過后臺返回對應的權限屬性來實現精細化控制。本文聚焦于前端權限指令展開探討。 1 權限指…

軟考 系統架構設計師系列知識點之雜項集萃(81)

接前一篇文章&#xff1a;軟考 系統架構設計師系列知識點之雜項集萃&#xff08;80&#xff09; 第145題 商業智能是企業對商業數據的搜集、管理和分析的系統過程&#xff0c;主要技術包括&#xff08;&#xff09;。 A. 數據倉庫、聯機分析和數據挖掘 B. 數據采集、數據清洗…

深入淺出Java ParallelStream:高效并行利器還是隱藏的陷阱?

在Java 8帶來的眾多革新中&#xff0c;Stream API徹底改變了我們對集合操作的方式。而其中最引人注目的特性之一便是parallelStream——它承諾只需簡單調用一個方法&#xff0c;就能讓數據處理任務自動并行化&#xff0c;充分利用多核CPU的優勢。但在美好承諾的背后&#xff0c…

SQL Transactions(事務)、隔離機制

目錄 Why Transactions? Example: Bad Interaction Transactions ACID Transactions COMMIT ROLLBACK How the Transaction Log Works How Data Is Stored Example: Interacting Processes Interleaving of Statements Example: Strange Interleaving Fixing the…

第R9周:阿爾茨海默病診斷(優化特征選擇版)

文章目錄 1. 導入數據2. 數據處理2.1 患病占比2.2 相關性分析2.3 年齡與患病探究 3. 特征選擇4. 構建數據集4.1 數據集劃分與標準化4.2 構建加載 5. 構建模型6. 模型訓練6.1 構建訓練函數6.2 構建測試函數6.3 設置超參數 7. 模型訓練8. 模型評估8.1 結果圖 8.2 混淆矩陣9. 總結…

OpenLayers 分屏對比(地圖聯動)

注&#xff1a;當前使用的是 ol 5.3.0 版本&#xff0c;天地圖使用的key請到天地圖官網申請&#xff0c;并替換為自己的key 地圖分屏對比在WebGIS開發中是很常見的功能&#xff0c;和卷簾圖層不一樣的是&#xff0c;分屏對比是在各個地圖中添加相同或者不同的圖層進行對比查看。…

【大模型】大模型數據訓練格式

1. SFT&#xff08;有監督微調&#xff09; 1.1 數據格式 JSONL&#xff08;每行一個 JSON 對象&#xff09;最為流行&#xff1b;也可用 CSV&#xff0f;TSV&#xff0c;但 JSONL 更靈活。字段設計 prompt&#xff1a;用戶輸入或任務指令&#xff08;通常以“系統指令&#…

[論文閱讀] 人工智能 | 利用負信號蒸餾:用REDI框架提升LLM推理能力

【論文速讀】利用負信號蒸餾&#xff1a;用REDI框架提升LLM推理能力 論文信息 arXiv:2505.24850 cs.LG cs.AI cs.CL Harnessing Negative Signals: Reinforcement Distillation from Teacher Data for LLM Reasoning Authors: Shuyao Xu, Cheng Peng, Jiangxuan Long, Weidi…

Cursor 1.0正式推出:全面解析你的AI 編程助手

目錄 前言 一、BugBot&#xff1a;你的私人代碼審查專家 二、Background Agent&#xff1a;7x24小時在線的云端開發伙伴 三、Jupyter Notebook 深度集成&#xff1a;數據科學家的福音 四、記憶功能 (Memories)&#xff1a;讓 AI 更懂你的項目 五、MCP 與工具生態&#xf…

QILSTE 精巧電子元件H4-108FO/5M解析

型號&#xff1a;H4-108FO/5M 在電子元件的浩瀚宇宙中&#xff0c;H4-108FO/5M 仿佛一顆散發著獨特光芒的恒星&#xff0c;其參數和特性交織成一張錯綜復雜的網絡&#xff0c;既令人困惑又充滿驚喜。這款型號的產品&#xff0c;以其 1.60.80.4mm 的微小尺寸&#xff0c;卻蘊含…

第2章_Excel_知識點筆記

Excel 知識點總結&#xff08;第2章&#xff09; 來自&#xff1a;第2章_Excel_知識點筆記&#xff0c;原筆記 基礎操作 狀態欄&#xff1a;快速查看計數/求和等數據&#xff08;右鍵可配置&#xff09;。篩選&#xff08;CtrlShiftL&#xff09;&#xff1a;按條件顯示數據…

【學習筆記】單例類模板

【學習筆記】單例類模板 一、單例類模板 以下為一個通用的單例模式框架&#xff0c;這種設計允許其他類通過繼承Singleton模板類來輕松實現單例模式&#xff0c;而無需為每個類重復編寫單例實現代碼。 // 命名空間&#xff08;Namespace&#xff09; 和 模板&#xff08;Tem…

yolo 訓練 中間可視化

yolo訓練前幾個batch&#xff0c;會可視化target: if plots and ni < 33:f save_dir / ftrain_batch{ni}.jpg # filenameplot_images(imgs, targets, paths, f, kpt_labelkpt_label)

【Linux】虛擬機代理,自動化腳本修改~/.bashrc

二選一執行 {echo ""echo "# Cla Verge代理設置 "echo "alias use-proxyexport http_proxy\"socks5h://192.168.88.1:7897\"; export https_proxy\"socks5h://192.168.88.1:7897\""echo "alias use-proxy-httpexport…

JavaScript 原型與原型鏈:深入理解 __proto__ 和 prototype 的由來與關系

引言 在 JavaScript 的世界中&#xff0c;原型和原型鏈是理解這門語言面向對象編程&#xff08;OOP&#xff09;機制的核心。不同于傳統的基于類的語言如 Java&#xff0c;JavaScript 采用了一種獨特的原型繼承機制。本文將深入探討 __proto__ 和 prototype 的由來、關系以及它…

Linux非管理員用戶安裝python環境

目錄 1. 下載2. 解壓3. 配置并指定安裝路徑&#xff08;本地用戶目錄&#xff09;4. 編譯&#xff08;不安裝系統目錄&#xff09;5. 安裝到本地用戶目錄6. 添加 Python 到環境變量7. 驗證安裝是否成功 1. 下載 版本根據需要自行指定 cd /tmp wget https://www.python.org/ft…

獵板PCB:建滔PCB板材怎么樣?

在電子元器件的精密世界中&#xff0c;PCB板材如同骨骼般支撐著整個產品的性能與壽命。面對市場上琳瑯滿目的品牌選擇&#xff0c;建滔積層板憑借三十余年技術沉淀&#xff0c;逐漸成為行業工程師與采購方口中的“品質代名詞”。今天&#xff0c;我們不談參數堆砌&#xff0c;只…

ONLYOFFICE協作空間3.1.1 企業版 介紹及部署說明:家庭云計算專家

ONLYOFFICE協作空間3.1企業版是一款專為深度集成需求設計的開源解決方案&#xff0c;其核心功能聚焦于安全性與靈活性。該版本支持私有化部署&#xff0c;允許企業將協作空間嵌入自有服務器并實現品牌定制化&#xff0c;滿足對數據主權和品牌一致性的嚴苛要求。 在安全方面&…

接IT方案編寫(PPT/WORD)、業務架構設計、投標任務

1、IT 方案編寫&#xff08;PPT/WORD&#xff09;? 定制化方案&#xff1a;根據客戶需求&#xff0c;提供涵蓋云計算、大數據、人工智能等前沿技術領域的 PPT/WORD 方案編寫服務&#xff0c;精準提煉核心價值&#xff0c;呈現專業技術內容。? 邏輯清晰架構&#xff1a;采用…

前端面試之變量與數據類型

目錄 一、聲明變量 &#xff08;1&#xff09;let &#xff08;2&#xff09;const &#xff08;3&#xff09;var var、let 和 const 的作用域差異 二、數據類型 &#xff08;1&#xff09;基本類型 undefined和null String 模板字符串拼接&#xff1a; number和b…