reckfellENGINE

Видимость по дистанции: ближняя и дальняя модели

Переключать представления по расстоянию и понимать границы LOD: обработка, физика и ресурсы продолжают существовать.

На этой странице

Когда использовать

VisibilityRangeBegin и VisibilityRangeEnd позволяют показать сложную модель вблизи и более простую вдали. Пример использует белую сферу и синий куб, чтобы переключение было очевидно. Это выбор разных заранее подготовленных мешей, а не автоматическое уменьшение числа треугольников одного меша.

Запустить переключение

Возьмите все три файла из примера камеры, выполните dotnet build и назначьте ViewLab3D.cs корневой Entity3D уровня .rscene. Нужны SDK 1.0.0 и net10.0. Оставьте UseWall=false до запуска, иначе стена приблизит камеру и дальняя модель может не появиться.

ОбъектНачалоКонецРезультат
NearModel: белая сфера012Видна вблизи; ноль отключает нижний предел
FarModel: синий куб120Видна вдали; ноль отключает верхний предел

Нажимайте ↓ для отдаления и ↑ для приближения. На дистанции 6 видна сфера, на 18 — куб. Дистанция считается до преобразованного центра AABB геометрии, не обязательно до origin Entity. Здесь оба меша симметричны и стоят в одной точке, поэтому сравнение предсказуемо.

Ближнее представление: белая сфера на дистанции 6

Дальнее представление: синий куб на дистанции 18

Оба кадра получены в актуальном локальном движке, Compatibility/OpenGL, viewport 512×384. Это демонстрация переключения, не замер FPS или масштаба мира.

Настроить границу без ложных ожиданий

У примера отключён прозрачный fade, margin равны нулю. На точной общей границе 12 обе модели могут быть видимы: не рассчитывайте на правило «всегда ровно один меш». У несовпадающих AABB границы также окажутся в разных местах. Проверяйте переход при реальном движении камеры; перекрытие одинаковых поверхностей может дать z-fighting.

VisibilityRangeBeginMargin и VisibilityRangeEndMargin при отключённом fade дают гистерезис: порог зависит от предыдущего состояния, чтобы колебание камеры не вызывало частое переключение. Они не включают прозрачность сами по себе. Согласуйте диапазоны соседних представлений и проверьте отсутствие заметных дыр и скачков.

Прозрачные режимы Self/Dependencies по исходникам требуют Forward+. Они не подтверждены этим примером и не должны обещаться для Compatibility или Mobile. Плавный переход, освещение и тени проверяйте отдельно в целевом renderer.

Что остаётся работать

В тесте невидимая по диапазону NearModel продолжила _Process, а Visible и IsVisibleInTree остались true. Проверялся этот полный класс:

LodVisual3D.cs
C#
using Reckfell;

public partial class LodVisual3D : MeshInstance3D
{
    public int ProcessTicks { get; private set; }
    public override void _Process(double delta) => ProcessTicks++;
}

Диапазоны геометрии не выключают отдельное StaticBody3D: луч продолжил попадать в тело цели при показе дальней модели. Они также не удаляют Entity, не освобождают меши из памяти и не выгружают уровень.

НужноДополнительное решение
Снизить стоимость отрисовки далёкого объектаБолее простой дальний меш, подходящие материалы и диапазоны
Остановить дорогую игровую логикуЯвное управление обработкой с учётом требований игры
Уменьшить стоимость физикиОтдельная политика активности и детализации физических тел
Выгружать части мираЗагрузка, владение ресурсами и сохранение состояния чанков
Упростить один меш автоматическиОтдельный механизм mesh LOD и поддерживаемый импорт

Не выключайте симуляцию только потому, что игрок не видит объект: мир игры может требовать продолжающегося движения, таймеров или сетевого состояния.

Диагностика

  • Обе модели постоянно видны: проверьте назначение диапазонов именно GeometryInstance3D и расстояние от активной камеры.
  • Дальний меш не появляется: проверьте фактическую позицию камеры, ограничения пружины и расположение центров AABB.
  • Объект исчезает на промежутке: диапазоны не покрывают нужную дистанцию либо центры моделей различаются.
  • FPS почти не изменился: стоимость может приходиться на скрипты, физику, материалы или число вызовов, а не треугольники. Нужен профиль целевого уровня.

Проверены жёсткое переключение, реальные пиксели и сохранение обработки/физики. Стриминг, прозрачный fade и выигрыш производительности не проверены.

GeometryInstance3D API

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.