- Last minute script addition (blame / thank Theeth :) -- Theeth's UV Face export...
authorWillian Padovani Germano <wpgermano@gmail.com>
Fri, 30 Jan 2004 04:27:28 +0000 (04:27 +0000)
committerWillian Padovani Germano <wpgermano@gmail.com>
Fri, 30 Jan 2004 04:27:28 +0000 (04:27 +0000)
- tiny harmless change in module Blender.Material's *doc*.

Aphex: tested your fix for windows (thank you -- and Bill Baxter for reporting):
  It doesn't break anything here (linux).  So probably no need for #ifdef's.

release/scripts/uv_export.py [new file with mode: 0644]
source/blender/python/api2_2x/doc/Material.py

diff --git a/release/scripts/uv_export.py b/release/scripts/uv_export.py
new file mode 100644 (file)
index 0000000..48d1be4
--- /dev/null
@@ -0,0 +1,240 @@
+#!BPY
+
+"""
+Name: 'UV Face Layout'
+Blender: 232
+Group: 'Export'
+Tooltip: 'Export the UV Faces layout of the selected object to tga.'
+""" 
+
+
+# Martin Poirier 2003 #
+#  theeth@yahoo.com   #
+#                     #
+#     Change the      #
+#  default_file line  #
+#  to point it where  #
+#      you want       #
+#                     #
+#    thanks to jms    #
+#   for the tga funcs #
+#                     #
+# --------------------------
+#    Version 1.1      
+# Clear a bug that crashed the script when UV coords overlapped in the same faces
+# --------------------------
+#    Version 1.2
+# Now with option to use the object's name as filename
+# --------------------------
+#    Version 1.3 Updates by Zaz from Elysiun.com
+# Default path is now the directory of the last saved .blend
+# New options: Work on selected face only & Scale image when face wraps
+# --------------------------
+
+import Blender
+from math import *
+
+default_file = Blender.sys.dirname(Blender.Get ("filename")) + Blender.sys.sep
+
+bSize = Blender.Draw.Create(500)
+bWSize = Blender.Draw.Create(1)
+bFile = Blender.Draw.Create(default_file)
+bObFile = Blender.Draw.Create(1)
+bWrap = Blender.Draw.Create(1)
+bAllFaces = Blender.Draw.Create(1)
+
+def draw():
+       global bSize, bWSize, bFile, bObFile, bWrap, bAllFaces
+       # clearing screen
+       Blender.BGL.glClearColor(0.5, 0.5, 0.5, 1)
+       Blender.BGL.glColor3f(1.,1.,1.)
+       Blender.BGL.glClear(Blender.BGL.GL_COLOR_BUFFER_BIT)
+
+       #Title
+       Blender.BGL.glColor3f(1, 1, 1)
+       Blender.BGL.glRasterPos2d(8, 183)
+       Blender.Draw.Text("Blender UF Faces Export")
+       Blender.BGL.glRasterPos2d(8, 163)
+       Blender.Draw.Text("""(C) Feb. 2003 Martin Poirier (aka "theeth")""")
+  
+       # Instructions
+       Blender.BGL.glRasterPos2d(8, 83)
+       Blender.Draw.Text("1 - Select the mesh you want to export")
+       Blender.BGL.glRasterPos2d(8, 63)
+       Blender.Draw.Text("2 - Define the Size and WireSize parameters")
+       Blender.BGL.glRasterPos2d(8, 43)
+       Blender.Draw.Text("3 - Push the EXPORT button!!!")
+
+       # Buttons
+       Blender.Draw.Button("EXPORT", 3, 10, 10, 100, 25)
+       Blender.Draw.Button("Exit", 1, 200, 177, 40, 18)
+       bSize = Blender.Draw.Number("Size", 4, 10, 130, 90, 18, bSize.val, 100, 10000, "Size of the exported image")
+       bWSize = Blender.Draw.Number("Wire Size", 4, 120, 130, 90, 18, bWSize.val, 1, 5, "Size of the wire of the faces")
+       bWrap = Blender.Draw.Toggle("Wrap", 5, 220, 130, 50, 20, bWrap.val, "Wrap to image size, scale otherwise")
+       bAllFaces = Blender.Draw.Toggle("AllFaces", 6, 280, 130, 60, 20, bAllFaces.val, "Export All or only selected faces")
+
+       bFile = Blender.Draw.String("Path: ", 4, 10, 100, 200, 20, bFile.val, 100, "Filename path")
+       bObFile = Blender.Draw.Toggle("Ob", 4, 212, 100, 30, 20, bObFile.val, "Use object name in filename")
+
+def event(evt, val):
+       if evt == Blender.Draw.ESCKEY and not val: Blender.Draw.Exit()
+
+def bevent(evt):
+       bSize, bWSize, bFile, bObFile
+       if evt == 1: Blender.Draw.Exit()
+       if evt == 3:
+               if bObFile.val:
+                       UV_Export(bSize.val, bWSize.val, bFile.val + Blender.Object.GetSelected()[0].name + ".tga")
+               else:
+                       UV_Export(bSize.val, bWSize.val, bFile.val)
+
+def Buffer(height=16, width=16, profondeur=3,rvb=255 ):  
+   """  
+   reserve l'espace memoire necessaire  
+   """  
+   p=[rvb]  
+   b=p*height*width*profondeur  
+   return b  
+
+def write_tgafile(loc2,bitmap,width,height,profondeur):  
+   f=open(loc2,'wb')  
+
+   Origine_en_haut_a_gauche=32  
+   Origine_en_bas_a_gauche=0  
+
+   Data_Type_2=2  
+   RVB=profondeur*8  
+   RVBA=32  
+   entete0=[]  
+   for t in range(18):  
+     entete0.append(chr(0))  
+
+   entete0[2]=chr(Data_Type_2)  
+   entete0[13]=chr(width/256)  
+   entete0[12]=chr(width % 256)  
+   entete0[15]=chr(height/256)  
+   entete0[14]=chr(height % 256)  
+   entete0[16]=chr(RVB)  
+   entete0[17]=chr(Origine_en_bas_a_gauche)  
+
+   #Origine_en_haut_a_gauche  
+
+   for t in entete0:  
+     f.write(t)  
+
+   for t in bitmap:  
+     f.write(chr(t))  
+   f.close()  
+
+def UV_Export(size, wsize, file):
+       obj = Blender.Object.GetSelected()
+       if not obj:
+               Blender.Draw.PupMenu("ERROR%t|No Active Object!")
+               return
+       obj = obj[0];
+       if obj.getType() != "Mesh":
+               Blender.Draw.PupMenu("ERROR%t|Not a Mesh!")
+               return
+       mesh = obj.getData()
+       if not mesh.hasFaceUV():
+               Blender.Draw.PupMenu("ERROR%t|No UV coordinates!")
+               return
+       
+
+       vList = []
+       faces = []
+
+       minx = 0
+       miny = 0
+       scale = 1.0
+       
+       step = 0
+
+       if bAllFaces.val:
+               faces = mesh.faces
+
+       else:
+               faces = mesh.getSelectedFaces ()
+
+       for f in faces:
+               vList.append(f.uv)
+
+       img = Buffer(size+1,size+1)
+
+       if bWrap.val:
+               wrapSize = size
+       else:
+               wrapSize = size
+               maxx = -100000
+               maxy = -100000
+               for f in vList:
+                       for v in f:
+                               x = int(v[0] * size)
+                               maxx = max (x, maxx)
+                               minx = min (x, minx)
+                               
+                               y = int(v[1] * size)
+                               maxy = max (y, maxy)
+                               miny = min (y, miny)
+               wrapSize = max (maxx - minx + 1, maxy - miny + 1)
+               scale = float (size) / float (wrapSize)
+
+       fnum = 0
+       fcnt = len (vList)
+
+       for f in vList:
+               fnum = fnum + 1
+               if not fnum % 100:
+                       print "Face " + str (fnum) + " of " + str (fcnt)
+                       
+               for index in range(len(f)):
+                       co1 = f[index]
+                       if index < len(f) - 1:
+                               co2 = f[index + 1]
+                       else:
+                               co2 = f[0]
+                       step = int(size*sqrt((co1[0]-co2[0])**2+(co1[1]-co2[1])**2))
+                       if step:
+                               for t in range(step + 1):
+                                       x = int((co1[0] + t*(co2[0]-co1[0])/step) * size)
+                                       y = int((co1[1] + t*(co2[1]-co1[1])/step) * size)
+
+                                       if bWrap.val:
+                                               x = x % wrapSize
+                                               y = y % wrapSize
+                                       else:
+                                               x = int ((x - minx) * scale)
+                                               y = int ((y - miny) * scale)
+                                               
+                                       co = x * 3 + y * 3 * size
+                                       img[co] = 0
+                                       img[co+1] = 0
+                                       img[co+2] = 255
+                                       if wsize > 1:
+                                               for x in range(-1*wsize + 1,wsize):
+                                                       for y in range(-1*wsize,wsize):
+                                                               img[co + 3 * x + y * 3 * size] = 0
+                                                               img[co + 3 * x + y * 3 * size +1] = 0
+                                                               img[co + 3 * x + y * 3 * size +2] = 255
+       
+               for v in f:
+                       x = int(v[0] * size)
+                       y = int(v[1] * size)
+
+                       if bWrap.val:
+                               x = x % wrapSize
+                               y = y % wrapSize
+                       else:
+                               x = int ((x - minx) * scale)
+                               y = int ((y - miny) * scale)
+
+                       co = x * 3 + y * 3 * size
+                       img[co] = 0
+                       img[co+1] = 0
+                       img[co+2] = 0
+                               
+       
+       
+       write_tgafile(file,img,size,size,3)
+
+Blender.Draw.Register(draw,event,bevent)
index 85d336a0599ff50808831ef6e7e299094cb90b70..8bee2d85cd220a5c702fc9c56c75d81c16fb5d1d 100644 (file)
@@ -117,8 +117,6 @@ class Material:
    that range: if val < Min, then val = Min, if val > Max, then val = Max.
   """
 
-  import Texture
-
   def getName():
     """
     Get the name of this Material object.