- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
A algum tempo já eu uso o NewOpcodes, e tem aqueles negócios de Matrix e talz, oque são isso? Pra que serve?
- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
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/
https://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
Conceito Matematico
http://pt.wikipedia.org/wiki/Matriz_%28matem%C3%A1tica%29
http://www.infoescola.com/matematica/matrizes/
https://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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Poderia me passar um exemplo de script usando o Matrix?
- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
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
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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Os únicos Opcodes que encontrei para "Getar" (Nossa..@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

- 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
- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
pronto, é isso mesmo ai.
Não precisa dar set pq é um ponteiro, pensei q ele ia dar uma handle sei la enfim
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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
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
- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Eu tentei a mesma coisa com a roda de um carro no eixo Y e Z, mais não deu nada

- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Sei lá então
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:
An for vehicle components, matrix opcodes must work fine.
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
- 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
An for vehicle components, matrix opcodes must work fine.
- Lcs_07Veterano
- Mensagens : 1623
Reputação : 20
Desde : 09/04/2013
Idade : 21
Localização : Além Paraíba - MG
DK22PAC?@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(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:
0D32=2,%2d% = bone %1d% quat
Gets bone quaternion.
Param 1: bone
Param 2: var to store pointer to quat
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).
- 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
An for vehicle components, matrix opcodes must work fine.

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
É O DK22PAC!!!




- -W4ntedVeterano
- Nick anterior : Vicio_Explosivo
Título : Tryhard
Mensagens : 4281
Reputação : 35
Desde : 07/12/2012
Idade : 20
Localização : Itanhaém - SP
oque tem ?
não é a primeira vez que ele está aqui.
não é a primeira vez que ele está aqui.
______________________________
https://www.youtube.com/channel/UCzG3lLzKBpPDdhWpQbUyMpg
- Meu PC:
- Video: Gigabyte GeForce GTX 1050
Ram: 8GB DDR3
Processador: Intel Core i5 3330 3.00Ghz
HD: HD: 500 GB
OS: Windows 10 Pro
- Minhas playlists do Spotify:
- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
NÃO É A PRIMEIRA VEZ QUE ELE ESTÁ AQUI!!!Vicio_Explosivo escreveu:oque tem ?
não é a primeira vez que ele está aqui.




- -W4ntedVeterano
- Nick anterior : Vicio_Explosivo
Título : Tryhard
Mensagens : 4281
Reputação : 35
Desde : 07/12/2012
Idade : 20
Localização : Itanhaém - SP
https://brmodstudio.forumeiros.com/t366p120-peugeot-307cc-bms-edition-v106#10915
https://brmodstudio.forumeiros.com/t366p60-peugeot-307cc-bms-edition-v106#9623
entre outras paginas...
mas não sei porque esse desespero todo .-.
https://brmodstudio.forumeiros.com/t366p60-peugeot-307cc-bms-edition-v106#9623
entre outras paginas...
mas não sei porque esse desespero todo .-.
______________________________
https://www.youtube.com/channel/UCzG3lLzKBpPDdhWpQbUyMpg
- Meu PC:
- Video: Gigabyte GeForce GTX 1050
Ram: 8GB DDR3
Processador: Intel Core i5 3330 3.00Ghz
HD: HD: 500 GB
OS: Windows 10 Pro
- Minhas playlists do Spotify:
- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Eu to brincando Vicio
- LINK/2012Programador - Avançado
- Mensagens : 7655
Reputação : 349
Desde : 03/05/2012
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."

- Kevin PrestesScripter CLEO - Avançado
- Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
É, não deu certo nem com Components de veículos. Vou fazer mais uns testes aí
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
|
|