经纬志
首页 / Cesium / 使用示例

模型航向俯仰横滚

一个机头朝东的长方体悬在 400 米高空,三个滑杆分别控制航向、俯仰、横滚, 地面上有一条向北的箭头做基准。

CesiumJS 1.121 · 更新 2026-10-28
源码与运行效果
运行效果

三个角的方向约定

HeadingPitchRoll 的顺序是航向、俯仰、横滚,全部用弧度。 航向从正北起顺时针增加,俯仰为正表示抬头,横滚绕自身纵轴。 三者按航向、俯仰、横滚的顺序依次作用。

模型默认朝向在本地坐标的 +X 方向,也就是当地东向。 因此航向为 0 时模型指向东,而地面箭头指向北,两者相差 90°。

旋转到固定位置

Transforms.headingPitchRollToFixedFrame 直接生成 4 × 4 变换矩阵: 平移来自坐标点,旋转来自姿态角,再加一层从地心坐标到当地东北天的转换。 赋值给 model.modelMatrix 就完成摆放。

可调参数

位置改什么效果
航向滑杆0 到 360°模型绕地垂线旋转
俯仰滑杆-90 到 90°机头抬起或下压
横滚滑杆-90 到 90°机身侧倾
GLB 的 buildBox 尺寸1.8 改成 3.0机身更长,姿态更易辨认

矩阵每改一次就重建。示例在滑杆回调里重新计算矩阵,属于低频操作。 如果模型沿轨迹连续飞行,应改用 CallbackProperty 提供四元数, 让 Cesium 按当前时间取值,而不是每帧手动赋值。