Astronomy Plugin 中文翻译详述
描述
天文插件提供了一个蓝图接口,可以进行许多种天文计算。例如,您可以从地球上的任何点和时间计算星星和行星的位置,或者模拟太阳系。该插件具有超过30个高级天文函数,可通过蓝图访问,并且可以使用三种行星星历:JPL低精度公式、VSOP87和高精度NASA bsp文件。技术概览
该插件的核心是一个包含超过30个天文函数的静态蓝图库。该插件旨在与您的蓝图和艺术品集成,附带的星星和行星蓝图是低质量的,仅用于演示目的。如果您放置星星和行星角色,则不建议使用SkyBox - 这些对象将位于场景使用的任何天空盒的前面,因此星星和行星将出现在任何云的前面。此插件仅适用于Windows操作系统。天文插件使用右手坐标系,因为大多数天文坐标系都是右手坐标系。当需要获取虚幻世界坐标时,建议反转Y轴。一些函数在函数文档中已经描述了自动返回此项。主要不自动执行此操作的函数是直接返回星历数据的函数(例如GetPlanetState)。星历
天文插件附带三种类型的星历。
JPL低精度 - 这些是由喷气推进实验室提供的低精度公式。默认情况下,插件使用此星历。
VSOP87 - 行星和太阳的解析级数。
JPLDE- SPK文件是由NASA生成的星历文件。这将提供最准确和最快的星历查找,但需要额外的设置(请参阅设置SPK星历部分)。
更改星历
要使用不同的星历,您需要调用下面的三个函数。在BP_AstroGameModeExample蓝图的SetNewEphemeris函数下有一个示例。
CreateNewEphemeris - 这将创建所需星历类型的星历对象。
InitEphemeris - 这将执行星历所需的任何初始化。可选地,如果使用SPK文件,您可以传入一个要加载的SPK文件数组。
SetActiveEphemeris - 这告诉插件使用此星历。
SPK设置
在您项目的Content文件夹中创建一个名为“SPKData”的文件夹。 最少需要一个闰秒文件(.tls)和一个行星星历文件(.bsp)。 a. BSP星历文件可在以下网址下载:ftp://ssd.jpl.nasa.gov/pub/eph/planets/bsp/ i. 下载一个星历文件,并将其重命名为“PlanetData.bsp”。 b. TLS(闰秒时间核心)文件可在以下网址下载:https://naif.jpl.nasa.gov/pub/naif/generic_kernels/lsk/ i. 下载最新的tls文件,并将其重命名为“TimeData.tls”。 您可以使用JPLDE星历对象的LoadKernal函数加载额外的卫星、彗星或其他数据。示例项目使用Voyager 2数据执行此操作。 构建和打包项目后,您需要将SPKData文件夹复制到构建的内容目录中。您可以通过设置“Additional Non-Asset Directories to Copy”包设置,让Unreal在构建过程中自动执行此操作。重要的蓝图函数
CalculatePlanetDirectionFromEarth(从地球计算行星方向) - 返回从地球上某一点指向行星、太阳或月球的方向。通过调用CalculatePlanetPosition来获取地心坐标的天体位置,然后将结果传递给TopocentricToAzEl()函数。
GetPlanetState(获取行星状态) - 从太阳系的视角返回行星/卫星/太阳的位置。不适用于地球场景。返回右手坐标系。
StarManager->UpdateAllStarPositions()(星星管理器->更新所有星星位置) - 根据Star Manager属性中所做的任何更新的UTCTime或位置更改,更新与星星管理器关联的所有星星。
高级星星选项
星星类表定义了为不同亮度的星星生成哪个蓝图。因此,如果您想为亮度较暗或较亮的星星生成不同的蓝图,可以向此表中添加条目。 星星大小表定义了基于星星亮度的大小转换。默认情况下,较亮的星星会变大,以使其看起来更亮。 SpawnDistance定义了生成星星蓝图对象的距离。星星计算方法:
Full(完全)对每颗星星执行所有计算。如果星星不需要经常更新,则使用此方法。\n Fast Update(快速更新)一次计算每颗星星的位置,然后将来的更新计算地球的旋转并根据地球的旋转移动星星。如果您需要频繁更新星星,则使用此方法。核心功能列表:
CalculateStarPosition - 返回星星(或太阳系外的任何对象)在不同坐标系中的天体位置。CalculatePlanetPosition - 返回行星在不同坐标系中的天体位置。
PlanetDirectionFromEarth - 返回从地球表面指向行星的方向。
GetEarthRotator - 返回代表地球旋转的旋转器(左手坐标系以兼容虚幻引擎)。
GetPlanetState - 使用活动星历对象返回所选行星的速度和位置矢量。
其他功能:
GetNumberOfLeapSeconds - UTCTime添加的闰秒数。GetJulianDate - 从日历日期获取儒略日期。
GetCalendarDate - 从儒略日期获取日历日期。
GetTTJulianDatefromUTC - 获取儒略日期格式的地球时间(也称为星历时间)。
GetUT1JulianDatefromUTC - 返回近似(在0.5秒内)的UT1时间的儒略日期格式。
GetCoordsTypeName - 根据观测者位置类型和坐标系选择,返回Star或Planet位置返回的坐标类型的名称(例如,地心位置,天文位置等)。
CalculateSideRealTime - 计算恒星时。
TerrestrialToCelestial - 将矢量从地球(ITRS)转换到天体(GCRS)系统。
CelestialToTerrestrial - 将矢量从天体(GCRS)系统转换到地球(ITRS)。
TopocentricToHorizon - 将地心赤经和赤纬转换为天顶距和方位角。(即从天体位置获取方位角和高度角)
AzElToRectangular - 将方位角和高度角转换为笛卡尔矩形坐标(用于虚幻引擎兼容的左手法则)。
RectangularToAzEl - 将笛卡尔矩形坐标转换为方位角和高度角。
TransformCoordSystem - 为纪元和/或赤道和黄道坐标系的变化转换对象。
HipparcosToJ2000 - 将Hipparcos目录数据从J1991.25时期转换为J2000.0时期。
PrecessionShift - 将一个时期的赤道矩形坐标预处理到另一个时期。
ConvertSphericalToEclipticLatLong - 将赤经和赤纬转换为黄经和黄纬。
EquationOfOrigins - 计算给定TT儒略日期时的天体中间原点(CIO)的真赤经。
EarthRotationAngle - 此函数返回给定UTC儒略日期的地球旋转角度(theta)的值。
SetCelestialPoleOffsets - 此函数为非常高精度的应用程序指定天体极偏移量。
GetEarthTiltParameters - 计算与地球旋转轴方向有关的各种量。
ConvertToEcliptical - 将赤道位置矢量转换为黄道位置矢量。
ConvertToEquatorial - 将黄道位置矢量转换为赤道位置矢量。
SphericalCoordsToVector - 将赤经和赤纬转换为矢量。(赤道球面坐标到矢量(赤道矩形坐标))
GetPlanetToEarthRadiusRatio - 返回行星半径与地球半径的比值。
GetKMFromAU - 返回以KM为单位的AU单位的FDoubleVector。
GetAzElInDegrees - 从世界方向矢量返回方位角(0-360度)和高度角。

浙公网安备 33010602011771号