Страница 1 из 2

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

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

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

З.Ы. Возможно я извращенец, но это все для low level AI без графа путей. По сути - парсинг местности на проходимость, ну и еще на доп. параметры.

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

СообщениеДобавлено: 22 май 2009, 10:21
gnoblin
Почему от количества боксов что-то куда-то упрется?
На вики есть пасфайнд для машины используя пускание лучей в препятствия. А на уровень вместо домиков (или что там у вас) расставьте boxcollider'ов... Я бы так для начала попробовал.

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

СообщениеДобавлено: 22 май 2009, 10:29
wild_r
Да в том и проблема, что не только домики там, а еще куча неровностей и всяких гадостей. Ладно хоть пропастей нет.

Пошел смотреть на то, что можно сделать с помощью луча.

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

СообщениеДобавлено: 22 май 2009, 15:54
gnoblin
В книжках про ИИ обычно есть немного инфы про пасфайнд.

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

СообщениеДобавлено: 31 май 2009, 22:35
wild_r
Я думаю, вопрос "в теме" и меня никто не покарает.

Код: Выделить всё
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;
}


Скорее всего надо брать копию класса РейкастХит из какого-то места, или я не прав?

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

СообщениеДобавлено: 31 май 2009, 22:44
Neodrop
Переменная типа RaycastHit объявлена? Дебаггер же чётко пишет, что переменная такого типа нужна для доступа к нестатическому члену 'point'

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

СообщениеДобавлено: 31 май 2009, 22:50
wild_r
Код: Выделить всё
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;
}


Спасибо, я почти такое уже делал, но криво (в стиле Си/Жабы объявил переменную). Вообще все это и в справке написано, но немного криво.

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

СообщениеДобавлено: 31 май 2009, 22:54
gnoblin
А для вычисления максимального размера меша mesh.bounds не поможет?
(сам не пользовал - точно сказать не могу, просто идея)

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

СообщениеДобавлено: 31 май 2009, 23:06
wild_r
Мне немного не то надо. Мне именно высоту в точно заданной точке. Например - вы смотрите - тут у вас мешь взлетел по высоте на высоту дома... А тут плавно поднимается - значит он проходим только в этом направлении... Ну и т.д.. По-хорошему - навороченый граф путей. Конечно, если карта статична мир не меняеться.

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

СообщениеДобавлено: 31 май 2009, 23:26
Neodrop
А не проще лучом пульнуть?

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

СообщениеДобавлено: 01 июн 2009, 08:26
wild_r
Так Лайнкаст - вроде как разновидность лучепуляния. Главное что можно посмотреть информацию о точках соприкосновения коллидеров.

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

СообщениеДобавлено: 01 июн 2009, 08:34
Neodrop
Какой меш? Высоту чего ищем то ? Если это террейн, то там вообще проще пареной репы получить высоту в заданной точке. Если что угодно другое - то только пулять. Быстрее метода нет.

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

СообщениеДобавлено: 01 июн 2009, 13:06
wild_r
Не обязательно террейн. Вот лучепулянием я и занимаюсь.

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

СообщениеДобавлено: 03 июн 2009, 13:48
wild_r
Код: Выделить всё
Physics.Linecast (Vector3(v1.x+i2*t, 1000, v1.y+j2*t), Vector3(v1.x+i2*t, 1, v1.y+j2*t), rh))


Почему сие чудо не работает. Луч кастуется сверху вниз, если наоборот - то все нормально.

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

СообщениеДобавлено: 03 июн 2009, 13:50
Neodrop
А зачем лайнкаст? Он же не вернёт точку пересечения? :-?