From 6dca057ac5250bb78b664d2cf9270a409238ecbc Mon Sep 17 00:00:00 2001 From: Willian Padovani Germano Date: Sun, 18 Jul 2004 15:54:17 +0000 Subject: BPython: - added image.getBindCode() docstring to Image's epydoc file (thanks Satish Goda). Scripts: - Adding Apply_def.py to "Mesh" scripts menu (thanks author: Theeth); - Updating JMS's disp_paint.py (also changed its name to remove version info); - minor updates in docs and scripts. --- release/scripts/Apply_def.py | 60 +++++ release/scripts/disp_paint.py | 479 ++++++++++++++++++++++++++++++++++++++ release/scripts/disp_paint233f.py | 331 -------------------------- release/scripts/hotkeys.py | 3 + release/scripts/rvk1_torvk2.py | 4 +- 5 files changed, 544 insertions(+), 333 deletions(-) create mode 100644 release/scripts/Apply_def.py create mode 100644 release/scripts/disp_paint.py delete mode 100644 release/scripts/disp_paint233f.py (limited to 'release') diff --git a/release/scripts/Apply_def.py b/release/scripts/Apply_def.py new file mode 100644 index 00000000000..63838112f1f --- /dev/null +++ b/release/scripts/Apply_def.py @@ -0,0 +1,60 @@ +#!BPY + +""" +Name: 'Apply Deformation' +Blender: 233 +Group: 'Mesh' +Tooltip: 'Create fixed copies of deformed meshes' +""" +# $Id$ +# +# -------------------------------------------------------------------------- +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# Copyright (C) 2003: Martin Poirier, theeth@yahoo.com +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** + +import Blender + +Blender.Window.EditMode(0) + +ob_list = Blender.Object.GetSelected() +for ob in ob_list: + if ob.getType() == "Mesh": + name = ob.getName() + new_name = name + "_deformed" + num = 0 + new_mesh = Blender.NMesh.GetRawFromObject(name) + mesh = Blender.NMesh.GetRaw(new_name) + while mesh: + num += 1 + new_name = name + "_deformed." + "%03i" % num + mesh = Blender.NMesh.GetRaw(new_name) + new_ob = Blender.NMesh.PutRaw(new_mesh, new_name) + new_ob.setMatrix(ob.getMatrix()) + try: + new_ob = Blender.Object.Get(new_name) + while 1: + num += 1 + new_name = name + "_deformed." + "%03i" % num + new_ob = Blender.Object.Get(new_name) + except: + pass + new_ob.setName(new_name) + +Blender.Window.EditMode(1) diff --git a/release/scripts/disp_paint.py b/release/scripts/disp_paint.py new file mode 100644 index 00000000000..de852c2cbe2 --- /dev/null +++ b/release/scripts/disp_paint.py @@ -0,0 +1,479 @@ +#!BPY + +""" Registration info for Blender menus: <- these words are ignored +Name: 'Dispaint' +Blender: 233 +Group: 'Mesh' +Tip: 'Use vertex paint color value to modify shape displacing vertices along normal.' +""" + +# $Id$ +# +#---------------------------------------------- +# jm soler, displacement paint 03/2002 - > 05/2004: disp_paintf +# Terrain Noise added suugered by Jimmy Haze +#---------------------------------------------- +# Page officielle : +# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm +# Communiquer les problemes et erreurs sur: +# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender +#--------------------------------------------- +# ce script est proposé sous licence GPL pour etre associe +# a la distribution de Blender 2.33 +# -------------------------------------------------------------------------- +# this script is released under GPL licence +# for the Blender 2.33 scripts package +# -------------------------------------------------------------------------- +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# Copyright (C) 2003, 2004: Jean-Michel Soler +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- +# 09/07/04 : Noise functions based on a piece of script by Jimmy Haze. +#---------------------------------------------- +import Blender +from Blender import * +from Blender.Draw import * +from Blender.BGL import * +from Blender.Noise import * +from Blender.Scene import * +sc=Scene.getCurrent() + +# niveau du deplacement +ng=0.5 + +# noise default +NOISE=1 + +# profondeur des couleurs primaires rgb +maxcol=255.0*3 + +# limitation de la zone de travail sur le +# le materiau numer mat du tableau d'indices +# des materiaux. Par defaut mat =-1 ce qui signifie +# que toute la surface est traitee +mat=[] +vindex=[] +ORIName='' +NEWName='' +ERROR=0 +TextERROR='' + +E_EXIT = 1 +E_MODE = 2 +E_ORIENT = 3 +E_NSIZE = 4 +E_REPEAT = 5 +E_ACTION = 16 +E_CREATE = 17 +E_DOCMAT = 24 +E_MATVAL = [32,33,34,35,36,37,38,39,40,41,42,43,44] +E_AXESEL = 45 +E_AXESELX = 46 +E_AXESELY = 47 +E_AXESELZ = 48 + +E_NOISEME = 49 +E_NOISEH = 50 +E_NOISELAC = 51 +E_NOISEOCT = 52 +E_NOISEOFF = 53 +E_NOISEBAS = 54 +E_NOISEVAL=[E_NOISEH,E_NOISELAC,E_NOISEOCT,E_NOISEOFF,E_NOISEBAS] +E_NOISEDIM = 55 + + + +def copy_transform(ozero,Obis): + Obis.setSize(ozero.getSize()); + Obis.setEuler(ozero.getEuler()); + Obis.setLocation(ozero.getLocation()) + return Obis + +def traite_face(f): + global vindexm, ng, NOISE, NOISEDIM + global H,lacunarity,octaves,offset,basis + + if ORIENTMenu.val==1: + for z in range(len(f.v)): + c=0.0 + if vindex[f.v[z].index]!=0: + c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*ng/vindex[f.v[z].index] + else: + c=0 + + f.v[z].co[0]=f.v[z].co[0]+f.v[z].no[0]*c + f.v[z].co[1]=f.v[z].co[1]+f.v[z].no[1]*c + f.v[z].co[2]=f.v[z].co[2]+f.v[z].no[2]*c + + elif ORIENTMenu.val==2: + for z in range(len(f.v)): + c=0.0 + if vindex[f.v[z].index]!=0: + c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*ng/vindex[f.v[z].index] + else: + c=0 + for t in range(3): + if TAXEList[1][t].val==1: + f.v[z].co[t]=f.v[z].co[t]+c + + elif ORIENTMenu.val==3 and NOISE<9: + for z in range(len(f.v)): + c=0.0 + if vindex[f.v[z].index]!=0: + nx=f.v[z].co[0]/NOISEDIM + ny=f.v[z].co[1]/NOISEDIM + nz=f.v[z].co[2]/NOISEDIM + nn = ng * noise((nx,ny,nz),NOISE) + c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index] + else: + c=0 + f.v[z].co[0]=f.v[z].co[0]+f.v[z].no[0]*c + f.v[z].co[1]=f.v[z].co[1]+f.v[z].no[1]*c + f.v[z].co[2]=f.v[z].co[2]+f.v[z].no[2]*c + + elif ORIENTMenu.val==3 and NOISE==9: + for z in range(len(f.v)): + c=0.0 + if vindex[f.v[z].index]!=0: + nx=f.v[z].co[0]/NOISEDIM + ny=f.v[z].co[1]/NOISEDIM + nz=f.v[z].co[2]/NOISEDIM + nn = ng * cellNoise((nx,ny,nz)) + c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index] + else: + c=0 + f.v[z].co[0]=f.v[z].co[0]+f.v[z].no[0]*c + f.v[z].co[1]=f.v[z].co[1]+f.v[z].no[1]*c + f.v[z].co[2]=f.v[z].co[2]+f.v[z].no[2]*c + + elif ORIENTMenu.val==3 and NOISE==10: + for z in range(len(f.v)): + c=0.0 + if vindex[f.v[z].index]!=0: + nx=f.v[z].co[0]/NOISEDIM + ny=f.v[z].co[1]/NOISEDIM + nz=f.v[z].co[2]/NOISEDIM + nn = ng * heteroTerrain((nx,ny,nz),H,lacunarity,octaves,offset,basis) + c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*nn/vindex[f.v[z].index] + else: + c=0 + f.v[z].co[0]=f.v[z].co[0]+f.v[z].no[0]*c + f.v[z].co[1]=f.v[z].co[1]+f.v[z].no[1]*c + f.v[z].co[2]=f.v[z].co[2]+f.v[z].no[2]*c + + +def paint(): + global MODEMenu, vindex,ng, mat, ORIName, NEWName + global ERROR, TextERROR + + Me=Object.GetSelected() + if Me!=[]: + if Me[0].getType()=='Mesh': + + vindex=[] + ORIName=Me[0].getData().name + me=NMesh.GetRaw(Me[0].getData().name) + + try: + for m in me.verts: + vindex.append(0) + + for f in me.faces: + for v in f.v: + if MODEMenu.val!=2: + if MODEMenu.val==1: + vindex[v.index]+=1 + else: + if v.sel==1: + vindex[v.index]+=1 + else: + #print mat + if f.mat in mat: + vindex[v.index]+=1 + for f in me.faces: + if MODEMenu.val==2: + if f.mat in mat: + traite_face(f) + else: + traite_face(f) + Me[0].link(me) + Me[0].makeDisplayList() + except: + ERROR=2 + TextERROR='No color on this Object.' + +def NEWMEcreation(obj): + + if obj.getType()=='Mesh': + nomdelobjet=""; + objnumber=-1; namelist=[] + OBJ=Object.Get() + + for ozero in OBJ: + if ozero.getType()=='Mesh': + namelist.append(ozero.getData().name) + + ozero=obj + nomdelobjet=ozero.getName() + Mesh=Blender.NMesh.GetRawFromObject(nomdelobjet) + name=obj.getData().name + n=0; name2=name[:];ok=0 + + while ok==0: + for n0 in namelist: + if n0.find(name2)==0: + ok=0;name2=name[0:name.find('.')+1]+'%s'%(n+1) + else: ok=1 + n+=1 + + Mesh.name=name2 + Obis = Blender.NMesh.PutRaw(Mesh,name2) + copy_transform(ozero,Obis) + Obis.makeDisplayList() + +def DOCMat_list(TMATList): + global mat + Me=Object.GetSelected() + if Me!=[]: + if Me[0].getType()=='Mesh': + me=NMesh.GetRaw(Me[0].getData().name) + if len(me.materials)!=0: + n=0 + for mat in me.materials: + TMATList[1][n][0]=mat.R + TMATList[1][n][1]=mat.G + TMATList[1][n][2]=mat.B + n+=1 + TMATList[0]=n + else: + TMATList[0]=0 + return TMATList + +MOname = "MODE MENU %t|Normal %x1|Material %x2|Selected %x3" +ORname = "ORIENT MENU %t|From Normal %x1|Local Axes %x2| Noise %x3" +NOname = "NOISE MENU %t|BLENDER %x1|STDPERLIN %x2|NEWPERLIN %x3|VORONOI_F1%x4|VORONOI_F2%x5|VORONOI_F3%x6|VORONOI_F4%x7|VORONOI_F2F1%x8|VORONOI_CRACKLE%x9|CELLNOISE%x10|HETEROTENOISE%x11" + +MODEMenu = Create(1) +ORIENTMenu = Create(1) +NOISEMenu = Create(1) + +NSIZE = Create(1.0) +TDOCMat = Create(0) +NRepeat = Create(1) + +H=1.0 +lacunarity=2.0 +octaves=5.0 +offset=1.0 +basis=3 + +NOISEDIM=4 +NOISEDIMbout=Create(NOISEDIM) +HBout=Create(H) +lacunarityBout=Create(lacunarity) +octavesBout=Create(octaves) +offsetBout=Create(offset) +basisBout=Create(basis) + + +noiseTYPE={0:'BLENDER', + 1:'STDPERLIN', + 2:'STDPERLIN', + 3:'NEWPERLIN', + 4:'VORONOI_F1', + 5:'VORONOI_F2', + 6:'VORONOI_F3', + 7:'VORONOI_F2F1', + 8:'VORONOI_CRACKLE', + 9:'CELLNOISE'} + +TMATList= [0,[],[]] + +for t in range(16): + TMATList[1].append([0.0,0.0,0.0]) + TMATList[2].append(Create(0)) + +TAXEList=[['X','Y','Z'],[]] +for t in range(3): + TAXEList[1].append(Create(0)) + +glCr=glRasterPos2d +glCl3=glColor3f +glCl4=glColor4f +glRct=glRectf + + + +def draw(): + global MODEMenu, NSIZE, TDOCMat,TMATList, TAXEList + global mat, ORIName, NEWName, ORIENTMenu + global NRepeat, ERROR, TextERROR , NOISE, NOISEMenu, NOISEDIMbout,NOISEDIM + global HBout,lacunarityBout,octavesBout,offsetBout,basisBout + global noiseTYPE + + size=Buffer(GL_FLOAT, 4) + glGetFloatv(GL_SCISSOR_BOX, size) + size= size.list + + for s in [0,1,2,3]: size[s]=int(size[s]) + + glClear(GL_COLOR_BUFFER_BIT) + + glColor3f(0.0,0.0,0.0) + glRectf(4,size[3],534,size[3]-32 ) + + glColor3f(1.0,1.0,1.0) + glRasterPos2f(20, size[3]-15) + Text("Script Python de displacement paintingt") + + glRasterPos2f(20, size[3]-28) + Text("Jean-michel Soler, juillet 2004") + + + n0=70 + n1=55 + + Button("Create" ,E_CREATE ,5 ,size[3]-n0+16 ,60 ,20) + Button("Action" ,E_ACTION ,5 ,size[3]-n0-4 ,60 ,20) + Button("Exit" ,E_EXIT ,5 ,size[3]-n0-24 ,60 ,20) + + NRepeat=Number("repeat" ,E_REPEAT ,5 ,size[3]-n0-50 ,75 ,20, NRepeat.val,1,10) + + glColor3f(0.0,0.0,0.0) + glRasterPos2f(80 ,size[3]-n0+24) + Text("MODE") + + MODEMenu= Menu(MOname, E_MODE ,80 ,size[3]-n0 ,100,20, MODEMenu.val, "MODE menu.") + + if MODEMenu.val==2: + TDOCMat=Toggle("Doc Mat" ,E_DOCMAT ,180 ,size[3]-n0 ,60 ,20,TDOCMat.val) + if TDOCMat.val==1: + #print TMATList + for t in range(TMATList[0]): + glCl3(TMATList[1][t][0], + TMATList[1][t][1], + TMATList[1][t][2]) + glRct(80+t*40, + size[3]-n0-60, + 80+t*40+40, + size[3]-n0-60+40) + TMATList[2][t]=Toggle("%s"%t , 32+t ,80+t*40+5 ,size[3]-n0-50 ,30 , 20,TMATList[2][t].val) + + glColor3f(1.0,0.3,0.0) + glRasterPos2f(80+40+5 ,size[3]-n0-80) + if ERROR>1: + Text('Last error : '+TextERROR) + else: + Text('Last error : ') + + glColor3f(0.0,0.0,0.0) + glRasterPos2f(240 ,size[3]-n0+24) + Text("ORIENTATION") + ORIENTMenu= Menu(ORname, E_ORIENT ,240 ,size[3]-n0 ,100,20, ORIENTMenu.val, "ORIENT menu.") + + if ORIENTMenu.val==2 : + for t in range(3): + TAXEList[1][t]=Toggle("%s"%TAXEList[0][t], + E_AXESEL+t, + 240+100+t*30 , size[3]-n0 ,30 , 20, + TAXEList[1][t].val) + + + if ORIENTMenu.val==3 : + glRasterPos2f(240 ,size[3]-n0-90-4) + Text("NOISE") + NOISEMenu= Menu(NOname, E_NOISEME , 240 ,size[3]-n0-118 ,110,20, NOISEMenu.val, "NOISE menu.") + NOISEDIMbout=Number(" Dim: " ,E_NOISEDIM , 240 ,size[3]-n0-138 ,110,20, NOISEDIMbout.val, 1,100) + + if NOISEMenu.val==11: + basisBout=Slider(noiseTYPE[basisBout.val], + E_NOISEBAS ,40 ,size[3]-n0-118 ,175,20, basisBout.val, 0,9,) + HBout= Slider("H", E_NOISEH ,40 ,size[3]-n0-138 ,175,20, HBout.val, -2.0,+2.0,0,) + lacunarityBout=Slider("lacunarity", E_NOISELAC ,40 ,size[3]-n0-158 ,175,20, lacunarityBout.val, -4.0,+4.0,0,) + octavesBout=Slider("octave", E_NOISEOCT ,40 ,size[3]-n0-178 ,175,20, octavesBout.val, -10.0,+10.0,0,) + offsetBout=Slider("offset", E_NOISEOFF ,40 ,size[3]-n0-198 ,175,20, offsetBout.val, -5.0,+5.0,0,) + + NSIZE= Slider("Disp Size", E_NSIZE ,80 ,size[3]-n0-20 ,260,20, NSIZE.val, -4.0,+4.0,0,"SIZE.") + + + + +def event(evt, val): + if (evt== QKEY and not val): Exit() + +def bevent(evt): + global MODEMenu, NSIZE, ng, TMATList + global mat, ORIENTMenu, NRepeat, TAXEList + global ERROR,TextERROR, NOISE, NOISEMenu, NOISEDIMbout,NOISEDIM + global HBout,lacunarityBout,octavesBout,offsetBout,basisBout + global H,lacunarity,octaves,offset,basis + + if (evt== E_EXIT): + Exit() + + + elif (evt== E_ACTION): + for n in range(NRepeat.val): + paint() + + elif (evt== E_NSIZE): + ng=NSIZE.val + + elif (evt== E_DOCMAT) or (evt in E_MATVAL): + Me=Object.GetSelected() + if Me!=[]: + if Me[0].getType()=='Mesh': + TMATList=DOCMat_list(TMATList) + mat=[] + for TMat in TMATList[2]: + if TMat.val==1.0: + mat.append(TMATList[2].index(TMat)) + ERROR=0 + else: + ERROR=1 + TextERROR='Selected Object is not a mesh.' + else: + ERROR=1 + TextERROR='No Selected Object.' + + + elif (evt== E_CREATE): + + NEWMEcreation(Blender.Object.GetSelected()[0]) + Blender.Draw.Redraw() + + ERROR=1 + TextERROR='No Selected Object.' + + elif (evt== E_NOISEME): + NOISE=NOISEMenu.val-1 + + elif (evt in E_NOISEVAL): + H=HBout.val + lacunarity=lacunarityBout.val + octaves=octavesBout.val + offset=offsetBout.val + basis=basisBout.val + + elif (evt== E_NOISEDIM): + NOISEDIM=NOISEDIMbout.val + + Blender.Draw.Redraw() + +Register(draw, event, bevent) diff --git a/release/scripts/disp_paint233f.py b/release/scripts/disp_paint233f.py deleted file mode 100644 index d71d7857af2..00000000000 --- a/release/scripts/disp_paint233f.py +++ /dev/null @@ -1,331 +0,0 @@ -#!BPY - -""" Registration info for Blender menus: <- these words are ignored -Name: 'Dispaint' -Blender: 233 -Group: 'Mesh' -Tip: 'Use vertex paint color value to modify shape displacing vertices along normal.' -""" - -# $Id$ -# -#---------------------------------------------- -# jm soler, displacement paint 03/2002 - > 05/2004: disp_paintf -#---------------------------------------------- -# Official page : -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm -#---------------------------------------------- -# Communicate problems and errors on: -# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender -#--------------------------------------------- -# this script is released under GPL licence -# for the Blender 2.33 scripts package -#---------------------------------------------- -# Page officielle : -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_displacementpainting.htm -# Communiquer les problemes et erreurs sur: -# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender -#--------------------------------------------- -# ce script est proposé sous licence GPL pour etre associe -# a la distribution de Blender 2.33 -#---------------------------------------------- - -import Blender -from Blender import * -from Blender.Draw import * -from Blender.BGL import * - - -# niveau du deplacement -ng=0.5 - -# profondeur des couleurs primaires rgb -maxcol=255.0*3 - -# limitation de la zone de travail sur le -# le materiau numer mat du tableau d'indices -# des materiaux. Par defaut mat =-1 ce qui signifie -# que toute la surface est traitee -mat=[] -vindex=[] -ORIName='' -NEWName='' -ERROR=0 -TextERROR='' - -def copy_transform(ozero,Obis): - Obis.setSize(ozero.getSize()); - Obis.setEuler(ozero.getEuler()); - Obis.setLocation(ozero.getLocation()) - return Obis - -def traite_face(f): - global vindexm - if ORIENTMenu.val==1: - for z in range(len(f.v)): - c=0.0 - if vindex[f.v[z].index]!=0: - c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*ng/vindex[f.v[z].index] - else: - c=0 - - f.v[z].co[0]=f.v[z].co[0]+f.v[z].no[0]*c - f.v[z].co[1]=f.v[z].co[1]+f.v[z].no[1]*c - f.v[z].co[2]=f.v[z].co[2]+f.v[z].no[2]*c - - if ORIENTMenu.val==2: - for z in range(len(f.v)): - c=0.0 - if vindex[f.v[z].index]!=0: - c=float(f.col[z].r+f.col[z].b+f.col[z].g)/maxcol*ng/vindex[f.v[z].index] - else: - c=0 - for t in range(3): - if TAXEList[1][t].val==1: - f.v[z].co[t]=f.v[z].co[t]+c - - -def paint(): - global MODEMenu, vindex,ng, mat, ORIName, NEWName - - Me=Object.GetSelected() - if Me!=[]: - if Me[0].getType()=='Mesh': - - vindex=[] - ORIName=Me[0].getData().name - me=NMesh.GetRaw(Me[0].getData().name) - - name='new.002' - - for m in me.verts: - vindex.append(0) - - for f in me.faces: - for v in f.v: - if MODEMenu.val!=2: - if MODEMenu.val==1: - vindex[v.index]+=1 - else: - if v.sel==1: - vindex[v.index]+=1 - else: - #print mat - if f.mat in mat: - vindex[v.index]+=1 - - for f in me.faces: - if MODEMenu.val==2: - if f.mat in mat: - traite_face(f) - else: - traite_face(f) - - NMesh.PutRaw(me,name) - - if name!=Object.GetSelected()[0].getData().name: - obj=Object.Get() - for o in obj: - if o.getType()=='Mesh': - if o.getData().name==name: - o.makeDisplayList() - - o=copy_transform(Me[0],o) - """ - o.setEuler(Me[0].getEuler()) - o.setLocation(Me[0].getLocation()) - """ - - else: - Me[0].makeDisplayList() - -def NEWMEcreation(name): - nomdelobjet=""; objnumber=-1; namelist=[] - obj=Object.Get() - - for ozero in obj: - if ozero.getType()=='Mesh': - namelist.append(ozero.getData().name) - if ozero.getData().name==name: - objnumber=obj.index(ozero) - - if objnumber!=-1: - ozero=obj[objnumber] - nomdelobjet=ozero.getName() - Mesh=Blender.NMesh.GetRawFromObject(nomdelobjet) - - n=0; name2=name[:];ok=0 - - while ok==0: - for n0 in namelist: - if n0.find(name2)==0: - ok=0;name2=name[0:name.find('.')+1]+'%s'%(n+1) - else: ok=1 - n+=1 - Mesh.name=name2 - Obis = Blender.NMesh.PutRaw(Mesh,name2) - copy_transform(ozero,Obis) - Obis.makeDisplayList() - -def DOCMat_list(TMATList): - global mat - Me=Object.GetSelected() - if Me!=[]: - if Me[0].getType()=='Mesh': - me=NMesh.GetRaw(Me[0].getData().name) - if len(me.materials)!=0: - n=0 - for mat in me.materials: - TMATList[1][n][0]=mat.R - TMATList[1][n][1]=mat.G - TMATList[1][n][2]=mat.B - n+=1 - TMATList[0]=n - else: - TMATList[0]=0 - return TMATList - -MOname = "MODE MENU %t|Normal %x1|Material %x2|Selected %x3" -ORname = "ORIENT MENU %t|From Normal %x1|Local Axes %x2" - -MODEMenu = Create(1) -ORIENTMenu = Create(1) -NSIZE = Create(1.0) -TDOCMat = Create(0) -NRepeat = Create(1) - -TMATList= [0,[],[]] - -for t in range(16): - TMATList[1].append([0.0,0.0,0.0]) - TMATList[2].append(Create(0)) - -TAXEList=[['X','Y','Z'],[]] -for t in range(3): - TAXEList[1].append(Create(0)) - -glCr=glRasterPos2d -glCl3=glColor3f -glCl4=glColor4f -glRct=glRectf - - - -def draw(): - global MODEMenu, NSIZE, TDOCMat,TMATList, TAXEList - global mat, ORIName, NEWName, ORIENTMenu - global NRepeat, ERROR, TextERROR - - size=Buffer(GL_FLOAT, 4) - glGetFloatv(GL_SCISSOR_BOX, size) - size= size.list - - for s in [0,1,2,3]: size[s]=int(size[s]) - - glClear(GL_COLOR_BUFFER_BIT) - - glColor3f(0.0,0.0,0.0) - glRectf(4,size[3],534,size[3]-32 ) - - glColor3f(1.0,1.0,1.0) - glRasterPos2f(20, size[3]-15) - Text("Script Python de displacement paintingt") - - glRasterPos2f(20, size[3]-28) - Text("Jean-michel Soler, avril 2004") - - - n0=70 - n1=55 - - Button("Create" ,17 ,5 ,size[3]-n0+16 ,60 ,20) - Button("Action" ,16 ,5 ,size[3]-n0-4 ,60 ,20) - Button("Exit" ,1 ,5 ,size[3]-n0-24 ,60 ,20) - - NRepeat=Number("repeat" ,5 ,5 ,size[3]-n0-50 ,75 ,20, NRepeat.val,1,10) - - glColor3f(0.0,0.0,0.0) - glRasterPos2f(80 ,size[3]-n0+24) - Text("MODE") - - MODEMenu= Menu(MOname, 2 ,80 ,size[3]-n0 ,100,20, MODEMenu.val, "MODE menu.") - - if MODEMenu.val==2: - TDOCMat=Toggle("Doc Mat" ,24 ,180 ,size[3]-n0 ,60 ,20,TDOCMat.val) - if TDOCMat.val==1: - #print TMATList - for t in range(TMATList[0]): - glCl3(TMATList[1][t][0], - TMATList[1][t][1], - TMATList[1][t][2]) - glRct(80+t*40, - size[3]-n0-60, - 80+t*40+40, - size[3]-n0-60+40) - TMATList[2][t]=Toggle("%s"%t , 32+t ,80+t*40+5 ,size[3]-n0-50 ,30 , 20,TMATList[2][t].val) - glColor3f(1.0,0.3,0.0) - glRasterPos2f(80+40+5 ,size[3]-n0-80) - if ERROR==1: - Text('Last error : '+TextERROR) - else: - Text('Last error : ') - - glColor3f(0.0,0.0,0.0) - glRasterPos2f(240 ,size[3]-n0+24) - Text("ORIENTATION") - - ORIENTMenu= Menu(ORname, 3 ,240 ,size[3]-n0 ,100,20, ORIENTMenu.val, "MODE menu.") - if ORIENTMenu.val>1: - for t in range(3): - TAXEList[1][t]=Toggle("%s"%TAXEList[0][t], - 40+t, - 240+100+t*30 , size[3]-n0 ,30 , 20, - TAXEList[1][t].val) - - NSIZE= Slider("Disp Size", 4 ,80 ,size[3]-n0-20 ,260,20, NSIZE.val, -4.0,+4.0,0,"SIZE.") - - - - -def event(evt, val): - if (evt== QKEY and not val): Exit() - -def bevent(evt): - global MODEMenu, NSIZE, ng, TMATList - global mat, ORIENTMenu, NRepeat, TAXEList - global ERROR,TextERROR - - if (evt== 1): - Exit() - - - elif (evt== 16): - for n in range(NRepeat.val): - paint() - - elif (evt== 4): - ng=NSIZE.val - - elif (evt== 24) or (evt in [32,33,34,35,36,37,38,39,40,41,42,43,44]): - Me=Object.GetSelected() - if Me!=[]: - if Me[0].getType()=='Mesh': - TMATList=DOCMat_list(TMATList) - mat=[] - for TMat in TMATList[2]: - if TMat.val==1.0: - mat.append(TMATList[2].index(TMat)) - ERROR=0 - else: - ERROR=1 - TextERROR='Selected Object is not a mesh.' - else: - ERROR=1 - TextERROR='No Selected Object.' - - elif (evt== 17): - NEWMEcreation('new.002') - - Blender.Redraw() - -Register(draw, event, bevent) diff --git a/release/scripts/hotkeys.py b/release/scripts/hotkeys.py index 9f15a97852b..b89de987349 100644 --- a/release/scripts/hotkeys.py +++ b/release/scripts/hotkeys.py @@ -19,6 +19,9 @@ Tip: 'All the hotkeys.' # ce script est proposé sous licence GPL pour etre associe # a la distribution de Blender 2.33 et suivant # -------------------------------------------------------------------------- +# this script is released under GPL licence +# for the Blender 2.33 scripts package +# -------------------------------------------------------------------------- # ***** BEGIN GPL LICENSE BLOCK ***** # # Copyright (C) 2003, 2004: Jean-Michel Soler diff --git a/release/scripts/rvk1_torvk2.py b/release/scripts/rvk1_torvk2.py index 601d8c0a1ad..0671e44938b 100644 --- a/release/scripts/rvk1_torvk2.py +++ b/release/scripts/rvk1_torvk2.py @@ -3,7 +3,7 @@ """ Registration info for Blender menus: <- these words are ignored Name: 'Rvk1 to Rvk2' Blender: 232 -Group: 'Animation' +Group: 'Mesh' Tip: 'Copy deform data (not surf. subdiv) of active obj to rvk of the 2nd selected obj.' """ @@ -104,7 +104,7 @@ def rvk2rvk(): Blender.Redraw() except: - print 'problem : not object selected or not mesh' + Draw.PupMenu('Error| You need to select two meshes.') rvk2rvk() -- cgit v1.2.3