Files
rltn/COLLIDER_CONFIGURATION.md

150 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Конфигурация системы коллайдеров
## Обзор изменений
Система коллайдеров была обновлена для обеспечения полного покрытия объектов коллизиями. Теперь коллайдеры создаются с увеличенными размерами, чтобы покрывать весь объект, а не только его часть.
## Основные изменения
### 1. Конфигурация коллайдеров
```javascript
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. Динамическая настройка
Добавлены расширенные функции для настройки коллайдеров:
```javascript
// Изменить коэффициент размера коллайдеров
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` с увеличенными размерами.
### Настройка размеров
Если коллайдеры слишком большие или маленькие, можно изменить коэффициент:
```javascript
// В консоли браузера
window.updateColliderSize(1.0); // Оригинальные размеры
window.updateColliderSize(1.2); // +20% (по умолчанию)
window.updateColliderSize(1.5); // +50%
```
### Отладка
Для визуализации коллайдеров включите режим отладки:
```javascript
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
```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. **Производительность**: Большие коэффициенты могут снизить производительность
## Устранение неполадок
### Коллайдеры слишком маленькие
```javascript
window.updateColliderSize(1.3); // Увеличить коэффициент
```
### Коллайдеры слишком большие
```javascript
window.updateColliderSize(1.1); // Уменьшить коэффициент
```
### Проблемы с производительностью
```javascript
window.updateColliderSize(1.0); // Вернуться к оригинальным размерам
```