Foxy Of Jungle
Game Designer
Game Designer
Autor
Mensagens: 102
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 112
Contato:

Como converter graus para vector (Iluminação do Game Maker)

Qui Ago 02, 2018 2:40 pm

Há uma função no Game Maker Studio:
d3d_light_define_direction(id,vx,vy,vz,colour);

A direção da luz é em vetor, mas preciso saber qual cálculo usar para converter esses graus para valores de vetor (0 - 1)   ~edit: (-1 a 1) ,erro meu :P
O jogo é Mobile, por isso estou a usar o sistema built-in de iluminação.
Editado pela última vez por Foxy Of Jungle em Sáb Set 29, 2018 7:27 pm, em um total de 2 vezes.
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 141
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 316

Re: Como converter degraus para vector (Iluminação do Game Maker)

Qui Ago 02, 2018 5:10 pm

Eu acho que não entendi a pergunta, você disse que um vetor vai de 0 a 1? Oo

Enfim, o game maker possui uma função chamada degtorad e radtodeg
Ela faz a conversão de graus
Eu estou falando dela porque acho que você confundiu radiano com vetor.
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 141
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 316

Re: Como converter degraus para vector (Iluminação do Game Maker)

Qui Ago 02, 2018 5:37 pm

Fui olhar a documentação, esta função é exclusiva para 3D e realmente o game maker diz que só vai de 0 a 1 (o que não é a definição de um vetor).

Ignore meu comentário anterior então ^^'
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 452
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 523

Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Qui Ago 02, 2018 5:50 pm

Leia a documentação: d3d_light_define_direction

Não é de 0 até 1, e sim de -1 até 1.

Se tu quiser usar valores de 0 a 360, basta fazer isso:

direcao = 180;

minha_direcao_x = -1 + ((direcao mod 360) / 180);

d3d_light_define_direction(1, minha_direcao_x, 0, 0, c_white);


No teste aqui deu certo, porém não sei se isso é correto de se fazer. Qualquer coisa edito.

FLWS!
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Avatar do usuário
Ciro
Programador
Programador
Mensagens: 33
Registrado em: Dom Dez 13, 2015 1:41 am
Karma: 134

Re: Como converter degraus para vector (Iluminação do Game Maker)

Qui Ago 02, 2018 11:58 pm

Alex FC escreveu:
Leia a documentação: d3d_light_define_direction

Não é de 0 até 1, e sim de -1 até 1.

Se tu quiser usar valores de 0 a 360, basta fazer isso:

direcao = 180;

minha_direcao_x = -1 + ((direcao mod 360) / 180);

d3d_light_define_direction(1, minha_direcao_x, 0, 0, c_white);


No teste aqui deu certo, porém não sei se isso é correto de se fazer. Qualquer coisa edito.

FLWS!


Não é assim que vetores funcionam. A direção de um vetor é representada por um ponto em relação ao ponto de origem (0,0). Por exemplo, (1,0) seria 0 graus (direita), (-1,0) seria 180 graus (esquerda), (0,1) seria 90 graus (baixo) e (1,1) 45 graus.

A distância pode ser qualquer uma, por exemplo (10,10) também seria válido para 45 graus (caso não seja necessário que o vetor esteja normalizado, onde a distância deve ser sempre um)

Acho que esse artigo explica vetores bem: Link

No caso do problema do tópico, achei a solução aqui: Link

Adaptando para o Game Maker, eu acho que ficaria assim (esse vetor é 3D então precisa de dois ângulos):

//coloque seus próprios valores nessas 3 variáveis
var angleX = 180;
var angleY = 90;
var intensity = 1; //insira um valor de 0 à 1

angleX = angleX * 3.14159265 / 180;
angleY = angleX * 3.14159265 / 180;

var sinYaw = sin(angleX);
var cosYaw = cos(angleY);

var sinPitch = sin(angle.x);
var cosPitch = cos(angle.x);

var directionX = cosPitch * cosYaw * intensity;
var directionY = cosPitch * sinYaw * intensity;
var directionZ = -sinPitch * intensity;

d3d_light_define_direction(1, directionX, directionY, directionZ, c_white);


Eu também fiz uma adaptação para suportar intensidade na luz. Na função d3d_light_define_direction, ela é medida pela distância do vetor.
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 452
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 523

Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Sex Ago 03, 2018 12:37 am

Justamente @Ciro, por isso disse que achava que não era essa a forma correta. Eu estava tentando encontrar um exemplo usando vetores, mas não consegui adaptar nenhum.

Abraços
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Foxy Of Jungle
Game Designer
Game Designer
Autor
Mensagens: 102
Registrado em: Qua Abr 26, 2017 12:21 am
Localização: Brasil
Karma: 112
Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Sex Ago 03, 2018 8:05 pm

Valeu pela atenção, ei @Alex eu escrevi errado sobre -1 até 1 :P
Obrigado pela ajuda de todos!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante