Help us understand the problem. What is going on with this article?

3Dモデルを iOS アプリで動かす【その1】3Dモデルのファイルフォーマット

More than 5 years have passed since last update.

3Dプリンターやら何やらのブームで、最近いろいろと ◯◯ の 3D データ公開!みたいなニュースをよく見かけます。

が、自分は 3D まわりの知識がまったくなく、おもしろそうだけど「おもしろそうだなー」で終わってたので、それでは寂しい、ということで 3D モデルデータのファイル形式 について調べるところから、 iOS アプリ内で 3D モデルデータを表示する ところまでやってみました。

まずは 3D モデルのファイル形式について。

STLファイル(拡張子 .stl)

ホンダやスミソニアン博物館の3Dデータとかはこれ。 3Dプリンタの標準データ形式 として使われているようです。

3Dプリンタは、3Dデータを元に動作し(正確にはGコードなどのツールパスデータを元に動作するのだが、その元となるのが3Dデータである)、物体を造形する装置である。しかし、一口に3Dデータといっても、その形式はさまざまだ。例えば、動画データには、QuickTime形式やAVI形式、MP4形式などさまざまな形式(フォーマット)があり、動画再生ソフトや動画編集ソフトによって対応している形式が異なる。3Dデータも事情は全く同じで、3D CADソフトや3D CGソフトによって対応している形式が異なる。ほとんどの3D CADソフトや3D CGソフトは複数のデータ形式に対応しているが、標準で保存される形式はソフトによって異なる。ソフトによって保存するデータ形式が異なっていては、3Dプリンタ側でその全てに対応するのは困難だ。そこで、3Dプリンタでは通常、STL(STereoLithography)形式と呼ばれる3Dデータ形式が使われている。

色情報は持っていない とのこと。

STL形式は色情報も持たないため、基本的に単色で出力する熱溶解積層方式や光造形方式、粉末焼結方式の3Dプリンタで使われ、フルカラーでの出力が可能な粉末石膏方式の3Dプリンタでは、PLY形式、VRML形式といった色情報を持った3Dデータ形式が利用されている。

Pleasant3D で見てみる

まずはビューワーアプリで Mac 上で表示してみます。

ググって一番上に出てきた Pleasant3D というアプリをダウンロード&インストールし、ホンダのデータを表示してみると、

honda.jpg

あっさりうまくいきました。

STL参考記事

3D Systems社のSLA CADというソフト用のファイルフォーマットです。
多くの解析ソフトがサポートし、三角形メッシュソリッド表現ファイルフォーマットとして広く使用されています。

OBJファイル

Perfume のデータ形式がこれ。また前述したスミソニアン博物館は STL 形式も提供してますが、この OBJ 形式のデータも提供してます。

正式には Wavefront OBJ 形式。

STL との違いとしては、『別に材質ファイル(.mtl)を用意して,オブジェクトファイル(.obj)から 読み込むことで表面材質やテクスチャも指定できる』ようです。

材質ファイルには,

- 拡散反射成分 : Kd
- 鏡面反射成分 : Ks
- 環境光反射成分 : Ka
- アルファ値(透過率) : d
- 発光色 : Tr
- Shininess : Ni
- 照明モデル(1で鏡面反射無効, 2で有効) : illum
- テクスチャ : map_Kd

を記述できる.

MeshLab で見てみる

MeshLab で見れました。

mammoth.jpg

また、Photoshop でも表示できました。

mammoth2.jpg

MODELファイル

(※先に書いておくと、本項は蛇足です)

iOS Dev Centerの "GLEssentials" というサンプルに入っていたモデルファイルが、 "demon.model" となっていたので、これは何だろうとググってみると CATIA というCADソフトの出力形式らしく、無償のビューワソフトみたいなのもない、とのこと。

そんなプロプライエタリな形式が Apple のサンプルコードで使われるはずがない・・・と思い、サンプル内のコードを読むと、

filePathName = [[NSBundle mainBundle] pathForResource:@"demon" ofType:@"model"];
m_characterModel = mdlLoadModel([filePathName cStringUsingEncoding:NSASCIIStringEncoding]);

と読み込まれていて、この mdlLoadModel という関数が実装されているファイル "modelUtil" を見てみると、ヘッダには

Functions for loading a model file for vertex arrays. The model file
format used is a simple "binary blob" invented for the purpose of
this sample code.

とあって、結論としては CATIA とは無関係の、このサンプル用ファイルっぽいです。

demon.jpg

(demon.model)

3Dデータのダウンロードサイト

3Dプリンター用のSTLデータをダウンロードできるサイトを探そう!

  • 海外/国内の3Dデータダウンロードサイトのまとめ
  • 各リンクにコメントつき
  • 2014年3月の記事なので、情報が新しい

無料で3Dモデルをダウンロードできる60のサイト

  • 海外記事の翻訳記事
  • 全部は訳されてなくて、「続きは元記事へ」

つづきます

【その2】PowerVR Insider SDK に続きます。

iOSアプリに3Dモデルを読み込むための PowerVR Insider SDK について。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした