X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=sidebyside;f=examples%2Fpymeshviewer.py;h=b22e6c1432c34af01a98ca1f6fd4403b45c4dc93;hb=a678c04bd9942eb915a1d07caac747ef5d0f8556;hp=25927b87fcc421bc02f832e541be460df9d50fbf;hpb=59c9ecf38678e09fa3159409cba65827d979d5e5;p=meshio%2Fpymeshio.git diff --git a/examples/pymeshviewer.py b/examples/pymeshviewer.py index 25927b8..b22e6c1 100644 --- a/examples/pymeshviewer.py +++ b/examples/pymeshviewer.py @@ -1,19 +1,35 @@ #!/usr/bin/env python # coding: utf-8 +""" +this script require pyOpenGL, PIL, numpy and Togl(tck/tk). + +Togl install on Windows +======================= + +* download Togl2.0-8.4-Windows.zip +* copy Togl2.0-8.4-Windows/lib/Togl2.0 to C:/PythonXX/tcl/Togl2.0 +""" import sys import os -import tkinter -import tkinter.filedialog +try: + import tkinter + import tkinter.filedialog as tkinter_filedialog +except ImportError as e: + import Tkinter as tkinter + import tkFileDialog as tkinter_filedialog import togl import opengl import opengl.rokuro import mqobuilder +import pmdbuilder +import pmxbuilder class Frame(tkinter.Frame): def __init__(self, width, height, master=None, **kw): - super(Frame, self).__init__(master, **kw) + #super(Frame, self).__init__(master, **kw) + tkinter.Frame.__init__(self, master, **kw) self.master.title('pymeshio viewer') self.current='.' # setup menu @@ -26,7 +42,8 @@ class Frame(tkinter.Frame): menu_file.add_command(label='Open', under=0, command=self.onOpen) # setup opengl widget - self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25)) + self.view=opengl.rokuro.RokuroView() + self.glworld=opengl.BaseController(self.view) self.glwidget=togl.Widget(self, self.glworld, width=width, height=height) self.glwidget.pack(fill=tkinter.BOTH, expand=True) @@ -35,29 +52,36 @@ class Frame(tkinter.Frame): self.bind('', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw()) def onOpen(self): - filename=tkinter.filedialog.askopenfilename( + path=tkinter_filedialog.askopenfilename( filetypes=[ - ('poloygon model files', '*.mqo;*.pmd'), + ('poloygon model files', '*.mqo;*.pmd;*.pmx'), ], initialdir=self.current) - if filename.lower().endswith(".mqo"): - self.loadMqo(filename) - elif filename.lower().endswith(".pmd"): - self.loadPmd(filename) - self.current=os.path.dirname(filename) - - def loadMqo(self, path): - # load scenee - model=mqobuilder.build(path) + self.current=os.path.dirname(path) + self.load(path) + + def load(self, path): + model=self.loadModel(path) if not model: print('fail to load %s' % path) return + print('load %s' % path) + print(model) self.glworld.setRoot(model) - print('loadMqo %s' % path) + bb=model.get_boundingbox() + print(bb) + self.view.look_bb(*bb) self.glwidget.onDraw() - def loadPmd(self, path): - print('loadPmd %s' % path) + def loadModel(self, path): + if path.lower().endswith(".mqo"): + return mqobuilder.build(path) + elif path.lower().endswith(".pmd"): + return pmdbuilder.build(path) + elif path.lower().endswith(".pmx"): + return pmxbuilder.build(path) + else: + print("unknown file format: {0}".format(path)) def onKeyDown(self, event): key=event.keycode @@ -75,5 +99,7 @@ if __name__ == '__main__': f = Frame(width=600, height=600) f.pack(fill=tkinter.BOTH, expand=True) f.focus_set() + if len(sys.argv)>1: + f.load(sys.argv[1]) f.mainloop()