#virtual-reality

1 messages ยท Page 219 of 1

mighty carbon
#

we all know why - Epic doesn't have neither VR or AR project in works (Fortnite or not) and until they do, all of these features will be backlogged, postponed, etc.

spare yew
#

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.

woeful sundial
#

@mighty carbon agree 100000%

spare yew
#

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)

woeful sundial
#

Do you have experience with ARkit/iOS?

spare yew
#

Nope, never got into the apple ecosystem - hence why I'm specifying ARCore in my discussion

mighty carbon
#

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

#

any idea what's going on ?

carmine yoke
#

@mighty carbon off the top of my head do you have any null references or anything because of what you changed/got rid of?

mighty carbon
#

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

carmine yoke
#

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?

mighty carbon
#

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....

carmine yoke
#

No i mean just from the scene

mighty carbon
#

right

carmine yoke
#

not entirely

#

Just to check if they're the issue

mighty carbon
#

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

last knot
#

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?

last knot
#

Well, I went through and just deleted the lights (rather than set them to visible=false) and rebuilt. that seemed to have worked

earnest cypress
#

Does anybody have a updated version on how to get started with Oculus Go Development and Or the best version for Oculus Go Development?

mighty carbon
#

Oculus Go is going to be retired soon (most likely)

last knot
#

yeah, it's kind of Oculus Went, at this point

#

(or Oculus Gone...)

earnest cypress
#

@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)"

sullen vortex
#

@mighty carbon have you tried running from the editor?

mighty carbon
#

@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

sullen vortex
#

agreed

mighty carbon
#

ok, it's definitely not my art assets - migrated them from broken project into clean project and it works fine on the device

mighty carbon
#

btw, that magnetic USB-C adapter is a life saver (and USB-C port saver on Quest)

idle osprey
#

Did I recommend one here? There's one I use that I love.

mighty carbon
#

dunno, I just got one from Amazon (iSkey or something like that)

idle osprey
#

Mine is something like unemy

#

You still need the clip, tho, the magnet can't hold the Link cable by itself.

mighty carbon
#

what kind of clip @idle osprey ?

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.

#

time offset in the link

mighty carbon
#

ah, cool

#

I thought it had to be some DIY solution

idle osprey
#

Googling it, you can find some DIY stuff

#

cable taming velcro would do it, too

mighty carbon
#

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

idle osprey
#

haha, yeah. That's because that cable is 2.0, I think.

#

Perfect for deploying.

mighty carbon
#

anyhow, Vulkan is bad unfortunately

#

same thing on Vulkan is 35 fps or less

mighty carbon
#

@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 ?

idle osprey
#

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. ๐Ÿ˜‰

fluid cipher
#

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. ๐Ÿค”

honest temple
#

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?

polar valve
#

@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?

mighty carbon
#

I doubt that

#

Afaik there is no native support for mic in UE4 on Android

polar valve
mighty carbon
#

๐Ÿคท

mighty carbon
#

4.24.2 is finally out

woeful crypt
#

hey guys anyone tested 4.24.2 with htc vive? controller mapping still not working correctly.. :/

past tiger
#

I've given up on controller mappings until OpenXR is ready ๐Ÿ˜ฌ

tired tree
#

steamvr doesn't currently have an OpenXR implementation

#

which is why WMR and Oculus are the only platforms on it in 4.24

past tiger
#

I see. Come on Valve!

sturdy canyon
#

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..

night linden
#

would anyone here like to alpha test my vr puzzle game?

#

(on oculus)

shadow radish
#

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

tired tree
#

they are auto loaded from the API, the exist in a directly in steamvr itself

#

can just port them

shadow radish
#

ah thank you very much, do you know if they are accessible via blueprint and if it includes the index controllers in it?

tired tree
#

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

shadow radish
#

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.

night linden
#

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

shadow radish
#

I record using xsplit or obs

slim karma
#

you might still have similar problems though, depending on your screen mirror

night linden
#

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

spare yew
woeful sundial
#

@spare yew Cool. Let's hope ARKit will get fixed aswell soon, waiting since 4.23, last september(!)

fluid cipher
#

Job post for a web browser on the Quest. Easy bucks if you've done it already: https://www.upwork.com/jobs/~01cdb242eaa77fa5b8

digital musk
faint quiver
#
Windows Central

Unity has updated its documentation for the latest version of the popular cross-platform game engine, and official support for Valve's OpenVR platform has been deprecated. While it sounds scary, there are some reasonable explanations for the move.

#

Good thing I picked UE4 instead. lol

topaz plank
#

I'm noticing serious hitches on Quest when unhiding actors - anyone else having experienced that?

devout aurora
#

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?

flat shoal
#

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

mighty carbon
#

upvotes are appreciated

dreamy ivy
#

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...

โ–ถ Play video
tired tree
#

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

night linden
#

for people having issues in 4.24 and the Scene Capture Component 2D

#

please upvote ๐Ÿ™‚

mighty carbon
#

already did for 4.23 and it's still there :/

wraith sky
#

@fluid cipher How's Web Browser for VR on android is easy buck?

fluid cipher
wraith sky
#

@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

fluid cipher
#

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?

wraith sky
#

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.

fluid cipher
#

I don't know

wraith sky
#

found only Firefox Reality (which is gecko) for quest

fluid cipher
#

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

wraith sky
#

@fluid cipher have you tried other js events? do they work?

fluid cipher
#

So far no js events are working, even on PC

fluid cipher
#

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()

void raptor
#

@flat shoal make sure you are minimizing unreal engine completely when you run your projects, can add up to 20ms

flat shoal
#

@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 ๐Ÿ˜›

void raptor
#

You can disable it

#

But when i disabled it, it had a huge peforamnce impact

flat shoal
#

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

carmine yoke
#

Has anyone noticed that Audio Components play faster, and therefore sound higher pitched, on the Quest?

tawny berry
#

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

devout aurora
#

โ›” 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

supple token
#

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?

honest temple
#

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?

void raptor
#

@tawny berry using any custom plugins?

cold siren
#

Any one know how I can delay the spectator screen by a few frames so it syncs with webcam (green screen) feed?

sturdy canyon
#

@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

honest temple
#

@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,

sturdy canyon
#

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

honest temple
#

@sturdy canyon That's great, thanks for sharing will take a look once i'm able and see whats going on

sturdy canyon
#

Code is provided as is. I can't really offer any additional support if something in there doesn't work for you

#

โค๏ธ

sturdy coral
#

@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

sturdy canyon
#

Good to know!

sturdy coral
#

(Plugin priority is in I think Engine/Config/DefaultEngine.ini )

rigid bear
#

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?

sturdy coral
#

@rigid bear try changing masked materials to use z-equality test

#

quad overdraw is I think only on geometry borders, not masked borders

rigid bear
#

so im guessing the visualizer in the viewport is not showing it properly anymore

#

where is the z equality setting? inside the material?

sturdy coral
#

change early z pass to include masked materials

#

then check that mask material only in early z pass setting

honest temple
#

@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 ๐Ÿ˜…

sturdy coral
#

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

rigid bear
#

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"?

sturdy coral
#

you can't turn on mask material only in early z pass if you leave it on that

rigid bear
#

we are currently grasping for any ms improvements we can get while keeping a realistic look

sturdy coral
#

@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

rigid bear
#

whats the max desired triangle count on screen at the same time for vr?

sturdy coral
#

it is in one of their optimizing fornite talks

#

around 1 million or so across all passes I believe

rigid bear
#

alright. im currently stress testing with 6 million just to see what improvements i can get

sturdy coral
#

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

rigid bear
#

so to be clear, if scaling down the resolution increases performance drastically its a shader problem and not a geometry problem?

sturdy coral
#

yeah usually so

rigid bear
#

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

sturdy coral
#

forward renderer or deferred?

rigid bear
#

forward

sturdy coral
#

I think so, it may just already be handled if you don't hook up the pins

rigid bear
#

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

sturdy coral
#

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

#

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

rigid bear
#

Good ideas. Will definitely keep it in mind. Thanks!

compact kettle
#

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)

sturdy coral
#

@compact kettle works for me on steamvr, which plugin are you using?

compact kettle
#

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

sturdy coral
#

@compact kettle you are on 4.24?

compact kettle
#

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..)

tired tree
#

You shipped on 4.24?

#

It's still not even stable enough for that at .2.....

sturdy coral
#

@compact kettle it gets called for me on entering and exiting fullscreen

#

I'm on 4.24.2

compact kettle
#

@sturdy coral could you send me the callstack?

#

just a screenshot of it perhaps

sturdy coral
#

FSceneViewport::ResizeFrame was broken before on earlier engine versions

cold siren
#

@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

compact kettle
#

@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 ๐Ÿค”

sturdy coral
#

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

tired tree
#

Yeah, def don't update as possible.... Last few releases have had really Terrible initial vr launches

sturdy coral
#

the old bug only affected steamvr though

compact kettle
#

@sturdy coral I'll take a look again.. Can't remember though ever fiddling with stuff related to this

sturdy coral
#

and was created by accident from them fixing something for PSVR

compact kettle
#

is it also called when you just grab the window and resize it?

sturdy coral
#

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

compact kettle
#

hmm possible. What mode are you in?

#

I mean, isn't there like a borderless variant or something? Need to look into it again

sturdy coral
#

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

compact kettle
#

pretty sure with 4.23 everything worked as expected

#

at least 4.23.1 or .2, don't remember which one the latest was

sturdy coral
#

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

compact kettle
#

will do. Will grab something to eat real quick first though, starving ๐Ÿ˜… thanks again for the screenshot

sturdy coral
#

on avoiding full engine builds the solution is to break down and buy a 3950X or more ๐Ÿ˜›

cold siren
sturdy coral
#

@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

cold siren
#

Not sure how to go about the first part. Not a coder, BP only for now. Looking into LIV though thanks @sturdy coral

carmine yoke
#

@cold siren That's really neat dude! good job!

cold siren
#

@carmine yoke thanks man! Appreciate the support!

compact kettle
#

@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
#

@cold siren ๐Ÿ‘‹

#

Project is coming along ๐Ÿ™‚

cold siren
#

@hallow knoll thanks man!

rich canopy
#

@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

cold siren
#

@@rich canopy Not using obs for compositing, this is being captured in game

digital musk
#

@cold siren The Cricket game looks good! Nice

nimble edge
#

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.

tired tree
#

they are in each api's model directory, for OpenVR that is: SteamApps/common/OpenVR/resources/rendermodels/

mighty carbon
#

just noticed UE4 issues tracker no longer has VR (or even XR) section :/

nimble edge
#

Thanks MordenTral, I can't find an Index Controller in there....

willow trail
#

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 ๐Ÿ˜ญ

thick linden
#

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?

sturdy coral
#

@thick linden launch with -nohmd

thick linden
#

thank you

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

@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

twin lagoon
#

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?

warm lion
#

@sturdy coral Thanks!

sturdy coral
#

@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

warm lion
#

@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?

sturdy coral
#

@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.

twin lagoon
#

@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

sturdy coral
#

@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

twin lagoon
#

@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.

sturdy coral
#

@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

last knot
#

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.

compact kettle
#

@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..

sturdy coral
#

The one in updatefullscreenstate is guarded too?

compact kettle
#

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

sturdy coral
#

@compact kettle that one was the only one that worked for me, resizing the window didnโ€™t

#

But going full screen or out did

compact kettle
#

nm ResizeFrame isn't called anytime except for the SystemResolutionSyncCallback

#

yeah neither works for me...

sturdy coral
#

In my call stack it is calling into game user settings on the full screen change

compact kettle
#

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

sturdy coral
#

I sent two

#

One was out of vr but first was in vr and shows game settings in stack

compact kettle
#

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

sturdy coral
#

@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

compact kettle
#

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

distant heath
#

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?

sturdy coral
#

@distant heath desktop forward is clustered, with a 3d frustum grid for the lights

distant heath
#

Ah I see, can it support a fair amount of dynamic lights?

#

Assuming most do not need shadows

sturdy coral
#

yeah, should be fine

distant heath
#

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

night linden
#

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

warm lion
#

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);

warm lion
#

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

distant heath
#

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

sturdy coral
#

@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

distant heath
#

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

ocean bobcat
devout aurora
#

...File>Package project>Android>Android(ASTC) sends me to the unreal forum...

polar valve
#

@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

devout aurora
#

@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.

devout aurora
#

@polar valve Trying the codeworks install now. Had to backup my previous settings.

distant heath
#

In the 4.24 release notes it says the Mission AR sample uses volumetric effects so I guess that works!

warm lion
#

@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.

devout aurora
#

@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.

distant heath
#

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

outer spire
#

hey does anyone have experience emulating vr controls with keyboard and mouse?

mighty carbon
#

o.O why @outer spire ?!

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 :/

tired tree
#

its pretty common anyway to iterate 2d on mechanics at the start

mighty carbon
#

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..

distant heath
#

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

mighty carbon
#

I'd stay after hours in school and workwith the tech, if possible

outer spire
#

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

tired tree
#

well the good news then is that the teacher must have low expectations

#

as that isn't enough dev time with the actual hardware

outer spire
#

yeah they do. oh did i mention it's suposed to be local multiplayer too haha

tired tree
#

mmm, wrong engine for that

#

if you mean async multiplayer by that

distant heath
#

@outer spire Out of curiosity what school are you at?

outer spire
#

not sure what async means i am new to everything

#

@distant heath Confetti, uk

distant heath
#

Ah! Cool

#

I went to NHTV/BUAS in the NL

warm lion
#

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).

distant heath
#

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

sturdy coral
#

@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

warm lion
#

@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

sturdy coral
#

There is an hmd worn state delegate somewhere

magic bridge
#

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

earnest cypress
#

I cant find where to change android toolchain NDK's, does anyone know where?

still lion
#

how to get started with ue4 ar?

#

is there any specific kit or plugin or ar?

#

is ar require blueprint or c++?

#

?

shadow radish
#

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.

obtuse spruce
#

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.

mighty carbon
#

that r.Mobile.SupportGPUScene=1 gave me horrible performance drop

#

I don't think it works well in VR yet (especially not with Vulkan)

obtuse spruce
#

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?

#

And I'm using OpenGL ES3.1

hybrid plume
#

Hi. Does anyone know the exact correct project settings on 4.24.2 for Vulkan on Quest?

warm lion
#

@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

#

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.

sturdy coral
#

@warm lion GEngine->XRSystem->GetHMDDevice()->GetHMDWornState();

#

you can call that to check it

warm lion
#

I appreciate then feedback but that is just a bool value that I must continually check

sturdy coral
#

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

warm lion
#

Yeah I guess I'm going to have to create my own vr watcher class ๐Ÿ˜ฆ

sturdy coral
#

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

warm lion
#

that's the plan

sturdy coral
#

just be aware that it is bugged in some scenarios

warm lion
#

? oh gret

sturdy coral
#

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

warm lion
#

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();

shadow radish
#

hmm I never ran into those kinds of complications with it

#

but I am still on engine version 4.20

warm lion
#

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

sturdy coral
#

it has been broken a while, but I think maybe works ok with bStartInVR==true

warm lion
#

what is bStartInVR?

sturdy coral
#

project setting to start in vr or not

warm lion
#

Oh - let me try that

#

Yeah I was using the BP node "Enable HMD"

sturdy coral
#

also oculus get worn state is broken or was in the past

#

        EHMDWornState::Type FOculusHMD::GetHMDWornState()
        {
+               if (!ovrp_GetInitialized())
+               {
+                       InitializeSession();
+               }
+
                ovrpBool userPresent;
warm lion
#

Hmm, that seems to work well for me through the IHeadMountedDisplay

sturdy coral
#

is the fix

#

that one might also only be due to bStartInVR differences

warm lion
#

I've been using IHeadMountedDisplay->DoesAppHaveVRFocus()

sturdy coral
#

does app have VR focus I think will be off when the dashboard is up, which may be what you want

warm lion
#

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.

sturdy coral
#

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

warm lion
#

ohh bloody hell

sturdy coral
#

oculus also breaks keyboard focus when entering the background as a side effect which breaks switching between 2d and VR without modifying that

warm lion
#

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.

sturdy coral
#

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

warm lion
#

Yeah that doesn't sound great.

sturdy coral
#

they do support openxr now though, hopefully valve will add that soon too

earnest cypress
#

How can i setup input for my oculus go controller in 4.24?

hybrid plume
#

Hi. Does anyone know the exact correct project settings on 4.24.2 for Vulkan on Quest?

mighty carbon
#

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 ^^

hybrid plume
#

Oh thatโ€™s a shame

thin solstice
#

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....

hybrid plume
#

So even oculus branch isnโ€™t giving good Vulcan results?

mighty carbon
#

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

hybrid plume
mighty carbon
#

check Oculus docs maybe ?

hybrid plume
#

I actually got something to deploy but was so buggy... then tweaking settings, and everytime waiting ages for 15,000+ shaders to compile ughhh

mighty carbon
#

Android Vulkan isn't the same as mobile VR Vulkan

hybrid plume
#

But isnโ€™t Quest Android under the hood?

mighty carbon
#

sure, custom Android

#

and non-VR rendering isn't quite the same as VR rendering, especially on mobile

hybrid plume
#

Alrighty.. besides Vulkan though, which are the rest of recommended / optimized project settings?

#

Like in Engine > Rendering?

mighty carbon
#

believe it or not, it's all in the docs I linked you

hybrid plume
#

@mighty carbon yes thanks Iโ€™ve read all of them, but info is superficial

mighty carbon
#

๐Ÿคท

#

that's what I used

hybrid plume
#

How are specular / reflective shaders working for you?

rich canopy
#

@hybrid plume im inviting the oculus docs writer to this channel, maybe u can feedback to her

hybrid plume
#

@rich canopy wow appreciate that, that would be great ๐Ÿ‘

rich canopy
#

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

hybrid plume
#

No I need to do that ASAP I think

#

Can you please send me an invite?

tame cypress
#

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..

flat shoal
#

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)

shadow radish
#

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?

hallow knoll
sturdy canyon
#

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!

carmine yoke
#

@sturdy canyon You have a fix for that? Someone said they've fixed it in the next oculus branch anyhow

sturdy canyon
#

Yeah Remi fixed it and shared the fix

carmine yoke
#

oh okay cool

#

Well anyways I'm still on es3.1 so dw, I'll just grab it as n when

mighty carbon
#

@sturdy canyon on what kind of scene? I provided Oculus with Renderdoc captures of abysmal performance in my test case

sturdy canyon
#

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

mighty carbon
#

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 ๐Ÿ˜‰

sturdy canyon
#

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

mighty carbon
#

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

sudden tide
#

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

serene haven
#

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?

obtuse spruce
#

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.)

mighty carbon
#

not supported ?

obtuse spruce
#

@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

sturdy canyon
#

I thought it was supposed to work in 4.24, but I haven't tested

obtuse spruce
#

@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! ๐Ÿ˜ฆ

mighty carbon
#

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

obtuse spruce
#

@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

mighty carbon
#

I don't know why, I am not a renderer programmer ๐Ÿ™‚

mighty carbon
#

ha, Oculus Link isn't available in the States ๐Ÿ˜ฆ

hybrid plume
#

yup my Quest for Vulkan is a comedy of errors... simply illogical ๐Ÿ™‚

warm lion
#

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

warm lion
#

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

earnest cypress
#

Where do I find motion controller input in 4.24?

serene haven
#

I updated the engine to 4.24, now I get the error, that all my ActionBindings are not valid with the HTC Valve Keymap?

past tiger
#

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.

tired tree
#

Nah it's because he is using direct key referencing which is gone for motion controllers. Have to define I out actions now

sturdy coral
#

@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)

warm lion
#

@sturdy coral I thought that returned Windows, Linux, IOS, etc...

sturdy coral
#

@warm lion no, there is probably something in generic platform process that returns that

warm lion
#

Oh wait no, what I thought is that what if I launch on SteamVR with an oculus

sturdy coral
#

xrsystem is the vr system (or AR for mobile arkit etc)

warm lion
#
     * 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?

sturdy coral
#

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

warm lion
#

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!

sturdy coral
#

@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)

warm lion
#

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!

rose totem
#

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

distant heath
#

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

sturdy coral
#

@distant heath you should probably post that on an oculus forum, does it also happen to unity stuff on oculus?

distant heath
#

I don't have unity set up so I wouldn't know

sturdy coral
#

I mean try a unity game on their store

distant heath
#

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

sturdy coral
#

are you triggering the screenshot with a hotkey combination, or a blueprint node?

distant heath
#

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

sturdy coral
#

yeah test another game, make sure it is in another engine, and see if it defocuses too

distant heath
#

That just happens when you open up a new window so

#

The issue is more the framerate dropping on defocus

sturdy coral
#

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

distant heath
#

Ah! Yea thanks that's what I wanted to know, if it doesn't happen in release builds that's fine

warm lion
#

@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

distant heath
#

Lower priority I can deal with, worst case I can add a keep focus open

sturdy coral
#

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

distant heath
#

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

sturdy coral
#

it will limit itself to 10fps or somethign when not focused if running editor

distant heath
#

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

sturdy coral
#

@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

#

and in that case you place the vr root at the desired eye height, not at 0,0,0

warm lion
#

hmmm. I think I'm going to try and get the origin location and add the difference to the camera.

sturdy coral
#

no

#

adding to camera gets reset every frame

warm lion
#

Add to player?

sturdy coral
#

vr root is what you always move

warm lion
#

Yeah I said it wrong before.

sturdy coral
#

you should make it an empty scene component

warm lion
#

PlayerRef->SetActorLocation((GEngine->XRSystem->GetBasePosition() - PlayerRef->View->GetComponentLocation()) + PlayerRef->GetActorLocation());

sturdy coral
#

what is player ref?

warm lion
#

The ref to my pawn

sturdy coral
#

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?

warm lion
#

No view is my camera

#

I'm adding the distance from the camera to the SteamVR origin location

sturdy coral
#

where are you doing this? on begin play?

warm lion
#

Yeah

#

Yeah I don't think base position returns what I thought

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

are you flying or standing on the ground in the game?

warm lion
#

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

sturdy coral
#

are you standing on the ground in the game?

warm lion
#

There is no ground, sorry that's why i used 0,0,0 as a ref.

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

eye does anything, you can't know until it is recalibrated

warm lion
#

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

sturdy coral
#

eye just means the origin is where the user recalibrated

warm lion
#

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

sturdy coral
#

explain the overall game more because this is probably a bad setup

#

do you want the collision to follow the head?

warm lion
#

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

sturdy coral
#

sounds like lone echo

warm lion
#

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

sturdy coral
#

what if they don't have tracking at startup

#

and then acquire tracking

warm lion
#

Right now my game pauses when you enter exit VR

#

And a screen recals upon reentry

sturdy coral
#

you shouldn't need that

#

lone echo doesn't have to do that right?

warm lion
#

I'm not a large studio. some things are better for indie devs than going down feature creep

sturdy coral
#

yeah but you are making this more complicated for yourself and the user I think with that flow

warm lion
#

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

sturdy coral
#

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

warm lion
#

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!

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

@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

warm lion
#

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

sturdy coral
#

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

warm lion
#

Okay I'm going to build with "Floor" one more time, I've done this a dozen times already

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

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

warm lion
#

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

sturdy coral
#

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?

warm lion
#

Cam neck is a scene comp between the cam and root

#

Spere_Collision->CamNeck->View(Camera)

sturdy coral
#

if (VrHMD->DoesAppHaveVRFocus()) { IsHMDOn = true; }

#

does that work in steamvr?

warm lion
#

It might not actually. Hmm. It does in Oculus.

#

I see

#

So it may never be setting "Eye

#

Son of a ...

sturdy coral
#

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.)

warm lion
#

My brain is done for tonight. Migraine coming in. Thanks for the help... time to ice my skull

sturdy coral
#

@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

twin wing
#

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.

#

But steamvr_actions.json and etc are not generated

#

I tried deleting Saved/Build/Intermidiate and full CleanUp but it's not helping

tired tree
#

@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

twin wing
#

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 ๐Ÿ™‚

tired tree
#

in their drop down menu with the blueish gear

#

the steam menu

twin wing
#

Thanks, I'll try that

earnest cypress
#

Does anyone know why my oculus go remote trigger is not responding (only in ue4 launch)?

sturdy canyon
#

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

earnest cypress
#

@fair anchor Has helped me it was because ue4 4.24 uses oculus touch trigger for oculus go trigger

sturdy canyon
#

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

distant heath
#

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

subtle raft
#

is there a plugin or marketplace asset for finger tracking?

#

or should I just make it myself

sturdy coral
#

@distant heath which engine version

#

and which headset etc.

#

make sure to turn off fringe/chromatic aberration in post process settings

rich canopy
distant heath
#

@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

sturdy coral
#

@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?

distant heath
#

@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

wide shard
pale juniper
#

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?

nimble edge
#

That seems fishy, what's your lighting like? A couple Real Time shadow casting light sources will destroy your fps pretty quickly.

pale juniper
#

blank map, just a ground, standard skybox, 50 cubes

#

indeed, to me it seems something else is weird

nimble edge
#

Did you start with a "blank" template or the VR template?

pale juniper
#

vr template, but blank map in there

nimble edge
#

500 dynamic cubes. built in Sky Sphere, sky light, directional light. Cruising a 120fps.

#

There's something else happening on your end.

mighty carbon
#

120 fps where ? In the preview ?

nimble edge
#

Index HMD

#

It's throttled to 80 in a Rift S

mighty carbon
#

yeah, I was wondering how did you go over the 80/90 limit ๐Ÿ™‚

#

I guess Index is 144 max ?

sturdy canyon
#

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

pale juniper
#

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

nimble edge
#

You're right, I had my headset at 120, I can run it at 144fps

pale juniper
#

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?

nimble edge
#

Engine version?

pale juniper
#

4.22

nimble edge
#

Nuts, I don't have that one.

#

6.9ms

pale juniper
#

and engine version?

#

headset is rift s, right?

tired tree
#

he said index

#

can't get that much fps on rift s

nimble edge
#

Correct, it was on Index. Rift s is probably around ... 9? It will cap out at 80fps.

#

Engine 4.23

warm lion
#

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.

warm lion
#

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.

sturdy coral
#

@warm lion I think you are running into the root collision sphere is the same as the actor location and can't be offset

warm lion
#

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);

warm lion
#

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

sturdy coral
#

@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

tired tree
#

Sounds like eye level isn't correctly being set

#

Oculus defaults to a different default tracking mode

warm lion
#

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

tired tree
#

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

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).

tired tree
#

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

warm lion
#

I'll try removing the reset.. one moment

tired tree
#

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

warm lion
#

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

tired tree
#

You can add a scene component into your actor to rebase with....

#

The camera position is in relative space

warm lion
#

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)

tired tree
#

But why though....myou can have a child sphere component

warm lion
#

? What do you mean why my pawn is a sphere. I want all the comps in the center - like a sphere

tired tree
#

Regardless your parent scene component for the camera can be offset inversely with the cameras position to place it at 0

#

Pawns are capsules

warm lion
#

How?

#

How can it be offset?

tired tree
#

Move it....

warm lion
#

That doesn't work

tired tree
#

Yes it does...

warm lion
#

There's no way to move the root comp and have the VR floor stay where it is. It will follow the root comp

tired tree
#

Why do you want to leave the floor? It has no meaning then

warm lion
#

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

tired tree
#

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++

warm lion
#

I never said it doesn't...The camera Offsets. Not the Root component

tired tree
#

And unless you reapply that somewhere, your user will be stuck 3dof

warm lion
#

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?

tired tree
#

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

warm lion
#

There's no problem with moving? That's where you are confused. I'm not trying to lock the HMD in place

tired tree
#

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

warm lion
#

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.

tired tree
#

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

warm lion
#

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

tired tree
#

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

warm lion
#

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

tired tree
#

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

warm lion
#

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.

tired tree
#

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

warm lion
#

What are you talking about? GetCameraView?

tired tree
#

It's a camera finction

warm lion
#

What does that have to do with any of this?

tired tree
#

It's where the engine queries the hmd transform

#

And sets the camera location

#

Then you can do whatever you want

warm lion
#

What class?

tired tree
#

Camera component

warm lion
#

That doesn't make sense? Why would the VR system query the game camera for pos?

tired tree
#

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

warm lion
#

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.

tired tree
#

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

warm lion
#

what do you mean it's the opposite?

#

So insteaad of downward go upward?

tired tree
#

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

warm lion
#

Trying now - if that works wtf...

tired tree
#

You'd have to check

#

On a phone

warm lion
#

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

tired tree
#

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

warm lion
#

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.

tired tree
#

It's better than disabling the module

warm lion
#

FML

#

Are you kidding me!

distant heath
#

Beginner question but, what's the difference between GEngine->XRSystem->SetTrackingOrigin and GEngine->XRSystem->SetTrackingOrigin?

#

wHoops

warm lion
#

no difference LOL

distant heath
#

Second one should be UHeadMountedDisplayFunctionLibrary::SetTrackingOrigin

#

Visual Studio decided ctrl-c was a mere suggestion

warm lion
#

@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.

distant heath
#

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?

tired tree
#

@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

wispy quiver
#

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.

  1. 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??

  2. 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?

  3. 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?

  4. Polycount - What is a good number to aim for on a VR character. Will be used on Samsung Odyssey

Thank you

past tiger
#

@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...

โ–ถ Play video
wispy quiver
#

I guess a simpler question is , modular characters in VR yes or no?

#

i know it depends but... overall

sturdy coral
#

@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

wispy quiver
#

that part isnt an issue as we will have a seperate material for head skin,

#

thanks

pallid osprey
#

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.

orchid elk
#

Anyone else had issues with Vive Cosmos controllers not tracking movement and inputs in UE4.24 projects?

devout aurora
#

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?

distant heath
#

@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

tired tree
#

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

carmine yoke
#

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

tired tree
#

generally people use the side grip for picking things up on quest

carmine yoke
#

Problem is we're keeping it all homogeneous between devices

#

Don't want to confuse our clients

tired tree
#

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

carmine yoke
#

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

tired tree
#

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

carmine yoke
#

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

carmine yoke
#

Seems to work pretty well

hushed nova
#

Hey guys anyone try the newest Oculus version of UE4?

#

Does it have hand tracking or not yet?

warm lion
#

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.

sturdy coral
#

@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

distant heath
#

what i want is just for the player to be able to press a "this is my center seated position" button

sturdy coral
#

@distant heath what is your overall game type? something in a cockpit?

distant heath
#

yea

sturdy coral
#

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

distant heath
#

alright, thanks!

sturdy coral
#

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)

tired tree
#

@sturdy coral in openVR they actually have an offset that you can read for head to neck and eye distances

sturdy coral
#

ah cool

warm lion
#

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.

warm lion
#

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

idle osprey
#

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.

warm lion
#

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

warm lion
#

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

tired tree
#

You can, but it won't visually show if you have late updates turned on.

warm lion
#

@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"?

sturdy coral
#

@warm lion yes, if that bool is on, late updates are off

mighty carbon
#

I am disappointed in mobile Vulkan

#

so much praise, but it never performs well ๐Ÿ˜ฆ

#

I think so far the only company that nailed Vulkan is idSoftware and their idTech 7