HTMLだけでAR機能をつくってみよう!【QRコードベース】

目次

はじめに

スマホやタブレットのカメラでQRコードをかざすと、Webブラウザ上に3Dモデルが浮かび上がるAR(拡張現実)の仕組みを、HTMLファイルだけで手軽に実装できます。
本記事では、無料ライブラリ「A-Frame」と「AR.js」を使い、ローカル構築から動作確認までをステップバイステップで解説します。
初心者の方でも迷わないよう、ファイルごとに何を表すか、どんな役割があるかを詳しく説明しています。

用意するもの

  1. Webブラウザ(Chrome推奨):AR機能が動作する最新バージョンのブラウザ
  2. ネットワークカメラ(PC内蔵/USB接続カメラ):QRコードを読み取る撮影デバイス
  3. QRコード画像:任意のURLを埋め込んだQRコード。後述のマーカー変換で使います
  4. AR.jsマーカー定義ファイル(qr-code.patt):QRコードをマーカーとして認識させるためのパターンファイル
  5. HTMLファイル(index.html):ARシーンを構築するメインファイル
  6. 3Dモデルファイル(CDN経由URL or ローカルファイル):表示する3Dオブジェクト(CDN利用で手軽に呼び出し可能)

手順概要

  1. QRコードを生成し、.pattファイルに変換
  2. XAMPPでローカルサーバーを起動
  3. プロジェクトフォルダに必要ファイルを配置
  4. HTMLファイル(index.html)の内容を確認・設置
  5. 各ファイルの役割とポイント解説
  6. 実機で動作確認

1. QRコード→.pattファイルの作成

1-1. QRコード生成

  • Web上の「QRコード生成ツール」(例:QRのススメ、QRコード.jpなど)で任意のURLをコード化
  • 出力されたPNG/JPGを qr-code.jpg として保存
  • このファイルの役割:後でマーカー用データに変換する元画像として使います。

1-2. マーカートレーニング

Marker Training Tool使用方法

STEP
画像をアップロード
STEP
「DOWNLOAD MARKER」からマーカーを作成

2. 開発環境の準備(XAMPP)

初心者でも簡単に始められるXAMPPを例に解説します。

2-1. XAMPPのダウンロードとインストール

2-2. XAMPPの起動と設定

  1. XAMPPコントロールパネルを起動
  2. Apache を「Start」ボタンで起動
  3. ポート(デフォルト80)が競合する場合は、Confighttpd.conf を開き、Listen 80 を別ポートに変更

2-3. プロジェクトフォルダの配置

  1. C:\xampp\htdocs 内に arqr フォルダを作成
  2. 以下のようにファイルを配置:
  3. C:\xampp\htdocs\arqr\
    ├─ index.html ← ARシーン構築のメインHTML
    └─ qr-code.patt ← マーカー定義ファイル

index.html の役割:A-FrameとAR.jsを読み込み、マーカー検出および3Dモデル表示のロジックを記述します。

2-4. 動作確認

  • ブラウザで http://localhost/arqr/index.html にアクセス
  • カメラアクセス許可を与え、QRコードをかざして3Dモデルが表示されることを確認

3. index.html の設置と解説

下記のコードを index.html に貼り付けてください。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>QRコードARデモ</title>
  <!-- A-Frame と AR.js の読み込み -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.4.2/aframe.min.js"></script>
  <script src="https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar.js"></script>
</head>
<body style="margin: 0; overflow: hidden;">
  <a-scene embedded
           arjs="sourceType: webcam;
                 debugUIEnabled: false;
                 sourceParameters: {
                   video: {
                     width: { ideal: 4096, max: 4096 },
                     height: { ideal: 2160, max: 2160 },
                     facingMode: { ideal: 'environment' }
                   }
                 }">
    <!-- マーカー(qr-code.patt)検出エリア -->
    <a-marker type="pattern" url="qr-code.patt">
      <!-- 3Dモデル表示エンティティ -->
      <a-entity gltf-model="https://cdn.jsdelivr.net/gh/KhronosGroup/glTF-Sample-Models@master/2.0/Duck/glTF/Duck.gltf"
                scale="1 1 1"
                rotation="0 180 0">
      </a-entity>
    </a-marker>

    <!-- ARカメラエンティティ -->
    <a-entity camera></a-entity>
  </a-scene>
</body>
</html>

4. ファイルとコードの詳細解説

4-1. <head> 内のライブラリ読み込み

  • A-Frame:Web上で3Dシーンを簡単に作れるフレームワーク
  • AR.js:A-Frameと連携し、カメラ映像をARマーカーで拡張するプラグイン

4-2. <a-scene> の設定

  • embedded:既存のHTMLに埋め込むモード
  • arjs.sourceParameters.video:カメラ映像の解像度や背面カメラ指定
    • idealmax を設定し、可能な限り高画質でキャプチャを要求

4-3. マーカー検出部分 <a-marker>

  • type="pattern" / url="qr-code.patt":先ほど生成したパターンファイルを相対パスで指定
  • この領域でカメラ映像中のパターンを認識し、子要素を表示

4-4. 3Dモデル表示 <a-entity>

  • gltf-model="…Duck.gltf":CDN上のサンプル3Dモデルを指定
  • scale:モデルの大きさを調整。初期値 1 1 1(必要に応じて変更)
  • rotation:回転角度。0 180 0 はモデルを正面に向ける指定

4-5. カメラエンティティ <a-entity camera>

  • シーンに必ず1つ必要。AR.js側で自動的に映像を入力ソースとして設定

5. 実機での動作確認

  1. ブラウザで http://localhost/arqr/index.html を開く
  2. カメラアクセス許可ダイアログで「許可」を選択
  3. 背面カメラ(environment)に切り替わっていることを確認
  4. 印刷または画面表示したQRコードをかざす
  5. 3DモデルがQRの上に浮かび上がれば成功です!

実際の見た目

筆者はQRコードをA4用紙に印刷しました。ローカル環境の場合、PCにつなげたWEBカメラでQRコードを見ると、設定したオブジェクトが表示されます!(今回はフリー素材のアヒルを表示しています)

まとめ

本記事では、index.htmlqr-code.patt の2つのファイル構成で、QRコード読み取り型ARを実装する方法を解説しました。

  • HTMLファイル:ARシーンの骨組みとロジックを記述
  • .pattファイル:マーカー認識のパターンデータ

A-FrameとAR.jsを組み合わせるだけで、手軽にWebAR開発が可能です。ぜひ業務やイベント、ブログネタにも活用してみてください。

このブログ記事はお役に立てましたか?

よかったらシェアしてね!
  • URLをコピーしました!

このブログ記事を執筆したパソコン講師

HTML/CSS、PHPでWordPressを扱うことの多いITエンジニア駆け出しです。まだまだ勉強中のことも多いですが、頑張ります!

質問などあれば気軽に書き込んでくださいね♪

コメントする

目次