Ответ: Angry Snowmans
moka, можешь поведать как расчитывается нормаль столкновения?
А то что-то какой-то капец: сам скрипт: https://playcanvas.com/editor/code/3...let_control.js Ентити льдых повернуты на 90, что бы был по направлению -z (вперед) Можете побегать и пострелять льдышками: http://playcanv.as/p/G6Bwg1Sx |
Ответ: Angry Snowmans
Хм. В первую очередь выглядит что иногда пули пролетают сквозь, скорее всего тело пули очень маленькое, и за отсутствием SSD у физики они успевают пролететь между тиками.
Вообще реализовать коллизию с ландшафтом аналитически на самом деле весьма не сложно, я еще во времена блица на блице свой ландшафт писал, там весьма простая математика была. Также выглядит что нормаль иногда идет в одну сторону, а иногда в другую. Как буд-то кто с кем коллизится меняется местами, если это так, то проверь с кем была коллизия, если с ландшафтом, то инвертируй вектор, или наоборот. Стрельба с перезарядкой - очень как-то странная механика :) |
Ответ: Angry Snowmans
Спасибо, сделал проще:
Цитата:
Плохо что нельзя менять UP,FORWARD,RIGHT вектора у энтити, часа 2 ушло на разбирание с кватернионами (узнать вращение между векторами) Новый скрин. Такой пушки у игрока не будет, но пока побегать можно: Предложите, как сделать поиск пути на такой карте. kD дерево строить на основании расположения объектов и ландшафта или как? Пока придумывается сделать навмеш в редакторе и по нему искать, а деревья и т.д уже учитывать в астаре или еще где. |
Ответ: Angry Snowmans
Да, с математикой порой нужно разбираться. Но зато когда разобрался раз и другой, уже с квартерионами и векторами будет в будущем проще.
Я бы туда сразу А* херачил бы, заместо смесей со всякими навмешами. Можно конечно и навмеш, а обход деревьев уже сделать аналитически по ситуации. |
Ответ: Angry Snowmans
Цитата:
moka, я что-то не пойму как получить треугольники (вершины и грани) меша. VertexBuffer нашёл, а как получить какая вершина с какой связана ? |
Ответ: Angry Snowmans
Цитата:
|
Ответ: Angry Snowmans
я так понимаю, что бы узнать, как у меня расположены атрибуты в буфере, нужно получить vertexFormat? или есть строго типизированный вид атрибутов, типа:
x,y,z nx, ny, nz, tu, tv ... и т.д, которые постоянны при импорте Спрашиваю, что бы сильно не заморачиватся с этим. А для трансформации вершинной координаты в глобалную, нужно подействовать матрицей трансформации entity, с которого сняли эту вершину, так получается? И тут возник вопрос: Чем отличается transformPoint от transformVector ? http://developer.playcanvas.com/en/a...transformPoint |
Ответ: Angry Snowmans
transformPoint также смещает позицию исходя из матрицы + крутит + масштабирует, когда transformVector лишь крутит и масштабирует.
Для итерации через каждый треугольник, если сам не разберешься, то пример может смогу сделать, но попозже. |
Ответ: Angry Snowmans
moka, я что-то не так делаю? Почему повернуто?
Главное с обычными примитивами правильно работает. Трансформации тоже не получаются почему-то. http://playcanv.as/p/ZeRzg8M3 |
Ответ: Angry Snowmans
Трансофрмацию нужно использовать самого меша а не объекта, т.к. каждый meshInstance - по сути child объект (node), и имеет свою дополнительную трансформацию.
В общем замени 21 строку в navmesh.js на: PHP код:
|
Ответ: Angry Snowmans
Код:
Array.prototype.pushOnes = function(e) { не работает тут: https://playcanvas.com/editor/code/371981/navmesh.js в getNearNodes получаются дублированные ноды. И да, я не понимаю почкему они там вообще могут быть, так как массив нодов должен быть = количеству вершин, которые не дублируются (проверил в модели - дублей нет, но вершин 70, а PC говорит что 262, схрена ли?) moka, я если что, редактировать разрешил тебе, все равно кроме тебя тут никто не разбирается в этом. |
Ответ: Angry Snowmans
Цитата:
А на счет числа вершин, там на самом деле не просто. Дело в том что вершинный индекс может быть один, и шариться между разными мешами и индексными буферами. Следственно число нод в твоем случае нужно считать по числу уникальных индексов в индексном буфере у меша. |
Ответ: Angry Snowmans
Цитата:
Т.е если даже у меня 1 меш с 70 вершинами, но несколько индексных буферов, то может случится так, что их станет больше? UPD: посмотрел что хранится в индексном буфере: какого фига так? сначала вообще подряд шли, не должно быть. Сетка должна быть и должны дублироваться. Вроде делаю как тут UPD: теперь вообще сделал как в генерации коллизион модели, вершин (нодов) как было 262, так и осталось, куча дубликатов, либо я идиот, либо с индексным буфером что-то не так. UPD: Все, я сдаюсь, я запутался. Нельзя просто так взять и восстановить набор вершин и связей между вершинами. Теперь, если объединяешь вершины с одинаковой позицией, то вершин становится 54 вместо 70 а дочерних вершин всего 1,а должно быть не менее 2. Все плохо. Я понял. Это вроде как глюк экспортера. Я скачал json-меш, в нем по порядку идут индексы и получается 300 треугольников, вместо 100. Вот такая петрушка, причем весь огород в такой петрушке. Выдрал кусок из него: PHP код:
Раскидаю по карте пустые объекты вручную и сам вручную назначу связи. Быстрее будет. |
Ответ: Angry Snowmans
В максе можно разбить вершины на группы сглаживания и материалы - и да, будут разные вершины.
А если все одной группой и одним материалом, то в FBX будет засунуто самое оптимальное. Наш экспортер не модифицирует данные буферов из FBX'а. Ну и ты ведь можешь построить мелкий индекс вершин, проверять на их близость и переиспользовать, чтобы избежать дубликатов при генерации нав меша. |
Ответ: Angry Snowmans
Тадам! Глобальное обновление.
ТЫЦ |
Часовой пояс GMT +4, время: 19:13. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot