X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=examples%2Fpymeshviewer.py;h=b22e6c1432c34af01a98ca1f6fd4403b45c4dc93;hb=a678c04bd9942eb915a1d07caac747ef5d0f8556;hp=06146b36df196fb22c28286de7328c3288112489;hpb=6fcd334d6c80537283ab6afb30603d243178c768;p=meshio%2Fpymeshio.git diff --git a/examples/pymeshviewer.py b/examples/pymeshviewer.py index 06146b3..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(500)) + 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,17 +52,25 @@ class Frame(tkinter.Frame): self.bind('', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw()) def onOpen(self): - path=tkinter.filedialog.askopenfilename( + path=tkinter_filedialog.askopenfilename( filetypes=[ - ('poloygon model files', '*.mqo;*.pmd'), + ('poloygon model files', '*.mqo;*.pmd;*.pmx'), ], initialdir=self.current) + 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 - self.glworld.setRoot(model) print('load %s' % path) + print(model) + self.glworld.setRoot(model) + bb=model.get_boundingbox() + print(bb) + self.view.look_bb(*bb) self.glwidget.onDraw() def loadModel(self, path): @@ -53,6 +78,10 @@ class Frame(tkinter.Frame): 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 @@ -70,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()