Evgeni_Degerev Posted August 17, 2011 Share Posted August 17, 2011 Обнаружил что 3д линии не всегда видны, зависит сие от позиции и поворота камеры например, игрок расположен примерно в 1502.7,-1743.8,13.5, при повороте камеры от 330 до 70 градусов 3д линии не видны... баг или не баг? localPlayer=getLocalPlayer() local color = tocolor(255,0,255,255) function getPositionInFrontOfElement(element,x,y,z) -- Get the matrix local matrix = getElementMatrix ( element ) -- Get the transformation of a point 5 units in front of the element local offX = x * matrix[1][1] + y * matrix[2][1] + z * matrix[3][1] + matrix[4][1] local offY = x * matrix[1][2] + y * matrix[2][2] + z * matrix[3][2] + matrix[4][2] local offZ = x * matrix[1][3] + y * matrix[2][3] + z * matrix[3][3] + matrix[4][3] --Return the transformed point return offX, offY, offZ end addEventHandler("onClientPreRender",getRootElement(),function(timeslice) local x1,y1,z1 = getPositionInFrontOfElement(localPlayer,6,-6,0) local x2,y2,z2 = getPositionInFrontOfElement(localPlayer,6,6,0) local x3,y3,z3 = getPositionInFrontOfElement(localPlayer,-6,-6,0) local x4,y4,z4 = getPositionInFrontOfElement(localPlayer,-6,6,0) local xx,yy,zz = getElementPosition(localPlayer) z1 = getGroundPosition(x1,y1,z1)+1 z2 = getGroundPosition(x2,y2,z2)+1 z3 = getGroundPosition(x3,y3,z3)+1 z4 = getGroundPosition(x4,y4,z4)+1 dxDrawLine3D(x1,y1,z1,x2,y2,z2,color,10,1,1,1) dxDrawLine3D(x2,y2,z2,x4,y4,z4,color,10,1,1,1) dxDrawLine3D(x3,y3,z3,x1,y1,z1,color,10,1,1,1) dxDrawLine3D(x4,y4,z4,x3,y3,z3,color,10,1,1,1) end) Link to comment
MX_Master Posted August 18, 2011 Share Posted August 18, 2011 попробуй указать в этой функции параметры правильного типа. Допустим у тебя сейчас так dxDrawLine3D ( x1,y1,z1, x2,y2,z2, color, 10, -- (number) толщина, тут все верно 1, -- (bool) postGUI, попробуй false или true 1, -- (number) zBuffer очередности прорисовки, укажи разные значения для всех линий 1 -- а это что? (: ) Link to comment
Kernell Posted August 18, 2011 Share Posted August 18, 2011 Давно сталкилался с этим, никакие параметры не помогали. Link to comment
MX_Master Posted August 18, 2011 Share Posted August 18, 2011 я так понял, что есть рассчет, при котором вычисляется видна ли линия на экране игрока (возможно неверный рассчет) и, если не видна то не рисуется линия можно еще проверить, вдруг функция в эти моменты возвращает false Link to comment
_Vincent_ Posted August 18, 2011 Share Posted August 18, 2011 Когда-то давно MTAшные DMщики запарились врезаться в невидимые стены-границы и они решили сделать такоевые с пом. этих самых 3D-линий. Так они к тому же еще при некоторых ракурсах черти как отображались, найду видео - скину, там, по-моему, говорилось о сложности пофиксить такой баг. Link to comment
Evgeni_Degerev Posted August 18, 2011 Author Share Posted August 18, 2011 Попробую через getScreenFromWorldPosition + dxDrawLine Link to comment
MX_Master Posted August 19, 2011 Share Posted August 19, 2011 Попробую через getScreenFromWorldPosition + dxDrawLine хорошая идея + это надо рисовать в "onClientHUDRender", чтобы линии были под HUD'ом Link to comment
KagerA Posted September 14, 2011 Share Posted September 14, 2011 если речь идёт не том, что 3д линия это по сути 3д-шный "плэйн" и его чисто в силу этого невидно допустим снизу или сверху, а именно о том, что эти линии иногда напрочь отказываются рендериться, то я сталкивался с такой проблемой. Сейчас поведаю: я долго тестил и искал закономерности, когда линию отображает, когда нет, и заметил следующее: прорисовка линий зависит от того, стреляет ли кто-нибудь поблизости, а так же кто какое оружие держит! (вобще-то я уверен, что это зависит от чего-то друого, а эти странности - лишь последствия, но не суть), тестов было много и всех результатов я не помню, но помню точно следующее: если я буду стрелять допустим с М4 - линии видно со всех ракурсов. Поставил стреляющего бота - линии тоже рисуются когда я смотрю на него. Поставил бота, бьющего кулаком - линии не рисуются. Поставил двух ботов, дерущихся на кулаках - всё рисуется. Я сделал странный, но рабочий дебаг таким образом: приаттачил на клиенте у игрока к самому себе двух бессмертных дерущихся ботов (повыше над головой, так, чтобы на них никак нельзя было взглянуть). Звучит это просто по-идиотски и я бы сам ни за что не поверил в такое, но этот дебаг мне отлично послужил - линии всегда прорисовывались, со всех ракурсов. Я с этим вроде всего пару дней разбирался и наверняка можно придумать куда более простое решение, эксперементируйте. P.S это было ещё в 1.0.4 (если не в 1.0.3 вобще!), и до сих пор по-моему не исправили - возможно этого даже нет на баг-трекере, P.S.S был ещё один баг с 3д линиями - если на экране есть маркер типа cylidner, то линии рендеряться неправильно (чаще всего их не видно вообще, но порой они появляются, но не в нужных позициях) и я так же не уверен по поводу того, исправили ли это. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now