#Unity

[Unity] GooglePolyを使ってローポリ3Dオブジェクトを検索/配置する

開発環境

  • Unity2018.2.11f1
  • Poly Toolkit 1.1

概要

unityroom で開催されたオンラインゲームジャムイベント Unity1週間ゲームジャム お題「あつい」にて、自分は「牛がステーキを程々の焼き加減で焼く」ゲームを作りました。 こちら からプレイできます。

steak5.gif

背景の火山のモデルや牛のモデルに関して、Polyというサービスを利用しました。
今回はその使い方について記載します。

Polyとは

poly1.png

Poly は2017年にGoogleが公開開始した3Dオブジェクトのライブラリです。
試しに French fries のオブジェクトを見てみましょう。

poly1.gif

このページからはオブジェクトのダウンロードを行うことが出来ます。
(このオブジェクトに関しては obj 形式か glTF 形式を選択することが出来ます)

poly2.png

権利表記に注目すると CC-BY 3.0 で提供されていることが確認できます。
このモデルは制作者のクレジット(氏名、作品タイトルなど)を表示することを条件に自由に使用できます。

UnityでPolyのオブジェクトを扱う

では Poly のオブジェクトを Unity で呼び出してみましょう。
先ほどの詳細ページの動線からは OBJ 形式か glTF 形式でダウンロードすることが出来ました。
しかし obj 形式は同梱の mtl ファイルをUnity標準で解釈することが出来ないためマテリアルを付与出来ません。
また glTF 形式に関しても インポート用のアセット を使用する必要があります。

今回はもっと簡単/直感的にインポートを行うため「Poly Toolkit」というアセットを使用します。

Poly Toolkitを使用する

poly3.png

Poly Toolkit はモデルの検索 / glTF形式のモデルのインポーターがセットになったアセットです。

導入

(公式のドキュメントはこちら)
https://developers.google.com/poly/develop/unity

AssetStoreにてDL/インポート直後に以下の例外が出ます。

poly4.png

これは ImportGltf.cs にて unsafe コードが含まれているためです。
Unityでは初期設定では unsafe の使用は認められていないため、 PlayerSettings にて設定を変更します。
以下の項目にチェックを付けることで、コンパイルが走り、例外が消えます。

poly5.png

モデルの検索

上部メニューより Poly > Browse Asstes... を選択します。
Search ... よりモデルを検索します。

poly2.gif

モデルのインポート

モデルを選択すると詳細画面が表示されます。

poly6.png

Recenter が有効の場合、ピボットはオブジェクトの重心に設定されます。
無効の場合は元のファイルにて指定してあるピボットが利用されます。
ファイル側に意味のあるピボットが設定されていない限り、有効で問題ありません。

Also Instantiate は生成したオブジェクトのPrefabをSceneにも配置するかどうのか設定です。
(無効にした場合でも自分でScene上に配置すれば何も問題はありません)

Rescale Mode はオブジェクトのScaleを決定する方法です。
CONVERT は Poly Toolkit の設定に基づいて、大きさを指定します。
(Poly Toolkit の設定は PolyToolkit/Resources/PtSettings という ScriptableObject を参照)
ここで指定した単位 × Scale factor で指定した数値によって大きさが決定します。

poly7.png

FIX は Unity の Scene の Scale に合わせた大きさとなります。
例えば Desired size に 10 を指定した場合 x:10 / y:10 / z:10 のキューブに収まる大きさとなります。
(個人的には FIX の方が扱いやすく感じます)

poly3.gif

設定したら Import into Project を選択してインポートします。
(設定項目を調整したくなった場合、項目を変更して再度 Import into Project すると Prefabが 上書きされます)
こうして任意のオブジェクトをインポートし、Sceneに配置することができました。

poly8.png

WebGLのビルド

今回はWebGLでビルドしてみます。

poly9.png

https://developers.google.com/poly/develop/unity#mobile_build_issues
に記載してある通り .NET 2.0 Subset を使用すると実行時に例外が走る可能性があります。
Scripting Runtime Version.NET 4.X に引き上げるか
API Compability Level.NET 2.0 に設定します。
OKを押すとビルドが続行します。

poly10.png

ビルド中に例外が発生しました。
Newtonsoft のnamespaceが見つからないとのこと。
(Newtonsoft.Json は PloyToolkit に含まれるサードパーティのライブラリ)
Newtonsoft.Json 自体は存在するはずなので dll の設定を確認します。
すると WebGL のチェックが外れているので、チェックを入れます。

poly11.png

これによりビルドが通り、WebGLのプレイヤーが再生されることが確認できました。

poly12.png

まとめ

  • 著作権表記(制作者/URL)を行う
  • 適切なScaleを選択する
  • ビルド時の設定を確認する

上記3点に気を付ければ、無料でローポリ3Dモデルを使えます。
アイデアのベースにしたり、装飾を増やしたりする目的で試してみるのはいかがでしょうか。

===

木のモデルは以下をお借りしました
「Pine Tree」
https://poly.google.com/view/2Qo-fmVKuSG
created by Danny Bittman