热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

铯:从被跟踪实体的前面查看

如何解决《铯:从被跟踪实体的前面查看》经验,为你挑选了1个好方法。

我需要为跟踪实体获得前视图,该视图将根据实体移动而变化.

当我为viewer.trackedEntity属性赋值时,相机会占据一定的位置.是否可以更改此位置以使摄像机直接位于跟踪实体的前方?

我怎么能为这个例子做这个?

var viewer = new Cesium.Viewer('cesiumContainer', {
    infoBox: false, 
    selectionIndicator: false,
    shouldAnimate: true, 
    terrainProvider: Cesium.createWorldTerrain()
});

var start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());

viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
viewer.clock.multiplier = 10;

viewer.timeline.zoomTo(start, stop);

var position = new Cesium.SampledPositionProperty();
position.addSample(start, Cesium.Cartesian3.fromDegrees(-118.243683, 34.052235, 500000));
position.addSample(Cesium.JulianDate.addSeconds(start, 250, new Cesium.JulianDate()), Cesium.Cartesian3.fromDegrees(-110, 35.5, 500000));
position.addSample(Cesium.JulianDate.addSeconds(start, 500, new Cesium.JulianDate()), Cesium.Cartesian3.fromDegrees(-86.134903, 40.267193, 500000));

var entity = viewer.entities.add({
    availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
        start : start,
        stop : stop
    })]),
    position : position,
    orientation : new Cesium.VelocityOrientationProperty(position),
    model : {
        uri : 'https://cesiumjs.org/Cesium/Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
        minimumPixelSize : 64
    },
    path : {
        resolution : 1,
        material : new Cesium.PolylineGlowMaterialProperty({
            glowPower : 0.1,
            color : Cesium.Color.YELLOW
        }),
        width : 10
    }
});

viewer.trackedEntity = entity;




Loading...



1> SirPeople..:

将实体添加到Cesium.Viewer时,实体中有一个属性viewFrom,所以通过执行以下操作:

var entity = viewer.entities.add({
    availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
        start : start,
        stop : stop
    })]),
    position : position,
    orientation : new Cesium.VelocityOrientationProperty(position),
    model : {
        uri : 
'https://cesiumjs.org/Cesium/Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
        minimumPixelSize : 64
    },
    path : {
        resolution : 1,
        material : new Cesium.PolylineGlowMaterialProperty({
            glowPower : 0.1,
            color : Cesium.Color.YELLOW
        }),
        width : 10
    },
    viewFrom: new Cesium.Cartesian3(30, 0, 0),
});

您可以获得所需的效果,观察viewFrom是Cartesian3对象,因此如果您想要一个YZ可见的正面视图,您应该只在X轴上设置距离. 免责声明:正如评论中所指出的,这是一个East-North-Up所以XYZ取决于车辆本身的方向.

必须承认,这方面的文档很差,甚至有关于这种行为的错误.

但经过他们论坛的长时间讨论,你可以发现它是如何运作的


据我所知,这个答案是正确的。但是,`viewFrom`是在East-North-Up帧中定义的,因此此处要提供的正确向量取决于车辆的方向。Cesium相机不会在其主体框架中跟随实体,因此不会随实体旋转。从理论上讲,可以派生“ EntityView”类,并创建一个使用实体方向的修改版本,但是这可能会变成一个大型项目,超出了SO答案的范围。
推荐阅读
author-avatar
962326154_5af7cb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有