Как модифицировать текстуру Terrain в Unity3D c помощью скриптов?

Суть вопроса в следующем. Меня интересует как написать свой скрипт что бы по нажатии на Terrain менялась текстура выбранной области. Простая рисовалка я бы так сказал. Из той информации что я пересмотрел я понял что нужно использовать непосредственно TerrainData и splatPrototype. Но не могу сообразить как это все сложить в месте. Кто то сталкивался с такой задачей? Если будут примеры кода буду признателен.
  • Вопрос задан
  • 3922 просмотра
Решения вопроса 1
Самый простой правильный способ:
Тебе нужно брать из текстуры определенные пиксели(GetPixels), закрасить их нужный цвет, потом применить эти изменения на текстуре terrain-а(SetPixels, Flush). Какие пиксели брать можно определить через raycast. Недостатком данного способа являться, то что довольно сложно получить качественные, плавные изменения.

Качественный способ:
Кроме текстуры terrain-а нам нужна еще splat текстура и шейдер который будет с ней работать. Делаем вторую текстуру меньшего размера чем исходная и повторяем все так, как в первом способом, но с ней. Так как она меньшего размера при наложении она будет растянута и будет получаться плавный переход. Сам шейдер смотрит на вторую текстуру и где необходимо домешивает к текстуре terrain-а другую текстуру или цвет, это уже как захочется.

Теперь не правильный качественный и простой способ:
Берем кучу projector-оторов и размещаем их там где нужно на terrain-е.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы