Jump to content

[BUG] dxDrawLine3D не виден при некоторых углах камеры


Recommended Posts

Обнаружил что 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

попробуй указать в этой функции параметры правильного типа. Допустим у тебя сейчас так

dxDrawLine3D ( 
    x1,y1,z1, 
    x2,y2,z2, 
    color, 
    10, -- (number) толщина, тут все верно 
    1, -- (bool) postGUI, попробуй false или true 
    1, -- (number) zBuffer очередности прорисовки, укажи разные значения для всех линий 
    1 -- а это что? (: 
) 

Link to comment

я так понял, что есть рассчет, при котором вычисляется видна ли линия на экране игрока (возможно неверный рассчет) и, если не видна то не рисуется линия

можно еще проверить, вдруг функция в эти моменты возвращает false

Link to comment

Когда-то давно MTAшные DMщики запарились врезаться в невидимые стены-границы и они решили сделать такоевые с пом. этих самых 3D-линий.

Так они к тому же еще при некоторых ракурсах черти как отображались, найду видео - скину, там, по-моему, говорилось о сложности пофиксить такой баг.

Link to comment
  • 4 weeks later...

если речь идёт не том, что 3д линия это по сути 3д-шный "плэйн" и его чисто в силу этого невидно допустим снизу или сверху, а именно о том, что эти линии иногда напрочь отказываются рендериться, то я сталкивался с такой проблемой. Сейчас поведаю:

я долго тестил и искал закономерности, когда линию отображает, когда нет, и заметил следующее: прорисовка линий зависит от того, стреляет ли кто-нибудь поблизости, а так же кто какое оружие держит! (вобще-то я уверен, что это зависит от чего-то друого, а эти странности - лишь последствия, но не суть), тестов было много и всех результатов я не помню, но помню точно следующее: если я буду стрелять допустим с М4 - линии видно со всех ракурсов. Поставил стреляющего бота - линии тоже рисуются когда я смотрю на него. Поставил бота, бьющего кулаком - линии не рисуются. Поставил двух ботов, дерущихся на кулаках - всё рисуется. Я сделал странный, но рабочий дебаг таким образом: приаттачил на клиенте у игрока к самому себе двух бессмертных дерущихся ботов (повыше над головой, так, чтобы на них никак нельзя было взглянуть). Звучит это просто по-идиотски и я бы сам ни за что не поверил в такое, но этот дебаг мне отлично послужил - линии всегда прорисовывались, со всех ракурсов. Я с этим вроде всего пару дней разбирался и наверняка можно придумать куда более простое решение, эксперементируйте.

P.S это было ещё в 1.0.4 (если не в 1.0.3 вобще!), и до сих пор по-моему не исправили - возможно этого даже нет на баг-трекере,

P.S.S был ещё один баг с 3д линиями - если на экране есть маркер типа cylidner, то линии рендеряться неправильно (чаще всего их не видно вообще, но порой они появляются, но не в нужных позициях) и я так же не уверен по поводу того, исправили ли это.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...