開発環境
- Unity2018.2.11f1
- Poly Toolkit 1.1
概要
unityroom で開催されたオンラインゲームジャムイベント Unity1週間ゲームジャム お題「あつい」にて、自分は「牛がステーキを程々の焼き加減で焼く」ゲームを作りました。 こちら からプレイできます。
背景の火山のモデルや牛のモデルに関して、Polyというサービスを利用しました。
今回はその使い方について記載します。
Polyとは
Poly は2017年にGoogleが公開開始した3Dオブジェクトのライブラリです。
試しに French fries のオブジェクトを見てみましょう。
このページからはオブジェクトのダウンロードを行うことが出来ます。
(このオブジェクトに関しては obj
形式か glTF
形式を選択することが出来ます)
権利表記に注目すると CC-BY 3.0
で提供されていることが確認できます。
このモデルは制作者のクレジット(氏名、作品タイトルなど)を表示することを条件に自由に使用できます。
UnityでPolyのオブジェクトを扱う
では Poly のオブジェクトを Unity で呼び出してみましょう。
先ほどの詳細ページの動線からは OBJ
形式か glTF
形式でダウンロードすることが出来ました。
しかし obj
形式は同梱の mtl
ファイルをUnity標準で解釈することが出来ないためマテリアルを付与出来ません。
また glTF
形式に関しても インポート用のアセット を使用する必要があります。
今回はもっと簡単/直感的にインポートを行うため「Poly Toolkit」というアセットを使用します。
Poly Toolkitを使用する
Poly Toolkit はモデルの検索 / glTF
形式のモデルのインポーターがセットになったアセットです。
導入
(公式のドキュメントはこちら)
https://developers.google.com/poly/develop/unity
AssetStoreにてDL/インポート直後に以下の例外が出ます。
これは ImportGltf.cs
にて unsafe
コードが含まれているためです。
Unityでは初期設定では unsafe
の使用は認められていないため、 PlayerSettings
にて設定を変更します。
以下の項目にチェックを付けることで、コンパイルが走り、例外が消えます。
モデルの検索
上部メニューより Poly > Browse Asstes...
を選択します。
Search ...
よりモデルを検索します。
モデルのインポート
モデルを選択すると詳細画面が表示されます。
Recenter
が有効の場合、ピボットはオブジェクトの重心に設定されます。
無効の場合は元のファイルにて指定してあるピボットが利用されます。
ファイル側に意味のあるピボットが設定されていない限り、有効で問題ありません。
Also Instantiate
は生成したオブジェクトのPrefabをSceneにも配置するかどうのか設定です。
(無効にした場合でも自分でScene上に配置すれば何も問題はありません)
Rescale Mode
はオブジェクトのScaleを決定する方法です。
CONVERT
は Poly Toolkit の設定に基づいて、大きさを指定します。
(Poly Toolkit の設定は PolyToolkit/Resources/PtSettings
という ScriptableObject を参照)
ここで指定した単位 × Scale factor
で指定した数値によって大きさが決定します。
FIX
は Unity の Scene の Scale に合わせた大きさとなります。
例えば Desired size
に 10 を指定した場合 x:10
/ y:10
/ z:10
のキューブに収まる大きさとなります。
(個人的には FIX
の方が扱いやすく感じます)
設定したら Import into Project
を選択してインポートします。
(設定項目を調整したくなった場合、項目を変更して再度 Import into Project
すると Prefabが
上書きされます)
こうして任意のオブジェクトをインポートし、Sceneに配置することができました。
WebGLのビルド
今回はWebGLでビルドしてみます。
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を押すとビルドが続行します。
ビルド中に例外が発生しました。
Newtonsoft
のnamespaceが見つからないとのこと。
(Newtonsoft.Json
は PloyToolkit に含まれるサードパーティのライブラリ)
Newtonsoft.Json
自体は存在するはずなので dll
の設定を確認します。
すると WebGL
のチェックが外れているので、チェックを入れます。
これによりビルドが通り、WebGLのプレイヤーが再生されることが確認できました。
まとめ
- 著作権表記(制作者/URL)を行う
- 適切なScaleを選択する
- ビルド時の設定を確認する
上記3点に気を付ければ、無料でローポリ3Dモデルを使えます。
アイデアのベースにしたり、装飾を増やしたりする目的で試してみるのはいかがでしょうか。
===
木のモデルは以下をお借りしました
「Pine Tree」
https://poly.google.com/view/2Qo-fmVKuSG
created by Danny Bittman