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:
parent
b2e869acc3
commit
1072223b48
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue