import math\r
import struct\r
import sys\r
+import io\r
\r
\r
def unicode(src):\r
"""general BinaryReader\r
"""\r
def __init__(self, ios):\r
+ current=ios.tell()\r
+ ios.seek(0, io.SEEK_END)\r
+ self.end=ios.tell()\r
+ ios.seek(current)\r
self.ios=ios\r
\r
def is_end(self):\r
- return not self.ios.readable()\r
+ #print(self.ios.tell(), self.end)\r
+ return self.ios.tell()>=self.end\r
+ #return not self.ios.readable()\r
\r
def unpack(self, fmt, size):\r
result=struct.unpack(fmt, self.ios.read(size))\r
# bones
def get_panel(m):
return 1
- base=src.morphs[0]
- assert(base.name==b"base")
- dst.morphs=[
- pmx.Morph(
- name=m.name.decode('cp932'),
- english_name=m.english_name.decode('cp932'),
- panel=get_panel(m),
- morph_type=1,
- offsets=[pmx.VerexMorphOffset(base.indices[i], pos)
- for i, pos in zip(m.indices, m.pos_list)]
- )
- for i, m in enumerate(src.morphs) if m.name!=b"base"]
+ if len(src.morphs)>0:
+ base=src.morphs[0]
+ assert(base.name==b"base")
+ dst.morphs=[
+ pmx.Morph(
+ name=m.name.decode('cp932'),
+ english_name=m.english_name.decode('cp932'),
+ panel=get_panel(m),
+ morph_type=1,
+ offsets=[pmx.VerexMorphOffset(base.indices[i], pos)
+ for i, pos in zip(m.indices, m.pos_list)]
+ )
+ for i, m in enumerate(src.morphs) if m.name!=b"base"]
# display_slots
dst.display_slots=[
pmx.DisplaySlot(u('Root'), u('Root'), 1),
############################################################\r
# extend1: english name\r
############################################################\r
- if reader.read_uint(1)==0:\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
- for bone in model.bones:\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=reader.read_text(20)\r
- for g in model.bone_group_list:\r
- g.english_name=reader.read_text(50)\r
+ if reader.read_uint(1)==1:\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
+ for bone in model.bones:\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=reader.read_text(20)\r
+ for g in model.bone_group_list:\r
+ g.english_name=reader.read_text(50)\r
\r
\r
############################################################\r