Cesium中gltf模型的坐标系

Cesium中使用gltf格式的模型,而gltf格式的模型的坐标系在加载到Cesium中后,Cesium会自动变换坐标系。

本文简要阐述gltf模型的坐标系加载前后的变化。

gltf模型

可以使用各种3D制图工具来进行模型的制作,例如3dsMax,Maya,Blender。在Blender中不仅可以制作模型,而且具备导出模型为gltf格式的功能。

我们可以使用visual studio code来打开gltf模型,不过需要gltf插件:gltf Tools,此处不再详述。

在vsc中可以可视化的方式显示三维模型,目前具备"Babylon.js",“Cesium”,"Filament"和"Three.js"四种插件的加载方式。使用"Babylon.js"浏览时,通过调试方式,可打开模型的节点及坐标系相关。

下图为Cesium官方的地面车的模型使用vsc打开的效果:

  • __root__下面的"GroundVehicle"即为地面车的最顶层的节点,名称为"GroundVehicle",由gltf文件中定义;
  • 下方TRANSFORMATIONS可手动调整模型的平移,旋转,缩放,可实时看到调整的效果。此坐标系即为模型最顶层节点的坐标系,我们称为模型坐标系。
    vsc中的gltf模型
    通常在gltf模型制作中,模型坐标系的常规定义为:
  • 模型的顶部,为Y轴;
  • 模型的前面,为Z轴;
  • 由X,Y轴和右手定则确定X轴。
    所谓模型的顶部,一般符合人们对模型的常识,如车子顶部,房子的上部等;

Cesium中的坐标系

当Cesium中加载gltf模型时,会自动将模型的Y轴转Z轴朝上和Z轴转X轴朝前,加载前后效果图如下:
模型坐标系和Cesium坐标系
也就是说,在Cesium中,凡是涉及模型的旋转等操作,均针对Cesium坐标系!!!,这点请务必和模型坐标系区分开来,具体对应为:

  1. Cesium坐标系X轴:模型坐标系Z轴
  2. Cesium坐标系Y轴:模型坐标系X轴
  3. Cesium坐标系Z轴:模型坐标系Y轴

下面为一简单的例子,代码如下,仅加载一个地面车,无任何旋转,那么地面车的坐标系(Cesium坐标系)应与地球Fixed系(在Cesium中,地球Fixed系为世界坐标系,所有对象均要表示在此坐标系)重合。

var veh = viewer.entities.add({
  //  地球Fixed系中,经度、纬度均为0
  position: Cesium.Cartesian3.fromDegrees(0, 0, 0),
  //  模型相对地球Fixed系无任何转动
  orientation: new Cesium.Quaternion(0,0,0,1),
  model: {
    uri: "../../Apps/SampleData/models/GroundVehicle/GroundVehicle.glb",
    minimumPixelSize: 200
  }});

加载的效果如下图
模型不旋转
下图为Cesium中的卫星的模型坐标系和Cesium坐标系区别
Cesium Satellite gltf

cesium中的gltf模型的坐标轴显示

Cesium中提供了加载gltf模型后显示Cesium坐标轴的功能: Cesium Inspector。在 Cesium 调试器面板中勾选显示参考框架,能够很清晰地看到该模型对应的X、Y、Z轴以及原点。

显示Cesium Inspector插件的代码一句话:

viewer.extend(Cesium.viewerCesiumInspectorMinxin);

下图为Inspector面板和模型的Cesium坐标轴显示,重点:

  • X轴:前方,红色
  • Y轴:左方,绿色
  • Z轴:上方,蓝色

Cesium Inspector

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值