cmbruns / pyopenvr

Unofficial python bindings for Valve's OpenVR virtual reality SDK
BSD 3-Clause "New" or "Revised" License
245 stars 39 forks source link

Trouble with loading controller mesh #81

Closed seann999 closed 2 years ago

seann999 commented 3 years ago

I am trying to run hello_glfw3_controllers.py on Ubuntu but I am getting an error:

Traceback (most recent call last):
  File "hello_glfw3_controllers.py", line 23, in <module>
    glfwApp.run_loop()
  File "/home/projects/sean/pyopenvr/src/openvr/glframework/glfw_app.py", line 83, in run_loop
    self.render_scene()
  File "/home/projects/sean/pyopenvr/src/openvr/glframework/glfw_app.py", line 60, in render_scene
    self.renderer.render_scene()
  File "/home/projects/sean/pyopenvr/src/openvr/gl_renderer.py", line 202, in render_scene
    self.display_gl(mvr, self.projection_right)
  File "/home/projects/sean/pyopenvr/src/openvr/gl_renderer.py", line 211, in display_gl
    actor.display_gl(modelview, projection)
  File "/home/projects/sean/pyopenvr/src/openvr/tracked_devices_actor.py", line 221, in display_gl
    mesh.display_gl(modelview, projection, pose)
  File "/home/projects/sean/pyopenvr/src/openvr/tracked_devices_actor.py", line 108, in display_gl
    self._try_load_model()
  File "/home/projects/sean/pyopenvr/src/openvr/tracked_devices_actor.py", line 79, in _try_load_model
    self._try_load_texture()
  File "/home/projects/sean/pyopenvr/src/openvr/tracked_devices_actor.py", line 85, in _try_load_texture
    texture_map = openvr.VRRenderModels().loadTexture_Async(self.model.diffuseTextureId)
  File "/home/projects/sean/pyopenvr/src/openvr/__init__.py", line 5810, in loadTexture_Async
    openvr.error_code.RenderModelError.check_error_value(error)
  File "/home/projects/sean/pyopenvr/src/openvr/error_code/__init__.py", line 23, in check_error_value
    raise error_class(error_value, message)
openvr.error_code.RenderModelError_InvalidArg

I have dug into the code and my best guess is that it is having trouble loading the controller mesh. Here model_name is simply a string vr_controller_vive_1_5; does that seem right? What may be the problem?

cmbruns commented 2 years ago

This was likely due to incorrect binary packing of the RenderModel_t and RenderModel_TextureMap_t structures on Linux (and Mac) as discussed in issue #35 . I fixed this problem today in versions 1.16.0802 and 1.14.1502