Скалы и булыжники: как не повторить один камень 400 раз
В лесу камней больше, чем деревьев: валуны у троп, осыпи под обрывом, щебень у ручья. Моделировать каждую скалу вручную — безумие, расставлять их копипастом — самоубийство. Копипастный камень выдаёт себя мгновенно: силуэт повторяется, царапины повторяются, даже трава вокруг растёт одинаково. Игрок не формулирует «я вижу клон», он просто перестаёт верить лесу.
Генератор вместо модели
Рабочий подход: не модель, а рецепт. Берётся базовый камень — обычно икосаэдр или куб с подрезанными гранями — и через него прогоняются деформации:
- Noise-смещение вершин. Крупный шум даёт форму, мелкий — шероховатость. Два октавных слоя, разные масштабы, и каждый камень получает уникальный «отпечаток пальцев».
- Сжатие по осям. Скала вытянутая, валун округлый, щебень плоский. Масштаб по X/Y/Z с небольшим разбросом — и из одной заготовки вырастает семейство.
- Скол. Режем камень плоскостью, грань скола оставляем плоской и светлой. Настоящий камень ломается по плоскостям, и одна ровная грань продаёт «природность» лучше любого шума.
В Blender это Geometry Nodes: вход — базовая форма, параметры — seed, масштаб, резкость. Один нодовый граф, 400 камней, ни одного повторяющегося силуэта.
Сайдинг: камень должен врастать
Отдельная болезнь — «камень-бублик»: объект лежит на земле, как пончик на тарелке. Лечится сайдингом — юбкой из нескольких колец, растянутых вниз и в стороны по нормали. Юбка уходит под землю, стык замазывается землёй или листвой. Правило простое: чем больше камень, тем длиннее юбка. Валун метровой высоты без юбки выглядит наклеенным; со юбкой — вкопанным природой.
Scatter: расстановка тоже нужна генерировать
Вручную расставить 400 валунов можно, но нужно ли? Шумовая карта плотности решает всё:
- Где: плотность выше у подножий обрывов (осыпь логична), ниже на тропе (игрок ходит, камни мешают).
- Как: случайный поворот вокруг Y, наклон в 5–10 градусов, масштаб с разбросом 0.6–1.4. Идеально вертикальный и идеально круглый камень — приметы штамповки.
- Кластеры: камни падают кучами, а не равномерно. Один крупный «материнский» валун, вокруг — осколки помельче. Это читывается как одно событие разрушения, а не как генератор случайных чисел.
Инструменты: Geometry Nodes distribute points on faces с маской плотности, или нативный scatter движка (PCG в Unreal, Terrain Tools в Unity). Главное — маска, а не количество точек.
Проверка на клона
Финальный тест жестокий и простой: пройтись по локации глазами игрока и искать пары. Два камня с одинаковым силуэтом в пределах одного экрана — баг. Лечится докруткой seed или удалением одного из пары. Я держу в проекте привычку: сгенерировал — прошёлся — вырезал повторы. Сорок камней улетают, но оставшиеся триста шестьдесят выглядят так, будто их раскладывала природа, а не мой ноуд-граф.
Камень — самый прощающий объект в окружении: его никто не трогает, никто не ждёт от него анимации. Но именно поэтому единственное, что в нём можно испортить, — это повторяемость. Не повторяйте.
Комментарии (1)
Про 4 вариации камня с разной силуетной массой — прям методичка. Сделал, стало похоже на скалу, а не на картошку.
Форма для гостей комментариев пока не принимается — писать можно автору (expeot@outlook.com) или через владельца блога. Все записи выше настоящие, никто их не модерирует молча.