1. 08 Nov, 2016 4 commits
  2. 03 Nov, 2016 1 commit
  3. 24 Oct, 2016 2 commits
    • Alexis Girault's avatar
      COMP: Fix issues from sceneObject MR on windows · ef104437
      Alexis Girault authored
      - Corrects wrongly named controller objects
      in the Sandbox example
      
      - Corrects wrong construtor call to the PBDObject
      ef104437
    • Alexis Girault's avatar
      Merge branch 'refactor-controllers' into 'master' · 080d795f
      Alexis Girault authored
      Refactor controllers
      
      This MR aims to refactor the VirtualCouplingObject class into a SceneObjectController, as well as correct some style and architecture issues.
      
      ### STYLE: correct identation 97fc549f
      Convert tabs to 4 spaces
      
      ### ENH: simplify TrackingController constructor fbc48bae
      - Get rid of scaling in constructor (too many parameters, why choose scaling and not others? Use `setTranslationScaling` instead) 
      - No more default `nullptr` value for `DeviceClient` in controller constructor
      
      ### ENH: Implement getMasterGeometry 85470771
      Returns the master geometry. A geometry is qualified master by the direction of the geometry maps of the object. For example with a dynamic object, physic geometry will drive the changes to the colliding geometry, which will drive the changes to the visual geometry...
      
      ### ENH: Divide SceneObject & CollidingObject d8fee1f4 (fixes #84)
      Colliding geometry is only in `CollidingObject, not `SceneObject`.  To do this, we also had to :
      - Have `PbdObject` inherit `CollidingObject` *(in the future there should not be a distinct object class just for Pbd : there should just be dynamical objects that can use different models, like Pbd or FEM)*
      - Remove useless checks when creating interactions: even two colliding objects (not dynamic, aka static) could be interacting if they are both controlled by devices
      
      ### STYLE: correct some includes and forward declarations 0340bde7
      
      ### ENH: remove interface for transforming geometry in RigidObject 7c272963
      We are still wondering how to store/apply our geometries. Having yet another interface to only wrap the API to transform the geometry is not needed: we can directly call them on the geometry themselves for more transparency on what geometry is being updated. *This should be investigated later on when we will work with rigid body dynamics.*
      
      ### ENH: Refactor VirtualCouplingObject in a controller  (fixes #99)
      - `SceneObjectController`: similar to cameraController, it subclasses trackingController to update the transformation of an object master geometry, instead of updating itself. 
      - `SceneObject`: similar to camera, has an interface to easily setup a controller using a device client. 
      - `CollidingObject`: stores the force vector that needs to be applied to the device.
      - `SceneManager`: make the API calls from controller instead of object
      
      ### STYLE: Rename cameraController attribute to controller 9e199a30
      
      See merge request !102
      080d795f
  4. 20 Oct, 2016 5 commits
    • Alexis Girault's avatar
      9e199a30
    • Alexis Girault's avatar
      ENH: Refactor VirtualCouplingObject in a controller · 621038b5
      Alexis Girault authored
      SceneObjectController: similar to cameraController, it
      subclasses trackingController to update the transformation
      of an object master geometry, instead of updating itself.
      
      SceneObject: similar to camera, has an interface to easily
      setup a controller using a device client.
      
      CollidingObject: stores the force vector that is to be
      applied to the device.
      
      SceneManager: make the API calls from controller instead
      of object
      621038b5
    • Alexis Girault's avatar
      ENH: remove interface for transforming geometry in RigidObject · 7c272963
      Alexis Girault authored
      We are still wondering how to store/apply our geometries.
      Having yet another interface to only wrap the API to
      transform the geometry is not needed: we can directly
      call them on the geometry themselves for more transparency
      on what geometry is being updated.
      
      This will be investigated later on when we will work with
      rigib body dynamics.
      7c272963
    • Alexis Girault's avatar
      0340bde7
    • Alexis Girault's avatar
      ENH: Divide SceneObject & CollidingObject · d8fee1f4
      Alexis Girault authored
      Colliding geometry is only in CollidingObject.
      
      To do this, we also had to :
      - have PbdObject inherit CollidingObject (in the future
      there should not be a distinct object class just for Pbd :
      there should just be dynamical objects that can use
      different models, like Pbd or FEM)
      - remove useless checks when creating interactions: even
      two colliding objects (not dynamic, aka static) could
      be interacting if they are both controlled by devices
      d8fee1f4
  5. 19 Oct, 2016 1 commit
    • Alexis Girault's avatar
      ENH: Implement getMasterGeometry · 85470771
      Alexis Girault authored
      Returns master geometry, defined master in the
      geometry maps of the objects. Physic geometry will
      drive the changes to the colliding geometry, which
      will drive the changes to the visual geometry
      85470771
  6. 18 Oct, 2016 2 commits
  7. 17 Oct, 2016 3 commits
    • Alexis Girault's avatar
      Merge branch 'VRPN-fixes' into 'master' · 4821c848
      Alexis Girault authored
      VRPN fixes (runtime, compilation, and external linkage)
      
      1. VRPN would not be found in `FindVRPN.cmake` on Linux if `iMSTK_USE_OMNI` was set to ON.
      2. A name issue in `iMSTKConfig.cmake.in` would prevent external projects to link against iMSTK
      3. An offset was applied on VRPN devices on the client side while there already was a way to set up offsets in the controller interface
      
      See merge request !101
      4821c848
    • Alexis Girault's avatar
      BUG: missing string include in VRPNDeviceServer · c644e1ce
      Alexis Girault authored
      Was triggered build errors on windows due to
      std:to_string
      c644e1ce
    • Alexis Girault's avatar
      COMP: Fix FindVRPN when USE_OMNI · 01668a67
      Alexis Girault authored
      FindVRPN: The order in which the libraries were
      found was creating an compilation error during
      linking on Linux, as well as windows when being
      read from an external project.
      
      iMSTKConfig.cmake.in: ${PROJECT_NAME} would not be
      set to "iMSTK" from an external project.
      
      External_VRPN: VRPN_BUILD_SERVERS:BOOL was defined
      twice in imstk_add_external_project(VRPN)
      01668a67
  8. 10 Oct, 2016 1 commit
  9. 07 Oct, 2016 2 commits
    • Alexis Girault's avatar
      ENH: Get rid of offset on VRPN Client side · 53c929da
      Alexis Girault authored
      The offset should only be defined at the
      controller level
      
      Also remove useless include in VRPNDeviceServer
      53c929da
    • Alexis Girault's avatar
      Merge branch 'fix_multiple_omnis' into 'master' · 7a1c6928
      Alexis Girault authored
      Fix multiple omnis issue
      
      * Fixes #71 
      
      Co-authored by: @NickMilef <milefn@rpi.edu> 
      
      1) DeviceClient : not a module anymore, only stores device info
      and holds callbacks
      
      2) VRPNDeviceClient : subclasses DeviceClient AND Module, to
      conserve the ability to run multiple clients in parallel with
      a VRPN server
      
      3) HDAPIDeviceServer : new module that manages the HDAPIDevice
      clients execution, which need to be made sequentially. Also helps
      managing a unique hdScheduler.
      
      4) HDAPIDeviceClient : lets the HDAPIDeviceServer handle the
      hdScheduler. Also makes use of hdMakeCurrentDevice.
      
      5) SimulationManager : refactor to run modules instead of
      deviceservers or deviceclients
      
      6) Sandbox : use new simulationManager API to add modules
      
      See merge request !99
      7a1c6928
  10. 06 Oct, 2016 1 commit
    • Alexis Girault's avatar
      BUG: Fix two omnis issue · 619dac43
      Alexis Girault authored
      Co-authored by: Nicholas Milef <milefn@rpi.edu>
      
      1) DeviceClient : not a module anymore, only stores device info
      and holds callbacks
      
      2) VRPNDeviceClient : subclasses DeviceClient AND Module, to
      conserve the ability to run multiple clients in parallel with
      a VRPN server
      
      3) HDAPIDeviceServer : new module that manages the HDAPIDevice
      clients execution, which need to be made sequentially. Also helps
      managing a unique hdScheduler.
      
      4) HDAPIDeviceClient : lets the HDAPIDeviceServer handle the
      hdScheduler. Also makes use of hdMakeCurrentDevice.
      
      5) SimulationManager : refactor to run modules instead of
      deviceservers or deviceclients
      
      6) Sandbox : use new simulationManager API to add modules
      619dac43
  11. 05 Oct, 2016 1 commit
  12. 04 Oct, 2016 2 commits
  13. 03 Oct, 2016 2 commits
  14. 29 Sep, 2016 4 commits
    • Alexis Girault's avatar
      Merge branch 'specify-git-tags' into 'master' · 80cc16fb
      Alexis Girault authored
      COMP: Update to specific git_tags for external projects
      
      Using a git branch name for an external project would update the repository of that external project when building iMSTK even though it would not be tested.
      
      By hardcoding a certain commit #, we can make sure we need to specifically update the external project git_tag to update the external project.
      
      This commit updates to the newer version of VegaFEM which should resolve the remaining issues on the Dashboard for Windows: VegaFEM-CMake@d1ab0858
      > `export(PACKAGE VegaFEM)` was resulting in Vega being registered in a CMake Package Registry :
      > https://cmake.org/Wiki/CMake/Tutorials/Package_Registry
      > 
      > Because of this, an incorrect version of VEGA could be directly linked against when doing `find_package(VegaFEM)`.
      > 
      > This should only be done when creating a package for installation:
      > https://cmake.org/cmake/help/git-master/manual/cmake-packages.7.html#creating-packages
      
      See merge request !94
      80cc16fb
    • Alexis Girault's avatar
      COMP: Update VegaFEM to find vega & PThreads · 6446ed74
      Alexis Girault authored
      Integrate the following commit:
      VegaFEM-CMake@7bc1bda6
      
      Also remove useless iMSTK_EXTERNAL_PROJECTS_PATHS
      variable in External/CMakeLists.txt
      6446ed74
    • Alexis Girault's avatar
      COMP: Update to specific git_tags for external projects · f7665699
      Alexis Girault authored
      Using a git branch name for an external project would
      update the repository of that external project when
      building iMSTK even though it would not be tested.
      
      By hardcoding a certain commit #, we can make sure we
      need to specifically update the external project git_tag
      to update the external project.
      
      This commit updates to the newer version of VegaFEM which
      should resolve some errors:
      
      VegaFEM-CMake@d1ab0858
      f7665699
    • Alexis Girault's avatar
      Merge branch 'fix-ftd2xx-config' into 'master' · 1d7176b4
      Alexis Girault authored
      COMP: fix ftd2xx.lib copy at compile time
      
      On some windows systems, the command `cmake -E copy`
      within `copy_ftd2xx_static_command` renames the ftd2xx.lib
      file as `lib\${BUILD_TYPE}` instead of copying it within
      the directory of the same name. Because of this, the directory
      can not be created in the future for other libraries, explaining
      the high number of compilation errors (~50)
      
      Placing a `\` at the end of the destination directory should fix
      this issue.
      
      See merge request !93
      1d7176b4
  15. 27 Sep, 2016 1 commit
    • Alexis Girault's avatar
      COMP: fix ftd2xx.lib copy at compile time · 1fdfa17a
      Alexis Girault authored
      On some windows systems, the command `cmake -E copy`
      within `copy_ftd2xx_static_command` renames the ftd2xx.lib
      file as `lib\${BUILD_TYPE}` instead of copying it within
      the directory of the same name. Because of this, the directory
      can not be created in the future for other libraries, explaining
      the high number of compilation errors (~50)
      1fdfa17a
  16. 25 Sep, 2016 1 commit
    • Alexis Girault's avatar
      Merge branch 'fix-libusb-windows' into 'master' · 591503a4
      Alexis Girault authored
      COMP: Fix COMP errors with LibNiFalcon
      
      LibNifalcon should link against ftd2xx and not libusb1 on Windows. Add ftd2xx as an external project (binaries).
      
      Works with the newest versions of VRPN and LibNiFalcon.
      
      See merge request !91
      591503a4
  17. 23 Sep, 2016 2 commits
  18. 22 Sep, 2016 1 commit
  19. 21 Sep, 2016 4 commits