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

Preguntas y respuestas generales a cerca de Blender 3D
Maveryck85
Mensajes: 1
Registrado: Jue May 19, 2005 9:30 am
Nombre:
Contactar:

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

Mensaje por Maveryck85 » Jue May 19, 2005 9:37 am

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.

sliker
Mensajes: 297
Registrado: Mar Ene 18, 2005 1:56 am
Nombre:
Contactar:

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

Mensaje por sliker » Vie May 20, 2005 2:25 am

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?
:-(
--
BlenderEs
Linux... Te libera!

hernantsa
Mensajes: 19
Registrado: Jue Ene 13, 2005 9:12 am
Nombre:

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

Mensaje por hernantsa » Mié May 25, 2005 12:11 pm

hola entro al enlace y me bota a star over alli encuentro el tutorial por lo que veo es muy bueno
Imagen

sliker
Mensajes: 297
Registrado: Mar Ene 18, 2005 1:56 am
Nombre:
Contactar:

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

Mensaje por sliker » Mié May 25, 2005 2:55 pm

Hola,
tambiém lo encuentras aquí
:-D
--
BlenderEs
Linux... Te libera!

silo
Mensajes: 6
Registrado: Dom Jun 19, 2005 3:19 am
Nombre:

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

Mensaje por silo » Vie Jul 15, 2005 1:57 pm

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

sliker
Mensajes: 297
Registrado: Mar Ene 18, 2005 1:56 am
Nombre:
Contactar:

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

Mensaje por sliker » Vie Jul 15, 2005 2:33 pm

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.
--
BlenderEs
Linux... Te libera!

silo
Mensajes: 6
Registrado: Dom Jun 19, 2005 3:19 am
Nombre:

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

Mensaje por silo » Dom Jul 17, 2005 12:52 pm

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.

sliker
Mensajes: 297
Registrado: Mar Ene 18, 2005 1:56 am
Nombre:
Contactar:

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

Mensaje por sliker » Lun Jul 18, 2005 4:11 pm

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
--
BlenderEs
Linux... Te libera!

silo
Mensajes: 6
Registrado: Dom Jun 19, 2005 3:19 am
Nombre:

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

Mensaje por silo » Mar Jul 19, 2005 12:53 pm

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.

sliker
Mensajes: 297
Registrado: Mar Ene 18, 2005 1:56 am
Nombre:
Contactar:

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

Mensaje por sliker » Mar Jul 19, 2005 3:57 pm

Siempre es un honor servirle a la comunidad!
:6:
--
BlenderEs
Linux... Te libera!

Responder