Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 铯:从被跟踪实体的正面观察_Javascript_Camera_Entity_Cesium - Fatal编程技术网

Javascript 铯:从被跟踪实体的正面观察

Javascript 铯:从被跟踪实体的正面观察,javascript,camera,entity,cesium,Javascript,Camera,Entity,Cesium,我需要实现跟踪实体的前视图,它将根据实体的移动而变化 当我为viewer.trackedEntity属性指定一个值时,相机将处于特定位置。是否可以更改此位置,使相机直接位于跟踪实体的前面 对于此示例,我如何执行此操作 var-viewer=新铯.viewer('cesiumContainer'{ infoBox:false, selectionIndicator:false, 应该动画:真的, terrainProvider:铯 }); var start=Ce.JulianDate.from

我需要实现跟踪实体的前视图,它将根据实体的移动而变化

当我为
viewer.trackedEntity
属性指定一个值时,相机将处于特定位置。是否可以更改此位置,使相机直接位于跟踪实体的前面

对于此示例,我如何执行此操作

var-viewer=新铯.viewer('cesiumContainer'{
infoBox:false,
selectionIndicator:false,
应该动画:真的,
terrainProvider:铯
});
var start=Ce.JulianDate.fromDate(新日期(2015年2月25日、16日));
var stop=Cesium.JulianDate.addSeconds(开始,360,新的Cesium.JulianDate());
viewer.clock.startTime=start.clone();
viewer.clock.stopTime=stop.clone();
viewer.clock.currentTime=start.clone();
viewer.clock.clockRange=铯.clockRange.LOOP_STOP;
viewer.clock.multiplier=10;
viewer.timeline.zoomTo(开始、停止);
var position=新铯.SampledPositionProperty();
位置。添加样品(起始,铯笛卡尔3。从度(-118.243683,34.052235,500000));
position.addSample(铯.朱利安酸盐.addSeconds(开始,250,新的铯.朱利安酸盐()),铯.Cartesian3.fromDegrees(-110,35.5,500000));
position.addSample(铯朱利安酸盐。addSeconds(开始,500,新的铯朱利安酸盐()),铯Cartesian3。fromDegrees(-86.134903,40.267193500000));
var entity=viewer.entities.add({
可用性:新铯.TimeIntervalCollection([新铯.TimeInterval({
开始:开始,
停:停
})]),
职位:职位,,
方向:新铯。速度方向属性(位置),
型号:{
uri:'https://cesiumjs.org/Cesium/Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
最小混合尺寸:64
},
路径:{
决议:1,
材料:新铯。聚线性发光材料性能({
发光功率:0.1,
颜色:铯。颜色。黄色
}),
宽度:10
}
});
viewer.trackedEntity=实体

@导入url(../templates/bucket.css);
加载。。。

将实体添加到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轴上的距离。 免责声明:正如评论中指出的,这是一个由东向北的方向,因此XYZ取决于车辆本身的方向

我必须承认,这家公司很穷,甚至有一个关于这种行为的错误


但经过一段时间后,你会发现它是如何工作的

据我所知,这个答案是正确的。但是,
viewFrom
是在东北向上的框架中定义的,因此此处提供的正确矢量取决于车辆的方向。铯相机不会跟随主体框架中的实体,因此不会随实体旋转。从理论上讲,我们可以使用
EntityView
类并制作一个使用实体定向的修改版本,但这可能会变成一个大型项目,超出了SO答案的范围。没错,你完全正确。另一个选择是使用lookAt选项,但恐怕结果是一样的。。。但是让我们看看OP是否可以有一些指导方针Shello Ollazarev,你能把答案标记为肯定的,这样我们就可以解决这个问题了吗?