ARアプリ オブジェクトにアウトライン(強調、目立たせる)を付ける

AR


考察

本アプリでは、オブジェクトを選択した際にマテリアルから色を加減して目立たせるようにしています

  Renderer[] renderers = GetComponentsInChildren<Renderer>();

  // 各Rendererのマテリアルの色を変更
  foreach (Renderer renderer in renderers)
  {
      foreach (Material mat in renderer.materials)
      {
           mat.color = mat.color + Color.red * 4 + Color.blue * 4 + Color.yellow * 0.5f;
      }
  }       

上記のコードで色を変更しています

オブジェクトによっては複数マテリアルを使用しているので、オブジェクトにアタッチしている全てのマテリアルを取得するように工夫してあります

しかし、これには落とし穴があったのです

このように、選択するオブジェクトの元の色によって選択後の色に差が出てしまい、統一感が全く無かったのです

そこで、オブジェクト選択時に統一性を出すためには、アウトライン表示をするのが一番よいのではと考え、今回導入してみることにしました

色々導入

こちらの記事を参考にさせていただきました

これによると、まずURP(ユニバーサルレンダーパイプライン)を導入する必要があるためパッケージマネージャからインストールします

続いてアウトラインツールキットをインストール

そのままステップを続けようとしたところ、プロジェクトセッティングのグラフィックカテゴリに触れる部分で

「スクリプタブルレンダーパイプライン設定に登録されているものをクリックすると設定されているデータが格納されているフォルダへ移動してくれるので、設定されているものと同じ名前のものを選択してください。」

とあったので確認してみると・・・

もふもふ
もふもふ

なんもないもふ(;゚Д゚)

何か選ぼうとしてもNoneしかありません

調べたところ、こちらの記事にやり方が記載されていたので抜粋させていただきます

記事によると、右クリックメニューから適当なフォルダに「パイプラインアセット」を作り、それをプロジェクト設定ウィンドウのグラフィック設定(メニューバーの「編集」→「プロジェクト設定」→「グラフィックス」)の「スクリプタブルレンダーパイプライン設定」に設定しましょう。

これでレンダリングパイプラインがURPになります。

とのことだったのでやってみたところ、無事にこのステップはクリアすることが出来ました

続いて、作成したアウトラインレイヤーをオブジェクトに設定するためにプレハブフォルダを開いたところ、オブジェクトがすべてピンクになっていました・・・

URPは現在使用しているマテリアル(スタンダード)との互換性が無いようで、プレハブのオブジェクトがすべてピンクになってしまったようです

しかし、取り乱す前に調べてみたところ

こちらの解決方法を試したところ無事に復旧してくれました

念のため他におかしくなっているところがないか確認するために、アプリを再生してみると

もふもふ
もふもふ

おわた(;゚Д゚)

3秒ほど時が止まりましたが、あきらめずに調べたところ、こちらの記事に解決法が記載されていました!

こちらに従って設定を変更したところ、無事に本来の見た目に戻ってくれました

ようやく次のステップへ

URPアセットレンダラーのヒエラルキーウインドウにて赤線部のコンポーネントを追加します

写真のように設定をし、赤線部にOutlineと名付けたレイヤーをセットします

 this.gameObject.layer = LayerMask.NameToLayer("Outline");

続いて色の変更用のコードを上記のコードに書き換えます

movObj.layer = LayerMask.NameToLayer("Default");

色を戻す用のコード部分はこちらのコードに書き換えます

準備は終わったと思いたいので、テストしてみましょう

実行

もふもふ
もふもふ

できてるもふ(´゚д゚`)

成功です!

100パーこちらの方がいいと思います



まとめ

3Dオブジェクトにアウトラインを付けるには、URPとアウトラインツールキットをインストールし、アウトライン用のレイヤーを作成して、任意のオブジェクトのレイヤーを切り替える

途中何回かピンチになりましたが、よい勉強になりました

タイトルとURLをコピーしました