sand3D: コードとして読み、編集できる 3D アセット
sand3D は、コンパクトな Python 語彙を使い、Blender の bpy を活用したパラメトリックモデリングによって、言語モデルが編集可能な 3D アセットを作成できるようにします。

ハイライトと成果
sand3D は、言語モデルが Python で 3D オブジェクトを構築するためのコンパクトな語彙を提供します。Sandflow の Thibault Neveu と Andréa Loy によって開発され、Blender の bpy を通じて、プログラムを名前付きのパーツ、マテリアル、関節機構へ変換します。寸法を変更してプログラムを再実行すると、アセットが再構築されます。公開リリースにはモデリングライブラリとデータセットが含まれますが、単独で動作する学習済みの text-to-3D モデルは提供されません。公式リポジトリ。
5 つのデータセットカードには、Objaverse オブジェクト 66,887 件、CAD オブジェクト 24,495 件、Articraft オブジェクト 9,209 件、SimReady オブジェクト 2,334 件、AutoMate レコード 3,169 件が記載されています。合計は 106,094 件で、そのうち 10,456 件が関節機構付きオブジェクトです。AutoMate の件数には、個別パーツ 2,297 件とアセンブリ 872 件が含まれます。各レコードは、実行可能なコード、レンダー、エクスポートされた OpenUSD アセットを組み合わせたものです。これは再構築されたソースアセットのコレクションであり、新たに設計された 100,000 個の機構ではありません。公式データセット。
リポジトリのトークン比較では o200k_base を使用し、コメントと docstring を除外しています。ベースラインと sand3D の比率の中央値は、30 個の CAD パーツに対する LLM 生成の Blender Python で 4.0×、17 個の CadQuery プログラムで 2.3×、13 個の FeatureScript プログラムで 6.0×、12 個の Articraft プログラムで 2.0× です。これらは、厳選された sand3D プログラムに対する、規模が小さく出所も異なる比較です。Blender のベースラインで正しいパーツを構築できたのは 9/30 のみであり、Articraft は動力学も表現しています。これらはコンパクト性の主張を裏付けるものであり、生成品質が普遍的に向上することを示すものではありません。評価の詳細。
仕組み
作成時のワークフローは、API を LLM に提供するか Python を直接記述し、アセンブリとそのパラメータを記述し、個々のパーツを構築して配置し、ジョイントとマテリアルを宣言し、bpy でプログラムを実行し、確認、修正、エクスポートするというものです。約 3,600 トークンの API はプロンプトに収まります。推奨されるプログラム構成では、最初にアセンブリ計画を記述し、その後で各パーツを個別に実装するため、寸法と配置関係を読みやすく保てます。編集可能な表現は、実行可能なジオメトリコードとシーン階層です。ライブラリは潜在表現のエンコードや拡散デノイジングを実装していません。記述ガイドライン; API。
ジオメトリの語彙は 2D プロファイルからソリッドへと進みます。rect と circle が断面を定義し、extrude、revolve、sweep、loft がボリュームを構築し、cut、pocket、shell、fillet がそれらを編集します。Frame オブジェクトは位置と向きを記述するため、コンポーネントはワールド座標の長いリストではなく、名前付きの面またはローカルアンカー上に配置できます。group は分離されたメッシュとマテリアルを 1 つの親の下に保持し、join は融合を実行し、assembly はグループ化されたルートに名前付きアンカーを追加します。これらの区別により、どのパーツが一体として扱われ、どのパーツが個別に編集可能なままなのかが保持されます。アセンブリ実装。
洗濯機の例は、機構を具体的に示します。キャビネットがドラム、リング・ガラス・ハンドルを含むドア、引き出し、ダイヤルを支えます。これらのパーツを静止位置に配置した後、joint は親、ピボット、軸、タイプ、許可範囲を記録します。ドアは 0–143° の範囲で回転し、引き出しは 0–200 mm の範囲でスライドし、ドラムとダイヤルは連続回転します。pose は要求された値を検証し、順運動学によって変換を伝播します。ジオメトリを再生成するものではありません。seat は、挿入されたパーツが静止時に占めるボリュームを除去しますが、その運動範囲全体を計算するものではありません。例; Joint の実装。
データセットの生成には、エージェント型の再構築ループが追加されます。コードを記述し、実行し、生成されたサーフェスを既存のソースアセットと比較し、修正します。著者はこのパイプラインの完全な手法をまだ公開していません。データセットの F スコアでは、バウンディングボックスの対角線の 1% を許容誤差としています。受け入れ基準の下限は、Objaverse と静的 SimReady が 0.70、CAD と剛体 Articraft が 0.90、関節機構付きアセットが移動パーツごとに 0.90 かつ正しいジョイントです。これらはパイプラインが報告した品質フィルターであり、独立して測定されたテスト結果ではありません。実行に失敗したプログラムや静的チェックに失敗したプログラムは除外されます。データセットの方法論。
アプリケーション、利用可能性、今後の方向性
この表現は、編集可能なアセットのバリエーション、インタラクティブな機構、LLM ベースの 3D オーサリング研究に適しています。GLB は現在のポーズ、マテリアル、ジョイントメタデータをノードの extras にエクスポートします。汎用ビューアでこれらのジョイントを操作するには追加のロジックが必要です。URDF と USDA は静止時の機構を保持し、USDA は UsdGeom と UsdPhysics を使用します。OBJ/STL はメッシュのみを格納します。エクスポート時には長さがメートル単位にスケーリングされます。質量、摩擦、作動パラメータはライブラリの動力学記述の範囲外に残されているため、シミュレーション統合にはなお作業が必要です。エクスポート実装。
ライブラリは Apache-2.0 で提供され、データセットのリリースには CC BY 4.0 が使用されていますが、ソースのライセンスと帰属表示は維持されます。現在の対象は主にハードサーフェスオブジェクトであり、再構築では小さなディテールが省略される場合があります。著者は有機形状を今後の課題として挙げており、候補となる追加機能には、陰的ブレンディング、コントロールケージ細分割、可変断面スイープとロフト、スキニング付きスケルトン、プロシージャル変位などがあります。また、より多くの分野と近日公開予定のプレプリントも約束していますが、これらはまだ計画段階です。このレビューでは、2026 年 11 月 6 日時点の公式ドキュメントと、コミット 0d589a5、バージョン 1.6.2 のソースを調査しました。ベンチマークを独自に実行したものではありません。公式リリースと制限事項。
FAQ
sand3D をインストールすると text-to-3D モデルが手に入りますか?
Python モデリングライブラリがインストールされます。LLM またはユーザーがその API を使用するプログラムを記述し、bpy がそれを実行してアセットを構築する必要があります。データセットが提供するのはコード例であり、単独で動作する学習済みジェネレーターではありません。ソース。
サイズの異なるアセットを作成するにはどうすればよいですか?
プログラムが公開している寸法を編集して再実行します。配置関係と名前付きパーツにより、そのような変更を確認できます。プログラムに実際にエンコードされた関係だけが自動的に更新されるため、再構築された結果を確認してください。ソース。
エクスポートされた機構は、すぐに物理シミュレーションで使用できますか?
URDF と USDA はジョイント構造を保持しますが、シミュレーションには質量、摩擦、作動などの動力学パラメータがなお必要です。GLB はジョイントメタデータを extras に格納します。機構をアニメーションさせるには、アプリケーションがそれを解釈する必要があります。ソース。




