かごんま Advent Calendar 2020の13日目の記事です。
鹿児島のランドマークといえば桜島。
バーチャル桜島!
ということ、Unity上に桜島を自動生成するのをやってみました!
今回作ったものがコチラになります。
※パソコンの十字キーで操作できます。
この作品はユニティちゃんライセンス条項の元に提供されています。
地理院地図から3Dデータを入手する
①国土地理院のWebサイトの地理院地図にアクセスする。
②ツール>3D>カスタムを選択し、3D範囲を選択してOKボタンをクリックする。
③STLファイルをダウンロードする。
Blenderで3Dデータの形式を変換する
①Blenderを起動する。
②Cubeを削除する。
③ファイル>インポート>Stlを選択し、STLファイルをインポートする。
④ツールバーの「回転」を選択し、X軸方向に90度回転させる。
⑤ファイル>エクスポート>FBXを選択し、fbxファイルをエクスポートする。
今回は、ファイル名を sakurajima.fbx とする。
3DデータをTerrainに変換する
①Unityを起動する。
②作成>フォルダーを選択し、AssetsにEditorという名前のフォルダを作成する。
③作成>C#スクリプトを選択し、Editorの中にObject2Terrainという名前のファイルを作成する。
④以下のサイトの「Object2Terrain.cs」をコピー&ペーストする。
メニューにTerrain(地形)が追加される。
⑤Assetsにfbxファイルをドラッグ&ドロップする。
⑥HierarchyにAssetsのfbxファイルをドラッグ&ドロップする。
今回は、sakurajima という要素の中に
Camera, Light, Sakurajima という子要素が作成される。
⑦sakurajima または Sakurajima というオブジェクトを選択した状態で、
Inspectorにおいて Transform の Scale を設定する。
今回は、Sakurajima というオブジェクトの Scale を 10 10 10 に設定する。
⑧sakurajima というオブジェクトを選択した状態で、
メニューのTerrain(地形)から Object to Terrain を選択する。
Create Terrain というボタンをクリックして、3DデータをTerrainに変換する。
⑨Hierarchyに追加したfbxファイルを削除する。
今回は、Sakurajima というオブジェクトを削除する。
ユニティちゃんに桜島を走らせる
①Asset Store から Unity-Chan! Model をインポートする。
②Assetsの unity-chan! > Unity-chan! Model >Prefabs > for Locomotion から
unitychan をSceneにドラッグ&ドロップする。
③Hierarchyで unitychan を選択し、
Inspectorにおいて Transform の Position を設定する。
④HierarchyでMain Cameraを選択し、unitychanにドラッグ&ドロップする。
そして、Inspectorにおいて Transform の Position を設定する。
再生ボタンを押してゲームを起動すると、十字キーでユニティちゃんを動かせるようになる。
WebGLで出力する
①ファイル>ビルド設定…を選択する。
②プラットフォームという項目からWebGLを選択して、Switch Platformというボタンをクリックする。
③ビルドというボタンをクリックして、WebGLで出力する。
今回は、以下のコードを用いて記事に埋め込んでいます。
<div style="margin: 0 auto; width: 640px; height: 360px">
<iframe src="https://miraiportal.com/wp-content/uploads/unity/sakurajima" width="100%" height="100%"></iframe>
まとめ
国土地理院のデータを使って桜島の地形を自動生成して、
WebGLで出力するところまでやってみました。
実際に操作して見てもらえるカタチにできたのは
個人的に良かったかなと思います。
正直、色も草木も建造物もないただの起伏って感じですが、
そこは大目に見てもらえると幸いです(苦笑)