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

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

ただいまの
回答率

90.00%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,337

kaz2zak

score 32

困っている点

・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の方が良いのでしょうか?

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

・疑問点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/25 08:16

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

    キャンセル

  • 2018/10/25 14:10

    syachang_bot 様

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

    キャンセル

  • 2018/10/25 14:13

    Bongo 様

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

    キャンセル

  • 2018/10/28 04:32

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

    キャンセル

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる