EloiStree / CodeAndQuestsEveryDay

Regular research on the Quest for developers.
http://codeandquests.page.link/discord
32 stars 3 forks source link

Question: Where to start to code with hands tracking ? #405

Open EloiStree opened 4 years ago

EloiStree commented 4 years ago

Default Alt
https://youtu.be/PM2kH2Sakt4

Default Alt
https://youtu.be/or5M01Pcy5U

Default Alt
https://youtu.be/gpQePH-Ffbw

https://developer.oculus.com/blog/hand-tracking-sdk-for-oculus-quest-available/ Manual: https://developer.oculus.com/documentation/quest/latest/concepts/unity-handtracking/

EloiStree commented 4 years ago

"Before you can use hands as input devices, you must enable permissions in the AndroidManifest.xml file. In addition to setting permissions in the manifest file, the user must enable hand tracking on their Oculus Quest to use the feature in apps that implement it."

<uses-permission android:name="oculus.permission.handtracking" />
<uses-feature android:name="oculus.software.handtracking"
android:required="false" />
EloiStree commented 4 years ago

Code: OVRHand


    public enum HandFinger { Thumb , Index , Middle , Ring   , Pinky }

    public enum TrackingConfidence {Low,    High}

        bool IsTracked { get; private set; }
    bool IsPointerPoseValid { get; private set; }
    Transform PointerPose { get; private set; }
    float HandScale { get; private set; }
    TrackingConfidence HandConfidence { get; private set; }
       float GetFingerPinchStrength(HandFinger finger)
       bool GetFingerIsPinching(HandFinger finger)
EloiStree commented 4 years ago

image

public class OVRBone
{
    public OVRSkeleton.BoneId Id { get; private set; }
    public short ParentBoneIndex { get; private set; }
    public Transform Transform { get; private set; }
}

public class OVRBoneCapsule
{
    public short BoneIndex { get; private set; }
    public Rigidbody CapsuleRigidbody { get; private set; }
    public CapsuleCollider CapsuleCollider { get; private set; }
}
EloiStree commented 4 years ago

HandMapOculusQuestID Video of it: https://youtu.be/LIgWpyN51zQ

Rhward3rd commented 4 years ago

I commented on the YouTube, but also thought to ask here.

Any interest in attempting a prototype of the DigiTouch research hand tracking keyboard concept?

Eg. Each knuckle is a key position and you use thumbs to type. Keyboard is split between both hands.

See: https://dl.acm.org/citation.cfm?id=3130978

I ask because your demo looks like it already has 90% of what is needed already.

Just map letters to bone locations and add simple text editor to test, or even web browser

EloiStree commented 4 years ago

@Rhward3rd Can you explain more. I think I see what you mean. But to be sure. Do you mean a bit like those ? image or more like this image


I already design some keyboards in the past for VR. But I fall on three problems.


Redit: Found your other post, #418 : Default Alt
https://youtu.be/4d_RMTVn9eQ

EloiStree commented 4 years ago

Apparently here, he signal to uncheck the 2019 Signature to have your own manifest: https://theslidefactory.com/oculus-quest-hand-issue-object-reference-and-build/

Found that manifest in late research 2020_06_14:

manuelrossner commented 2 years ago

Modifying the Manfiest file provided in @EloiStree link with the current required Flags from the Oculus Developer page I managed to enable Handtracking in 2022 https://developer.oculus.com/documentation/native/android/mobile-hand-tracking/ Thank you to the slide Factory (https://theslidefactory.com/oculus-quest-hand-issue-object-reference-and-build/)

` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools" android:installLocation="preferExternal"> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/>

<application
    android:theme="@style/UnityThemeSelector"
    android:icon="@mipmap/app_icon"
    android:label="@string/app_name">
    <activity android:name="com.unity3d.player.UnityPlayerActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
</application>
<uses-permission android:name="com.oculus.permission.HAND_TRACKING" />
<uses-feature android:name="oculus.software.handtracking" android:required="false" />
<uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />

`