驗收單 · 2026-10-22 · 约 10 分钟

Celestia 手動一次、剩下交給腳本:把宇宙觀測流程自動化的實戰筆記

軟體Celestia分類生活休闲
版本1.9.5體積399.36M
開發方暂无资料狀態已歸檔
Celestia 手動一次、剩下交給腳本:把宇宙觀測流程自動化的實戰筆記

Celestia 是什麼、能幹嘛、適合誰

Celestia 是一款免費的三維宇宙天體觀測軟體,從手機到桌機都有對應版本——它不像 NASA 的模擬器那樣厚重,打開就是一整片星辰大海,你可以飛去任何一顆行星、衛星、星系、星雲的位置,用任意角度和縮放觀察。我第一次碰它是為了給侄女講課,後來自己玩上癮,現在手機和桌機各裝一份,手機版通勤時摸、桌機版下班後窩著看。

它內建了完整的 JPL DE 星曆表,這意味著你可以跳到過去或未來的任意時間點——想看 2024 年 4 月 3 日火星上的日食?搜索一顆小行星、跳到那個日期、加速時間就能親眼看到。想在冥王星上抬頭看卡戎懸在天空中一動不動?飛過去按 L 著陸就行。這種「即時跳到任意時空點」的能力,是 Celestia 跟 Google Earth 或其他星圖 App 最大的區別。

安裝

手機版安裝最省心——去 Celestia下載 拿 APK(約 400MB)後放行未知來源即可,Android 7.0 以上、支援 OpenGL ES 3.0 的機器都能跑。安裝完第一次打開會進入歡迎介面,點一下教程就能快速上手基本操作(雙指縮放、拖動旋轉、搜索跳躍)。桌機版的話推薦去 Celestia官網 的 GitHub Releases 拿最新安裝包,Windows 7 SP1 以上、有 OpenGL 3.3 顯卡、1GB 顯存就能跑,入門核顯也沒問題——Celestia 對硬體門檻一直很友好,它的優化策略是「實在跑不動就自動降解析度貼圖」,不會讓你看到粉色佔位符。

有一個坑要留意:之前裝過舊版本的話,先把舊的資料目錄清乾淨再裝新版,不然有時會出現搜索能找到天體但畫面裡什麼都沒有——這是舊版本遺留的 SSC 快取檔案跟新版的解析器打架。另外裝添加件時要確認版本相容,有些只支援 1.3.x 的老添加件丟進 1.9.x 裡會導致渲染器報錯,Celestia 不會崩,但就是看不到東西。

我是從哪次重複勞動起意去翻自動化能力的

事情起源於我當時準備一套給國中學生上的天文課——課程要演示四個場景:月球著陸看地球、火星日食、冥王星雙星系統、以及卡西尼號最後一刻墜入土星大氣。每個場景都要先搜索天體、飛過去、著陸、跳到特定時間點、調整視角。四個場景連下來,中間還要切到學生的視角解釋,等我講到第三個時已經忘記卡西尼號那個要跳到幾年幾月幾號了。

那天晚上我翻 Celestia 的文檔時發現了 CELX——它的腳本語言。原來我每天在做的「搜尋 + GoTo + Lander + SetTime」這一串手動操作,Celestia 早就給了一個編排方式。從此我開始把常用的觀測路線都打包成腳本,現在開課前只要跑一次腳本,四個場景就按順序自動走一遍,我只要專心講解就行。

自動化能力盤點:Celestia 內建了什麼

CELX 腳本是 Celestia 自動化 的核心——它的語法很簡潔,概念接近 Lua。一個典型的腳本長這樣:

@cel

Select { object "Mars" }
Lander {
    Latitude 18.7
    Longitude 226.2
    Duration 5
}

這幾行代碼就能在五秒內把相機從當前位置飛到火星奧林匹斯山附近的表面,等同於你手動「搜索 Mars → 按 G → 按 L → 輸入經緯度」這一整套操作。除了 CELX,Celestia 還有幾個容易被忽略的 自動化 入口:

預設時間跳躍:工具列裡有個時間跳躍面板,可以把「跳到下一次日食」「跳到下一次行星沖日」做成快捷按鈕,不用每次手動算日期。這個功能隱藏在時間控制功能表裡,很多人不知道。

渲染設定檔案:Celestia 的渲染選項(顯示哪些天體類型、軌道線、標籤、環境光強度)可以匯出成一個 .cfg 檔案,下次直接匯入就能恢復。我平時看深空天體用一套設定、看行星表面用另一套、給學生上課又一套——三個 cfg 檔案備著,切換起來比手動改選項快得多。

添加件版本相容檢查:這不是 Celestia 內建的,但我自己寫了一個簡單的 CELX 腳本來做——啟動時讀取 Motherlode 的版本清單,對照本地安裝的添加件,把版本不相容的列在控制台裡。原理就是 GetConfig("CelestiaVersion") 拿到當前版本,然後跟添加件聲明的版本範圍比對。

值得自動化的兩件事

固定觀測路線

如果你有一個每週都會重複走一遍的觀測行程——比如每週一晚上去月球看地球、每個月跟著國際空間站繞地球一圈——寫一個 CELX 腳本打包下來最划算。我自己有個「週末放鬆腳本」,從地球出發,按順序飛去月球著陸 → 火星奧林匹斯山 → 木星歐羅巴 → 土星光環下方著陸,每站停留 20 秒再自動飛往下一站。整個過程大約兩分鐘,我就在沙發上躺著看。

腳本裡用到的關鍵指令是 SetTime 和 Wait:SetTime 跳到特定時間點、Wait N 停留 N 秒再往下走。把這兩個跟 Select + GoTo + Lander 串起來,就是一條完整的自動巡覽路線。

添加件的渲染開關預設

Celestia 裝了幾個添加件之後,渲染功能表裡的勾選項會變得密密麻麻——深空天體、小行星、航天器、行星環……每次切換場景都要手動勾來勾去。我的做法是寫兩個 cfg 檔案:一個叫 deepspace.cfg(關掉所有行星表面細節、打開所有深空天體和 Gaia 星目錄)、一個叫 planet.cfg(關掉星雲和星系、打開行星紋理和衛星軌道)。切換場景時只要匯入對應的 cfg,一秒鐘搞定,比手動點十幾個複選框高效多了。

不值得自動化的(說清為什麼寧願手動)

臨時的天體觀測——比如今天心血來潮想搜尋一個昨天剛發現的小行星、看看它未來十年的軌跡——這種場景用腳本反而更慢。原因是:腳本需要提前知道你要搜尋什麼,但臨時觀測的樂趣就在於「我剛好看到這顆、好奇它長什麼樣、飛過去看看」。手動操作在這裡是零摩擦,寫腳本反而增加了認知負擔。

另外,Celestia 的加速時間觀察(按 L 到 100x 看行星繞太陽轉)我也從來不自動化。加速的快慢、什麼時候該放慢、什麼時候該暫停看一個偶然出現的掩星事件——這些判斷是即興的,交給腳本的固定節奏會錯過很多細節。自動化 適合「重複的、可預測的」流程,不適合「探索性的、即興的」體驗。

月球特寫

翻車兜底:自動化失效時怎麼發現、怎麼救

腳本跑得好好的,某天突然失效——這件事我碰過兩次,一次是 Celestia 版本升級後 CELX 語法有小調整,一次是裝了新添加件後 SSC 檔案語法錯誤導致腳本裡的 Select { object "Mars" } 找不到目標。

排查的順序我總結成五步:第一,確認 Celestia 版本在腳本支援範圍內(GetConfig("CelestiaVersion") 打印一下);第二,搜索那顆天體看能不能找到、能不能按 G 飛過去——如果手動也找不到,問題在 SSC 檔案;第三,打開控制台(Ctrl+Shift+C)看報錯資訊,Celestia 的錯誤棧資訊其實寫得很直白,看懂哪一行語法錯了就改哪一行;第四,版本不相容的添加件先移出去再跑腳本;第五,實在不行就把腳本裡的每一行拆開單獨執行,定位是哪一行卡住的。

有一個細節:CELX 腳本裡 Select { object "Mars" } 這種寫法,如果 SSC 檔案裡這顆天體有重複定義,Celestia 會選最後一個——所以如果你裝了 Mars 高清紋理添加件,它會覆蓋原始的 Mars 定義,這時腳本能找到天體但渲染效果變了,不一定是錯,只是跟你預期的樣子不一樣。這個不算翻車,但要注意。

結論

Celestia 的自動化能力不需要很深的編程基礎就能上手——CELX 的語法對有過一點腳本經驗的人來說零門檻,就算完全沒寫過代碼,把官網現成的腳本複製過來改幾個參數也能用。它適合的使用強度是「每週都會打開 Celestia、有固定想重複的觀測流程」這群人——如果你只是偶爾打開看一眼,自動化確實沒必要。但只要你想把 Celestia 當成一個工具來用而不只是一個玩具,花半小時把常用路線寫成腳本,回報是把幾十次手動操作壓縮成一鍵。

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

同類驗收報告