はじめに
分子の3Dモデルを3Dプリンターで出力したい場合、通常は専用の化学ビューア(PyMOLや Chimeraなど)からメッシュデータ(STLやOBJ)を書き出すルートが一般的です。しかし、メッシュデータは後からCAD上で寸法を微調整したり、治具やスタンドと組み合わせたりするソリッドモデリングのワークフローとは相性が良くありません。
そもそも分子構造データ(SDF / MOLフォーマット)の本質は、**「3次元空間上のノード(原子)の座標」と「それらを結ぶエッジ(結合)のリスト」からなるシンプルな無向グラフ(Undirected Graph)**です。
であれば、わざわざ専用ソフトを介さずとも、**「テキスト化されたグラフ構造とモデリング規約(ルール)をLLMに渡し、MCP(Model Context Protocol)経由で3D CADのAPIを直接叩かせれば、ネイティブなソリッドモデルが生成できるのではないか?」**と考え、実践してみました。
本記事では、PubChemの座標データから水素を除いた骨格モデルを、結合次数(単結合・芳香環)に応じた太さのパイプスイープとして宣言的にモデリングさせる手法を紹介します。
1. 入力データの構造:SDF(MOL)フォーマットの解剖
今回対象とするのは、PubChem等から取得できる標準的なV2000形式の座標ブロックと結合ブロックです。
-3.5849 -0.4599 0.1218 N 0 0 0 0 0 0 0 0 0 0 0 0
-2.2239 -0.1762 -0.3436 C 0 0 2 0 0 0 0 0 0 0 0 0
-1.2222 -0.4574 0.7925 C 0 0 0 0 0 0 0 0 0 0 0 0
0.2121 -0.2349 0.4021 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1745 1.2729 -0.8278 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9484 -1.2846 -0.1323 C 0 0 0 0 0 0 0 0 0 0 0 0
0.7852 1.0179 0.5809 C 0 0 0 0 0 0 0 0 0 0 0 0
2.2797 -1.0783 -0.4941 C 0 0 0 0 0 0 0 0 0 0 0 0
2.1164 1.2243 0.2190 C 0 0 0 0 0 0 0 0 0 0 0 0
2.8637 0.1762 -0.3184 C 0 0 0 0 0 0 0 0 0 0 0 0
(中略:11〜23行目の水素 H の座標データ)
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 5 1 0 0 0 0
3 4 1 0 0 0 0
4 6 2 0 0 0 0
4 7 1 0 0 0 0
6 8 1 0 0 0 0
7 9 2 0 0 0 0
8 10 2 0 0 0 0
9 10 1 0 0 0 0
(中略:水素に関わる結合データ)
このデータは、情報工学的に見れば以下の2つのテーブルに過ぎません。
-
Atom Block(ノード定義):
[X座標, Y座標, Z座標, 元素記号](行番号が1始まりのノードID) -
Bond Block(エッジ定義):
[始点ノードID, 終点ノードID, 結合次数(1:単結合, 2:二重結合)]
2. モデリングの設計規約(ルール定義)
3Dプリントや視覚的な分かりやすさ、有機合成者の慣例を考慮し、生データを入力しますが、以下の変換ルール(制約)を設けます。Fusionの内部はcm単位で作業するため、具体的数値はcmで入植します。
-
フィルタリング(重原子骨格の抽出):
水素原子(H)および水素に接続するエッジはすべて除外し、分子の骨格(C,Nなどの重原子)のみをモデリング対象とする。 -
ノード(原子)のジオメトリ化:
各重原子の座標を中心に、半径0.3の球(Sphere)を配置する。 -
エッジ(結合)のジオメトリ化と意味論的解釈:
SDFの結合ブロック上では、ベンゼン環(芳香環)は単結合(1)と二重結合(2)が交互に並ぶケクレ構造として記述されています(上記データのノード4, 6, 7, 8, 9, 10)。
しかし実態は共鳴して等価な結合であるため、3Dモデル上では単結合と二重結合を別々に作るのではなく、「6員環を構成する閉路(サイクル)はすべて芳香環結合として統一する」というトポロジー解釈を入れます。 -
単結合: 半径
0.15の円断面によるソリッドパイプ -
芳香環結合: 半径
0.225の円断面によるソリッドパイプ(単結合より太く、原子球より細い中間径で共鳴状態を表現)
3. アーキテクチャ:データプレーンとコントロールプレーンの分離
今回のアプローチのポイントは、「データの前処理・構造化」 と 「MCPによるCAD操作の実行」 を分離することです。
-
Parser & Graph Resolver(前処理・LLM推論):
生データからHを除外し、グラフの閉路(芳香環)を特定して、どのエッジがR=0.15でどのエッジがR=0.225かを確定させた「中間表現(構造化リスト)」を作る。 -
MCP Execution(CAD生成):
確定した座標リストとエッジリストに基づき、CAD側のプリミティブ生成・パイプ・ブーリアン結合を順次実行する。
4. MCPへの指示プロンプト設計
実際に生データから構造を整理し、MCPサーバー(Fusion 360やFreeCAD、Blender等のMCP連携環境)へ流し込むためのプロンプト構成です。
ステップ1:生データからの構造抽出指示
まず、SDFの生データとともに以下のルールを与えます。
プロンプト指示(抽出フェーズ)
PubChemの座標データから3Dモデルを作ります。これをMCP指示にして動かしたい。
- 座標のうち水素(H)以外の元素をモデリングする。
- 座標データに従い原子の場所を作成、結合はグラフ情報にある通りの接続とする。
- 原子を
0.6の球、単結合を0.3の球(円断面)からソリッドスイープ、芳香環結合は0.45の球(円断面)をソリッドスイープさせる。
ステップ2:生成されたMCP実行用インストラクション
上記によってフィルタリングと環構造の判定が行われ、以下の実行可能なコマンド仕様(宣言的指示)が出力されます。あとはこれをMCPクライアントに実行させるだけです。
以下の手順に従って、提供された座標とグラフ情報から分子の3Dソリッドモデルを構築してください。
1. 原子(球体)の作成:
以下の中心座標に、半径 0.3 の球体をそれぞれ配置する。
- Atom 1 (N): [-3.5849, -0.4599, 0.1218]
- Atom 2 (C): [-2.2239, -0.1762, -0.3436]
- Atom 3 (C): [-1.2222, -0.4574, 0.7925]
- Atom 4 (C): [ 0.2121, -0.2349, 0.4021]
- Atom 5 (C): [-2.1745, 1.2729, -0.8278]
- Atom 6 (C): [ 0.9484, -1.2846, -0.1323]
- Atom 7 (C): [ 0.7852, 1.0179, 0.5809]
- Atom 8 (C): [ 2.2797, -1.0783, -0.4941]
- Atom 9 (C): [ 2.1164, 1.2243, 0.2190]
- Atom 10 (C): [ 2.8637, 0.1762, -0.3184]
2. 単結合の作成:
以下の原子間を結ぶ3Dスケッチ線分を作成し、半径 0.15 のパイプ(ソリッドスイープ)を作成する。
- (1, 2), (2, 3), (2, 5), (3, 4)
3. 芳香環結合の作成:
以下の原子間を結ぶ3Dスケッチ線分(ベンゼン環部分)を作成し、半径 0.225 のパイプ(ソリッドスイープ)を作成する。
- (4, 6), (4, 7), (6, 8), (7, 9), (8, 10), (9, 10)
4. ブーリアン結合:
生成されたすべての球体とスイープ体を単一のソリッドボディに結合(Combine / Union)する。
5. 実行結果と考察
出力されたモデル(記事冒頭の画像)を見ると、以下の点が綺麗に実現できています。
-
立体化学(キラル中心や二面角)の正確な再現:
手作業で3Dスケッチを描くと破綻しがちなAtom 2周りの四面体角(sp3炭素の立体配置)や、芳香環平面に対する側鎖のねじれ角が、PubChemの計算化学座標通りに寸分違わず配置されています。 -
芳香環の視覚的表現と強度確保:
単結合(0.15)に対して芳香環(0.225)を太くしたことで、一目で共役環構造であることが分かり、3Dプリント時の造形強度も向上しています。 -
ソリッドモデルとしての再利用性:
ポリゴンメッシュではなくCAD上のネイティブな球と円柱スイープで構成されているため、「特定の原子にだけ穴を開けて磁石を埋め込む」「台座用のシャフトを生やす」といった後加工がCAD上でシームレスに行えます。3Dプリンターで色を変えるのであれば、球体をカットして別ボディにすることで、印刷時の色分けが簡単になります。
まとめ
化学のSDFデータは一見すると呪文のような数値の羅列ですが、「3次元座標を持つグラフ構造である」と捉え直すことで、MCPを介したパラメトリックな3Dモデリングの入力ソースとしてそのまま活用できます。
分子のデータから直接モデリングは、画面上の2D構造式や頭の中のイメージだけでは掴みきれなかった「立体障害」や「分子のねじれ」を、文字通り手に取れる形として直感的に教えてくれます。自分で合成した骨格や、教科書にある教材を立体化することで、理解をより深めることができます。
