我想在铯中显示飓风(大等值面物体)。为此,我在以ECEF(以地球为中心)投影中重新投影的新OBJ文件中,将代表飓风的等值面的每个顶点的经度,纬度和高度列转换为OBJ文件。
因此,最终的OBJ文件现在包含每个顶点的X,Y,Z,而不是经度,纬度和高度。在由obj2gltf最终重新格式化后,我尝试使用以下代码在Cesium.JS中显示GLTF“飓风”文件:
console.log('loading hurricane.gltf';
var mymodel = viewer.scene.primitives.add(Cesium.Model.fromGltf({
url : 'data/hurricane.gltf',
modelMatrix : Cesium.Matrix4.IDENTITY,
asynchronous: false
}));
我可以在地球上看到我的飓风,但位置不好。我怀疑是矩阵问题。身份矩阵似乎不是一个好矩阵。我可以尝试建立一个新的矩阵,但找不到足够的有关Cesium使用的轴方向的信息。
我验证了X,Y,Z ECEF坐标,它们很好。有人已经遇到这个问题了吗?
答案 0 :(得分:0)
如果您的glTF模型原点位于飓风的中心,则可以使用铯实体来放置它,如下所示:
// Longitude degrees, Latitude degrees, height in meters
var position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, height);
var heading = Cesium.Math.toRadians(0);
var pitch = 0;
var roll = 0;
var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
var entity = viewer.entities.add({
name : 'Hurricane',
position : position,
orientation : orientation,
model : {
uri : 'data/hurricane.gltf'
}
});
viewer.trackedEntity = entity;
Sandcastle上有更完整的工作演示。
但是,如果使用身份矩阵在地球表面上看到您的飓风,则可能意味着该模型的起源不在飓风中心附近。您可能需要编辑glTF文件,以确保模型以其自身的原点为中心,并且没有将某些固定的Earth位置预先烘焙到模型的内部转换中。