20200806のUnityに関する記事は2件です。

Unity2018から2019にアップデートしたら、特定動作でMacPCを巻き込みクラッシュした。

どんなことを試したか等も書いちゃってるので
「対応策が知りたいんだ!」
と言う方は最後辺りを見てくださいませ。

環境

PC(私) : MacOS Catalina 10.15.5
PC(先輩Nさん) : MacOS Catalina 10.15.3
Unity(アプデ前) : 2018.4.3f1
Unity(アプデ後) : 2019.4.6f1

問題の概要

そもそも何をしようとしていたか

  1. 昔のエンジンを使って、新たなプロジェクトを作ろうとした。
  2. 新たなプロジェクトを作るにあたり、Unityのバージョンを上げようとした。

問題の発生

  1. 先輩NさんがUnityのアップデート作業を行う。
  2. 問題なくアップデートが済み、リポジトリにPush。
  3. 私がリポジトリからクローンしてきて動作確認をする。
  4. 特定動作で私のMacPCを巻き込みクラッシュ!

クラッシュ手順

  1. プロジェクトを開く
  2. Editor内のConsole,Inspector,Project等々のwindow配置を変える
  3. 1〜10回のうちにクラッシュする

例)consoleを移動(これを行うとMacPCもろともクラッシュしました)
クラッシュ手順_normal_gif.gif

調査

ぐぐる

windowを移動するとクラッシュするなんて記事が出てこなかった。
(クラッシュの原因でMetalがどうのこうのと書かれてる記事はいくつか見つけましたが、当プロジェクトでは既にチェックがついていました)

クラッシュログを見てみる

  1. UnityのEditor.logが作成されなかった
    (Editor.logを削除後、クラッシュ手順を踏みました)
    https://docs.unity3d.com/ja/2018.4/Manual/LogFiles.html
  2. MacPCのログも見てみたが「.crash」が作成されなかった。
    「.panic」ログも作成されていたが、中身が暗号化されたJsonのようなもので読めなかった。
    https://gori.me/mac/mac-tips/108863

何の成果も得られなかった...

しらみ潰しで探す

  1. いろいろファイルを削除してみた結果、UnityProject/ProjectSettings/ProjectSettings.asset が怪しいことがわかった。
  2. NewProjectを作成 -> 問題のProjectSettings.assetを上書きコピー -> NewProjectでもクラッシュすることがわかった。
  3. NewProjectをGit管理し、上書いたProjectSettings.assetの怪しい箇所を削除(リセット)してはクラッシュを繰り返す。
  4. 心が先に折れたので、細かいところまで見つけられなかったが、一部分をDefault設定に戻すことでクラッシュが回避できることがわかった。

(基になったエンジンのProjectSettings.assetを全て流用する必要もないので、ざっくりとDefault設定に戻してもいいかな、なんて)

対処法

手順

  1. UnityProject/ProjectSettings/ProjectSettings.asset をリセットし、クラッシュが発生しなくなることを確認。
  2. NewProjectを作成 -> Git管理をする -> 問題のProjectSettings.assetをNewProjectに上書きコピー
  3. NewProjectのGitにて差分チェック。
  4. 差分を一部リセット -> クラッシュしないか動作確認 -> クラッシュしたらリセット箇所を復元
  5. クラッシュしなくなるまでひたすら「4」を頑張る。
  6. クラッシュしなくなったら、UnityProjectにProjectSettings.assetを上書きコピーする。

本音のところ、エンジンを利用しただけの新プロジェクトなので、ProjectSettings.assetを完全リセットしてもいい気はしてます。
必要な分は改めて再設定しちゃいましょう。

疑問

なぜ先輩Nさんの環境ではクラッシュが発生しなかったのか

おそらく、MacOSの違いかなと思っています。
MacOS 10.15.4 ではアプリのクラッシュやカーネルパニック祭りだったそうなので
MacOS 10.15.5 でも一部不具合が残ったままなのではないでしょうか。
先輩Nさんは 10.15.3 を利用していたのでクラッシュしなかったのだと思います。
が、詳しいところまで調べきれてないので真相は闇の中...
https://applech2.com/archives/20200407-macos-10-15-4-catalina-finder-app-crash-and-kernel-panic.html

最後に

こちらは、完全にクラッシュ問題を解決できるものではありませんので
参考にする方は、あくまで参考であることを念頭に入れていただけますと幸いでです。
また、ProjectSettingsの更新も後々大きな事故に遭う可能性がありますので、細心の注意を払って更新してください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MagicLeapToolKitを利用したハンドトラッキングの実装

この記事でやること

  • MagicLeapToolKitを利用したハンドトラッキングの実装
  • トラッキングした手の視覚化

今回の記事では入力イベントの取り方とかは紹介しません( 単純にまだそこまで触ってないだけ )
表示するだけだったら一瞬で終わるのでよくあるCameraRig的なプレハブ構成を作成する手順をメモってます

開発環境

OS : Windows10
Unity : 2019.3.7f1
LuminSDK : 0.24.1
MagicLeapUnityPackage : 0.24.1
MagicLeapToolKit : こちらから入手

MagicLeapToolKitはリンク先のGitHubリポジトリ内、packageフォルダの中に最新のUnity Packageが含まれているのでそこからDLしてください
まだReleaseでは特に出してないっぽい? でもpackageフォルダの更新は最近なので内部的には更新はされてるはず

出来上がるもの

下準備

Edit > ProjectSettigs > MagicLeap にてGestureConfigLowLatencyLightwearにチェックを入れる
私の環境ではLowLatencyLightearには自動でチェックが入っており編集はできませんでした

image.png

シーンの構築

ここで作成したCameraRigオブジェクトを流用します、今回は自前で作成したハンドトラッキングを利用しないのでGameObjectを非アクティブにしておきます

完成予定図
image.png

MagicLeap-Tools > Examples > HandInput > Scene からHandInputシーンをHierarchyにドラッグ&ドロップし、[VISUALIZERS]オブジェクトと[INPUT]オブジェクトを複製し、自分のシーンのCameraRigオブジェクトの子オブジェクトにします
image.png
image.png
image.png

上に挙げた動画の状態にするだけであればここまでで大丈夫です、一応整理したほうが今後いろいろ改造しやすいと思うのでここから少しオブジェクトの構成をいじります

ちょこっと改造

HandInputの再構築
[INPUT]オブジェクトの中にあるHandInputオブジェクトを一つ上の階層に持っていき不要となった[INPUT]オブジェクトを削除します
image.png -> image.png

左右の手の描画オブジェクトを再構築
[VISUALIZERS]オブジェクトの中にあるLeft Rightオブジェクトを取り出し、HandInputオブジェクトの子オブジェクトとして配置、お好みでLeftHand,RightHandに名称を変更します
image.png -> image.png

このままだと各関節のKeyPointの描画オブジェクトが左右の手のGameObjectと離れていて直感的ではないのでKeyPointVisualizersオブジェクトの中からLeft~ & Right~オブジェクトをそれぞれ対応するところに配置しなおします

image.png -> image.png

不要になった[VISUALIZERS]オブジェクトを削除します、今回はHandMeshは利用しないのでHandMeshごと削除します

後はお好みでLeftHand, RightHandオブジェクトにあるAxisVisualizerの長さを設定したりBoneの色を設定したりすればMagicLeapToolKitのハンドトラッキングの実装は完了します
image.png

補足
今回[VISUALIZERS]オブジェクトから引っ張ってきた各Left~, Right~オブジェクトのプレハブは MagicLeap-Tools > Prefabs > Input 内のKeyPointVisualizerプレハブを利用しています

image.png image.png

Inspectorで描画するKeyPointの設定をカスタムすればいろいろいい感じにできそうですね

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む