if bl.objectHasShapeKey(obj):
# base
for b in bl.objectShapeKeys(obj):
- if b.name=='Basis':
- print(b.name)
+ if b.name==BASE_SHAPE_NAME:
baseMorph=self.__getOrCreateMorph('base', 0)
relativeIndex=0
basis=b
for index in bl.meshVertexGroup(obj, MMD_SHAPE_GROUP_NAME):
- v=b.data[index]
+ v=bl.shapeKeyGet(b, index)
pos=[v[0], v[1], v[2]]
indices=self.vertexArray.getMappedIndices(index)
for i in indices:
break
assert(basis)
+ print(basis.name, len(baseMorph.offsets))
if(len(baseMorph.offsets)>0):
baseMorph.sort()
# shape keys
- vg=obj.getData(mesh=True).getVertsFromGroup(
- MMD_SHAPE_GROUP_NAME)
- for b in obj.getData(mesh=True).key.blocks:
- if b.name=='Basis':
+ vg=bl.meshVertexGroup(obj, MMD_SHAPE_GROUP_NAME)
+ for b in bl.objectShapeKeys(obj):
+ if b.name==BASE_SHAPE_NAME:
continue
print(b.name)
morph=self.__getOrCreateMorph(b.name, 4)
for index, src, dst in zip(
xrange(len(blenderMesh.verts)),
- basis.data,
- b.data):
+ bl.shapeKeys(basis),
+ bl.shapeKeys(b)):
offset=[dst[0]-src[0], dst[1]-src[1], dst[2]-src[2]]
+ if offset[0]==0 and offset[1]==0 and offset[2]==0:
+ continue
if index in vg:
indices=self.vertexArray.getMappedIndices(index)
for i in indices:
morph.add(indexRelativeMap[i], offset)
- assert(len(morph.offsets)==len(baseMorph.offsets))
# sort skinmap
original=self.morphList[:]
for node in object_node_map.values():
if node.o.parent:
object_node_map[node.o.parent].children.append(node)
+
# ルートを得る
root=object_node_map[scene.objects.active]
assert(i<vertexCount)
for i in xrange(0, len(indices), 3):
# reverse triangle
- io.indices.append(indices[i+2])
- io.indices.append(indices[i+1])
io.indices.append(indices[i])
-
- #io.indices.append(indices[i])
- #io.indices.append(indices[i+1])
- #io.indices.append(indices[i+2])
+ io.indices.append(indices[i+1])
+ io.indices.append(indices[i+2])
# bones
for b in self.builder.bones:
v=englishmap.getUnicodeSkinName(m.name)
assert(v)
cp932=v[1].encode('cp932')
- morph.name="%s\n" % cp932
-
- morph.english_name="%s\n" % m.name
+ morph.setName(cp932)
+ morph.setEnglishName(m.name.encode('cp932'))
m.type=v[2]
morph.type=v[2]
for index, offset in m.offsets:
boneDisplayName.name=name.decode('utf-8').encode('cp932')
boneDisplayName.english_name=english
else:
- # ToDo
- boneDisplayName.name=english
- boneDisplayName.english_name=english
+ boneDisplayName.setName(name.encode('cp932'))
+ boneDisplayName.setEnglishName(english.encode('cp932'))
boneDisplayName=createBoneDisplayName("IK\n", "IK\n")
boneDisplayName=createBoneDisplayName("体(上)\n", "Body[u]\n")
boneDisplayName=createBoneDisplayName("髪\n", "Hair\n")
def __execute(filename, scene):
+ if not scene.objects.active:
+ print("abort. no active object.")
+ return
+
exporter=PmdExporter()
exporter.setup(scene)
exporter.write(filename)