#virtual-reality
1 messages ยท Page 219 of 1
I actually submitted all those bugs (bar camera rotation) - I've come to realise that the ARCore session bug is kinda irrelevant after the update to the standard AR session.
@mighty carbon agree 100000%
Also I'm pretty sure the ARCore Session bug was only in the preview builds.
I've definitely been using ARCore sessions because part of the bug submission for AR video formats was testing the ARCore specific functions for getting and setting available resolutions (I think a lot of my UDN threads are private however so you probably can't see these)
Do you have experience with ARkit/iOS?
Nope, never got into the apple ecosystem - hence why I'm specifying ARCore in my discussion
sooo, a few days ago I packaged dev build for Quest and I didn't have enough RAM on Quest to run Renderdoc. So I made a smaller level, deleted all temp folders, re-packaged project and ... it won't run on the device o.O
literally no settings changed, only static mesh changed
getting this logcat: https://pastebin.com/73A0JQ0F
any idea what's going on ?
@mighty carbon off the top of my head do you have any null references or anything because of what you changed/got rid of?
no, it was a large static mesh which I deleted and replaced with several much smaller static meshes
I didn't touch any project settings, nor BP code
literally, deleted mesh from scene, imported a few new ones, placed them in the scene, saved project, closed UE4, deleted DerrivedCache, Saved, Intermediate, Binaries folders, restarted UE4, repackaged project - bam!, no bueno
That's super weird
I've had my meshes cause crashes before so I deleted, reimported then it was okay
If you get rid of the meshes and repackage does it work? or you reckon its because of deleting the derived folders?
15 meshes, each has 3 LODs.. If I delete them, then I'll have to spend some quality time setting up LOD screen sizes, lightmap sizes, etc....
No i mean just from the scene
right
those parameters are only set in the detail panel when meshes are in the scene
oh, nm
I am thinking about something else
yeah, going to have to try that
I'm running into something that's puzzling me. I turned off all the lighting in my app (and rebuilt the lighting). If I run it on the Oculus Link, then it's dark (mostly - I think some of the materials in the default VR template have some glow). If I run it on the Quest natively, there's a big spotlight in one section. Anyone have any idea why that would be?
Well, I went through and just deleted the lights (rather than set them to visible=false) and rebuilt. that seemed to have worked
Does anybody have a updated version on how to get started with Oculus Go Development and Or the best version for Oculus Go Development?
Oculus Go is going to be retired soon (most likely)
@last knot I was launching my game/application and got this error "LogPlayLevel: Error: ERROR: Android toolchain NDK r18c not supported; please use NDK r14b to NDK r18b (NDK r14b recommended)"
@mighty carbon have you tried running from the editor?
@sullen vortex no, but that's how all bugs slip through.. Better always run via apk.
I made a test project and that ran fine.. Maybe something corrupted my project. Now sure how it could happen though
agreed
ok, it's definitely not my art assets - migrated them from broken project into clean project and it works fine on the device
btw, that magnetic USB-C adapter is a life saver (and USB-C port saver on Quest)
Did I recommend one here? There's one I use that I love.
dunno, I just got one from Amazon (iSkey or something like that)
Mine is something like unemy
Magnetic USB C Adapter,Type C Connector, USB 3.1 10 Gb/s PD,100W Quick Charge - 4 K @ 60 Hz High Resolution - Supports High Speed, Compatible with MacBook Pro/Pixelbook/Matebook/Dell XPS (Grey) https://www.amazon.com/dp/B07MMKZ8XD/ref=cm_sw_r_other_apa_i_xZ5lEbJXXJAC4
You still need the clip, tho, the magnet can't hold the Link cable by itself.
what kind of clip @idle osprey ?
It comes with the Link cable. It's the same one the Rift has. Let me see if I can find a picture.
HERE is my review of the Official Oculus Link Cable for the Oculus Quest, the cable that will let you use the Oculus Quest as a PC VR headset, able to play all of your Steam VR games or Oculus Store Games without any problems (beside the fact that it is in BETA :P )
Is it re...
time offset in the link
I don't have Link yet, so I am using cable that came with Quest
magnet holds it fine and I don't get annoying "Enable Link" message
anyhow, Vulkan is bad unfortunately
this is ES3.1, 64bit, Dev build(!) https://i.postimg.cc/RMWS9P6w/com-Supranormal-VRQuest04-20200127-202356.jpg
same thing on Vulkan is 35 fps or less
@hallow knoll so, last year someone from Epic said this https://forums.unrealengine.com/unreal-engine/feedback-for-epic/documentation-feedback/1683923-mobile-android-oculus-dlc-creation-packaging-and-playing-training-stream-and-docs-when is a good subject for a training stream. There are no docs and nothing out there about this kinda very important subject. Is there any chance you could have a training stream about it in the nearest future ?
Is there any way we could have a training stream about creating, packaging and then playing DLC for mobile (Android/Oculus) platform ?
I am sure people would like to learn how to set up main project/game so that it would be easier to add multiple DLCs after the release; how ...
I hate it when you have a question, but can't figure out how to phrase it -- and then you realize you don't really have a question, you're just too lost to know WTF to ask. ๐
Quest question:
Did anyone manage to have a web browser widget that you can interact with (using the Widget Interaction Component or other)?
Works on PC, not when I launch on the Quest. The widget interaction works on regular widgets on the Quest. ๐ค
Hey All, quick question. Currently developing a build for oculus quest and although I've set the FFR level in through the VR pawn to be set to medium, it keeps returning as off. Currently working in 4.24.1, does this feature only work in the oculus dev branch of UE4?
@honest temple I've used it in 4.21 and 4.22 and it was working then. Using Oculus branch now.
Has anyone integrated voip on the quest without using the oculus platform?
Maybe with Vivox? https://error454.com/2019/09/26/oculus-quest-microphone-with-vivox/
๐คท
4.24.2 is finally out
hey guys anyone tested 4.24.2 with htc vive? controller mapping still not working correctly.. :/
I've given up on controller mappings until OpenXR is ready ๐ฌ
steamvr doesn't currently have an OpenXR implementation
which is why WMR and Oculus are the only platforms on it in 4.24
I see. Come on Valve!
I got controller mappings working fine for Vive @woeful crypt
You need to name your touch axis bindings with _X and _Y at the end or else SteamVR input apparently just ignores them..
does anyone have experience getting the 3D models for each of the vr controllers? @tired tree may I ask do you happen to have the 3D models for them in the latest vr expansion plugin if you choose to show the controllers vs the hands?
I was playing In Death recently and they have a very clever implementation for their tutorial, they point a laser to the controller and highlight directly on the 3D model of the controller the buttons the user should press
they are auto loaded from the API, the exist in a directly in steamvr itself
can just port them
ah thank you very much, do you know if they are accessible via blueprint and if it includes the index controllers in it?
SteamApps/common/OpenVR/resources/rendermodels/
the auto loading is not accessible
my loading nodes are
but per button highlighting will require some material changing
there IS a default material for the auto loading from Epics version of it, that you could override and set material parameters in
maybe that's what InDeath did
they are a UE4 game also
hope you are well by the way, congrats on the epic mega grant very well deserved!
@night linden I'd be happy to test your game but it will have to be a bit later on, you might get more takers also if you share a bit more info about it or a youtube link.
how are people recording it ? As I tried to do it with the nvidia screen recording but the view on screen isnt the same as what is on the vr display, seems to be cut slightly
I record using xsplit or obs
you might still have similar problems though, depending on your screen mirror
thanks just googled obs, and see I can link it to C:\Program Files\Oculus\Support\oculus-diagnostics\OculusMirror.exe
which shows exactly what i am seeing
will give it a go
If you want to record the Oculus Rift menus or a game that does not automatically display a mirror you can use the oculusmirror.exe to mirror exactly what is displayed on the Oculus Rift. You can then add the Oculus Rift mirror as a game capture though OBS.
I will do anot...
Camera feed aliasing is now fixed in ARCore
@spare yew Cool. Let's hope ARKit will get fixed aswell soon, waiting since 4.23, last september(!)
Job post for a web browser on the Quest. Easy bucks if you've done it already: https://www.upwork.com/jobs/~01cdb242eaa77fa5b8
@night linden I'd be happy to test.
Used to do testing for FishBowl VR when they were still around. Oculus Mirror and OBS works great.
Here is their "how-to" video
https://www.youtube.com/watch?v=ttNPOnS-7wk
A step-by-step guide to recording Fishbowl VR playtests on your Oculus Rift or HTC Vive.
Good thing I picked UE4 instead. lol
I'm noticing serious hitches on Quest when unhiding actors - anyone else having experienced that?
Solved Reinstalled Android SDK and uninstalled Nvidia Codeworks: I'm really scratching my head trying to solve this: "C:\UE4Proj\Quest101\Intermediate\Android\APK\gradle\rungradle.bat" :app:assembleDebug". It prevents me from launching the test VR environment on the Quest. Have anyone else had this issue?
some days I get 45fps from our VR projects (ie, reprojected 90) but other days we just get 30fps (ie, reprojected 60)... but I seemingly haven't changed anything!
unless 4.24.2 brought back the shitty performance from 4.24.0
bam! finally https://issues.unrealengine.com/issue/UE-87683
upvotes are appreciated
If anyone is interested i just released a tutorial on How to get hand tracking orking on the Oculus Quest. https://youtu.be/UeG6n9B9xkA
In this tutorial, I use an unofficial plugin to enable hand tracking in Unreal Engine 4 projects to keep us busy until the official plugin is released by Oculus.
Shout out to Ryan for developing this plugin. In this video, I show how to use Ryans plugin to enable hand track...
that really should be done with an animbp and not a posable mesh, since the collision has to be manually added through capsule components with that.
though, he does state that its a temp mockup until the official version is out, so I guess its a moot point
for people having issues in 4.24 and the Scene Capture Component 2D
please upvote ๐
already did for 4.23 and it's still there :/
@fluid cipher How's Web Browser for VR on android is easy buck?
@wraith sky Still not working on my end, do you want to give it a try if you have a Quest?
https://www.youtube.com/watch?v=n453zGZ6yhg&feature=youtu.be
You can see here that the button reacts, but not the website http://www.rrrgggbbb.com/ which should react.
@fluid cipher it probably won't work...
ue4 uses android webkit, and it's not available for vr...vr browser only available on gecko engine which is not part of android/ue4
for desktop ue4 uses chromium
the issue is input, as you need to map the space
Ok I see. So the Oculus Quest uses gecko, and unreal tries to communicate with chromium. Maybe I can inject a javascript click() on the web browser?
What do you mean map the space?
the interaction is mapped from vr space to browser window coordinates
you can try to pass widget coordinates to browser js and emulate click event
Oculus has Gecko embedded? Afaik Unity uses gecko for oculus quest.
I don't know
Thanks @wraith sky, but I'm not skilled enough to add geckoview myself to the engine!
I'm trying to do some js to click but it's not working yet
@fluid cipher have you tried other js events? do they work?
i managed to simulate a click event on the Quest, now I'll need a system that converts unreal space to browser space and using something like document.elementFromPoint(x,y).click()
@flat shoal make sure you are minimizing unreal engine completely when you run your projects, can add up to 20ms
@void raptor well, when I do what I always do, yet see that 4.24.0 and 4.24.2 adds up to 20ms compared to 4.22.1 and 4.24.1 I don't think minimizing anything matters (also, that happens automatically when you do a VR preview anyway, for me at least)...
actually, minimizing the engine while doing a VR preview is one of Unreal's huge, HUGE shortcomings, compared to Unity ๐
meanwhile in Unity, you get a debug view side by side with the VR view with very little performance impact...
oh well, such is life
Has anyone noticed that Audio Components play faster, and therefore sound higher pitched, on the Quest?
Has anything changed in the way we setup the motion controllers in 4.24 ?
In the editor I have my hands and I can teleport around, when I package my project I can look around but my hands are on the floor and not linked to the controllers
โ error message when publishing for the Quest: ERROR: GetBuildPlatform: No BuildPlatform found for Android | โ EDIT Looks like Gradle is unable to initiate due to it not being able to determine java version from '13.0.2' | Assumption Wrong Java version |โ EDIT Java fixed, Android fixed, adb working, permission rights set to admin.| โ Unreal looking for build tool in D: but there is no D:. Probably because i didn't have admin rights when installing 4.24.2. Trying: Reinstalling Unreal 4 | โ EDIT No build platform. UE4 still looking at D:, Reinstalling epic games launcher | โ Still not working. Looks like more people are having the same issue with 4.24.2. Reading the forums
I have a question how hard is it to make a app that uses AR and it only recognizes the image you put in and then uses AR to project the corresponding model on top of that. and be able to update it on my side where i can add new images and models that correspondent with those. i never mad a android or ios app before but have okay know how of unreal engine, but not much of the program side, anyone here that can give me some pointers?
Hey all, has anyone been able to successfully load images from external storage at runtime on an Oculus Quest? On windows, I use imagewrapper module, but as soon as my code references the ImageWrapper module on Quest the app crashes on load. Is imagewrapper not compatible with android?
@tawny berry using any custom plugins?
Any one know how I can delay the spectator screen by a few frames so it syncs with webcam (green screen) feed?
@honest temple I use ImageWrapper on Quest and successfully load up images people drop into a "reference images" folder
It crashes if I try to load more than 6 4k images. So I just limit it to 1080p images
Actually I just wrote a downsampler and silently downsample each image after loading if they're bigger than 1080p
I can toss you my whole function if you want, but it's embedded in my project pretty tightly with dispatch calls etc
@sturdy canyon That would be super helpful just to see how you're referencing it
It seems like when I get a reference to the image wrapper module my app crashes, So would be excellent to see what worked for you,
it pops onto a background thread after loading the module and then dispatches onto the game thread after it's done
that makes some of it pretty confusing
@tawny berry If you don't generate SteamVR bindings and try to run a packaged game with SteamVR, your hands will be in the floor
This is a fun new thing in 4.24
to make things extra fun, if you use a Rift to develop, you don't even get the option of generating SteamVR bindings
@sturdy canyon That's great, thanks for sharing will take a look once i'm able and see whats going on
Code is provided as is. I can't really offer any additional support if something in there doesn't work for you
โค๏ธ
@sturdy canyon @honest temple you can launch with I think -hmd=SteamVR if you want to generate bindings while developing with oculus
Or change plugin priority temporarily
Good to know!
(Plugin priority is in I think Engine/Config/DefaultEngine.ini )
for a couple of days ive tried to create grass that can be used in vr. the main culprit for the performance hit seems to be the shader complexity. does anybody have any idea how to make dense grass performant without completely making the material unlit?
also the quad overdraw visualizer doesnt show any overdraw around the masked grass blades. is the visualizer broken or is overdraw a problem of the past now?
@rigid bear try changing masked materials to use z-equality test
quad overdraw is I think only on geometry borders, not masked borders
so im guessing the visualizer in the viewport is not showing it properly anymore
where is the z equality setting? inside the material?
@rigid bear
change early z pass to include masked materials
then check that mask material only in early z pass setting
@sturdy canyon thanks for the code snippet my dude. Got it all working now, I was using deprecated reference of "IImageWrapperPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(ImageFormat);" instead of TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(ImageFormat). Maybe I should take more note of those deprecation warnings when updating projects ๐
what it will do is render the grass depth in the z pass, then in the base pass it will render all the grass using z-equality testing instead of z<= to reject
it will apply to all masked materials and may break things if you had e.g. two separate masked planes exactly on top of each other
it is supposed to be around a 10-12% perf improvement
nice. 10% is a lot when you try to reach below 11ms
@sturdy coral are there any other downsides to not have it on "decide automatically"?
you can't turn on mask material only in early z pass if you leave it on that
we are currently grasping for any ms improvements we can get while keeping a realistic look
@rigid bear main downside compared with leaving it on auto is you are doing extra geometry work in the z pass, the extra rasterization in the zpass should likely pay off with the early reject in the base pass. you should still benchmark it afterwards and confirm you get gains
if you are geometry bound you shouldn't do it
I think that 10-12% number was what they got in fortnite with it, I may not be remember it exactly right
whats the max desired triangle count on screen at the same time for vr?
it is in one of their optimizing fornite talks
around 1 million or so across all passes I believe
alright. im currently stress testing with 6 million just to see what improvements i can get
I think you can get a bit more if not using instanced stereo as it does less geo work without it on
but then there is a higher draw call count usually
not sure after the new auto instancing stuff if any of that changed
I think a lot of people go beyond a million, but that's about what they recommended for robo recall I think
automatic resolution will get you better gains than almost anything else (for shader perf, not geo)
because otherwise you are budgeting everything around your worst case and throwing away all kinds of perf in less challenging views
so to be clear, if scaling down the resolution increases performance drastically its a shader problem and not a geometry problem?
yeah usually so
thanks man! can certain material properties be completely discarted through c++ for things like foliage? dont really need a normal map or metalness for it
forward renderer or deferred?
forward
I think so, it may just already be handled if you don't hook up the pins
do you think proper dense grass is even possible in vr? we wanted to reach a "escape from tarkov" level of grass density but it kinda seems unreachable. the lighting on the grass itself seems to be the biggest performance hit. when the grass material was set to unlit the shader complexity went down from 900 to 100 and the frame time was around 8ms
I'm not sure, I don't think I've seen anyone pull it off
@rigid bear I would experiment with pulling out alpha into a separate texture and compress with:
having it combined with the RGB in one texture would mean in the early z pass it is going to use all that texture bandwidth for the color stuff that isn't really needed
not sure if will help grass but also make sure to set:
another thing they mentioned from fortnite is if you are going to have players squash the grass through something like player position in global material parameters, don't do any expensive rotation calculations and instead try to do it with position skew alone or something
Good ideas. Will definitely keep it in mind. Thanks!
can anyone confirm or deny that full-screeing your mirror window (in 4.24.0+) works?
for us, the actual window resizes, but the viewport-texture remains the same size
i.e. you end up with just your mirror-viewport and a huge black area around it
would be appreciated if someone could tell whether they have the same issue (or not)
@compact kettle works for me on steamvr, which plugin are you using?
thanks for checking @sturdy coral
what do you mean with plugin?
I tried with WMR, but someone else from our project tried it with Oculus and steamVR as well :/
from what my debugging steps told me, it looks like the backbuffer of the mirror viewport is never resized, for some reason. But I cannot find the code that actually should do that. Only mention I can find of resizing the viewport is ConditionalResizeViewport in SlateRHIRenderer.cpp, but that one specifically prevents the call of this for the mirror viewport by in line 1244
@compact kettle you are on 4.24?
it may be a bit much to ask, but could you eventually set a breakpoint in that function and check if that is called when you fullscreen the mirror?
then I could look at that callstack and see what should happen
yeah, tried on 4.24, 4.24.1 and 4.24.2
it worked on 4.23
would save me from having to go back to 4.23 and recompile..
(and then go back to 4.24 again, as we already shipped with 4.24..)
@compact kettle it gets called for me on entering and exiting fullscreen
I'm on 4.24.2
FSceneViewport::ResizeFrame was broken before on earlier engine versions
@rigid bear I got semi decent results by using grass on landscape and doing some aggressive culling and matching the landscape material to the grass so that as the grass gets culled in the distance it fades nicely into the landscape material. Lighting is by far the buggest hit in terms of performance but if you use the "use landscape lighting" setting you can get passable results with adjusting yout cascade shadow maps
@tired tree yeah.. It just fit in our schedule as we had a big update pending anyway, and Jeff likes to keep the app on the latest version. Though the thought that each engine version makes UE more stable is probably a pitfall
@sturdy coral that's weird. I'm def on 4.24.2, and this behavior happens on multiple machines ๐ค
are you sure you didn't apply a fix on 4.23 and then merge that into your 4.24 branch?
maybe you overwrote or conflicted with their fix
Yeah, def don't update as possible.... Last few releases have had really Terrible initial vr launches
the old bug only affected steamvr though
@sturdy coral I'll take a look again.. Can't remember though ever fiddling with stuff related to this
and was created by accident from them fixing something for PSVR
is it also called when you just grab the window and resize it?
no when I grab the window it seems to have the problem you are talking about
doesn't call it and has the black border
maybe it is due to fullscreen exclusive mode vs fullscreen windowed then
or something like that
hmm possible. What mode are you in?
I mean, isn't there like a borderless variant or something? Need to look into it again
r.fullscreenmode seems to say windowed fullscreen whether I'm in windowed or full
I think that is the mode it uses while in fullscreen so it is ok that it always says that
not sure why resizing isn't triggering it I'll have to look at their fix again it was different than the way I fixed it in 4.23 and I threw out my changes for theirs with 4.24
I don't know if my stuff was working with resizing though before
pretty sure with 4.23 everything worked as expected
at least 4.23.1 or .2, don't remember which one the latest was
hmm well let me know if you figure it out
I won't be able to look too much into it because I switch to 2D when the headset is off anyway and resizing seems to work there
will do. Will grab something to eat real quick first though, starving ๐ thanks again for the screenshot
on avoiding full engine builds the solution is to break down and buy a 3950X or more ๐
when in 2D conditional resize viewport seems to just get called every frame:
Any one know how I can delay the spectator screen by a few frames so it syncs with webcam (green screen) feed? here is a video showcasing its use case. Basically building a VR cricket game.
https://youtu.be/Q1dIZZgA_-8
@cold siren that may use a lot of memory. I think there is a way you can get exclusive access to the texture instead of queuing writes to it through the render thread, and in that way update it late and save the frame of latency or so that comes from the game thread/render thread decoupling
the liv plugin has support for delaying things
Not sure how to go about the first part. Not a coder, BP only for now. Looking into LIV though thanks @sturdy coral
@cold siren That's really neat dude! good job!
@carmine yoke thanks man! Appreciate the support!
@removed it is called every frame, it's conditional, and then just later in that function (behind that first if statement) does any actual resizing happen, in case the desired res != the current res
ehhh @sturdy coral
@hallow knoll thanks man!
@cold siren isn't there a delay feature in obs? Or it might be only possible for some type of sources. Just have to figure out the settings
@@rich canopy Not using obs for compositing, this is being captured in game
@cold siren The Cricket game looks good! Nice
Anyone know where the "device models" for the various motion controllers are in the engine content? I'm specifically talking about the models used when you turn on "Display Device Model" on a motion controller component.
they are in each api's model directory, for OpenVR that is: SteamApps/common/OpenVR/resources/rendermodels/
just noticed UE4 issues tracker no longer has VR (or even XR) section :/
Thanks MordenTral, I can't find an Index Controller in there....
So I have my SteamVRPlugin from 4.23 which has been masively modified and to which i've added a lot of stuff. I need to port all that over to 4.24 that now ships with the plugin internally. I've tried all manners of thing to move all that over and not have it break but so far have only failed miserably. Has anyone tried to do something like that?
Stuff I've tried :
- Attempt to move content to another new plugin, fix redirectors
- Attempt to copy content to a new plugin, set up core redirects
- Attempt to migrate content to a new plugin, fix redirectors
- Shear all the extra stuff from the steamVRPlugin to turn it into just a content plugin
That last one got me a bit further I think, the blueprint compiles and is not a massive wad of red spaghetti, but I still get weird issues. My hands are not showing (they did for a second prior, but I was getting spam with error messages that I don't remember)
Oh no here's the error message: LogBlueprintUserMessages: [BP_MotionController_C_3] ERROR: Animation does not exist or does not implement HandAnimInterface!
I think I've finally made it ๐ญ
I did a search
i imagine a frequent question here is: How to have steam vr not boot with editor
but could not find an answer. Am using a quest, and rarely use the hmd. Should I just disable vr on boot? Theres nothing I can do to have steamvr not-launch?
@thick linden launch with -nohmd
thank you
4.24.2 fixes a bug with it over 4.24.1
you may need another change on the thing that gets audio device, I think that is only if oculus plugin is selected
Yesterday I setup an alpha channel for my game on the oculus store. It was pretty easy. Then today I decided to try and do this on steam as well. It occurred to me that I've never launched my game through steam vr - it's a Rift S. How does one get a game to launch with steam vr from an oculus device? I added the plugin Steam VR in UE4. I then tried manually adding the game to my steam library and then launching from Steam. It appeared to pop up that window you see sometimes in Steam that asks you if you want to use steam vr or oculus, but it dissappeared so quickly I couldn't read it
@warm lion launch with -hmd=SteamVR
or edit hmd plugin priority:
BaseEngine.ini
[HMDPluginPriority]
; Since SteamVR also works with the Oculus Rift and Windows Mixed Reality, give priority to the native Oculus and Windows Mixed Reality plugins before trying SteamVR
WindowsMixedRealityHMD=40
OpenXRHMD=30
OculusHMD=20
SteamVR=10
Hey guys, I just got around to installing 4.24.2 and am trying out the SteamVR Input plugin which as far as I can tell is built in to 4.24's SteamVR plugin. I have the SteamVR plugin enabled and am using the sample project from the marketplace page, but I am missing the SteamVR button on the top toolbar that has all the actions for regenerating bindings, etc. Anyone else have this issue?
@sturdy coral Thanks!
@twin lagoon which headset?
@twin lagoon if you are using their sample project from marketplace that includes their plugin, I think the engine version detects their plugin is loaded and doesn't load the built in one, so you might want to make sure that isn't happening
@sturdy coral Wait so by doing this, when I manually add my game to Steam library and then launch from inside of steam it will use Steam VR instead of Oculus?
My BaseEngine.ini looked exactly like the one you posted so I guessed you meant to make SteamVR a higher number over OculusHMD. After trying that and loading Steam Vr am I supposed to do something to launch the game in VR?
@warm lion yes, raise the priority. you can add a command line paramater to steam too
and if you ship on steam you can add multiple launch options as well that pass in different parameters, so you can set whatever you want as default by tweaking priority and then have steamvr launch options in the launch popup that can pass -hmd=OculusHMD etc.
@sturdy coral Tried on Vive Pro and Rift S, same result - no SteamVR Input button. This is both using their sample SteamVR Input project for 4.24 and trying the 4.24 VRE template branch w SteamVR enabled. I uninstalled the 4.23 version from the engine in case that was causing issues, but to no avail
@twin lagoon VRExpansion?
what was the thing you mentioned from the marketplace?
try just the 4.24.2 stock engine with the stock VR template from the engine launch itself, not marketplace etc.
just make sure you can get that working first
@sturdy coral yeah, VRExpansion. on the marketplace page for the SteamVR Input plugin they posted a zipped sample project for 4.24 that I was previously trying. Just opened up the VR template on 4.24.2 and no SteamVR Input button still.
@twin lagoon vive pro or rift s?
@twin lagoon paste your output log with the same filter ( hmd|steamvrinput ):
that's what mine looks like
stock 4.24.2 from github
if you launch with oculus it will load that plugin over steamvr unless you pass -hmd=SteamVR, but with your vive pro it should look something like that
I'm trying to package up an apk that I can hand my boss and he can try on his Quest with sidequest. I kind of asked this before, but how does one do this with UE? I only got it to create an apk+obb files and required an install script to put it in a very specific place (not sure if it matters)?
I guess first I should ask what the obb file actually is? I've googled a bit and the questions about problems with it seem to be covering up that basic answer.
@sturdy coral Still haven't figured out the issue with the resizing of the mirror window.. Are there maybe any hints you can drop? I remember you said there was something similar happening a few versions back with some fix you seemed to know something about
maybe that is an indication that helps me track down the issue.. I am trying to reverse engineer the issue, trying to figure out what should be called and then see why it isn't. But that turns out to be quite tricky..
In the end, the back buffer of the viewport is not resized, which is the end-point problem. The resize however, I can only see happening from within ConditionalResizeViewport, which mirror-windows never call (for me), and it looks to be intentional, as ever call to ConditionalResizeViewport is guarded by a Window->IsViewportSizeDrivenByWindow() if-statement, which is actively set to "false" for the mirror windows..
The one in updatefullscreenstate is guarded too?
that one is not, I believe
however, that func is never even called for me
also, the name kind of indicates to me that this func should only be called when changing full-screen / windowed modes, but perhaps that's just unfortunate naming
I feel like FSceneViewport::ResizeFrame should be called, but it never is
@compact kettle that one was the only one that worked for me, resizing the window didnโt
But going full screen or out did
nm ResizeFrame isn't called anytime except for the SystemResolutionSyncCallback
yeah neither works for me...
In my call stack it is calling into game user settings on the full screen change
can you send that? I think the callstack you send yesterday may have just been the editor window itself triggering the breakpoint, not the actual mirror window
true... Whoops
yeah that one actually also contains that SystemResolutionSinkCallback I just mentioned.
Let me breakpoint spam that callstack and see where it first stops following it like it does on your machine
it doesn't even call "ApplySettings"
wth
you just click that windows-bar full-screen thingy, right?
not even "HandleToggleFullscreenCommand" is called, which is the first entry in your callstack you send
@compact kettle I think I hit alt-enter
maybe it is only calling into that due to shootergame overriding something
UGameEngine* GameEngine = Cast<UGameEngine>( GEngine );
if( GameEngine )
{
UGameUserSettings* UserSettings = GameEngine->GetGameUserSettings();
if( UserSettings != nullptr )
{
// Ensure that our desired screen size will fit on the display
ResolutionX = UserSettings->GetScreenResolution().X;
ResolutionY = UserSettings->GetScreenResolution().Y;
UGameEngine::DetermineGameWindowResolution(ResolutionX, ResolutionY, FullScreenMode, true);
UserSettings->SetScreenResolution(FIntPoint(ResolutionX, ResolutionY));
UserSettings->SetFullscreenMode(FullScreenMode);
UserSettings->ConfirmVideoMode();
UserSettings->ApplySettings(false);
bNewModeApplied = true;
}
put a break point there, maybe your UserSettings is null so ApplySettings never gets called
it in fact isn't called @sturdy coral , for whatever reason. If I look into the GameEngine object though in a breakpoint, the GameUserSettings object is existing (def not nullptr), so I don't get this at all. This goes from weird to mysterious.. The debugger has some spasmic attacks in that piece of code though, maybe need to compile in debug
But that doesn't seem to be the issue in the first place
That whole function is only called when doing alt+enter, not when using the windows-border icon
I'm trying to evaluate my options for creating a small driving game in VR, lighting is important to me so I'm concerned about the limitations of the forward pipeline. Is its performance on lighting more along the lines of old forward renderers, or modern clustered forward renderers?
@distant heath desktop forward is clustered, with a 3d frustum grid for the lights
Ah I see, can it support a fair amount of dynamic lights?
Assuming most do not need shadows
yeah, should be fine
Thanks! That's what I needed to know
I can imagine I'll need to be a bit conservative on graphics candy anyways given that my highest spec'd machine right now's got a 970
does anyone know of a good tutorial that goes through throwing physics? as I want to change how you can throw something in VR depending on the object picked up. Thanks
Anyone know why in Oculus my eye height is correct but in stream vr it's much higher?
I've set eye height on the pawn to 0. My pawn root is a sphere comp - camera located in the center
I've also tried GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Eye);
Okay how about a way to detect if it's running through steam vr or oculus
I can detect devices but that doesn't solve if an oculus hmd is launching through steam vr
In practice, how well does TAA work for slow paced VR experiences? Losing out on volumetrics on the forward pipeline is a bit of a hit
I'm targeting PC primarily, I know on mobile that kind of stuff wouldn't work well regardless
@warm lion oculus defaults to eye, steamvr defaults to floor; just set them both to the same at startup
you probably just want to set both to floor if it is a game where the player walks around
eye is more often for cockpit style games
Is there any way to get those nice volumetric looking light shafts from cars in VR, particles perhaps? I feel a fake mesh for it will look very obvious and will clip a lot
I really want to create an atmospheric feel to the game but I guess for VR I kinda have to just give up on effects like that because of current limitations
IIRC volumetric fog works in VR but you have to turn off instanced stereo..... Well now that I look it up, it's ostensibly fixed. https://issues.unrealengine.com/issue/UE-58981
...File>Package project>Android>Android(ASTC) sends me to the unreal forum...
@devout aurora have you installed androidworks? "C:\UnrealEngineLocation\Engine\Extras\AndroidWorks\Win64\CodeWorksforAndroid-1R7u1-windows.exe"
and accept the SDK license at the top of project settings -> Android
@polar valve after a long circle of reinstalling everything, verifying SDK, NDK, JDK, Gradle, ADB i am getting back to that stage now. I am however so skeptical of Codeworks. I feel like it's messing up the system environment paths.
@polar valve Trying the codeworks install now. Had to backup my previous settings.
Huh, if volumetrics work, does that mean the feature comparisons page is outdated? https://docs.unrealengine.com/en-US/Engine/Rendering/SupportedRenderingFeatures/index.html
In the 4.24 release notes it says the Mission AR sample uses volumetric effects so I guess that works!
@sturdy coral I tried that using GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Eye); This line gets called every time the headset is put back on using VrHMD->DoesAppHaveVRFocus() Works in Oculus, in Steam VR the view is noticeably higher.
@polar valve Now it's working. Had to reinstall everything from scratch basically. Including Codeworks. Kinda feel like Codeworks messed up the environment variables though.
Old guides mention to start a project with "Scalable 3D or 2D", "Mobile / Tablet" and "No Starter Content", these aren't the defaults in the VR project template, is it still the case that that's recommended?
I can't seem to find anything more recent than 3 years old on this
hey does anyone have experience emulating vr controls with keyboard and mouse?
o.O why @outer spire ?!
@mighty carbon we are suposed to be making a vr game for a class project but no one has a headset at home, so it's either figure out a way to test without a headset or only test like once a week :/
its pretty common anyway to iterate 2d on mechanics at the start
yeah, you only need VR to test/iterate interactions.. World building and a lot of other stuff can be done in non-VR.
but why would they give you VR project if you don't have VR at home?! Crazy teachers..
At the school I was at they had a VIVE setup, and at that time of course nobody had a vive at home (years ago)
It's just a lot of fun to work with new tech
It was optional to do a VR game of course
I'd stay after hours in school and workwith the tech, if possible
yeah it's a bit ridiculous
yh I'll see if i can do that
there are like 2 vives to share between like 10 teams though lmao
well the good news then is that the teacher must have low expectations
as that isn't enough dev time with the actual hardware
yeah they do. oh did i mention it's suposed to be local multiplayer too haha
@outer spire Out of curiosity what school are you at?
I'm having so much trouble getting steam vr to work with oculus. Does anyone know why steam VR loses window focus upon launch? Right now I have to completely task kill every steam and steam vr process and fresh boot steam in order to get a launched VR game to go full screen in the headset and take focus (using an oculus rift s).
I've started from the VR project template (kept to defaults high quality rendering), then enabled forward shading, and it seems indeed volumetric lighting still works with that
Nice
@warm lion if you are using eye, then it is set to wherever it was last calibrated, so can differ between the two without being wrong
After setting eye level, you should prompt the user to sit tall and hen call the recalibration function
@sturdy coral Is there an event for entering into and exiting the headset? I can check if the app has focus but that's not an event
I'm trying to find something I can bind to for this situation
There is an hmd worn state delegate somewhere
hello, can anyone tell me if there is a point to AR pinning my 3d geometry to a tracked plane if I don't intend on ever using an AR alignment transform?
im spawning my geometry where my trace for tracked geometry hits, and it seems to sit there just fine without me having to pin it
I cant find where to change android toolchain NDK's, does anyone know where?
how to get started with ue4 ar?
is there any specific kit or plugin or ar?
is ar require blueprint or c++?
?
implemented snap turn in my game today
the node @tired tree has in his plugin seemed to work like a charm
I coded a 0.1 second timeout window and the user has to come back to <0.05 on the x axis at least once for it to be eligible to fire again, so it doesn't keep turning them around if they just hold down the joystick or touchpad
a lot of users were super vocal about not having a snap turn option for my game at launch--so for those of you launching, if you have open locomotion people seem to be pretty much expecting it as a launch option or you'll get negative comments
@still lion I don't really know anything about AR dev sorry, but for VR dev I suggest the vr expansion plugin
@warm lion in the engine settings there is a numbered setting for which vr software should take priority
I forget the exact wording of it but if you search "VR" in the engine config, you may need to check it to make sure it's giving oculus the priority on launch
does anyone have experience integrating in your face 2D menus for VR? The server browser example with the laser from the template works great for in-world interaction, but does anyone have a recommendation for tutorials covering something more like a pause menu you can interact with in VR that the player can bring up any time? I'm looking to do something similar to InDeath where you can hit the menu button and then have a full screen menu where you select options with a laser.
Anyone had issues getting mobile auto-instancing working for a Quest app?
Added r.Mobile.SupportGPUScene=1 to DefaultEngine.ini, but it doesn't seem to be doing anything (and my shaders didn't recompile after adding this and restarting the edtor, like the docs say should happen). Calling r.MeshDrawCommands.LogDynamicInstancingStats 1 on BeginPlay to debug, but I see nothing in the log about dynamic instancing. Even called r.MeshDrawCommands.DynamicInstancing 1 as a sanity check, but that also did nothing.
that r.Mobile.SupportGPUScene=1 gave me horrible performance drop
I don't think it works well in VR yet (especially not with Vulkan)
Found some posts on the oculus forums (https://forums.oculusvr.com/developer/discussion/82359/ue-4-24-whats-new-improved-broken) of people testing out how it affected their projects, a lot of it positive. Good to know it's not a one-size-fits-all help.
None of them discussed having issues setting it up, though! I upgraded to 4.24 just to test this feature, so I hope to get it working!
Any knowledge on what might be messing with it?
Join the Official Oculus Discussion Forums and talk about Oculus Rift, Oculus Touch, Samsung Gear VR, and virtual reality.
And I'm using OpenGL ES3.1
Hi. Does anyone know the exact correct project settings on 4.24.2 for Vulkan on Quest?
@shadow radish I found this in BaseEngine.ini [HMDPluginPriority] ; Since SteamVR also works with the Oculus Rift and Windows Mixed Reality, give priority to the native Oculus and Windows Mixed Reality plugins before trying SteamVR WindowsMixedRealityHMD=40 OpenXRHMD=30 OculusHMD=20 SteamVR=10
I've tried changing steamVR higher than oculus but whenever a "build" of the game is run it writes over my changes. I've literally left the file open with the new change in Notepad++ and after I run the game NP++ says the file has changed and asks if I want to load the new version
@sturdy coral The only thing I can find about the HMD worn delegate is this https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/101963-hmd-removed-from-head-delegate-vr-notifications Where it says that past 4.14 it has been removed. If you know where there's an updated HMD delegate please tell, I'm not seeing anything - seems really weird to me that there isn't one
Build powerful visual scripts without code.
My plan now is to create a HMD Worn class that will I will turn on "TicksWhenGameIsPaused" and have it run continuously next to the player pawn. It will always be checking the bool value of HMD Worn
Then I'll pause the game when it's false and unpause when it's true.
@warm lion GEngine->XRSystem->GetHMDDevice()->GetHMDWornState();
you can call that to check it
I appreciate then feedback but that is just a bool value that I must continually check
it is buggy on steamvr without some code changes
something like broken at launch if you didn't start with bStartInVR and enabled VR on yoour own or something like that
Yeah I guess I'm going to have to create my own vr watcher class ๐ฆ
it is a bool that you must continually check, put it in a timer or game instance tick
you can just make your own delegate
that's the plan
just be aware that it is bugged in some scenarios
? oh gret
oculus also I think sends some kind of delegate that can pause the game on vr focus lost not sure about proximity sensor I think it is with their dashboard maybe
Yeah basically the only way I have found to track if the game is launching through steam vr is to use const TCHAR* tmpCommanLine = FCommandLine::GetOriginal();
hmm I never ran into those kinds of complications with it
but I am still on engine version 4.20
I can't get the eye level height to work for oculus AND SteamVR. SteamVRs implementation is terrible. People keep saying it's at your feet - but my pawn is a sphere with a camera at the middle. the sphere is head sized. Yet no matter what I set origin to, or how i reset the position/ rotation Steam VR is always like the player is standing up on top of the camera
it has been broken a while, but I think maybe works ok with bStartInVR==true
what is bStartInVR?
project setting to start in vr or not
also oculus get worn state is broken or was in the past
EHMDWornState::Type FOculusHMD::GetHMDWornState()
{
+ if (!ovrp_GetInitialized())
+ {
+ InitializeSession();
+ }
+
ovrpBool userPresent;
Hmm, that seems to work well for me through the IHeadMountedDisplay
I've been using IHeadMountedDisplay->DoesAppHaveVRFocus()
does app have VR focus I think will be off when the dashboard is up, which may be what you want
ohhh, Yeah I haven't gotten that far. It was working in terms of allowing me to auto orient when they enter and exist the headset.
but just be aware the steam is handled differently for vr focus, the dashboard itself consumes your inputs and I don't think they send a pause, where oculus dispatches some entered background delegate meant for mobile originally or something, can't remember the exact details
ohh bloody hell
oculus also breaks keyboard focus when entering the background as a side effect which breaks switching between 2d and VR without modifying that
what is "entering the background?
You mean a floating window?
in VR
@sturdy coral Any idea why setting the HMD priority in "BaseEngine.ini" gets written over when I run my game? Everyone keeps saying I can raise the priority of SteamVR but when I do and save, then run my game, it gets written over by the game.
FCoreDelegates::ApplicationWillEnterBackgroundDelegate and FCoreDelegates::ApplicationHasEnteredForegroundDelegate etc.
oculus sends those and I think others don't
looks like they may not auto pause anymore, this is wrapped in if ANDROID:
#if PLATFORM_ANDROID
// register our application lifetime delegates
FCoreDelegates::ApplicationWillEnterBackgroundDelegate.AddRaw(this, &FOculusHMD::ApplicationPauseDelegate);
FCoreDelegates::ApplicationHasEnteredForegroundDelegate.AddRaw(this, &FOculusHMD::ApplicationResumeDelegate);
they may have fixed some of this, I gave up on the oculus plugin a while back when it moved to the weird thing that wraps all the sdk calls in a mystery opaque plugin and prevents modifying some of the stuff, it's like not having a full access to the engine source (everything goes through ThirdParty/Oculus/OVRPlugin instead of the real SDK), so some renderer changes were too hard to do and stuff
Yeah that doesn't sound great.
they do support openxr now though, hopefully valve will add that soon too
How can i setup input for my oculus go controller in 4.24?
Hi. Does anyone know the exact correct project settings on 4.24.2 for Vulkan on Quest?
there are none
for once, Vulkan in stock UE4 is outdated
and OS/drivers on Quest are buggy as hell
so in short, Vulkan is not usable at this time on Quest
maybe with 13.xx update of OS and Oculus integration for UE4 we'll get better Vulkan, but not with 12.xx and 4.24.1 (I bet Oculus hasn't released 4.24.2 yet because they are going to wait for 13.xx update to be finalized)
@hybrid plume ^^
Oh thatโs a shame
Ugh, seriously? I started picking up Unreal because Unity is such a hot mess right now when developing for the Quest, but this doesn't look much better....
So even oculus branch isnโt giving good Vulcan results?
right
@thin solstice OS/driver has nothing to do with Unreal
also, regardless whether you use ES3.1 or Vulkan, if you are devving for Oculus, using their fork of UE4 is better than using stock UE4, since stock is always outdated when it comes to SDKs
Man I spent the good part or yesterday trying to get Vulcan to build for Quest... started with trying this: https://docs.unrealengine.com/en-US/Platforms/Mobile/Android/VulkanMobileRenderer/index.html
Setting up your UE4 Android project to work with the Vulkan mobile render
I actually got something to deploy but was so buggy... then tweaking settings, and everytime waiting ages for 15,000+ shaders to compile ughhh
Android Vulkan isn't the same as mobile VR Vulkan
But isnโt Quest Android under the hood?
sure, custom Android
and non-VR rendering isn't quite the same as VR rendering, especially on mobile
Alrighty.. besides Vulkan though, which are the rest of recommended / optimized project settings?
Like in Engine > Rendering?
believe it or not, it's all in the docs I linked you
@mighty carbon yes thanks Iโve read all of them, but info is superficial
How are specular / reflective shaders working for you?
@hybrid plume im inviting the oculus docs writer to this channel, maybe u can feedback to her
@rich canopy wow appreciate that, that would be great ๐
She is in the oculus start discord. Are you in oculus start? Highly recommend you to apply if oculus is your main hardware
In the whole vr ecosystem, they are the only one giving devs free stuff i think through this program
Steam VR command line options question: I want to have my tool not load into VR right away. I launch into a menu where people need to use keyboard to type things in first with the tool. From there they have an option to launch into a 2d game or into VR. Is there a way to not have any popup dialogues thrown at me from Steam in this case when steamVR is already active?
I first had popup ".. will launch into an environment in your VR HMD as well as on your desktop.Performance may not be acceptable in this mode. To launch this game only on your desktop please exit SteamVR before launching the game." ... got around it by adding -novr in the command line options and disabling "use desktop theatre while steamvr is active" in the options.
now i have the popup "does not support VR. It will appear on your Desktop and may affect VR performance."
can't seem to get rid of that one..
apparently my GPU spends 33% of its time on transparency...
anyone have a really cheap glass material for VR they can share? ๐
(that still looks good)
I am looking to implement a better settings menu in my game
I want one where the user can press settings at any time and it takes the full screen
and then they point at things and interact with a laser
anyone have any tips or tutorials they can share on that?
@shadow radish https://docs.unrealengine.com/en-US/Engine/UMG/HowTo/InWorldWidgetInteraction/index.html
An example of how to create in-game 3D widget interactions.
I get good vulkan results on the oculus branch
bleh a little late to the convo
There's a bug that draws a pink smudge to your textures sometimes, but I have a fix if interested
Some features you're using might not work. But all the features I'm using do!
@sturdy canyon You have a fix for that? Someone said they've fixed it in the next oculus branch anyhow
Yeah Remi fixed it and shared the fix
@sturdy canyon on what kind of scene? I provided Oculus with Renderdoc captures of abysmal performance in my test case
I get slightly better perf on Vulkan than ES3.1. But my shaders are insanely cheap. Everything in SculptrVR in unlit
so it might be unique for me
and my test case was 1 km^2 static mesh based terrain with LODs (16 chunks) and 3-way blended PBR material (not landscape, just vertex color blends). Runs at 72 fps with ES3.1, 24 fps with Vulkan
it is unique to you indeed ๐
There used to be (and maybe still is) some sort of bug with depth test rejection in Vulkan
so your scene may have been multiple-computing in each screen pixel
oh and the amount of RAM Vulkan uses is insane
so if it's just geometry with no textures and no anims and no physics, maybe Vulkan is fine.. If you have textures and all that good stuff, it's a no-go
at this point (until I get my hands on 4.24.2 + 13.0) I am only working with ES3.1
Hi! I am currently finalizing a game prototype and I have a "bug" only in the packaged version of the game. In the editor and in the VR preview, everything works fine. The left hand is not tracked correctly. She seems attached to the world rather than the character and she doesn't turn properly (video : https://streamable.com/9wtgi). I don't understand why this only happens in the packaged version of the game ? I am using the VRCharacter from the VRExpansionPlugin with my own gripping system. Has anyone run into the same bug ? Thanks
When I start the game, it opens a level (Main Menu) with mouse + keyboard, there is the possibility to select a level. If you select it with the mouse I want that level to be loaded and than it should switch to VR mode, any ideas how I can accomplish that?
When I use the blueprint node "Enable HMD" it allways returns false, so it could not enable it, any ideas why?
Anyone know why mobile mesh auto-instancing isn't turning on? Added r.Mobile.SupportGPUScene=1 to DefaultEngine.ini, but nothing happens. Shaders don't recompile, and logging dynamic instancing info shows nothing. (Using the Quest.)
not supported ?
@serene haven I'd check the source to see why EnableHMD returns false when it does
@mighty carbon Seen other people talk about using auto-instancing on the Quest, so it might be
I thought it was supposed to work in 4.24, but I haven't tested
@sturdy canyon Using 4.24. Seen people discuss test results with it, but I can't even get it to turn on! It's rather frustrating! ๐ฆ
for me it would drop performance down..
also, whatever is made for mobile by Epic doesn't necessarily mean it translates well into mobile VR
@mighty carbon Hmm, why did that drop your performance? This project is draw-call bound, so I'm expecting it to help me more than hurt.
Good point about mobile vs. mobile VR
I don't know why, I am not a renderer programmer ๐
ha, Oculus Link isn't available in the States ๐ฆ
yup my Quest for Vulkan is a comedy of errors... simply illogical ๐
Anyone know how I can make it so SteamVR window focuses upon launch of game? I'm testing with a Rift S and it runs fine in oculus home. but when I launch from steam with steam vr the game loads up starts running in background while the window is not full screen in the oculus rift s. I have to manually select the window from the oculus dash to bring it up full screen
To try and fix this my game pauses until you manually unpause it at which point I fetch the launch parameters which I was planning on using to identify if it's launched with Steam VR or Oculus, but const TCHAR* tmpCommanLine = FCommandLine::GetOriginal(); Only works on the oculus vr, when this is called with steam VR I get nothing back
Where do I find motion controller input in 4.24?
I updated the engine to 4.24, now I get the error, that all my ActionBindings are not valid with the HTC Valve Keymap?
The SteamVR plugin in 4.24 breaks previous input settings. You have to either disable it or find the setup guide for it somewhere on the Valve GitHub.
Nah it's because he is using direct key referencing which is gone for motion controllers. Have to define I out actions now
@warm lion use GEngine->XRSystem->GetSystemName() to get which plugin it was launched with
SteamVR for steamvr, OculusHMD for oculus via oculus sdk (oculus via steamvr will say SteamVR for system name)
@sturdy coral I thought that returned Windows, Linux, IOS, etc...
@warm lion no, there is probably something in generic platform process that returns that
Oh wait no, what I thought is that what if I launch on SteamVR with an oculus
xrsystem is the vr system (or AR for mobile arkit etc)
* system that this object is part of (Vive, Oculus, PSVR, Gear VR, etc.).```
So if I launch on Steam VR with an Oculus will this say Steam VR or will it say Oculus?
probably just old documentation, the oculus plugin used to be split in two so gearvr was separate
but it was merged at one point
it tells you the plugin in use
Ahh, Man that is a bummer I saw it and thought that it would be a half measure but if it tells me Steam VR when I'm using an oculus hmd on SteamVR then it's a win
Thank you very much!
@warm lion if you want to know if it is oculus via steamvr check if getsystemname is steamvr, and then if GEngine->XRSystem->GetVersionString().Contains(TEXT("oculus"), ESearchCase::IgnoreCase)
if both are true then it is oculus via steamvr, if system name is OculusHMD then it is oculus via oculus sdk (and that version string search may or may not work in that case)
Nice. I'm checking now. This one hung me up for a minute. I should have just tried when I read that but it sounded like it would only supply me with which HMD is being used not the VR platform
That was it. Thank you!
@serene haven i have it working in one of my projects looks like this
I have it paired with a command to turn stereo on, no idea if it was even necessary and I'm also not checking if the HMD returned true either so you might have a different issue. my setup is with HTC vive as well
Little issue I hit with VR, when UE4 gets unfocused it starts rendering at a lower framerate. When you take a screenshot on Oculus by default it will open up the screenshot you took and defocus the game
This means the rendering rate drops for VR and this is unrecoverable if the desktop mirroring is unresponsive
I have to take everything off to fix it
Actually, does this only happen in editor or also builds? Because in editor I can deal with
@distant heath you should probably post that on an oculus forum, does it also happen to unity stuff on oculus?
I don't have unity set up so I wouldn't know
I mean try a unity game on their store
I see that there's a setting to actually disable this for the editor, so I don't know if this happens in a release build
are you triggering the screenshot with a hotkey combination, or a blueprint node?
I'm fairly sure I've played some games where I took screenshots and this didn't happen
I'm triggering a screenshot using Oculus Dash
The issue is that it opens up the screenshot in an image viewer afterwards (not sure why) and defocuses the game
yeah test another game, make sure it is in another engine, and see if it defocuses too
That just happens when you open up a new window so
The issue is more the framerate dropping on defocus
that will only happen badly in editor
there is a setting to turn it off
but, in real games losing focus does lower your priority a bit on CPU and GPU
Ah! Yea thanks that's what I wanted to know, if it doesn't happen in release builds that's fine
@sturdy coral Can I ask you about another discrepancy between steamVR and Oculus? In SteamVR the height of the character is much higher. I've found people say that you have to set the origin to eyes, or to feet, etc... I've found people say you have to set the eye height in the camera to zero. No matter what I do the height in Steam VR is much higher. So my pawn is a sphere 13 radius, with a camera in the middle. That's it. So for Oculus I set GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Eye); and that's it. The origin is now at the eye height. If I were to start VR while standing my position in the world would be where it is supposed to be no higher. Steam VR seems to take into account my height relative to my floor and add it i the game - no matter what I set. I'm trying to force the camera in game to be exactly where it said to be in the game not in the room. Once the game starts and they are in VR any movement then adds to this zeroed out location
Lower priority I can deal with, worst case I can add a keep focus open
you can test to be sure,m but look around for it in editor preferences
I think it is maybe called something about power saving
I'm just not quite sure why Oculus Dash even decides to open up the screenshot on the desktop immediately after taking it, it's weird behavior
it will limit itself to 10fps or somethign when not focused if running editor
still was much better than looking at a VR chat mirror
Thanks though, knowing that it's mainly the editor helps, I'll turn it off if it continues to be an issue
@warm lionorigin eye means it can be freely reset by the user to anything
if it happens to match your height in oculus I think that is just random and could be something different for another user who had calibrated in a cockpit game before playing yours
for something standing you should set both to floor
you need to place the camera at 0,0,0 relative to vr root
and place the vr root at the floor, which depends on if using pawn or character
if you use 'eye', then you need to prompt the user to recalibrate at startup, and I think call https://docs.unrealengine.com/en-US/BlueprintAPI/Input/HeadMountedDisplay/ResetOrientationandPosition/index.html when they click 'ok' or whatever
Reset Orientation and Position
and in that case you place the vr root at the desired eye height, not at 0,0,0
hmmm. I think I'm going to try and get the origin location and add the difference to the camera.
Add to player?
vr root is what you always move
Yeah I said it wrong before.
you should make it an empty scene component
PlayerRef->SetActorLocation((GEngine->XRSystem->GetBasePosition() - PlayerRef->View->GetComponentLocation()) + PlayerRef->GetActorLocation());
what is player ref?
The ref to my pawn
that is probably a bad name since there is other stuff called player in the gameplay framework
and reference is distinct from pointer in c++ so a bit confusing there as well
so view is your vr root? or your camera?
No view is my camera
I'm adding the distance from the camera to the SteamVR origin location
where are you doing this? on begin play?
yeah don't use that
just put vr root where you want the floor to be, if it is a character that's half scaled capsule height
That doesn't work
My Vr root is my sphere collision
It's only 13 rad and my camera is in the middle
It's about the size of a head
So the root would be about my chin level.
but Steam VR jacks me high up in the air like I'm sitting in a chair
I don't want it to put me at the height I am in my room. I want it to be the height I tell it to be
are you flying or standing on the ground in the game?
My capsule is currently located at 0,0,0 When I start in Steam VR it adds the height I am in my room currently to that, which is wrong. It needs to put my head at 0,0,0 and then it can track me like normal from there
Oculus doesn't do that
are you standing on the ground in the game?
There is no ground, sorry that's why i used 0,0,0 as a ref.
ok, then yeah put it in the middle and use eye instead of floor
eye is not right until the first time the user recalibrates
That's what I'm doing but it doesnt work
It works in Oculus, but in Steam VR it still adds in my room height to the location
eye does anything, you can't know until it is recalibrated
Which is why I'm trying to discover if it's Steam VR vs Oculus (which now I can do , thanks!) So I can move it down for Steam VR
eye just means the origin is where the user recalibrated
I literally have this run eveyrtime you enter VR ``` //HMD Management
if (VrHMD)
{
//Auto Reset when putting headset back on
if (VrHMD->DoesAppHaveVRFocus())
{
IsHMDOn = true;
}
else
{
IsHMDOn = false;
DidAutoOrient = false;
}
if (IsHMDOn && !DidAutoOrient)
{
DidAutoOrient = true;
GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Eye);
GEngine->XRSystem->ResetOrientationAndPosition();
}
//Always keep Sphere_Coll over Cam
FVector tmpVecToRoot = PlayerRef->Sphere_Collision->GetComponentLocation() - PlayerRef->View->GetComponentLocation();
PlayerRef->Sphere_Collision->SetWorldLocation(PlayerRef->View->GetComponentLocation());
PlayerRef->CamNeck->AddWorldOffset(tmpVecToRoot, false);
}```
So this runs in Tick. It's to make sure that everytime they enter or Exit the camera recenters
it works great in Oculus
explain the overall game more because this is probably a bad setup
do you want the collision to follow the head?
yup and it does. You cannot put your head through walls in my game. It works great
If you try you will slide along the wall
I understand it's not how other games are but this is for my purposes
sounds like lone echo
It is ๐
It's a reach and pull movement game
Anyhow, all of that works as I like. The part that doesn't is that in Steam VR only, The height I am relative to my room gets added into the cameras location upon start.
So the workaround for me right now is to detect Steam VR launching, then offset the player (head sphere) back
I'm not a large studio. some things are better for indie devs than going down feature creep
yeah but you are making this more complicated for yourself and the user I think with that flow
I like the way I'm doing it. It may not be for you but it works for me ๐ I just need to find a good way to measure the distance to the Steam VR origin now and offset. Was just curious if you knew that off hand, I think I'm close looking at the functions I see listed
probably GEngine->XRSystem->GetFloorToEyeTrackingTransform() will work
just teleport the vr root to the position that would get the camera in the center of the head sphere at startup for both oculus and vive
and you can probably leave both as their default tracking origin
you can do it again when the headset is put on after taking off
I don't think you should need to prompt the user with anything
There's other reasons like ensuring arm length and such that I didn't go into but I have an idea of what to do now. Thanks!
by setting both to floor you can avoid having to handle the user trying to recalibrate seated position during play (which they can do via oculus menu out of your control if using eye), but it is probably not a big deal as you already have to handle the user walking around during play or losing trackingn and regaining it in another place during play too
I put up an alpha build of my games intro (in game intro) on Oculus and have been having people test it recently
I got my Steam store page the other day and I uploaded an alpha build for the intro there too, got some keys to hand out but I noticed that the camera was off in Steam VR so here I am trying to smooth over the difference between launching in steam vr and oculus
@warm lion I think your only issue is probably that steamvr defaults to floor, so when you change to eye you've already calculated in the wrong offset; instead of trying to determine which plugin is in use etc. maybe just call "GetTrackingOrigin" at startup to tell if it is starting in eye or floor
I don't understand what that will do though because even if Steam VR says "floor" then I set to floor it doesn't fix the problem. It still appears higher in the air
Neither Floor or Eye put the camera correctly where they should be in Steam VR
It's like not matter what I put it still takes the current height of the camera in my real room and adds that to the location in game
The only thing that has worked so far has been to manually add in an offset when it's Steam VR. The problem then is that I have to establish the correct distance - if I am sitting when I do this I need the distance from sitting to the floor, if standing, then standing distance
floor in steamvr should put your at the same height as floor in oculus, if the vr root is at 0,0,0
the offset from vrroot when using eye can be anything
whatever the user last calibrated to
Okay I'm going to build with "Floor" one more time, I've done this a dozen times already
have you actually calibrated your floor with oculus?
not sure for rift s and quest link, but for oculus cv1 with cameras it is based on the physical height you enter during setup I believe
Oculus works. It's exactly where it should be. It doesn't matter if I'm standing or sitting. The camera starts at the location I set in game and then when you move it moves from there, but it starts from where I set it in the Game
It's Steam VR that doesn't work
the only bug I know of with this is that with oculus sdk hmd plugin if you switch to 2d then switch back to VR, oculus loses your tracking origin preference
Hmm. I haven't run into anyting like that in Oculus. I do however run into Steam VR trying to decide how high my camera is.
It doesn't make sense to me. If I say the origin is "Eye" It should put the origin where my eyes are when I enter VR and then track from there
as far as I understand, eye puts origin where it was last calibrated which may happen to be there if you calibrated in the same seat
or may be somewhere completely different if you have moved
I don't know if oculus or steamvr resets that calibration inbetween games or not
but I don't think either does it based on where the headset is put on
maybe so at startup of either runtime though
the first time it is put on after that or something
what is camneck?
Cam neck is a scene comp between the cam and root
Spere_Collision->CamNeck->View(Camera)
It might not actually. Hmm. It does in Oculus.
I see
So it may never be setting "Eye
Son of a ...
probably add some log lines to log the distance between hmd and sphere collision at each step
and log where it is going in all the branches
(could use debugger but it is hard with stuff like that because you have to keep the proximity sensor covered the whole time while stepping through etc.)
My brain is done for tonight. Migraine coming in. Thanks for the help... time to ice my skull
@warm lion vr focus may not be what you want anyway even with oculus, as I think it will change when the dashboard is open (not 100% on that)
GEngine->XRSystem->GetHMDDevice()->GetHMDWornState(); should tell if the hmd is worn, subject to all the little caveats mentioned yesterday
Fellows, starting UE4.24 I'm having an issue with SteamVR forcing me to create mappings, how can I fix it? Previous version of my project works fine.
I have updated action mappings
Enabled SteamVRInput
But steamvr_actions.json and etc are not generated
I tried deleting Saved/Build/Intermidiate and full CleanUp but it's not helping
@twin wing enablevrinput does nothing now
its by default on the new input methodology
you need to generate your actions manifest and default bindings
and then likely do some custom mapping beyond that for advanced inputs
you need to generate your actions manifest and default bindings
@tired tree how do I do that?
and then likely do some custom mapping beyond that for advanced inputs
@tired tree I have no advanced input, only triggers ๐
Thanks, I'll try that
Does anyone know why my oculus go remote trigger is not responding (only in ue4 launch)?
It doesnโt work in 4.24
Ping me tomorrow at 9am pst and I can send you a fix (assuming you compile from source) @earnest cypress
Itโs a single cpp file fix, so it wonโt trigger much of a rebuild
@fair anchor Has helped me it was because ue4 4.24 uses oculus touch trigger for oculus go trigger
Well if your app is Go only and doesnโt use all the buttons, youโre probably fine
I think the back button isnโt routed correctly either and gets triggered by trigger
Something like that
I've set up a simple pawn with
UHeadMountedDisplayFunctionLibrary::SetTrackingOrigin(EHMDTrackingOrigin::Floor);
But it seems to still place the origin at eye level
specifically, standing eye level, at least for me
I had the same issue with the VR template until I teleported myself somewhere, then it fixed itself
Huh, weird, I reopened the project and it works again
Oh!
Forgot to recompile
I'm getting weird distortions on the side when I'm moving, I have set anti aliasing to MSAA
is there a plugin or marketplace asset for finger tracking?
or should I just make it myself
@distant heath which engine version
and which headset etc.
make sure to turn off fringe/chromatic aberration in post process settings
@subtle raft https://github.com/rfsheffer/QuestHands
@sturdy coral Engine version 4.24.2, I'll check the post process settings to verify
Currently I do not have a post process volume at all, does that mean these are likely to be off or on by default?
Everything in the camera settings is disabled too
@distant heath some are on by default but other global quality settings can turn hem off, if you based things on the built in engine bar template it turns them off
The defaults on them probably shouldnโt be severe enough to cause strong visible distortion though
Which headset are you using?
@sturdy coral My project is based on the blank template, with high quality default settings. I've adjusted it according to the oculus performance tool. My HMD is a Rift S
Hello, does anyone know how to change these icons for my game?
hi there, i have a performance problem. the recommended fps for vr is stated as around 90, however, placing around 50 staticmesh actors (cubes) into the level and viewing them all reduces framecount to around 50 fps. the draw section in stat unit command tells me it is related to the amount of draw calls, these are below thousand. i cant merge the actors since i want them to stay dynamic. am i limited to this amount of objects (50) or is there something i am missing?
That seems fishy, what's your lighting like? A couple Real Time shadow casting light sources will destroy your fps pretty quickly.
blank map, just a ground, standard skybox, 50 cubes
indeed, to me it seems something else is weird
Did you start with a "blank" template or the VR template?
vr template, but blank map in there
500 dynamic cubes. built in Sky Sphere, sky light, directional light. Cruising a 120fps.
There's something else happening on your end.
120 fps where ? In the preview ?
yeah, I was wondering how did you go over the 80/90 limit ๐
I guess Index is 144 max ?
The directional light used to default to creating a shadow map for each individual object instead of cascading shadow maps
I'm not sure if that's still the case
But that put an insanely low limit on the number of dynamic shadow casting actors
thanks @nimble edge i have the htc vive. no clue where i should look, probably the networking stuff, or something outside of unreal.
good to know that, 50 static mesh actors should never drop that hard
You're right, I had my headset at 120, I can run it at 144fps
may i ask your ms per frame on the standard vr template in motioncontroller map? i get around 11ms per frame.
where should i look for that throtteling stuff?
Engine version?
4.22
Correct, it was on Index. Rift s is probably around ... 9? It will cap out at 80fps.
Engine 4.23
I cannot figure out a way to make a VR camera be lower than the HMD is relative to the room floor in Steam VR. How is anyone doing this? I've tried so many different things. My pawn is a sphere (13 unit radius - although it doesn't appear to matter). It's supposed to be just a head nothing else. The camera is dead center of this sphere. So when I move this Pawn around the origin in VR follows as it should but Steam VR will automatically push the camera attached to the sphere collision of my pawn outwards the distance my HMD is from the floor in real world. Theres nothing I can do to stop it. The only thing that will allow me to do this is if I turn off bLockToHMD. But that is pointless. Setting Origin to floor or eye doesn't fix this. If I track the world location of the Pawn Sphere Collision, and the Camera. I can see that Steam VR moves my camera the same height my HMD is from the real world floor. My Pawn Collision will read 0,0,0 while the camera will read around 0,0,127 (ish) the current distance I am seated testing. I even went so far as to try and disable the lock to HMD and then manually get the rotation and location of the HMD and then apply it myself every frame to the camera. This worked except there was a little lag.
To add to it - I have these lines of code FVector tmpVecToRoot = PlayerRef->Sphere_Collision->GetComponentLocation() - PlayerRef->View->GetComponentLocation(); PlayerRef->Sphere_Collision->SetWorldLocation(PlayerRef->View->GetComponentLocation()); PlayerRef->CamNeck->AddWorldOffset(tmpVecToRoot, false); forcing the root sphere to stay on the camera. So if Steam VR moves the camera up 127 then this should jump the root sphere up 127, then it should repeat because steam vr will move the origin up 127, pushing the camera up and so on. I can't tell what is going on. It doesn't make any sense
It appears to be based on the root components location where steam VR considers the Origin in reference to. To test this out I moved the root sphere up 500 units and then moved the actual pawn actor down 500 units. This should have placed the camera right at zero. Instead the camera was still up 127 units from zero. So I figured then that it was using the root component location not the pawn location. If that were true then it should caterpillar it's way up when I move the sphere capsule up to the view as it repeats infinitely.
Is there a coding bounty site where I can place $100 on this. I seriously don't have time to toy around with some bizarre steam VR obscurity. I feel like there is someone that knows how to do this and it's easily worth 100 to me at this point. I've spent the last 5 days trying to fix this.
@warm lion I think you are running into the root collision sphere is the same as the actor location and can't be offset
I get what you're saying and to be honest I don't recall why I used the sphere_collision location in my logic there vs just SetActorLocation because it should be the same
The thing is this works on Oculus. SteamVR seems to impose a forced VR Origin onto my camera and I can't turn it off
It seems like I should be able to do something like GEngine->XRSystem->SetBasePosition(TheVectorDistanceFromSteamVROffsetCameraToWhereItShouldBe + CurrentBasePosition);
This - So lets say my HMD is 100 units right now from the perfectly tracked VR floor
If my Pawns camera isn't 100 units higher than the location of the root component to my pawn Steam VR will automatically move this
It supposes the base of my root component is the VR Floor - and it must be representative of the Real life floor
I don't think there is a way around this on Steam VR
@warm lion I'm not sure what you are doing wrong but it is possible. I have a character that follows camera etc. and at startup let you choose either seated or standing and offset appropriately for seated without actually setting tracking origin Eye at the moment, just adding an offset
steamvr will not automatically move your vr root, both will automatically move your vr camera every tick
you may need to watch out for tick ordering, maybe that is differing between when using steam and oculus for some reason
your code in BeginPlay probably happens before the camera has ever ticked, maybe there is some difference there between the two
Sounds like eye level isn't correctly being set
Oculus defaults to a different default tracking mode
I didn't say it moves the root comp. It moved the camera. My root comp and my camera share the exact same location. There isn't a way to have the vr floor be arbitrary in steam vr. It seems to set the the floor at the root comp and if the camera is within the distance between the real world floor and the hmd it will move the camera to the distance of the hmd. Do you have an example. I'm happy to look over one and see where the discrepancy is.
My example is also easy to see. Create a pawn, make the root comp a sphere (small). Attach a scene node in the center (padding) attach a camera to the scene node. Now when you start the game the camera will get moved up and out of the sphere root no matter what you do
*if game is launched using steam vr.
@tired tree Is there a correct way to set eye level? What would be an incorrect way? GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Eye); GEngine->XRSystem->ResetOrientationAndPosition();
I've also tried GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Floor);
Neither will allow the camera on a pawn to be closer to the root comp location than the real world HMD is to the real world floor
That should work assuming it is done post the vr modules initialization, though I am curious what you are trying to do? A seated epxerience?
@warm lion
I do this in a function called in tick because I want to see it happen at all. So it gets called every frame. I've also tried GEngine->XRSystem->SetBasePosition(FVector(0,0,-127)); and I've tried moving any of the components up or down to try and get it to work. As far as I can tell there is no way to get the camera closer to the root component than the HMD is the floor.
I've seen many posts about this issue online, never with a solution though. All the solutions I've come across I've tried. (Adding a padding between the root component and the camera, setting the origin to eye, floor, setting the base position, turning off Lock To HMD , moving the camera, and turning back on).
Eye level for sure is supposed to work, but reset orientation and location is a hard.inverse transform on the cameras location and that code hasn't changed in a long time
I'll try removing the reset.. one moment
Again though, curious why you are doing this, as offsetting for a roomscale position isn't that hard to begin with
If it's a purely seated game then I could see why
If it's mixed then no point really
I don't follow that at all
Why would't you want to be able to offset the VR floor away from you root comp? Otherwise you're locked in to having it based on your root comp location
You can add a scene component into your actor to rebase with....
The camera position is in relative space
Not if you rely on the center of the root comp for calculations. Then your child components will be off on one side of the center
I want my child components at the dead center of the root comp
My layout uses a Sphere collision, attache to that is a scene component, and attached to the scene component is the camera. They are all located at FVector (0,0,0)
But why though....myou can have a child sphere component
? What do you mean why my pawn is a sphere. I want all the comps in the center - like a sphere
Regardless your parent scene component for the camera can be offset inversely with the cameras position to place it at 0
Pawns are capsules
Move it....
That doesn't work
Yes it does...
There's no way to move the root comp and have the VR floor stay where it is. It will follow the root comp
Why do you want to leave the floor? It has no meaning then
If you are saying a child of the root then yes you can do that but I don't want a lopsided sphere pawn, I want all my comps at Zero
I don't think you underatand
Unless you turn off 6dof then it must always have an offset
Even eye level will offset with movement
You can clamp the camera at zero and move it's parent of course, but you need to override GetCameraView in c++
I never said it doesn't...The camera Offsets. Not the Root component
And unless you reapply that somewhere, your user will be stuck 3dof
Steam VR will offset the camera comp from the root comp to match the real world distance between the HMD and the realy world floor
There is no way to stop that
If so then how?
Eye level is supposed to init at head height
But it's still possible to move
Same with oculus
So even then it's not what you want
There's no problem with moving? That's where you are confused. I'm not trying to lock the HMD in place
How do you expect to keep the camera centered on the root, with the floor origin still at root, and the camera moving all at the same time
I want my HMD to start at the root comps location. They can freely move their head around at that point how they see fit.
Then offset the parent of the camera, the scene component that you have, it would place the head at root 0
This is all assuming that your eye level really doesn't work
Because that is the normal workflow
I don't think it make sense to create a pawn that is a sphere. And move a child component out of the center off just to accomodate Steam VR
That is literally the standard practice
It'sin their own setup docs
It's not how I personally handle it, bit it's perfectly valid
Here's why that is really dumb (not you their stupid process)
If you want to perform an rotation calculations and you have deal with children rotations then you will have to run through the hierarchy and adjust accordingly because now you have a child comp that is off center. Where before you could easily derive a rotation now you have to apply inverse rotation transforms along the way to get the correct one
And how do you expect to keep them syncd while moving without doing that to begin with
It's not that hard to work with a rotational pivot though
You are over trying to make something sound simple that isn't. what would be simple is if we could just specify an offset from the pawns root for the Vr floor That would be simple.
Just override the GetCameraView function though
I have a character that does that
As a worse version of my more advanced one
You can take out the xy and apply it to movement directly
But leave z
What are you talking about? GetCameraView?
It's a camera finction
What does that have to do with any of this?
It's where the engine queries the hmd transform
And sets the camera location
Then you can do whatever you want
What class?
Camera component
That doesn't make sense? Why would the VR system query the game camera for pos?
Again, base location is supposed to handle that anyway, though it wouldn't be the z that I would be swtting
The camera queries the vr system....
The view is rendered from the camera thwn
Base location doesn't work. I've tried getting the distance and offseting the base location downward so that the camera isn't shoved up and outward. It doesn't do that.
Base is the opposite
Well, don't know how you set it
But it IS queried when the engine asks for vr locations
And applied to the transform additively
I can't remember off the top of my head if it is applied as is and expected to be inverse, or is inversed when applied
Trying now - if that works wtf...
Is there a way to force the VR preview in UE4 to run Steam VR? Right now I have to build each time I check in Steam because VR preview will use Oculus VR
Yeah you can set priorities for the modules in config, either Google or ask much Charles, I think he keeps a paste of it around
Ahh yeah I know those settings but I don't want to have to shuffle those everytime I want to try one or the other.
It's better than disabling the module
Beginner question but, what's the difference between GEngine->XRSystem->SetTrackingOrigin and GEngine->XRSystem->SetTrackingOrigin?
wHoops
no difference LOL
Second one should be UHeadMountedDisplayFunctionLibrary::SetTrackingOrigin
Visual Studio decided ctrl-c was a mere suggestion
@tired tree That worked. Adding the base offset... worked. I hate everything right now,.
That is so backwards....
Some sadist did that. Seriously wtf
That doesn't make any sense...The camera was being moved upwards and yet I needed to move the base upwards.
I've got a general question about seated experiences. The tracking origin for my headset by default is at eye height standing, what's a good way to allow the player to set "this is default eye height for me"?
Is that something that's generally set in the drivers, or is there a UE4 function for that?
@warm lion it's because it's for zeroing out
It's the offset that is expected to be zero in tracked space
So it negates it from the transform going forward
Question about character design for VR.
We have a project where we need to create characters for a multiplayer VR simulation. but we need some level of customization like a character selection screen with skin tone, head type, etc. and there will be 5 or 6 characters in view at the same time.
-
Would it be better to use a separate head and body or would this be too harmful on performance. (I imagine a screen where you choose from 5 heads and 5 bodies and adjust the skin Colour etc.) or is it better to use whole body meshes??
-
Materials - How many slots should we use..... should we combine shirt trousers and shoes into 1 UV? I know this affects the number of draw calls but would this make much difference?
-
Materials - If we want to change the colour of clothing with performance in mind.... would it be better to
a. have 1 UV and switch out the diffuse texture for different colours
b. Have seperate UVs for trousers and use hue in the material? -
Polycount - What is a good number to aim for on a VR character. Will be used on Samsung Odyssey
Thank you
@wispy quiver For PC VR, these Robo Recall livestreams are very helpful https://www.youtube.com/watch?v=3Yx9IEOc5s4&t=866
Announce Post: https://forums.unrealengine.com/showthread.php?141558
Robo Recall is Epic Games' hot new VR title, but how did it get to be so fast and fun? VR developers know that maintaining a steady framerate is key to a good experience, so Nick Donaldson and Jeff Farris a...
Jerome Platteaux, Art Director of Robo Recall, discusses the process of evolving the ten-minute demo that was "Bullet Train" into a full game. He talks about what choices were made for the design of the robots, environments and weapons for Robo Recall. We will also cover the ...
I guess a simpler question is , modular characters in VR yes or no?
i know it depends but... overall
@distant heath what I do is prompt the user to look forward and calibrate it is standing, if seated have them calibrate seated position and enter their height
You can also query height from oculus profile, but not steam. I would default the height to that when using the oculus plugin and seated, but still let them change it. When standing I would calibrate either way because if they share the headset etc. the profile isnโt reliable.
@wispy quiver you can use skeletal mesh merge function to reduce draw calls on modular characters, at the expense of more gpu memory usage
And you have to figure out a way for the merged parts to use the same material, using uv offsets etc. to encode a different texture index
Hi Guys, i am relatively new Unreal user. I have been experimenting with the AR handheld template and i wanted to know if there was any way to edit the blueprint so that the replaceable spawn actor is spawned only once in the scene instead of it being spawned with every touch. Any help would be greatly appreciated. Thank you.
Anyone else had issues with Vive Cosmos controllers not tracking movement and inputs in UE4.24 projects?
v4.24.2 | Quest | Getting static meshes attached to the motion controllers โ Could not get the meshes to attach to the motion controllers using the methods in this video: https://www.youtube.com/watch?v=o497MVMOmJc โ Verified that the controllers are tracking(Is Device Tracked + print string) โ
Went googling and found this: https://docs.unrealengine.com/en-US/Platforms/VR/DevelopVR/MotionController/index.html followed the instructions and now it's working โ
๐ฅณ
Anyone see any disadvantages of the last method of attaching static meshes to the motion controllers?
and if so any suggestions for doing it another way?
@sturdy coral Thanks! That makes a lot of sense. I am wondering what "Calibrating" involves in UE4, just reset orientation and position?
The docs aren't entirely clear on what that function does in a time of headsets being kept from drifting using cameras and accurate positional tracking relative to the floor
it just provides an offset that is considered zero point in the tracked space @distant heath
nothing to do with drift
aside from I guess they could recalibrate if they ever got really bad drift somehow
Hey gang. Has anyone tried their desktop VR apps with the Quest link? I've got a really specific problem where there feels like there's lag on my trigger action events (for picking up and object). Like it won't pick it up till I get halfway or so down the trigger, which means I often fail to pickup the thing I'm trying to pickup...
I tried switching to a bs trigger axis workaround but I can't get it right. Anyone got any ideas of how to solve this?
I think the trigger length is just longer on a quest controller vs the vive wands which is why it feels janky
generally people use the side grip for picking things up on quest
Problem is we're keeping it all homogeneous between devices
Don't want to confuse our clients
it may be more confusing to people used to the normal interaction with those controllers to have it not behave that way though
assuming its not isolated
I'd say a large proportion of the people using our VR haven't used a quest before, or even VR tbh
but you're right as it becomes more popular it may go the other way
The weird thing is though it feels fine on my quest fork of the software, but the old desktop Vive version feels dodgy through link
you aren't running through steamvr for that are you
the trigger depth is configurable on steam
it behaves like a rift in link mode
We're basically giving our clients a laptop + link cable incase anything goes wrong with the quest software (casting and stuff like that)
Hmm that's a good point actually, usually it would run through steam vr
I found out you can cast your quest either via cable or wifi to your PC using this: https://www.youtube.com/watch?v=ludIE74-3PM
Connect your Oculus Quest in 3 ways
- Mobile using Wifi
- PC using USB cable
- PC using Wifi
Links:
Oculus USB Driver : https://developer.oculus.com/downloads/package/oculus-go-adb-drivers/
ADB Platform Tools : https://drive.google.com/open?id=1GIEfXo3g2YOXi-ZY28DX69M2i...
Seems to work pretty well
Hey guys anyone try the newest Oculus version of UE4?
Does it have hand tracking or not yet?
So after finally getting my origin to be consistently where I want it on Steam VR using GEngine->XRSystem->SetTrackingOrigin(EHMDTrackingOrigin::Floor); GEngine->XRSystem->SetBasePosition(FVector( -tmpBaseOffset.X, -tmpBaseOffset.Y, tmpBaseOffset.Z));
everything appears fine except my touch controllers are floating off away from me. My Pawn is Sphere_Collision->SceneComp->Camera with my touch controllers being attached to the SceneComp in the middle. I've check both the world POS and relative location of all three components and they are all perfectly at Zero where they should be for both relative and world coordinates. How are my controllers way off to the side? Being attached to the Scene Comp which is at zero location along with the camera they should be perfectly tracked near my camera.
I can see them moving around as move my touch controllers but they are not near me.
@distant heath no, I mean calibrating the character
thought that's what you are trying to do
(for height, guessing at arm length, etc.)
but also for seated, calibrating the offset
so that the height the eyes were when calibrated in seated position, is the height they entered for themselves
what i want is just for the player to be able to press a "this is my center seated position" button
@distant heath what is your overall game type? something in a cockpit?
yea
ok you wouldn't need them to enter their height I guess
you should just be able to use tracking origin eye and reset orientation and position
alright, thanks!
mine is one where you can walk around or move artificially, but also can play seated. on start up what I do right now is: ask if seated or standing. if standing, ask to look forward and hit calibrate (just calibrates character size). if seated: ask to look forward and calibrate (this determines eye height where they are seated), then ask them to enter real height, after that I offset the vr root to bring their seated eye height to their entered real height (minus forehead estimate to account for eye distance below real height)
@sturdy coral in openVR they actually have an offset that you can read for head to neck and eye distances
ah cool
Is there a way to update the touch contollers location after a SetBasePosition has moved the origin? My touch controllers are floating off to the side away from the component they are attached to - They appear to stay where the base position was previously before I set it to a new location.
Looking a little more into why the controllers are floating off in space away from their parent. They both appear to have relative positions that would place them way out there. So I thought I could just zero them out and they will return to tracking back in the correct space. They don't. They just immediately snap back.
There is zero code in my project that tells the motion controllers where to be. I don't know what could be telling them to stay over there and inherit a relative offset away from their parents base
Are they at an offset from the root?
I was just wondering if it is anything like the code I pasted to you the other day where I needed to constantly reset my headset based off of the location of the VR Root in the playspace.
They both have a relative offset from their parent. So I should be able to zero them out and they would return to their parent. But they just stay out in space - while still tracking motion - but offset
It's possible except that I don't have any code that tells the Motion controllers to move. They are simply components attached to a scene comp. So when I update the Origin using SetBasePosition to offset the VRs origin location, all the components in the Pawn adjust to the new based position relative to the VR Origin. so they don't actually have any numerical offsets, they all are still "zeroed out" Fvector (0,0,0). They just appear in a different position within the level from their new relationship to the vr origin. But, the Motion Controllers which are a child of the middle scene component just stay where they were. It's very bizarre
I think it's a bug
When you moved a parent the children are supposed to follow. It's like they think they are still tracking in the correct space - but clearly they are not. I can tilt my HMD and look around and it seems to track fine
At first I thought some weirdness was going on with the Parent components location so I have both the world and relative locations print out and they all remain zero.
The motion controllers however do show a relative offset...but I don't know what is putting that offset in there and I can't over rule it yet
I tried dropping a forced relative location update in the motion controllers but they remain the same offset. I don't think you can pass a relative location update to a motion controller. I'm guessing that is handled locally in the component and will always overrule
You can, but it won't visually show if you have late updates turned on.
@tired tree Where can I check to see if I have late updates turned on? Is this the bool value on the Motion controllers component called "Disable Low Latency Update"?
@warm lion yes, if that bool is on, late updates are off