[iOS 11][ARKit] 新登場! Googleの3Dオブジェクトライブラリ Poly が便利すぎる
1 はじめに
先週末(現地時間 2017年11月1日)、無料で使える3Dオブジェクトを集めたライブラリサイトPolyが、Googleによって公開されました。
Polyでは、既に多数の作品が公開されており、カテゴリからの選択や、キーワードによる検索ができるようになっています。
キーワードを入力して検索できる
左上のハンバーガーメニューからカテゴリを選択できる
ライセンスは、基本的にクリエイティブ・コモンズ・ライセンスとなっており、個々の作品をダウンロードする段階で、詳しく表示されます。
ダウンロードできるファイルは、Googleの「ARCore」だけでなく、ARKitでも利用可能です。 今回は、早速、ダウンロードして使ってみました。
2 Blenderによる変換
今回使用させて頂いた3Dモデルは、Naomi Chen氏の作成されたCube Room です。
ダウンロードを選択すると、.obj(Advanced Visualizer形式)のファイルがダウンロードできます。.objは、そのままでもXcodeに取り込めるのですが、一部の情報は欠落してしまうため、一度、Blenderにインポートして .dae (COLLADA形式)に変換してから使用しました。
変換すると、Macのプレビューでそのまま見ることができます。
Xcodeに取り込んだ .daeは、メニューから Editor > Convert to SceneKit secene file formatを選択して.scnファイルに変換できます。
また、Materialsには、改めてテクスチャーを適応し直します。
3 ARKit からの利用
ここまでくれば、ARKitからの利用は、簡単です。scnファイルからオブジェクトを抜き出して、これを、メインのシーンに入れるだけです。
// シーンファイルの読み込み let scene = SCNScene(named: "art.scnassets/house.scn")! // シーンファイルからオブジェクトを抽出する let houseNode = scene.rootNode.childNode(withName: "obj", recursively: true)! // スマフォ画面の中央を基準に配置する if let positon = getCenterPosition() { houseNode.position = positon sceneView.scene.rootNode.addChildNode(houseNode) }
なお、オブジェクトの配置に際しては、事前に平面を検出し、双方を物理演算の対象設定しています。平面検出や衝突検知については、下記をご参照ください。
[iOS 11] ARKitでソファー設置からあの子の身長測定まで色々やってみた
次の動画は、動作しているようすです。
4 最後に
「何かいいモデルはないかな?」と探している時には、マウスでグリグリ操作して確認できるビューアーが非常に嬉しいです。ダウンロードして展開することなく、自分の求めているものかどうか素早く確認できます。
Polyは、3Dオブジェクトを求める開発者には、非常に嬉しい存在となるのではないでしょうか。
今回のコードは、下記に置きました。参考になれば幸いです。
[GitHub] https://github.com/furuya02/ARKitPolySample
5 参考リンク
Poly https://poly.google.com/
[OS X] 透過型のTwitterクライアントを作ってみた
[iOS 11] はじめてのARKit #WWDC2017
[iOS 11][ARKit] 距離の計測について #WWDC2017
[iOS 11][ARKit] 平面の検出について #WWDC2017
[iOS 11][ARKit] 物理衝突を実装して、キューブを落として見る #WWDC2017
[iOS 11][ARKit] 空間に3Dテキストを表示してみる #WWDC2017
[iOS 11] ARKitでソファー設置からあの子の身長測定まで色々やってみた
[iOS 11][ARKit] 近所の駐車場で、大型ディスプレイでビデオを見る!
[iOS11][ARKit] オブジェクトの位置と回転「常にこっちを向いている怪獣」
[iOS11][ARKit] SCNBoxとSCNTextでラベルみたいなノードを作成してみました
[iOS 11][ARKit] UIViewをテクスチャーにしてTwitterクライアントを作ってみる