Matrix - NewOpcodes

    Compartilhe
    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Qua 06 Nov 2013, 20:06

    A algum tempo já eu uso o NewOpcodes, e tem aqueles negócios de Matrix e talz, oque são isso? Pra que serve?
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Qui 07 Nov 2013, 00:28

    Não da pra explicar em um post, é um conceito muito amplo, é um assunto de um bimestre inteiro de matematica.

    Conceito Matematico
    http://pt.wikipedia.org/wiki/Matriz_%28matem%C3%A1tica%29
    http://www.infoescola.com/matematica/matrizes/
    http://www.youtube.com/watch?v=sw18GQESKpA
    etc, google

    Conceito em computação grafico
    Pronto, esse aqui até que da pra eu dar uma explicadinha.
    Se você quizer somente o basico mesmo, em funções, não é necessario entender o conceito matematico de matrizes, mas pra entender realmente você precisa entneder o conceito matematico.

    Em computação grafica, matrizes são utilizadas para guardar informações de transformações geometricas. Transformar algo é: Mudar a posição, mudar o tamanho, mudar a rotação... As matrizes são utilizadas para isso pois elas tem uma propiedade muito pecuiliar que ajuda nesse processo. A matriz padrão (matriz identidade, identity) é um sistema de posicionamento, ok, agora se tu dar um translate você movimentou esse sistema de coordenadas para outra posição, se você dar um scale você escalou o sistema de coordenadas, se você dar um rotate você rotacionou o sistema de coordenada. Portanto uma matriz é um sistema de coordenada! Se você tiver uma matriz rotacionada (um sistema de coordenada, que tem uma direção diferenciada...) e dar um translate, essa translação vai seguir essa direção diferenciada, pq tu deu um translate em um sistema de coordenadas que tem como, por exemplo, a direção voltada para 90 graus, e por isso as matrizes são utilizadas, pois operações matematicas com matrizes favorecem esse tipo de comportamento.

    Normalmente tudo que tem uma posição tem uma matriz imbutida.
    A projeção da tela tem uma matriz (que faz uma transformação para a simulação do efeito 3D), a camera tem uma matriz (aonde estou, pra onde estou olhando?) e cada modelo tem sua matriz tambem. Quando um modelo é renderizado, essas 3 matrizes são multiplicadas entre si e multiplicadas com cada posição de vertice do modelo, assim obtendo a posição do modelo no clip space que é o espaço que a GPU vai usar nos proximos estagios.

    Portanto, a matriz de um modelo (que é provavelmente o que você vai utilizar) contem as informações de posição, tamanho e rotação do mesmo. Cada mesh e dummy tambem contem essas informações alem de herdar as do seu parente.

    As partes em negrito são funções, então se você  buscar nos opcodes do NewOpcodes por esses nomes, você vai achar essas funções


    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Qui 07 Nov 2013, 01:01

    Poderia me passar um exemplo de script usando o Matrix?
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Qui 07 Nov 2013, 03:25

    n tenho Sanny, nem SA, nem NewOpcodes, nem nada com modding, o que expliquei foi um conceito geral que pode ser aplicado no NewOpcodes.
    Eu posso dar um pseudo code do que pode parecer no NewOpcodes
    Código:
    get matrix de algo
    rotate matrix
    set matrix de algo


    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Qui 07 Nov 2013, 17:37

    @LINK/2012 escreveu:n tenho Sanny, nem SA, nem NewOpcodes, nem nada com modding, o que expliquei foi um conceito geral que pode ser aplicado no NewOpcodes.
    Eu posso dar um pseudo code do que pode parecer no NewOpcodes
    Código:
    get matrix de algo
    rotate matrix
    set matrix de algo
    Os únicos Opcodes que encontrei para "Getar" (Nossa.. pokerface ) Matrix, foi:

    Código:
    0D0B: get_actor $3 bone BONE_HEAD2 matrix_pointer_to 0@
    0D0C: get_car 0@ component "wheel_lf_dummy" matrix_pointer_to 1@ // IF and SET

    e talvez:

    0D23: 1@ = component 0@ modelling_matrix
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Qui 07 Nov 2013, 18:37

    pronto, é isso mesmo ai.
    Não precisa dar set pq é um ponteiro, pensei q ele ia dar uma handle sei la enfim


    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Qui 07 Nov 2013, 21:47

    Fiz um Script de teste, pra Pode mover a Cabeça do CJ usando o Mouse enquanto Pressiona TAB, só pra teste mesmo, mais não funcionou, da uma olhada aí:

    Código:
    {$CLEO}
    {$I stdc}
    0000:

    var
        0@ : Float
        1@ : Float
    end

    while true
        wait 0
        if 0AB0:  key_pressed 9
        then
            01B4: set_player $PLAYER_CHAR can_move 0
            0D0B: get_actor $PLAYER_ACTOR bone BONE_HEAD matrix_pointer_to 0@
            0D04: 1@ = matrix 0@ z_angle
            while 0AB0:  key_pressed 9
                wait 0
                0AB1: call_scm_func @GetHeadAngle 1 1@
                0D15: set_matrix 0@ z_angle 1@
            end
            01B4: set_player $PLAYER_CHAR can_move 1
        end
    end
                
    :GetHeadAngle
    0A4A: store_joystick_X_offset_to 1@ Y_offset_to 2@
    0@ += 1@
    0AB2: ret 0
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Sex 08 Nov 2013, 01:16

    Tenta com outra coisa, com a roda dum carro sei la



    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 01:21

    @LINK/2012 escreveu:Tenta com outra coisa, com a roda dum carro sei la

    Eu tentei a mesma coisa com a roda de um carro no eixo Y e Z, mais não deu nada pokerface  Porque acaso é alguma coisa no Script?
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Sex 08 Nov 2013, 01:30

    pra mim ta dboa


    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 01:43

    Sei lá então
    avatar
    DK
    Programador - Avançado
    Programador - Avançado

    Título : ex-funcionário da Renderware?
    Mensagens : 15
    Reputação : 30
    Desde : 25/09/2012
    Localização : Ucrânia
    Link : dk22pac.blogspot.com

    Re: Matrix - NewOpcodes

    Mensagem por DK em Sex 08 Nov 2013, 09:01

    To transform bone position with NewOpcodes, you need to work with bone's quaternion. Bone matrix is a "read-only" "data".
    NO gives such opcodes to work with bone's quat:
    Código:
    0D30=3,%3d% = actor %1d% bone %2d%
    Gets actor's bone.
    Param 1: actor handle
    Param 2: bone, see Bones in stdc
    Param 3: var to store bone
    Código:
    0D32=2,%2d% = bone %1d% quat
    Gets bone quaternion.
    Param 1: bone
    Param 2: var to store pointer to quat
    (Actually, it gives a pointer to Interpolated frame data (http://gtaforums.com/topic/194199-documenting-gta-sa-memory-adresses/?p=1062204762), so you can also get an access to interpolated translation vector by adding 0x10.
    Código:
    0D18=6,rotate_quat %1d% axis_vector %2d% %3d% %4d% angle %5d% combine_op %6d%
    Rotates quaternion.
    Param 1: pointer to quat
    Param 2: axis X
    Param 3: axis Y
    Param 4: axis Z
    Param 5: angle (in degrees)
    Param 6: combine variant
    But, to see changes visually, you need to use Wesser's code for redirecting scripts processing after anims processing (I remember it was called CSriptEngineUpdate somewhere).
    An for vehicle components, matrix opcodes must work fine.
    avatar
    Lcs_07
    Veterano
    Veterano

    Título : Nunca tive um título, até agora :v
    Mensagens : 1625
    Reputação : 20
    Desde : 09/04/2013
    Idade : 17
    Localização : Além Paraíba - MG

    Re: Matrix - NewOpcodes

    Mensagem por Lcs_07 em Sex 08 Nov 2013, 11:14

    @DK escreveu:To transform bone position with NewOpcodes, you need to work with bone's quaternion. Bone matrix is a "read-only" "data".
    NO gives such opcodes to work with bone's quat:
    Código:
    0D30=3,%3d% = actor %1d% bone %2d%
    Gets actor's bone.
    Param 1: actor handle
    Param 2: bone, see Bones in stdc
    Param 3: var to store bone
    Código:
    0D32=2,%2d% = bone %1d% quat
    Gets bone quaternion.
    Param 1: bone
    Param 2: var to store pointer to quat
    (Actually, it gives a pointer to Interpolated frame data (http://gtaforums.com/topic/194199-documenting-gta-sa-memory-adresses/?p=1062204762), so you can also get an access to interpolated translation vector by adding 0x10.
    Código:
    0D18=6,rotate_quat %1d% axis_vector %2d% %3d% %4d% angle %5d% combine_op %6d%
    Rotates quaternion.
    Param 1: pointer to quat
    Param 2: axis X
    Param 3: axis Y
    Param 4: axis Z
    Param 5: angle (in degrees)
    Param 6: combine variant
    But, to see changes visually, you need to use Wesser's code for redirecting scripts processing after anims processing (I remember it was called CSriptEngineUpdate somewhere).
    An for vehicle components, matrix opcodes must work fine.
    DK22PAC? Raisins Face 


    ____________________
    PC:
    Sistema Operacional: Windows 7 Ultimate 64-bit
    Processador: Pentium(R) Dual-Core  CPU      E5700  @ 3.00GHz (2 CPUs), ~3.0GHz
    RAM: 3 GB
    HD: 465 GB
    Placa de Video: NVIDIA GeForce 8400GS


    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 12:20

    É O DK22PAC!!! Raisins Face Raisins Face Raisins Face
    avatar
    -W4nted
    Veterano
    Veterano

    Título : é o Vício_explosivo
    Mensagens : 4240
    Reputação : 30
    Desde : 07/12/2012
    Idade : 17
    Localização : Itanhaém - SP

    Re: Matrix - NewOpcodes

    Mensagem por -W4nted em Sex 08 Nov 2013, 12:24

    oque tem ?
    não é a primeira vez que ele está aqui.


    ____________________
    Notebook:
    Video: Intel HD Graphics
    Ram: 4 GB DDR3 1330 MHz
    Processador: Intel Celeron CPU 1000M 1.80 GHz
    HD: 465 GB
    OS: Windows 10 Home
    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 12:33

    Vicio_Explosivo escreveu:oque tem ?
    não é a primeira vez que ele está aqui.
    NÃO É A PRIMEIRA VEZ QUE ELE ESTÁ AQUI!!! Raisins Face Raisins Face Raisins Face  ( NOOB )
    avatar
    -W4nted
    Veterano
    Veterano

    Título : é o Vício_explosivo
    Mensagens : 4240
    Reputação : 30
    Desde : 07/12/2012
    Idade : 17
    Localização : Itanhaém - SP

    Re: Matrix - NewOpcodes

    Mensagem por -W4nted em Sex 08 Nov 2013, 12:39



    ____________________
    Notebook:
    Video: Intel HD Graphics
    Ram: 4 GB DDR3 1330 MHz
    Processador: Intel Celeron CPU 1000M 1.80 GHz
    HD: 465 GB
    OS: Windows 10 Home
    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 12:45

    Eu to brincando Vicio
    avatar
    LINK/2012
    Programador - Avançado
    Programador - Avançado

    Título : Veterano
    Mensagens : 7857
    Reputação : 347
    Desde : 03/05/2012

    Re: Matrix - NewOpcodes

    Mensagem por LINK/2012 em Sex 08 Nov 2013, 15:03

    Ele disse que deveria funcionar de boa em componentes de veiculo, mas você não conseguiu?


    ____________________
    "Give a man a game engine and he delivers a game. Teach a man to make a game engine and he never delivers anything."

    avatar
    Kevin Prestes
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 1891
    Reputação : 18
    Desde : 30/05/2013
    Localização : Estância Velha - RS

    Re: Matrix - NewOpcodes

    Mensagem por Kevin Prestes em Sex 08 Nov 2013, 15:50

    É, não deu certo nem com Components de veículos. Vou fazer mais uns testes aí

    Conteúdo patrocinado

    Re: Matrix - NewOpcodes

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui 22 Jun 2017, 08:51