![]() |
|
Bienvenido a Foros 3DPoder.. Usted esta viendo este foro como invitado, no esta registrado todavía, lo que limita su visión del foro. Si quiere unirse gratis a la mayor comunidad del diseño gráfico de habla hispana, tener acceso a publicar y responder mensajes, tener mensajes privados con otros miembros(PM), responder encuestas, publicar sus imágenes para que las vea el resto del mundo, tener acceso a los video_tutoriales, y muchas cosas más, no lo dude. Registrarse es rápido, simple y gratuito, agregate hoy a la mayor comunidad 3D de habla hispana! ! Si usted tiene algún problema con su registro, por favor , díganoslo aquí.
|
![]() ¿Te ayudo? |
|
|||||||
|
|
|
|
#46 |
|
El Programador
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 687
|
A primera leida si que está, esta por el final
|
|
|
|
| Enlaces patrocinados |
|
|
#48 |
|
Environment Artist
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 850
|
He encontrado esto, que es para pasar las screen coords a world coords
Código:
#dehomonogizes a vector
def dehom(v):
ret = Vector(v[0]/v[3],v[1]/v[3],v[2]/v[3])
return ret
#takes the inverse of a matrix and returns it
def inverseMatrix(m):
ret = Matrix([0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0])
det = m.determinant()
for i in range(4):
for j in range(4):
temp = Matrix([0,0,0],[0,0,0],[0,0,0])
col = 0
for x in range(4):
if x != i:
row = 0
for y in range(4):
if y != j:
temp[col][row] = m[x][y]
row = row +1
col = col +1
tdet = temp.determinant()
total = i+j
if (total % 2):
sign = -1
else:
sign = 1
#i and j are flipped
ret[j][i] = (sign * tdet) / det
return ret
#grabs the depth of a pixel from a depth buffer
def getPixelDepth(x,y):
z = BGL.Buffer(BGL.GL_FLOAT, [1])
glReadPixels (x,y, 1, 1,
GL_DEPTH_COMPONENT, GL_FLOAT, z);
print "value from depth buffer is",z
return z[0]
#screen_x and screen_y are from Window.GetMouseCoords()
#screen_z is from a call to getPixelDepth(screen_x,screen_y)
def transSC2WC(screen_x,screen_y,screen_z):
found = 0;
#clip taken from letter rips code
for win3d in Window.GetScreenInfo(Window.Types.VIEW3D):
# we search all 3dwins for the one containing the point
#(screen_x, screen_y) (could be the mousecoords for example)
win_min_x, win_min_y, win_max_x, win_max_y = win3d['vertices']
# calculate a few geometric extents for this window
mid_x = (win_max_x + win_min_x)/2.0
mid_y = (win_max_y + win_min_y)/2.0
width = (win_max_x - win_min_x + 1.0)
height = (win_max_y - win_min_y + 1.0)
# check if screencoords (screen_x, screen_y) are within the 3dwin
if (win_max_x > screen_x > win_min_x) and ( win_max_y > screen_y > win_min_y):
found = 1
break
if(not found):
print "Not Found!"
return 0, 0, 0
coords = Vector( 2* ( screen_x - mid_x)/ width,
2*(screen_y - mid_y)/height,
2*screen_z - 1,
1.0)
persp = Window.GetPerspMatrix()
invpersp = inverseMatrix(persp)
newcoords = coords*invpersp
newcoords = dehom(newcoords)
return newcoords
__________________
Blog |
|
|
|
|
|
#49 |
|
12 meses, 12 pagas
Fecha de Ingreso: julio-2005
Ubicación: Bajo el sol monegrino
Mensajes: 5,017
|
Vale, a partir de eso yo he hecho esto, que pone un objeto vacío al pinchar. Para que funcione hay que activar Enable Script Links, y en la ventana 3D>View>Space Handler Scripts>nombre_del_texto
Código:
# SPACEHANDLER.VIEW3D.EVENT
import Blender
from Blender import *
from Blender.Window import *
evt = Blender.event
def transSC2WC(screen_x,screen_y):
found = 0;
#clip taken from letter rips code
for win3d in GetScreenInfo(Types.VIEW3D):
win_min_x, win_min_y, win_max_x, win_max_y = win3d['vertices']
mid_x = (win_max_x + win_min_x)/2.0
mid_y = (win_max_y + win_min_y)/2.0
width = (win_max_x - win_min_x + 1.0)
height = (win_max_y - win_min_y + 1.0)
# check if screencoords (screen_x, screen_y) are within the 3dwin
if (win_max_x > screen_x > win_min_x) and ( win_max_y > screen_y > win_min_y):
found = 1
break
if(not found):
return 0, 0, 0
coords = Mathutils.Vector( 2* ( screen_x - mid_x)/ width,
2*(screen_y - mid_y)/height,
.0,
1.0)
persp = GetPerspMatrix().invert()
co = coords*persp
co = Mathutils.Vector(co[0]/co[3],co[1]/co[3],co[2]/co[3])
return co
if evt == Draw.LEFTMOUSE:
mc=GetMouseCoords()
o=Object.New('Empty')
o.setLocation(transSC2WC(mc[0],mc[1]))
Scene.GetCurrent().link(o)
Redraw()
__________________
Y sus discípulos le preguntaron, diciendo: ¿Qué significa esta parábola? Y él dijo: A vosotros os es dado conocer los misterios del reino de Dios; pero a los otros por parábolas, para que viendo no vean, y oyendo no entiendan. Mateo 8, 9-10 |
|
|
|
|
|
#50 |
|
Environment Artist
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 850
|
Otia Klopes!!!
Magnifico!! Lo de 3D>View>Space Handler Scripts>nombre_del_texto no lo sabia!!! Con eso activas el spacehandler no? Muchas gracias Klopes!!
__________________
Blog |
|
|
|
|
|
#51 |
|
Administrador
Fecha de Ingreso: abril-2002
Ubicación: 28.10º N 15.43º W in a blue planet.
Mensajes: 17,106
|
No se 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 que 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 |
|
|
|
|
|
#52 |
|
El Programador
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 687
|
Perdona por mi ignorancia en estos temas, pero ese resultado no se obtendria igualmente aplicando un extrude sobre todo el objeto y luego un subsurf???
|
|
|
|
|
|
#53 | |
|
12 meses, 12 pagas
Fecha de Ingreso: julio-2005
Ubicación: Bajo el sol monegrino
Mensajes: 5,017
|
Cita:
Estoy buscando cómo detectar que estás pinchando sobre un objeto.
__________________
Y sus discípulos le preguntaron, diciendo: ¿Qué significa esta parábola? Y él dijo: A vosotros os es dado conocer los misterios del reino de Dios; pero a los otros por parábolas, para que viendo no vean, y oyendo no entiendan. Mateo 8, 9-10 |
|
|
|
|
|
|
#54 |
|
El Programador
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 687
|
Dios Python y blender me parecen un misterio para mi xD, bueno tampoco lo he mirado, pero ahi esta el señor klopes para enseñarnos.
|
|
|
|
|
|
#55 |
|
12 meses, 12 pagas
Fecha de Ingreso: julio-2005
Ubicación: Bajo el sol monegrino
Mensajes: 5,017
|
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...
__________________
Y sus discípulos le preguntaron, diciendo: ¿Qué significa esta parábola? Y él dijo: A vosotros os es dado conocer los misterios del reino de Dios; pero a los otros por parábolas, para que viendo no vean, y oyendo no entiendan. Mateo 8, 9-10 |
|
|
|
|
|
#56 |
|
Environment Artist
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 850
|
Si eso tambien lo estuve pensando....
El tema es pillar la normal de la cara en la que esta enciam el mouse para pillar la orientacion del objecto no?
__________________
Blog |
|
|
|
|
|
#57 | |
|
BlenderAdicto
Fecha de Ingreso: diciembre-2004
Ubicación: Valencia-España
Mensajes: 10,310
|
Cita:
No sé si viene con la versión oficial, yo lo tengo desde hace bastante tiempo. |
|
|
|
|
|
|
#58 |
|
·
Fecha de Ingreso: junio-2005
Mensajes: 1,254
|
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" [SIGPIC]
|
|
|
|
|
|
#59 | |
|
Administrador
Fecha de Ingreso: abril-2002
Ubicación: 28.10º N 15.43º W in a blue planet.
Mensajes: 17,106
|
Cita:
Thx
__________________
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 |
|
|
|
|
|
|
#60 |
|
Environment Artist
Fecha de Ingreso: febrero-2004
Ubicación: Barcelona
Mensajes: 850
|
Alguien sabe si hay alguna manera de saber la relación entre la coordenada del mouse y la coordenada del vértice mas cerca en una geometría?
Un poco rebuscado vamos
__________________
Blog |
|
|
|
![]() |
| Etiquetas Identificativas |
| blender, para, script, sugerencias |
| Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes) | |
| Herramientas | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Granja de PCs para renders en max | 3dpoder | 3DStudio Max | 14 | 20 ago 2008 07:40 |
| Hair strand (Pelo en Blender) COMPLETADO | 3dpoder | Blender | 3 | 22 dic 2007 12:28 |
| Problemas con el script para el " Heredar Ángulo de giro de la pierna" en Max 6 | Buen Rollal | Script | 0 | 08 ene 2007 16:34 |
| Blender Game Engine --Andando--como mover el actor | 3dpoder | Blender | 0 | 18 sep 2005 04:43 |
| Tracking automático con BOUJOU | 3dpoder | 3DStudio Max | 1 | 23 abr 2005 17:15 |
|
|