跳轉到內容

Celestia/教程/高階小行星

來自華夏公益教科書

在您編寫了基本的小行星定義後,您可能希望進行一些工作以使您的小行星更準確。畢竟,一些小行星已被觀察到足以讓我們知道它們的額外引數,例如形狀、顏色和旋轉軸。

本教程假設您已閱讀上一頁:簡單小行星。它還假設您有一個.ssc檔案,其中包含類似於以下內容的程式碼。對於此示例,我們將使用小行星107 卡米拉

"107 Camilla:Camilla" "Sol"
{
	Class "asteroid"
	Mesh "asteroid.cms"
	Texture "asteroid.jpg"
	Radius 105.185

	EllipticalOrbit
	{
	Epoch	        2459000.5
	Period		6.52164269786
	SemiMajorAxis	3.49059288735
	Eccentricity	0.06510884809
	Inclination	10.0014540063
	AscendingNode	172.582645061
	ArgOfPericenter 306.396995698
	MeanAnomaly	27.1200816186
	}

	Albedo 0.059
	RotationPeriod 4.844
}
我們將使用Blender來處理模型。

您使用的模型asteroid.cmsroughsphere.cmsCMS模型。這些模型適合對斑點和其他簡單形狀進行建模,但對於詳細模型,您需要使用3DS或CMOD模型。CMOD模型是推薦的,因為與3DS檔案相比,Celestia使用CMOD檔案執行得更快。

小行星模型可以從幾個地方下載,但3D小行星目錄非常全面,並且是查詢模型的好地方。模型可以以PLY或OBJ格式下載,但無論哪種方式,它們都必須在用於Celestia之前進行處理。

在本教程中,我們將使用Blender。它是一個免費的開源程式,與Celestia一樣,功能非常強大。但是,它的使用者介面和控制元件可能相當令人生畏!因此,將提供螢幕截圖。在開始之前,請下載Blender並安裝它。您需要2.79或更低版本,因為2.8刪除了對3DS格式的支援。(如果您使用的是Blender 2.8,可能會有支援匯入/匯出3DS檔案的外掛。)

請注意,本教程存在一個固有的限制,即3DS檔案有65,536個多邊形的限制,因此原始形狀模型不能超過這個數字的多邊形。

模型方向

[編輯 | 編輯原始碼]
如何在Blender中匯入模型。

對於107卡米拉,模型可以從這裡下載。卡米拉有兩個版本可用:一個是Torppa等人提供的,它是從光變曲線反演中推匯出來的,另一個是Hanuš等人提供的,它是從直接拍攝小行星影像中推匯出來的。光變曲線反演涉及從光變曲線(顯示物體亮度隨時間變化的圖表)中重建形狀。這是獲取小行星模型最簡單的方法,但由此產生的模型不如直接成像製作的模型好。因此,在此處,下載Hanuš模型,以PLY或OBJ格式。

在這裡,模型太大,應該縮小以提高可見度。

開啟Blender。Blender始終以一個立方體開始,應該刪除它。按XEnter刪除立方體。然後,透過轉到左上角的File,然後Import,然後選擇您下載的模型型別來匯入檔案。您將在計算機中看到檔案列表,因此選擇您的小行星模型。

在某些情況下,模型太大,無法舒適地檢視,並且您將看到模型本身內部的檢視。在這種情況下,您可能希望將模型縮放到一定大小,但這並非嚴格必要。為此,請按S,然後將游標向內拖動,直到整個模型都可見為止。但是,請確保模型在縮放時不會翻轉。單擊一次以設定大小。

如果您下載了OBJ模型,則需要將其旋轉,以便下一步(UV對映和新增表面法線)能夠正常工作。鍵入R,然後X,然後-90,然後按Enter,將其繞X軸旋轉-90°。如果您下載了PLY模型,則不要這樣做。

準備模型

[編輯 | 編輯原始碼]
切換到左下角的“編輯模式”。

現在,這些模型只定義了頂點和麵。這意味著Celestia或任何軟體都無法對映紋理或平滑燈光。要解決這些問題,我們需要在模型中新增UV貼圖和表面法線。

如何向模型新增UV貼圖。

UV貼圖只是一組座標,它告訴軟體如何將紋理包裹在模型周圍。要將此新增到您的模型,請轉到螢幕左下角的Object Mode,並將其更改為Edit Mode。(如果您無法做到這一點,請嘗試右鍵單擊模型並重試。)您應該看到模型的所有面和頂點現在都以橙色突出顯示。

接下來,選擇螢幕左側第三個標籤(請參閱右側的螢幕截圖),即Shading/UVs。在UV Mapping:下,單擊顯示Unwrap的選單,然後選擇Sphere Projection

表面法線

[編輯 | 編輯原始碼]

表面模型是告訴軟體光線應如何從模型上反射的向量。您應該已經在Shading/UVs標籤中。在Normals:下,單擊Recalculate

匯出為3DS

[編輯 | 編輯原始碼]

在匯出模型之前,請鍵入R,然後X,然後-90,然後按Enter。這對PLY和OBJ模型都是必需的。

然後,透過轉到File,然後Export(位於Import下方),並選擇3DS來將模型匯出為3DS模型。

轉換為CMOD

[編輯 | 編輯原始碼]

您的3DS模型在技術上可以用作Celestia中的網格,但強烈建議使用CMOD。要將其轉換為CMOD,請下載3DS到CMOD轉換器。Windows和MacOS版本可從這裡獲得。選擇您剛匯出的3DS,然後輸出CMOD(推薦使用二進位制,因為生成的檔案更小)。

完成後,您現在就擁有了可以在Celestia中使用的CMOD檔案!將您的CMOD檔案移動到“models”目錄(或在您的“extras”目錄中建立一個新的“models”目錄)。然後將Mesh引數更改為您的檔名稱。

穀神星是灰色,帶有一點棕色。

許多小行星是灰色的,但它們也可能具有不同的棕色和紅色色調。要模擬這一點,您需要使用三個值來指定小行星的Color,分別代表紅色、綠色和藍色元件(RGB),如下所示

	Color [ 1.000 0.945 0.881 ]

有兩種方法可以做到這一點:一種方法使用顏色索引,另一種方法使用視覺光譜。使用視覺光譜更準確,但資料僅存在於一小部分小行星中,並且過程稍微複雜一些。

使用顏色索引

[編輯 | 編輯原始碼]

顏色索引告訴您小行星的顏色。對於許多天體物件,包括小行星,顏色位於從紅色到藍色的光譜範圍內。(然而,當小行星呈現“藍色”時,這意味著它是灰色的。)顏色索引越高,它就越紅。

天文學家透過測量物體在兩種不同的波長特定濾光片(稱為“通帶”)中的亮度,然後減去差值來計算顏色索引。這意味著根據所使用的通帶,存在多種顏色索引。最常見的是UBVRI光度系統中的U−B、B−V和V−R指數,通常稱為約翰遜光度系統。

要計算Color值,請使用 FarGetaNik 的顏色計算器。首先,複製一份電子表格。然後,進入“顏色索引”選項卡,在“B−V”和“B−R”單元格中輸入相應的數值。(這裡不用管“反照率”和“紋理亮度”。)對於三個 RGB 值,使用“相對”值:單元格 E11、F11 和 G11。

使用 SMASS 光譜

[edit | edit source]

SMASS(小行星主帶小型光譜巡天)是對小行星進行的大規模巡天,產生了大量的小行星光譜資料。這些資料可以在SMASS 網站上找到。利用這些光譜,可以計算出小行星的 RGB 顏色值。

首先,進入當前的GitHub 倉庫,點選綠色的“克隆或下載”按鈕。然後,下載 ZIP 檔案。

然後,開啟計算機的命令列。在 macOS 上被稱為“終端”,在 Windows 上被稱為“命令提示符”(cmd.exe)。在視窗中,輸入cd,並將當前目錄更改為名為“src/tools/spectrum2rgb”的目錄。可以透過輸入cd並將“spectrum2rgb”資料夾拖動到命令列視窗來實現。

如果您使用的是 Windows,則需要安裝 GCC。安裝 GCC 的說明可以在以下地址找到:https://gcc.gnu.org/install/

完成此操作後,在命令列視窗中輸入gcc spectrum2rgb.c。這將在同一個資料夾中建立一個名為“a.out”的檔案。

現在,進入SMASS 網站目錄。向下滾動到您要新增到 Celestia 的小行星。透過點選檔案圖示選擇一個光譜檔案。請注意,光譜必須位於電磁波譜的可見光(Vis)部分,而不是近紅外(NIR)部分。您應該看到兩列或三列數字。

將這些數字儲存為文字檔案。如果數字有三列,則刪除第三列。這是誤差值,不需要。將文字檔案移動到“spectrum2rgb”資料夾中。

現在執行程式碼。在命令列視窗中,輸入以下內容:

./a.out solar_spectrum.txt filename.txt

其中filename.txt是您文字檔案的名稱。執行後,命令列提示符應該輸出一個顏色定義,該定義可用於 Celestia,如下所示:

	Color [ 1.000 0.943 0.905 ]

自轉軸

[edit | edit source]

對於大多數天體,使用RotationPeriod就足夠了,因為這只是關於它們自轉的唯一已知資訊。但是,對於一些天體,自轉軸的方向也是已知的。對於這些小行星,最好使用UniformRotation,如下所示:

	UniformRotation
	{
		Period <number>
		Inclination <number>
		AscendingNode <number>
	}

Period與之前RotationPeriod引數相同。但是,軸向方向通常以兩種方式給出:λ 和 β(黃道座標值)或 α 和 δ(赤道座標值)。這些值通常可以在呈現這些模型的同一篇論文中找到。例如,根據Pajuelo 等人(2018),極點解為 λ = 68.0°,β = 58.3°。Inclination簡單地為 90 − β,AscendingNode為 90 + λ。因此,對於 107 卡米拉,自轉模型應該如下所示:

	UniformRotation
	{
		Period 4.844
		Inclination 31.7
		AscendingNode 158.0
	}

Pajuelo 等人(2018)還列出了 α 和 δ 的極點解,即 α = 35.8° 和 δ = 76.1°。如果您要使用這些值,只需分別用 δ 替換 β,用 α 替換 λ。您還必須指定主體座標系為EquatorJ2000座標系,因為 Celestia 的預設座標系為EclipticJ2000座標系。對於 107 卡米拉,它將如下所示:

	BodyFrame { EquatorJ2000 { Center "Sol" } }
	UniformRotation
	{
		Period 4.844
		Inclination 13.9
		AscendingNode 125.8
	}

有關更多資訊,請參見Celestia/自轉模型Celestia/參考座標系

衛星

[edit | edit source]

與恆星和行星一樣,小行星也可以有衛星圍繞它們執行。要了解如何新增衛星,請參見衛星頁面。

華夏公益教科書