跳转到内容

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]

与恒星和行星一样,小行星也可以有卫星围绕它们运行。要了解如何添加卫星,请参见卫星页面。

华夏公益教科书