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.
This commit is contained in:
		
							
								
								
									
										60
									
								
								release/scripts/Apply_def.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								release/scripts/Apply_def.py
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
							
								
								
									
										479
									
								
								release/scripts/disp_paint.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										479
									
								
								release/scripts/disp_paint.py
									
									
									
									
									
										Normal file
									
								
							@@ -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<6F> 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)
 | 
			
		||||
@@ -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<6F> 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)
 | 
			
		||||
@@ -19,6 +19,9 @@ Tip: 'All the hotkeys.'
 | 
			
		||||
# ce script est propos<6F> 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
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -143,7 +143,7 @@ def glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap):
 | 
			
		||||
  @param width, height: Specify the pixel width and height of the bitmap image.
 | 
			
		||||
  @type xorig,yorig: float
 | 
			
		||||
  @param xorig,yorig: Specify the location of the origin in the bitmap image. The origin is measured
 | 
			
		||||
  from the lower left cornere of the bitmap, with right and up beigng the positive axes.
 | 
			
		||||
  from the lower left corner of the bitmap, with right and up beigng the positive axes.
 | 
			
		||||
  @type xmove,ymove: float
 | 
			
		||||
  @param xmove,ymove: Specify the x and y offsets to be added to the current raster position after 
 | 
			
		||||
  the bitmap is drawn. 
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ The Blender.Image submodule.
 | 
			
		||||
Image
 | 
			
		||||
=====
 | 
			
		||||
 | 
			
		||||
B{New}: L{Image.reload}.
 | 
			
		||||
B{New}: L{Image.reload}, L{Image.getBindCode}.
 | 
			
		||||
 | 
			
		||||
This module provides access to B{Image} objects in Blender.
 | 
			
		||||
 | 
			
		||||
@@ -67,6 +67,7 @@ class Image:
 | 
			
		||||
     axis.
 | 
			
		||||
  @cvar yrep: Texture tiling: the number of repetitions in the y (vertical)
 | 
			
		||||
     axis.
 | 
			
		||||
  @cvar bindcode: Texture's bind code (readonly).
 | 
			
		||||
  """
 | 
			
		||||
 | 
			
		||||
  def getName():
 | 
			
		||||
@@ -106,6 +107,14 @@ class Image:
 | 
			
		||||
    This is for texture tiling.
 | 
			
		||||
    @rtype: int
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
  def getBindCode():
 | 
			
		||||
    """
 | 
			
		||||
    Get the Image's bindcode.  This is for texture loading using BGL calls,
 | 
			
		||||
    see for example L{BGL.glBindTexture}.
 | 
			
		||||
    @rtype: int
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
  def reload():
 | 
			
		||||
    """
 | 
			
		||||
    Reloads this image from the filesystem.  If used within a loop you need to
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user