Created
February 5, 2020 11:05
-
-
Save wkentaro/adef9a760300c009d3f1ac84fa780232 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from __future__ import division | |
| import threading | |
| import pyglet | |
| import trimesh.viewer | |
| class TrimeshSceneViewer(trimesh.viewer.SceneViewer): | |
| def __init__(self, scene, resolution=None): | |
| self._redraw = True | |
| pyglet.clock.schedule_interval(self.on_update, 1 / 30) | |
| self.scene = scene | |
| self._kwargs = dict( | |
| scene=self.scene, | |
| resolution=resolution, | |
| offset_lines=False, | |
| start_loop=False, | |
| ) | |
| self.lock = threading.Lock() | |
| def show(self): | |
| self.thread = threading.Thread(target=self._init_and_start_app) | |
| self.thread.daemon = True # terminate when main thread exit | |
| self.thread.start() | |
| def _init_and_start_app(self): | |
| with self.lock: | |
| super(TrimeshSceneViewer, self).__init__(**self._kwargs) | |
| pyglet.app.run() | |
| def redraw(self): | |
| self._redraw = True | |
| def on_update(self, dt): | |
| self.on_draw() | |
| def on_draw(self): | |
| with self.lock: | |
| self._update_vertex_list() | |
| super(TrimeshSceneViewer, self).on_draw() | |
| self._redraw = False | |
| def on_mouse_press(self, *args, **kwargs): | |
| self._redraw = True | |
| return super(TrimeshSceneViewer, self).on_mouse_press(*args, **kwargs) | |
| def on_mouse_drag(self, *args, **kwargs): | |
| self._redraw = True | |
| return super(TrimeshSceneViewer, self).on_mouse_drag(*args, **kwargs) | |
| def on_mouse_scroll(self, *args, **kwargs): | |
| self._redraw = True | |
| return super(TrimeshSceneViewer, self).on_mouse_scroll(*args, **kwargs) | |
| def on_key_press(self, *args, **kwargs): | |
| self._redraw = True | |
| return super(TrimeshSceneViewer, self).on_key_press(*args, **kwargs) | |
| def on_resize(self, *args, **kwargs): | |
| self._redraw = True | |
| return super(TrimeshSceneViewer, self).on_resize(*args, **kwargs) | |
| def set_camera(self, *args, **kwargs): | |
| with self.lock: | |
| self.scene.set_camera(*args, **kwargs) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python | |
| # import pyrender | |
| # | |
| # | |
| # scene_pyrender = pyrender.Scene.from_trimesh(scene_trimesh) | |
| # viewer = pyrender.Viewer(scene_pyrender, use_raymond_lights=True) | |
| # | |
| # scene_trimesh # new | |
| # scene_pyrender2 = pyrender.Scene.from_trimesh(scene_trimesh) | |
| # scene_pyrender.update(scene_pyrender2) | |
| import numpy as np | |
| import trimesh | |
| from _trimesh import TrimeshSceneViewer | |
| scene = trimesh.Scene() | |
| axis = trimesh.creation.axis() | |
| axis.apply_translation(np.random.random((3,))) | |
| scene.add_geometry(axis) | |
| viewer = TrimeshSceneViewer(scene) | |
| viewer.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment