TheNexusAvenger / Enigma

Provides SteamVR tracker data to the Roblox client.
MIT License
8 stars 0 forks source link

Left and Right foot tracker inactive #4

Closed Lmorthian closed 2 months ago

Lmorthian commented 2 months ago

Hello, this is my first time writing an issue so yeah. If it doesn't explain it well I'm sorry.

Whenever I open the .exe, it works as expected up until I join a game with the beta, that game being Catalog Avatar Creator with beta 2.

OculusScreenshot1720501270 Screenshot 2024-07-09 000149 I have no idea what any of this means nor why it's happening; I am not a very tech savvy person.

The trackers are both VERY much active as I can see them in Steam VR.

If someone could please help, I'd be very grateful because I want to kick people.

Lmorthian commented 2 months ago

I have no idea if this is an experience bug or if this is an Enigma bug.

noblereign commented 2 months ago

if you're using Standable, I know that it doesn't play nicely with Enigma and causes this to happen. I had to disable Standable before it recognized that my foot trackers were active

Lmorthian commented 2 months ago

I'm using Amethyst to use my xbox 360 kinect sensor for fbt. Would that have an effect on Enigma?

noblereign commented 2 months ago

it might? i have a feeling that enigma just has trouble recognizing virtual trackers tbh but it might need further testing

Lmorthian commented 2 months ago

just tested it again for some reason. did the same thing. judging by how standable AND amethyst don't work, i think you're right.

TheNexusAvenger commented 2 months ago

I don't support or test either of those systems because I don't have the hardware to test it. Are you able to post a screenshot of the "Manage Trackers" menu in SteamVR with one of these systems active? I want to see what SteamVR is seeing.

Lmorthian commented 2 months ago

here's what SteamVR sees.

OculusScreenshot1720531036

TheNexusAvenger commented 2 months ago

The format of the device names is quite different. For SteamVR trackers, the format is /devices/<TrackingSystemName>/<SerialNumber>. Unless the virtual tracker is using vr_tracker/<Role> as the serial number, it might not be detected correctly.

I'm probably going to make a "list devices" command to the CLI version to help diagnose this. I'll post once I have something.

Lmorthian commented 2 months ago

okay. thank you for the help!

noblereign commented 2 months ago

I don't support or test either of those systems because I don't have the hardware to test it.

Standable in particular is $20 and doesn't require any extra hardware, i did just buy a plugin from you on itch.io for $40, so if you want to get it to test with it, hopefully that'd help you to do so? (i use it for the mixed tracking feature in particular)

trying to get a screenshot for you right now, but unfortunately standable has decided now is the best time to malfunction 💀

noblereign commented 2 months ago

got the screenshot for you, here's what Standable trackers look like image for me it came by default with the tracker roles set to disabled, i'm wondering if that has anything to do with it?

also, when you're using mixed tracking, Standable has "proxy trackers" that take the place of your original trackers. the original trackers get hidden from VR applications so that the Standable ones are the ones that get used. that could also be a contributing factor to this i think

TheNexusAvenger commented 2 months ago

V.0.2.0 is out with a list-devices command. You do need to run it from a command prompt/terminal, but you can do it. Before posting, look over what it is presenting since it might contain sensitive information. I might add a --masked parameter later to mask things like serial numbers, but that isn't there.

Example output: image

The probably is probably the resolver for the hardware id. I might be able to special-case them depending on what properties they use.

for me it came by default with the tracker roles set to disabled, i'm wondering if that has anything to do with it?

That is definitely a problem, as Enigma relies on SteamVR to say what a tracker is for. I don't plan to change this since you might want to disable some virtual trackers.

also, when you're using mixed tracking, Standable has "proxy trackers" that take the place of your original trackers. the original trackers get hidden from VR applications so that the Standable ones are the ones that get used. that could also be a contributing factor to this i think

That makes sense, and that would be the root cause of the problem. If I can make the hardware id resolving work for both of these, that should resolve most issues.

ReyingRexer commented 2 months ago

Though I'd mention but I tried using my normal vive trackers (3.0) with them assigned the correct role, and they don't work either,

TheNexusAvenger commented 2 months ago

Though I'd mention but I tried using my normal vive trackers (3.0) with them assigned the correct role, and they don't work either,

Are you able to run the list-devices command on the new V.0.2.0 release and show what it contains? I have a feeling other software is causing problems, as others have posted above.

ReyingRexer commented 2 months ago

Though I'd mention but I tried using my normal vive trackers (3.0) with them assigned the correct role, and they don't work either,

Are you able to run the list-devices command on the new V.0.2.0 release and show what it contains? I have a feeling other software is causing problems, as others have posted above.

Yes, I could run the list devices command, and they have shown the devices properly, saying they were assigned as left foot and right foot. though I wonder, because it's device name says "/devices/htc/vive_tracker[INSERT TRACKER ID]" image

TheNexusAvenger commented 2 months ago

Looks like reading the SteamVR settings is correct for at least the Vive 3.0 trackers, and the format looks to be the same (/device/<System>/<SerialNumber>). There is a massive block that is meant to show above with all of the properties, along with what it thinks the device id is. Can you at least 1 tracker similar to how I have 4 posts above? It will have GenericTracker as the name, probably.

ReyingRexer commented 2 months ago

image This is one of the vive trackers on one of my foot.

TheNexusAvenger commented 2 months ago

Prop_RegisteredDeviceType_String jumps out to me, since it has both the htc and the vive_trakcer[redacted]. Tundra trackers don't seem to have this, but I should be able to support this.

I should be able to address this, but I'd like to see the data for Standable and Amethyst before I create a new release. My hope is the fix is the same for all 3, but I'm not certain of that.

Prop_ControllerType_String is also very interesting, as that could potentially allow me to bypass reading SteamVR settings entirely. I don't know how standard this is, though. Standable and Amethyst could be very different.

noblereign commented 2 months ago

here's the list-devices output for standable, i had mixed tracking active for this as well so it'd be accurate https://arctic.wolfdo.gg/bowl/46ea3948-b91e-408a-ab42-1769f441372c

i would like to note the cursedness of the standable serial number strings??? why are they just called what the tracker's for 😭 image

noblereign commented 2 months ago

my friend would also like to contribute the data from his 1.0 vive trackers since they also weren't detected properly image

TheNexusAvenger commented 2 months ago

here's the list-devices output for standable, i had mixed tracking active for this as well so it'd be accurate https://arctic.wolfdo.gg/bowl/46ea3948-b91e-408a-ab42-1769f441372c

Standable looks to be fine except for the roles not being assigned by default. I'm hesitant basically force the assignment of certain trackers without a way to remap or disable them.

@Lmorthian Are you able to run list-devices with Amethyst? I plan to create V.0.3.0 today to fix Vive trackers, and I'd like to see if I can get Amethyst working as well in that release.

Lmorthian commented 2 months ago

yep, sure can. what would i need to censor though as i dont really want any sensitive info getting released to here.

TheNexusAvenger commented 2 months ago

I don't know what is sensitive or not. I just assume anything with random-looking characters might be identifiable somehow (i.e. serial numbers). The examples above should be a good reference.

Lmorthian commented 2 months ago

here you go. covered up everything that looked weird.

Screenshot 2024-07-10 105745

TheNexusAvenger commented 2 months ago

V.0.3.0 has been released that adds 2 major changes:

@Lmorthian @ReyingRexer @noblereign If all of you could retry and report back with this new release, that would be appreciated. I plan to release V.0.4.0 tomorrow night based on the v2-protocol branch, and I would like to know if I need to make any more changes for that release.

Lmorthian commented 2 months ago

despite your update to enigma and CAC now being on beta-3, i can confirm that it still does not work with amethyst and will give the same errors.

Screenshot 2024-07-10 211708

TheNexusAvenger commented 2 months ago

Can you run list-devices --masked again and put all of the information (devices + what SteamVR sees, like in my first screenshot) and post the results as text? My guess is the hardware id is still not matching to a tracker role.

Lmorthian commented 2 months ago

here it is, had to manually cover the oculus serial numbers.

[2024-07-10 212309.158]txt.txt

noblereign commented 2 months ago

tried nexus vr beta-3 and enigma 3.0 with Standable, everything worked perfectly after i set the tracker roles for standable's left and right foot :+1:

in my case id say maybe there should be a note somewhere that enigma relies on tracker roles and that the user should make sure they're set properly, because in my experience most of the popular social vr applications like VRChat and Resonite don't seem to care about tracker roles at all, the average user might not know about it

ReyingRexer commented 2 months ago

image upon checking again, it still seems to not see it.

ReyingRexer commented 2 months ago

image for extra info, i took a screenshot of the roles.

My suggestion is that incase if left foot and right foot don't detect properly you can probably ask the user to manually assign the left and right feet for enigma, making it easier for the program to figure out instead of relying on steamvr settings. EX: What tracker should be the left foot?: User Response: /devices/htc/vive_tracker[serialnumber] What tracker should be the right foot?: User Response: /devices/htc/vivetracker[otherserialnumber]

And then it will use those trackers specifically.

TheNexusAvenger commented 2 months ago

@Lmorthian @ReyingRexer Sorry about that - I made a mistake for the Prop_RegisterDeviceType_String case where /devices/ is missing from the beginning, which is fixed in V.0.3.1. I really need to start unit testing the OpenVR code at some point.

Oculus/Meta serial number information should also be masked now.

in my case id say maybe there should be a note somewhere that enigma relies on tracker roles and that the user should make sure they're set properly, because in my experience most of the popular social vr applications like VRChat and Resonite don't seem to care about tracker roles at all, the average user might not know about it

While this is a good point, I'd definitely want some help to get this right. I'd also really like to have a user interface going so this can be easily presented to the user in VR. The immediate problem I see is the the lack of a standard way to infer the target location. Standable seems to use Prop_SerialNumber_String, while others use Prop_ControllerType_String.

Edit: I might give it a try for V.0.4.0, but I can't guarantee it will work out. It definitely would be nice to remove reading SteamVR settings.

ReyingRexer commented 2 months ago

image I believe it's working now, much thanks.

also regarding the overlay, yeah while i never really got to experience C# and openvr like that, I can advise that maybe you can make like a list that shows active trackers with roles, and by moving the trackers really fast, show which one is which.

TheNexusAvenger commented 2 months ago

V.0.4.0 is out that tries to guess the roles of trackers for systems like Standable without having to manually assign roles.

I'm closing this issue now, since it seems like everything is resolved as of V.0.3.1. Please re-open this issue if it returns, or create a new issue if you see the warning that the roles couldn't be guessed.