Community画像github.com

richard-evans/scientific-visualisation

POV-Rayを用いた科学技術図・概念アイコンの作成 - 原子、結合、結晶/分子構造、ベクトル場矢印、振動「波」コネクタ、発光/エネルギー効果、金属仕上げ、透過背景レンダリングを駆使し、論文・プレゼン・ポスター・グラント用図にそのまま配置可能。

scientific-visualisation とは?

このスキルは、POV-Ray(Persistence of Vision Raytracer)を用いて、科学技術論文、プレゼンテーション、ポスター、グラント申請書などに直接貼り付け可能な高品質な図や概念アイコンを生成するためのものです。分子構造、結晶格子、原子配列、ベクトル場、光/レーザーパルス、電流/粒子流、熱的無秩序、物体間の抽象的な力や相互作用など、物理的なプロセスを表現する図を作成したい場合に活用します。ユーザーが明示的に「POV-Ray」や「3Dレンダリング」と指定しなくても、「Xの小さなアイコンを作って」「Yを示す模式図が必要」「この結晶構造をレンダリングして」といった依頼から適切にトリガーされます。このスキルは、共通インクルードファイルとマクロ群(原子、結合、矢印、波動管、発光球など)を提供し、`render.sh`スクリプトで透過背景・アンチエイリアス設定を行い、トラブルシューティングガイドで既知の落とし穴を回避できるように設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/richard-evans/research-skills/tree/HEAD/scientific-visualisation

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

POV-Rayによる科学技術可視化

このスキルは、実際の制作プロジェクト(磁気基底状態のレンダリング4点+グラント提案用コンセプトアイコン5点)で開発され、複数回のビジュアルレビューを経て洗練されたPOV-Rayのビルディングブロックと規則をパッケージ化したものです。成果物が、UIやWebページではなく、誰かが読む文書に配置される独立した図やアイコンである場合に使用してください。

POV-Rayを選ぶ理由と、これによって得られるもの

POV-Rayシーンはプレーンテキストで記述されるため、以下の利点があります。

  • パラメータ化が容易(N個の原子をループ、格子を生成、パラメータを掃引)
  • 再利用可能なマクロから構成しやすい
  • 作業をやり直すことなく、異なる解像度で再レンダリングできる

出力はフラットで精密に制御されたラスター画像(インタラクティブな3Dシーンではありません)であり、論文、スライド、グラントPDFが実際に求める形式そのものです。

クイックスタート

  1. 最初に #include "common.inc" を記述します。これにより、カメラ、ソフトな3点照明、背景/透明設定、共有の仕上げプリセットが設定されます。一度目を通してください。コメントには各設定の選択理由(変更が必要な場合に重要)が説明されています。
  2. 必要に応じて、以下のファイルを取り込みます。
    • molecule.inc - 原子 (sv_atom)、結合 (sv_bond)、ベクトル矢印 (sv_arrow)
    • wave.inc - 振動管:伝搬波と曖昧な「抽象的な相互作用」コネクタは、同じマクロ (sv_wave_tube) を異なるパラメータで使用します
    • glow.inc - 発光/高温/エネルギッシュに見せたいものに使用するレイヤードハロー効果 (sv_glow_sphere)
    • orientation_color.inc - 方向/角度を知覚的に異なる色にマッピングします (sv_orientation_colour / sv_colour_wheel)。方向そのものがデータ(スピン角度、流れ方向、位相)である場合に使用します。
  3. povray を直接呼び出す代わりに、scripts/render.sh <scene.pov> [W] [H] [out.png] を使用してレンダリングします。このスクリプトは +UA(実際のアルファチャンネル)、適切なアンチエイリアスを設定し、POV-Rayにこのスキルの assets/ ディレクトリを指し示すため、#include がファイルをコピーせずに解決されます。また、アルファチャンネルが正しく出力されなかった場合に警告を発します(以下の注意点を参照。実際のセッションで黙って失敗したことがあります)。
  4. 結果を確認してから完了と判断してください。Read ツールでPNGを読み込み、実際に目視で確認します。POV-Rayは、エラーを出さずに微妙に間違った結果(カメラフレームによるクリッピング、色の誤り、矢印の重なり)をレンダリングすることがあります。

5つのウィジェットテンプレート

assets/widgets/ には、上記のビルディングブロックを使用した、そのまま適用可能な5つのシーンが用意されています。

ファイル説明構成要素
laser.pov伝搬する振動波+方向矢印(光、音、任意の信号)sv_wave_tube(開放、テーパーなし)
particle_current.povそれぞれがベクトル特性を持ち、流れ方向にドリフトするN個の粒子の列sv_atom + sv_arrow +流れ矢印
thermal_grid.pov小さな位置ジッターを持つNxN格子。中心からの距離に応じて高温から低温に発光sv_glow_sphere +ジッター付き格子ループ
interaction_triangle.pov曖昧で発光する、非剛体の「相互作用」線(物理的な結合とは区別)で結合されたN個のオブジェクトsv_atom + sv_wave_tube(テーパー、ジッター、発光)

必要なものに最も近いものをコピーし、ジオメトリ自体を変更する前に、上部で宣言されたパラメータ(色、数、間隔、振幅)を変更してください。4つすべてのウィジェットは「調整ノブ」が上部に配置されるよう記述されています。

実際の分子/結晶構造(概念アイコンではない)の場合は、ウィジェットをスキップして直接 molecule.inc を使用してください。原子座標をループして sv_atom と sv_bond を呼び出し、原子ごとのベクトル(スピン、双極子、変位)には sv_arrow を、そのベクトルの方向自体が色分けする価値のある意味のあるデータである場合には sv_orientation_colour を使用します。

維持すべきデザイン規則

これらは恣意的なものではなく、実際のビジュアルレビューから生まれたものです。

  • 白色背景、実際のアルファチャンネル (+UA)。 レンダリング結果は、スライド/ページ/図に可視のボックスなしで直接配置でき、背景に関係なく他のパネルの隣にきれいに合成されます。
  • common.inc の3点照明リグ。単一のポイントライトではありません。1つのハードライトはレンダリングされた3Dオブジェクト(「クリップアート」)として読み取られますが、ソフトなキー+フィル+フィルリグは、洗練されたマットな印刷イラストとして読み取られます。複数パネルの図では、すべてのパネルで同じリグを維持し、1つのファミリーとして読めるようにしてください。異なる照明のパネルは、ジオメトリスタイルが一致していても、不一致のステッカーのように見えます。
  • 結合/剛体コネクタには、カメラから遠ざかる小さなzオフセット(sv_bond の ZOffset パラメータ)。結合と矢印が同じ領域でほぼ平行に走る可能性がある場合に使用します。そうしないと、zファイティングが発生したり、結合が矢印の先端に 視認できる形で切り込んだりします。典型的なシーンスケールで0.15~0.25単位と小さく、誰も意識的に存在に気づくことはありません。
  • 矢印は「接触する」長さより10~20%短くします。 2つのベクトル矢印が共有点で交わる場合、Scale を縮小して先端同士が干渉しないようにします。接触する先端は、データとしてではなく、レンダリングのグリッチとして読み取られます。
  • 抽象的な接続と物理的な接続は、異なる視覚言語を使用します。 実際の結合 (sv_bond):剛体、鮮明、マット。抽象的な結合/力/相関 (sv_wave_tube で Glow=true):波状、ソフトエッジ、発光。文字通りの原子-原子軌道オーバーラップを指し示せない相互作用を、物理的なロッドであるかのように描かないでください。
  • 「一般的な」配置をわずかに歪めます。 完全な正三角形や完全に規則的なグリッドは、クリップアートとして読み取られます。意図的な小さな不規則性(interaction_triangle.pov の三角形や thermal_grid.pov のジッターを参照)は、シミュレーション出力ではない模式アイコンであっても、「実際のシステム」として読み取られます。

アイコンではなく実際のシミュレーションデータをレンダリングする場合

原子位置/ベクトルが実際のシミュレーション(DFT、分子動力学、マイクロマグネティクスなど)から得られている場合、上記のアイコンウィジェット規則は引き続き適用されますが、手動で値を選択する代わりに、実際の座標データから sv_atom/sv_bond/sv_arrow 呼び出しを生成します。実用的な注意点:

  • 結合は、手動ではなく、原子ペア間の距離カットオフによって生成します。
  • 物理的に周期的なタイル状パッチ(1つのシミュレーションセルよりも大きな領域)を、高価なシミュレーションを再実行せずに表示したい場合、かつ特性が均一にタイル状になる場合(ほとんどの単純な規則的な基底状態に当てはまります)、より大きなシステムを再シミュレーションする代わりに、既に収束した小セルの結果を幾何学的に複製することが有効な場合が多いです。ただし、その特性がセル間で本当に変わらないことを最初に確認してください。
  • 物理的に意味のある境界(例:1つの完全な配位シェル/単位モチーフ)でクロップし、任意の矩形ではクロップしないでください。クロップ自体が構造について何か真実を語るべきです。

トラブルシューティング

POV-Rayのパースエラーや見た目がおかしいレンダリングをデバッグする前に、references/troubleshooting.md を読んでください。このスキルの構築中に実際に遭遇した特定の落とし穴(通常の変数名に見える予約済みSDLワード、静かなアルファ透過バグ、POV-Rayのカメラの手系、sphere_sweep/配列スコープの癖)がリストされています。ほとんどのPOV-Rayエラーメッセージは構文問題について正直ですが、通常のプログラマの期待から見てなぜそのように見えるかについては役に立ちません。このファイルは、同じ数少ない罠を再発見しなくて済むように存在します。

各マクロのパラメータと設計根拠のより詳細な説明(ここに収まらないより多くの呼び出し例を含む)については、references/techniques.md を参照してください。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル