Now a working version for of the g3d importer/exporter for blender 2.63! ( Includes "non-selectable"-feature too now )

This commit is contained in:
Titus Tscharntke 2012-09-01 19:25:08 +00:00
parent b2e869acc3
commit 1072223b48
1 changed files with 16 additions and 14 deletions

View File

@ -103,7 +103,7 @@
bl_info = { bl_info = {
"name": "G3D Mesh Import/Export", "name": "G3D Mesh Import/Export",
"author": "various, see head of script", "author": "various, see head of script",
"version": (0, 5, 1), "version": (0, 5, 2),
"blender": (2, 63, 0), "blender": (2, 63, 0),
#"api": 36079, #"api": 36079,
"location": "File > Import-Export", "location": "File > Import-Export",
@ -213,6 +213,10 @@ class G3DMeshHeaderv4: #Read Meshheader
self.istwosided = True self.istwosided = True
else: else:
self.istwosided = False self.istwosided = False
if self.properties & 4:
self.noselect = True
else:
self.noselect = False
if self.textures & 1: #PropertyBit is Mesh Textured ? if self.textures & 1: #PropertyBit is Mesh Textured ?
temp = fileID.read(struct.calcsize(self.texname_format)) temp = fileID.read(struct.calcsize(self.texname_format))
data = struct.unpack(self.texname_format,temp) data = struct.unpack(self.texname_format,temp)
@ -307,12 +311,12 @@ def createMesh(filename,header,data): #Create a Mesh inside Blender
uv.append([0,0]) uv.append([0,0])
uv.append([0,0]) uv.append([0,0])
faceuv.append([uv,0,0,0]) faceuv.append([uv,0,0,0])
mesh.faces.add(len(faces)//4) mesh.tessfaces.add(len(faces)//4)
mesh.faces.foreach_set("vertices_raw", faces) mesh.tessfaces.foreach_set("vertices_raw", faces)
mesh.faces.foreach_set("use_smooth", [True] * len(mesh.faces)) mesh.tessfaces.foreach_set("use_smooth", [True] * len(mesh.tessfaces))
mesh.g3d_customColor = header.customalpha
mesh.show_double_sided = header.istwosided mesh.show_double_sided = header.istwosided
mesh.update_tag() mesh.g3d_noSelect = header.noselect
mesh.update() #Update changes to Mesh
#=================================================================================================== #===================================================================================================
#Material Setup #Material Setup
#=================================================================================================== #===================================================================================================
@ -329,7 +333,6 @@ def createMesh(filename,header,data): #Create a Mesh inside Blender
matdata.diffuse_color = (header.diffusecolor[0], header.diffusecolor[1],header.diffusecolor[2]) matdata.diffuse_color = (header.diffusecolor[0], header.diffusecolor[1],header.diffusecolor[2])
matdata.alpha = header.opacity matdata.alpha = header.opacity
matdata.specular_color = (header.specularcolor[0], header.specularcolor[1],header.specularcolor[2]) matdata.specular_color = (header.specularcolor[0], header.specularcolor[1],header.specularcolor[2])
matdata.use_face_texture_alpha = header.customalpha
materials.append(matdata) materials.append(matdata)
for material in materials: for material in materials:
@ -338,13 +341,11 @@ def createMesh(filename,header,data): #Create a Mesh inside Blender
countm = 0 countm = 0
psktexname="psk" + str(countm) psktexname="psk" + str(countm)
mesh.uv_textures.new(name=psktexname) mesh.tessface_uv_textures.new(name=psktexname)
if (len(faceuv) > 0): if (len(faceuv) > 0):
for countm in range(len(mesh.uv_textures)): for countm in range(len(mesh.tessface_uv_textures)):
mesh.update() uvtex = mesh.tessface_uv_textures[countm] #add one uv texture
uvtex = mesh.uv_textures[countm] #add one uv texture for i, face in enumerate(mesh.tessfaces):
mesh.update()
for i, face in enumerate(mesh.faces):
blender_tface = uvtex.data[i] #face blender_tface = uvtex.data[i] #face
mfaceuv = faceuv[i] mfaceuv = faceuv[i]
if countm == faceuv[i][1]: if countm == faceuv[i][1]:
@ -357,7 +358,6 @@ def createMesh(filename,header,data): #Create a Mesh inside Blender
blender_tface.uv1 = [0,0] blender_tface.uv1 = [0,0]
blender_tface.uv2 = [0,0] blender_tface.uv2 = [0,0]
blender_tface.uv3 = [0,0] blender_tface.uv3 = [0,0]
mesh.update()
imported.append(meshobj) #Add to Imported Objects imported.append(meshobj) #Add to Imported Objects
sk = meshobj.shape_key_add() sk = meshobj.shape_key_add()
#mesh.shape_keys.use_relative = False #mesh.shape_keys.use_relative = False
@ -371,7 +371,9 @@ def createMesh(filename,header,data): #Create a Mesh inside Blender
sk.data[i//3].co[2]= data.vertices[x*header.vertexcount*3 + i +2] sk.data[i//3].co[2]= data.vertices[x*header.vertexcount*3 + i +2]
#meshobj.keyframe_insert("location",-1, frame=(x+1)) #meshobj.keyframe_insert("location",-1, frame=(x+1))
#meshobj.keyframe_insert(data_path="data.vertices", frame=(x+1)) #meshobj.keyframe_insert(data_path="data.vertices", frame=(x+1))
# update polygon structures from tessfaces
mesh.update() mesh.update()
mesh.update_tag()
return return
########################################################################### ###########################################################################
# Import # Import