- 投稿日:2020-08-06T15:55:09+09:00
Unity2018から2019にアップデートしたら、特定動作でMacPCを巻き込みクラッシュした。
どんなことを試したか等も書いちゃってるので
「対応策が知りたいんだ!」
と言う方は最後辺りを見てくださいませ。環境
PC(私) : MacOS Catalina 10.15.5
PC(先輩Nさん) : MacOS Catalina 10.15.3
Unity(アプデ前) : 2018.4.3f1
Unity(アプデ後) : 2019.4.6f1問題の概要
そもそも何をしようとしていたか
- 昔のエンジンを使って、新たなプロジェクトを作ろうとした。
- 新たなプロジェクトを作るにあたり、Unityのバージョンを上げようとした。
問題の発生
- 先輩NさんがUnityのアップデート作業を行う。
- 問題なくアップデートが済み、リポジトリにPush。
- 私がリポジトリからクローンしてきて動作確認をする。
- 特定動作で私のMacPCを巻き込みクラッシュ!
クラッシュ手順
- プロジェクトを開く
- Editor内のConsole,Inspector,Project等々のwindow配置を変える
- 1〜10回のうちにクラッシュする
例)consoleを移動(これを行うとMacPCもろともクラッシュしました)
調査
ぐぐる
windowを移動するとクラッシュするなんて記事が出てこなかった。
(クラッシュの原因でMetalがどうのこうのと書かれてる記事はいくつか見つけましたが、当プロジェクトでは既にチェックがついていました)クラッシュログを見てみる
- UnityのEditor.logが作成されなかった
(Editor.logを削除後、クラッシュ手順を踏みました)
https://docs.unity3d.com/ja/2018.4/Manual/LogFiles.html- MacPCのログも見てみたが「.crash」が作成されなかった。
「.panic」ログも作成されていたが、中身が暗号化されたJsonのようなもので読めなかった。
https://gori.me/mac/mac-tips/108863何の成果も得られなかった...
しらみ潰しで探す
- いろいろファイルを削除してみた結果、UnityProject/ProjectSettings/ProjectSettings.asset が怪しいことがわかった。
- NewProjectを作成 -> 問題のProjectSettings.assetを上書きコピー -> NewProjectでもクラッシュすることがわかった。
- NewProjectをGit管理し、上書いたProjectSettings.assetの怪しい箇所を削除(リセット)してはクラッシュを繰り返す。
- 心が先に折れたので、細かいところまで見つけられなかったが、一部分をDefault設定に戻すことでクラッシュが回避できることがわかった。
(基になったエンジンのProjectSettings.assetを全て流用する必要もないので、ざっくりとDefault設定に戻してもいいかな、なんて)
対処法
手順
- UnityProject/ProjectSettings/ProjectSettings.asset をリセットし、クラッシュが発生しなくなることを確認。
- NewProjectを作成 -> Git管理をする -> 問題のProjectSettings.assetをNewProjectに上書きコピー
- NewProjectのGitにて差分チェック。
- 差分を一部リセット -> クラッシュしないか動作確認 -> クラッシュしたらリセット箇所を復元
- クラッシュしなくなるまでひたすら「4」を頑張る。
- クラッシュしなくなったら、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の更新も後々大きな事故に遭う可能性がありますので、細心の注意を払って更新してください。
- 投稿日:2020-08-06T08:40:10+09:00
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フォルダの更新は最近なので内部的には更新はされてるはず出来上がるもの
MagicLeapToolKitを使ってハンドトラッキング実装してみた、表示するだけなら一瞬で終わるので良き pic.twitter.com/AG028F33Xk
— 松本隆介 (@matsumotokaka11) August 5, 2020下準備
Edit > ProjectSettigs > MagicLeap にて
GestureConfig
とLowLatencyLightwear
にチェックを入れる
私の環境ではLowLatencyLightearには自動でチェックが入っており編集はできませんでしたシーンの構築
ここで作成したCameraRigオブジェクトを流用します、今回は自前で作成したハンドトラッキングを利用しないのでGameObjectを非アクティブにしておきます
MagicLeap-Tools > Examples > HandInput > Scene からHandInputシーンをHierarchyにドラッグ&ドロップし、
[VISUALIZERS]
オブジェクトと[INPUT]
オブジェクトを複製し、自分のシーンのCameraRigオブジェクトの子オブジェクトにします
上に挙げた動画の状態にするだけであればここまでで大丈夫です、一応整理したほうが今後いろいろ改造しやすいと思うのでここから少しオブジェクトの構成をいじります
ちょこっと改造
HandInputの再構築
[INPUT]オブジェクトの中にあるHandInputオブジェクトを一つ上の階層に持っていき不要となった[INPUT]オブジェクトを削除します
->左右の手の描画オブジェクトを再構築
[VISUALIZERS]オブジェクトの中にあるLeft Rightオブジェクトを取り出し、HandInputオブジェクトの子オブジェクトとして配置、お好みでLeftHand,RightHandに名称を変更します
->このままだと各関節のKeyPointの描画オブジェクトが左右の手のGameObjectと離れていて直感的ではないので
KeyPointVisualizers
オブジェクトの中からLeft~
&Right~
オブジェクトをそれぞれ対応するところに配置しなおします不要になった[VISUALIZERS]オブジェクトを削除します、今回はHandMeshは利用しないのでHandMeshごと削除します
後はお好みでLeftHand, RightHandオブジェクトにあるAxisVisualizerの長さを設定したりBoneの色を設定したりすればMagicLeapToolKitのハンドトラッキングの実装は完了します
補足
今回[VISUALIZERS]オブジェクトから引っ張ってきた各Left~, Right~オブジェクトのプレハブは MagicLeap-Tools > Prefabs > Input 内のKeyPointVisualizerプレハブを利用していますInspectorで描画するKeyPointの設定をカスタムすればいろいろいい感じにできそうですね