メインコンテンツへスキップ
見出し画像

SAM 3Dの紹介~2Dから3Dデータへ


    1.概要

     Metaが2025年11月19日に発表したSAM 3D(Segment Anything Model)を紹介します。

    1-1.SAM 3Dとは

     Metaが2025年11月19日に発表したSAM 3Dは、静止画(2D)を詳細な3Dモデルに変換する技術です。

     Segment Anything Model(SAM)の「プロンプトによるセグメンテーション」という哲学を3次元空間へと拡張したものであり、SAM 3D ObjectsとSAM 3D Bodyという2つの主要な基盤モデルによって構成されています。

    • SAM 3D Objects: 物体やシーン向け

    • SAM 3D Body: 人体形状とポーズの推定向け

    1-2.各モデルの詳細

    SAM 3D Objects:物体・シーン向け
     日常の風景写真から特定のオブジェクトをクリックするだけで、その形状を理解し、ポーズ(向きや位置)情報を持った3Dモデルとして再構成

    SAM 3D Body:人体・形状推定向け
     単一の画像から人物を特定し、正確な3D形状とポーズを瞬時に推定します。モーションキャプチャのようなスーツは不要

    1-3.他ツールの比較

     類似ツールとして下記があります。

    1. Copilot 3D:Copilot Labs 専用の AI 搭載ツールで、ユーザーは 1 枚の画像を完全にレンダリングされた 3D モデルに変換

    2. NVIDIA’s GET3D :NVIDIAが発表した研究モデル(Generate Explicit Textured 3D)。

    3. Luma AI(GENIE):コンシューマー向け3D生成AIのトップランナーの一つ。有償

    4. Tripo AI:Stability AIとも連携し、高速生成モデル「TripoSR」を公開

    5. Alpha3D:特定の用途に特化したモデル

    6. Rodin:「アバター(人物)」の生成に特化した拡散モデル

    7. Meshy:ゲーム開発者や3Dアーティストに愛用者が多い

    8. Magic3D by OpenAI:

    画像
    Top AI 3D Model Generators in 2025: Revolutionizing 3D Creation

    参考1:3Dアニメーションソフト
     デジタルコンテンツ制作(DCC)の領域、とりわけ3Dアニメーション向けのツールは以下の通りです。

    • Cascadeur:物理演算AIが動きの不自然さを自動修正し、手付けやキャプチャデータをプロ品質に仕上げる物理ベースのアニメーション編集ツール

    • Unity Muse Animate:テキストで指示するだけでUnityエディタ内にアニメーションを即座に生成し、効率的なプロトタイピングを実現するAIツール

    • Motorica:移動パスやスタイル指定に合わせて、無限のバリエーションを持つ高品質な移動モーションを生成できるロコモーション特化型AI

    • Move AI:専用スーツやスタジオを使わず、複数のスマホカメラだけで高精度な3Dモーションデータを抽出できるビデオモーションキャプチャツール

    参考2:特殊ツール
     2021年4月にPlantStream(千代田との合弁)から、空間自動設計システム『PlantStream®』をリリースされてます。


    2.環境構築

     Metaが提供するブラウザベースの「Playground」を利用すれば、メタアカウントの準備のみで体験できます。
     Playgroundへアクセスは下記リンクとなります。

     下記のような画面が確認できればOKです。

    画像

    3.QuickStart

     まずは手持ちの「猫の画像」から3Dモデル作成、ダウンロード、別ソフトで編集までのフローを開設します。

    画像

    3-1.3Dをつくる

     下記手順で猫の3Dを作ってみます。

    1. デモページ(Gallery)へ移動し、「Create 3D scenes」を選択

    2. 「Upload」ボタンから画像を選択

    3. 3D化したいオブジェクト(猫)をクリック

      • SAMの技術により、一瞬で対象がマスク(選択)される

    4. 「Generate 3D」ボタンを押す

    画像

     これだけで3Dデータが作成できました。

    画像

    3-2.3Dデータで出力

     生成された3Dモデルは、その場で確認するだけでなく、PLY(Polygon File Format)としてエクスポート可能です。
    ※現状では恐らく3D bodiesのみ

    1. 画面内の「Add effects」メニューを開く

    2. 「Share」ボタンをクリック

    3. Video, Image, 3D Modelから「3D Model」を選択してダウンロードを押す

    画像

     ダウンロードデータは以下の通りです。

    画像
    Share Image
    画像
    Share Video

    3-3.3Dデータを触る

     ダウンロードした .ply ファイルを、3Dソフトウェアで触ってみます。


     Open3D(Pythonライブラリ)

     PythonライブラリのOpen3Dでデータを可視化しました。同様の内容をtrimeshでもできるはずです。

     PLYファイルを同じ作業ディレクトリに入れて下記実行すれば、データを確認できました。

    import open3d as o3d
    import numpy as np
    
    # PLYファイルから点群を読み込み
    pcd = o3d.io.read_point_cloud("sam3d-splat.ply")
    
    # 点群の情報を表示
    print(pcd)
    print(np.asarray(pcd.points))
    
    # 点群を可視化
    o3d.visualization.draw_geometries([pcd])
    画像

     Blender

     Blender(v4.0以降)の機能「Geometry Nodes」を使って点群をボリューム化してメッシュに変換してみます。

    1. Blenderを起動し、初期キューブを削除

    2. メニューバーから [ファイル (File)] > [インポート (Import)] > [Stanford (.ply)] を選択

    3. ファイルを選び、「PLYをインポート」ボタンを押す

    画像

     真っ黒い猫がでました。おそらく点群のみのため調整します。

    1. 画面上のタブメニュー上でスクロールし、 [Geometry Nodes]を探す

    2.  [Geometry Nodes] をクリックして画面を切り替え

    3. 画面中央上の [新規 (New)] ボタンを押す

      • 「グループ入力」と「グループ出力」という2つの板(ノード)が表示

    4. 「ポイントのボリューム化」を追加

      • Shift + A キーを押して追加メニューを出す

      • 上部の検索バー(虫眼鏡)にポイントと入力し、選択

      • ノードを「グループ入力」と「グループ出力」の間に配置

    5. 「ボリュームのメッシュ化」を追加

      • Shift + A キーを押して追加メニューを出す

      • 上部の検索バー(虫眼鏡)にボリュームと入力し、選択

      • ノードが[グループ入力]> [ポイントのボリューム化] > [ボリュームのメッシュ化] > [グループ出力]になるように配置

    6. 数値を調整:よくわからんので適当に

      • 半径 (Radius): 0.05 m くらい

      • ボクセル量 (Voxel Amount): 必要なら増やす

      • ボクセルサイズ (Voxel Size): 初期値だと粗すぎるかもしれません。少しずつ小さくする

      • 適応力 (Adaptivity): 0 のまま

    画像

     調整した結果は以下の通りです。

    画像

     MeshLab

     オープンソースのMeshLabではSTLファイルとして扱えるため、3Dプリント用に厳密なメッシュが欲しい場合は便利です。

    • メニューバーの [File] > [Import Mesh...] から.ply ファイルを選択 

    画像

     ちょこっと触ってSTLファイルで保存してみました。

    • 法線(向き)を計算

      • メニュー [Filters] > [Normals, Curvatures and Orientation] > [Compute normals for point sets] を選択

      • Neighbor num を 20 くらいにして [Apply] または [OK]

    • 面を張る

      • メニュー [Filters] > [Remeshing, Simplification...]  > [Surface Reconstruction: Screened Poisson] を選択

      • Reconstruction Depth)を 8 〜 10 に設定

      • [Apply] または [OK] をクリック

    • 保存

      • [File] > [Export Mesh As...]

      • ファイル形式を STL (*.stl) にして保存

    画像

    4.たくさんの画像で試そう

     色々なデータでどこまでできるか試してみます。

    3D Scenes

    対象:車、モデル:3D Scenes
     
    後ろも補正してくれており、サンルーフもつけてくれました。

    画像
    画像

    対象:ラーメン、モデル:3D Scenes
     
    中身、器、レンゲを個別でオブジェクトすることで情報取れました。ただし平面図の写真だったため器の深さまでは表現できていません。

    画像
    画像

    対象:定食、モデル:3D Scenes
     対象数が増えると選択したと思っていたオブジェクトにも抜けが発生しました。またとんかつの数も減ってます。

    画像
    画像

    対象:ジム、モデル:3D Scenes
     
    一発で選択できないため、オブジェクト選択をたくさんつけてみました。
    結構綺麗に取れた気がします。

    画像
    画像

    対象:金属ダクト、モデル:3D Scenes
     
    適当に切り取った画像から丁寧にオブジェクト選択をしたらそれっぽいのできた。

    画像

     しかも裏側の指示まで推測してくれてる。

    画像
    画像

    対象:制御盤、モデル:3D Scenes
     
    表の穴は上手く取れなかったけど、箱の中の空洞や側面の穴は取れてる

    画像
    図 【穴加工無料】鉄製 フリーサイズ 制御ボックス 水切りなし パチン錠 RSCシリーズ
    画像

     端子台も綺麗に取れそうですが、重ねる方法は追って確認します。

    画像

    対象:ベンチプラント、モデル:3D Scenes
     
    「液体合成燃料の低コストな製造技術への挑戦」から綺麗にオブジェクト選択をしました。

    画像

     箱だけなら綺麗に取れそうです。

    画像
    画像

     さすがに合成装置までは完璧に取るのは無理そうでした。

    画像

    3D bodies

    対象:人、モデル:3D bodies
     
    人間の形状やOpenboseでの姿勢推定ができました。

    画像

    3D Scenes/3D bodies

    対象:建物+人、モデル:3D Scenes/3D bodies
     
    建物は全景がないと立体感は出なさそうです。人は立体感も作れてるのは凄い

    画像
    画像
    画像

    5.応用事例

    5-1.NanoBanana🍌との連携

     前回の記事で画像生成のNanoBanana Proを紹介しました。これと組み合わせてText2Image2Dataにしてみます。

     下図画像+プロンプトを投げ画像を作成しました。

    画像
    Input用画像
    Top-down, fully 3D Isometric render of the entire floor plan. Create a clean, highly detailed miniature architectural maquette with accurate room proportions and layout, matching the reference exactly. Remove all text labels.
    
    High-resolution, photorealistic materials (wood floors, tiles, fabrics, glass). Soft global lighting, subtle shadows, crisp edges. Professional polished, high-quality output.
    画像

     3Dにした結果は以下の通りです。工夫は必要ですが画像生成から3Dデータ作成までを一貫してできそうです。

    画像

    6.ローカル環境

     SAM 3D(BodyおよびObjects)はローカル環境で使用できます。

    6-1.環境構築

    追って

    6-2.モデルの重み取得

    追って

    6-3.推論コード実装

    追って

    あとがき

     これは楽しいし、かなり実用的


    参考資料

    SAM3D関係

    競合ツール(im-to-3D)

    事例

    🏀 Object Tracking Made Easy with SAM 3!

    With just a simple text prompt like “player”, you can now segment and track objects throughout an entire video using SAM 3.

    Easily customize object names, isolate specific players, or remove unwanted objects.

    GitHub:… pic.twitter.com/xUmr8pRJIj

    — Qiusheng Wu (@giswqs) December 5, 2025

    改正履歴

    • 2025年11月25日:初版発行

     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ