rendered paste body#!BPY
"""
Name: 'SF Shader exporter'
Blender: 245
Group: 'Export'
Tooltip: 'Prototype for ID Properties based SF shader system'
"""
# License: Copyright Olivier Saraja (c) 2007 and GPL v2.0
import Blender
from Blender import Object, Material, Draw, BGL
## global vars ##
global FILE
FILENAME = Blender.Get('filename').replace(".blend", ".sc")
##Default values for buttons##
SHADERNAME=Draw.Create("sfdif")
SHADERTYPE=Draw.Create(1)
DIFFR=Draw.Create(1.000)
DIFFG=Draw.Create(1.000)
DIFFB=Draw.Create(1.000)
REFL=Draw.Create(1.000)
BRIGHTR=Draw.Create(1.000)
BRIGHTG=Draw.Create(1.000)
BRIGHTB=Draw.Create(1.000)
DARKR=Draw.Create(1.000)
DARKG=Draw.Create(1.000)
DARKB=Draw.Create(1.000)
SAMPLESAO=Draw.Create(100)
DIST=Draw.Create(100.0)
SPECR=Draw.Create(1.000)
SPECG=Draw.Create(1.000)
SPECB=Draw.Create(1.000)
HARD=Draw.Create(100)
SAMPLES=Draw.Create(100)
ROUGHX=Draw.Create(10.000)
ROUGHY=Draw.Create(10.000)
REFLR=Draw.Create(1.000)
REFLG=Draw.Create(1.000)
REFLB=Draw.Create(1.000)
TETA=Draw.Create(10.000)
COLR=Draw.Create(1.000)
COLG=Draw.Create(1.000)
COLB=Draw.Create(1.000)
ABSORPTIONDIST=Draw.Create(100.0)
ABSCOLR=Draw.Create(1.000)
ABSCOLG=Draw.Create(1.000)
ABSCOLB=Draw.Create(1.000)
##Buttons Events##
EV_SHADERNAME=1
EV_SHADERTYPE=2
EV_DIFFR=3
EV_DIFFG=4
EV_DIFFB=5
EV_REFL=6
EV_BRIGHTR=7
EV_BRIGHTG=8
EV_BRIGHTB=9
EV_DARKR=10
EV_DARKG=11
EV_DARKB=12
EV_SAMPLESAO=13
EV_DIST=14
EV_SPECR=15
EV_SPECG=16
EV_SPECB=17
EV_HARD=18
EV_SAMPLES=19
EV_ROUGHX=20
EV_ROUGHY=21
EV_REFLR=22
EV_REFLG=23
EV_REFLB=24
EV_COLR=25
EV_COLG=26
EV_COLB=27
EV_TETA=28
EV_ABSORPTIONDIST=29
EV_ABSCOLR=30
EV_ABSCOLG=31
EV_ABSCOLB=32
EV_SAVEID=33
#EV_SHADREDRAW=34
EV_EXPSHAD=35
EV_SELLIST=36
EV_SELSEL=37
EV_SELMAT=38
def translate_shaders():
ob=Blender.Object.GetSelected()
obj=ob[0]
material=obj.getData(mesh=1).materials
for mat in material:
if mat.name.startswith("sfdif"):
mat.properties['Type']="diffuse"
elif mat.name.startswith("sfshi"):
mat.properties['Type']="shiny"
elif mat.name.startswith("sfamb"):
mat.properties['Type']="amb-occ"
elif mat.name.startswith("sfpho"):
mat.properties['Type']="phong"
elif mat.name.startswith("sfwar"):
mat.properties['Type']="ward"
elif mat.name.startswith("sfmir"):
mat.properties['Type']="mirror"
elif mat.name.startswith("sfgla"):
mat.properties['Type']="glass"
elif mat.name.startswith("sfshi"):
mat.properties['Type']="shiny"
elif mat.name.startswith("sfcon"):
mat.properties['Type']="constant"
elif mat.name.startswith("sfsss"):
mat.properties['Type']="sss"
elif mat.name.startswith("sfube"):
mat.properties['Type']="uber"
else:
mat.properties['Type']="diffuse"
mat.properties['Shader Name']=mat.name
diff=mat.getRGBCol()
#Diffuse for Uber, Diffuse, Shiny, Phong, Ward, SSS
mat.properties['Diff R']=diff[0]
mat.properties['Diff G']=diff[1]
mat.properties['Diff B']=diff[2]
#Color for Constant, Glass
mat.properties['Col R']=diff[0]
mat.properties['Col G']=diff[1]
mat.properties['Col B']=diff[2]
#Bright for AMb-Occ
mat.properties['Bright R']=diff[0]
mat.properties['Bright G']=diff[1]
mat.properties['Bright B']=diff[2]
speccol=mat.getSpecCol()
#Spec for Phong, Ward
mat.properties['Spec R']=speccol[0]
mat.properties['Spec G']=speccol[1]
mat.properties['Spec B']=speccol[2]
#Specular for SSS
mat.properties['Specular R']=speccol[0]
mat.properties['Specular G']=speccol[1]
mat.properties['Specular B']=speccol[2]
#absorption.color for Glass
mat.properties['Absorption Color R']=speccol[0]
mat.properties['Absorption Color G']=speccol[1]
mat.properties['Absorption Color B']=speccol[2]
#Dark for Amb-Occ
mat.properties['Dark R']=speccol[0]
mat.properties['Dark G']=speccol[1]
mat.properties['Dark B']=speccol[2]
textures=mat.getTextures()
reflShiny=mat.getRayMirr()
#Refl for Shiny
mat.properties['Refl Shiny']=reflShiny
hardPhong=mat.hard
#hard for Phong
mat.properties['Hard']=hardPhong
refMirror=mat.getRGBCol()
#Refl for Mirror
mat.properties['Refl R']=diff[0]
mat.properties['Refl G']=diff[1]
mat.properties['Refl B']=diff[2]
teta=mat.getIOR()
#teta for Glass
mat.properties['Teta']=teta
#Samples for Amb-Occ
mat.properties['Samples AO']=32
#Dist for Amb-Occ
mat.properties['Dist']=3.0
#Rough for Ward
mat.properties['Rough X']=0.2
mat.properties['Rough Y']=0.01
#Samples for Phong, Ward
mat.properties['Samples']=4
#Absorption Distance for Glass, SSS
mat.properties['Absorption Distance']=5.0
#Absoprtion Power for SSS
mat.properties['Absorption Power']=1.0
#sssRays for SSS
mat.properties['SSS Rays']=4
#Phong Rays for SSS
mat.properties['Phong Rays']=6
#thickness for SSS
mat.properties['thickness']=0.125
def export_shaders(filename):
FILE=open(filename,"w")
ob=Blender.Object.GetSelected()
obj=ob[0]
material=obj.getData(mesh=1).materials
for mat in material:
print " o exporting diffuse shader "+mat.name+"..."
FILE.write("\n\nshader {\n")
FILE.write("\tname \""+mat.name+".shader\"\n")
FILE.write("\ttype %s \n" % (mat.properties['Type']))
if mat.properties['Type']=="diffuse":
FILE.write("\tdiff { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" % (mat.properties['Diff R'], mat.properties['Diff G'], mat.properties['Diff B']))
elif mat.properties['Type']=="shiny":
FILE.write("\tdiff { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" % (mat.properties['Diff R'], mat.properties['Diff G'], mat.properties['Diff B']))
FILE.write("\trefl %.2f\n" % mat.properties['Refl Shiny'])
elif mat.properties['Type']=="amb-occ":
FILE.write("\tbright %.3f %.3f %.3f\n" % (mat.properties['Bright R'], mat.properties['Bright G'], mat.properties['Bright B']))
FILE.write("\tdark %.3f %.3f %.3f\n" % (mat.properties['Dark R'], mat.properties['Dark G'], mat.properties['Dark B']))
FILE.write("\tsamples %i \n" % mat.properties['Samples AO'])
FILE.write("\tdist %i \n" % mat.properties['Dist'])
elif mat.properties['Type']=="phong":
FILE.write("\tdiff { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" % (mat.properties['Diff R'], mat.properties['Diff G'], mat.properties['Diff B']))
FILE.write("\tspec { \"sRGB nonlinear\" %.3f %.3f %.3f } %i\n" %(mat.properties['Spec R'], mat.properties['Spec G'], mat.properties['Spec B'], mat.properties['Hard']))
FILE.write("\tsamples %i\n" % mat.properties['Samples'])
elif mat.properties['Type']=="ward":
FILE.write("\tdiff { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" % (mat.properties['Diff R'], mat.properties['Diff G'], mat.properties['Diff B']))
FILE.write("\tspec { \"sRGB nonlinear\" %.3f %.3f %.3f } \n" %(mat.properties['Spec R'], mat.properties['Spec G'], mat.properties['Spec B']))
FILE.write("\trough %.3f %.3f1\n" % (mat.properties['Rough X'],mat.properties['Rough Y']))
FILE.write("\tsamples %i\n" % mat.properties['Samples'])
elif mat.properties['Type']=="mirror":
FILE.write("\trefl { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" %(mat.properties['Refl R'], mat.properties['Refl G'], mat.properties['Refl B']))
elif mat.properties['Type']=="glass":
FILE.write("\teta %.3f \n" % mat.properties['Teta'])
FILE.write("\tcolor { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" %(mat.properties['Col R'],mat.properties['Col G'],mat.properties['Col B']))
FILE.write("\tabsorbtion.distance %.3f \n" % mat.properties['Absorption Distance'])
FILE.write("\tabsorbtion.color { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" %(mat.properties['Absorption Color R'], mat.properties['Absorption Color G'], mat.properties['Absorption Color B']))
elif mat.properties['Type']=="constant":
FILE.write("\tcolor { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" %(mat.properties['Col R'],mat.properties['Col G'],mat.properties['Col B']))
#elif mat.properties['Type']="sss":
# ...
#elif mat.properties['Type']="uber":
# ...
else:
FILE.write("\tdiff { \"sRGB nonlinear\" %.3f %.3f %.3f }\n" % (mat.properties['Diff R'], mat.properties['Diff G'], mat.properties['Diff B']))
FILE.write("\t}")
FILE.close
return()
def checkID():
if id_exists == 1:
print "ID properties already exist, go to editing..."
drawGUI()
elif id_exists ==0:
print "ID properties don't exist, automatically generate defaults..."
translate_shaders()
drawGUI()
def initGUI():
SHADERNAME.val=mat.properties['Shader Name']
if mat.properties['Type']=="diffuse":
SHADERTYPE.val=1
elif mat.properties['Type']=="shiny":
SHADERTYPE.val=2
elif mat.properties['Type']=="amb-occ":
SHADERTYPE.val=3
elif mat.properties['Type']=="phong":
SHADERTYPE.val=4
elif mat.properties['Type']=="ward":
SHADERTYPE.val=5
elif mat.properties['Type']=="mirror":
SHADERTYPE.val=6
elif mat.properties['Type']=="glass":
SHADERTYPE.val=7
elif mat.properties['Type']=="constant":
SHADERTYPE.val=8
else:
SHADERTYPE.val=1
print SHADERTYPE.val
DIFFR.val=mat.properties['Diff R']
DIFFG.val=mat.properties['Diff G']
DIFFB.val=mat.properties['Diff B']
REFL.val=mat.properties['Refl Shiny']
BRIGHTR.val=mat.properties['Bright R']
BRIGHTG.val=mat.properties['Bright G']
BRIGHTB.val=mat.properties['Bright B']
DARKR.val=mat.properties['Dark R']
DARKG.val=mat.properties['Dark G']
DARKB.val=mat.properties['Dark B']
SAMPLESAO.val=mat.properties['Samples AO']
DIST.val=mat.properties['Dist']
SPECR.val=mat.properties['Spec R']
SPECG.val=mat.properties['Spec G']
SPECB.val=mat.properties['Spec B']
HARD.val=mat.properties['Hard']
SAMPLES.val=mat.properties['Samples']
ROUGHX.val=mat.properties['Rough X']
ROUGHY.val=mat.properties['Rough Y']
REFLR.val=mat.properties['Refl R']
REFLG.val=mat.properties['Refl G']
REFLB.val=mat.properties['Refl B']
TETA.val=mat.properties['Teta']
COLR.val=mat.properties['Col R']
COLG.val=mat.properties['Col G']
COLB.val=mat.properties['Col B']
ABSORPTIONDIST.val=mat.properties['Absorption Distance']
ABSCOLR.val=mat.properties['Absorption Color R']
ABSCOLG.val=mat.properties['Absorption Color G']
ABSCOLB.val=mat.properties['Absorption Color B']
def saveID():
mat.properties['Shader Name']=SHADERNAME.val
if SHADERTYPE.val==1:
mat.properties['Type']="diffuse"
elif SHADERTYPE.val==2:
mat.properties['Type']="shiny"
elif SHADERTYPE.val==3:
mat.properties['Type']="amb-occ"
elif SHADERTYPE.val==4:
mat.properties['Type']="phong"
elif SHADERTYPE.val==5:
mat.properties['Type']="ward"
elif SHADERTYPE.val==6:
mat.properties['Type']="mirror"
elif SHADERTYPE.val==7:
mat.properties['Type']="glass"
elif SHADERTYPE.val==8:
mat.properties['Type']="constant"
else:
mat.properties['Type']="diffuse"
mat.properties['Diff R']=DIFFR.val
mat.properties['Diff G']=DIFFG.val
mat.properties['Diff B']=DIFFB.val
mat.properties['Refl Shiny']=REFL.val
mat.properties['Bright R']=BRIGHTR.val
mat.properties['Bright G']=BRIGHTG.val
mat.properties['Bright B']=BRIGHTB.val
mat.properties['Dark R']=DARKR.val
mat.properties['Dark G']=DARKG.val
mat.properties['Dark B']=DARKB.val
mat.properties['Samples AO']=SAMPLESAO.val
mat.properties['Dist']=DIST.val
mat.properties['Spec R']=SPECR.val
mat.properties['Spec G']=SPECG.val
mat.properties['Spec B']=SPECB.val
mat.properties['Hard']=HARD.val
mat.properties['Samples']=SAMPLES.val
mat.properties['Rough X']=ROUGHX.val
mat.properties['Rough Y']=ROUGHY.val
mat.properties['Refl R']=REFLR.val
mat.properties['Refl G']=REFLG.val
mat.properties['Refl B']=REFLB.val
mat.properties['Teta']=TETA.val
mat.properties['Col R']=COLR.val
mat.properties['Col G']=COLG.val
mat.properties['Col B']=COLB.val
mat.properties['Absorption Distance']=ABSORPTIONDIST.val
mat.properties['Absorption Color R']=ABSCOLR.val
mat.properties['Absorption Color G']=ABSCOLG.val
mat.properties['Absorption Color B']=ABSCOLB.val
#def draw_main():
# col=10; line=570;BGL.glRasterPos2i(col, line); SELLIST=Draw.PushButton("Edit from list", EV_SELLIST,col,line,110,65,"Select object to edit in a list")
# col=135; line=570;BGL.glRasterPos2i(col, line); SELSEL=Draw.PushButton("Edit from selected", EV_SELSEL,col,line,110,65,"Edit selected object")
# col=260; line=570;BGL.glRasterPos2i(col, line); SELMAT=Draw.PushButton("Edit from materials", EV_SELMAT,col,line,110,65,"Select shader to edit in a list")
def drawGUI():
global SHADERNAME, SHADERTYPE, DIFFR, DIFFG, DIFFB, REFL, BRIGHTR, BRIGHTG, BRIGHTB, DARKR, DARKG, DARKB, SAMPLESAO, DIST, SPECR, SPECG, SPECB, HARD, SAMPLES
global ROUGHX, ROUGHY, REFLR, REFLG, REFLB, COLR, COLG,COLB, TETA, ABSORPTIONDIST, ABSCOLR, ABSCOLG, ABSCOLB
# draw_main()
col=10; line=450;BGL.glRasterPos2i(col, line); SHADERNAME=Draw.String("Shader's name: ", EV_SHADERNAME, col, line, 200, 25, SHADERNAME.val,80, "Name of the shader")
col=10; line=410;BGL.glRasterPos2i(col, line); SHADERTYPE=Draw.Menu("%tShader type|diffuse|shiny|amb-occ|phong|ward|mirror|glass|constant",EV_SHADERTYPE, col, line, 100, 25, SHADERTYPE.val)
# col=125; line=410;BGL.glRasterPos2i(col, line); SHADREDRAW=Draw.PushButton("Redraw", EV_SHADREDRAW,col,line,150,25,"Redraw GUI after shader type change")
col=10; line=330;BGL.glRasterPos2i(col, line); SAVEID=Draw.PushButton("Save changes", EV_SAVEID,col,line,100,65,"Save ID Properties to Material")
col=10; line=250;BGL.glRasterPos2i(col, line); EXPSHAD=Draw.PushButton("Export all shaders", EV_EXPSHAD,col,line,100,65,"Export shaders to .sc file")
if mat.properties['Type']=="diffuse":
col=125;line=410;BGL.glRasterPos2i(col, line); DIFFR=Draw.Slider("Diff R: ", EV_DIFFR, col,line, 150, 25, DIFFR.val, 0.000, 1.000, 1, "Diffuse color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); DIFFG=Draw.Slider("Diff G: ", EV_DIFFG, col,line, 150, 25, DIFFG.val, 0.000, 1.000, 1, "Diffuse color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); DIFFB=Draw.Slider("Diff B: ", EV_DIFFB, col,line, 150, 25, DIFFB.val, 0.000, 1.000, 1, "Diffuse color component B")
elif mat.properties['Type']=="shiny":
col=125;line=410;BGL.glRasterPos2i(col, line); DIFFR=Draw.Slider("Diff R: ", EV_DIFFR, col,line, 150, 25, DIFFR.val, 0.000, 1.000, 1, "Diffuse color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); DIFFG=Draw.Slider("Diff G: ", EV_DIFFG, col,line, 150, 25, DIFFG.val, 0.000, 1.000, 1, "Diffuse color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); DIFFB=Draw.Slider("Diff B: ", EV_DIFFB, col,line, 150, 25, DIFFB.val, 0.000, 1.000, 1, "Diffuse color component B")
col=125;line=370;BGL.glRasterPos2i(col, line); REFL=Draw.Number("Refl: ", EV_REFL, col,line, 150, 25, REFL.val, 0.000, 1.000, "Reflection value")
elif mat.properties['Type']=="amb-occ":
col=125;line=410;BGL.glRasterPos2i(col, line); BRIGHTR=Draw.Slider("Bright R: ", EV_BRIGHTR, col,line, 150, 25, BRIGHTR.val, 0.000, 1.000, 1, "Brightness color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); BRIGHTG=Draw.Slider("Bright G: ", EV_BRIGHTG, col,line, 150, 25, BRIGHTG.val, 0.000, 1.000, 1, "Brightness color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); BRIGHTB=Draw.Slider("Bright B: ", EV_BRIGHTB, col,line, 150, 25, BRIGHTB.val, 0.000, 1.000, 1, "Brightness color component B")
col=125;line=370;BGL.glRasterPos2i(col, line); DARKR=Draw.Slider("Dark R: ", EV_DARKR, col,line, 150, 25, DARKR.val, 0.000, 1.000, 1, "Darkness color component R")
col=290;line=370;BGL.glRasterPos2i(col, line); DARKG=Draw.Slider("Dark G: ", EV_DARKG, col,line, 150, 25, DARKG.val, 0.000, 1.000, 1, "Darkness color component G")
col=455;line=370;BGL.glRasterPos2i(col, line); DARKB=Draw.Slider("Dark B: ", EV_DARKB, col,line, 150, 25, DARKB.val, 0.000, 1.000, 1, "Darkness color component B")
col=125;line=330;BGL.glRasterPos2i(col, line); SAMPLESAO=Draw.Number("Samples AO: ", EV_SAMPLESAO, col,line, 150, 25, SAMPLESAO.val, 0.000, 1.000, "Ambiant Occlusion Samples")
col=290;line=330;BGL.glRasterPos2i(col, line); DIST=Draw.Number("Dist: ", EV_DIST, col,line, 150, 25, DIST.val, 0.000, 1.000, "Ambiant Occlusion Distance")
elif mat.properties['Type']=="phong":
col=125;line=410;BGL.glRasterPos2i(col, line); DIFFR=Draw.Slider("Diff R: ", EV_DIFFR, col,line, 150, 25, DIFFR.val, 0.000, 1.000, 1, "Diffuse color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); DIFFG=Draw.Slider("Diff G: ", EV_DIFFG, col,line, 150, 25, DIFFG.val, 0.000, 1.000, 1, "Diffuse color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); DIFFB=Draw.Slider("Diff B: ", EV_DIFFB, col,line, 150, 25, DIFFB.val, 0.000, 1.000, 1, "Diffuse color component B")
col=125;line=370;BGL.glRasterPos2i(col, line); SPECR=Draw.Slider("Spec R: ", EV_SPECR, col,line, 150, 25, SPECR.val, 0.000, 1.000, 1, "Specular color component R")
col=290;line=370;BGL.glRasterPos2i(col, line); SPECG=Draw.Slider("Spec G: ", EV_SPECG, col,line, 150, 25, SPECG.val, 0.000, 1.000, 1, "Specular color component G")
col=455;line=370;BGL.glRasterPos2i(col, line); SPECB=Draw.Slider("Spec B: ", EV_SPECB, col,line, 150, 25, SPECB.val, 0.000, 1.000, 1, "Specular color component B")
col=125;line=330;BGL.glRasterPos2i(col, line); HARD=Draw.Number("Hard: ", EV_HARD, col,line, 150, 25, HARD.val, 0.000, 1.000, "Hardness of the specular")
col=125;line=270;BGL.glRasterPos2i(col, line); SAMPLES=Draw.Number("Samples: ", EV_SAMPLES, col,line, 150, 25, SAMPLES.val, 0.000, 1.000, "Samples of the specular")
elif mat.properties['Type']=="ward":
col=125;line=410;BGL.glRasterPos2i(col, line); DIFFR=Draw.Slider("Diff R: ", EV_DIFFR, col,line, 150, 25, DIFFR.val, 0.000, 1.000, 1, "Diffuse color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); DIFFG=Draw.Slider("Diff G: ", EV_DIFFG, col,line, 150, 25, DIFFG.val, 0.000, 1.000, 1, "Diffuse color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); DIFFB=Draw.Slider("Diff B: ", EV_DIFFB, col,line, 150, 25, DIFFB.val, 0.000, 1.000, 1, "Diffuse color component B")
col=125;line=370;BGL.glRasterPos2i(col, line); SPECR=Draw.Slider("Spec R: ", EV_SPECR, col,line, 150, 25, SPECR.val, 0.000, 1.000, 1, "Specular color component R")
col=290;line=370;BGL.glRasterPos2i(col, line); SPECG=Draw.Slider("Spec G: ", EV_SPECG, col,line, 150, 25, SPECG.val, 0.000, 1.000, 1, "Specular color component G")
col=455;line=370;BGL.glRasterPos2i(col, line); SPECB=Draw.Slider("Spec B: ", EV_SPECB, col,line, 150, 25, SPECB.val, 0.000, 1.000, 1, "Specular color component B")
col=125;line=330;BGL.glRasterPos2i(col, line); ROUGHX=Draw.Number("Rough X: ", EV_ROUGHX, col,line, 150, 25, ROUGHX.val, 0.000, 1.000, "Roughness in the X direction")
col=290;line=330;BGL.glRasterPos2i(col, line); ROUGHY=Draw.Number("Rough Y: ", EV_ROUGHY, col,line, 150, 25, ROUGHY.val, 0.000, 1.000, "Roughness in the Y direction")
col=125;line=290;BGL.glRasterPos2i(col, line); SAMPLES=Draw.Number("Samples: ", EV_SAMPLES, col,line, 150, 25, SAMPLES.val, 0.000, 1.000, "Samples")
elif mat.properties['Type']=="mirror":
col=125;line=410;BGL.glRasterPos2i(col, line); REFLR=Draw.Slider("Refl R: ", EV_REFLR, col,line, 150, 25, REFLR.val, 0.000, 1.000, 1, "Reflection color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); REFLG=Draw.Slider("Refl G: ", EV_REFLG, col,line, 150, 25, REFLG.val, 0.000, 1.000, 1, "Reflection color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); REFLB=Draw.Slider("Refl B: ", EV_REFLB, col,line, 150, 25, REFLB.val, 0.000, 1.000, 1, "Reflection color component B")
elif mat.properties['Type']=="glass":
col=125;line=410;BGL.glRasterPos2i(col, line); COLR=Draw.Slider("Col R: ", EV_COLR, col,line, 150, 25, COLR.val, 0.000, 1.000, 1, "Color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); COLG=Draw.Slider("Col G: ", EV_COLG, col,line, 150, 25, COLG.val, 0.000, 1.000, 1, "Color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); COLB=Draw.Slider("Col B: ", EV_COLB, col,line, 150, 25, COLB.val, 0.000, 1.000, 1, "Color component B")
col=125;line=370;BGL.glRasterPos2i(col, line); TETA=Draw.Number("Teta: ", EV_TETA, col,line, 150, 25, TETA.val, 0.000, 1.000, "Index of refraction")
col=125;line=330;BGL.glRasterPos2i(col, line); ABSORPTIONDIST=Draw.Number("Absorption Distance: ", EV_ABSORPTIONDIST, col,line, 150, 25, ABSORPTIONDIST.val, 0.000, 1.000, "Absorption distance of light")
col=125;line=290;BGL.glRasterPos2i(col, line); ABSCOLR=Draw.Slider("Absorption Color R: ", EV_ABSCOLR, col,line, 150, 25, ABSCOLR.val, 0.000, 1.000, 1, "Absorption Color component R")
col=290;line=290;BGL.glRasterPos2i(col, line); ABSCOLG=Draw.Slider("Absorption Color G: ", EV_ABSCOLG, col,line, 150, 25, ABSCOLG.val, 0.000, 1.000, 1, "Absorption Color component G")
col=455;line=290;BGL.glRasterPos2i(col, line); ABSCOLB=Draw.Slider("Absorption Color B: ", EV_ABSCOLB, col,line, 150, 25, ABSCOLB.val, 0.000, 1.000, 1, "Absorption Color component B")
elif mat.properties['Type']=="constant":
col=125;line=410;BGL.glRasterPos2i(col, line); COLR=Draw.Slider("Col R: ", EV_COLR, col,line, 150, 25, COLR.val, 0.000, 1.000, 1, "Color component R")
col=290;line=410;BGL.glRasterPos2i(col, line); COLG=Draw.Slider("Col G: ", EV_COLG, col,line, 150, 25, COLG.val, 0.000, 1.000, 1, "Color component G")
col=455;line=410;BGL.glRasterPos2i(col, line); COLB=Draw.Slider("Col B: ", EV_COLB, col,line, 150, 25, COLB.val, 0.000, 1.000, 1, "Color component B")
ob=Blender.Object.GetSelected()
print "Selected Objects:"
i=0
for o in ob:
i=i+1
if ob==[] or i==0:
col=10; line=450;BGL.glRasterPos2i(col, line); Draw.Text("Warning: no object selected!","small")
else:
obj=ob[0]
col=10; line=450;BGL.glRasterPos2i(col, line); Draw.Text("There are %i object(s) selected" % i,"small")
col=10; line=410;BGL.glRasterPos2i(col, line); Draw.Text("Active object is: %s" % obj.name,"small")
matlist=obj.getData(mesh=1).materials
if matlist==[]:
col=10; line=370;BGL.glRasterPos2i(col, line); Draw.Text("No material for: %s. Please add one before!" % obj.name,"small")
else:
mat=matlist[0]
try:
print mat.properties['Shader Name']
id_exists=1
col=10; line=370;BGL.glRasterPos2i(col, line); Draw.Text("Material exists, and ID Properties are already set","small")
except KeyError:
id_exists=0
col=10; line=370;BGL.glRasterPos2i(col, line); Draw.Text("Material exists, but no ID Properties are set","small")
initGUI()
checkID()
drawGUI()
def event(evt, val):
if evt == Draw.ESCKEY:
print "quitting exporter..."
Draw.Exit()
def buttonEvent(evt):
if evt == EV_SAVEID:
saveID()
if evt == EV_SHADERTYPE:
saveID()
Blender.Redraw()
if evt == EV_EXPSHAD:
export_shaders("test.sc")
if evt == EV_SELSEL:
sel_objects()
Draw.Register(drawGUI,event,buttonEvent)