'ik',\r
]\r
def __init__(self,\r
- name: str,\r
- english_name: str,\r
- position: common.Vector3,\r
- parent_index: int,\r
- layer: int,\r
- flag: int\r
+ name,\r
+ english_name,\r
+ position,\r
+ parent_index,\r
+ layer,\r
+ flag\r
):\r
self.name=name,\r
self.english_name=english_name\r
self.layer=layer\r
self.flag=flag\r
\r
- def getConnectionFlag(self) -> int:\r
+ def getConnectionFlag(self):\r
return self.flag & 0x0001\r
\r
- def getIkFlag(self) -> int:\r
+ def getIkFlag(self):\r
return (self.flag & 0x0020) >> 5\r
\r
- def getRotationFlag(self) -> int:\r
+ def getRotationFlag(self):\r
return (self.flag & 0x0100) >> 8\r
\r
- def getTranslationFlag(self) -> int:\r
+ def getTranslationFlag(self):\r
return (self.flag & 0x0200) >> 9\r
\r
- def getFixedAxisFlag(self) -> int:\r
+ def getFixedAxisFlag(self):\r
return (self.flag & 0x0400) >> 10\r
\r
- def getLocalCoordinateFlag(self) -> int:\r
+ def getLocalCoordinateFlag(self):\r
return (self.flag & 0x0800) >> 11\r
\r
- def getExternalParentDeformFlag(self) -> int:\r
+ def getExternalParentDeformFlag(self):\r
return (self.flag & 0x2000) >> 13\r
\r
\r
'toon_sharing_flag',\r
'toon_texture_index',\r
'comment',\r
- 'index_count',\r
+ 'vertex_count',\r
]\r
def __init__(self,\r
- name: str,\r
- english_name: str,\r
- diffuse_color: common.RGB,\r
- diffuse_alpha: float,\r
- specular_color: common.RGB,\r
- specular_factor: float,\r
- ambient_color: common.RGB,\r
- flag: int,\r
- edge_color: common.RGBA,\r
- edge_size: float,\r
- texture_index: int,\r
- sphia_texture_index: int,\r
- sphia_mode: int,\r
- toon_sharing_flag: int\r
+ name,\r
+ english_name,\r
+ diffuse_color,\r
+ diffuse_alpha,\r
+ specular_color,\r
+ specular_factor,\r
+ ambient_color,\r
+ flag,\r
+ edge_color,\r
+ edge_size,\r
+ texture_index,\r
+ sphia_texture_index,\r
+ sphia_mode,\r
+ toon_sharing_flag\r
):\r
self.name=name\r
self.english_name=english_name\r
#\r
self.toon_texture_index=None\r
self.comment=''\r
- self.index_count=0\r
+ self.vertex_count=0\r
+\r
+ def __str__(self):\r
+ return ("<pmx.Material {name}>".format(\r
+ name=self.english_name\r
+ ))\r
\r
\r
class Deform(object):\r
\r
Attributes: see __init__\r
"""\r
- __slots__=[ 'bone_index']\r
- def __init__(self, bone_index: int):\r
- self.bone_index=bone_index\r
+ __slots__=[ 'index0']\r
+ def __init__(self, index0):\r
+ self.index0=index0\r
\r
\r
class Bdef2(object):\r
"""\r
__slots__=[ 'index0', 'index1', 'weight0']\r
def __init__(self, \r
- index0: int,\r
- index1: int,\r
- weight0: float):\r
+ index0,\r
+ index1,\r
+ weight0):\r
self.index0=index0\r
self.index1=index1\r
self.weight0=weight0\r
"""\r
__slots__=[ 'position', 'normal', 'uv', 'deform', 'edge_factor' ]\r
def __init__(self, \r
- position: common.Vector3, \r
- normal: common.Vector3, \r
- uv: common.Vector2, \r
- deform: Deform, \r
- edge_factor: float):\r
+ position, \r
+ normal, \r
+ uv, \r
+ deform, \r
+ edge_factor):\r
self.position=position \r
self.normal=normal\r
self.uv=uv\r
self.edge_factor=edge_factor\r
\r
\r
+class Morph(object):\r
+ """pmx morph\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ panel:\r
+ morph_type:\r
+ offsets:\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'panel',\r
+ 'morph_type',\r
+ 'offsets',\r
+ ]\r
+ def __init__(self, name, english_name, panel, morph_type):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.panel=panel\r
+ self.morph_type=morph_type\r
+ self.offsets=[]\r
+\r
+\r
+class VerexMorphOffset(object):\r
+ """pmx vertex morph offset\r
+\r
+ Attributes:\r
+ vertex_index:\r
+ position_offset: Vector3\r
+ """\r
+ __slots__=[\r
+ 'vertex_index',\r
+ 'position_offset',\r
+ ]\r
+ def __init__(self, vertex_index, position_offset):\r
+ self.vertex_index=vertex_index\r
+ self.position_offset=position_offset\r
+\r
+\r
+class DisplaySlot(object):\r
+ """pmx display slot\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ special_flag:\r
+ refrences: list of (ref_type, ref_index)\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'special_flag',\r
+ 'refrences',\r
+ ]\r
+ def __init__(self, name, english_name, special_flag):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.special_flag=special_flag\r
+ self.refrences=[]\r
+\r
+\r
+class Shape(object):\r
+ pass\r
+\r
+\r
+class SphereShape(Shape):\r
+ __slots__=['radius']\r
+ def __init__(self, radius):\r
+ self.radius=radius\r
+\r
+\r
+class CapsuleShape(Shape):\r
+ __slots__=['short_radius', 'long_radius']\r
+ def __init__(self, short_radius, long_radius): \r
+ self.short_radius=short_radius\r
+ self.long_radius=long_radius\r
+\r
+\r
+class BoxShape(Shape):\r
+ __slots__=['x', 'y', 'z']\r
+ def __init__(self, x, y, z):\r
+ self.x=x\r
+ self.y=y\r
+ self.z=z\r
+\r
+\r
+class RigidBodyParam(object):\r
+ """pmx rigidbody param(for bullet)\r
+\r
+ Attributes:\r
+ mass:\r
+ linear_damping:\r
+ angular_damping:\r
+ restitution:\r
+ friction:\r
+ """\r
+ __slots__=[\r
+ 'mass',\r
+ 'linear_damping',\r
+ 'angular_damping',\r
+ 'restitution',\r
+ 'friction',\r
+ ]\r
+ def __init__(self, mass, \r
+ linear_damping, angular_damping, restitution, friction):\r
+ self.mass=mass\r
+ self.linear_damping=linear_damping\r
+ self.angular_damping=angular_damping\r
+ self.restitution=restitution\r
+ self.friction=friction\r
+\r
+\r
+class RigidBody(object):\r
+ """pmx rigidbody\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ bone_index:\r
+ collision_group:\r
+ no_collision_group:\r
+ shape:\r
+ param:\r
+ mode:\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'bone_index',\r
+ 'collision_group',\r
+ 'no_collision_group',\r
+ 'shape',\r
+ 'param',\r
+ 'mode',\r
+ ]\r
+ def __init__(self,\r
+ name,\r
+ english_name,\r
+ bone_index,\r
+ collision_group,\r
+ no_collision_group,\r
+ shape_type,\r
+ shape_size,\r
+ shape_position,\r
+ shape_rotation,\r
+ mass,\r
+ linear_damping,\r
+ angular_damping,\r
+ restitution,\r
+ friction,\r
+ mode\r
+ ):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.bone_index=bone_index\r
+ self.collision_group=collision_group\r
+ self.no_collision_group=no_collision_group\r
+ if shape_type==0:\r
+ self.shape=SphereShape(shape_size.x)\r
+ elif shape_type==1:\r
+ self.shape=BoxShape(shape_size.x, shape_size.y, shape_size.z)\r
+ elif shape_type==2:\r
+ self.shape=CapsuleShape(shape_size.x, shape_size.y)\r
+ else:\r
+ raise pymeshio.common.ParseException(\r
+ "unknown shape_type: {0}".format(shape_type))\r
+ self.param=RigidBodyParam(mass,\r
+ linear_damping, angular_damping,\r
+ restitution, friction)\r
+ self.mode=mode\r
+\r
+\r
+class Joint(object):\r
+ """pmx joint\r
+\r
+ Attributes:\r
+ name: \r
+ english_name: \r
+ joint_type:\r
+ rigidbody_index_a:\r
+ rigidbody_index_b:\r
+ position: Vector3\r
+ rotation: Vector3\r
+ translation_limit_min: Vector3\r
+ translation_limit_max: Vector3\r
+ rotation_limit_min: Vector3\r
+ rotation_limit_max: Vector3\r
+ spring_constant_translation: Vector3\r
+ spring_constant_rotation: Vector3\r
+ """\r
+ __slots__=[\r
+ 'name',\r
+ 'english_name',\r
+ 'joint_type',\r
+ 'rigidbody_index_a',\r
+ 'rigidbody_index_b',\r
+ 'position',\r
+ 'rotation',\r
+ 'translation_limit_min',\r
+ 'translation_limit_max',\r
+ 'rotation_limit_min',\r
+ 'rotation_limit_max',\r
+ 'spring_constant_translation',\r
+ 'spring_constant_rotation',\r
+ ]\r
+ def __init__(self, name, english_name,\r
+ joint_type,\r
+ rigidbody_index_a,\r
+ rigidbody_index_b,\r
+ position,\r
+ rotation,\r
+ translation_limit_min,\r
+ translation_limit_max,\r
+ rotation_limit_min,\r
+ rotation_limit_max,\r
+ spring_constant_translation,\r
+ spring_constant_rotation\r
+ ):\r
+ self.name=name\r
+ self.english_name=english_name\r
+ self.joint_type=joint_type\r
+ self.rigidbody_index_a=rigidbody_index_a\r
+ self.rigidbody_index_b=rigidbody_index_b\r
+ self.position=position\r
+ self.rotation=rotation\r
+ self.translation_limit_min=translation_limit_min\r
+ self.translation_limit_max=translation_limit_max\r
+ self.rotation_limit_min=rotation_limit_min\r
+ self.rotation_limit_max=rotation_limit_max\r
+ self.spring_constant_translation=spring_constant_translation\r
+ self.spring_constant_rotation=spring_constant_rotation\r
+\r
+\r
class Model(object):\r
"""pmx data representation\r
\r
textures:\r
materials:\r
bones:\r
+ morph:\r
+ display_slots:\r
+ rigidbodies:\r
+ joints:\r
"""\r
__slots__=[\r
'version', # pmx version\r
'textures',\r
'materials',\r
'bones',\r
+ 'morphs',\r
+ 'display_slots',\r
+ 'rigidbodies',\r
+ 'joints',\r
]\r
- def __init__(self):\r
- self.version=0.0\r
+ def __init__(self, version):\r
+ self.version=version\r
self.name=''\r
self.english_name=''\r
self.comment=''\r
self.textures=[]\r
self.materials=[]\r
self.bones=[]\r
+ self.rigidbodies=[]\r
+ self.joints=[]\r
+\r
+ def __str__(self):\r
+ return ('<pmx-{version} "{name}" {vertices}vertices>'.format(\r
+ version=self.version,\r
+ name=self.english_name,\r
+ vertices=len(self.vertices)\r
+ ))\r
\r