Página 2 de 2

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Jue May 19, 2005 9:37 am
por Maveryck85
Hola! Soy nuevo en el foro y me agradaria aprender sobre Blender. Soy de Cd. Mante, Tamaulipas. :)

No tengo mucha experiencia, solo un poco de Poser 3D.

Decidi responder aqui por que mi problema viene a esto: los scripts.

Segun parece, el programa no agarra acciones como Add, Open, etc (la mayoria de la barra de herramientas).

Por el momento no me encuentro en mi casa, por lo que cualquier ayuda (ademas del tutorial scripts) me seria de gran utilidad. Muchas Gracias de ante mano.

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Vie May 20, 2005 2:25 am
por sliker
Ese add es el que aparece cuando pulsas la barra espaciadora? de ser así es algo raro. Qué versión corres y vajo que sistema operativo?
:-(

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Mié May 25, 2005 12:11 pm
por hernantsa
hola entro al enlace y me bota a star over alli encuentro el tutorial por lo que veo es muy bueno

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Mié May 25, 2005 2:55 pm
por sliker
Hola,
tambiém lo encuentras aquí
:-D

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Vie Jul 15, 2005 1:57 pm
por silo
Hola Sliker.
Siguiendo el desarrollo sobre tema del script MHsssbeta04.py, deseo informarte que después de seguir las últimas recomendaciones que hacías sobre el mismo y siguiendo al pie de la letra tus instrucciones, al abrir nuevamente Blender éste no aparece en la pestaña \"Scripts Window/Materials\".

La versión de Blender que he usado es la 2.36 y la 2.37a y la versión Python 2.3

Como he visto que autorizas a publicar el código del script, lo inserto para ver si el fallo está visible:
****************************************

#inicio

#!BPY
\"\"\"
Name: \'MHsssbeta04\'
Blender: 237a
Group: \'Materials\'
Tip: \'MHSSSbeta04\'
\"\"\"

#fin


#(C)2005 Manuel Bastioni
#Thanks to Willian Padovani Germano
#Subsurface scattering beta4
#Under GPL license

print \"--------------------------------------\"

import Blender
from Blender import *
from math import *
from Blender.Draw import *
from Blender.BGL import *
from Blender import Camera
from Blender import Window

colors1= [Create(150), Create(150), Create(150)]
colors2= [Create(150), Create(150), Create(150)]
factor2 = Create(0.05)
samples= Create(20)
diffusion = Create(0.2)
factor = Create(1.5)


#Some vector-matrix functions
#############################

# returns Vector Length
def vlen(u):
return sqrt(u[0]**2 + u[1]**2 + u[2]**2)
def vdot(u, v):
return u[0]*v[0] + u[1]*v[1] + u[2]*v[2]
# returns a vector u-v
def vsub(u, v):
return [u[0]-v[0], u[1]-v[1], u[2]-v[2]]
# returns a vector u+v
def vadd(u, v):
return [u[0]+v[0], u[1]+v[1], u[2]+v[2]]

# returns a vector u*scalar
def vmul(u, s):
return [u[0]*s, u[1]*s, u[2]*s]
# returns a vector normalized
def vunit(u):
return vmul(u, 1/vlen(u))

def multmatvec4x3(m, v):
r = [0.0, 0.0, 0.0]
r[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0] + m[3][0]
r[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1] + m[3][1]
r[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2] + m[3][2]
return r

def mulmatvec3x3(m, v):
r = [0.0, 0.0, 0.0]
r[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0]
r[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1]
r[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2]
return r


#Main functions
#############################

def lightFromSource(sourceLights,objToIlluminate,fullColor,rampColor,minTollerance = 0,maxTollerance = 1,clear = 1):
vLights = {}
vNormls = {}
vCoords = {}
print \"Illumination using colors\", fullColor
if objToIlluminate.getType() == \"Mesh\":
mesh = objToIlluminate.getData()
m = objToIlluminate.getMatrix()
faces = mesh.faces
mesh.hasVertexColours(1)

if clear:
for f in faces:
for i in f.col:
i.r = 0
i.g = 0
i.b = 0

else:
print \"No obj selected for Ill\"
PupMenu(\"Error%t|No object selected\")
return

for v in mesh.verts:
vNormls[str(v)] = mulmatvec3x3(m, v.no) #local to global (no translation)
vCoords[str(v)] = multmatvec4x3(m, v.co) #local to global (tranlation too)

for sourceLight in sourceLights:

lightCoo = sourceLight.getLocation()

print \"NAME\",sourceLight.getName(), \"COOR\",lightCoo
for v in mesh.verts:
#print mesh.verts.index(v)
vCoo = vCoords[str(v)]
vNor = vNormls[str(v)]

lightVector = vunit(vsub(lightCoo,vCoo))
vertVector = vNor #The norm is already normalized

dotProd = vdot(lightVector,vertVector)
if dotProd > minTollerance and dotProd 255: vColR = 255
if vColG > 255: vColG = 255
if vColB > 255: vColB = 255
else:
vColR = int(fullColor[0]+(1-dotProd)*(rampColor[0]- fullColor[0]))
vColG = int(fullColor[1]+(1-dotProd)*(rampColor[1]- fullColor[1]))
vColB = int(fullColor[2]+(1-dotProd)*(rampColor[2]- fullColor[2]))

color = NMesh.Col(vColR,vColG,vColB,255)
vLights[str(v)] = color



for f in faces:
if len(f.col)==0:
f.col = []
for v in f.v:
f.col.append(NMesh.Col(0,0,0,0))
for v in f.v:
vIndx = f.v.index(v)
if vLights.has_key(str(v)):
f.col[vIndx].r += vLights[str(v)].r
f.col[vIndx].g += vLights[str(v)].g
f.col[vIndx].b += vLights[str(v)].b

mesh.update()


def illuminate(diffusion = 1,fullColor = [255,255,255],rampColor = [0,0,0]):
print \"START AUTOILLUMINATION\"

diffusion = 1-diffusion
time1 = sys.time()
try:
objToIll = Object.GetSelected()[0]
except:
print \"No obj selected for Ill\"
PupMenu(\"Error%t|No object selected\")
return

objects = Object.Get()
lighSources = []
for obj in objects:
if \'Lamp\' in obj.getName() or obj.getType() == \"Lamp\":
lighSources.append(obj)

lightFromSource(lighSources,objToIll,fullColor,rampColor,diffusion,1)
print \"Auto illumination time\", sys.time()-time1

def makeSSS(samples = 20, factor2=0.05, factor = 1.2):
print \"START SCATTERING\"

time1 = sys.time()
try:
object = Object.GetSelected()[0]

except:
print \"No obj selected for SSS\"
PupMenu(\"Error%t|No object selected\")
return

if object.getType() == \"Mesh\":
mesh = object.getData()
if not mesh.hasFaceUV() and not mesh.hasVertexColours():
PupMenu(\"Error%t|This mesh does not have vertex colors\")
Window.WaitCursor(0)
return

faces = mesh.faces
scatterVertsColor = []

for azz in range(len(mesh.verts)):

scatterVertsColor.append([0,0,0])
#print scatterVertsColor
for f in faces:
for v1 in f.v:
idx = f.v.index(v1)
vidx = v1.index
scatterVertsColor[vidx][0] = f.col[idx].r
scatterVertsColor[vidx][1] = f.col[idx].g
scatterVertsColor[vidx][2] = f.col[idx].b
for i in range (1,samples):
for f in faces:
Rmax=Gmax=Bmax=0
for c in f.col:
if c.r > Rmax: Rmax = c.r
if c.g > Gmax: Gmax = c.g
if c.b > Bmax: Bmax = c.b
for v1 in f.v:
idx = f.v.index(v1)
vidx = v1.index
if scatterVertsColor[vidx][0] < Rmax/factor:
scatterVertsColor[vidx][0] += int(Rmax*factor2)
if scatterVertsColor[vidx][1] < Gmax/factor:
scatterVertsColor[vidx][1] += int(Gmax*factor2)
if scatterVertsColor[vidx][2] < Bmax/factor:
scatterVertsColor[vidx][2] += int(Bmax*factor2)

for f in faces:
for v1 in f.v:
idx = f.v.index(v1)
vidx = v1.index
f.col[idx].r = scatterVertsColor[vidx][0]
f.col[idx].g = scatterVertsColor[vidx][1]
f.col[idx].b = scatterVertsColor[vidx][2]
mesh.update()
object.makeDisplayList()
time2 = sys.time()
print \"scattering time: \", time2 - time1


def saveParameters(fileName):
global colors1,colors2,samples,diffusion,factor2,factorl
dataFile = open(fileName,\"w\")
dataFile.write(str(colors1[0].val)+\"\\n\")
dataFile.write(str(colors1[1].val)+\"\\n\")
dataFile.write(str(colors1[2].val)+\"\\n\")
dataFile.write(str(colors2[0].val)+\"\\n\")
dataFile.write(str(colors2[1].val)+\"\\n\")
dataFile.write(str(colors2[2].val)+\"\\n\")
dataFile.write(str(samples.val)+\"\\n\")
dataFile.write(str(diffusion.val)+\"\\n\")
dataFile.write(str(factor.val)+\"\\n\")
dataFile.write(str(factor2.val)+\"\\n\")
dataFile.close()


def loadParameters(fileName):
global colors1,colors2,samples,diffusion,factor2,factor
dataFile = open(fileName,\"r\")
dataSSS = dataFile.readlines()
dataFile.close()
colors1[0].val=int(dataSSS[0])
colors1[1].val=int(dataSSS[1])
colors1[2].val=int(dataSSS[2])
colors2[0].val=int(dataSSS[3])
colors2[1].val=int(dataSSS[4])
colors2[2].val=int(dataSSS[5])
samples.val=int(dataSSS[6])
diffusion.val=float(dataSSS[7])
factor.val=float(dataSSS[8])
factor2.val=float(dataSSS[9])
Redraw()


def draw():
global colors1,colors2,samples,diffusion,factor2,factor

glClearColor(0.5, 0.5, 0.5, 0.0)
glClear(GL_COLOR_BUFFER_BIT)

glColor3f(float(colors1[0].val)/255,float(colors1[1].val)/255,float(colors1[2].val)/255)
glRectf(180,155,210,100)

glColor3f(float(colors2[0].val)/255,float(colors2[1].val)/255,float(colors2[2].val)/255)
glRectf(180,175,210,230)

glColor3f(1, 1, 1)
glRasterPos2i(10, 162)
Text(\"Subdermal scatter\",\'small\' )

colors1[0]= Slider(\"Rp: \", 2, 10, 140, 160, 18, colors1[0].val, 0, 255, 1)
colors1[1]= Slider(\"Gp: \", 2, 10, 120, 160, 18, colors1[1].val, 0, 255, 1)
colors1[2]= Slider(\"Bp: \", 2, 10, 100, 160, 18, colors1[2].val, 0, 255, 1)

glColor3f(1, 1, 1)
glRasterPos2i(10, 237)
Text(\"Epidermal scatter\",\'small\' )

colors2[0]= Slider(\"Rt: \", 2, 10, 215, 160, 18, colors2[0].val, 0, 255, 1)
colors2[1]= Slider(\"Gt: \", 2, 10, 195, 160, 18, colors2[1].val, 0, 255, 1)
colors2[2]= Slider(\"Bt: \", 2, 10, 175, 160, 18, colors2[2].val, 0, 255, 1)

glColor3f(1, 1, 1)
glRasterPos2i(10, 387)

Button(\"Exit\", 1, 10, 10, 40, 19)
Button(\"GO\", 3, 170, 10, 60, 60)
Button(\"Save\", 4, 50, 10, 60, 19)
Button(\"Load\", 5, 110, 10, 60, 19)

tooltip0 = \"Iteration. Hight value = increment of time calculation, better quality and more scattering\"
tooltip2 = \"Light Received\"
tooltip3 = \"Increase or decrease the scatter contrast and luminosity\"
tooltip4 = \"Density of material. Hight density, low scattering\"

samples= Number(\"Iteration: \", 2, 10, 30, 160, 20, samples.val, 10, 50,tooltip0)
diffusion= Number(\"Light Received: \", 2, 10, 50, 160, 20, diffusion.val, 0.1, 1,tooltip2)
factor2= Number(\"Scatter: \", 2, 10, 70, 110, 20, factor2.val, 0.01, 1,tooltip3)
factor= Number(\"Density: \", 2, 120, 70, 110, 20, factor.val, 0.1, 4,tooltip4)

glColor3f(1, 1, 1)
glRasterPos2i(10, 310)
Text(\"MAKEHUMAN SSS beta 4\" )

def event(evt, val):
if (evt== QKEY and not val): Exit()

def bevent(evt):
global colors1,colors2,samples,diffusion,factor2,factor
if (evt== 1): Exit()
elif (evt== 2): pass
elif (evt== 3):
Window.WaitCursor(1)
illuminate( diffusion.val,\\
[int(colors2[0].val),\\
int(colors2[1].val),\\
int(colors2[2].val)],\\
[int(colors1[0].val),\\
int(colors1[1].val),\\
int(colors1[2].val)])

makeSSS(samples.val,factor2.val, factor.val)

Window.WaitCursor(0)
elif (evt== 4):
Window.FileSelector (saveParameters, \"Save sss parameters\")
elif (evt== 5):
Window.FileSelector (loadParameters, \"Load sss parameters\")



Register(draw, event, bevent)

*******************************************

Quisiera encontrar el motivo que hace que en algunos casos no salga en la pestaña Materials.

Gracias por tu información que sin duda todos valoramos mucho.

Saludos

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Vie Jul 15, 2005 2:33 pm
por sliker
Hola,
pues para mi es un placer ayudar.
El problema está con windows, pues no actualiza la ventana de scripts, pero la solución es muy sencilla:
Una ves abres blender, cambias la ventana 3d a User preferences, el logito es una i (de la misma forma que se cambió a la ventana de scripts). Luego das clic en FilePaths, y donde dice Python, encontrarás 2 botonsitos, uno lo tienes todos, el otro no; has clic en éste (el logo es como una hojita). Y listo, el script ya se a incorporado.

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Dom Jul 17, 2005 12:52 pm
por silo
Hola de nuevo, debe haber alguna otra cosa que esté impidiendo que el scritp sea reconocido por Blender, he completado los pasos que me indicas hasta llegar a insertar el archivo y todo parece normal aceptándolo sin problemas, pero a la hora de ir a la pestaña \'Materials\' sigue sin aparecer, lo he probado en otros cambiando el \'group\' a \'Import\', \'Export\' y \'Add\' pero los resultados son idénticos en cualquiera de las pestañas.
Estoy usando win98II ¿el error podría ser causado por usar esta plataforma?
Gracias por tu ayuda.

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Lun Jul 18, 2005 4:11 pm
por sliker
Hola,
el problema no está en la plataforma, el problema está en unas líneas de código que no deben incluirse, estás líneas son:
#inicio
#fin
Borralas, y luego has lo que te dije anteriormente, y listo.
:-D

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Mar Jul 19, 2005 12:53 pm
por silo
Muchas gracias por tu paciencia y tus consejos, al final después de tantos intentos he podido insertar el script con éxito.
Lamento las molestias que te he causado.

Muchas gracias por todo.

Re: Mi primer tutorial... Incorporar un script en blender.

Publicado: Mar Jul 19, 2005 3:57 pm
por sliker
Siempre es un honor servirle a la comunidad!
:6: