AR.jsやMindARでWebARを簡単に実現できます
作成したWebAR上の任意の画像をクリックし、動画再生を行うことも可能です
動画再生は、動画そのものがクリック出来ないため、動画にサムネイル画像を重ね、サムネイル画像のクリックにより、javascriptsを起動させサムネイル画像を非表示とし、その下の動画を再生表示するという流れです
<script>
AFRAME.registerComponent("click1", {
init: function () {
const video = document.getElementById("video");
const arVideo = document.getElementById("arVideo");
const thumbnailImg = document.getElementById("thumbnailImg");
let is_playing = false;
this.el.addEventListener("click", () => {
console.log("click1");
if (!is_playing) {
thumbnailImg.setAttribute("visible", false);
arVideo.setAttribute("visible", true);
video.play();
is_playing = true;
} else {
video.pause();
is_playing = false;
}
});
},
});
</script>
サムネイルや動画を<a-assets>で準備し、配置します
<a-assets>
<image
crossorigin="anonymous"
id="thumbnail1"
src="https://cdn.glitch.global/a575940f-5bb4-4d84-b1ec-39de683638f7/11omote_start.jpeg?v=1728086615601"
></image>
<video
crossorigin="anonymous"
id="video"
src="https://cdn.glitch.global/cbf17ad1-1348-4ae7-b9c3-7207634324f5/2024meishi.mp4?v=1703162875641"
></video>
<a-entity mindar-image-target="targetIndex: 0">
<a-video
id="arVideo"
src="#video"
width="1.8"
height="0.9"
position="0 0 0"
rotation="0 0 0"
></a-video>
<a-image
click1
class="clickable"
id="thumbnailImg"
src="#thumbnail1"
width="1.8"
height="0.9"
position="0 0 0"
rotation="0 0 0"
></a-image>
なお、画像クリックには、以下の定義が不可欠です
<a-camera
position="0 0 0"
look-controls="enabled: false"
cursor="fuse: false; rayOrigin: mouse;"
raycaster="near: 10; far: 10000; objects: .clickable"
></a-camera>
これでサムネイル画像をクリックすると動画を再生することが可能となります
加えて、MindARの利用でマルチターゲットに対応しています
なお、以下のようなjavascriptsでも動画再生は可能ですが、この場合は、画像のクリックでの動画再生でなくWindowsクリックで再生となり、オブジェクトごとでの切り分けはできません
<script>
window.addEventListener("click", () => {
const video = document.getElementById("video");
const arVideo = document.getElementById("arVideo");
const thumbnailImg = document.getElementById("thumbnailImg");
thumbnailImg.setAttribute("visible", false);
arVideo.setAttribute("visible", true);
video.play();
});
</script>