作用:最快可复现的 Unity 原生星点/billboard 渲染参考。
可借鉴点:将星星表示为 GPU 上生成的点状或 billboard 几何;在 shader 中控制视大小;显示效果随相机和 FOV 变化。
复用风险:偏 Demo 性质,不包含完整 Gaia DR3 数据接入和导航级验证流程。
简单高效的星图渲染方法,将三维坐标保留方向信息,投影到固定球面上,每颗星用一个带颜色和透明度的小四边形表示;大量四边形被合并成少量 Mesh,再由发光 Shader 渲染成星空。星星方片不是每帧动态朝向摄像机(局限)。
数据集文档:https://gaia.ari.uni-heidelberg.de/gaiasky/docs/master/
作用:科学星表组织、大规模恒星渲染、LOD 星表和天文正确性方面最强的参考。
可借鉴点:基于星等的恒星外观、LOD 星表、物理星表值和视觉后处理参数的严格分离。
复用风险:Java/libGDX 桌面软件架构;更适合迁移思想,而不是直接复用代码。
根据相机坐标和视角的星表加载方法:
八叉树空间划分、LOD 节点元数据(在数据预处理阶段,整个银河系/宇宙的星表数据会根据三维空间分布,被递归地划分到一个八叉树结构中,按需加载释放机制),视网膜立体角裁剪算法,异步流式加载(当相机移近某区域且通过
相关算法的实现原理有待深入学习,可以应用到导航层的星表数据获取与筛选逻辑上,优化性能表现。
作用:小而易读的星表,适合早期 Unity Demo 和字段含义校验。
可借鉴点:CSV 字段简单、包含常见亮星名称、x/y/z 坐标、视星等和色指数。
一个恒星数据集,其中存在部分版本大量的数据源来自gaia DR3
URL: https://www.dlr.de/en/sc/research-transfer/software-solutions/cosmoscout-vr
作用:科学 VR 可视化架构参考。
可借鉴点:插件化天体可视化、SPICE/星历导向的工程风格、VR 性能问题处理。
复用风险:C++/OpenGL 生态,不是 Unity 优先。
主要分析了其星图渲染模块,与StarMap类似,重点也是远距离星空背景和亮度表现。
星表解析统一化、赤经赤纬转三维 parsec 坐标、B-V 转色温、星等转亮度、按观察者位置实时重算视星等(可参考算法后续引入),最后用 GPU 点/公告板/compute 光栅化渲染为发光星空。
把星点投影到屏幕像素坐标,用双线性权重把亮度分摊到最近 4 个像素,做原子累加,避免多颗星同时写同一像素冲突,中间纹理存的是“平均色温 + 累计亮度”(避免了大量微小点在普通光栅管线中产生不稳定闪烁)
观测者位置为相机位置,恒星位置固定在缩放后的三维空间,保留方向。该项目使用的Tycho2缺失视差(距离信息),因此该部分恒星数据落在天球壳上。有距离信息的恒星将尺度进行了压缩,形成一个以观察者附近为中心的三维恒星点云。
作用:视觉质量和面向公众的天文馆产品参考。
可借鉴点:展示效果、尺度感、科普型 UI 提示。
复用风险:不是开放的科学 Gaia 数据接入参考。
似乎是商业项目,相关网页代码做了混淆,无开源代码。
作用:天文馆/游戏引擎架构参考。
可借鉴点:场景组织、天文学抽象、包和模板的拆分方式。
复用风险:Godot/GDScript 生态,只建议借鉴设计思路。
这个项目主要是太阳系的可视化建模渲染。
恒星背景是一张固定在远处惯性天球上的全景贴图,完全不涉及数据集与星表数据。这种星图渲染的方式其实也可以借鉴,简单高效且实际效果非常好,8K/16K贴图中还包含了星云这种信息,非常拟真。
关于可视化渲染与导航的思考:
星图渲染层应该完全独立,不能作为导航层参考的视觉依据。 如果导航层只依赖渲染 Mesh 里的 Unity 坐标,之后做距离计算、搜索、星体查询时会受到缩放精度和渲染优化影响。可视化仿真为了良好的人眼观感,渲染逻辑不适用物理上的亮度衰减模型。导航层相关算法可能需要数据层结合传感器参数做进一步拟合处理(根据导航要求,对导航会遇到的视角内星图做独立符合物理模型的计算和渲染)。
导航层应该实现的功能: 根据仿真观测者的坐标和实际视角,快速根据星表数据集锁定会出现在传感器探测范围的恒星,查数据表获取高精度坐标和星等数据,单独进行数据仿真工作。而在用户界面(软件界面)仅显示渲染层结果,根据导航结果做高亮或定位,不应该负责搜索和计算逻辑,让导航算法隐藏于后台。