- Scripts:
authorJiri Hnidek <jiri.hnidek@tul.cz>
Mon, 21 Jun 2004 20:32:07 +0000 (20:32 +0000)
committerJiri Hnidek <jiri.hnidek@tul.cz>
Mon, 21 Jun 2004 20:32:07 +0000 (20:32 +0000)
  small update of ideasman's obj import/export scripts (added support for smooth faces)

release/scripts/obj_export.py
release/scripts/obj_import.py

index 8d52a06d6d996e156defd23bac9a2a13704b8813..814f9b481a2bbbb0e53d625e1a908005bbeac54d 100644 (file)
@@ -150,6 +150,8 @@ def save_obj(filename):
            
             # Dosent work properly,
             matrix = getWorldMat(ob)
+
+           smooth = 0
            
             # Vert
             for v in m.verts:
@@ -210,6 +212,16 @@ def save_obj(filename):
                   elif currentImgName != NULL_IMG: # Not using an image so set to NULL_IMG
                     currentImgName = NULL_IMG
                     file.write( 'usemat ' + stripPath(currentImgName) +'\n') # Set a new image for all following faces
+
+                 if f.smooth == 1:
+                    if smooth == 0:
+                       smooth = 1
+                       file.write('s 1\n')
+                  
+                 if f.smooth == 0:
+                    if smooth == 1:
+                       smooth = 0
+                       file.write('s off\n')
                   
                   file.write('f ')
                   for v in f.v:
index 90f287559b170786f3d5f5083bd3099ed4edcbca..e19c52b7be11255ab9d8155a107cc21eabe17bf7 100644 (file)
@@ -217,6 +217,8 @@ def load_obj(file):
    currentMat = nullMat # Use this mat.
    currentImg = NULL_IMG # Null image is a string, otherwise this should be set to an image object.
 
+   smooth = 0
+
    # Main loop
    lIdx = 0
    while lIdx < len(fileLines):
@@ -271,6 +273,8 @@ def load_obj(file):
             f.v.append(mesh.verts[vIdxLs[1]])
             f.v.append(mesh.verts[vIdxLs[2]])
             f.v.append(mesh.verts[vIdxLs[3]])
+           # SMOTH FACE
+           f.smooth = smooth
             # UV MAPPING
             if uvMapList:
                if vtIdxLs[0] < len(uvMapList):
@@ -294,6 +298,8 @@ def load_obj(file):
                f.v.append(mesh.verts[vIdxLs[0]])
                f.v.append(mesh.verts[vIdxLs[i+1]])
                f.v.append(mesh.verts[vIdxLs[i+2]])
+              # SMOTH FACE
+              f.smooth = smooth
                # UV MAPPING
                if uvMapList:
                   if vtIdxLs[0] < len(uvMapList):
@@ -327,7 +333,14 @@ def load_obj(file):
            
          # New texture list
          uvMapList = []
-      
+
+      # setting smooth surface on or off
+      elif l[0] == 's':
+         if l[1] == 'off':
+           smooth = 0
+        else:
+           smooth = 1
+
       elif l[0] == 'usemtl':
          if l[1] == '(null)':
             currentMat = getMat(NULL_MAT)
@@ -355,4 +368,4 @@ def load_obj(file):
    if len(mesh.verts) > 0:
       NMesh.PutRaw(mesh, fileName + '_' + objectName)
 
-Window.FileSelector(load_obj, 'Import OBJ') 
\ No newline at end of file
+Window.FileSelector(load_obj, 'Import OBJ')