THREE.VRController icon indicating copy to clipboard operation
THREE.VRController copied to clipboard

Daydream - Camera on the floor

Open arturitu opened this issue 8 years ago • 8 comments

When you user a Daydream viewer with a controller, camera is on 0,0,0 perhaps is related with this three.js issue > https://github.com/mrdoob/three.js/issues/11619 screenshot_20170807-180327

arturitu avatar Aug 07 '17 16:08 arturitu

Thank you for testing this on a 3DOF system. (I’m currently without any; returned them!) I think you’re correct that Three’s issue #11619 is related. A temporary fix might be to move the main scene downward instead of trying to wrestle the camera away from the renderer to push it upward.

Can you tell me more about how the controller itself? From the screen grab it looks like its position is correct relative to your head, but obviously your head feels like it’s part of the floor! Does it rotate with your head rotation? Does it feel like it’s part of your right arm rather than your left, even when you turn around?

Can you connect your Pixel to your laptop to get some Chrome debugging out of it? I’m very curious what renderer.vr.getStandingMatrix() returns when in Daydream mode.

Does the rotation of your head at least work correctly?

stewdio avatar Aug 07 '17 17:08 stewdio

Yes, to move all the scene is the unique fix I found, but I suppose was not a great idea if you want to make a teleport option, I hope could be fixed soon.

Head rotation is ok, and I recorded a video on how the controller works, looks like only works for right-handed (because I have configured like left-handed but the position is the same as if the hand is right than if is left.

https://www.dropbox.com/s/gie3r4m91dhi2bg/daydream_THREE_VRController.mp4

renderer.vr.getStandingMatrix() on vr.enabled = true returns > image

arturitu avatar Aug 08 '17 07:08 arturitu

I don’t think building teleportation is an issue—and it’s also beyond the scope of VRController ;) Just remember that mathematically moving the camera position is the same as moving the entire universe. So if the renderer is hogging the camera’s matrix when in VR mode why fight that? Just move the universe instead!

However, the Orientation Arm Model not switching from right-handed to left-handed is very much in the realm of VRController. That seems immediately solvable by anyone using VRController by listening for the "hand changed" event and then inside that handler updating the controller instance’s armModel.isLeftHanded = true or just making that assignment as soon as the controller instance is broadcast. But it would probably be nicer to have that happen automagically, yes?

So for me the real issue here is that in a seated setup (so NOT room-scale setup) the origin is the camera instead of the floor and because we can’t wrestle the camera away from the renderer’s control we need to push the scene downward so that a user’s face isn’t in the floor! It would be really handy if this was part of THREE’s new renderer so we can just say yes, renderer.vr.enabled = true and also renderer.vr.userHeight = 1.6 or whatever and not have to deal with it beyond that.

stewdio avatar Aug 29 '17 12:08 stewdio

This is still a problem with the demo. the controller object is very close also.

danrossi avatar Jan 23 '18 15:01 danrossi

This is also a problem in GearVR. I can't even get the DayDream controller detecting in the gamepad list only the GearVR controller.

danrossi avatar Jan 23 '18 16:01 danrossi

This issue is also present on the Oculus Go browser. Also the preferences panel does not face you.

kosso avatar Jun 16 '18 13:06 kosso

As of Version 3.45 the demo works for me on Oculus Go.

paulmasson avatar Aug 04 '18 20:08 paulmasson

renderer.vr.userHeight = 1.6 got no effect in gearvr. Simply ignores it. also camera by default is above 0 by Y axis. This only in gearvr. In windows mixed camera at 0,0,0

dvdobrovolskiy avatar Aug 15 '18 15:08 dvdobrovolskiy