бновление от 2025-09-19 для ветки 19sepTest
This commit is contained in:
149
COLLIDER_CONFIGURATION.md
Normal file
149
COLLIDER_CONFIGURATION.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Конфигурация системы коллайдеров
|
||||
|
||||
## Обзор изменений
|
||||
|
||||
Система коллайдеров была обновлена для обеспечения полного покрытия объектов коллизиями. Теперь коллайдеры создаются с увеличенными размерами, чтобы покрывать весь объект, а не только его часть.
|
||||
|
||||
## Основные изменения
|
||||
|
||||
### 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); // Вернуться к оригинальным размерам
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user