Jump to content

Obtener partes de un vehículo.


aka Blue

Recommended Posts

  • 2 months later...

Aunque obtengas la posiciones exactas para cada vehículo de los faros traseros y delanteros y tal no podrás de ninguna manera remplazar la textura de ellos si no los tienes separados bueno podrías también remplazar la textura general de los vehículos cada vez que usas el intermitente puede que funcione

Link to comment

@Arsilex El tema no es reemplazar la textura (eso ya lo sé, hay una textura de los faros, con un poco de edición en photoshop y shaders puedo aplicar y quitar para hacer el efecto de intermitente), sino, dibujar en esa posición. Algo como esto:

x, y, z = posicionfaro

x1, y1 = getScreenFromWorldPosition( x, y, z )

dxDrawText( "←", x1, y1, x1, y1 )

 

Link to comment

Usando esta funcion

function getElementMatrix(element)
    local rx, ry, rz = getElementRotation(element, "ZXY")
    rx, ry, rz = math.rad(rx), math.rad(ry), math.rad(rz)
    local matrix = {}
    matrix[1] = {}
    matrix[1][1] = math.cos(rz)*math.cos(ry) - math.sin(rz)*math.sin(rx)*math.sin(ry)
    matrix[1][2] = math.cos(ry)*math.sin(rz) + math.cos(rz)*math.sin(rx)*math.sin(ry)
    matrix[1][3] = -math.cos(rx)*math.sin(ry)
    matrix[1][4] = 1
    
    matrix[2] = {}
    matrix[2][1] = -math.cos(rx)*math.sin(rz)
    matrix[2][2] = math.cos(rz)*math.cos(rx)
    matrix[2][3] = math.sin(rx)
    matrix[2][4] = 1
	
    matrix[3] = {}
    matrix[3][1] = math.cos(rz)*math.sin(ry) + math.cos(ry)*math.sin(rz)*math.sin(rx)
    matrix[3][2] = math.sin(rz)*math.sin(ry) - math.cos(rz)*math.cos(ry)*math.sin(rx)
    matrix[3][3] = math.cos(rx)*math.cos(ry)
    matrix[3][4] = 1
	
    matrix[4] = {}
    matrix[4][1], matrix[4][2], matrix[4][3] = getElementPosition(element)
    matrix[4][4] = 1
	
    return matrix
end

Pero claro la cosa esta en sacar el offset de cada vehículo a mano. Sigo pensando que es mucho mas eficiente y rápido editar el archivo .dff para dejar los faros como un componente y con la función getVehicleComponentPosition con el valor de base="root" sacar la posición exacta.

Link to comment
  • 4 weeks later...
On 11/3/2017 at 16:08, Arsilex said:

Usando esta funcion


function getElementMatrix(element)
    local rx, ry, rz = getElementRotation(element, "ZXY")
    rx, ry, rz = math.rad(rx), math.rad(ry), math.rad(rz)
    local matrix = {}
    matrix[1] = {}
    matrix[1][1] = math.cos(rz)*math.cos(ry) - math.sin(rz)*math.sin(rx)*math.sin(ry)
    matrix[1][2] = math.cos(ry)*math.sin(rz) + math.cos(rz)*math.sin(rx)*math.sin(ry)
    matrix[1][3] = -math.cos(rx)*math.sin(ry)
    matrix[1][4] = 1
    
    matrix[2] = {}
    matrix[2][1] = -math.cos(rx)*math.sin(rz)
    matrix[2][2] = math.cos(rz)*math.cos(rx)
    matrix[2][3] = math.sin(rx)
    matrix[2][4] = 1
	
    matrix[3] = {}
    matrix[3][1] = math.cos(rz)*math.sin(ry) + math.cos(ry)*math.sin(rz)*math.sin(rx)
    matrix[3][2] = math.sin(rz)*math.sin(ry) - math.cos(rz)*math.cos(ry)*math.sin(rx)
    matrix[3][3] = math.cos(rx)*math.cos(ry)
    matrix[3][4] = 1
	
    matrix[4] = {}
    matrix[4][1], matrix[4][2], matrix[4][3] = getElementPosition(element)
    matrix[4][4] = 1
	
    return matrix
end

Pero claro la cosa esta en sacar el offset de cada vehículo a mano. Sigo pensando que es mucho mas eficiente y rápido editar el archivo .dff para dejar los faros como un componente y con la función getVehicleComponentPosition con el valor de base="root" sacar la posición exacta.

Evita todo esto con OOP & .matrix

De ahi puedes hacer :transformPosition(Vector3(offset)).

Link to comment
  • Recently Browsing   0 members

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