Неправильаня высота наложения текстур на terrain

Speed Tree : Terrain & Trees.

Неправильаня высота наложения текстур на terrain

Сообщение velizariy 24 дек 2012, 11:26

Здравствуйте. Пытаюсь разобраться с наложением текстур на terrain. Текстуры накладываются, но меня не устраивает высота. Последняя текстура (та, что по z-координате) в итоге накладывается почти на весь террейн, включая горы и даже равнины. Текстуры всего три. Последняя - по задумке - должна накладываться только на горы. Подскажите, что не правильно?

Синтаксис:
Используется csharp
 
splatmapData = terrainData.GetAlphamaps(0, 0, alphamapResolution, alphamapResolution);
           
             //  splatmapData = new float[terrainData.alphamapWidth, terrainData.alphamapHeight, terrainData.alphamapLayers];
              for (int y = 0; y < aWidth; y++)
              {
                  for (int x = 0; x < aWidth; x++)
                  {
                      float height = terrainData.GetHeight(x, y);
                      Vector3 splat = new Vector3(0, 1, 0);                  
                     if ( height < 0.2 )
                      {
                          splat = Vector3.Lerp(splat, new Vector3(0, 0, 1), (height));
                      }
                     else if (height > 0.7)
                     {
                         splat = Vector3.Lerp(splat, new Vector3(0, 0, 1), (height - 0.7f) * 2);
                     }
                     else { splat = Vector3.Lerp(splat, new Vector3(1, 0, 0), (height - 0.1f) * 2); }

                      splat.Normalize();
                      splatmapData[x, y, 0] = splat.y;
                      splatmapData[x, y, 1] = splat.x;
                      splatmapData[x, y, 2] = splat.z;

                  }
              }
           
              terrainData.SetAlphamaps(0, 0, splatmapData);
velizariy
UNец
 
Сообщения: 15
Зарегистрирован: 01 ноя 2012, 14:02

Re: Неправильаня высота наложения текстур на terrain

Сообщение seaman 24 дек 2012, 11:31

Собственно не разбирался в работе скрипта, но в глаза бросается:
for (int y = 0; y < aWidth; y++) - может нужно:
for (int y = 0; y < aHeight; y++)
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Неправильаня высота наложения текстур на terrain

Сообщение velizariy 24 дек 2012, 12:19

У меня terrain квадратный (не знаю, бывают ли другие), поэтому длина и ширина одинаковые ,в целях производительности взял только ширину. А цикл работает именно по длине и ширине, высота здесь не причём, она берётся этой строкой:
Синтаксис:
Используется csharp
    float height = terrainData.GetHeight(x, y);
velizariy
UNец
 
Сообщения: 15
Зарегистрирован: 01 ноя 2012, 14:02

Re: Неправильаня высота наложения текстур на terrain

Сообщение jetyb 24 дек 2012, 18:46

По мойму в террайне GetHeight возращает не нормированное , а абсолютное значение высоты. Т.е. надо считать горами все то, что выше 0.7 * terrainData.size.y, а не 0.7.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Неправильаня высота наложения текстур на terrain

Сообщение velizariy 25 дек 2012, 18:29

Спасибо. Действительно абсолютная высота. Проблема решена, тему можно закрывать.
velizariy
UNец
 
Сообщения: 15
Зарегистрирован: 01 ноя 2012, 14:02

Re: Неправильаня высота наложения текстур на terrain

Сообщение Starter 21 янв 2015, 00:37

Пытаюсь использовать представленный скрипт. Получается полная ерунда. Подскажите что делаю не так. Очень уж нужна такая функция.
Заранее спасибо!
Приложил проект.
Изображение
---
Забудьте, нашёл другой рабочий способ.
У вас нет доступа для просмотра вложений в этом сообщении.
Starter
UNец
 
Сообщения: 10
Зарегистрирован: 17 сен 2014, 13:06


Вернуться в Земля и деревья.

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

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