Skip to content

Commit

Permalink
Release v0.5
Browse files Browse the repository at this point in the history
v0.5 Release
  • Loading branch information
lucas-vrtech committed Jan 24, 2022
2 parents f46e8d4 + e61c145 commit d98b808
Show file tree
Hide file tree
Showing 26 changed files with 1,069 additions and 557 deletions.
16 changes: 16 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,19 @@ elseif(APPLE)
set(PLATFORM_NAME "osx")
endif()

execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE)

# Get the latest commit hash
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)

find_library(OPENVR_LIB openvr_api HINTS "${CMAKE_CURRENT_SOURCE_DIR}/libraries/openvr/lib/${PLATFORM_NAME}${PROCESSOR_ARCH}/" NO_DEFAULT_PATH )

add_subdirectory("overlay")
Expand All @@ -41,6 +54,9 @@ target_include_directories("${OPENGLOVE_PROJECT}" PUBLIC "${OPENVR_INCLUDE_DIR}"
target_include_directories("${OPENGLOVE_PROJECT}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include/")
target_link_libraries("${OPENGLOVE_PROJECT}" PUBLIC "${OPENVR_LIB}" setupapi wsock32 ws2_32 bthprops)

target_compile_definitions("${OPENGLOVE_PROJECT}" PRIVATE
"-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")

source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/include" PREFIX "Header Files" FILES ${HEADERS})
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/src" PREFIX "Source Files" FILES ${SOURCES})
set_property(TARGET "${OPENGLOVE_PROJECT}" PROPERTY CXX_STANDARD 17)
Expand Down
112 changes: 67 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,84 @@
# OpenGloves Driver
# OpenGloves Driver[![Steam Badge]][Steam] [![Discord Badge]][Discord]

OpenGloves is an OpenVR driver for DIY Virtual Reality Gloves. Using OpenVR's driver interface we are able to provide support for many SteamVR/OpenVR games.
A general purpose **SteamVR** driver with an **[Open Interface]** <br>
for anyone to connect their **DIY** **VR***( Glove )* hardware.

## Installation and Usage
---

**[Installation] ⸥ ⸢ [Limitations] ⸥ ⸢ [Compatibility]**

### Download on Steam:
[![Steam Release](https://cdn.discordapp.com/attachments/790676300552994826/845412304219537439/openglovessteam.png)](https://store.steampowered.com/app/1574050/OpenGloves)
* We strongly recommend downloading the driver from Steam, to recieve automatic updates and UI settings.
---

*Or download the latest on GitHub:*
* https://github.com/LucidVR/opengloves-driver/releases
## Features

**Follow the wiki guide for configuring the driver**
* https://github.com/LucidVR/opengloves-driver/wiki/Configuring-the-Driver
* The driver will not work correctly unless you configure it properly.
- **Haptic Force Feedback**

**Problems?**
* Check [Troubleshooting](https://github.com/LucidVR/opengloves-driver/wiki/Troubleshooting)
* Didn't help? Contact us on the [Community Discord Server](https://discord.gg/lucidvr)
## Building
If you want to use the driver as-is, refer to [Installation and Usage](#Installation-and-Usage).
If you are planning on modifying source files, refer to [BUILDING.md](https://github.com/LucidVR/opengloves-driver/blob/develop/BUILDING.md).
- **Full Finger Tracking** <br>
*‹ Beta › Splay Support* <br>
*‹ Beta › Individual Joint Support*

## Compatibility
### Compatible Hardware
* [LucidGloves](https://github.com/LucidVR/lucidgloves) - Lucas VRTech
* [Fngrs](https://github.com/danwillm/Fngrs/) - danwillm
* Have your own hardware you want to feature here? Let us know!
- **Tracker / Controller Positioning** <br>
*Automatic relative calibration* <br>
*Controller ⟷ Glove*

### Compatible Games
* Refer to [Game Compatibility List](https://github.com/LucidVR/opengloves-driver/wiki/Game-Compatibility-List)
* As this is an OpenVR driver, it is strictly compatible with games that take input from the OpenVR API. Only the games in the list above have been tested to work properly.
- **Button / Joystick Inputs** <br>
*➜ Trigger | A | B* <br>
*➜ Joystick | X | Y | Click*

### Current features included in the driver
* Finger flexion tracking
* Force feedback haptics
* Positioning from controllers + trackers
* Automatic Calibration
* Button/Joystick inputs
* A/B/Menu buttons, Joystick X/Y/Click
* Communication Protocols:
* Serial USB
* Serial over Bluetooth
- **Multiple Communication Protocols** <br>
*- Bluetooth Serial* <br>
*- Named Pipes* <br>
*- Serial USB*

### Planned features
* BLE Communication
* Finger splay tracking
* Vibration haptics
<br>

### Steam UI

The **[Steam]** version of **OpenGloves** also comes <br>
with a **[UI]** for configuring driver related features.

##### UI Supported Features
- Force Feedback Testing
- Editable Driver Settings
- Automatic Calibration <br>
*Controller ⟷ Glove*

---

## Contributing
Pull requests are very welcome. For major changes, please open an issue first to discuss what you would like to change.

## Authors
**Pull requests are very welcome.**

*For major changes, please open an* <br>
***[Issue]*** *or contact us first to discuss* <br>
*what you would like to change.*

---

## Credits

| Author | Discord |
|:------:|:-------:|
| **[Danwillm]** | `danwillm#8254` |
| **[Lucas VRTech]** | `LucidVR#0001` |


<!----------------------------------------------------------------------------->

[Steam Badge]: https://img.shields.io/badge/Steam-000000?style=for-the-badge&logo=steam&logoColor=white
[Discord Badge]: https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white

[Discord]: https://discord.gg/lucidvr
[Steam]: https://store.steampowered.com/app/1574050/OpenGloves

[Installation]: docs/Installation.md
[Limitations]: docs/Limitations.md
[Compatibility]: docs/Compatibility.md

[UI]: https://github.com/lucidVR/opengloves-ui
[Open Interface]: https://github.com/LucidVR/opengloves-driver/wiki/Driver-Input

* Danwillm (`danwillm#8254`)
* Lucas VRTech (`LucidVR#0001`)
[Issue]: https://github.com/LucidVR/opengloves-driver/issues

## Discord
https://discord.gg/lucidvr
[Danwillm]: https://github.com/danwillm
[Lucas VRTech]: https://github.com/lucas-vrtech
File renamed without changes.
81 changes: 81 additions & 0 deletions docs/Compatibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@

# Compatibility

<br>

## Officially Hardware

The following projects are known to be compatible with **OpenGloves**.

- **[LucidGloves]** <br>
*by [Lucas VRTech]*

- **[Fngrs]** <br>
*by [danwillm]*

<br>

**Made your own hardware? Let us know!**

---

## Your Hardware

While **OpenGloves** is capable of handling <br>
inputs from a variety of VR controllers, <br>
it is primarily designed for VR Gloves.

<br>

#### Custom Hardware

To make your own hardware compatible with **OpenGloves**, <br>
please refer to the **[Driver Input]** page, which provides relevant <br>
information like `Encoding Schemes` & `Communication Methods`.

<br>

#### LucidVR

This is our own **[Firmware]** that is compatible with <br>
**OpenGloves** and runs on `Arduino` / `ESP32` devices.

---

## Games

**OpenGloves** is strictly compatible with **OpenVR** compatible games.

<br>

##### Finger Curling

Is supported in games that work with the **Index** controllers.

<br>

##### Force Feedback

Unfortunately, game compatibility <br>
with this feature is **[More Limited][Game Compatibility]**.

If you'd like to make your **Game** / **Mod** compatible <br>
with `Force Feedback`, please refer to the **[Wiki][Integration]**.



<!----------------------------------------------------------------------------->

[LucidGloves]: https://github.com/LucidVR/lucidgloves
[Lucas VRTech]: https://github.com/lucas-vrtech

[Fngrs]: https://github.com/danwillm/Fngrs/
[danwillm]: https://github.com/danwillm

[Driver Input]: https://github.com/LucidVR/opengloves-driver/wiki/Driver-Input

[Firmware]: https://github.com/LucidVR/lucidgloves/tree/main/firmware/lucidgloves-firmware

[Game Compatibility]: https://github.com/LucidVR/opengloves-driver/wiki/Game-Compatibility-List

[Integration]: https://github.com/LucidVR/opengloves-driver/wiki/Integrating-Force-Feedback
23 changes: 23 additions & 0 deletions docs/Installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

# Installation & Usage

It is strongly recommended to use the **[Steam]** version <br>
to receive `Automatic Updates` as well as a `Builtin UI`.

[![Steam Preview]][Steam]

---

## GitHub

While ***not recommended***, it is possible to install **OpenGloves** <br>
manually by downloading a **[Release]** and **[Building]** it yourself.


<!----------------------------------------------------------------------------->

[Steam]: https://store.steampowered.com/app/1574050/OpenGloves
[Steam Preview]: https://cdn.discordapp.com/attachments/790676300552994826/845412304219537439/openglovessteam.png

[Release]: https://github.com/LucidVR/opengloves-driver/releases
[Building]: Building.md
50 changes: 50 additions & 0 deletions docs/Limitations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

# Limitations

<br>

#### Missing Custom Controller Support

Many VR titles do not support finger tracking from **custom** <br>
controllers, requiring the need to emulate controller types.


We emulate the index controller to achieve this <br>
compatibility, which means that we are limited <br>
to the inputs that the index controller exposes. <br>

It is possible to emulate an index controller while <br>
providing your own input profiles and bindings, <br>
but we have chosen not to include that by default <br>
in the driver, as to preserve compatibility with <br>
default index controller bindings.

##### Custom Implementation

If you want to implement your own device and use the utilities <br>
that **OpenGloves** provides, such as `Bone Calculations` and <br>
`Communication`, you will have to implement a custom driver.

To do this, you have to create your own class derived from [`DeviceDriver`], that <br> implement `StartingDevice`, `SetupProps`, `HandleInput` & `StoppingDevice`.

****  An example of a fully custom controller is **[LucidGloveDriver]** <br>
     *which you are free to adapt to your needs.*

<br>

#### Dynamic Inputs

Due to how **OpenVR** works, inputs cannot be set ***dynamically***.

Our inputs for `Index Controller Emulated Devices` are ***fixed*** <br>
to that of the index controller, and cannot have custom inputs.

*****However, you can define your own inputs in a* <br>
     *custom device with a different input profile.*


<!----------------------------------------------------------------------------->

[`DeviceDriver`]: ../src/DeviceDriver/DeviceDriver.cpp

[LucidGloveDriver]: https://github.com/LucidVR/opengloves-driver/blob/develop/src/DeviceDriver/LucidGloveDriver.cpp
Loading

0 comments on commit d98b808

Please sign in to comment.