forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Неработоспособность лучей PhysX Wrapper'а (http://forum.boolean.name/showthread.php?t=18645)

St_AnGer 20.10.2013 17:39

Неработоспособность лучей PhysX Wrapper'а
 
Добрый день, Булчане! :)

Собственно появилась какая то ну совсем непонятная проблема, из за которой я не могу развивать один свой проектик (Doom2d: Remake, если кто помнит).

Вообщем ситуация следующая:
- имеем уровень (состоит из стастаческих стен (физический кубов), каждая стена имеет имя "wall");
- имеем туеву хучу монстров, которые разбросаны по уровню и ходят (когда активны) утыкаясь в эти стены, проверка на тычОк происходит путём pxRayGetBody (соответственно у каждого монстра есть свой луч pxCreateRay() )

Так вот, когда на карте одновременно активных (не разбуженых игроком) монстров мало, то они хорошо своими лучами отлавливают wall'ы, разворачиваются/прыгают/идут_по_своим_делам_дальше. А если активированы все монстры, то ни один луч в игре не работает (а на этих лучах завязано всё - стрельба, ИИ, кнопки, подбирание предметов и т.д.). При этом вся физика как работала, так и работает (ну разве что ещё физические триггеры тоже отказываются работать). Ошибок никаких нигде не выдаётся.

В связи с этим вопрос - что за нах?
У кого нибудь такая ситуация была?

Очень бы не хотелось менять физическую библиотеку, так уж прикипел я к PhysX Wrapper'у за годы использования :(

KCEPOKC 21.10.2013 14:52

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
К сожалению, я хочу тебя огорчить. Пфизикс не поддерживается уже который год, и багфикса не будет. Это первое. Второе: Ты, скорее всего, не сможешь пофиксить этот баг сам - для этого тебе придется поговорить с такими, как ABTOMAT, tormoz или др. и не факт что помогут.
Третье: хочешь обойти баг: переходи на буллет. Самая лучшая физ библа на блитц, которую я знаю. Хотя она и несколько сложнее пфизикса.

ИМХО

St_AnGer 21.10.2013 15:14

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
Да ты кэп :-)

Физикс-враппером я пользуюсь с самого его изобретения Render'ом, и то что он давно не поддерживается, как и то, что уже давным давно открыты его сурсы - я в курсе. Это во-первых.

Во-вторых - как бы сам являюсь далеко продвинутым пользователем враппера (ну не как Автомат и tormoz конечно, но всё же).

В-третьих - буллет-враппер очень хорош, я с ним тоже игрался довольно долго, и ничего сложного в нём не увидел. Но, попробуй представь, что значит сменить физическую библиотеку в развитом проекте? А это трындец. Потому что многие функции одной библиотеки работают совершенно не так, как в другой.

Хотя я и попробовал сходу переписать на буллет отдельные части проекта для тестов (потому что первой мыслью как раз и был переход на булет) - не понравился результат из за вышеупомянутой причины. Хотя я не спорю, что если посидеть подольше, то всё будет пучком. И не отрицаю, что, возможно, я переведу проект на буллет в будущем. Очень мне нравится Debug в этом враппере, он просто шикарен.



Ну и кстати, я нашёл причину ошибки - она происходит когда монстры упираются своими лучами в триггеры/воду, и причём это зависит именно он количества активных монстров. Хз почему так, но факт есть факт - поменял врапперные воду и триггеры на самопальные, и всё заработало. Странно, вообщем.

MiXaeL 21.10.2013 16:02

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
Цитата:

Сообщение от XoreX (Сообщение 269150)
такими, как ABTOMAT, tormoz или др.

lol wut


По сабжу, переходи на что-то посерьезнее блитца. Тогда можно и физдвижок не менять.

tirarex 21.10.2013 22:58

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
глупый вопрос , а как удалить луч ?
функции типа pxdeleteray нет

St_AnGer 21.10.2013 23:09

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
А никак, её и нету. Вся надежда на удаление всего физического - pxDestroyWorld и ручное обнуление переменных.

tirarex 21.10.2013 23:38

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
кстати как от камеры до потолка лучем дистанцию считать ?
(что бы игрок в ползке не появлялся головой в потолке при отжимание контрола

делаю так

pxRaySetPosition(rayx,plx#,ply#,plz#)
pxRaySetDir(rayx,0,1,0)
DebugLog pxRayGetDistance#(rayx,10)

но дистанция считается до стены а не до потолка

St_AnGer 22.10.2013 10:15

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
Цитата:

Сообщение от tirarex (Сообщение 269175)
кстати как от камеры до потолка лучем дистанцию считать ?
(что бы игрок в ползке не появлялся головой в потолке при отжимание контрола

делаю так

pxRaySetPosition(rayx,plx#,ply#,plz#)
pxRaySetDir(rayx,0,1,0)
DebugLog pxRayGetDistance#(rayx,10)

но дистанция считается до стены а не до потолка

Ну с направлением луча правильно вроде бы, а вот pxRayGetDistance#(rayx,10) меня смущает что то. Емнип эта функция вторым параметром принимает тип пиканья, т.е. 0 - пикает статику и динамику, 1 - только динамику, 2 - только статику. Ну и дистанцию немного по другому я считаю:
Код:

Function pxGetDistance#(x1, y1, z1, x2, y2, z2)
    return SQR((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)
End Function

первыми параметрами пихаешь позицию игрока, вторыми - pxRayGetPickX/Y/Z с нужным параметром пиканья (0-2). Хотя это может быть и лишнее, не помню почему я на такой велосипед пересел со стандартного pxRayGetDistance.

LLI.T.A.L.K.E.R. 19.03.2015 17:38

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
Эта функция должна выглядеть так
Цитата:

Function pxGetDistance#(x1#, y1#, z1#, x2#, y2#, z2#)
Return Sqr((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
End Function
Тоже перейду на вручное вычисление, чем встроенное.
А то в некоторых местах луч проскакивает и не замечает поверхности.

Хотя, предстоит ещё определить какое тело попало под луч, если луч иногда промахивается.

Луч всё равно в некоторых местах промахивается...
или я недопонимаю pxRaySetDir

Разобрался с pxRauSetDir с http://forum.boolean.name/showthread.php?p=264086

L-ee-X 20.03.2015 22:32

Ответ: Неработоспособность лучей PhysX Wrapper'а
 
Что то долго ты разбирался :)


Часовой пояс GMT +4, время: 13:00.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot