🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

iOS

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

Q&A

1回答

2519閲覧

Unity AR Foudation でのカメラ映像の色の変更について

nono187659

総合スコア13

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

iOS

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

0グッド

0クリップ

投稿2020/11/24 01:16

実現したい内容

UnityのARFoundationを使って、ios用のARを作ってみているのですが。

端末には、カメラからの映像とその中に配置した3Dモデルが表示されますが、
カメラの映像(背景)が邪魔になってしまう気がしたので、3Dモデル以外の部分の色を変更したいと考えています。

Appleのサンプルである「Creating a Fog Effect Using Scene Depth
なども見てみましたが、これは深度を利用して背景部分を塗りつぶすというものでした。

今回はそう言ったイメージではなく、カメラ映像を一律でグレースケールにして3Dモデルだけがカラーにしたいと
考えています。

試したこと

 ARCameraの「ARCameraBackground」の「Use Custom Material」のチェックを入れて、マテリアルを指定できるようにし、
新しく作成したマテリアルを設定しました。

 物は試しで、普通にスタンダードのシェーダーを使ったマテリアルを設定すると、背景部分のみ指定した色で塗りつぶされますが、
透明度までは反映されないので、カメラ映像が見れません。

 UnityのStandardAssetのGrayscaleシェーダーを使ってみると、3Dモデルも一緒グレースケールで表示されてしまい。

 ARFoundationDemosを参考にし、
「Packages>ARKitXRPlugin>Assets>Shaders」の中に入っていた
「ARKitBackground」をコピーして、それを変更し設定した場合、カメラ映像に霧のようなエフェクトが追加されますが、
これも3Dモデルも一緒に影響を受けてしまっていました。

深度によってどうこうしたいという訳では無いので「ARKitBackground」を使わなくてもいいのではないかと思えるのですが、
シェーダーに明るくないのもあり、詰まってしまっている状態です。

何か、方法があれば教えていただければ嬉しいです。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Unity:2019 4.4
ARFoundation:13-4.1.0
ARKitXRPlugin:13-4.1.0

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

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

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

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

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

guest

回答1

0

ARBackgroundシェーダーをコピーし、そのシェーダーのフラグメントシェーダー内(通常fragという名前の関数です、ググれば分かります)の最後でreturnしているのが色情報なので、これをグレースケールに変換しまえばいいでしょう。
Luminance関数で色からグレースケールに変換できるので、fragの最後でreturnしている値をLuminanceに与えてその戻り値をreturnするようにしてみてください。

投稿2020/11/27 16:33

編集2020/12/29 05:14
Ram.Type-0

総合スコア424

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

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

nono187659

2020/12/24 04:34

回答ありがとうございます。 ただ、GameObjectを半透明にしたいわけではありません。 普通にGameObjectを半透明にしたいのであれば、回答の方法でも良いかと思いますが、 今回の質問の趣旨とは異なります。 ARでカメラ映像のみグレースケール化したいという質問でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問