OSDN Git Service
(root)
/
meshio
/
meshio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix.
[meshio/meshio.git]
/
swig
/
blender
/
pmd_export.py
diff --git
a/swig/blender/pmd_export.py
b/swig/blender/pmd_export.py
index
c0e52cb
..
2e8703d
100644
(file)
--- a/
swig/blender/pmd_export.py
+++ b/
swig/blender/pmd_export.py
@@
-373,14
+373,13
@@
class OneSkinMesh(object):
if bl.objectHasShapeKey(obj):
# base
for b in bl.objectShapeKeys(obj):
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):
baseMorph=self.__getOrCreateMorph('base', 0)
relativeIndex=0
basis=b
for index in bl.meshVertexGroup(obj, MMD_SHAPE_GROUP_NAME):
- v=b
.data[index]
+ v=b
l.shapeKeyGet(b, index)
pos=[v[0], v[1], v[2]]
indices=self.vertexArray.getMappedIndices(index)
for i in indices:
pos=[v[0], v[1], v[2]]
indices=self.vertexArray.getMappedIndices(index)
for i in indices:
@@
-390,29
+389,30
@@
class OneSkinMesh(object):
break
assert(basis)
break
assert(basis)
+ print(basis.name, len(baseMorph.offsets))
if(len(baseMorph.offsets)>0):
baseMorph.sort()
# shape keys
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)),
continue
print(b.name)
morph=self.__getOrCreateMorph(b.name, 4)
for index, src, dst in zip(
xrange(len(blenderMesh.verts)),
- b
asis.data
,
- b
.data
):
+ b
l.shapeKeys(basis)
,
+ b
l.shapeKeys(b)
):
offset=[dst[0]-src[0], dst[1]-src[1], dst[2]-src[2]]
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)
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[:]
# sort skinmap
original=self.morphList[:]
@@
-611,6
+611,7
@@
class PmdExporter(object):
for node in object_node_map.values():
if node.o.parent:
object_node_map[node.o.parent].children.append(node)
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]
# ルートを得る
root=object_node_map[scene.objects.active]
@@
-718,13
+719,9
@@
class PmdExporter(object):
assert(i<vertexCount)
for i in xrange(0, len(indices), 3):
# reverse triangle
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])
- #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:
# bones
for b in self.builder.bones:
@@
-796,9
+793,8
@@
class PmdExporter(object):
v=englishmap.getUnicodeSkinName(m.name)
assert(v)
cp932=v[1].encode('cp932')
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:
m.type=v[2]
morph.type=v[2]
for index, offset in m.offsets:
@@
-828,9
+824,8
@@
class PmdExporter(object):
boneDisplayName.name=name.decode('utf-8').encode('cp932')
boneDisplayName.english_name=english
else:
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")
boneDisplayName=createBoneDisplayName("IK\n", "IK\n")
boneDisplayName=createBoneDisplayName("体(上)\n", "Body[u]\n")
boneDisplayName=createBoneDisplayName("髪\n", "Hair\n")
@@
-910,6
+905,10
@@
def getBoneDisplayGroup(bone):
def __execute(filename, scene):
def __execute(filename, scene):
+ if not scene.objects.active:
+ print("abort. no active object.")
+ return
+
exporter=PmdExporter()
exporter.setup(scene)
exporter.write(filename)
exporter=PmdExporter()
exporter.setup(scene)
exporter.write(filename)