Recommended
PPTX
HoloLens2とMeta QuestではじめるWebXR
PPTX
PDF
OpenCV/ARCore/Unityで作る塗り絵AR
PPTX
【準備編】OculusQuest/HoloLens2対応WebXR開発
PDF
A-Frameで始めるOculus Quest対応WebVR
PPTX
PPTX
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
PPTX
PDF
はじめようARCore: Motion Tracking & Image Tracking編
PDF
はじめようARCore:自己位置推定・平面検出・FaceTracking
PDF
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
PPTX
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
PDF
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
PDF
【Unity道場 2月】シェーダを書けるプログラマになろう
PDF
PDF
PDF
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
PDF
PDF
PDF
Immersal を活用した AR クラウドなシステム開発とハンズオン!
PDF
MRTK V2.3 Spatial Awareness
PPTX
Addressables で大量のリソース管理・困りどころと解消法
PPTX
PPTX
PPTX
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PPTX
PPTX
[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
PDF
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
More Related Content
PPTX
HoloLens2とMeta QuestではじめるWebXR
PPTX
PDF
OpenCV/ARCore/Unityで作る塗り絵AR
PPTX
【準備編】OculusQuest/HoloLens2対応WebXR開発
PDF
A-Frameで始めるOculus Quest対応WebVR
PPTX
PPTX
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
PPTX
What's hot
PDF
はじめようARCore: Motion Tracking & Image Tracking編
PDF
はじめようARCore:自己位置推定・平面検出・FaceTracking
PDF
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
PPTX
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
PDF
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
PDF
【Unity道場 2月】シェーダを書けるプログラマになろう
PDF
PDF
PDF
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
PDF
PDF
PDF
Immersal を活用した AR クラウドなシステム開発とハンズオン!
PDF
MRTK V2.3 Spatial Awareness
PPTX
Addressables で大量のリソース管理・困りどころと解消法
PPTX
PPTX
PPTX
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PPTX
Similar to A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
PPTX
[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
PDF
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
PDF
PDF
PPTX
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
PPTX
AI x WebAR! MediaPipeの顔認識を使ってみよう!
PPTX
OpenCVでつくろうARスタンプアプリ in 熊本
PPTX
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
PDF
PPTX
[Netlify版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
PDF
OpenCVとARCoreで作るスタンプAR in 宮崎
PPTX
PPTX
Unreal Engine でアプリ開発~ MRTK UXTools for Unreal V0.9.0 ~
PDF
Flashup13 Basic Training of Flare3D
PDF
WebXR Hand Input (ハンド トラッキング) 入門
PDF
PPTX
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
PPTX
エンジニアカフェ1周年イベント:WebAR/VR開発入門
PPTX
OSC2020 Fukuoka: インストールいらず、WebAR入門
PDF
Flashup 12 Basic Training of Away3D
More from Takashi Yoshinaga
PPTX
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
PPTX
AI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
PPTX
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
PPTX
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
PPTX
iPad LiDARでエンジニアカフェを3Dスキャン
PPTX
Voxon Photonics VX1で遊んでみた
PPTX
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
PPTX
PPTX
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
PPTX
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
PPTX
PPTX
Spatial Copy & Paste @HoloLensゆるっとLT会
PPTX
PPTX
PPTX
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
Recently uploaded
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026
PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 必要なもの
Webブラウザ → コンテンツの体験や動作確認
テキストエディタ → HTMLやjavascriptの記述
Webサーバー → コンテンツの公開
サーバーに関して今回は・・・
Glitchを利用 https://glitch.com/
FacebookかGitHubのアカウントがあればOK
サーバーとエディタの両方を無料で提供
この資料ではGlitch使用を前提に説明します
11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. テンプレートの確認
<script>
window.onload = function() {
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
//右手の初期化を行う関数
function initRightHand(){
};
//左手の初期化を行う関数
function initLeftHand(){
};
</script>
読み込みが終わったら
自動的に実行される
右手の挙動を記述
するために用意した関数
左手の挙動を記述
するために用意した関数
28. 29. 30. 31. 手のオブジェクトを表示
<a-scene background="color: #ECECEC">
<a-box position="0 1.5 -2" scale="0.5 0.5 0.5" rotation="0 45 0"
color="#4CC3D9" shadow></a-box>
<!--左手の描画-->
<a-entity id="leftHand"
hand-tracking-controls="hand: left; modelStyle: dots;"></a-entity>
<!--右手の描画-->
<a-entity id="rightHand"
hand-tracking-controls="hand: right; modelStyle: dots;"></a-entity>
</a-scene>
【hand-tracking-controlsの詳細]】
hand: left または right
modelStyle: mesh または dots
(meshはうまく働かず)
modelColor: 手のモデルの色
(今回はデフォルト色) Lesson02
32. 33. 34. 35. 36. 37. 38. javascriptで手の情報を使用する準備
var scene; //描画する3D空間
var rightHand; //右手の情報を保持する変数
var leftHand; //左手の情報を保持する変数
window.onload = function() {
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
//右手の初期化を行う関数
function initRightHand(){
};
//左手の初期化を行う関数
function initLeftHand(){
}; Lesson03
39. javascriptで3D空間を操作する準備
var scene; //描画する3D空間
var rightHand; //右手
var leftHand; //左手
window.onload = function() {
//3D空間を変数として保持
scene = document.querySelector('a-scene');
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
//右手の初期化を行う関数
function initRightHand(){
};
//左手の初期化を行う関数
function initLeftHand(){ }; Lesson04
40. 41. 42. 右手の操作で空間にオブジェクトを生成
var scene; //描画する3D空間
var rightHand; //右手
var leftHand; //左手
window.onload = function() {
//3D空間を変数として保持
scene = document.querySelector('a-scene');
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
//右手の初期化を行う関数
function initRightHand(){
};
//左手の初期化を行う関数
function initLeftHand(){ };
ここを編集
43. 44. 45. ピンチ開始の取得
function initRightHand(){
//右手のオブジェクト(id=rightHand)を取得
rightHand = document.getElementById("rightHand");
//ピンチ開始
rightHand.addEventListener('pinchstarted', function (e) {
var position = e.detail.position;
//BOX生成関数を呼び出す (次のページ以降で解説)
addBox(position);
});
//ピンチ終了
rightHand.addEventListener('pinchended', function (e) {
});
//ピンチしながら手を移動
rightHand.addEventListener('pinchmoved', function (e) {
});
}; Lesson06
46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 描画するBoxを間引く(1/6)
<script>
var scene; //描画する3D空間
var rightHand; //右手
var leftHand; //左手
var prev;//最後にBox置いた位置を記憶する変数
window.onload = function() {
//3D空間を変数として保持
scene = document.querySelector('a-scene');
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
//右手の初期化を行う関数
function initRightHand(){
/*以下省略*/
Lesson09
56. 57. 描画するBoxを間引く(3/6)
function addBox(position){
//a-boxという要素を作る
var box = document.createElement('a-box');
//位置や大きさ、色を設定
box.setAttribute('position', position);
box.setAttribute('scale', '0.02 0.02 0.02');
box.setAttribute('color', '#0062C6');
//あとで一括削除するためにクラス名設定
box.setAttribute('class', 'box');
//3次元空間にboxを追加
scene.appendChild(box);
//最後にBox置いた位置を記憶
prev=box.object3D.position;
}
Lesson09
58. 59. 60. 61. 62. 63. 64. 色を切り替える
var scene; //描画する3D空間
var rightHand; //右手
var leftHand; //左手
var prev;//最後にBox置いた位置を記憶
//Cubeに割り当てる色の配列
var colors = ['#0062C6', '#00AB00', '#FFCF00', '#7F00FF',
'#FFFFFF', '#FF2000', '#F52394', '#593110'];
//利用する色の番号
var index=0;
window.onload = function() {
//3D空間を変数として保持
scene = document.querySelector('a-scene');
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
}; Lesson11
65. 66. 色を切り替える
function initRightHand(){
//右手のオブジェクト(id=rightHand)を取得
rightHand = document.getElementById("rightHand");
//ピンチ開始
rightHand.addEventListener('pinchstarted', function (e) {
var position = e.detail.position;
//BOX生成関数を呼び出す
addBox(position);
});
//ピンチ終了
rightHand.addEventListener('pinchended', function (e) {
//色の番号を加算して、あとでboxの色に反映
index++;
index%=colors.length;
}); Lesson12
67. 色を切り替える
window.onload = function() {
/*省略*/
};
//右手の初期化を行う関数
function initRightHand(){
/*省略*/
};
//左手の初期化を行う関数
function initLeftHand(){
};
//Boxの追加を行う関数
function addBox(position){
}
ここを編集
68. 色を切り替える
function addBox(position){
//a-boxという要素を作る
var box = document.createElement('a-box');
//位置や大きさ、色を設定
box.setAttribute('position', position);
box.setAttribute('scale', '0.02 0.02 0.02’);
box.setAttribute('color', '#0062C6');
box.setAttribute('color', colors[index]);
//あとで一括削除するためにクラス名設定
box.setAttribute('class', 'box');
//3次元空間にboxを追加
scene.appendChild(box);
//最後にBox置いた位置を記憶
prev=box.object3D.position;
} Lesson13
box.setAttribute('color', '#0062C6');
69. 70. 71. 72. 73. 描画したBoxを削除
function initLeftHand(){
//左手のオブジェクトを取得
leftHand = document.getElementById("leftHand");
//ピンチ開始時の挙動
leftHand.addEventListener('pinchstarted', function (e) {
//boxクラスが割り当てられているオブジェクトを全て取得
var els = document.querySelectorAll('.box’);
//一つ一つ削除していく
for (var i = 0; i < els.length; i++) {
els[i].parentNode.removeChild(els[i]);
}
});
};
Lesson14
74. 75. 76. 77. 78. 79. 指の先の位置を取得する方法
<a-scene background="color: #ECECEC">
<a-box position="0 1.5 -2" scale="0.5 0.5 0.5"
rotation="0 45 0" color="#4CC3D9" shadow></a-box>
<a-entity id="leftHand" hand-tracking-controls="hand: left;
modelStyle: dots;"></a-entity>
<a-entity id="rightHand" hand-tracking-controls="hand: right;
modelStyle: dots;"></a-entity>
<!--指先に表示する球-->
<a-sphere id="tip" position="0 0 0" radius="0.015"
color="#0062C6"></a-sphere>
</a-scene>
Lesson15
80. 81. 指の先の位置を取得する方法
//Cubeに割り当てる色の配列
var colors = ['#0062C6', '#00AB00', '#FFCF00', '#7F00FF',
'#FFFFFF', '#FF2000', '#F52394', '#593110'];
//利用する色の番号
var index=0;
//指の先端を表す球
var tip;
window.onload = function() {
//3D空間を変数として保持
scene = document.querySelector('a-scene');
//指先の位置を表す球を取得
tip = document.getElementById("tip");
initRightHand(); //右手の初期化
initLeftHand(); //左手の初期化
};
Lesson16
82. 83. 84. 指の先の位置を取得する方法
window.onload = function() {
/*省略*/
};
function initRightHand(){
/*省略(右手の初期化を行う関数)*/
};
function initLeftHand(){
/*省略(左手の初期化を行う関数)*/
};
function addBox(position){
/*省略(Boxの追加を行う関数)*/
}
ここに指の位置追跡の
関数を追加
85. 86. 87. 88.