Community影像github.com

richard-evans/scientific-visualisation

使用 POV-Ray 建立科學/技術圖表與概念圖示,包含原子、鍵結、晶體/分子結構、向量場箭頭、振盪「波」連接器、發光/能量效果、金屬質感,以及可透明背景渲染,適合直接放入論文、簡報、海報與計畫圖表中。

scientific-visualisation 是什麼?

這個技能封裝了一組 POV-Ray 建構模組與慣例,專為建立獨立式科學圖表或概念圖示而設計。與其從零開始撰寫 POV-Ray 場景,此技能提供預先定義的巨集,如 `sv_atom`(原子)、`sv_bond`(鍵結)、`sv_arrow`(向量箭頭)、`sv_wave_tube`(振盪波管)、`sv_glow_sphere`(發光球體)與 `sv_orientation_colour`(方向色彩映射),讓使用者能快速組合出分子/晶體結構、向量場、熱圖或抽象交互作用示意圖。 此技能支援 Claude Code、Cursor、Codex 與其他相容的 AI 代理平台。其運作原理是透過 `#include` 引用 `.inc` 檔案,並以 `scripts/render.sh` 腳本進行渲染(自動設定抗鋸齒與 Alpha 通道),確保輸出為具透明背景的 PNG 影像,可直接嵌入文件或簡報中。此外,技能內含五個預先設計的範本場景(如雷射波、粒子流、熱網格、交互作用三角形),以及詳細的設計慣例(如三點燈光系統、連接器 z 偏移、箭頭長度調整),幫助使用者產出符合專業出版品質的圖表。

相容平台~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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

使用 POV-Ray 進行科學視覺化

本技能封裝了一組 POV-Ray 建構模組與慣例,這些是為一個實際的英雄圖形(四張磁基態渲染圖,加上五個用於計畫書的概念圖示小工具)而開發,並經過多輪視覺審查後精煉而成。每當交付成果是獨立的圖表或圖示,需要放置在他人將閱讀的文件中(而非 UI、網頁或渲染影像)時,請使用此技能。

為何使用 POV-Ray,以及它能為你帶來什麼

POV-Ray 場景是純文字,這代表:它們易於參數化(對 N 個原子進行迴圈、生成晶格、掃描參數)、易於從可重複使用的巨集中組合,且無需重做任何工作即可重新渲染為不同解析度。輸出結果是平面、精確控制的點陣影像(而非互動式 3D 場景)——這正是論文、投影片和計畫書 PDF 實際需要的格式。

快速開始

  1. 首先 #include "common.inc" - 設定相機、軟性三點光源系統、背景/透明度以及共享的材質預設。看它一次;註解說明了每個選擇背後的原因(如果你需要偏離它,這很重要)。
  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. 使用 scripts/render.sh <scene.pov> [W] [H] [out.png] 進行渲染,而非直接呼叫 povray - 它會設定 +UA(真正的 Alpha 通道)、合理的抗鋸齒,並將 POV-Ray 指向此技能的 assets/,以便你的 #include 指令能解析,無需複製檔案;若 Alpha 通道出現問題,它會發出警告(請參閱下方的陷阱 - 這曾悄悄地困擾過實際工作階段)。
  4. 在宣告完成之前,查看結果。讀回 PNG 檔案(使用 Read 工具)並實際觀看 - POV-Ray 會樂於渲染出一些微妙的錯誤(被相機框架裁切、顏色錯誤、箭頭重疊),且不報任何錯誤。

五個小工具範本

assets/widgets/ 有五個準備好進行改編的場景,每個都是上述建構模組的實際範例:

檔案顯示內容建構來源
laser.pov一個傳播的振盪波 + 方向箭頭(光、聲音、任何訊號)sv_wave_tube(開放、無錐度)
particle_current.pov一行 N 個粒子,每個粒子帶有一個向量屬性,沿著流動方向漂移sv_atom + sv_arrow + 一個流動箭頭
thermal_grid.pov一個 NxN 晶格,帶有小的位置抖動,根據離中心距離從發光熱到冷sv_glow_sphere + 一個抖動的網格迴圈
interaction_triangle.povN 個物體由模糊、發光、非剛性的「交互作用」線連接(與物理鍵結不同)sv_atom + sv_wave_tube(錐度、抖動、發光)

複製最接近你需要的範本,並在修改幾何形狀本身之前,更改頂部宣告的參數(顏色、數量、間距、振幅)——所有四個範本都設計成「旋鈕」位於頂部。

對於真實的分子/晶體結構(而非概念圖示),跳過小工具,直接使用 molecule.inc:對原子座標進行迴圈,呼叫 sv_atom 和 sv_bond,並為每個原子的向量(自旋、偶極、位移)使用 sv_arrow;如果該向量的方向本身是有意義且值得以顏色編碼的數據,則使用 sv_orientation_colour。

值得保留的設計慣例

這些並非隨意決定——每一個都來自實際的視覺審查回合:

  • 白色背景,真正的 Alpha 通道(+UA)。 渲染結果可直接放入投影片/頁面/圖表中,沒有可見的方框,並且無論背後是什麼,都能與其他面板乾淨地組合。
  • common.inc 中的三點光源系統,而非單一點光源。一個硬光閱讀起來像是渲染的 3D 物體(「剪貼畫」);而軟性主光+補光+補光系統閱讀起來像是拋光、霧面、印刷的插圖。在多面板圖表的每個面板上保持相同的系統,以便它們讀起來像同一系列——一個與相鄰面板照明不同的面板,即使幾何風格匹配,看起來也像一個不匹配的貼紙。
  • 鍵結/剛性連接器獲得一個小的遠離相機的 z 偏移(sv_bond 的 ZOffset 參數),每當鍵結和箭頭可能在同一區域附近平行運行時——否則它們會 Z 軸衝突,或者鍵結會明顯切入箭頭尖端。偏移量足夠小(在典型場景比例下為 0.15-0.25 單位),沒有人會有意識地注意到它的存在。
  • 箭頭比「接觸」短 10-20%。 如果兩個向量箭頭在一個共享點相遇,縮小 Scale 直到它們的尖端彼此錯開——接觸的尖端閱讀起來像渲染故障,而非數據。
  • 抽象與物理連接使用不同的視覺語言。 真實的鍵結(sv_bond):剛性、清晰、霧面。抽象的耦合/力/相關性(sv_wave_tube 搭配 Glow=true):波浪狀、邊緣柔和、發光。不要將無法指向真實原子-原子軌道重疊的交互作用畫得像實體桿件一樣。
  • 稍微扭曲「通用」的排列。 完美的等邊三角形或完美的規則網格閱讀起來像剪貼畫。小而刻意的規則性偏差(參見 interaction_triangle.pov 的三角形,或 thermal_grid.pov 的抖動)即使在非模擬輸出的示意圖示中,也能閱讀起來像「一個真實的系統」。

當你在渲染真實的模擬數據而非圖示時

如果原子位置/向量來自實際模擬(DFT、分子動力學、微磁學等),上述的圖示小工具慣例仍然適用,但你是從真實座標數據填入 sv_atom/sv_bond/sv_arrow 呼叫,而非手工挑選數值。實用注意事項:

  • 透過原子對之間的距離截止值來生成鍵結,而非手動操作。
  • 如果你想顯示一個真實的、物理上週期的平鋪區域(比一個模擬單元更大的區域),而無需重新執行昂貴的模擬,並且該屬性均勻地平鋪(對於大多數簡單的有序基態而言是正確的),那麼通常可以在幾何上複製已經收斂的小單元結果,而不是重新模擬一個更大的系統——但請先在你的案例中驗證該屬性確實不會在單元之間變化。
  • 裁剪到物理上有意義的邊界(例如,一個完整的配位殼/單元圖案),而非任意的矩形——裁剪本身應說明結構的一些真實情況。

故障排除

在花時間除錯 POV-Ray 解析錯誤或看起來錯誤的渲染結果之前,請閱讀 references/troubleshooting.md ——它列出了在建立此技能時已遇到的特定陷阱(看起來像普通變數名稱的保留 SDL 詞彙、靜默的 Alpha 透明度錯誤、POV-Ray 的相機手性、sphere_sweep/array 的作用域怪異點)。大多數 POV-Ray 錯誤訊息對於語法問題是誠實的,但對於從普通程式設計師的預期來看為何它看起來如此,卻沒有幫助;該檔案的存在是為了讓你不必重新發現同樣的少數陷阱。

有關每個巨集參數和設計原理的更完整說明(包含比此處更多的範例呼叫),請參閱 references/techniques.md。

Individual skills in this repo

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

相關技能