Воппрс по terrain

Общие вопросы о Unity3D

Воппрс по terrain

Сообщение MiniCat 28 окт 2019, 00:17

Я сделал геометрию сцены и расставил объекты. И там где условно 0 высота, мне теперь крайне нужно сделать углубление как бы в минус. На сцену ушло пару месяцев и переделывать бы не хотелось.
Есть ли варианты вытянуть террайн вниз ниже нулевой высоты или же может быть весь террайн равномерно поднять на определенную величину? Размера кисти не хватает :(
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение Jarico 28 окт 2019, 11:48

Нужно перед постройкой террейна выставить высоту а потом уже делать углубления
VK: _ttp://vk.com/salavan73
RakNet Client-Server Unity3D: _https://vk.cc/9xuZp8
RakNet Client-Server Github: _ttp://github.com/ep1s0de3/RakNet_Networking
RakNet Unity: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Jarico
UNIверсал
 
Сообщения: 431
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Воппрс по terrain

Сообщение waruiyume 28 окт 2019, 18:22

Спасипа, Кэп!
MiniCat, террейн поддерживает "формат" raw, можете импортнуть его в картинку отфотошопить и обратно.
Я бы сделал скриптом, по крайней мере в предыдущей версии, с редактированием высот через API не было сложностей.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 5348
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Воппрс по terrain

Сообщение MiniCat 29 окт 2019, 21:07

waruiyume писал(а):Спасипа, Кэп!
MiniCat, террейн поддерживает "формат" raw, можете импортнуть его в картинку отфотошопить и обратно.
Я бы сделал скриптом, по крайней мере в предыдущей версии, с редактированием высот через API не было сложностей.

Можно подробнее? Террайн у меня состоит из 5 SplatAlpha. Это видимо карты высот. Как экспортнуть в картинку? Фотошоп есть. Но как поднять всё на определенную величину?

Теперь мне этот вопрос особенно актуален. Когда обнаружил что глубины недостаточно, решил поэксперементировать с высотами и кистями и юнька почему то сохранила этот террайн, хотя откатил как было.
В итоге весь огромный труд поехал. Все высоты превратились в кашу. Есть версия из параллельного проекта. Я могу оттуда извлечь как раз неуродованную часть. Совместив в фотошопе лишь части файлов.
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение waruiyume 30 окт 2019, 01:45

Для одного куска будет выглядеть примерно так:
Выделяем террейн
Шестеренка
Export raw

Открываем raw в фото (полная Ж)
Добавляем слой с белой заливкой и смешиванием add
Ставим заполнение n процентов
Экспортим raw

Выделяем террейн
Шестеренка
Import raw
Получаем поднятый на n% террейн
Роем в нём яму
Profit
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 5348
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Воппрс по terrain

Сообщение jetyb 30 окт 2019, 10:47

Синтаксис:
Используется csharp
    public static void Arise(TerrainData terrainData, float deltaY)
    {
        var heights = terrainData.GetHeights(0, 0, terrainData.heightmapResolution, terrainData.heightmapResolution);
        var oldHeight = terrainData.size.y;
        var newHeight = oldHeight + deltaY;
        for(var i = 0; i < terrainData.heightmapResolution; i++)
        for (var j = 0; j < terrainData.heightmapResolution; j++)
            heights[i, j] = heights[i, j] * oldHeight / newHeight;
        terrainData.size = new Vector3(terrainData.size.x, newHeight, terrainData.size.z);
        terrainData.SetHeights(0,0,heights);
    }
 

P.S на сякий случай лучше тестить на копии
jetyb
Адепт
 
Сообщения: 1406
Зарегистрирован: 31 окт 2011, 17:21

Re: Воппрс по terrain

Сообщение MiniCat 30 окт 2019, 12:58

DEL
Последний раз редактировалось MiniCat 02 ноя 2019, 11:33, всего редактировалось 1 раз.
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение MiniCat 30 окт 2019, 21:26

DEL
Последний раз редактировалось MiniCat 02 ноя 2019, 11:33, всего редактировалось 3 раз(а).
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение Xtir 30 окт 2019, 21:49

Лучше сделай скриптом, как написали выше. Только всегда делай бэкап своего террейна, а то какая-нибудь фигня случится и всё...
Xtir
UNITрон
 
Сообщения: 275
Зарегистрирован: 21 окт 2016, 00:37

Re: Воппрс по terrain

Сообщение MiniCat 30 окт 2019, 22:58

Xtir писал(а):Лучше сделай скриптом, как написали выше. Только всегда делай бэкап своего террейна, а то какая-нибудь фигня случится и всё...

Я пока решал первую задачу, сам себе сломал свою работу) Так что теперь в техпроцессу работы с фотошопом мне обязательно нужно научиться) Кривой бекап сделал >___<
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение MiniCat 31 окт 2019, 00:29

jetyb писал(а):
Синтаксис:
Используется csharp
    public static void Arise(TerrainData terrainData, float deltaY)
    {
        var heights = terrainData.GetHeights(0, 0, terrainData.heightmapResolution, terrainData.heightmapResolution);
        var oldHeight = terrainData.size.y;
        var newHeight = oldHeight + deltaY;
        for(var i = 0; i < terrainData.heightmapResolution; i++)
        for (var j = 0; j < terrainData.heightmapResolution; j++)
            heights[i, j] = heights[i, j] * oldHeight / newHeight;
        terrainData.size = new Vector3(terrainData.size.x, newHeight, terrainData.size.z);
        terrainData.SetHeights(0,0,heights);
    }
 

P.S на сякий случай лучше тестить на копии


Спасибо за скриптец :)
Но как я должен применить его, чтобы изменения сохранились в эдиторе? Раньше подобных манипуляций мне делать не приходилось.
Как я понял deltaY это величина, на которую я хочу поднять террайн, а terrainData это файл террайна как раз.
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение MiniCat 01 ноя 2019, 20:58

Что то не работает :D Где-то я туплю.
На месте с нулевой высотой не увеличивается высота, просто весь террайн поднимается. Не понимаю как этот скрипт должен сработать, по идее он равносилен тому что я бы руками ввёл новое значение высоты.

Синтаксис:
Используется csharp
    public TerrainData terrainData;

    public float deltaY = 2000f;
    public float[,] heights;
    public float oldHeight;
    public float newHeight;

    public void Awake()
    {
        heights = terrainData.GetHeights(0, 0, terrainData.heightmapResolution, terrainData.heightmapResolution);
        oldHeight = terrainData.size.y;
        newHeight = oldHeight + deltaY;
        for(int i = 0; i < terrainData.heightmapResolution; i++)
            for (int j = 0; j < terrainData.heightmapResolution; j++)
                heights[i, j] = heights[i, j] * oldHeight / newHeight;
        terrainData.size = new Vector3(terrainData.size.x, newHeight, terrainData.size.z);
        terrainData.SetHeights(0,0,heights);
    }
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение MiniCat 02 ноя 2019, 11:32

waruiyume писал(а):Для одного куска будет выглядеть примерно так:
Выделяем террейн
Шестеренка
Export raw

Открываем raw в фото (полная Ж)
Добавляем слой с белой заливкой и смешиванием add
Ставим заполнение n процентов
Экспортим raw

Выделяем террейн
Шестеренка
Import raw
Получаем поднятый на n% террейн
Роем в нём яму
Profit


Я более-менее разобрался.
Нужно ещё перевести изображение в режим градации серого ведь?
Там добавляю слой с белой заливкой ( выше экспортированного слоя).
Кручу его прозрачность.
А вот дальше проблемы, ибо сложения (Add) у меня нет. Думаю это линейный осветлитель (добавить)?
Я пробовал разные варианты смешивания - осветление, умножение и т.п., но они не дают нужного результата. Подъём если и есть то копеешный, а остальной рельеф неадекватно съезжает.
В чём я ошибся?
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50

Re: Воппрс по terrain

Сообщение MiniCat 02 ноя 2019, 19:14

Всё, решил проблему.
Вот этот скрипт идеально решает задачу. Спасибо добрым людям. Предыдущий просто не работает из за неверной формулы.
Изображение
Аватара пользователя
MiniCat
UNIт
 
Сообщения: 113
Зарегистрирован: 11 фев 2017, 16:50


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9