質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

2回答

4911閲覧

3Dファイルの拡張子選択について

kaz2zak

総合スコア36

STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

1クリップ

投稿2018/10/24 11:49

編集2018/10/24 11:52

#困っている点
・Wavefront objファイルが他の拡張子と比較し,見た目が滑らかなように感じるが,どのような理由でそう見えるのか.
・使用する3Dファイルの拡張子によりデータ容量も異なるため,どの拡張子が最適なのか
・みなさんどのように選択されているか
#背景
病院にあるCTの画像 (DICOMデータ) からSlicerというソフトを使用し,臓器を抽出して3D化しています.
Slicerからエクスポートできるのはobj,stl,plyファイルです.

この3Dデータは非常にポリゴンが多いので,Blenderを使用しポリゴン削減を行っています.
その後,Unity上でインポートし,VRに出力しています.
BlenderとUnityで互換性のある拡張子はfbx,obj,3dsがあるかと思います.

#疑問点1
Slicerから出力する際に,拡張子によって以下のように視覚的な差異があるように感じます.

(上からobj,stl,plyファイル)

オブジェクトファイル

stlファイル

plyファイル

しかし,ワイヤーフレームで表示すると,3つのファイルとも同一でした.
ワイヤーフレーム

objファイルとstl,plyファイルではobjファイルの方が滑らかに見えていましたが,これはobjのマテリアルに格納されている色やライトによる効果で滑らかに見えるようになっているのでしょうか?
ポリゴン削減前の比較になりますが,
obj : 9.2 MB / stl : 6.3 MB / ply : 2.41 MB
と大きく異なるのでどの拡張子を選択するべきかも悩んでいます.

#疑問点2
例えば,objファイルを用いてポリゴン数を98%削減した上でエクスポートすると拡張子により以下の通りのデータ容量になりました.
fbx : 86kB (ライト情報削除:84 kB) / obj : 150kB / 3ds : 41kB
Unity上でライトや色などマテリアルは調整するので,エクスポートする際に格納されている必要はありません.
今までは何となくfbxファイルを使用していましたが,3dsでも良いのかなとも思い始めました.

汎用性という観点ではfbxの方が良いのでしょうか?

みなさんどのような観点から使用するファイルを選択されているのでしょうか.

大変長くなりましたが,ご教示頂けると幸いです.
よろしくお願い致します.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

・疑問点1について
3D Slicerを触ったことはありませんが、3Dモデル一般の話として回答します。

もし、ワイヤーフレームで見た時にポリゴンレベルで同等にも関わらず、見た目のルックや質感に違いが出るとしたら、(ひとつはライティングの影響もありますが)テクスチャマップの有無によるものだと思います。

テクスチャマップについては、下記資料をご参照ください。
https://3dtotal.jp/tutorials/1627/2/

また、数メガ程度の違いであれば、個人的には意識しなくて良いサイズかと思います。数百メガのオーダーになり、読み込みやビューア動作で遅くなる影響が出てから改めてリトポ(ポリゴン数削減)を考えるのが良いのではないでしょうか。

・疑問点2について
3Dファイルの形式については、Unityで運用する上で何か問題が出なければどれでも構わないかと思います。
ファイルフォーマットが何なのかは、モデルデータをどう用意するか(例えばAutodeskのツールを常用しているのか、Unityのアセットストアで入手したFBXファイルを利用するのか、等)による部分が大きいですが、フォーマットの差異はたいていはUnityが自動的に吸収してくれるハズです。

サイズの違いについては、ファイル内にテクスチャを含むかどうか、メッシュのリトポをどの程度行ったか等によります。

ルックの違いについては、もしUnityでStandardシェーダーを使い、かつモデルデータのエクスポートツールが各種のテクスチャマップを出力できるなら、それを適用するとファイルフォーマットによる違いは無くなるハズです。
(※Unityではセカンダリマップとも呼ぶようです
https://docs.unity3d.com/ja/current/Manual/StandardShaderMaterialParameterDetail.html)

投稿2018/10/24 14:09

sayachang_bot

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bongo

2018/10/24 23:16

他には頂点毎の法線データの有無も気になりますね。 OBJは法線を持たせられますが、STLは面単位の法線のみで、頂点単位の法線は扱えなかったかと思います。PLYについてちょっと調べてみたところでは、独自の頂点属性として法線を持たせることはできそうですが、法線属性が共通の規格として定まっているわけではなさそうです。 おそらくOBJだけが法線データの読み込みに成功して、なめらかな陰影が付いたのではないでしょうか?
kaz2zak

2018/10/25 05:10

syachang_bot 様 とても分かりやすい解説をありがとうございました. フォーマットを選択する上でとても参考になりました. 現在,Oculus GOを利用しています.CTの画像はmatrixが512×512であり,枚数も数百枚あるので,骨だけでも200MBくらいになるのでリトポが必要でしたが,見え方の違いの理解を深められたことで,とてもすっきりしました. ご丁寧にご教示頂きありがとうございました.
kaz2zak

2018/10/25 05:13

Bongo 様 objのみ頂点ごとの法線データを持っているため,滑らかに見えるのですね! その分,他のフォーマットと比較し,データ容量が大きくなっていたということでしょうか. とても分かりやすいご説明でした. 理解を深めることができました.ありがとうございました.
ikadzuchi

2018/10/27 19:32

今回の場合はテクスチャではなくライティング(というよりシェーディング)の違いが一番の原因ですね。滑らかな方はグーローシェーディングに見えます。(滑らかでない方はフラットシェーディング) グーローシェーディングには頂点ごとに法線情報が必要なので、OBJのみ頂点に法線を持てるというならそれの影響でしょうかね。無くても頂点座標から面の法線を求め、それを平均することで頂点の法線を求めることは可能ですが。
guest

0

VRに出力しています.

こちらを見落としていたので、改めてサイズについて追記します。

Oculus RiftやHTC VIVEで利用するのであれば、おそらくハイエンドなゲーミングPC相当のスペックだと思いますので、数メガ程度であれば私であれば気にしません。
もし臓器や骨格標本のような複雑なモデルを大量に表示するのであれば、リトポを検討するか、そもそも表示する個数を制限します。

また、HoloLensやOculus GOのように、スペックがそこまで高くないスタンドアロンのプラットフォームで利用するなら、テクスチャマップをベイクかペイントし、メッシュは可能な限り(見た目が著しく悪くならないレベルで)リトポすることを検討すると思います。

投稿2018/10/24 14:17

sayachang_bot

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問