gpt4 book ai didi

camera - 铯 : Having the camera in an entity's first person view

转载 作者:行者123 更新时间:2023-12-02 04:43:50 32 4
gpt4 key购买 nike

我想让我的相机跟随移动实体的第一人称视角。我不相信 trackedEntity 将适用于此用例,因为我不想查看实体,但我想查看 从它。我还希望用户能够使用鼠标相对于移动实体转动相机(例如,从移动平面的左侧窗口向外看)。

在传统的游戏引擎中,我会通过将相机附加到实体上来做到这一点,这样它就会随之移动,但会保留它自己相对于实体的局部变换,这样它就可以相对于实体自由移动实体。

我现在能想到的唯一方法是单独跟踪“用户控制”变换,并在每个时钟滴答时将其与实体变换相乘。有没有更好的办法?

最佳答案

看看 Cesium 的 Cardboard sandcastle example .在这里,您乘坐热气球,从那里感知世界。滚动出来后,你可以用鼠标平移来环顾四周。由于计算相当复杂,我无法详细说明它是如何工作的,但似乎相机 View 与实体的移动方向对齐。脚本的基本部分是:

// Set initial camera position and orientation to be when in the model's reference frame.
var camera = viewer.camera;
camera.position = new Cesium.Cartesian3(0.25, 0.0, 0.0);
camera.direction = new Cesium.Cartesian3(1.0, 0.0, 0.0);
camera.up = new Cesium.Cartesian3(0.0, 0.0, 1.0);
camera.right = new Cesium.Cartesian3(0.0, -1.0, 0.0);

viewer.scene.postUpdate.addEventListener(function (scene, time) {
var position = entity.position.getValue(time);
if (!Cesium.defined(position)) {
return;
}

var transform;
if (!Cesium.defined(entity.orientation)) {
transform = Cesium.Transforms.eastNorthUpToFixedFrame(position);
} else {
var orientation = entity.orientation.getValue(time);
if (!Cesium.defined(orientation)) {
return;
}

transform = Cesium.Matrix4.fromRotationTranslation(
Cesium.Matrix3.fromQuaternion(orientation),
position
);
}

// Save camera state
var offset = Cesium.Cartesian3.clone(camera.position);
var direction = Cesium.Cartesian3.clone(camera.direction);
var up = Cesium.Cartesian3.clone(camera.up);

// Set camera to be in model's reference frame.
camera.lookAtTransform(transform);

// Reset the camera state to the saved state so it appears fixed in the model's frame.
Cesium.Cartesian3.clone(offset, camera.position);
Cesium.Cartesian3.clone(direction, camera.direction);
Cesium.Cartesian3.clone(up, camera.up);
Cesium.Cartesian3.cross(direction, up, camera.right);
});

也许您可以尝试修改相机矢量或将变换与另一个旋转矩阵相乘,以模拟在初始视角下转动头部(向左/向右/向后看)。例如,您可以尝试将上面的示例与来自名为 Cesium First Person Camera Controller 的存储库中的代码结合起来.

关于camera - 铯 : Having the camera in an entity's first person view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35066575/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com