## NORMAL SECTION ## import bpy import os import random # NOTE: any references to a mesh's data (e.g. UVs) # cannot be accessed in edit mode, so we must switch # to object mode. More info here: # https://docs.blender.org/api/blender_python_api_2_78_release/info_gotcha.html bpy.ops.object.mode_set(mode='OBJECT') # get object context obj = bpy.context.active_object mesh = obj.to_mesh(bpy.context.scene, False, 'PREVIEW') def clamp(n, minval, maxval): n = max(min(n, maxval), minval) return n def intizize(n, factor): n = int(n*factor) return n # FIXME: use relative file path name with open('C:\\Documents and Settings\\sveeion\\Desktop\\a.nrm', 'wb') as f: norm_all = [] for i, face in enumerate(mesh.tessfaces): x = intizize(face.normal[0],4096) y = intizize(face.normal[2],4096) z = intizize(face.normal[1],4096) tuple = (x, y, z) print(tuple) norm_all.append(tuple) bnum = len(norm_all)*12 + 4 f.write(bnum.to_bytes(4, byteorder='little', signed=False)) for i in range(len(norm_all)): x = norm_all[i][0].to_bytes(4, byteorder='little', signed=True) y = norm_all[i][1].to_bytes(4, byteorder='little', signed=True) z = norm_all[i][2].to_bytes(4, byteorder='little', signed=True) f.write(x+y+z)