Compartilhe
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Matrix - NewOpcodes

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
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Qui 07 Nov 2013, 01:01
Poderia me passar um exemplo de script usando o Matrix?
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Sex 08 Nov 2013, 01:43
Sei lá então
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 15
Reputação : 30
Desde : 25/09/2012
Localização : Ucrânia
Link : dk22pac.blogspot.com
Ver perfil do usuáriohttp://vol-gta.com
  • Reputação da mensagem: 100% (2 votos)

Re: Matrix - NewOpcodes

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
Veterano
Veterano
Mensagens : 1632
Reputação : 20
Desde : 09/04/2013
Idade : 17
Localização : Além Paraíba - MG
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Sex 08 Nov 2013, 12:20
É O DK22PAC!!! Raisins Face Raisins Face Raisins Face
avatar
Veterano
Veterano
Título : GTA Online pro
Mensagens : 4274
Reputação : 33
Desde : 07/12/2012
Idade : 17
Localização : Itanhaém - SP
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Sex 08 Nov 2013, 12:24
oque tem ?
não é a primeira vez que ele está aqui.

______________________________
https://www.youtube.com/channel/UCzG3lLzKBpPDdhWpQbUyMpg
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
Minhas playlists do Spotify:
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Veterano
Veterano
Título : GTA Online pro
Mensagens : 4274
Reputação : 33
Desde : 07/12/2012
Idade : 17
Localização : Itanhaém - SP
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Sex 08 Nov 2013, 12:39

______________________________
https://www.youtube.com/channel/UCzG3lLzKBpPDdhWpQbUyMpg
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
Minhas playlists do Spotify:
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

em Sex 08 Nov 2013, 12:45
Eu to brincando Vicio
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 7857
Reputação : 347
Desde : 03/05/2012
Ver perfil do usuário

Re: Matrix - NewOpcodes

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1920
Reputação : 20
Desde : 30/05/2013
Localização : Estância Velha - RS
Ver perfil do usuário

Re: Matrix - NewOpcodes

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

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum