fix(camera): constrain free flight to terrain surface bounds
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
4 files changed
+99
-4
No files matched your search
@@ -181,6 +181,21 @@ fn vertical_fov(self, aspect: f32) -> f32 {
|
||||
(`forward · direction <= 1e-4`). Лучи в передней полусфере могут проецироваться
|
||||
за край viewport; владелец спрайта отдельно решает, нужно ли его рисовать.
|
||||
|
||||
После движения свободная камера ограничивает X и Y прямоугольником
|
||||
поверхностей карты, затем поднимается над найденным рельефом на заданный
|
||||
зазор. Границы берутся из корня пространственного индекса `TerrainWorld`,
|
||||
поэтому неиспользуемые вершины файла их не расширяют и повторного обхода
|
||||
геометрии в каждом кадре нет:
|
||||
|
||||
```rust
|
||||
position[axis] = position[axis].clamp(min[axis], max[axis]); // axis = 0, 1
|
||||
position[2] = position[2].max(ground_height + ground_clearance);
|
||||
```
|
||||
|
||||
Высота полёта сверху не ограничена. Это ограничение диагностической камеры
|
||||
превью; столкновения со стенами зданий и точные правила игровых камер оригинала
|
||||
остаются отдельными задачами.
|
||||
|
||||
## Ограничения точного совпадения
|
||||
|
||||
`VulkanStaticCamera::from_legacy_d3d7` выполняет восстановление вида и проекции
|
||||
|
||||
Reference in new issue
Block a user