super(Loader, self).__init__(io)\r
self.read_text=self.get_read_text(text_encoding)\r
if extended_uv>0:\r
- raise pymeshio.common.ParseException("extended uv is not supported", extended_uv)\r
+ raise pymeshio.common.ParseException(\r
+ "extended uv is not supported", extended_uv)\r
self.read_vertex_index=lambda : self.read_uint(vertex_index_size)\r
self.read_texture_index=lambda : self.read_uint(texture_index_size)\r
self.read_material_index=lambda : self.read_uint(material_index_size)\r
)\r
elif deform_type==2:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented Bdef4")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented Bdef4")\r
else:\r
- raise pymeshio.common.ParseException("unknown deform type: {0}".format(deform_type))\r
+ raise pymeshio.common.ParseException(\r
+ "unknown deform type: {0}".format(deform_type))\r
\r
def read_material(self):\r
material=pymeshio.pmx.Material(\r
elif material.toon_sharing_flag==1:\r
material.toon_texture_index=self.read_uint(1)\r
else:\r
- raise pymeshio.common.ParseException("unknown toon_sharing_flag {0}".format(material.toon_sharing_flag))\r
+ raise pymeshio.common.ParseException(\r
+ "unknown toon_sharing_flag {0}".format(\r
+ material.toon_sharing_flag))\r
material.comment=self.read_text()\r
material.index_count=self.read_uint(4)\r
return material\r
elif bone.getConnectionFlag()==1:\r
bone.tail_index=self.read_bone_index()\r
else:\r
- raise pymeshio.common.ParseException("unknown bone conenction flag: {0}".format(\r
+ raise pymeshio.common.ParseException(\r
+ "unknown bone conenction flag: {0}".format(\r
bone.getConnectionFlag()))\r
\r
if bone.getRotationFlag()==1 or bone.getTranslationFlag()==1:\r
loop=self.read_uint(4),\r
limit_radian=self.read_float())\r
link_size=self.read_uint(4)\r
- ik.link=[self.read_ik_link() for _ in range(link_size)]\r
+ ik.link=[self.read_ik_link() \r
+ for _ in range(link_size)]\r
\r
def read_ik_link(self):\r
link=pymeshio.pmx.IkLink(\r
link.limit_min=self.read_vector3()\r
link.limit_max=self.read_vector3()\r
else:\r
- raise pymeshio.common.ParseException("invalid ik link limit_angle: {0}".format(\r
+ raise pymeshio.common.ParseException(\r
+ "invalid ik link limit_angle: {0}".format(\r
link.limit_angle))\r
return link\r
\r
offset_size=self.read_uint(4)\r
if morph_type==0:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented GroupMorph")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented GroupMorph")\r
elif morph_type==1:\r
- morph=pymeshio.pmx.Morph(name, english_name, panel, morph_type)\r
- morph.offsets=[self.read_vertex_morph_offset() for _ in range(offset_size)]\r
+ morph=pymeshio.pmx.Morph(name, english_name, \r
+ panel, morph_type)\r
+ morph.offsets=[self.read_vertex_morph_offset() \r
+ for _ in range(offset_size)]\r
return morph\r
elif morph_type==2:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented BoneMorph")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented BoneMorph")\r
elif morph_type==3:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented UvMorph")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented UvMorph")\r
elif morph_type==4:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented extended UvMorph1")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented extended UvMorph1")\r
elif morph_type==5:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented extended UvMorph2")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented extended UvMorph2")\r
elif morph_type==6:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented extended UvMorph3")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented extended UvMorph3")\r
elif morph_type==7:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented extended UvMorph4")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented extended UvMorph4")\r
elif morph_type==8:\r
# todo\r
- raise pymeshio.common.ParseException("not implemented extended MaterialMorph")\r
+ raise pymeshio.common.ParseException(\r
+ "not implemented extended MaterialMorph")\r
else:\r
- raise pymeshio.common.ParseException("unknown morph type: {0}".format(morph_type))\r
+ raise pymeshio.common.ParseException(\r
+ "unknown morph type: {0}".format(morph_type))\r
\r
def read_vertex_morph_offset(self):\r
- return pymeshio.pmx.VerexMorphOffset(self.read_vertex_index(), self.read_vector3())\r
+ return pymeshio.pmx.VerexMorphOffset(\r
+ self.read_vertex_index(), self.read_vector3())\r
\r
def read_display_slot(self):\r
- pass\r
+ display_slot=pymeshio.pmx.DisplaySlot(self.read_text(), self.read_text(), \r
+ self.read_uint(1))\r
+ display_count=self.read_uint(4)\r
+ for _ in range(display_count):\r
+ display_type=self.read_uint(1)\r
+ if display_type==0:\r
+ display_slot.refrences.append(\r
+ (display_type, self.read_bone_index()))\r
+ elif display_type==1:\r
+ display_slot.refrences.append(\r
+ (display_type, self.read_morph_index()))\r
+ else:\r
+ raise pymeshio.common.ParseException(\r
+ "unknown display_type: {0}".format(display_type))\r
\r
\r
def load(path: str) -> pymeshio.pmx.Model:\r
# header\r
signature=loader.unpack("4s", 4)\r
if signature!=b"PMX ":\r
- raise pymeshio.common.ParseException("invalid signature", loader.signature)\r
+ raise pymeshio.common.ParseException(\r
+ "invalid signature", loader.signature)\r
\r
version=loader.read_float()\r
if version!=2.0:\r
# flags\r
flag_bytes=loader.read_uint(1)\r
if flag_bytes!=8:\r
- raise pymeshio.common.ParseException("invalid flag length", loader.flag_bytes)\r
+ raise pymeshio.common.ParseException(\r
+ "invalid flag length", loader.flag_bytes)\r
text_encoding=loader.read_uint(1)\r
extended_uv=loader.read_uint(1)\r
vertex_index_size=loader.read_uint(1)\r
\r
# model data\r
vertex_count=loader.read_uint(4)\r
- model.vertices=[loader.read_vertex() for _ in range(vertex_count)]\r
+ model.vertices=[loader.read_vertex() \r
+ for _ in range(vertex_count)]\r
\r
index_count=loader.read_uint(4)\r
- model.indices=[loader.read_vertex_index() for _ in range(index_count)]\r
+ model.indices=[loader.read_vertex_index() \r
+ for _ in range(index_count)]\r
\r
texture_count=loader.read_uint(4)\r
- model.textures=[loader.read_text() for _ in range(texture_count)]\r
+ model.textures=[loader.read_text() \r
+ for _ in range(texture_count)]\r
\r
material_count=loader.read_uint(4)\r
- model.materials=[loader.read_material() for _ in range(material_count)]\r
+ model.materials=[loader.read_material() \r
+ for _ in range(material_count)]\r
\r
bone_count=loader.read_uint(4)\r
- model.bones=[loader.read_bone() for _ in range(bone_count)]\r
+ model.bones=[loader.read_bone() \r
+ for _ in range(bone_count)]\r
\r
morph_count=loader.read_uint(4)\r
- model.morphs=[loader.read_morgh() for _ in range(morph_count)]\r
+ model.morphs=[loader.read_morgh() \r
+ for _ in range(morph_count)]\r
\r
display_slot_count=loader.read_uint(4)\r
- model.display_slots=[loader.read_display_slot() for _ in range(display_slot_count)]\r
+ model.display_slots=[loader.read_display_slot() \r
+ for _ in range(display_slot_count)]\r
\r
return model\r
\r