-
- return dst
-
- def is_visible(b):
- if isinstance(b, pmd.Bone_Unvisible):
- return False
- else:
- return True
- def is_manupilatable(b):
- return True
- def has_ik(b):
- return False
- def is_fixed_axis(b):
- if isinstance(b, pmd.Bone_Rolling):
- return True
- def is_local_axis(b):
- pass
- def after_physics(b):
- pass
- def external_parent(b):
- pass
- def get_bone_flag(b):
- return (
- (1 if is_connected(b) else 0)+
- (2 if is_rotatable(b) else 0)+
- (4 if is_movable(b) else 0)+
- (8 if is_visible(b) else 0)+
-
- (16 if is_manupilatable(b) else 0)+
- (32 if has_ik(b) else 0)+
- 0+
- 0+
-
- (256 if isinstance(b, pmd.Bone_RotateInfl) else 0)+
- 0+
- (1024 if is_fixed_axis(b) else 0)+
- (2048 if is_local_axis(b) else 0)+
-
- (4096 if after_physics(b) else 0)+
- (8192 if external_parent(b) else 0)
+ # bones
+ def get_panel(m):
+ return 1
+ if len(src.morphs)>0:
+ base=src.morphs[0]
+ assert(base.name==b"base")
+ dst.morphs=[
+ pmx.Morph(
+ name=m.name.decode('cp932'),
+ english_name=m.english_name.decode('cp932'),
+ panel=get_panel(m),
+ morph_type=1,
+ offsets=[pmx.VertexMorphOffset(base.indices[i], pos)
+ for i, pos in zip(m.indices, m.pos_list)]
+ )
+ for i, m in enumerate(src.morphs) if m.name!=b"base"]
+ # display_slots
+ dst.display_slots=[
+ pmx.DisplaySlot(u('Root'), u('Root'), 1),
+ pmx.DisplaySlot(u('表情'), u('Exp'), 1)]+[
+ pmx.DisplaySlot(
+ name=g.name.strip().decode('cp932'),
+ english_name=g.english_name.strip().decode('cp932'),
+ special_flag=0)
+ for i, g in enumerate(src.bone_group_list)]
+ # rigidbodies
+ dst.rigidbodies=[
+ pmx.RigidBody(
+ name=r.name.decode("cp932"),
+ english_name=u(""),
+ bone_index=r.bone_index,
+ collision_group=r.collision_group,
+ no_collision_group=r.no_collision_group,
+ shape_type=r.shape_type,
+ shape_size=r.shape_size,
+ shape_position=(r.shape_position+src.bones[0].pos if r.bone_index==-1
+ else r.shape_position+src.bones[r.bone_index].pos),
+ shape_rotation=r.shape_rotation,
+ mass=r.mass,
+ linear_damping=r.linear_damping,
+ angular_damping=r.angular_damping,
+ restitution=r.restitution,
+ friction=r.friction,
+ mode=r.mode