Usuarios revisando este tema :
1 Invitados:
Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
No es tímido para hablar
![]()
Registrado:
24/1/2012 11:19 Desde: Barcelona/España
Grupo:
Usuarios Registrados Mensajes:
25
Nivel : 3; EXP : 73
HP : 0 / 68 MP : 8 / 266 ![]() |
Hola,
Estoy intentando hacer en python que un objeto gire alrededor de otro objeto, como lo hace por ejemplo un planeta alrededor del Sol. Según he estado investigando se puede hacer con matrices de transalación/rotación... pero estoy seguro que la libreria math debe tener funciones que lo hagan, pero no sé cuales son ni como usarlas. Alguien tiene algún ejemplo? Gracias por adelantado.
Enviado el: 21/4/2012 5:43
|
|
Transferir a
|
||
Re: Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
G-Blender es mi hogar lejos del hogar
![]()
Registrado:
21/12/2004 4:48 Desde: Ciudad Autonoma de Buenos Aires (Colombiano)
Grupo:
Usuarios Registrados Core Mensajes:
882
Nivel : 26; EXP : 55
HP : 0 / 638 MP : 294 / 15731 ![]() |
Hoal kevek
Lo quieres usar para animar o para game engine?
Enviado el: 21/4/2012 7:40
|
|
Transferir a
|
||
Re: Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
No es tímido para hablar
![]()
Registrado:
24/1/2012 11:19 Desde: Barcelona/España
Grupo:
Usuarios Registrados Mensajes:
25
Nivel : 3; EXP : 73
HP : 0 / 68 MP : 8 / 266 ![]() |
Para game.
Más concretamente lo que pretendo es controlar este movimiento con las flechas izquierda/derecha del teclado. El control de teclado ya lo tengo hecho, el objeto se mueve en el sentido que yo le indico, pero necesito que este movimiento hacia izquierda/derecha describa un movimiento circular tomando como eje un punto en el espacio. Espero haberme explicado bien.
Enviado el: 21/4/2012 10:15
|
|
Transferir a
|
||
Re: Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
Simplemente no puede mantenerse alejado
![]()
Registrado:
13/3/2011 3:33 Desde: BsAs - Argentina
Grupo:
Usuarios Registrados Mensajes:
117
Nivel : 9; EXP : 84
HP : 0 / 221 MP : 39 / 1424 ![]() |
Ya se que no es la respuesta que estás esperando, pero y si emparentás el objeto a otro invisible (un empty, o algo así) que esté en el centro de rotación y hacés que el teclado controle la rotación de este? Es un workaround, pero por ahí te facilita las cosas...
Por las dudas aclaro: nunca usé el game engine! No es la parte de Blender que maś me atraiga... Saludos!
Enviado el: 21/4/2012 18:45
|
|
Transferir a
|
||
Re: Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
Simplemente no puede mantenerse alejado
![]()
Registrado:
15/10/2006 1:47 Desde: Madrid, España
Grupo:
Usuarios Registrados Mensajes:
77
Nivel : 7; EXP : 71
HP : 0 / 167 MP : 25 / 3242 ![]() |
Hola kevek, yo creo que es relativamente fácil hacer lo que quieres.
# define el controlador controller = GameLogic.getCurrentController() # defines el objeto que mueve el controlador obj = controller.owner # defines la cantidad de rotación (X, Y, Z) rotation = [ 0.0, 0.0, 0.1] # usas el eje "world" local = False # mueves el objeto en el GE obj.applyRotation( rotation, local) Saludos
Enviado el: 21/4/2012 20:50
|
|
|
_________________
Línea de gansos en vuelo al pie de la colina la luna como un sello http://www.pawean.com/MVM/index.html |
||
Transferir a
|
||
Re: Rotación/traslación sobre un eje cualquiera en python |
||
|---|---|---|
|
No es tímido para hablar
![]()
Registrado:
24/1/2012 11:19 Desde: Barcelona/España
Grupo:
Usuarios Registrados Mensajes:
25
Nivel : 3; EXP : 73
HP : 0 / 68 MP : 8 / 266 ![]() |
Hola, gracias por vuestras ideas, ya pude hacerlo!
Pero al final opté por la trigonometría. Primero intenté hacerlo emparentando, desplazando el eje pivote en el centro del objeto del cual quería tomar como eje... y luego hacerle el ApplyRotation, pero me encontré con el problema que si el otro objeto se mueve... arrastra consigo al otro objeto también. Al final me monté una función en la que uso un sistema de ecuaciones de rotación 2D, a la que le meto la longitud de arco de circunferencia que quiero recorrer y el sentido (-1 para izquierda y 1 para derecha), y me devuelve la nueva posicion (x,y).
def desplazamiento_lateral( longitud_arco, sentido ):
Y la llamada a la función:
import GameLogic as gl
En la función, el objeto enemy lo tomo como el eje de rotación, y el objeto player es el que roto alrededor de dicho eje. Y nada, aquí os la dejo por si a alguien le interesa. Gracias.
Enviado el: 22/4/2012 11:42
|
|
Transferir a
|
||
Puede ver mensajes.
No puede enviar mensajes.
No puede responder mensajes.
No puede editar mensajes.
No puede eliminar mensajes.
No puede crear encuestas.
No puede votar.
No puede adjuntar archivos.
No puede hacer un envío sin aprobación.






Transferir a








