ピンクで表示されてしまう場面が多々あります。前回使用したSample_Cube.prefabもピンクでした。今回はこれを修正する「アセットの修正作業」を紹介します。ピンクで表示されてしまいます。修正作業は以下のようになります。ピンクになる原因の多くがマテリアルに問題はなくシェーダーによるものですので(1)と(3)は不要です。ピンクになるマテリアルでスタンダードシェーダーを指定することでとりあえず表示できるようになります。マテリアルを作成する前回作成したasset_projectsを開いて、画面下部のAssetsフォルダ内で右クリックのメニューから「Create」→「Material」と選択し、新しいマテリアルを作成します。マテリアルのシェーダーと色を設定する作成したマテリアルのインスペクターでシェーダーを選択し、色を好みで設定します。シェーダーはとりあえず「Standard」としてください。新しく作成したマテリアルは最初からStandardとなっていると思いますのでそのままで結構です。色だけ好みで設定してください。キューブのゲームオブジェクトへマテリアルを設定するヒエラルキーで「Test_Cube」を選択し、右側のインスペクターのメッシュレンダラーのElementへ(1)で作成したマテリアルをドロップします。これでシーンビューの色が変わります。キューブのプレハブへ変更を適用するつづいて現在のゲームオブジェクトの状態をプレハブへ適用します。All」を選択します。これでAssetsフォルダにあるTest_Cube.prefabへマテリアルの修正が適用されます。サムネイル画像が更新されましたが、赤いマテリアルから青いマテリアルに変更するなどではサムネイル画像は更新されません。Browser」を表示します。Test_Cube.prefabを登録しますが、既に登録済の場合はBuildタブでBuildボタンを押すだけで新しいアセットファイルが作成されます。ビルドの仕方はこちらを見てください。Serverから利用できるようになっています。アセットファイルの更新ができます。Serverの設定で画像ファイルの拡張子に「assetbundle」を追加します。アセットファイルをコピーします。アセット専用のフォルダを作って管理するのが望ましいです。ビルドした拡張子なしのアセットファイルをサーバーのフォルダへ拡張子を付けてコピーするバッチファイルを作成すると便利です。アマレコVRでアセットを使うアマレコVRのファイル画面で(2)のフォルダを表示してアセットファイルを再生します。使うスロットを選択するとアセットファイルが読み込まれます。エラー用の黒いサムネイルになります。■ファイルサイズが大きいと数十秒読み込むのに待たされる10MB程度のアセットファイルを読み込むのに1秒程度、それに加え圧縮されている場合はさらに解凍処理に1秒程度かかります。100MBを超えると10秒以上待たされます。(ファイル画面を閉じるなど)他の操作をしないでください。ファイルIDを作成して管理しています。その都度IDとサムネイル画像が作成されてしまいます。アセットファイルに関するレコードを削除してください。実際に使うところまで説明します。Unityのインストールについてはこちらを見てください。右上の「新しいプロジェクト」をクリックします。Editorのバージョンから「2021.1.1f1」を選択します。ここでは「asset_projects」としましたプロジェクトファイルの保存先を設定して「プロジェクトを作成」をクリックしたら完了です。Editorが起動します。Settings」を選択して設定画面を表示します。右側のPlayer設定画面でAndroidのタブを選択します。確実にアンドロイドを選択してください。Space「Gamma」から「Linear」へ変更します。明るいとか白っぽい(安っぽい)印象になってしまいます。一応全体を記載します。アマレコVR本体の設定例も記載します。Browserをプロジェクトへインストールします。以下のように手動でインストールしました。Edge等でダウンロードサイトを表示します。ダウンロード緑の「Code」から「Download.zip」をクリックしてインストールに必要なファイルをダウンロードします。解凍ダウンロードした「AssetBundles-Browser-master.zip」を解凍します。disk」を選択します。先ほど解凍したフォルダにある「package.json」を選択します。Browser」が追加されます。Browserは新しいプロジェクトを作成する度にインストールする必要がありますので、解凍したファイルは分かりやすい場所に残しておくことをお勧めします。アセット化したいファイルをダウンロードアセットファイルにしたい3Dモデルなどをダウンロードします。ここでは私が公開したasset_sample_cube20230505.zipを例に説明します。ダウンロードページ私が公開するもの以外でもUnity用のシーンファイルやプレハブファイル、一般的な3DモデルファイルのFBXなどをアセットファイルにすることができます。アセット化することができます。「Sample_Cube.prefab」をasset_projects\Assetsフォルダへコピーします。ヒエラルキーへドロップします。Assetsフォルダを指定し右クリックのメニューから「Refresh」することでコピーしたファイルが現れます。ヒエラルキーへドロップすると自動的にゲームオブジェクトが作成されます。「Test_Cube」に変更します。作成されたゲームオブジェクトはシーンビューなどで確認できます。ここで照明を加えたり、全体の向きを調整したりできます。シェーダーに異常があるので修正すべきですが、今回はこのまま次の手順へ進みます。ピンクになるモデルの修正作業」を参照してください。画面下部のAssetsフォルダへドロップすると新しいプレハブ「Test_Cube.prefab」が作成されます。変更箇所を管理したプレハブを作るか問われます。今回はオリジナルのプレハブを選択します。Browser」を表示します。Browserのウインドウ上でドロップします。Targetを「Android」とします。アセットファイルが作成されます。QuestのDownload¥assetフォルダへ転送アセットファイルはプロジェクトのasset_projects\AssetBundles\Androidフォルダに作成されます。プレハブと同じ名前で拡張子の無いファイル「test_cube」がアセットファイルです。test_cubeへ拡張子をつけて「test_cube.assetbundle」とします。Quest内のDownloadフォルダへ「asset」フォルダを作成します。「test_cube.assetbundle」を「asset」フォルダへ転送します。アマレコVRで確認QuestでアマレコVRを起動し、アセット画面を表示します。ピンクの立方体が表示されれば成功です。表示される位置がHMDの下方1メートルの辺りなので、下の方を向くか、位置Zを調整して下さい。読み込んでいる」と表示されて読み込めない場合はアセットファイルを作成しているUnityのバージョンが合っていない可能性が高いです。2021.1.1f1で作成してください。Android用のアセットでない場合や、同じIDのリソースが既に読み込まれている場合にこのメッセージが表示されます。Spaceが合っていない。APIが合っていない。APIが合っていない。Pass」にしてください。立体視に支障がでます。アマレコVR内でピンクになります。スタンダードシェーダーにすることでとりあえず表示できます。Sample_Cubeはマテリアルを指定していないためピンクになります。新しいマテリアルを作成しゲームオブジェクトへ割り当てることで改善されます。アマレコVRが落ちるポリゴン数が多すぎたり、テクスチャで大量のメモリを消費するとまともに動作しません。Questはコンピュータ的には非常に低スペックです。PC向けのアセットをそのままQuestで使おうとするとまともに動かない場合があります。テクスチャのサイズを縮小してメモリを節約するなどの調整が必要です。UnityのセットアップアマレコVR用のアセットファイルの制作を中心にUnityやアセットについて連載します。開発したゲームエンジンです。Editorと呼ばれる主に2D、3DおよびVRのアプリケーション開発に使われる開発環境を指します。この連載の中心となるアセットファイルもUnityで作成することができます。まとめたものを指します。Bundleの2つがあります。Bundleが中心となり、アマレコVRへ利用者自身で用意したアセットを追加することができます。HubのインストールUnityには様々なバージョンが存在します。必要に応じて新しいバージョンを使ったり、意図的に古いバージョンを使うこともあります。Hubのインストーラー「UnityHubSetup.exe」をダウンロードしてください。Hubをインストールしてください。【アカウントとライセンス】インストールの途中でUnityアカウントとライセンスの選択を求められます。Unityのアカウントを持っていない場合はアカウントを取得してくしてください。ライセンスの選択では私はパーソナルライセンスを選択しました。内容をよく見て該当するライセンスを選択してください。Hubが起動したら歯車のアイコンのpreferencesから日本語にすることができます。Editorをインストールします。アマレコVRの制作に使ったのと同じ2021.1.1f1です。右上の「エディターをインストール」をクリックするとインストールするUnityのバージョンが表示されます。アーカイブ」をクリックします。2021.x」タブを選択します。アクセスしてください。Hub」をクリックします。確認メッセージが表示されますので「開く」をクリックします。Webサイトで選択したバージョンのインストールの準備が始まります。Support」をONにして「次へ」をクリックします。このモジュールが必要となります。StudioとAndroidの契約画面が表示されますので内容を確認し同意するとインストールが始まります。インストールには結構な時間がかかりますので待ちましょう(20分から30分くらい?)。Editorのインストールは以上となります。追加することができます。Editorの一覧が表示されますので、目的のバージョンの歯車から「モジュールを加える」を選択します。SupportをONにして「次へ」をクリックします。これで、Android用のアセットやアプリを開発するのに必要なモジュールを追加することができます。アセット)に対応した実験版です。Unityで作成した様々なアセットをアマレコVRの世界へ持ち込むことができます。Editorを使って作成する必要があります。Unityを扱える人が対象の機能となります。広範なことがアマレコVRの機能に依存せずに実現できます。アセット機能の特徴となっています。Editorアセット機能により様々なことが可能となりますが、アマレコVRは動画を視聴することを目的としたアプリですのでクリエイティブな作業には向いていません。「完成したコンテンツ」を用意してご利用ください。Editorの活用が必須となります。(1)-(3)をよく確認してください。座席等が表示されます。表示されるようになっています。アセットと組み合わせて表示できるのはサブプレイヤーのみとなっています。アセットワールド内の視点の移動や向きの調整ができます。ボタン設定で各ボタンへ割り当てることもできます。現状チルトはうまく機能しません。リセット」してください。環境光と平行光源のOn/Offができます。アセットワールドへ追加します。最大4つのアセットを組み合わせて使うことができます。■ファイル名アセットファイルを選択します。QuestのDownloadフォルダへassetフォルダを作成し、そのassetフォルダへ転送してください。■アセットメニュー▽アセットファイルに含まれるプレハブを選択したり、読み込んだアセットをアセットワールドから削除できます。向きとチルトをリセットできます。アセットに視点情報が含まれる場合は視点を選択することができます。■リロードアセット(プレハブ)を初期状態に戻します。コリジョンにより爆発した場合などに位置や状態を回復します。■アニメーションアセット内の人型のゲームオブジェクトへアニメーションを適用します。全員に同じアニメーションが適用されます。assetフォルダ内にanimatorフォルダを作成し、アニメーション用のアセットファイルを転送して使います。■体、顔アセット内の人型のゲームオブジェクトの体や顔をHMDの方へ向けます。■位置、向き、チルトアセット毎にローカル位置を調整します。現状チルトはうまく機能しません。アセットメニュー▽で向きとチルトをリセットできます。その位置へアセットワールドを移動します。前の方の席、後ろの方の席、横の席の3か所が選べます。視点が4以上の場合はアセットメニュー▽で選択できます。■頭コライダーHMDの当たり判定を有効にします。すり抜けを防止するのに使います。読み込むことができます。使っているアセットファイルやプレハブと位置情報を保存するようになっています。機能しない可能性があります。5.その他5.1.光源とパフォーマンスについてsample_theaterには点光源が含まれます。点光源はパフォーマンスの低下(fpsの低下)を招くので、アセット側の光源はOffにして環境光と平行光源だけで使うことをお勧めします。■Quest1の場合sample_theaterで点光源を使うと60fpsを下回る場合があります。環境光と平行光源だけで使ってください。■Quest2の場合sample_theaterの点光源と環境光、平行光源の3つ全てをOnにすると60fpsを下回る場合があります。点光源か平行光源のどちらか1つで使ってください。環境光はパフォーマンスに影響しないと思われます。サブプレイヤーはもともと60fpsでの動画再生ができません。Playerを使った場合だけです。Pass)・プレハブのみ対応?(シーンは不可?)6.1.アセットファイルの作成方法(要点のみ)ここではUnityを使ったことがある人を対象に要点だけ示します。Unityのバージョンは2021.1.1f1を使っています。これより新しければ大抵大丈夫だと思いますが、上手くいかない場合は2021.1.1f1を用意してください。browserを使います。Editorを起動してパッケージマネージャからインストールしてください。ManagementのAndroidタブを以下のように設定します。AssetBundles\Androidフォルダへ拡張子なしのファイルが作成されます。Questを使っていたので今回はQuest版となります。背景透過処理で輪郭を捕らえる制度が若干向上しました。■背景をボカす背景透過処理で背景を透明にする代わりにぼかします。幽霊モードで使ってください。プリセット追加アマレコVRの設定画面のプレイヤー設定で3つプリセットできます。先日公開した背景透過V2のQuest版です。背景透過V2今回は背景透過処理自体をアップデートし背景透過V2となりました。2.1.背景透過V2メイン画面設定の画像処理に関する設定項目が変更されました。動きの少ない背景が徐々に消えてきますなかなか背景が消えないようなら背景透過率を100から下げてみてください(50から80あたりで調整)。3.背景透過モード今までは背景透過処理と背景透過EXで構成されていましたが、今回から統合し3つのモードに整理されました。■モヤっとモード被写体の輪郭をぼかして合成します。このモードを中心に使ってください。背景透過率で背景に使われている色に近いものを透明にすることができます。通常は100に設定しますが、なかなか背景が消えない場合は50くらいまで下げてみてください。このモードに「輝度補正」と「色補正」はありません。画像処理メニューの輪郭ぼかしの設定でぼかす度合いを調整できます。■キリっとモード輪郭を鮮明にし合成します。背景に使われている色が特定しやすいこと、背景の色と被写体の色が明確に区別できることが重要となりますので、使える場面は限られます。暗がり動画、完全な白背景、クロマキー映像のように背景が単色に近いもので効果を発揮します。被写体の輪郭部が半透明になってしまう場合は「輝度補正」と「色補正」を0から上げることで不透明にできます。背景が消えつつ、被写体が消えないように調整してください。画像処理メニューから輪郭サイズを一回り大きくしてみてください。ドット感(処理解像度の低さ)が目立つ場合も「輝度補正」と「色補正」を0から上げてみてください。輝度補正を100にしても背景透過EXの処理が無効になることはありません。色補正の数値を上げても画質が悪い印象になることはありません。■幽霊モード最も背景を消せて、且つ、輪郭を鮮明にすることができますが、被写体も半透明になります。モードが背景を消しつつ、被写体が消えないように働くのに対し、幽霊モードは背景色に近いものを問答無用で透明、半透明にします。暗がり動画、完全な白背景、クロマキー映像のように背景が単色に近いもので効果を発揮します。画像処理に関するメニューを表示します。ために背景画像等を表示します。作る際の閾値を設定します。数値を上げると背景画像が作りやすくなります(背景が消えやすくなります)。その代り動きの少ない被写体も背景と判断されやすくなり消えてしまいます。「動画にノイズが多い」や「照明が安定しない」などによりなかなか背景が消えない場合は背景閾値を大きくしてみてください。通常は背景閾値を0にして被写体が消えにくくなるようにしてください。・輪郭ぼかし被写体の輪郭をぼかす度合いを設定します。モヤっとモードで意味を持ちます。ぼかし(時間)変化量が少ないときはボカし、変化量が大きいときはボカさないよう自動で切り替わります。被写体の周辺など条件により自動で長くなります。・解像度(256、1024)今回は512x512となります。今回から背景透過EXの処理(キリっとモード、幽霊モード)でもシルエット機能が使えるようになりました。幽霊モードでシルエット機能を使うと陰影も反映されます。シルエットの色と透明度はサーバー側の設定ファイルで指定できます。先日公開した背景透過EXのQuest版です。うれしかったので急きょPico版を移植しました。Quest1/2の白黒パススルーだと背景透過EXの処理の粗さが目立つ気がします。Quest1だと60fpsを下回ります。QuestProは買えなかったので、QuestProでどうなるか、そもそも使えるのか気になるところです。背景透過EX前回の暗闇透過は黒と比較して透明にするか決めていましたが今回は背景色マップと比較して透明にします。黒以外に白や複数の色でもある程度対応でき従来の背景透過処理の輪郭部を明瞭にする効果があります。背景色マップは被写体領域の外周から多く使われている色を調べて、背景に使われている色の分布を作成します。クロマキー処理では画面全体から1色だけ拾うようになっていますが、背景色マップではエリア毎に背景色を決めますので、画面の上の方が暗くて、下の方は白いなどの場合も対応できます。小さいエリア毎に特殊なクロマキー処理をする感じです。メイン画面設定の暗闇透過オプションが廃止され、代わりに背景透過EXになります。背景透過EXは単独では使えません。画像処理の背景透過を選択している時だけ機能します。画像処理メニューから背景透過を選択し、背景透過EXのチェックボックスをON、背景透過EXの透明度を50、色味補正を0にして背景透過処理が安定するまで(背景画像ができるまで)待ちます。安定したあと被写体の一部が消えるようなら色味補正を少しずつ上げます。色味補正を上げ過ぎると画質の印象が悪くなるので20程度までで調整してください。背景が残るようなら背景透過EXの透明度を下げてください。それでも背景が残る場合は「被写体も処理する」をONにしてみてください。最初は黒に設定されていますので、黒目や黒髪が透明になります。徐々に背景画像が作成され被写体領域が判るとその外周から色を拾って正しい背景色マップが作製されます。この間は黒や被写体から離れたところの色を拾ってしまう為不安定となります(何色が透明になるか不定)。背景の透明度を設定します。数値を下げると背景を透明にします。透明度を補正して不透明にします。被写体の一部が透明になってしまう場合に使います。0は透明度を補正しません。数値を大きくするほど不透明になります。数値を大きくすると画質の印象が悪くなります。・被写体も処理するOFFの場合は被写体の輪郭領域だけ処理します。被写体内部の黒目などの透明化を防ぐことができますが、輪郭領域の背景が残りやすくなります。僅かに輪郭が明瞭になるメリットがあります。ONの場合は輪郭領域と被写体領域の両方を処理します。背景が消えやすく被写体の輪郭がもっとも明瞭になりますが、被写体領域の背景色と近い箇所も透明になってしまいます。輪郭ぼかしと輪郭サイズを大きめに設定してください。被写体領域の外周から背景色を拾う(被写体から色を拾いたくない)ため、輪郭が被写体より一回り大きくなるように設定してください。ぼかしている範囲が輪郭領域として処理対象になります。解像度の1024は機能しません。256を選択してください。3.サンプルツイッターでサンプル動画を公開しています。https://twitter.com/amarectvyoutubeで公開しました。輪郭をうまくとらえられない例です。実際の被写体より領域が大きくとられてしまうので、被写体も処理するをONにして被写体も含めて背景色を透明にします。鳥の体の一部も背景色と一致し透明になっている箇所があります。・サンプル動画オウム複雑な背景の例です。従来の背景透過処理だけでもうまく処理できます。背景透過EXをON、被写体も処理をOFFにすると残っていた背景がわずかに減り、被写体の半透明になっていた部分を不透明にできます。背景透過EXのチェックボックスをON/OFFすれば瞬時に切り替わりますのでどの程度効果があるか確認してみてください。・白背景の動画(サンプル動画無し)背景が被写体より白い場合はうまくいきます。肌色のどこかしらと一致してしまいうまくいきません。ほとんどの場合うまくいきません。クロマキー合成のように扱うことができます。Ver2.212022.11.18追記メイン画面設定の位置設定など左右にドラッグして設定する分部が全滅しています。次のバージョンで直します。それまで、メイン画面の位置に関してはボタン機能に割り当てて調整してください。Questのパススルー機能に合わせて実験した画像処理の2ndシーズンです。暗い部分を透明にします。色を指定して透明にするクロマキー処理に近いですが、黒に特化していることと、彩度※の高い(色味が強い)個所は逆に不透明になるように調整することができます。照明の当たっていない背景の明度の差および彩度の差を利用して背景を透過させます。RGB要素の最大値から最小値を引いた値を使います。色味が高い)この差を利用して背景を透明、被写体を不透明にします。黒目や黒髪も透明になってしまいます。実際は背景透過処理と組み合わせて使うことになります。被写体と背景の境界領域については(アルファ値を)ボカす必要がありました。このボカした境界領域(輪郭)に適用されます。被写体の輪郭を明瞭にする効果が期待されます。動きのある被写体は消えない)背景透過処理により黒目は被写体に含まれていれば透明とはなりません。黒以外の背景も動きが無ければ背景と判断され透明になります。被写体の輪郭は暗闇透過処理により高い処理解像度で綺麗に処理されますのでそれぞれの処理の強みが発揮されます。背景透過と暗闇透過はそれぞれON、OFFして単独か組み合わせて使うことができます。背景透過処理は画像処理メニューから設定します。被写体が消えないように微調整してください。彩度補正は最初は0のまま使い、被写体も処理するは好みでON/OFF。暗い部分を透明にします。100の場合は処理をしません。大きい部分を不透明にします。0の時は処理をしません。数値が高いほど不透明にします。・白透過オプション黒ではなく白い部分を透明にしますが、今のところ上手く機能しません。被写体の領域へも暗闇透過を適用します。背景透過処理はなるべく丸い形状になるよう整形する性質がありますので、被写体が複数ある場合はくっついて一つの塊になってしまう場合があります。そのため、被写体と被写体の間の空間へ暗闇透過処理が適用されません。暗い部分を透明にできます。黒目など被写体に含まれる領域も透明になってしまいます。被写体の領域が侵食されやすくなります(黒目なども透明になりやすい)。被写体の外側に薄っすら背景が残りやすくなります。・背景透過処理の輪郭ぼかし被写体の浸食や背景残りを考慮して調整してください。・暗闇透過処理の透過率100だと処理しません。暗い部分の透過率が高くなります。これがメインの調整となります。背景が消えつつ、被写体が侵食されない値に調整してください。ボタンやマウスのホイールへ割り当てることができますので色々試してみてください。・暗闇透過処理の彩度補正0だと処理しません。色味を強く反映させます。アルファ値を算出する際に色味が大きい画素ほど不透明になります。彩度補正を大きく設定することで明るい被写体が不透明になりやすくなり有利です。彩度補正を0にしてください。彩度補正値が大きいと色味のある背景が不透明になってしまいます。背景透過処理の1024モードは工事中です。256モードを使ってください。ブラックマスクオプション追加アルファマップの連動設定に合わせてアルファマップの位置やスケール、ステレオ調整をするようにしたアルファマップAとBの違いアルファマップAはメイン画面と3rd画面の両方へ適用されます。アルファマップBは3rd画面だけ適用されます。(メイン画面へは影響しません)【パススルー映像の一部を隠す】アルファマップBを応用してパススルー映像の一部を隠すことができます。0あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。