OSDN Git Service

update version
[meshio/pymeshio.git] / examples / pymeshviewer.py
index 491433b..b22e6c1 100644 (file)
@@ -1,20 +1,35 @@
 #!/usr/bin/env python\r
 # coding: utf-8\r
+"""\r
+this script require pyOpenGL, PIL, numpy and Togl(tck/tk).\r
+\r
+Togl install on Windows\r
+=======================\r
+\r
+* download Togl2.0-8.4-Windows.zip\r
+* copy Togl2.0-8.4-Windows/lib/Togl2.0 to C:/PythonXX/tcl/Togl2.0\r
+"""\r
 \r
 import sys\r
 import os\r
-import tkinter\r
-import tkinter.filedialog\r
+try:\r
+    import tkinter\r
+    import tkinter.filedialog as tkinter_filedialog\r
+except ImportError as e:\r
+    import Tkinter as tkinter\r
+    import tkFileDialog as tkinter_filedialog\r
 import togl\r
 import opengl\r
 import opengl.rokuro\r
 import mqobuilder\r
 import pmdbuilder\r
+import pmxbuilder\r
 \r
 \r
 class Frame(tkinter.Frame):\r
     def __init__(self, width, height, master=None, **kw):\r
-        super(Frame, self).__init__(master, **kw)\r
+        #super(Frame, self).__init__(master, **kw)\r
+        tkinter.Frame.__init__(self, master, **kw)\r
         self.master.title('pymeshio viewer')\r
         self.current='.'\r
         # setup menu\r
@@ -27,7 +42,8 @@ class Frame(tkinter.Frame):
         menu_file.add_command(label='Open', under=0, command=self.onOpen)\r
 \r
         # setup opengl widget\r
-        self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(500))\r
+        self.view=opengl.rokuro.RokuroView()\r
+        self.glworld=opengl.BaseController(self.view)\r
         self.glwidget=togl.Widget(self, self.glworld, width=width, height=height)\r
         self.glwidget.pack(fill=tkinter.BOTH, expand=True)\r
 \r
@@ -36,11 +52,12 @@ class Frame(tkinter.Frame):
         self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw())\r
 \r
     def onOpen(self):\r
-        path=tkinter.filedialog.askopenfilename(\r
+        path=tkinter_filedialog.askopenfilename(\r
                 filetypes=[\r
-                    ('poloygon model files', '*.mqo;*.pmd'),\r
+                    ('poloygon model files', '*.mqo;*.pmd;*.pmx'),\r
                     ], \r
                 initialdir=self.current)\r
+        self.current=os.path.dirname(path)\r
         self.load(path)\r
 \r
     def load(self, path):\r
@@ -48,8 +65,12 @@ class Frame(tkinter.Frame):
         if not model:\r
             print('fail to load %s' % path)\r
             return\r
-        self.glworld.setRoot(model)\r
         print('load %s' % path)\r
+        print(model)\r
+        self.glworld.setRoot(model)\r
+        bb=model.get_boundingbox()\r
+        print(bb)\r
+        self.view.look_bb(*bb)\r
         self.glwidget.onDraw()\r
 \r
     def loadModel(self, path):\r
@@ -57,6 +78,10 @@ class Frame(tkinter.Frame):
             return mqobuilder.build(path)\r
         elif path.lower().endswith(".pmd"):\r
             return pmdbuilder.build(path)\r
+        elif path.lower().endswith(".pmx"):\r
+            return pmxbuilder.build(path)\r
+        else:\r
+            print("unknown file format: {0}".format(path))\r
 \r
     def onKeyDown(self, event):\r
         key=event.keycode\r