importar datos numericos mediante python

Preguntas y respuestas relacionadas con el uso y desarrollo de scripts Python y plugins para Blender 3D
Responder
trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

importar datos numericos mediante python

Mensaje por trifamox » Lun Sep 10, 2007 10:03 am

hola!
necesito algo de orientación sobre como importar a blender algunos datos numéricos.
la idea es importar de un archivo ASCII una tabla de datos y después usarlos para generar KeyFrames (tipo Loc para empezar).
alguien me puede dar una mano, no se ni que función usar para empezar.
cualquier ayuda es bienvenida.

gracias!!

trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Mar Sep 11, 2007 1:20 pm

me auto respondo.
ya logré más o menos lo que querí­a, ahora lo tengo que refinar, si a alguien le interesa la cosa que me diga, sino post cerrado!

salud!

yunow
Mensajes: 168
Registrado: Vie Ago 18, 2006 6:56 pm
Nombre:
Contactar:

Re: importar datos numericos mediante python

Mensaje por yunow » Mar Sep 11, 2007 4:05 pm

Si, postealo que está bueno saber. Que es algo que una vez usaron para un video que sincronizaba musica con una animación y nunca entendí­ como lo hicieron.

Saludos.

observandum
Mensajes: 2
Registrado: Lun Sep 10, 2007 12:36 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por observandum » Mié Sep 12, 2007 11:45 am

Me sumo al pedido de yunow.. es posible cargar posiciones departiculas mediante un archivo tipo ascii?

trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Mié Sep 12, 2007 12:39 pm

bueno, acá les paso como adjunto el script, que todaví­a está muy verde, es muy poco flexible, pero considerando que es mi primer script ( y que anduvo!!) bueno...

los datos que carga son del tipo Loc, o sea posiciones en el plano X-Y, los datos tienen que estar en un archivo datos.dat en 2 columnas (también adjunto uno de prueba) en la carpeta raí­z de Blender (después tengo que hacer que uno pueda elegir el archivo).
hay que tener elegido un objeto de la escena, si ya tiene un IPO asociado se borra, y ejecutar el script (Alt-P)

la idea de todo esto es poder meter al blender algunos datos de medidas experimentales (de mecánica), péndulos, carritos, tiros oblicuos, etc. y así­ poder reproducir los movimientos en el Blender, todaví­a está en pañales, pero es algo que queremos hacer en el depto. de fí­sica de la UNLP.
bueno, cualquier duda o comentario postear acá!

salud!

EDIT:
------------------------------------------------------------
parece que el archivo con extensión .dat no lo puedo subir acá, lo mando como .txt, ustedes renombrelo o cambien el nombre en el script, es irrelevante la extensión.

-------------------------------------------------------------
Adjuntos

[La extensión txt ha sido desactivada y no se mostrará en adelante]

[La extensión ha sido desactivada y no se mostrará en adelante]


trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Jue Sep 13, 2007 12:15 pm

UPDATE!!!

hoy dediqué una hora más a Python. Acá dejo el script, ahora con GUI incluido. Se puede elegir el tipo de datos a importar, por ahora entre LOC, ROT y SIZE, aunque los de ROT y SIZE no se como andarán, los puse solo para probar el menú.
además ya se puede elegir el archivo con los datos mediante un browser. Ojo con esto, porque pueden elegir cualquier archivo de su pc, podria pasar cualquier cosa (?).
la GUI la creé usando el programa Blender-Python GUI Designer, que recomiendo a cualquiera que no se quiera meter mucho con la parte de programar el GUI, de todas formas se entiende bastante mirando ejemplos comentados.

observandum: no se a que te referí­s con cargar posiciones de particulas. si hablás de las particulas de Blender, que yo sepa salen de los vertices o caras de una malla siempre (pero mucho no sé). si decí­s de cargar posiciones de objetos, si se puede, si querés te doy una mano con eso, o lo implemento al script.

Acá cuelgo la nueva versión.

Saludos!!
Adjuntos

[La extensión ha sido desactivada y no se mostrará en adelante]


observandum
Mensajes: 2
Registrado: Lun Sep 10, 2007 12:36 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por observandum » Jue Sep 13, 2007 1:26 pm

si, en realidad yo quiero cargar posiciones de objetos, posiciones en XYZ desde un archivo de datos. no son las particulas de blender. Recibo ayuda.

saludos

trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Jue Sep 13, 2007 3:17 pm

bueno, eso se puede hacer, en realidad si mirás bien el script de los keyframes lo que hace es poner al objeto en una posición e insertar un keyframe ahí­.
fijate si te das una idea de como hacerlo, no se si alguna vez usaste python, yo es la primera vez que lo toco.
también serviria saber si queres cargar diferentes locaciones para un objeto o locaciones de distintos objetos y algunos detalles de para que lo querés me interesarí­an.
saludos!

yunow
Mensajes: 168
Registrado: Vie Ago 18, 2006 6:56 pm
Nombre:
Contactar:

Re: importar datos numericos mediante python

Mensaje por yunow » Jue Sep 13, 2007 9:58 pm

Hola, muy bueno el codigo.

Una cosa, me falla porque al elegir el archivo sigue intentando abrir el datos.dat y no el que elegí­ yo. No entiendo bien a que variable se está asignando el archivo que yo seleccione que creo que deberí­a utilizar en la linea que hace el open del archivo.

Y quizás como opinion...
Lo que se podrí­a hacer es en el GUI tambien seleccionar que atributo se va a modificar Loc X, Loc Y, etc y que el archivo tenga como primer columna el cuadro que se quiere y 2 el valor del Ipo.

Ejemplo para Lox X.
1 100
11 -100
22 50
33 -50
44 25
55 -25

Y se puede aplicar a clualquier atributo.
Si puedo el fin de semana veo un poco el código y te ayudo.

Muy buen trabajo.
SAludos.

PD: Ya arreglé para que tome el archivo seleccionado, pero falta un default para tipo, si no elegí­s el tipo de importación da un error.
Adjuntos

[La extensión ha sido desactivada y no se mostrará en adelante]


trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Jue Sep 13, 2007 10:57 pm

gracias por los comentarios.
lo del LocX, LocY, etc. es lo primero que traté de hacer, pero me encontré con que la función insertIpoKey() tomás como argumento ciertos valores que corresponden a LOC, ROT, etc., pero no a LOCX, ni niguno de esos.
buscando y buscando encontré algo, una nota o un mail de uno de los developers, con la idea de cambiar la cosa, sacar la función e incluir los keys como una clase, asi se tendria object.loc.x, object.loc.y, etc.. Yo creo que serí­a algo más flexible de esa forma, pero creo que no está implementado.
después busco si hay alguna otra forma de hacerlo.
lo de los tiempos (cuadros, frames) es fundamental, y ya lo estoy por agregar, por que eso de un punto por frame no sirve mucho que digamos.
el error del \"datos.dat\" ya lo vi, de copiar y pegar puse una linea de más, y el importador hace caso omiso al archivo que elegiste y se empaqueta con el datos.dat, claro que a mi no me dio error por mi archivo era el mismo que antes, y entonces estaba todo bien. ahora lo arreglo.
es probable que el fin de semana lo actualice un poco, lo que no se es cuando voy a terminar de preparar el final para la facultad :-P

saludos!

yunow
Mensajes: 168
Registrado: Vie Ago 18, 2006 6:56 pm
Nombre:
Contactar:

Re: importar datos numericos mediante python

Mensaje por yunow » Vie Sep 14, 2007 9:02 am

Ok, fijate que que puse yo, ya toma el archivo.

Si querés te ayudo a programarlo. Pero para no hacer doble trabajo avisame que querés que investigue.

Saludos.

trifamox
Mensajes: 88
Registrado: Dom Mar 12, 2006 7:28 pm
Nombre:

Re: importar datos numericos mediante python

Mensaje por trifamox » Vie Sep 14, 2007 10:01 am

ahí­ le agregué el default a la variable tipo, y la definí­ fuera del if de importar, me parece más prolijo (lí­neas 41 y 42).
también saqué la decalración de global datos que habí­as agregado, porque ya estaba hecha dentro de la función abrirarchivo(). con cambiar el \"datos.dat\" por datos alcanzaba.
te recomiendo, si no lo conocés, el programa Notepad++, que reconoce sintaxis de varios lenguajes de programación, entre ellos python.
anoche me estuve rompiendo la cabeza tratando de poner un botón tipo toggle, y un slider que aprezca solo cuando ese botón está hundido, pero no lo pude hacer, es solamente un capricho, pero si querés mirarlo.....
la idea es poner un botón para elegir si querés importar tus tiempos como frames o como tiempo real (segundos), en caso de elegir segundos habrí­a que indicar los frames por segundo para poder convertir el tiempo a frames, para eso era el slider.
adjunto el .py modificado.
nos vemos!
Adjuntos

[La extensión ha sido desactivada y no se mostrará en adelante]


Responder