AWSIMにアセットを追加してみる

今回はUnityのアセットを使ってAWSIMを改造していきます。

今回は以下の順ですすめていきます。この記事の内容は1時間くらいあればできると思います。

1. unityのasset追加
1. unityのasset修正、追加変更
1. autowareとつなげる


## アセットを追加する

unityといえばアセットストアですね。他の人が作成したものを無料、有料で購入し自分のプロジェクトに取り込むことができます。

今回はじめに使用するアセットはこちらカラーコーンです。

https://assetstore.unity.com/packages/3d/props/exterior/construction-site-columun-pbr-137815

Unityに追加するというボタンがあるので追加していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/ae65728b-076c-a13d-508c-144a232238c1.png)

Unity側はWindow -> package manager -> package my assetからMyassetにチェックを入れると以下のような画面がみえてきます。一応 中央下の再読込ボタンからreflesh my assetしておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/72e283a4-d024-5ef1-788c-db9271784ddd.png)

download -> importとボタンを押していき追加していきます。

新しくimportしたアセットのフォルダができていれば成功です。

unityのサポート記事も参考になります: [購入したアセットをダウンロードするにはどうすればいいですか](
https://support.unity.com/hc/ja/articles/210112873-%E8%B3%BC%E5%85%A5%E3%81%97%E3%81%9F%E3%82%A2%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B-)


## HDRPを解決する

追加したアセットのprefabを追加するとこんな感じでカラーコーンがでてきます。

![Screenshot from 2023-03-05 11-12-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/7ae5f4bd-e12d-6c6b-dca5-e37aeadfa09c.png)


ピンク色ですね。。。おっとこれはマテリアルがHDRPが対応していなかったようなのでHDRPにupgradeしていきましょう。

カラーコーンのmaterialを選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/3360c2da-8f60-d39e-65bb-060c2feeb918.png)

Edit-> render pipline -> upgrade from build pipline -> upgrade selected materials to HDRP　を選択しましょう。（スクショとれなくて画像他のを使用したので右の森は無視してください）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/3058db4b-2bfc-447d-1429-a66b6cb745c6.png)

HDRPにupgradeできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/c25f78da-6a8f-8fd9-6f7d-f00125e90943.png)


参考までに（こちらはURP用の対応ですが、問題と解決方法は同じです）

https://qiita.com/kazuma_f/items/4d265c5615f1d441ffe9


もう少し追加していきましょう。今度は宝箱のアセットを追加していきます。

https://assetstore.unity.com/packages/3d/props/interior/treasure-set-free-chest-72345


このパッケージのHDRPへのupgradeは先程と同様の手順でやってみましょう。open versionとclose　versionがあるようです。どちらも映えますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/679c7a85-f559-f3bc-e780-9c0f4e41d44d.png)

（ピンク色のpreviewはそのうち直ると思います）コインを調整して、人も少し増やして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/69352eb7-5a70-69b4-a258-9bf7bacf49b4.png)

◯フィアシティーっぽくなってきました。お好みで銃も追加しましょう。

https://assetstore.unity.com/packages/3d/props/guns/sample-low-poly-guns-pack-207957

こんな感じにセットしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/22fb0e9c-ca2d-4e93-9261-447197838ef7.png)

この人の手へのtransformがないためstep実行してみると銃はこのままの角度のまま並行移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/d03c1e70-8f9d-db6b-f438-b7673fff1fdb.png)

人は並行移動しているので頭に銃を移動し、最近はやりのチェーンソーマンのように銃の魔人という設定なら行けそうです（何が？）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/88e4da59-8ec5-9542-23dc-7c54c210409f.png)

## アセットに工夫をしていきましょう。

もともとのコーンには衝突判定がないので、車両がすり抜けます。衝突判定を追加していきましょう。

衝突判定には様々あり、collisionは通常のボックス、球体、カプセルなどのほかにmeshなどがあります。Previewを見れるので直感的でいいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/4085895d-76f1-8d1f-80df-9a45f5b944f3.png)

AWSIMドキュメントにはmesh collidarとwheel collidarについて記載がありました。

https://tier4.github.io/AWSIM/Components/Vehicle/AddVehicle/

コーンにrigidbodyを追加していきましょう。これを追加すると物理計算が可能になります。重力を有効にして、重さは適当に決めていきましょう。collidarはbox collidarを追加していきます。

※Mesh Collidarを追加したいところですが、kinematic(静的)でないrigidbodyのmesh collidarはUnity５ではサポートしていないとのことなので断念。

Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported since Unity 5.

https://docs.unity3d.com/ja/2020.3/ScriptReference/Rigidbody-isKinematic.html


AddComponnet box collidar , rigidbodyを追加していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/6c62cc13-1a64-a554-1473-858cf1cf5c59.png)

もとからあるrigidbodyを設定していないコーンは落ちていきませんが、rigidbodyを設定したコーンは重力にしたがって落ちていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/292e6a2f-c822-3254-3716-43a3061b4062.png)

buildしてみましょう。（build方法はこちらを参考）

https://qiita.com/ttanaka3/items/01ffe06f95f4d7a03e8a

autowareを起動して走行してみるとしっかりとconeがunknown objectとして認識されていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/7c429170-8191-68f3-e9a6-c5a6340fd511.png)

https://assetstore.unity.com/packages/3d/props/industrial/cardboard-boxes-pack-hd-202666

追記

lidarはmeshを読み込んでいるようなのでAWSIMとしては衝突判定がなく貫通してしまいますが、Autowareに送信されるpcdはmesh情報をもとに生成しているためAutowareとしては障害物判定されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/0eab6e25-c52b-5f61-5d1b-4fab3e80d94e.png)

カラーコーン３つ＋っダンボール箱で停止というコースをはしってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/26b80878-a3a8-6a4e-61e7-67c1f8d074f8.png)

こんな感じで避けて走ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/e81a52f3-5380-e34e-f4a1-5ddc1df47f77.png)


## おわりに

unityのアセットを取り込むことでゲームの内容をガラッとかえることもできます今回は周辺パーツのみをとりこんでいましたが、アセットによっては環境まるごと取り込むこともできます。
いろいろなAWSIM〇〇cityを作ってみましょう。


## 補足

Unityに詳しくない方はHDRPのrender piplineでハマると思うので、こちらが参考になればと思います。
AWSIMに入れる前に一度サンプルシーンを作成し、HDRPにアセットが適合しそうか試してみると良いと思います。すべてがすべてupgradeできるというわけではなさそうでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/ceaec021-7543-d883-915e-262604abf293.png)

HDRP（※）対応のassetであれば問題ないですが、なにも考えずにアセットをimportすると一面ピンクになるのでHDRPに変換しましょう。

※参考　https://unity.com/ja/srp/High-Definition-Render-Pipeline

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/0a79c11d-cc01-f76c-4328-bb4bbc5690ca.png)