No sé si existe en Blender porque nunca lo he necesitado, pero ayer viendo la página de modo vi una herramienta que me gustó, a ver qué opináis al respecto: Luxology - Video.
No sé si existe en Blender porque nunca lo he necesitado, pero ayer viendo la página de modo vi una herramienta que me gustó, a ver qué opináis al respecto: Luxology - Video.
Obtén enseñanza tradicional en arte y cine. Los ordenadores solo son herramientas. Ellos no pueden tomar decisiones creativas, y solo pueden crear trabajos tan buenos como tus conocimientos y tu experiencia les permita.
Victor Navone
Ser "animador" es un regalo que te ganas y un honor que deben adjudicarte los otros.
Chuck Jones
La tecnología no hace las pelí*culas, la gente las hace. No eres un animador sólo porque puedas mover un objeto del punto A al punto B. Eres alguien quien le da vida a un personaje, que es algo que el software y la tecnología no puede dar.
John Lasseter
Perdona por mi ignorancia en estos temas, pero ese resultado no se obtendría igualmente aplicando un extrude sobre todo el objeto y luego un Subsurf?
Exacto.Ostia Klópes. Magnífico. Lo de 3d>view>space handler scripts>nombre_del_texto no lo sabia. Con eso activas el spacehandler ¿no?
Muchas gracias Klópes.
Estoy buscando cómo detectar que estas pinchando sobre un objeto.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Dios Python y Blender me parecen un misterio para mí, bueno tampoco lo he mirado, pero ahí está el señor Klópes para enseñarnos.
Hasta que me ponga medianamente al día, la Api ha crecido tanto desde el pythonlopes como el propia Blender. Tendré que escribir otro manual.Dios Python y Blender me parecen un misterio para mí, bueno tampoco lo he mirado, pero ahí está el señor Klópes para enseñarnos.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Si eso también lo estuve pensando. El tema es pillar la normal de la cara en la que está encima el mouse para pillar la orientación del objecto ¿no?
Existe un script que hace eso mismo y se llama Solidify, no sé si viene con la versión oficial, yo lo tengo desde hace bastante tiempo.No sé si existe en Blender porque nunca lo he necesitado, pero ayer viendo la página de modo vi una herramienta que me gustó, a ver qué opináis al respecto: Luxology - Video.
Si, el script Solidify selection (en el menú Mesh/scripts) lo pusieron oficialmente en la 2.43.
"La vida es como el tetris, cuando llegan los palos no sabes como encajarlos"
Ahora que lo he localizado he recordado que una vez lo probé, el alzheimer me tiene frito. Gracias.Existe un script que hace eso mismo y se llama Solidify, no sé si viene con la versión oficial, yo lo tengo desde hace bastante tiempo.
Obtén enseñanza tradicional en arte y cine. Los ordenadores solo son herramientas. Ellos no pueden tomar decisiones creativas, y solo pueden crear trabajos tan buenos como tus conocimientos y tu experiencia les permita.
Victor Navone
Ser "animador" es un regalo que te ganas y un honor que deben adjudicarte los otros.
Chuck Jones
La tecnología no hace las pelí*culas, la gente las hace. No eres un animador sólo porque puedas mover un objeto del punto A al punto B. Eres alguien quien le da vida a un personaje, que es algo que el software y la tecnología no puede dar.
John Lasseter
¿Alguien sabe si hay alguna manera de saber la relación entre la coordenada del mouse y la coordenada del vértice más cerca en una geometría?
Un poco rebuscado vamos.
Eso no creo que esté accesible a través de Python.Alguien sabe si hay alguna manera de saber la relación entre la coordenada del mouse y la coordenada del vértice más cerca en una geometría?
Un poco rebuscado vamos.
¿Por qué no le echas un vistazo al primer script que te recomendé? Si ese script permitía esculpir la superficie de un objeto, seguro que tiene una rutina que devuelve esa posición 3d a partir de la posición 2d del ratón.
Yo es que hace muchos años que no programo, pero supongo que, habrá que trazar un Vector desde la posición del ratón hasta que cruce un polígono del objeto.
Si exacto, ese Vector es el que tendía que saber. Si me lo he estado mirando el script que publicaste. A ver si me lo estudio con más tranquilidad y pillo como lo haze.
Fog ese Vector es el que debes calcular tu a partir de la posición dada del ratón y la matriz de perspectiva de la vista.
Si te estáncas, pregunta en blenderartists en el foro de scripts porque hay mucho monstruo por allí y a lo mejor tienes suerte.
O entra en el Irc de #blendercoders para una respuesta o patada más directa. Siento que nuestra capacidad Mental no llegue a tanto nivel.
En cualquier caso, si ves que no encuentras solución cortate un dedo, eso da motivación para encontrar la solución.
Mejor el nabo, así no pierdes tiempo en otras cosas.En cualquier caso, si ves que no encuentras solución cortate un dedo, eso da motivación para encontrar la solución.
Lo del navo va ser que no tu. Pues es verdad no había caído con lo del Irc y el blenderartists a ver si alguien me ilumina un poco. Gracias de nuevo tíos.
Hablando de blenderartists, en estos mensajes creo que te dan la solución: http://blenderartists.org/forum/showthread.php?t=70881.
(Arg, no digo nada, ya veo que te ha contestado el señor cambo).
Última edición por pedropp; 25-09-2007 a las 02:52
"La vida es como el tetris, cuando llegan los palos no sabes como encajarlos"
Gracias perdrpp, ya lo había visto este. Al final gracias a blenderartists tengo un poco más de luz al tema. Hay una función en el bpywindow.py que se llama mouseviewray.
Con eso pillamos un rayo des del mouse a la geometría.
Ole ole.
Ahí lo tienes, te dejo la rotación a ti. Edito: sólo funciona sobre el objeto activo, y tiene que ser canónico, vamos, Loc(0,0,0), root(0,0,0), sca (1,1,1).
También queda detectar que el botón esté pulsado, no sólo dibujar en cada pulsación, o sea que hay tajo.
Edito: deja, estoy a punto.
Código:# spacehandler. View3d. Event. Import Blender,bpywindow,bpymesh. From Blender import *. From Blender.window import *. Evt = Blender, event. If evt == draw. Leftmouse: Print mmm tos = Blender. Object. Getselected()[0] tm = os, getdata () tmc = getmousecords() tray = bpywindow.mouseviewray(mc[0], mc[1], os, Matrix) tori, dir= ray[1], ray[2] tf = bpymesh, pickmeshrayface (m, ori, dir) tif f[0]: Print f o=object. New(empty) o, setlocation(f[1]) scene. Getcurrent(), enlace (o) redraw()
Última edición por Klópes; 25-09-2007 a las 16:30
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Sigue, sigue, que yo te aviso.Edito: deja, estoy a punto.
Me estaba volviendo loco desde ayer el signo - De m=Matrix(). Si es que no aprendo.
Hala, siento haberte levantado el script, Fog, pero me ha picado. Síguelo si quieres.Código:# spacehandler. View3d. Event. ###########################. ###~~~~~~~~~~~~~~~~~~~~~###. ### pegotes 0.1 ###. ### ###. ### un capricho para ###. ### contentar a Caronte ###. ###~~~~~~~~~~~~~~~~~~~~~###. ###########################. _author__ = Carlos López (Klópes). _url__ = (http://www.3dpoder.com, author web page, http://Klópes, tk. Script homepage, http://www.iespana.es/Klópes/enchufes-guiri.htm). _versión__ = 1.0. _bpydoc__ = \. Pegotes sirve para colocar objetos sobre las caras de una malla, de acuerdo a su orientación. No funciona sobre modificadores. Buen uso: * activar script enlaces en la ventana correspondiente. * abrir el script en una ventana de texto. * en una ventana 3d, pinchar en view->space handler scripts>pegamento, py. * seleccionar una malla, y pinchar sobre ella innumerables veces y sin criterio ninguno. Import Blender,bpywindow,bpymesh. From Blender import *. From Blender.window import *. From Blender. Mathutils import *. Evt = Blender, event. If evt == draw. Leftmouse: Print mmm tos = Blender. Object. Getselected()[0] tm = nmesh. Getrawfromobject(os, name) tmc = getmousecords() tray = bpywindow.mouseviewray(mc[0], mc[1], os, Matrix) tori, dir= ray[1], ray[2] tf = bpymesh, pickmeshrayface (m, ori, dir) tif f[0]: Print f, f o=object. New(empty) m0 = os, Matrix vs = f[0].v v0 = Vector(vs[0])*m0 v1 = Vector(vs[1])*m0 v2 = Vector(vs[2])*m0 ex, e = (v1-v0), normalize (), v2-v0 ez = crossvecs(ex, e), normalize () ey = crossvecs(ex, ez) = Matrix(-ex, hey, ez) o, setmatrix(m) o, setlocation(f[1]*m0) scene. Getcurrent(), enlace (o) redraw() Blender, event=none.
Última edición por Klópes; 26-09-2007 a las 11:41
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Vaya, eres un monstruo. Venga Fog, a ver si consigues acabarlo en plan bonito.Un capricho para contentar a Caronte.
Vaya que cabrón, lo has bordado Klópes. Nada hombre, no te preocupes tío, yo habría tardado siglos para llegar aquí. A ver si lo podemos mejorar.
Tú tienes que empezar a escribir. Empieza haciendo cosas que no sirven para nada, como crear mallas en forma de estrella, hacerles agujeros, moverles los vértices y todo eso, o un clon de la ventana 3d en la ventana de script, y sobre todo le mucho (el tutorial en Python programming language - Oficial website es imprescindible y los docs del Api de Blender) y estate al tanto de lo que va saliendo.Vaya que cabrón, lo has bordado Klópes. Nada hombre, no te preocupes tío, yo habría tardado siglos para llegar aquí.
A ver si lo podemos mejorar.
Si te interesa, puedes suscribirte a la lista de desarrollo, y ves lo que van discutiendo.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Tú también eres feo.Vaya, eres un monstruo.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Sinceramente los dos sois unos monstruos.
He modificado un poco el tema, ahora pinta, o sea que no necesitas ir haciendo cada vez click para ir anyadiendo objetos.
Cambiando el valor de slep de 10 a 100 ponemos menos duplicados encima de la geometría.
Código:# spacehandler. View3d. Event. ########################### ###~~~~~~~~~~~~~~~~~~~~~### ### pegotes 0.1 ### ### ### ### un capricho para ### ### contentar a Caronte ### ###~~~~~~~~~~~~~~~~~~~~~### ###########################. _author__ = Carlos López (Klópes) _url__ = (http://www.3dpoder.com, author web page, http://Klópes, tk, script homepage, http://www.iespana.es/Klópes/enchufes-guiri.htm, ) _versión__ = 1.0. _bpydoc__ = \ Pegotes sirve para colocar objetos sobre las caras de una malla, de acuerdo a su orientación, no funciona sobre modificadores, buen uso: * activar script enlaces en la ventana correspondiente. * abrir el script en una ventana de texto. * en una ventana 3d, pinchar en view->space handler scripts>pegamento, py. * seleccionar una malla, y pinchar sobre ella innumerables veces y sin criterio ninguno. Import Blender,bpywindow,bpymesh. From Blender import * From Blender.window import * From Blender. Mathutils import *. Evt = Blender, event. Lmb = window. Mbuts[l]. Def event (evt, val): # loop until click. Mouse_buttons = window. Getmousebuttons() While not mouse_buttons & LMB: Blender, Sys, slep(10) Mouse_buttons = window. Getmousebuttons() Print unpresed. While mouse_buttons & LMB: Blender, Sys, slep(10) Mouse_buttons = window. Getmousebuttons() Pinta () Draw. Exit() Def pinta (): Print mmm. Os = Blender. Object. Getselected()[0] Vaya = nmesh. Getrawfromobject(os, name) Mc = getmousecords() Ray = bpywindow.mouseviewray(mc[0], mc[1], os, Matrix) Ori, dir= ray[1], ray[2] F = bpymesh, pickmeshrayface (m, ori, dir). If f[0]: Print f, f. O=object. New(empty) M0 = os, Matrix. Vs = f[0].v. V0 = Vector(vs[0])*m0 V1 = Vector(vs[1])*m0 V2 = Vector(vs[2])*m0 Ex, e = (v1-v0), normalize (), v2-v0 Ez = crossvecs(ex, e), normalize () Ey = crossvecs(ex, ez) Vaya = Matrix(-ex, hey, ez) O, setmatrix(m) O, setlocation(f[1]*m0) Scene. Getcurrent(), enlace (o) Redraw() Blender, event=none. Def GUI(): Print GUI. Draw. Register(GUI, event, pinta)
Última edición por fog; 26-09-2007 a las 15:33
Una pregunta, para crear un plano o un cubo como seria? Porque con:
No funciona ¿no?Código:o=object. New(Mesh, plane)
Bueno, comienza añadiendo una interfaz chorra donde exista un deslizador de espaciado de brocha con el que puedas variar el tamaño del slep en tiempo de ejecución.
Eso está bien como opción, pero debería existir también el otro modo, porque nos dará más precisión.He modificado un poco el tema, ahora pinta, o sea que no necesitas ir haciendo cada vez click para ir anyadiendo objetos.
Pues si es verdad Caronte, ahora ya sabemos cómo hacerlo de una forma y de la otra, así que, ya tenemos algo avanzado.
Fog, es tan simple con que pongas una variable chivata que te permita pintar siempre que se haya dejado de hacer click o sigas haciendo click y hayan pasado los segundos que quieras, y en caso contrario no haga nada.
Si Mars, a ver si puedo controlar eso, le falta poco. Ahora lo que hace ya es pintar con el RMB sin parar, y con el botón del medio del mouse paramos el script.
El problema ahora es poder acceder al GUI del script para cambiar el valor del spacing, pero peta.
Alguna idea?
Código:# spacehandler. View3d. Event. ########################### ###~~~~~~~~~~~~~~~~~~~~~### ### pegotes 0.1 ### ### ### ### un capricho para ### ### contentar a Caronte ### ###~~~~~~~~~~~~~~~~~~~~~### ###########################. _author__ = Carlos López (Klópes) _url__ = (http://www.3dpoder.com, author web page, http://Klópes, tk, script homepage, http://www.iespana.es/Klópes/enchufes-guiri.htm, ) _versión__ = 1.0. _bpydoc__ = \ Pegotes sirve para colocar objetos sobre las caras de una malla, de acuerdo a su orientación, no funciona sobre modificadores, buen uso: * activar script enlaces en la ventana correspondiente. * abrir el script en una ventana de texto. * en una ventana 3d, pinchar en view->space handler scripts>pegamento, py. * seleccionar una malla, y pinchar sobre ella innumerables veces y sin criterio ninguno. Import Blender,bpywindow,bpymesh. From Blender import * From Blender.window import * From Blender. Mathutils import * From Blender. Bgl import *. Rmb = window. Mbuts[r]. Def event (evt, val): Global mouse_state mouse_buttons = window. Getmousebuttons() Print mouse_buttons. While not mouse_buttons: While not mouse_buttons & RMB: Blender, Sys, slep(brush_spacing, val) Mouse_buttons = window. Getmousebuttons() Print mouse_buttons. If mouse_buttons == 2: Draw. Exit() Return. While mouse_buttons & RMB: Blender, Sys, slep(brush_spacing, val) Mouse_buttons = window. Getmousebuttons() Paintgeom(). Def paintgeom(): #print mmm. Os = Blender. Object. Getselected()[0] Vaya = nmesh. Getrawfromobject(os, name) Mc = getmousecords() Ray = bpywindow.mouseviewray(mc[0], mc[1], os, Matrix) Ori, dir = ray[1], ray[2] F = bpymesh, pickmeshrayface (m, ori, dir). If f[0]: #print f, f. O=object. New(empty) M0 = os, Matrix. Vs = f[0].v. V0 = Vector(vs[0])*m0 V1 = Vector(vs[1])*m0 V2 = Vector(vs[2])*m0 Ex, e = (v1-v0), normalize (), v2-v0 Ez = crossvecs(ex, e), normalize () Ey = crossvecs(ex, ez) Vaya = Matrix(-ex, hey, ez) O, setmatrix(m) O, setlocation(f[1]*m0) Scene. Getcurrent(), enlace (o) Redraw() Blender, event=none. Def GUI(): Global brush_spacing, activeobj glcolor3f(0.7,0.7,0.7) Glrecti (15, 35, 320, 210) glcolor3f(0.1, 0.1, 0.1) Glrasterpos2f(35,190) Draw. Text(brush spacing:). Brush_spacing = draw. Number(value:, 1000, 35,160, 150,20, 100, 5,1000, % of meshes with one stroke) activeobj = draw. Label(object todo Paint:, 40,120, 100, 30) Draw. Register(GUI, event, paintgeom)
No puedes usar el botón del medio, porque se usa para rotar la vista 3d y eso es esencial mientras pintamos.Y con el botón del medio del mouse paramos el script.
Primero: ten en cuenta esto que viene en las instrucciones de los space handler: Guidelines (important):
* event handler can Access and change Blender objects just like any other script, but they should not draw todo the screen, use a draw handler todo do that. Specifically: draw. Image and the BGL drawing functions should not be used inside an event handler.
Es decir, olvídate de entornos gráficos en este texto, tendrás que usar otro. Léelo bien.
Además, estas mezclando los eventos controlados por una GUI con los detectados como space handler. O una cosa o la otra, o mete la GUI como un script spacehandler. View3d. Draw.
En cuanto al spacing, no debería ser controlado por tiempo sino por la distancia al último objeto pegado. Guarda las coordenadas f[1]*m0 y no dibujes el siguiente hasta que la distancia sea mayor que una.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Crea un script para modelar igual que Maya.
Bien, siguiendo con mi de los script handler, he adaptado unos toques de Fog en la primera idea, y aquí lo tenemos.
Un objeto se añade si la distancia al anterior es mayor que la variable med, más un valor aleatorio sobre VAR.
Edito: lo que he escrito del Rand() era una gilipollez, ya está corregido.
Ya le pondremos cabecera al final, ¿vale?
Código:# spacehandler. View3d. Event. Import Blender,bpywindow,bpymesh. From Blender import *. From Blender.window import *. From Blender. Mathutils import *. Evt = Blender, event. Med = 1.0. Var = 0.5. If evt == draw. Leftmouse: R = 0 tmouse_buttons = window. Getmousebuttons() tos = Blender. Object. Getselected()[0] tm = nmesh. Getrawfromobject(os, name) tm0 = os, Matrix tlmb = window. Mbuts[l] tl0 = Vector(-1000000,0,0) twhile mouse_buttons & LMB: Mouse_buttons = window. Getmousebuttons() mc = getmousecords() ray = bpywindow.mouseviewray(mc[0], mc[1], os, Matrix) ori, dir= ray[1], ray[2] f = bpymesh, pickmeshrayface (m, ori, dir) l = f[1]*m0 Dist= Vector(l-l0), magnitude if f[0] and (dist > med+r): R = Rand(). # print f, f o=object. New(empty) l0 = l vs = f[0].v v0 = Vector(vs[0])*m0 v1 = Vector(vs[1])*m0 v2 = Vector(vs[2])*m0 ex, e = (v1-v0), normalize (), v2-v0 ez = crossvecs(ex, e), normalize () ey = crossvecs(ex, ez) = Matrix(-ex, hey, ez) o, setmatrix(m) o, setlocation(l) scene. Getcurrent(), enlace (o) redraw() Blender, event=none
Última edición por Klópes; 27-09-2007 a las 16:17
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Perfecto.
Gracias, pero bueno, algunos defectos tengo.Perfecto.
...y estaba superbueno.
Y miré su perfil. Y vi que era amigo de Daniela. Puaf.
Dos niñas en el parque
no se elevará, nunca más
Sí, es una pena que seas tío y feo.Gracias, pero bueno, algunos defectos tengo.
Que mod esto.
A Maya habría que crearle un script para modelar igual que en Blender.Crea un script para modelar igual que Maya.
Obtén enseñanza tradicional en arte y cine. Los ordenadores solo son herramientas. Ellos no pueden tomar decisiones creativas, y solo pueden crear trabajos tan buenos como tus conocimientos y tu experiencia les permita.
Victor Navone
Ser "animador" es un regalo que te ganas y un honor que deben adjudicarte los otros.
Chuck Jones
La tecnología no hace las pelí*culas, la gente las hace. No eres un animador sólo porque puedas mover un objeto del punto A al punto B. Eres alguien quien le da vida a un personaje, que es algo que el software y la tecnología no puede dar.
John Lasseter
No es por ponerme en guerra de softwares, pero yo veo que modelar con Maya es una gozada, rápido, sencillo (quizá porque estoy acostumbrado a el).
Yo he estado viendo algunos editores de cómics, pero no he conseguido bajar uno gratuito, el enlace estaba roto, en softonic.
Luego se me ocurrió que sería un punto meter un par de herramientas en el editor de imágenes, una para hacer bocadillos para texto y otra para trabajar con capas, también la posibilidad de importar imágenes(renders) y maquetarlos como viñetas.
De esta forma se podría hacer una capa de fondo con un escenario como render aparte.
Luego en otra capa con el fondo transparente poner el personaje.
Y tener un par de herramientas para pintar y desenfocar en cada capa. Para luego componerlas dentro de la viñeta.
No sé si me explico, que dentro de una página (en el editor de imagen), al clickar una viñeta, salga su pequeño sub-editor de imagen, con capas(tres o cuatro máximo, importando renders ya sacados), herramientas de pintar y desenfocar y herramienta para texto y bocadilos.
Merecería la pena hacerle un cómic-editor a Blender o mejor hacerlo con un software aparte como el Gimp?
Lo bueno, creo yo de que lo tuviera Blender es que, aquella persona limitada por su equipo A la hora de renderizar escenas complejas, pueda crear un cómic(story-board) en vez de un corto, a partir de renders fijos, con lo que la producción sería más asequible y a lo mejor la gente podría sacar adelante proyectos que como corto animado se les va de las manos.
Y creo que Blender crecería como software todoterreno.
"Trate la historia como si todo el proyecto dependiera de ella porque,probablemente,así* sea" (Mark Adams)
Corolario: "La cafeí*na es tu amiga"
Yo eso lo veo más para Gimp que para Blender. De hecho, es algo que ya puedes hacer con Gimp tal y como esta. Es más, es lo que yo usaba para mis tiras cómicas.
Yy si no, el otro programa para maquetar (Scribus) creo que también te daría casi todas las opciones que has dicho (no estoy seguro de lo del desenfoque).
Bajando, lo probaré el fin de semana. Lo del desenfoque es para los fondos o capas intermedias, humo, rayos y todo eso.
Los bocadillos supongo que, habría que hacerlos con Inkscape, en vectorial vaya, para poder dformarlos, y luego meterles el texto.
Supongo que un original se hace por lo menos en a3.
"Trate la historia como si todo el proyecto dependiera de ella porque,probablemente,así* sea" (Mark Adams)
Corolario: "La cafeí*na es tu amiga"
Esto está un poco offtopic en este hilo, pero básicamente lo que yo hice fue prepararme una batería de bocadillos estándar en Inkscape, y luego los cargaba desde Gimp. Luego en Gimp tenía preparada una plantilla con reglas, y ahí cargaba cada capa, y añadía los bocadillos y los textos.