How to run on DaydreamVR?



  • Anyone got IdeaSpaceVR to work with the the DaydreamVR controller?

    I got it working fine via the Cardboard like view (in Firefox), but it would be nice if the controller was also working.

    I guess I would need to use Chrome on my Android phone? But on my OnePlus3 IdeaSpaceVR seems to have issues getting a good reading out of the gyro with Chome and moves around like crazy.

    By the way: on the x86 Zenphone2 IdeaSpaceVR Cardboardview just freezes.

    Edit: Maybe something like this needs to be added? https://github.com/ryanbetts/aframe-daydream-controller-component



  • Actually it works with Chrome and Daydream if you set the webvr and controller flags:
    Open Chrome, navigate to chrome://flags and enable the WebVR and Gamepad flags.

    However at least for me (using a Daydream controller emulator on another phone) the point to click doesn't correspond to the end of the pointer line. You rather have to point quite a bit to the top left of the marker. A bit annoying, but probably possible to fix. In normal daydream games this doesn't happen though.



  • @poVoq I am using A-Frame laser-controls component which is a high level component (https://aframe.io/docs/0.8.0/components/laser-controls.html) so it should work in daydream as well.

    Could you test this example if it works for you in the emulator? - https://aframe.io/aframe/examples/test/laser-controls/



  • Yes that example works fine.

    I think the problem in IdeaSpaceVR is that the laser line is drawn a bit too long. It is very apparent in this example: https://www.ideaspacevr.org/themes/ideaspace-360
    When you have the three image examples for selection, the laser line intersects with the image and it works fine at the point of intersection, but in fact behind the image the line continues for a bit and the actual end of the laser line doesn't work as a pointer.

    Edit: You can actually see the same problem on this image at the button below:
    https://www.ideaspacevr.org/assets/themes/ideaspace-360-photo-tour-pro/images/ideaspace-360-photo-tour-pro-webvr-virtual-reality-theme-oculus-rift-controller-support.jpg



  • @poVoq The far attribute of the laser-controls component is set to 5001 in order to trigger the menu in the IdeaSpace 360 theme when clicking on the sky (radius is 5000).

    You are right, looking at the screenshot we can actually see that the laser is continuing beyond the buttons. I have to look at this theme if raycaster: 5001 is actually needed, as it is set at infinite per default and should truncate when hitting an element.



  • I see. The actual problem is that it makes it nearly impossible to use the small action elements in other themes such as this: https://www.ideaspacevr.org/themes/ideaspace-360-photo-tour



  • @poVoq I just tested the raycaster attribute without 5001 value but it is still extending beyond the elements.

    It is not an issue using a Samsung GearVR, but I look into this issue.

    Do you have the same issue in this theme? - https://www.ideaspacevr.org/theme-preview/ideaspace-360-photo-tour-pro

    UPDATE: I tested the theme with A-Frame 0.8.2 and it truncates the laser line. I will test a bit more and update the theme and let you know.



  • @poVoq I updated this theme preview: https://www.ideaspacevr.org/theme-preview/ideaspace-360-photo-tour

    Is it better to navigate on your Daydream VR (you have to delete your browser cache most likely)?

    Is works fine in the Rift and Gear VR with a controller (lines are truncated correctly).



  • hmm, yes it gets truncated now, but still acts in a really counter intuitive way as you still have to move the tip on the pointer to a point in the top left of the marker by which it then gets truncated and thus it is a bit easier to see what is going on.

    I can guess where this difficulty is coming from as there isn't real 3D space in a 360° photo, but I think usually in Daydream this is solved by having a pointer with a limited length (and a nice small circle at the tip) and then evaluate the click location on perceived screen-space instead of 3D space intersection (which is only done for nearby objects, on which the small dot at the tip "crawls").

    But I think there is little that can be done until such a pointer feature is implemented in AFrame?



  • @poVoq Hm this is strange, it works like a charm in the other headsets.

    Do I understand it right, in Daydream there is just a small area on the top left corner of a marker which takes the click event? What about clicking the start button and info buttons, do they behave the same way?

    You mentioned that it is nearly impossible to use the small action elements in a previous post. In VR these elements are quite large... hm.



  • No... it is just that normal usage in all other Daydream apps trains you to think of the "end" of the pointer line as something like a mouse-pointer, not the intersection in 3D space. So when you approach the navigation point from most directions with the perceived end of the line/pointer (which unknown to the user & contrary to typical daydream apps is just the intersection with 360° photo-sphere), you can't hit the navigation point easily. Rather you have to randomly move the courser around until the line suddenly intersects with the navigation point (which happens to be a point where shortly before the "end" of the cursor line was a significant amount to the top-left in screen space to the navigation point).
    This isn't perceived as much of the problem with larger interface elements such as the large image preview, or the start-button with is surrounded by the large signboard around it that also already intersects the line around the button and thus there isn't a sudden jump in z-distance when moving the pointer-line onto the start button.

    I guess the way around that would be to add a small white point at the tip of the pointerline, maybe with this: https://www.npmjs.com/package/aframe-crawling-cursor
    and then have a invisible sphere around the player that limits the maximum length of the pointer line to something like 3-5 meters (to avoid to strong jumps in z-distance of that pointer). The point of clicking is then determined not by the 3D space intersection of the pointerline, but by the overlap of that little crawling point with the interface element. Of course on close by 3D elements this is effectively the intersection of the pointerline, but on objects further away, and especially with a 360° backdrop that doesn't actually have a true z-distance (just looks a bit like it due to human common expectation) the click point is were the little dot is in "screen" space.



  • @poVoq I see. So there is no issue with clicking the navigation element in Daydream VR but rather a "visual irritation" for the user regarding the pointer line which suddenly "jumps" from infinite z-distance to the intersection of a navigation element.

    The reason why it intersects and truncates even before hitting the navigation element is that I wrap the navigation element in a hidden circle which is closer to the camera than the actual visual elements. I need to encapsulate the visual elements otherwise the mouseenter and mouseleave events from A-Frame are not consistently triggered.

    I agree that a laser pointer with a dot at the end of the line would be perfect. In Gear VR in Oculus Home the laser pointer renders as a white dot on an element as well. Your idea of having an invisible sphere would in theory work, but not with the current raycaster / laser-controls components in A-Frame, I think.. I saw the crawling cursor component but did not look into it how it is implemented.

    What would work is to hide the current raycaster line and attach a white small sphere at the intersection point of any element and hide the white sphere when intersecting at a fixed distance (eg. don't show the sphere if intersecting at z >= 5000). The raycaster returns an intersection event containing x, y, z coordinates where it intersects with an element. I will add this as a feature request in github for all themes.


Log in to reply