void append(int index, float x, float y, float z);
std::wstring getName()const;
+ void setName(const char *src);
+ void setEnglishName(const char *src);
};
inline std::ostream &operator<<(std::ostream &os, const Morph &rhs)
{
char name[50];
char english_name[50];
- void setName(const char *name);
- void setEnglishName(const char *english);
+ void setName(const char *src);
+ void setEnglishName(const char *src);
};
////////////////////////////////////////////////////////////
return &vertices[index].uv;
}
+void Bone::setName(const char *src)
+{
+ strncpy(name, src, 20);
+}
+
void BoneDisplayName::setName(const char *src)
{
strncpy(name, src, 20);
strncpy(english_name, src, 20);
}
-void Bone::setName(const char *src)
+void Morph::setName(const char *src)
{
strncpy(name, src, 20);
}
+void Morph::setEnglishName(const char *src)
+{
+ strncpy(english_name, src, 20);
+}
+
} // namespace
} // namespace
return Blender.Armature.CONNECTED in b.options
def constraintIsIKSolver(c):
- return c.type==Blender.Constraint.Type.IKSOLVER:
+ return c.type==Blender.Constraint.Type.IKSOLVER
def ikChainLen(c):
return c[Blender.Constraint.Settings.CHAINLEN]
def ikRotationWeight(c):
return c[Blender.Constraint.Settings.ROTWEIGHT]
+def shapeKeyGet(b, index):
+ return b.data[index]
+
+def shapeKeys(b):
+ return b.data
+
if bl.objectHasShapeKey(obj):
# base
for b in bl.objectShapeKeys(obj):
- if b.name=='Basis':
+ if b.name==BASE_SHAPE_NAME:
print(b.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:
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 index in vg:
indices=self.vertexArray.getMappedIndices(index)
for i in indices:
morph.add(indexRelativeMap[i], offset)
- assert(len(morph.offsets)==len(baseMorph.offsets))
+ #assert(len(morph.offsets)==len(baseMorph.offsets))
# sort skinmap
original=self.morphList[:]
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")
bl.meshAddVertexGroup(obj, MMD_SHAPE_GROUP_NAME)
hasShape=False
for i in s.indices:
- if i in vertex_map:
+ if isBlender24():
+ if i in vertex_map:
+ hasShape=True
+ bl.meshAssignVertexGroup(
+ obj, MMD_SHAPE_GROUP_NAME, vertex_map[i], 0)
+ else:
hasShape=True
bl.meshAssignVertexGroup(
- obj, MMD_SHAPE_GROUP_NAME, vertex_map[i], 0)
+ obj, MMD_SHAPE_GROUP_NAME, i, 0)
if not hasShape:
return
assert(base)
face_map, tex_dir)
# enter Edit Mode
- bl.enterEditMode()
+ #bl.enterEditMode()
# crete shape key
__importShape(meshObject, io, vertex_map)
# exit Edit Mode
- bl.exitEditMode()
+ #bl.exitEditMode()
mesh.update()
material_offset+=16