#coding: utf-8\r
+"""\r
+pmd reader\r
+"""\r
import io\r
from .. import common\r
from .. import pmd\r
specular_factor=self.read_float(),\r
specular_color=self.read_rgb(),\r
ambient_color=self.read_rgb(),\r
- toon_index=self.read_uint(1),\r
+ toon_index=self.read_int(1),\r
edge_flag=self.read_uint(1),\r
vertex_count=self.read_uint(4),\r
texture_file=self.read_text(20)\r
def read_rigidbody(self):\r
return pmd.RigidBody(\r
name=self.read_text(20), \r
- bone_index=self.read_uint(2),\r
- collision_group=self.read_uint(1),\r
- no_collision_group=self.read_uint(2),\r
+ bone_index=self.read_int(2),\r
+ collision_group=self.read_int(1),\r
+ no_collision_group=self.read_int(2),\r
shape_type=self.read_uint(1),\r
shape_size=self.read_vector3(),\r
shape_position=self.read_vector3(),\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
+ model.bone_group_list=[pmd.BoneGroup(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
# extend1: english name\r
############################################################\r
if reader.read_uint(1)==0:\r
- print("no extend flag")\r
+ #print("no extend flag")\r
return True\r
model.english_name=reader.read_text(20)\r
model.english_comment=reader.read_text(256)\r
if morph.name==b'base':\r
continue\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
+ for g in model.bone_group_list:\r
+ g.english_name=reader.read_text(50)\r
+\r
\r
############################################################\r
# extend2: toon_textures\r
if reader.is_end():\r
# EOF\r
return True\r
+\r
model.rigidbodies=[reader.read_rigidbody()\r
for _ in range(reader.read_uint(4))]\r
model.joints=[reader.read_joint()\r
\r
\r
def read_from_file(path):\r
- return read(io.BytesIO(common.readall(path)))\r
+ """\r
+ read from file path, then return the pymeshio.pmd.Model.\r
+\r
+ :Parameters:\r
+ path\r
+ file path\r
+\r
+ >>> import pymeshio.pmd.reader\r
+ >>> m=pymeshio.pmd.reader.read_from_file('resources/初音ミクVer2.pmd')\r
+ >>> print(m)\r
+ <pmd-2.0 "Miku Hatsune" 12354vertices>\r
+\r
+ """\r
+ pmd=read(io.BytesIO(common.readall(path)))\r
+ pmd.path=path\r
+ return pmd\r
\r
\r
def read(ios):\r
+ """\r
+ read from ios, then return the pymeshio.pmd.Model.\r
+\r
+ :Parameters:\r
+ ios\r
+ input stream (in io.IOBase)\r
+\r
+ >>> import pymeshio.pmd.reader\r
+ >>> m=pymeshio.pmd.reader.read(io.open('resources/初音ミクVer2.pmd', 'rb'))\r
+ >>> print(m)\r
+ <pmd-2.0 "Miku Hatsune" 12354vertices>\r
+\r
+ """\r
assert(isinstance(ios, io.IOBase))\r
reader=common.BinaryReader(ios)\r
\r
\r
# build bone tree\r
for i, child in enumerate(model.bones):\r
+ child.index=i\r
if child.parent_index==0xFFFF:\r
# no parent\r
model.no_parent_bones.append(child)\r