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 }
您使用的模型asteroid.cms
或roughsphere.cms
是CMS模型。这些模型适合对斑点和其他简单形状进行建模,但对于详细模型,您需要使用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个多边形的限制,因此原始形状模型不能超过这个数字的多边形。
对于107卡米拉,模型可以从这里下载。卡米拉有两个版本可用:一个是Torppa等人提供的,它是从光变曲线反演中推导出来的,另一个是Hanuš等人提供的,它是从直接拍摄小行星图像中推导出来的。光变曲线反演涉及从光变曲线(显示物体亮度随时间变化的图表)中重建形状。这是获取小行星模型最简单的方法,但由此产生的模型不如直接成像制作的模型好。因此,在此处,下载Hanuš模型,以PLY或OBJ格式。
打开Blender。Blender始终以一个立方体开始,应该删除它。按X
和Enter
删除立方体。然后,通过转到左上角的File
,然后Import
,然后选择您下载的模型类型来导入文件。您将在计算机中看到文件列表,因此选择您的小行星模型。
在某些情况下,模型太大,无法舒适地查看,并且您将看到模型本身内部的视图。在这种情况下,您可能希望将模型缩放到一定大小,但这并非严格必要。为此,请按S
,然后将光标向内拖动,直到整个模型都可见为止。但是,请确保模型在缩放时不会翻转。单击一次以设置大小。
如果您下载了OBJ模型,则需要将其旋转,以便下一步(UV映射和添加表面法线)能够正常工作。键入R
,然后X
,然后-90
,然后按Enter
,将其绕X轴旋转-90°。如果您下载了PLY模型,则不要这样做。
现在,这些模型只定义了顶点和面。这意味着Celestia或任何软件都无法映射纹理或平滑灯光。要解决这些问题,我们需要在模型中添加UV贴图和表面法线。
UV贴图只是一组坐标,它告诉软件如何将纹理包裹在模型周围。要将此添加到您的模型,请转到屏幕左下角的Object Mode
,并将其更改为Edit Mode
。(如果您无法做到这一点,请尝试右键单击模型并重试。)您应该看到模型的所有面和顶点现在都以橙色突出显示。
接下来,选择屏幕左侧第三个标签(请参阅右侧的屏幕截图),即Shading/UVs
。在UV Mapping:
下,单击显示Unwrap
的菜单,然后选择Sphere Projection
。
表面模型是告诉软件光线应如何从模型上反射的向量。您应该已经在Shading/UVs
标签中。在Normals:
下,单击Recalculate
。
在导出模型之前,请键入R
,然后X
,然后-90
,然后按Enter
。这对PLY和OBJ模型都是必需的。
然后,通过转到File
,然后Export
(位于Import
下方),并选择3DS来将模型导出为3DS模型。
您的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]与恒星和行星一样,小行星也可以有卫星围绕它们运行。要了解如何添加卫星,请参见卫星页面。