Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: romon_28 en Febrero 22, 2012, 03:46:44 PM

Título: Direccion en 3D
Publicado por: romon_28 en Febrero 22, 2012, 03:46:44 PM
Como calculo la direccion, un campo 3D, entre 2 puntos?
Título: Re:Direccion en 3D
Publicado por: brunoxzx en Febrero 22, 2012, 10:20:47 PM
Si usas gm 8.1 puedes usar "point_distance_3d", usando gm8 tienes que hacer tu propio script usando el teorema de pitagoras.

Código (point_distance_3d) [Seleccionar]

//point_distance_3d(x1, xy, z1, x2, y2, z2);
var xx, yy, zz;
xx=argument0-argument3;
yy=argument1-argument4;
zz=argument2-argument5;
return(sqrt(x1*x1+y1*y1+z1*z1));
Título: Re:Direccion en 3D
Publicado por: Zeit en Febrero 22, 2012, 10:33:14 PM
Hola, al ser 3d la direccion esta dada por 2 angulos en "cordenadas esfericas", busca estas en wikipedia... Saludos.

EDIT: Aqui encuentras la informacion:

Coordenadas esfericas (http://es.wikipedia.org/wiki/Coordenadas_esf%C3%A9ricas)

En el apartado "relacion con coordenadas cartesianas", los angulos theta y phi son los que buscas... Nota: al calcular el arcotanjente usa la funcion de GM para 2 parametros en lugar de usar la de un parametro.

EDIT2: como dice el usuario de arriba, lo que buscas son los angulos en coordenadas esfericas de la diferencia de los puntos (vectores).

EDIT3: los resultados estan dados en radianes, usa las funcines de GM adecuadas para convertirlos a grados si es que esto es mas util para tus intereses.
Título: Re:Direccion en 3D
Publicado por: brunoxzx en Febrero 22, 2012, 11:52:57 PM
edit: wtF! leí distancia, perdón ???....

Aunque zeit ya te paso como hacerlo, si necesitas mas ayuda solo vuelve a contestar.
Título: Re:Direccion en 3D
Publicado por: elviskelley en Febrero 23, 2012, 05:26:27 PM
En game maker la programación es en 2D, aunque el juego sea en 3D, solo para comparar alturas es que declaras la variable "Z" y luego comparas dicha variable if z > object0.z {..} ejemplo.
Lo que realmente cambia en un juego 3D cerado con game maker en cuanto a programacion, son los evento Draw, por que no se muestra nada que asignes de inmediato como sprites, backgrounds, solo se muestra lo que indiques en el event draw. De resto la programación es en 2D.
Título: Re:Direccion en 3D
Publicado por: romon_28 en Febrero 29, 2012, 02:56:48 PM
brunoxzx me podes decir como seria un script calculando lo que pido?

ahora les doi una idea de lo que quiero hacer:
Si ha usado alguna vez anim8or, un programa 3D de uso limitado, existe una edicion de "huesos"
aca unas imagenes para que tengan una idea de lo que hablo:

(http://t0.gstatic.com/images?q=tbn:ANd9GcQNLgP7PetDtZL5AmyxpOPr-4mmWgyq3jPPGPDfJYfv3aIYeEQ63h1FoYUC)
(http://morpheus.cc/ict/anim8or/walk_cycle_1.gif)

Basicamente lo que quiero hacer es eso: un programa con  :GM8: que pueda editar de huesos.-
Mi problema es que al mover uno de los huesos, los huesos superiores se tendran que mover con un determinado angulo dependiendo del angulo en el que el hueso seleccionado fue girado.

me podrian dar una manito?
si esto me sale bien subo el programa a la comunidad, que de seguro le va a salvar la vida a muchos que no quieren usar lo dll.
Título: Re:Direccion en 3D
Publicado por: Zeit en Febrero 29, 2012, 03:57:31 PM
Hola, lo que quieres no se hace con direcciones o coordenadas esfericas (bueno, si pero no tan directo), sino con Angulos de navegacion (http://es.wikipedia.org/wiki/%C3%81ngulos_de_navegaci%C3%B3n) y Matices de rotacion (http://en.wikipedia.org/wiki/Rotation_matrix)... ya he hecho lo que buscas por dos metodos: con las funciones de rotacion y traslacion de GM en modo 3D y programando las matrices de rotacion para los vertices (extremos de los huesos), lee un poco del tema e intenta programarlo. Saludos.

EDIT: Yo tambien pensaba en hacer un programa para animar modelos 3D (pero como siempre me quede en el diseño visual aunque ya hice que se muevan los modelos), ahora mejor voy a esperar a ahorrar un poco y comprar un kinect para PC, ja!
Título: Re:Direccion en 3D
Publicado por: romon_28 en Marzo 01, 2012, 04:03:52 PM
Zeit:
Gracias por la data.. pero te molesto de nuevo.
la verdad es que no entiendo mucho el tema. me podrias hacer un ejemplo (3D) muy simple para que te entienda?
porque ya me arte de buscar y buscar sin encontrar lo que quiero.
Título: Re:Direccion en 3D
Publicado por: Zeit en Marzo 01, 2012, 06:05:54 PM
Hola, la verdad es que no es un tema sencillo, hay que tener conocimientos en geometria, trigonometria y algo de mecanica (esto se usa mucho en mecatronica). No es que no quiera ayudarte pero uso GM8.1 y no es compatible con anteriores por lo que si te hago un ejemplo quiza no te sirva.

Lo que tienes que hacer es:

tienes 3 vertices v0=(x0,y0), v1=(x1,y1) y v2=(x2,y2)
y en consecuencia 2 aristas r1=v0->v1 y r2=v1->v2
quieres rotar a r1 mediante los angulos de navegacion ax1, ay1 y az1
y quieres rotar a r2 mediante los angulos de navegacion ax2, ay2 y az2, pero quieres que r2 no se desconecte de r1 al rotar (por ejemplo la tibia y el perone conectados por la rodilla)

Utiliza las funciones de GM para rotar, trasladar y dibujo:
1. rota r2 con respecto a ax2, ay2 y az2
2. traslada r2 con respecto a r1
3. rota r2 con respecto a ax1, ay1 y az1
4. dibuja r2
3. rota r1 con respecto a ax1, ay1 y az1
4. dibuja r1

Listo, ese es el mecanismo, para mas aristas requieres repetir para cada una de las partes, desde la mas externa a la mas interna, por ejemplo el brazo: primero lo aces para la mano, despues para el antebrazo y por ultimo el bicep (imagina que pasa para por ejemplo la cola de un animal con muchas partes, ja!).

Saludos.
Título: Re:Direccion en 3D
Publicado por: romon_28 en Marzo 03, 2012, 04:50:23 PM
Si.. entiendo el procedimiento. si no directamente no haria nada en 3D. pero me sale mal lo que estoy haciendo no gira para donde quiero. se que tenes el gm 8.1 pero no importa me lo descargo y ya.. total es para ver el codigo y lo paso a gm8.0 yo mismo. de todas formas si el problema persiste voy a subir el editable para que veas o vean cuel es mi problema en lo que voy desarrollando.
de todas formas te agradesco la data Zeit  :-[
Título: Re:Direccion en 3D
Publicado por: Zeit en Marzo 03, 2012, 05:00:48 PM
Cita de: romon_28 en Marzo 03, 2012, 04:50:23 PM
Si.. entiendo el procedimiento. si no directamente no haria nada en 3D. pero me sale mal lo que estoy haciendo no gira para donde quiero. se que tenes el gm 8.1 pero no importa me lo descargo y ya.. total es para ver el codigo y lo paso a gm8.0 yo mismo. de todas formas si el problema persiste voy a subir el editable para que veas o vean cuel es mi problema en lo que voy desarrollando.
de todas formas te agradesco la data Zeit  :-[

OK, te hago un ejemplo... espera...

EDIT: Adjunto el ejemplo junto con un ejecutable para que veas el funcionamieno en caso de no tener el GM8.1, espero te sea util.
Título: Re:Direccion en 3D
Publicado por: brunoxzx en Marzo 05, 2012, 03:38:22 AM
Cita de: romon_28 en Marzo 03, 2012, 04:50:23 PM
Si.. entiendo el procedimiento. si no directamente no haria nada en 3D. pero me sale mal lo que estoy haciendo no gira para donde quiero. se que tenes el gm 8.1 pero no importa me lo descargo y ya.. total es para ver el codigo y lo paso a gm8.0 yo mismo. de todas formas si el problema persiste voy a subir el editable para que veas o vean cuel es mi problema en lo que voy desarrollando.
de todas formas te agradesco la data Zeit  :-[
También puedes descargarte lgm y convertirlohttp://lateralgm.org/download.php (http://lateralgm.org/download.php).
Título: Re:Direccion en 3D
Publicado por: romon_28 en Marzo 10, 2012, 01:36:18 PM
Gracias Zeit, es lo que buscaba.

Ahora solo me queda hacer el editor. Eso si, me voy a demorar un tiempo porque ahora comienzo a estudiar de nuevo y tengo poco tiempo libre -.-

Te voy a agregar en los creditos. Supongo que no te vas a negar  :-X o s?