editing controller bindings?
i'm running flatland on my original HTC Vive and the default binding for the corner handles is grip, which needs a bit too much force to comfortably hold while moving windows around, is there any way i can go about changing this to trigger or menu?
169 Replies
ah shoot that's kinda hardcoded in :/
most controllers have comfy grips
i didn't think anyone would have an htc vive controller :p
but i'll see what i can do
can i just change it myself for the time being?
yeah if you look in
sk_controller.rs
i believe
you should be able to see datamap.grab =
something like thatand yeah, completely understandable that you wouldn't expect someone using this hardware in 2024 lol
just search up
grab: controller.grip,
in the server
you'll find it
i want to make it comfy for all setups so actually this is very usefulone thing i'm very surprised about is how readable text is even on my ancient hardware
ahaha yeah i stole the lanzcos filter from simulavr
it blurs text intelligently even with perspective warp
you really don't need the highest spec stuff to get readable text, that's Big Headset wanting you to buy the higher res headset instead of making the headset do anything useful :p
jk but it's not a common technique is what it really boils down to
lol yeah, honestly the only thing i didn't like about this HMD was the garbage-tier factory lenses, but you can just use a 3D printed adapter to swap them out for GearVR ones and then the picture gets like 10x better
oh nicee
is it comfy to read?
haven't read anything long enough to determine that just yet, once i get the bindings changed and figure out keyboard input i'll try reading for a bit and see how it is
i just know its orders of magnitude better than any other text i've ever seen rendered on this headset
ok for keyboard you just run
manifold | azimuth
and that'll take input from a desktop window you can click into to capture mouse/keyboard and turn it into a virtual pointer
or manifold | simular
to beam your keyboard to whatever you're looking at (eye tracking not included it's just a ray coming from your head directly forward lol) from the manifold windowlol, believe it or not the lack of eye tracking support is not a deal-breaker for me
stardust actually does support eye tracking but monado as of yet does not so i cannot test it
i can even replicate transient pointers like visionOS using stardust and the SUIS
well i just mean i don't really have the hardware regardless
fair fair haha
this is, until i get the dbus stuff working, in which case i'm gonna break apart the hardcoded input methods and put them in clients and such and allow mode switching to fix the issue architecturally
so uh, how do i actually go about changing the button?
you'll be able to switch between controllers/hand modes so you could have an extendo-hand mode, telekinesis, etc.
change
controller.grip
to controller.<something else>
was assuming i'd find the typical OpenXR path stuff
tried changing that to menu and it didn't compile
since i'd imagine trigger is already mapped somewhere
trigger is select
uhhh hmm
idk lol
grab: controller.stick_click.is_active() as u32 as f32,
try this
it'll middle click too but whatever
this should do it so you can press the circle pad to move stuff
but can't middle click any flatland panelsunrelated, but it's awesome that cargo just doesn't bother building stuff that hasn't changed
everyone complains about rust compile times but like
it's not that bad when iterating on stuff
i mean, the more i learn about rust the more i like it honestly
i've been reading the rust book and slowly figuring things out
yeah now i just can't grab things
dangit stick click must not map to the circle pad
what the sigma
the joys of old hardware
vive controllers really barely had anything didn't they
hmm ok actually
try this
it should work fine actually, the SUIS can handle stuff like this just fine
i've got a total of 4 buttons and a trackpad lol
what buttons?
you can make the trigger do both grab and select given how the system works
grip, menu, system and trackpad click
thank god i made the SUIS like this
literally no other system would support this shenanigan
well, and trigger of course
yeah, so if you remap grab to trigger it should work given the way that the SUIS does capturing
anything you wanna grab won't do trigger
it'll capture the thing so nothing else detects it as trigger
and vice versa
working great
tried
manifold | simular
and it works, but inputs get stuck if i look away from a windowyeah that's... a bug
it's very complex to fix it
i'd imagine it would be
so i've been focusing on a lot of other stuff before it
understandable
the fact that it works at all is very impressive
you can hold the same key when not looking then look back at it then unpress to fix it
:p
yeah i figured that out lol
it's easy enough to work around
is mouse input a thing?
well yes but actually no
it's... broken
fair enough
and simular's mouse input doesn't get routed anywhere because flatland can't process it
because that's a lot more work i haven't had time to do yet
understandable
azimuth moves the pointer but the input methods don't work in clients for some reason
oh right i think it can't find the input handlers properly yet
:blobcatgoogly:
even the idea of the workflow with this is super cool
what would you say is better about this workflow compared to other XR headsets or compositors
like, the ability to just look at the thing you want to interact with and just instantly interacting with it is crazy
i invented the basis for that back in 2020
it's like a step above focus follows mouse which i can't live without anymore
you could look at a cube and flick your head to rotate it
what about stardust as a whole vs other stuff?
admittedly i've never used any other XR compositors, but so far this feels like the future in a way i didn't imagine it would
cool, thanks for your feedback, customer #1564151354
:p
i mean, combine this with passthrough and hand tracking and i don't even know that i would ever buy another monitor lol
well we have hand tracking
and passthrough technically too
but that one's janky
alright, weird question time. would it be possible to create a window that renders a different thing in each eye?
haven't added custom shaders yet but when that happens, yes
that's also gonna take a while since i am not a graphics programmer
my mind is instantly going to the ability to play 3D content on this without the need for garbage like bigscreen
yes absolutely
totally not something any other headset could do
not like apple can
lol
i even want to make a special virtual controller for games
i've literally had the same for a while actually
having a virtual environment with whatever kind of display you want and whatever kind of controller you want just seems so cool
yeah, it's total freedom since you can virtualize the hardware
not good for everything
like flight sticks are very good stilll
but it can make a lot of stuff obsolete
but like, imagine having a virtual arcade cabinet type thing
oh yeah you could def do that
the argument against it is "why not just have a list of games you tap like on a phone"
like take space harrier for example, this seems like it would translate perfectly
but anyway, thanks for the help (and the amazing software)
thanks! if you wanna make your own stardust apps/objects ping me and i can help you understand how
it's just basic rust
i'll absolutely start making stuff for this once i have a better understanding of rust
i think just trying this has done wonders for my motivation to actually learn rust as well
it's taken me 5 years to get to this point
2 years since i ported it to rust
it's like, almost strange that i have a proper goal of something i want to make
that's the beauty of stardust and XR in general, the end result is tangible because it's a 3D thing
instead of just learning a language for the sake of it
exactly
use the wands too, rly like them except the weird side button
Whaa that's so cool. Eytrack VR is supported it seems? https://lvra.gitlab.io/docs/hardware/
Linux VR Adventures Wiki
VR Gear & GPUs
Hardware # GPU support matrix # Manufacturer Driver VR Support Reprojection Support Hybrid Graphics Support Notes Nvidia Nvidia (Closed Source) Excellent Excellent Supported Requires an implicit vulkan-layer to not segfault: AUR・Fedora・Ubuntu・Debian Nvidia Nouveau (Open Source) Functional Functional Supported Lacks DisplayPort audio. Intel i915 ...
vr-video-player?
used that for a while, but it doesn't have the depth i want for 3D content (due to the size of the "screen" i'd imagine)
it's mostly fine for something like tron legacy, but the 3D effect is nearly imperceptible in say, gravity
it also doesn't have an environment, and i don't really like pitch black surroundings when watching movies
IIRC for 3D to work properly you have to be in a bit of a sweet spot of screen size and distance to screen, and that's the only thing bigscreen seems to get right (which is why i used that example)
then when you get into the particulars of actually watching a full quality blu-ray you hit the roadblock of MVC vs SBS/OU
no VR players can currently project MVC as far as i can tell, so your options are restricted to side-by-side or over-under encoding
what's MVC?
every VR player i've ever come across has only supported half side-by-side or half over-under, which means you squish the content to either half horizontal or half vertical resolution
multi-view-codec IIRC
why couldn't you just make it double the width
anyway, when dmabuf transfer and custom shaders are added, this'll be easy (though the stardust client will have to generate the gpu buffers for both eyes from the video, idk how to do that)
basically you have the right eye track, then the MVC track which is the difference between the right eye and the left
ooooh
that's fancy
it's what every 3D blu-ray uses, and it's a proprietary codec, which causes problems
every single VR player i've ever come across only accepts streaming a desktop window (well, biscreen supports files, but not full SBS or MVC, so it doesn't matter)
and i don't know about you, but my monitor is not 3840x1080
right, so you could make the desktop window twice the width/height?
oh righttt screen size limits
:p
i forgot that was even an issue for some people
exactly why i see stardust as a perfect solution lol
ok so then that just needs custom shaders
completely unbound by monitors
since dmabuf stuff is handled by the panel item impl in stardust
the only issue then becomes decoding MVC, which is only currently possible with a program called BD3D2MK3D
and i'd really like to not have to use that software again lol
granted i'm probably just about the only person still ripping blu-ray discs in $current_year
this is a legit problem tho
at the moment only apple vision pro even has decent 3D programming because of this limit
the quest theoretically could have it but now it's an all-inclusive 3D app that forces a context switch away from everything else and isn't persistent
i really just want to be able to watch tron legacy in 3D without spending tens of thousands of dollars on a home theater
honestly, moooood
if i had good 3D vision
but yea tron legacy is a big mood
favorite movie
by far
it's for sure my favorite 3D movie
my favorite movie still goes to hackers though lol
haha that one's great too
they got all the technical bits of hacking so wrong
but the culture and social engineering they got 10000% right
lol yeah
a good amount of lines from that movie are just stuck in my head forever
in case you're curious, here's my current top 10 (in no particular order honestly)
hackers, blade runner, blade runner 2049, the fifth element, stargate, johnny mnemonic, monty python and the holy grail, tron, tron: legacy
yea understandable
johnny mnemonic does have that great VR internet scene
i think what it got right over everything else is the pure tactility and variety of interaction with hand tracking
like, is it abstract? yeah, but to someone who grew up on it that interface would make sense
it really did, didn't it
it's something that seems coherent in another universe with different history
unlike minority report
lol yeah
which has a technologically feasible (it's been built IRL) but HORRIBLE interface
because it's all abstract gestures with no signifiers AT ALL
the only thing i liked about it was putting files in the glass tablet and transferring them
honestly i think my main problem with a lot of sci-fi stuff is the fact that it all assumes we're going to just use flat glass panels with not tactile bits on them
i don't think anyone wants that honestly
tell that to the original star trek haha
techbros do
huh, it does kinda work for star trek though
though i gotta say, star trek discovery's whole programmable matter in the future for adaptive tactile interfaces was GREAT
until.... they just show examples of it like 2 times after
but that's the hollywood hologram effect tho
the actors can't see the thing and react accordingly, it's gotta be added in post
so you can't really make good interactions
unlike johnny mnemonic where it was animated, so you can
haven't watched that one
i've only watched the original series, the next generation, and voyager
ahhh
well you should know i HATE LCARS
i tried to watch deep space nine, but uh, couldn't
mood tbh
understandable lol
looks good on camera though
just as long as you don't actually think about using it
aaaaaaaaa
ok but
there is 1 example of good lcars
just 1
and guess where that is
no clue
star trek prodigy
3D animated
that makes sense
the lcars on the protostar actually had labels and distinction and i legit feel like i could fly that ship
it's all actually super clear and understandable
it's not as good as it could be IMO
but it is still amazing
IIRC the idea behind it is that the computer created a profile of where you expect each button to be or something
the problem is, they all look identical
so the real problem is that every person in the star trek universe has incredibly un-intuitive ideas about UI
yeah
i swear if i was there i'd slap them all around and make a better design for all this
lol
idk, i guess when it comes to UI design i would just prefer to interact with the least amount of it possible to do the thing i want
so... many people say that and think it and believe it
but in practice, i've found that it's not that simple
like, if i can do something physically with like a knob or buttons, i woul much prefer that over software
you can have interfaces with more complexity and more ways to do a thing but end up easier overall
i should specify, i guess i meant like, user interaction not UI, my bad
i think when it coes to actual software stuff i just want consistency
and information density
problem is, what happens when a consistent interface doesn't fit well for a given task
like, trying to use a similar interface between editing audio and charting stars doesn't... work
i mean, i want consistency per-app more than cross-app
ahh that's def understandable
idk how you even screw up intra-app consistency
or like, for web design
if i expect a thing to work a certain way, and then a website changes that, i get quite annoyed
ah gotcha
like those websites that seemingly stop my scrolling to like, zoom an image before i can get past the bit of text
but the question is, do you get annoyed when it's a stupid redesign
or is it that it changed, even if to something better
depends on the redesign
if it changes where i expect things to be, then i'll get annoyed at first for sure
but i can get over that if the general usage is at least on-par after i learn it
unless the new design changes something that actually impacts my usage i'm generally fine with it
right, so if you were to switch a traditional audio editor like audacity for having a giant ribbon of audio you could stretch physically and cut with finger scissors, that'd be ok
since you can do it just as fast
but it's still different than before
i strongly disliked the wikipedia UI for a while when they made the page not take up the full width of my monitor for example
but then was fine with it when they added the width buttons on the side
(before that, i made an account to use the old UI)
yeah that's fine
i just can't stand software slowing me down
that i will def agree with
but there's no need to do that if well designed
that kinda actually works for both points come to think of it
:blobcatnod:
like, the wikipedia thing slows down how fast i can parse information by not showing as much text
i think the only other major gripe i have with current design is buttons that don't look like buttons
well that's not gonna be a huge problem
or links that don't look like links
i hate buttons a ton
they're 0-dimensional actions
fair
combining controls into more context in XR is totally free
you don't have it where 2 buttons is cheaper than a knob for a physical device anymore
i think my favorite bit of software UI is blender, which i can't imagine is a popular opinion
i like that it gives me everything i could possibly need with like, 2 clicks max
blender's... not bad
it's got so many things you could do but no real unifying principle
i mean, fair lol
you have panel and panel and panel all over the place
i do think my concept of making blender fractal would help a bit tho
where you're presented with a root empty nodegraph that you can drop a scene node into and zoom into that until it fills the full view
effectively, making it so it's modeless
meaning that at least you don't have the compositor technically act both inside and outside the scene at the same time
how do you mean?
kinda like this
and you could have a VSE node and all too
that you can plug the image outputs into clips and such
unifying them all in 1 continuous space with a very clear heirarchy
that's interesting
using ctrl+scroll or such to go in and out through everything
just uh, good luck avoiding all of the blender hotkeys
well that'd be determined by what your mouse is over
fair lol, was just making a joke
and ctrl+scroll would be truly global
well, ctrl+scroll does something in the 3D viewport
oh?
moves the view left and right IIRC
then shift+scroll is up and down
ah
alt+scroll is timeline i think
blender really is a mess when it comes to keybinds
but it's a mess that i've memorized by heart
like ctrl+alt+shift+c is the hotkey to set an objects origin
but then shift+c is to center the viewport on the 3D cursor
:blobcatgoogly:
like i said, it's a mess
come to think of it though, that might loop back to my idea that i like to avoid UI
might be why i like blender so much
i can just memorize the arcane keybinds and not click anything
lol
it does become a problem if someone asks me how to use blender though
because like, i can say exactly how to do a thing, but have no clue how to explain it
and just to add another layer to my abstraction from the general population, i still use the classic blender controls
so while everyone else is selecting with left mouse and has like, a right-click menu
i'm over here selecting with right mouse and moving the 3D cursor with left
....which also ties into the thing about design changes i think
because i'm fine with a new change so long as it's not slower
but if i'm given the choice to just not use the new thing i won't
so i guess i'm just too stubborn
</rant>
i use classic blender controls with left click select
:p
i'm v weird
classic is right click though, left click is the new™️ controls
yes
:p
i change that 1 keybind from classic controls
ugh, left click select was set as the default in 2018...
could have sworn it wasn't that long ago
haha yea
didn't even know that was an option
i honestly don't even know what else the new controls changed
i've just been using blender the same way since 2.74 back in 2015
anyway, im going to get back to... whatever i was doing... which i'm sure was important but i've completely forgotten about
hopefully i haven't caused you too much suffering with my incoherent and probably contradictory UI ramblings
^w^ cool! yea i noticed too that the depth isn't that strong. idk here is an ffmpeg command i made that works to view 3d video from nintendo 3ds in vr-video-player:
i used av1 and de-noise because the mjpeg blockiness is too jarring and 30fps instead of 20 default
nintendo 3ds
omg
I wish it could record in higher resolution in 3d, but i guess its a bandwidth/cpu speed limit.