Files
rltn/COLLIDER_CONFIGURATION.md

6.9 KiB
Raw Permalink Blame History

Конфигурация системы коллайдеров

Обзор изменений

Система коллайдеров была обновлена для обеспечения полного покрытия объектов коллизиями. Теперь коллайдеры создаются с увеличенными размерами, чтобы покрывать весь объект, а не только его часть.

Основные изменения

1. Конфигурация коллайдеров

const COLLIDER_CONFIG = {
    sizeMultiplier: 2.0,        // Коэффициент увеличения размеров (100% больше)
    debugMode: false,           // Режим отладки для визуализации
    minSize: 0.5,              // Минимальный размер коллайдера
    maxSize: 50.0,             // Максимальный размер коллайдера
    adaptiveScaling: true      // Адаптивное масштабирование
};

2. Обновленная функция создания коллайдеров

  • createVisualColliderFromModel() теперь использует увеличенные размеры для JSON данных
  • Приоритет отдается реальным размерам мешей из 3D модели
  • Fallback к JSON данным с коэффициентом увеличения

3. Адаптивное масштабирование

Система автоматически определяет оптимальный коэффициент масштабирования на основе размеров объекта:

  • Маленькие объекты (< 1.0): коэффициент 3.0x или больше
  • Средние объекты (1.0-5.0): стандартный коэффициент 2.0x
  • Большие объекты (> 5.0): уменьшенный коэффициент 1.6x

4. Динамическая настройка

Добавлены расширенные функции для настройки коллайдеров:

// Изменить коэффициент размера коллайдеров
window.updateColliderSize(3.0); // Увеличить на 200%

// Переключить адаптивное масштабирование
window.toggleAdaptiveScaling();

// Установить ограничения размеров
window.setColliderLimits(1.0, 20.0); // мин: 1.0, макс: 20.0

// Переключить режим отладки
window.toggleColliderDebug();

// Получить текущую конфигурацию
console.log(window.colliderConfig);

// Протестировать коллизии
window.testCollisions();

// Быстрый тест всех функций
window.quickTest();

// Управление цветом и прозрачностью коллайдеров
window.setColliderColor(0, 1, 0); // Зеленый цвет (RGB 0-1)
window.setColliderOpacity(0.5); // Полупрозрачность (0-1)
window.randomizeColliderColors(); // Случайные цвета

// Управление цветом и прозрачностью объектов интерьера
window.setInteriorObjectColor(1, 0, 0); // Красный цвет объектов (RGB 0-1)
window.setInteriorObjectOpacity(0.7); // Полупрозрачность объектов (0-1)

Использование

Базовое использование

Коллайдеры автоматически загружаются из colliders_city_1.json с увеличенными размерами.

Настройка размеров

Если коллайдеры слишком большие или маленькие, можно изменить коэффициент:

// В консоли браузера
window.updateColliderSize(1.0);  // Оригинальные размеры
window.updateColliderSize(1.2);  // +20% (по умолчанию)
window.updateColliderSize(1.5);  // +50%

Отладка

Для визуализации коллайдеров включите режим отладки:

window.colliderConfig.debugMode = true;

Технические детали

Алгоритм создания коллайдеров

  1. Поиск соответствующего меша в 3D модели по позиции
  2. Если меш найден - использование его реальных размеров
  3. Если меш не найден - использование JSON данных с коэффициентом увеличения
  4. Создание Box3 для проверки коллизий
  5. Создание визуального представления

Проверка коллизий

  • Используется AABB (Axis-Aligned Bounding Box) для эффективной проверки
  • Игрок представлен как цилиндр с радиусом 0.35 и высотой 1.6
  • Проверка пересечения Box3 объектов

Файлы конфигурации

colliders_city_1.json

{
  "colliders": [
    {
      "type": "box",
      "position": { "x": 0, "y": 0, "z": 0 },
      "rotation": { "x": 0, "y": 0, "z": 0 },
      "scale": { "x": 2, "y": 2, "z": 2 },
      "color": { "r": 1.0, "g": 0.0, "b": 0.0 },
      "opacity": 0.3
    }
  ]
}

Параметры:

  • position, rotation, scale - стандартные параметры трансформации
  • color - RGB цвет в диапазоне 0.0-1.0 (опционально)
  • opacity - прозрачность в диапазоне 0.0-1.0 (опционально)

Размеры в JSON будут автоматически увеличены на коэффициент sizeMultiplier.

Рекомендации

  1. Начальная настройка: Используйте коэффициент 1.2 (20% увеличение)
  2. Тонкая настройка: Тестируйте разные значения от 1.0 до 1.5
  3. Отладка: Включите debugMode для визуальной проверки коллайдеров
  4. Производительность: Большие коэффициенты могут снизить производительность

Устранение неполадок

Коллайдеры слишком маленькие

window.updateColliderSize(1.3); // Увеличить коэффициент

Коллайдеры слишком большие

window.updateColliderSize(1.1); // Уменьшить коэффициент

Проблемы с производительностью

window.updateColliderSize(1.0); // Вернуться к оригинальным размерам