3DデータをGPBに変換

目次

はじめに

 ここまでサンプルとして用意されていたアヒルの3Dモデルを使ってやってきましたが、そろそろ自分で用意した3DモデルをHSP3とhgimg4を使って表示してみたくなってきました。 hgimg4ではGPB形式の3Dモデルデータに対応していますが、公開されているフリー素材はFBXやOBJ形式などばかりでGPB形式は入手が困難です。

 そこでHGIMG4 Unity連携ガイドでは、Unityを使った3Dモデルデータの準備方法が紹介されています。 この方法ならUnityで読み込むことが出来たモデルならHSP3用に変換して利用することが出来るので、データの入手に困るということがなくなります。

 紹介されている変換手順を使えばアニメーションデータも同梱した状態で利用できるのですが、手順や注意点が増えるので今回は保留します。 ここではアニメーションなしのモデルを準備してHSP3で表示させます。また後半では、3D地図データをHSP3で利用する例を紹介しています。

UnityHubをインストール

 Unityを単独で導入すると、プロジェクトやバージョンの管理に手間がかかるようです。 現在は、UnityHubを使うことで管理がしやすくなっています。また日本語化も簡単なのでオススメです。

 インストール方法はこちらを参考にしてください。なお、Unity IDアカウントの作成は不要です。

【初心者向け】Unityのダウンロード方法とインストール方法、Asset Storeを詳しく解説
https://school.dhw.co.jp/word/cg/Unity_install.html

 インストールが完了したら日本語化します。

Unityを日本語化する方法【2021年版】【初心者向け】
https://dkrevel.com/unity-explain/unity-japanese/

 将来的にはバージョンアップで手順が変わることがあります。その場合は、都度インストール方法を確認してください。

プロジェクトを作成

 まずは作業場所を準備するため、Unityのプロジェクトを作成します。 プロジェクトの新規作成は、先程のインストールを解説するサイトに説明があるのでそちらもご一読ください。

  1. UnityHubを起動して、右上の「新規作成」ボタンをクリックします。
    新しいプロジェクトを作成ダイアログが開きます。
    新規作成ボタン
  2. テンプレートで「3D」を選択し、適当なプロジェクト名をつけて「作成」をクリックします。
    プロジェクト名を指定して作成

プロジェクトが作成されました。 日本語化をまだしていない場合は、Edit>Preferences>Language と進んで、Editor language をJapaneseに変更しておきましょう。

FBX Exporterを導入

 作成したプロジェクト内に3Dモデルを表示してFBXファイルにエクスポートする手順なのですが、標準ではこの機能はついていません。 UnityにFBXをエクスポートする機能を追加する作業が必要です。次のような手順になります。

  1. メニューから ウィンドウ>パッケージマネージャ
    パッケージマネージャが起動します。
    パッケージマネージャ
  2. パッケージを「Unity レジストリ」に設定します。
    Unity レジストリ
  3. 「FBX Exporter」を探して、右下の「インストール」ボタンをクリックします。
    FBX Exporter
  4. インストールが完了したらパッケージマネージャの右上の[×]をクリックして閉じてください。

この作業はプロジェクトを新しく作成するたびに毎回必要です。

モデル作成

 Unityで適当なモデルを作成してみます。

  1. UnityHubを起動して、右上の「新規作成」ボタンをクリックします。
    新しいプロジェクトを作成ダイアログが開きます。
  2. テンプレートで「3D」を選択し、適当なプロジェクト名をつけて「作成」をクリックします。
  3. メニューから ゲームオブジェクト>3Dオブジェクト>キューブ
    を選択します。ヒエラルキーに「Cube」が追加され、シーンに立方体(Cube)が表示されました。 ゲームオブジェクト>3Dオブジェクト>キューブ

 テクスチャも貼られていない白い立方体が出来ました。 この時点で3Dモデルの名前を変更することは可能ですが、日本語やスペース文字を使用しないでください。 この後のGPB変換作業の際に失敗してしまいます。

3DモデルをFBXファイルにエクスポート

 先ほど作成した立方体「Cube」をFBXファイルにエクスポート(出力)します。 別途入手した3Dデータがある場合は、そちらを使用しても構いません。

  1. ヒエラルキーに表示されている「Cube」をクリックして選択します。
    シーンにキューブが追加された。
  2. メニューから ゲームオブジェクト>Export To FBX...
    を選択します。エクスポート設定ダイアログが開きます。
    Export To FBX...
  3. 次のように設定します。
    Export Format:Binary
    Include:Model(s) Only(今回はアニメーションデータを含まないため。)
    Export Options
  4. 「Export」をクリック。
    AssetsフォルダにFBXファイルが出力されます。
  5. Assetsフォルダの欄で右クリックして「エクスプローラで表示」を選択すると、Assetsフォルダがエクスプローラで表示されます。
    地図を選択

 FBXファイルが正常に作成されたかどうかを確認します。

  1. Windows10付属の「3D ビューアー」を起動します。
    3D ビューアー
  2. 作成したFBXファイルを3D ビューアー上にドラッグ&ドロップします。

 3Dモデルが正しく表示されれば、正常に作成されています。 白い立方体なのでよくわからないと思いますが、回転するなどして確認してください。 もし何も表示されていない場合は、変換が正しく行われていません。手順を確認してください。

 ここまでできたらUnityは終了して構いません。

FBX → GPB 変換

 作成したFBXファイルをhgimg4が対応しているGPB形式に変換します。

  1. 作業フォルダを準備してください。
    作業フォルダのパス中に、日本語やスペース文字が含まれないことを確認してください。
  2. 作業フォルダ内に、FBXファイルをコピーしてください。
    テクスチャ画像は、ここではまだ必要ないのでコピーする必要はありません。
  3. GPB converterを起動してください。
    HSPスクリプトエディタのメニューから ツール>HGIMG4ツールを開く
    から開く方法が手軽で便利です。
  4. モデルデータにFBXファイルを指定して、右下の「変換」ボタンを押してください。
  5. 変換が完了すると作業フォルダにGPBファイルとmaterialファイルが作成されます。
    GPBファイルとmaterialファイル
  6. resフォルダを作成して、作成したGPBファイルとmaterialファイルを入れます。
  7. HSP3のHGIMG4のサンプルフォルダから shaders フォルダをresフォルダにコピーします。
  8. テクスチャを使用している場合は、テクスチャの画像ファイルもresフォルダに入れます。 今回はテクスチャなしの3Dモデルなのでこの作業は必要ありません。

 これで変換作業は完了です。 アヒルの3Dモデルを表示するのと同じ要領で、作成したGPBファイルを読み込むことができます。

地形データ

 ここからはインターネット上で配布されているデータを使った具体的な手順を紹介してみます。 モーションデータが絡むと少しやることが増えるので、ここでは地面用のデータを例に勧めていきます。

 hgimg4では、gpfloorを使えば床ノードとして四角形の平面が作成できますが、凹凸のある地形は作成できません。 凹凸のある地形を使用する場合は、通常のノードオブジェクトと同様の手順になります。 山や谷、平地がある地形の3DデータをGPBファイルで準備し、gploadで読み込むという手順になります。

 「なるほどUnityでTerrain(地形)作成機能を使えばいいのか!」とUnityが得意なユーザーさんならすぐに気がづくと思います。 UnityのTerrainを使えば、地面に凹凸を作ったり、テクスチャを貼ったりといろいろな作業ができて大変便利です。

 しかしFBX Exporterは、TerrainのFBXにエクスポートに対応していません。 ファイルは作成されますが、正常なFBXファイルが作成されません。 2022年4月現在、TerrainをFBXファイルにエクスポートする簡単で手軽で無料の方法はありません。 地形データを利用したい場合、Blenderで自作するかフリー素材として配布されているものを使用する必要があります。 少し残念ですね。

 Blenderを新たにインストールするのはまたの機会にやるとして、公開されている素材データを使ってみます。

地図データを入手して表示する

 日本の国土の3D地形データを入手してHSP3上で表示してみます。 データは国土地理院(https://www.gsi.go.jp/)で配布されているものを使用します。 利用条件はありますが、ゲーム利用ならフリー素材として出典明示だけで使用できるようです。

 GoogleMapのデータ利用は有料で、利用にも色々と制約があるようです。 一方で国土地理院は地図データ以外にもタダでお腹いっぱいになるくらいの大量のデータを開放してくれています。 太っ腹というか地図大好き過ぎの人たちの集団のような気がします。

  1. 地理院地図(https://maps.gsi.go.jp)にアクセスします。
  2. 左上に「地図を選択」アイコンがあるのでクリックする。
    地図を選択
  3. 「写真」を選択。
    ここで選択したものがテクスチャになります。
  4. 3D出力したい場所を拡大する。
  5. ツール>3D>カスタム
    カスタム
  6. 四角い枠が表示されるので、出力したい範囲を選択。
    範囲を選択
  7. 「OK」3Dのサンプルが表示され、画面下にダウンロードボタンが現れる。(STL/VRML/WebGL/OBJ)
    サンプル
  8. 「OJBファイル」の「ダウンロード」をクリック。
  9. OBJ、MTL、テクスチャ画像をダウンロードする。
  10. 適当なフォルダを作って3ファイルを入れる。
  11. Unityの「プロジェクト」ウィンドウのAssetsに先程作ったフォルダをドラッグ&ドロップする。
  12. Assetsに放り込んだフォルダを開いてdem.objをヒエラルキーにドラッグ&ドロップする。

 シーンにモデルが表示されます。以降のFBXへのエクスポートとGPBファイルへの変換操作は前述した方法と同じです。 なお、FBXにエクスポートする際の設定は次の通り。

Export Format : Binary
Include : Model(s) Only

 HSP3上に表示する際は少し注意点があります。

  • HSP3とHGIMG4を使用してモデルを読み込むプログラムを作成します。gploadで読み込んでください。
  • そのままでは大きすぎて表示できないので、setscaleで1/100ぐらいにして、カメラ位置を調整してください。

 スケールの調整がうまくできていない場合は何も表示されません。 エラーが出なければGPB変換はうまく行っているはずなので、スケールをうまく調整してください。

HSP3で表示

地形データの利用規約

 個人利用以外を目的にする場合(公開を目的にする場合)は、利用規約を確認してください。
地理院地図 利用規約(https://maps.gsi.go.jp/help/termsofuse.html)

 今回のような地図データは、測量成果に分類されるので申請が不要な利用に該当するか確認が必要です。こちらをご確認ください。

 ざっと見た感じでは、地図の利用手続パンフレット【PDF形式:622KB】の2ページ目の利用手続フローがわかりやすいと思いました。 ゲームで利用する場合、通常は「地図としての利用が想定されていない」「測量成果としての正確さを要しない」に該当するので申請は不要だと考えて良さそうです。ただし「出典明示」は必要です。

 出典明示だけでこの高精度で大量のデータが使い放題なのはとってもお得ですね。

出典

このページで掲載している地図画像データについて。

出典:地理院地図(https://maps.gsi.go.jp

関連記事

  1. 3D地図データを軽量化する はじめに Unity IDを作成 アセットストアで無料アセットを購入する Unityを起動してサイン...
  2. 地表を歩く 地表を歩かせよう サンプル 大まかな手順 gppraytest 地面に垂直な線分 線分と地面モデルと...
  3. 接地判定 はじめに 上下速度による接地判定 衝突情報による接地判定 レイによる接地判定 総合判定 まとめ  人...
  4. 地形データの制限  床面といえばgpfloorなのですが、ポリゴンを使って複雑な地形とか作りたい! 今まで適当に作った...
  5. 測地座標を直交座標に変換 はじめに 地図データを入手 計算式を入手 用語解説 測地座標系→地心直交座標系 地心直交座標系→測地...
  6. 測地座標をメルカトル図法に変換 あらすじ メルカトル図法 換算式 ミラー図法 換算式  どうせ簡単だろうと高を括って測地座標を直交座...
  7. mod経緯度 前の画像 次の画像 mod経緯度 Ver.1.00 (2020/05/18) ダウンロード(15.6...