图观引擎 低代码开发案例 | 航天领域 - ISS 国际空间站
产品介绍
多年来,数字冰雹始终没有停下在航天领域技术探索和创新的脚步,我们在航天领域的技术积累不仅体现在具体的航天项目中,还凝结在图观 低代码开发平台中。
今天为大家分享的“ISS 国际空间站”低代码开发应用案例,是通过调用图观引擎 低代码范例构建而成的,旨在帮助每一位开发者们可以快捷构建各种航天器数字孪生应用,进一步提升开发效率和质量。
国际空间站(International Space Station,简称ISS)自1998年11月20日发射以来,已成为人类在太空中最长久和最重要的科学实验平台之一。ISS 在地球上空约400公里的近地轨道上运行,这个庞大的结构由多个舱段组成,包括居住舱、实验舱和功能舱,承载着科学研究、技术试验以及国际合作的重大使命。
在 ISS 国际空间站应用案例中,我们将图观低代码开发平台 在航天器控制方面的关键功能进行了充分展示,针对航天任务的精细化要求,数字冰雹 图观引擎具备强大的物理材质渲染和配置能力,从广袤的宇宙空间环境,到航天器上细微的一颗螺丝钉,都可以实现高精细度、高还原度的仿真效果。提供满足实际业务需求的功能接口,基于低代码开发范例,实现了实时同步的环境光照控制、通过数据驱动进行动作姿态控制、卫星运行视野跟随等丰富功能,可高效快捷构建航天数字孪生应用。
整个 ISS 国际空间站应用案例的构建,我们简单拆分为两个重要环节:
数字孪生场景构建:涵盖 精细化航天器三维模型材质、关节编辑,高还原度的太空环境、光照等效果编辑等; 数字孪生应用低代码开发:涵盖复杂模型对象控制、镜头控制、交互控制、现实效果控制等功能的开发。
图观引擎 提供全云化的场景编辑器、场景服务器,具备强大的 PBR 物理材质渲染和配置能力,可以导入自己的三维模型/基础地图数据,轻松进行效果强化、数据绑定逻辑定义等工作,并通过 场景服务器,发布为场景服务供二次开发调用或网页浏览。
航天器精密外观结构,高精细度渲染还原
基于图观引擎 强大的PBR(物理材质渲染)材质编辑和渲染能力,实现了 ISS 航天器装备精密细节显示,高精度还原航天器的材质、纹理细节、机械结构、零部件、传感器等复杂外观结构细节,能够精确展示航天器装备的结构和功能。
图观 场景编辑器 支持 基本颜色、光泽度、金属度、粗糙度、半透明、自发光、环境反射、玻璃特性、水面特性、涂层特性、材质绘制深度变换、贴图坐标动画等大量强大材质编辑能力,预制海量材质库,经过细致的材质属性编辑,可实现无限接近真实的视觉效果。
太空环境视景仿真,实时环境光照同步
具备强大的空间环境仿真能力,支持场景时间控制,可以根据航天器运行的位置,精确计算、模拟任意时间的环境日照状态;能够与真实世界时间数据绑定,并可依据星历计算地球、太阳等太阳系中主要星体的精确位置、轨道,对地球光照受自身曲率影响的遮挡关系计算、太阳直射光角度计算、环境散射光亮度仿真计算,呈现逼真的太空视景环境、航天器环境光照、反射等效果,辅助在不同环境条件下测试、评估航天器的性能,极大增强场景真实性和实用性。
图观 场景编辑器 具备强大场景光影效果配置能力,支持精细光照、主光源、环境光、辅助光源等属性配置,支持对光源颜色、角度、强度进行所及即所得编辑,支持环境光照贴图,支持定义阴影范围、质量,能够精确调整光源的照射方向,真实模拟不同光源的角度和投影效果,显著提升航天器孪生体对象的真实感和视觉效果。
航天器动作姿态数据驱动,精细关节控制
基于图观引擎一系列关节控制功能,支持对场景中的航天器孪生体对象发送控制指令,并实时监测航天器动作姿态,在状态数据改变后,相应改变航天器对象在场景中的状态显示,不仅可以通过数据驱动实时呈现航天器的姿态和复杂动作,还可实时远程控制的航天器对象的各个关节,模拟其在空间中的运动和操作,提供更高的操作灵活性和准确性。
2.太阳能板、遮阳板姿态控制
支持精确的角度设置和微调,动态复现太阳能板、遮阳板角度调整操作,真实反映不同姿态角度下的光照情况。
当场景配置完成后,可一键发布为云服务,支持网页浏览和二次开发调用。
图观统一开发API,针对典型业务开发所需接口都进行了良好封装,提供数百项实战化 Javascript 开发接口,兼容当前主流的 JavaScript 前端框架,开发人员无需额外学习复杂的三维图形图像开发技术,也无需掌握 C++等三维开发语言,仅需要了解 Javascript 即可快速上手开发。无需再进行每项功能的代码编写,直接引用代码范例,在配套调试工具中进行低代码修改测试,即可便捷进行复杂功能的扩展开发,大幅降低开发门槛和技术难度。
时间控制
图观统一开发 API 预置了时间控制代码范例,可以通过设置时间,实现不同的光照效果。使用 setEnvTime 这个方法,传入 envTime 时间参数(可以是具体的时间点如"12:00")实现对应时间点的光照效果,duration 光照切换时长 以控制光照效果从当前状态平滑过渡到目标状态的时间,提供更自然的真实的视觉体验。
let jsonData = { envTime: , envDate: , fixedTime: false, alwayForward: false, duration: , }; appInstance.uniCall(, jsonData, (result) => { .log(result); });
https://www.tuguan.net/doc/tg-api/?manual.global.specialControl.operation查阅。
模型对象控制
针对航天器对象的关节姿态控制,图观统一开发 API 预置了丰富且全面的接口范例,涵盖场景模型改变姿态、改变样式、关节设置、动画控制等 丰富的 模型对象控制 开发接口,支持对 场景模型对象的 聚焦、点击等交互事件的截取,以及添加自定义处理逻辑,助力用户轻松实现复杂业务需求。
例如,关节控制需要先使用 getModelArticulation 方法获取模型关节,之后使用 setModelArticulation 方法设置三维场景中模型关节数据,通过引用这些代码示例,根据需求少量修改代码参数,就可以轻松实现对三维场景中模型关节的精确控制。
let jsonData = {
id: 'modelId1',
layerId: "layerId",
};
appInstance.uniCall('getModelArticulation', jsonData, (result) => {
console.log(result);
});
let jsonData = { id: , layerId: , duration: , data: [ { articulation: , type: , value: , }, ], }; appInstance.uniCall(, jsonData, (result) => { .log(result);
这里我们简单给大家介绍了几个常用的方法,更多关于模型关节和动画操作的方法指令可在图观官网地址:
镜头控制
图观引擎 提供镜头视野聚焦、镜头视野控制、镜头漫游、镜头路径移动、镜头环绕旋转等多类镜头聚焦 多类开发接口,支持对 镜头视野的 聚焦起始结束、漫游起始结束、路径移动起始结束等镜头事件的截取,以及添加自定义处理逻辑,助力用户轻松实现复杂业务需求。
首先镜头控制功能可以自动跟踪特定目标或区域,获取最佳视角,确保航天器始终在监控范围内,减少频繁手动调整视角的时间和精力,帮助观测人员专注于关键任务操作,以更好地监控航天器设备的运行状态和过程,确保监测任务的持续性和准确性。
在 ISS 国际空间站案例中,我们可以看到示例标注了“镜头跟随模型-自身”和“镜头跟随模型-世界”和“环绕”三种功能范例:
镜头跟随模型-自身,是指将视野镜头固定聚焦在模型对象上,模型的相对视角保持不变,随模型的移动和旋转进行相应的变动,也可称为“第一人称视角”。
这里我们是通过 setModelTransform2 方法,设置模型镜头从一个点位移到另一个点位的路径、持续时长,通过开启 followingCamera 镜头跟随模型方法,来实现镜头的移动。
let jsonData = { modelId: , distance: , distanceMin: , distanceMax: , pitch: , heading: , relative: , }; appInstance.uniCall(, jsonData, (result) => { .log(result); });
镜头跟随模型-世界,是指视野镜头跟随模型在世界坐标系中的位置移动,但模型本身的方向变化不会改变镜头的朝向,用于需要关注模型在世界中的位置变化,也可称为“第三人称视角”。
通过设置 relative 参数为 'world' 或 'self' 来实现不同的镜头视角的相对位置,可以灵活切换镜头是相对世界固定 还是 相对模型固定,在镜头跟随模型-世界模式下,鼠标可以支持环绕模型旋转和缩放,提供高度灵活的交互控制功能。
3.镜头环绕
“镜头环绕”功能允许镜头以模型为中心点,按照设定的俯仰角和旋转角实现旋转或环绕操作,我们可以通过简单的参数修改,实现从多个角度观察模型。
镜头环绕旋转的代码参数,通过调用 rotateCamera 这个方法。通过修改相机开启的状态、镜头飞行一周所用时间、是否可以被打断、以及镜头的飞行方向等参数,灵活调整镜头环绕旋转的速度和方向。
let jsonData = { enabled: true, duration: , direction: , interruptable: true, }; appInstance.uniCall(, jsonData, (result) => { .log(result); });
比如我们想将镜头的旋转速度调快,可将 duration 参数调小,数值越小,速度越快;想要暂停旋转,将 enabled 参数改为 false。
时间轴控制
在 ISS 国际空间站案例中,基于航天器轨道飞行数据,提供了一个可视化的时间轴界面,可以通过拖动时间轴 或 点击标记地点,自动将航天器视景状态切换到当时其所在的地理位置及环境状态,实现从全球视角快速平滑切换到特定国家或地区上空的视景,提供更加便捷的交互体验。