質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
A-Frame

A-Frameは、カスタムHTMLを用いてWebブラウザ上で動く3DとVRを作成できるオープンソースのフレームワーク。WebGLに関する知識がなくても簡単にVRのWebサイトを作成できます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

7978閲覧

AR.jsとA-frameを使ったWebARで、クロマキー処理動画を表示したい

mmttmot

総合スコア2

A-Frame

A-Frameは、カスタムHTMLを用いてWebブラウザ上で動く3DとVRを作成できるオープンソースのフレームワーク。WebGLに関する知識がなくても簡単にVRのWebサイトを作成できます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/06/03 09:14

AR.jsとA-frameを使ったWebARで、クロマキー処理動画を表示したい

発生している問題・エラーメッセージ

iPhone(ios13.4.1)で見るとマーカーの上に透過処理された静止状態の動画が表示されるが、タップして再生すると元々の動画(グリーンバックで作成した動画)が再生されてしまいます。原因がどこにあるかわかりません。ご教授お願い致します。

該当のソースコード 

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!-- A-Frame ライブラリの読み込み --> <script src='https://aframe.io/releases/1.0.4/aframe.min.js'></script> <!-- AR.js ライブラリの読み込み --> <script src='https://raw.githack.com/jeromeetienne/AR.js/2.0.8/aframe/build/aframe-ar.js'></script> <!-- AR.js クロマキーライブラリ --> <script src="https://unpkg.com/aframe-chromakey-material/dist/aframe-chromakey-material.min.js"></script> <link rel="stylesheet" href="./ypc/style.css"> <title>タイトル</title> </head> <body> <div class="arjs-loader"> <p>クリックして動画をみよう</p> </div>
<a-assets> <video id="touka" src="./XXX/chromakey.mp4" autoplay loop="true" muted="true">
</a-assets> <!-- デバッグ用の画面表示、VR用のボタンをそれぞれ非表示に --> <a-scene embedded arjs="debugUIEnabled:false;" vr-mode-ui="enabled: false"> <!-- 今回作成した『.patt』ファイルを読み込む -->

<a-marker type='pattern' url='./XXX/pattern.patt' registerevents>
<a-video class="touka" material="shader: chromakey; src: #touka; color: 0.1 0.9 0.2" width="2.6" height="1.4" position="0 0 0" rotation="270 0 0"></a-video>
</a-marker>
<a-entity camera></a-entity>
</a-scene>

<script> // var videoEl = document.querySelector('#touka');videoEl.play(); 'use strict';{ AFRAME.registerComponent('registerevents', { init: function () { let marker = this.el; marker.setAttribute('emitevents', 'true'); marker.addEventListener('markerFound', function () { let markerId = marker.id; console.log('markerFound', markerId); document.getElementById('touka').play(); }); // マーカーを見失ったイベントの登録 marker.addEventListener('markerLost', function () { let markerId = marker.id; console.log('markerLost', markerId); document.getElementById('touka').pause(); v.muted= true; }); } }); window.addEventListener('click', function () { let v = document.querySelector('#touka'); v.play(); }); } </script> </body> </html>

試したこと

android端末では正常にクロマキー処理された動画が見られます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

iOS における動画再生は何かと罠があり、一筋縄ではいかないことが多い印象です。
おそらくこうしたいのだろう、というデモを用意しました。

デモ

ソースコード
https://glitch.com/edit/#!/arjs-chromakey-sample?path=index.html%3A1%3A0

デモ用の動画は拾いものです。
video 要素の src 属性と、a-marker 要素の url 属性はそれぞれ書き換えてください。

iOS 13.5.1, iOS 14 Beta, Android 10 で動作を確認したデモ
https://arjs-chromakey-sample.glitch.me/

動作確認用のマーカー画像
動作確認用のマーカー画像

補足

このデモは https://ar-js-org.github.io/studio/ で作成した Marker-based のコードに、クロマキー処理を実現する aframe-chromakey-material を追加で読み込み、a-video 要素の記述を少し書き換えただけのものです。

このデモはマーカーをかざすと自動的に動画が再生する仕様のため、もしも mmttmot さんが求めるものが、クリック後に再生されるものであれば、要件が異なりますが、おそらくこちらのほうが求める形に近いのではないでしょうか?

余談ですが AR.js を使うのであれば、本デモのもととなっている AR.js studio をベースにすると何かと捗ります。

以上です。
参考になれば幸いです。良き AR.js ライフを!

投稿2020/07/07 10:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmttmot

2020/07/09 00:44

>ikkouさま ご回答ありがとうございました。 デモとソースを拝見しました所、「webkit-playsinline」「playsinline」が原因だったようです。きちんと再生されました。 クリック再生を考えていたのは音声有り動画のため、iOSだとなんらかのクリックイベントが必要だからでした。音声が無しなら自動再生でもいいんですけどね・・・。 AR.js studiomも積極的に使ってみたいと思います。
退会済みユーザー

退会済みユーザー

2023/03/18 09:45

すみません。こちらの投稿を参考に私もクロマキーに成功しました。 ありがとうございます。 しかし、問題がありまして、用意した映像が少し緑がかっている部分があるせいで ARを動かすとグリーンバックだけでなくその部分も含めて抜かれてしまいます。 背景をブルーバックにしたいのですが、ググってもブルーバックのcolorの数値が出てきません。 どのように指定すればいいでしょうか? よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問