Мне нужно получить вид спереди для объекта отслеживания, который будет меняться в зависимости от перемещений объектов.
Когда я присваиваю значение свойству 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;<link href = "https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" rel = "stylesheet"/>
<script src = "https://cesiumjs.org/Cesium/Build/CesiumUnminified/Cesium.js"></script>
<style>
@import url(../templates/bucket.css);
</style>
<div id = "cesiumContainer" class = "fullSize"></div>
<div id = "loadingOverlay"><h1>Loading...</h1></div>
<div id = "toolbar">
<div id = "interpolationMenu"></div>
</div>


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При добавлении сущностей в 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 иметь какие-то направляющие линии
Здравствуйте, Оллазарев, не могли бы вы отметить ответ как положительный, чтобы мы могли иметь этот тег вопроса как решенный?