今回はUnityのアセットを使ってAWSIMを改造していきます。
今回は以下の順ですすめていきます。この記事の内容は1時間くらいあればできると思います。
- unityのasset追加
- unityのasset修正、追加変更
- autowareとつなげる
アセットを追加する
unityといえばアセットストアですね。他の人が作成したものを無料、有料で購入し自分のプロジェクトに取り込むことができます。
今回はじめに使用するアセットはこちらカラーコーンです。
Unityに追加するというボタンがあるので追加していきましょう。
Unity側はWindow -> package manager -> package my assetからMyassetにチェックを入れると以下のような画面がみえてきます。一応 中央下の再読込ボタンからreflesh my assetしておきましょう。
download -> importとボタンを押していき追加していきます。
新しくimportしたアセットのフォルダができていれば成功です。
unityのサポート記事も参考になります: 購入したアセットをダウンロードするにはどうすればいいですか
HDRPを解決する
追加したアセットのprefabを追加するとこんな感じでカラーコーンがでてきます。
ピンク色ですね。。。おっとこれはマテリアルがHDRPが対応していなかったようなのでHDRPにupgradeしていきましょう。
Edit-> render pipline -> upgrade from build pipline -> upgrade selected materials to HDRP を選択しましょう。(スクショとれなくて画像他のを使用したので右の森は無視してください)
参考までに(こちらはURP用の対応ですが、問題と解決方法は同じです)
もう少し追加していきましょう。今度は宝箱のアセットを追加していきます。
このパッケージのHDRPへのupgradeは先程と同様の手順でやってみましょう。open versionとclose versionがあるようです。どちらも映えますね。
(ピンク色のpreviewはそのうち直ると思います)コインを調整して、人も少し増やして
◯フィアシティーっぽくなってきました。お好みで銃も追加しましょう。
この人の手へのtransformがないためstep実行してみると銃はこのままの角度のまま並行移動します。
人は並行移動しているので頭に銃を移動し、最近はやりのチェーンソーマンのように銃の魔人という設定なら行けそうです(何が?)。
アセットに工夫をしていきましょう。
もともとのコーンには衝突判定がないので、車両がすり抜けます。衝突判定を追加していきましょう。
衝突判定には様々あり、collisionは通常のボックス、球体、カプセルなどのほかにmeshなどがあります。Previewを見れるので直感的でいいですね。
AWSIMドキュメントにはmesh collidarとwheel collidarについて記載がありました。
コーンにrigidbodyを追加していきましょう。これを追加すると物理計算が可能になります。重力を有効にして、重さは適当に決めていきましょう。collidarはbox collidarを追加していきます。
※Mesh Collidarを追加したいところですが、kinematic(静的)でないrigidbodyのmesh collidarはUnity5ではサポートしていないとのことなので断念。
Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported since Unity 5.
AddComponnet box collidar , rigidbodyを追加していきましょう。
もとからあるrigidbodyを設定していないコーンは落ちていきませんが、rigidbodyを設定したコーンは重力にしたがって落ちていきます。
buildしてみましょう。(build方法はこちらを参考)
autowareを起動して走行してみるとしっかりとconeがunknown objectとして認識されていました。
追記
lidarはmeshを読み込んでいるようなのでAWSIMとしては衝突判定がなく貫通してしまいますが、Autowareに送信されるpcdはmesh情報をもとに生成しているためAutowareとしては障害物判定されます。
カラーコーン3つ+っダンボール箱で停止というコースをはしってみましょう。
おわりに
unityのアセットを取り込むことでゲームの内容をガラッとかえることもできます今回は周辺パーツのみをとりこんでいましたが、アセットによっては環境まるごと取り込むこともできます。
いろいろなAWSIM〇〇cityを作ってみましょう。
補足
Unityに詳しくない方はHDRPのrender piplineでハマると思うので、こちらが参考になればと思います。
AWSIMに入れる前に一度サンプルシーンを作成し、HDRPにアセットが適合しそうか試してみると良いと思います。すべてがすべてupgradeできるというわけではなさそうでした。
HDRP(※)対応のassetであれば問題ないですが、なにも考えずにアセットをimportすると一面ピンクになるのでHDRPに変換しましょう。
※参考 https://unity.com/ja/srp/High-Definition-Render-Pipeline