import pymeshio.pmd\r
\r
\r
-class Loader(pymeshio.common.BinaryLoader):\r
- """pmx loader\r
+class Reader(pymeshio.common.BinaryReader):\r
+ """pmx reader\r
"""\r
def __init__(self, ios, version):\r
- super(Loader, self).__init__(ios)\r
+ super(Reader, self).__init__(ios)\r
self.version=version\r
\r
def read_text(self, size):\r
\r
\r
\r
-def __load(loader, model):\r
+def __read(reader, model):\r
# model info\r
- model.name=loader.read_text(20)\r
- model.comment=loader.read_text(256) \r
+ model.name=reader.read_text(20)\r
+ model.comment=reader.read_text(256) \r
\r
# model data\r
- model.vertices=[loader.read_vertex()\r
- for _ in range(loader.read_uint(4))]\r
- model.indices=[loader.read_uint(2)\r
- for _ in range(loader.read_uint(4))]\r
- model.materials=[loader.read_material()\r
- for _ in range(loader.read_uint(4))]\r
- model.bones=[loader.read_bone()\r
- for _ in range(loader.read_uint(2))]\r
- model.ik_list=[loader.read_ik()\r
- for _ in range(loader.read_uint(2))]\r
- model.morphs=[loader.read_morph()\r
- for _ in range(loader.read_uint(2))]\r
- model.morph_indices=[loader.read_uint(2)\r
- for _ in range(loader.read_uint(1))]\r
- model.bone_group_list=[loader.read_text(50)\r
- for _ in range(loader.read_uint(1))]\r
- model.bone_display_list=[(loader.read_uint(2), loader.read_uint(1))\r
- for _i in range(loader.read_uint(4))]\r
-\r
- if loader.is_end():\r
+ model.vertices=[reader.read_vertex()\r
+ for _ in range(reader.read_uint(4))]\r
+ model.indices=[reader.read_uint(2)\r
+ for _ in range(reader.read_uint(4))]\r
+ model.materials=[reader.read_material()\r
+ for _ in range(reader.read_uint(4))]\r
+ model.bones=[reader.read_bone()\r
+ for _ in range(reader.read_uint(2))]\r
+ model.ik_list=[reader.read_ik()\r
+ for _ in range(reader.read_uint(2))]\r
+ model.morphs=[reader.read_morph()\r
+ for _ in range(reader.read_uint(2))]\r
+ model.morph_indices=[reader.read_uint(2)\r
+ for _ in range(reader.read_uint(1))]\r
+ model.bone_group_list=[reader.read_text(50)\r
+ for _ in range(reader.read_uint(1))]\r
+ model.bone_display_list=[(reader.read_uint(2), reader.read_uint(1))\r
+ for _i in range(reader.read_uint(4))]\r
+\r
+ if reader.is_end():\r
# EOF\r
return True\r
\r
############################################################\r
# extend1: english name\r
############################################################\r
- if loader.read_uint(1)==0:\r
+ if reader.read_uint(1)==0:\r
print("no extend flag")\r
return True\r
- model.english_name=loader.read_text(20)\r
- model.english_comment=loader.read_text(256)\r
+ model.english_name=reader.read_text(20)\r
+ model.english_comment=reader.read_text(256)\r
for bone in model.bones:\r
- bone.english_name=loader.read_text(20)\r
+ bone.english_name=reader.read_text(20)\r
for morph in model.morphs:\r
if morph.name==b'base':\r
continue\r
- morph.english_name=loader.read_text(20)\r
- model.bone_group_english_list=[loader.read_text(50)\r
+ morph.english_name=reader.read_text(20)\r
+ model.bone_group_english_list=[reader.read_text(50)\r
for _ in model.bone_group_list]\r
\r
############################################################\r
# extend2: toon_textures\r
############################################################\r
- if loader.is_end():\r
+ if reader.is_end():\r
# EOF\r
return True\r
- model.toon_textures=[loader.read_text(100)\r
+ model.toon_textures=[reader.read_text(100)\r
for _ in range(10)]\r
\r
############################################################\r
# extend2: rigidbodies and joints\r
############################################################\r
- if loader.is_end():\r
+ if reader.is_end():\r
# EOF\r
return True\r
- model.rigidbodies=[loader.read_rigidbody()\r
- for _ in range(loader.read_uint(4))]\r
- model.joints=[loader.read_joint()\r
- for _ in range(loader.read_uint(4))]\r
+ model.rigidbodies=[reader.read_rigidbody()\r
+ for _ in range(reader.read_uint(4))]\r
+ model.joints=[reader.read_joint()\r
+ for _ in range(reader.read_uint(4))]\r
\r
return True\r
\r
\r
-def load_from_file(path):\r
- return load(io.BytesIO(pymeshio.common.readall(path)))\r
+def read_from_file(path):\r
+ return read(io.BytesIO(pymeshio.common.readall(path)))\r
\r
\r
-def load(ios):\r
+def read(ios):\r
assert(isinstance(ios, io.IOBase))\r
- loader=pymeshio.common.BinaryLoader(ios)\r
+ reader=pymeshio.common.BinaryReader(ios)\r
\r
# header\r
- signature=loader.unpack("3s", 3)\r
+ signature=reader.unpack("3s", 3)\r
if signature!=b"Pmd":\r
raise pymeshio.common.ParseException(\r
"invalid signature: {0}".format(signature))\r
- version=loader.read_float()\r
+ version=reader.read_float()\r
\r
model=pymeshio.pmd.Model(version)\r
- loader=Loader(loader.ios, version)\r
- if(__load(loader, model)):\r
+ reader=Reader(reader.ios, version)\r
+ if(__read(reader, model)):\r
# check eof\r
- if not loader.is_end():\r
+ if not reader.is_end():\r
#print("can not reach eof.")\r
pass\r
\r