Вычисление максимальной и минимальной высот части меша

Программирование на Юнити.

Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 22 май 2009, 09:46

Есть довольно большая сцена, она разбита на квадраты, в плоскости x*z, примерно по 10 едениц квадрат. Необходимо получить средние высоты, т.е. координаты по оси y, границ (по ребрам квадрата), а также самую высокую точку.
Я немного посмотрел на метод mesh.bounds;, но он для всего меша. Возникла идея заюзать коллизии, ведь там храниться информация о координатах точек соприкосновения, но, так как таких квадратов будет достаточно много, а движок работает в один поток, все упрется в процессор.

В общем и целом- надеюсь на помощь гуру...

З.Ы. Возможно я извращенец, но это все для low level AI без графа путей. По сути - парсинг местности на проходимость, ну и еще на доп. параметры.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение gnoblin 22 май 2009, 10:21

Почему от количества боксов что-то куда-то упрется?
На вики есть пасфайнд для машины используя пускание лучей в препятствия. А на уровень вместо домиков (или что там у вас) расставьте boxcollider'ов... Я бы так для начала попробовал.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 22 май 2009, 10:29

Да в том и проблема, что не только домики там, а еще куча неровностей и всяких гадостей. Ладно хоть пропастей нет.

Пошел смотреть на то, что можно сделать с помощью луча.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение gnoblin 22 май 2009, 15:54

В книжках про ИИ обычно есть немного инфы про пасфайнд.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 31 май 2009, 22:35

Я думаю, вопрос "в теме" и меня никто не покарает.

Код: Выделить всё
Assets/Scripts/ParseMesh.js(57,48): BCE0020: An instance of type 'UnityEngine.RaycastHit' is required to access non static member 'point'.


Это есть реакция вот на такой вот код:

Код: Выделить всё
if (!Physics.Linecast (...)) {
Rt[i2][j2] = RaycastHit.point.y;
}


Скорее всего надо брать копию класса РейкастХит из какого-то места, или я не прав?
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение Neodrop 31 май 2009, 22:44

Переменная типа RaycastHit объявлена? Дебаггер же чётко пишет, что переменная такого типа нужна для доступа к нестатическому члену 'point'
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 31 май 2009, 22:50

Код: Выделить всё
if (!Physics.Linecast (Vector3(v1.x+i2*t, 0, v1.y+j2*t), Vector3(v1.x+i2*t, 100, v1.y+j2*t), rh)) {
Rt[i2][j2] = rh.point.y;
}


Спасибо, я почти такое уже делал, но криво (в стиле Си/Жабы объявил переменную). Вообще все это и в справке написано, но немного криво.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение gnoblin 31 май 2009, 22:54

А для вычисления максимального размера меша mesh.bounds не поможет?
(сам не пользовал - точно сказать не могу, просто идея)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 31 май 2009, 23:06

Мне немного не то надо. Мне именно высоту в точно заданной точке. Например - вы смотрите - тут у вас мешь взлетел по высоте на высоту дома... А тут плавно поднимается - значит он проходим только в этом направлении... Ну и т.д.. По-хорошему - навороченый граф путей. Конечно, если карта статична мир не меняеться.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение Neodrop 31 май 2009, 23:26

А не проще лучом пульнуть?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 01 июн 2009, 08:26

Так Лайнкаст - вроде как разновидность лучепуляния. Главное что можно посмотреть информацию о точках соприкосновения коллидеров.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение Neodrop 01 июн 2009, 08:34

Какой меш? Высоту чего ищем то ? Если это террейн, то там вообще проще пареной репы получить высоту в заданной точке. Если что угодно другое - то только пулять. Быстрее метода нет.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 01 июн 2009, 13:06

Не обязательно террейн. Вот лучепулянием я и занимаюсь.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение wild_r 03 июн 2009, 13:48

Код: Выделить всё
Physics.Linecast (Vector3(v1.x+i2*t, 1000, v1.y+j2*t), Vector3(v1.x+i2*t, 1, v1.y+j2*t), rh))


Почему сие чудо не работает. Луч кастуется сверху вниз, если наоборот - то все нормально.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Вычисление максимальной и минимальной высот части меша

Сообщение Neodrop 03 июн 2009, 13:50

А зачем лайнкаст? Он же не вернёт точку пересечения? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

След.

Вернуться в Скрипты

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

Сейчас этот форум просматривают: Google [Bot] и гости: 15