
Ты — профессиональный 3D-разработчик с 10-летним опытом созд...
Prompt
Ты — профессиональный 3D-разработчик с 10-летним опытом создания моделей в Three.js, WebGL и процедурного моделирования. Ты пишешь чистый, оптимизированный, production-ready код. Каждая деталь модели продумана с точки зрения топологии, пропорций и реалистичности. Работай на уровне senior-специалиста: используй правильную иерархию объектов, переиспользуемые материалы, корректные нормали и тени. Напиши полный HTML-файл с Three.js, который создаёт детализированную 3D-модель трактора с прицепом из примитивных геометрий (BoxGeometry, CylinderGeometry, SphereGeometry, TorusGeometry, LatheGeometry и т.д.). Без внешних моделей и текстур — только процедурный код. **Состав модели — ТРАКТОР:** - Кабина: прямоугольный корпус с закруглённой крышей, 4 окна (полупрозрачный материал), двери с ручками. - Двигательный отсек (капот) перед кабиной: удлинённый блок с решёткой радиатора, боковые вентиляционные щели. - 4 колеса: два больших задних (радиус ~1.2) и два меньших передних (радиус ~0.6). Каждое колесо — цилиндр шины + диск + ступица + болты. Протектор имитируй сегментами или кольцом. - Выхлопная труба: вертикальный цилиндр на капоте с козырьком. - Сиденье, руль (тор + цилиндр), приборная панель, фары (2 спереди, 2 сзади). - Задний навесной механизм (два рычага + поперечина). - Крылья над задними колёсами. - Ступеньки для входа в кабину. **Состав модели — ПРИЦЕП (одноосный или двухосный):** - Платформа (днище): плоский бокс ~3×1.5×0.1. - Четыре борта (передний, задний, два боковых): тонкие боксы с рёбрами жёсткости. Задний борт — откидной (визуально на петлях). - Колёса прицепа: 2 штуки, радиус ~0.5, аналогичная структура (шина + диск + ступица). - Дышло (сцепка): наклонный бокс/цилиндр от платформы к фаркопу трактора. - Опорная стойка спереди (вертикальный цилиндр с подставкой). - Отражатели/катафоты сзади (маленькие красные цилиндры). - Рёбра жёсткости на бортах (тонкие боксы по горизонтали). **Сцепка трактора и прицепа:** - Визуально соединены через фаркоп (маленький цилиндр/сфера сзади трактора) и дышло. - Расположены на одной линии по оси Z. **Материалы и цвета:** - Кузов трактора: MeshStandardMaterial, цвет — зелёный (#2e7d32) или красный (#cc2200), metalness 0.4, roughness 0.5. - Прицеп: MeshStandardMaterial, цвет — тёмно-серый (#37474f) или оранжевый (#e65100), metalness 0.2, roughness 0.7. - Колёса: чёрная резина (roughness 0.95), серые диски (metalness 0.6). - Стёкла: MeshPhysicalMaterial, transmission 0.7, ior 1.5, цвет голубоватый. - Металлические детали (труба, рычаги, дышло): серый металлик (metalness 0.8, roughness 0.3). - Днище прицепа: тёмное дерево-подобный цвет (#5d4037), roughness 0.9. **Сцена:** - PerspectiveCamera (fov 50), начальная позиция (10, 6, 12), lookAt на центр композиции. - OrbitControls (импорт из CDN three/addons). - Освещение: ambient (0.35) + directional с тенями (castShadow, mapSize 2048) + hemisphere (небо/земля). - Пол: большая плоскость MeshStandardMaterial (#4a7c3f зелёный или #616161 серый), принимает тени. GridHelper опционально. - Фон: градиент неба (#87ceeb → #e0f0ff) или Scene.background = color. - renderer: shadowMap.enabled = true, type = PCFSoftShadowMap, antialias = true, toneMapping = ACESFilmicToneMapping. **Анимация / интерактив:** - Колёса трактора и прицепа плавно вращаются в requestAnimationFrame. - Трактор слегка покачивается (синусоида по Y ±0.015, частота ~3 Гц) — имитация работы двигателя. - Прицеп имеет минимальный люфт: покачивание по Y ±0.008 с фазовым сдвигом. - OrbitControls для свободного обора мышью (enableDamping = true). **Технические требования:** - Используй importmap или CDN для Three.js r160+. - Весь код в одном HTML-файле. - Сгруппируй: THREE.Group «tractor», THREE.Group «trailer», общий THREE.Group «vehicle». - Переиспользуй материалы и геометрии, где возможно (например, все 4 колеса прицепа из одной геометрии). - Добавь комментарии к основным блокам кода. - Убедись, что пропорции реалистичны: трактор ~4×2.5×2, прицеп ~3×1×1.5. - Код должен быть оптимизирован: минимум аллокаций в render-loop, геометрии не пересоздаются.
A system prompt was added to support web rendering
Response not available