OSDN Git Service

add mqo loader
[meshio/pymeshio.git] / examples / pymeshviewer.py
index 2063c8e..25927b8 100644 (file)
@@ -2,12 +2,13 @@
 # coding: utf-8\r
 \r
 import sys\r
+import os\r
 import tkinter\r
 import tkinter.filedialog\r
 import togl\r
 import opengl\r
 import opengl.rokuro\r
-import triangle\r
+import mqobuilder\r
 \r
 \r
 class Frame(tkinter.Frame):\r
@@ -20,18 +21,18 @@ class Frame(tkinter.Frame):
         self.master.config(menu=menu_bar)\r
 \r
         menu_file = tkinter.Menu(menu_bar, tearoff=False)\r
-        menu_bar.add_cascade(label='FILE', menu=menu_file, underline=0)\r
+        menu_bar.add_cascade(label='File', menu=menu_file, underline=0)\r
 \r
         menu_file.add_command(label='Open', under=0, command=self.onOpen)\r
 \r
         # setup opengl widget\r
-        self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25), triangle.Triangle(5))\r
-        glwidget=togl.Widget(self, self.glworld, width=width, height=height)\r
-        glwidget.pack(fill=tkinter.BOTH, expand=True)\r
+        self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25))\r
+        self.glwidget=togl.Widget(self, self.glworld, width=width, height=height)\r
+        self.glwidget.pack(fill=tkinter.BOTH, expand=True)\r
 \r
         # event binding\r
         self.bind('<Key>', self.onKeyDown)\r
-        self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and glwidget.onDraw())\r
+        self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw())\r
 \r
     def onOpen(self):\r
         filename=tkinter.filedialog.askopenfilename(\r
@@ -39,7 +40,24 @@ class Frame(tkinter.Frame):
                     ('poloygon model files', '*.mqo;*.pmd'),\r
                     ], \r
                 initialdir=self.current)\r
-        print('open: %s' % filename)\r
+        if filename.lower().endswith(".mqo"):\r
+            self.loadMqo(filename)\r
+        elif filename.lower().endswith(".pmd"):\r
+            self.loadPmd(filename)\r
+        self.current=os.path.dirname(filename)\r
+\r
+    def loadMqo(self, path):\r
+        # load scenee\r
+        model=mqobuilder.build(path)\r
+        if not model:\r
+            print('fail to load %s' % path)\r
+            return\r
+        self.glworld.setRoot(model)\r
+        print('loadMqo %s' % path)\r
+        self.glwidget.onDraw()\r
+\r
+    def loadPmd(self, path):\r
+        print('loadPmd %s' % path)\r
 \r
     def onKeyDown(self, event):\r
         key=event.keycode\r