SetHeight

Speed Tree : Terrain & Trees.

SetHeight

Сообщение juv231 15 ноя 2017, 13:37

Здравствуйте, уважаемые. Стоит задача менять высоту ландшафта в точке местоположения колеса. Код привожу ниже. В чем собственно проблема: Получаю высоту в нужной точке, понижаю ее и с помощью функции Mathf.Clamp ограничиваю к примеру до 2.9, при высоте Terrain'a = 3. Т.е в точке, где находится колесо, terrain должен понизить высоту на 0.1, но на деле высота падает намного больше. В строке
Синтаксис:
Используется csharp
modifiedHeights[j, i] = y / 1025f;
я делю высоту на 1025(Это значение heightmap resolution), иначе на месте колес вырастают горы до максимальной высоты. Нашел методом тыка.
Понимаю, что намудрил и не могу разобраться где именно. Подскажите, пожалуйста, где я ошибся?
Синтаксис:
Используется csharp
void FixedUpdate()
    {
        if (wheel.GetGroundHit(out w_Hit)) {
            Controll();
        }
    }
    private void Controll()
    {
        int xPos = (int)((gameObject.transform.position.x / terrainData.size.x) * heightmapWidth);
        int zPos = (int)((gameObject.transform.position.z / terrainData.size.z) * heightmapHeight);

        float[,] modifiedHeights = new float[3, 1];
        float y = terrainData.GetHeight(xPos, zPos);

        y = Mathf.Clamp(y - strength * Time.deltaTime, 2.9f, 3f);
       
        for (int i = 0; i < 1; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                modifiedHeights[j, i] = y / 1025f;
            }
        }
        terrainData.SetHeights(xPos, zPos, modifiedHeights);
    }
juv231
UNец
 
Сообщения: 8
Зарегистрирован: 04 май 2014, 12:58

Re: SetHeight

Сообщение alt3d 15 ноя 2017, 14:30

Тебе нужно делить не на 1025 (разрешение heightmap), а на высоту террейна.
terrainData.size.y - если не ошибаюсь.

modifiedHeights[j, i] = y / terrainData.size.y;
alt3d
Старожил
 
Сообщения: 687
Зарегистрирован: 04 сен 2011, 21:19
  • Сайт
  • ICQ

Re: SetHeight

Сообщение juv231 15 ноя 2017, 15:02

О, Господи. Вы правы! Спасибо!
juv231
UNец
 
Сообщения: 8
Зарегистрирован: 04 май 2014, 12:58

Re: SetHeight

Сообщение juv231 15 ноя 2017, 15:13

При деформации ландшафта проседает FPS до 2-5. Как можно оптимизировать? Уменьшать карту высот (height resolution) и размер terrain? Крутить Pixel Erorr? Есть еще какие-то варианты?
juv231
UNец
 
Сообщения: 8
Зарегистрирован: 04 май 2014, 12:58

Re: SetHeight

Сообщение alt3d 16 ноя 2017, 09:17

juv231 писал(а):При деформации ландшафта проседает FPS до 2-5. Как можно оптимизировать? Уменьшать карту высот (height resolution) и размер terrain? Крутить Pixel Erorr? Есть еще какие-то варианты?


1. Делить большой террейн на несколько маленьких.
2. Отказаться от террейна, сделать/купить свою систему на мешах.

PixelError - он только для оптимизации рендера, вроде. Это немного не то.
alt3d
Старожил
 
Сообщения: 687
Зарегистрирован: 04 сен 2011, 21:19
  • Сайт
  • ICQ

Re: SetHeight

Сообщение juv231 16 ноя 2017, 11:19

Спасибо!
juv231
UNец
 
Сообщения: 8
Зарегистрирован: 04 май 2014, 12:58


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

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

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