Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
195 stars 9 forks source link

Full Body Haptic Logix Interface #2551

Closed GunGryphon closed 3 years ago

GunGryphon commented 3 years ago

Is your feature request related to a problem? Please describe.

I am developing a DIY haptic suit solution and cannot connect to the existing haptics manager systems.

Relevant issues

I have not located a matching issue

Describe the solution you'd like

Expose the haptic touch point state (is touched, touch type, intensity, etc.) as parameters that can drive Logix or components.

Describe alternatives you've considered

Implementing a standardized API for controlling custom, hardware agnostic, haptic suits. A dedicated websocket connection could also fill this role.

Additional context

I was hoping to have my haptic vest prototype usable by the haptic event on July 3rd, however I am currently unable to tap into the existing haptic framework. By exposing the haptic touch point output to Logix and components, both DIY haptic solutions and additional avatar effects can be achieved. NEOs is a very flexible platform and would be a natural fit for developing new and custom VR hardware.

ProbablePrime commented 3 years ago

Im not sure websockets is the best move here.

It may be possible as a part of this card here though: https://github.com/Neos-Metaverse/NeosPublic/projects/12#card-61307662

GunGryphon commented 3 years ago

Im not sure websockets is the best move here.

It may be possible as a part of this card here though: https://github.com/Neos-Metaverse/NeosPublic/projects/12#card-61307662

I agree that web sockets are not an ideal solution and a dedicated customizable driver solution would be better. I just plan to use the websocket system as an interim until a better method can be implemented.

Frooxius commented 3 years ago

This is already supported, you can use VirtualHapticPointSampler under Input/Haptics. It will provide you with the individual sensation strengths at the point of the sampler.

Note that it's mostly for testing though and isn't optimal for this, as currently it forces all users to do the sampling (you can drive the Enabled field to only sample for specific users, but even then it registers some extra colliders and things).

The proper solution for this is through a custom device driver. The driver would register its haptic samplers with body parametrization (essentially stating where they're located on a normalized body parts) and then sample this data to trigger haptics on the device.