pmx reader\r
"""\r
import io\r
-import pymeshio.common\r
-import pymeshio.pmx\r
+from .. import common\r
+from .. import pmx\r
\r
\r
-class Reader(pymeshio.common.BinaryReader):\r
+class Reader(common.BinaryReader):\r
"""pmx reader\r
"""\r
def __init__(self, ios,\r
super(Reader, self).__init__(ios)\r
self.read_text=self.get_read_text(text_encoding)\r
if extended_uv>0:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"extended uv is not supported", extended_uv)\r
self.read_vertex_index=lambda : self.read_int(vertex_index_size)\r
self.read_texture_index=lambda : self.read_int(texture_index_size)\r
self.read_rigidbody_index=lambda : self.read_int(rigidbody_index_size)\r
\r
def __str__(self):\r
- return '<pymeshio.pmx.Reader>'\r
+ return '<pmx.Reader>'\r
\r
def get_read_text(self, text_encoding):\r
if text_encoding==0:\r
print("unknown text encoding", text_encoding)\r
\r
def read_vertex(self):\r
- return pymeshio.pmx.Vertex(\r
+ return pmx.Vertex(\r
self.read_vector3(), # pos\r
self.read_vector3(), # normal\r
self.read_vector2(), # uv\r
def read_deform(self):\r
deform_type=self.read_int(1)\r
if deform_type==0:\r
- return pymeshio.pmx.Bdef1(self.read_bone_index())\r
+ return pmx.Bdef1(self.read_bone_index())\r
elif deform_type==1:\r
- return pymeshio.pmx.Bdef2(\r
+ return pmx.Bdef2(\r
self.read_bone_index(),\r
self.read_bone_index(),\r
self.read_float()\r
)\r
elif deform_type==2:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented Bdef4")\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"unknown deform type: {0}".format(deform_type))\r
\r
def read_material(self):\r
- material=pymeshio.pmx.Material(\r
+ material=pmx.Material(\r
name=self.read_text(),\r
english_name=self.read_text(),\r
diffuse_color=self.read_rgb(),\r
elif material.toon_sharing_flag==1:\r
material.toon_texture_index=self.read_int(1)\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"unknown toon_sharing_flag {0}".format(\r
material.toon_sharing_flag))\r
material.comment=self.read_text()\r
return material\r
\r
def read_bone(self):\r
- bone=pymeshio.pmx.Bone(\r
+ bone=pmx.Bone(\r
name=self.read_text(),\r
english_name=self.read_text(),\r
position=self.read_vector3(),\r
elif bone.getConnectionFlag()==1:\r
bone.tail_index=self.read_bone_index()\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"unknown bone conenction flag: {0}".format(\r
bone.getConnectionFlag()))\r
\r
return bone\r
\r
def read_ik(self):\r
- ik=pymeshio.pmx.Ik(\r
+ ik=pmx.Ik(\r
target_index=self.read_bone_index(),\r
loop=self.read_int(4),\r
limit_radian=self.read_float())\r
return ik\r
\r
def read_ik_link(self):\r
- link=pymeshio.pmx.IkLink(\r
+ link=pmx.IkLink(\r
self.read_bone_index(),\r
self.read_int(1))\r
if link.limit_angle==0:\r
link.limit_min=self.read_vector3()\r
link.limit_max=self.read_vector3()\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"invalid ik link limit_angle: {0}".format(\r
link.limit_angle))\r
return link\r
offset_size=self.read_int(4)\r
if morph_type==0:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented GroupMorph")\r
elif morph_type==1:\r
- morph=pymeshio.pmx.Morph(name, english_name, \r
+ morph=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(\r
+ raise common.ParseException(\r
"not implemented BoneMorph")\r
elif morph_type==3:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented UvMorph")\r
elif morph_type==4:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented extended UvMorph1")\r
elif morph_type==5:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented extended UvMorph2")\r
elif morph_type==6:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented extended UvMorph3")\r
elif morph_type==7:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented extended UvMorph4")\r
elif morph_type==8:\r
# todo\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"not implemented extended MaterialMorph")\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"unknown morph type: {0}".format(morph_type))\r
\r
def read_vertex_morph_offset(self):\r
- return pymeshio.pmx.VerexMorphOffset(\r
+ return pmx.VerexMorphOffset(\r
self.read_vertex_index(), self.read_vector3())\r
\r
def read_display_slot(self):\r
- display_slot=pymeshio.pmx.DisplaySlot(self.read_text(), self.read_text(), \r
+ display_slot=pmx.DisplaySlot(self.read_text(), self.read_text(), \r
self.read_int(1))\r
display_count=self.read_int(4)\r
for _ in range(display_count):\r
display_slot.refrences.append(\r
(display_type, self.read_morph_index()))\r
else:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"unknown display_type: {0}".format(display_type))\r
return display_slot\r
\r
def read_rigidbody(self):\r
- return pymeshio.pmx.RigidBody(\r
+ return pmx.RigidBody(\r
name=self.read_text(), \r
english_name=self.read_text(),\r
bone_index=self.read_bone_index(),\r
)\r
\r
def read_joint(self):\r
- return pymeshio.pmx.Joint(\r
+ return pmx.Joint(\r
name=self.read_text(),\r
english_name=self.read_text(),\r
joint_type=self.read_int(1),\r
\r
def read_from_file(path):\r
"""\r
- read from file path, then return the pymeshio.pmx.Model.\r
+ read from file path, then return the pmx.Model.\r
\r
:Parameters:\r
path\r
file path\r
\r
- >>> import pymeshio.pmx.reader\r
- >>> m=pymeshio.pmx.reader.read_from_file('resources/初音ミクVer2.pmx')\r
+ >>> import pmx.reader\r
+ >>> m=pmx.reader.read_from_file('resources/初音ミクVer2.pmx')\r
>>> print(m)\r
<pmx-2.0 "Miku Hatsune" 12354vertices>\r
\r
"""\r
- pmx=read(io.BytesIO(pymeshio.common.readall(path)))\r
+ pmx=read(io.BytesIO(common.readall(path)))\r
pmx.path=path\r
return pmx\r
\r
\r
def read(ios):\r
"""\r
- read from ios, then return the pmx pymeshio.pmx.Model.\r
+ read from ios, then return the pmx pmx.Model.\r
\r
:Parameters:\r
ios\r
input stream (in io.IOBase)\r
\r
- >>> import pymeshio.pmx.reader\r
- >>> m=pymeshio.pmx.reader.read(io.open('resources/初音ミクVer2.pmx', 'rb'))\r
+ >>> import pmx.reader\r
+ >>> m=pmx.reader.read(io.open('resources/初音ミクVer2.pmx', 'rb'))\r
>>> print(m)\r
<pmx-2.0 "Miku Hatsune" 12354vertices>\r
\r
"""\r
assert(isinstance(ios, io.IOBase))\r
- reader=pymeshio.common.BinaryReader(ios)\r
+ reader=common.BinaryReader(ios)\r
\r
# header\r
signature=reader.unpack("4s", 4)\r
if signature!=b"PMX ":\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"invalid signature", signature)\r
\r
version=reader.read_float()\r
if version!=2.0:\r
print("unknown version", version)\r
- model=pymeshio.pmx.Model(version)\r
+ model=pmx.Model(version)\r
\r
# flags\r
flag_bytes=reader.read_int(1)\r
if flag_bytes!=8:\r
- raise pymeshio.common.ParseException(\r
+ raise common.ParseException(\r
"invalid flag length", reader.flag_bytes)\r
text_encoding=reader.read_int(1)\r
extended_uv=reader.read_int(1)\r