christophgeske / arcoreinsideouttrackinggearvr Goto Github PK
View Code? Open in Web Editor NEWInside Out Positional Tracking (6DoF) for GearVR/Cardboard/Daydream using ARCore v1.6.0
License: MIT License
Inside Out Positional Tracking (6DoF) for GearVR/Cardboard/Daydream using ARCore v1.6.0
License: MIT License
The current whiteisland.apk appears to have been built with the name com.VRWizard.WhiteIsland and while it can be signed there is no obvious way to launch it since after installation there is no launch icon, though the app does appear in the Android installed app list in settings.
Why are there Oculus Go .apks if the Oculus Go 1) does not have ARCore and 2) does not have a camera to use for tracking?
Am I missing something?
Using lerp to smooth out the jumps is possible but than every quick movement of the user also gets smoothed. This solution is not ideal therefore I have to work on a fix.
One possible solution seems to use the accelerometer to check if the data coming from the arcore camera are correct.
The idea of using the IMU was mentioned here
google-ar/arcore-android-sdk#604
by one of the google arcore team members.
Another fix might be to use a filter algorithm which cuts off movements which are to fast for humans or which are unlikely. For example one could record the last few frames and if the next frames differs to much from the ones before it could be a jump in the tracking and filtering it out might help to eliminate the jumps keeping responsiveness high and lag low.
As long as ARCore is not supporting faster frame rates this issue might not be solvable. Therefore we have to live with a small jitter when moving through the room and imprecise tracking when moving to fast.
followARCoreCamera - correct the filename (first letter to capital), because the script doesn't load, and the built app doesn't work as supposed.
The same issue with antialisingCorrection.cs
Thank you for the wonderful code. I tried to use your code to track the Andy objects in HelloAR example. When I wear the headset and view, the andy objects are drifting. Any possible fix for the same?
The Daydream/Cardboard build of Viking Village is not tracking for me. There is a static image but it does not perceptibly change with head or body movement. The Daydream/Cardboard version of BoxyRoom appears to be working properly at least in a short test so far. Addendum: The Gear VR version of Viking Village appears to be working fine.
So this is working on my S9+. It is somewhat laggy -- that is, some jitter in tracking, and blue background can take time to fill in with the image as you move your head or body, with new blue background appearing in other areas. The same tracking issue I've noticed with the other apps is here also -- sometimes the tracking motion with body movements is backwards -- that is, when you physically move toward an object, you end up moving away from it in VR instead. The detail in this app is really very impressive!
Hi. This is great work and WhiteRoom is working fine here on an S9+ (actually using a DayDream 2017 headset). However, it appears that both WhiteRoom and WhiteIsland are building to the same package name, and so both cannot be installed simultaneously without additional modifications. Could these be separated out with different package names for simultaneous install? Thanks!
Hi,
This s great project and running WhiteIsland_ demo was very smooth. Thank you to the developers. I am just getting my feet wet with AR and VR, and I am learning a lot so far.
I am using a Flight Simulator, Condor Soaring, by injecting it to Revive and Streaming from my PC (win 10 64Bit, i7-7700K, 32GB, RTX 2080) to Gear VR (with Samsung S9) with ALVR. It is smooth and functional at 60FPS. It is a native 3DOF but lacks the 6DOF (5DOF really needed) to be able to lean forwards (to look at panel instrument, PDS or maps) and sideways to better see over the edge of the glider's cockpit (not as important). Note that up and down movements are marginal. Note also, that the requirement is mostly for the front facing position (looking over shoulder +/90, up and down +/-80, leaning forward or side to side by up to 30cm from neutral position). Also, so far 1 or 2h session with ALVR doesn't make the phone heat up much and drain battery too quickly.
Is there a way to combined ARCore Inside Out Tracking with GearVr, while streaming with ALVR, to achieve 6DOF?
If so, how can I integrate it?
Would fixed marker/stickers help smooth and consistent tracking and would ARCore affect adversely the mobile phone CPU load and render image fps received)?
Thank you in advance for your help and clarification.
Donat
Which release of BoxyRoomChardboard has got ARCore Device with menu and Google VR?
I am not sure if the apks work with the S8, S8+ or Note 8. Please share your experiences if you have one of those devices.
我尝试了一下,感觉VR场景中和现实场景的移动比例好像有问题,现实场景移动了很长一段距离,但是VR场景中移动的距离很短,是模型的问题吗?有没有调节移动比例的设置?
Firstly thank you for the amazing work you are doing with this!
I'm trying to use https://8thwall.com/ to access ARcore and to enable cardboard integration
having some trouble with tracking - see https://www.youtube.com/watch?v=KFUErLyLrbQ
is this something you also experience?
Resetting the view to the starting point might be useful for some experiences and should get a special button combination so it doesn't need to be implemented by everyone who wants to use this project and needs this functionality.
Hello,
Thank you for all your work into bringing positional tracking to the Gear VR. You said in your README that you'd be willing to share your WIP Vuforia marker controller tracking project. I'm working on something similar and any additional information would be useful.
我的手机用的是ARcore最新版本,我在unity导出apk时是不是要用1.11的SDK,还是要怎样操作?因为我发现按照原来的方式导出来摄像头没有定位功能
Amazing demo apps for experimenting with 6dof.
Why doesn't some more exist, now that even a 140$ smartphone like a Samsung A22 does support Arcore?
Any link to other 6dof android cardboard apps?
Hello, I'm trying to open the BoxyCardboard Unity project. I get an initial error stating that is was made with an earlier version of Unity, and then when I open it there are lots of missing prefabs. Any ideas how to fix this? Thank you!
Is there any chance you send me a guide on how to set up the ARCore Device Object as well as the UserCamera? I had a few things go wrong while importing but I've gotten everything working and I just wanted to make sure I had everything set up the same. If you pass this on to me, I am willing to help out with the project. Especially by making some guides ( pdf and video) for setting the project up, modifying it as well as some videos that who what it can be turned into. Please lmk, this is absolutely amazing work.
Is there a practical method to use signals or cues from the camera to detect and warn (audibly or visually or both) of real world barriers or other hazards -- e.g. walls or other obstacles?
Hi, first of all thank you for your great work. Im not sure if I overthought the following problem, but I had an issue with the build in recenter Action from DayDream. The behaviour of the ARCam in relation to the VR Camera really confused me and I couldnt find a solution anywhere. So If anyone stumbles across the same issue this is how I tackled it:
public class RecenterCorrection : MonoBehaviour {
public static float ANGLETHRESHOLD = 2f;
public static int ROTATIONQUEUESIZE = 10;
//camera for rotation values
public Transform gearCamera;
//AR Core Camera for real world position values
public Transform arcoreCamera;
//class which "followy" the arcore cam position with the daydream camera
followARCoreCamera arcorecam;
//stores rotation each frame from daydream camera
Queue<Vector3> rotations;
//flag which indicates that recentered got triggered
bool watchRotation;
// Use this for initialization
void Start () {
arcorecam = GameObject.FindObjectOfType<followARCoreCamera>();
watchRotation = false;
rotations = new Queue<Vector3>();
}
// Update is called once per frame
void Update () {
//only watch last ROTATIONQUEUESIZE rotations. The rotation recenter can last some frames, so we have to track more rotation values to spot the action and the angle
if (rotations.Count > ROTATIONQUEUESIZE)
{
//if queue is full kick out the oldest element
rotations.Dequeue();
}
//enque the newest rotation value of daydream cam
rotations.Enqueue(gearCamera.rotation.eulerAngles);
//recentered got pressed might be executing soon / executed
if (GvrControllerInput.Recentered)
{
Debug.Log("[IO] Recentering Done");
//watch the Queue with stored rotations to spot the angle difference
watchRotation = true;
}
if (watchRotation)
{
//get current y angle of daydream camera
float yAngle = gearCamera.rotation.eulerAngles.y;
//check if its inside our "recetered" anglethreshhold
if ((yAngle > 360f - ANGLETHRESHOLD && yAngle <= 360) ||
(yAngle >= 0f && yAngle < ANGLETHRESHOLD)){
//get the odlest y angle of queue
yAngle = rotations.Dequeue().y;
//remeber the angle before yAngle
float angleBeforeRecenter = 0f;
//as long ad the yAngle is not in range, dequeue the rotations
while (!((yAngle > 360f - ANGLETHRESHOLD && yAngle <= 360) || (yAngle >= 0f && yAngle < ANGLETHRESHOLD)))
{
angleBeforeRecenter = yAngle;
yAngle = rotations.Dequeue().y;
}
//now angleBeforeRecenter has the angle before the recenterd rotation of (almost) 0
Debug.Log("[IO] Recenter finished, y Angle almost 0f");
//tell arcore cam the angle, so the delta Vectors can be rotated accordingly
//we have to substract the old vector, cause this vector is always the new origin rotation
arcorecam.mirrorAngle = (arcorecam.mirrorAngle - angleBeforeRecenter)%360;
Debug.Log("[IO] ARCore mirrorAngle = " + arcorecam.mirrorAngle);
//stop watching the rotations
watchRotation = false;
}
//if not, keep on recording the rotations of daydream cam
rotations.Enqueue(gearCamera.rotation.eulerAngles);
}
}
}
If you have a more convinient solution or if i missed sth please share your thoughts. I just wanted to share this so if another person has similiar issues he can start with my approach.
Greetings
Micha
Both apps are now functioning excellently. However, I am noticing that sometimes (always? - unsure!) after running for a couple of minutes the phone goes to standby. That is, the screen just goes black, and will come right back to where it was if the power switch is pressed again. I initially thought that the power switch was accidentally being pressed by the system I use to hold the phone in the open Daydream headset, but now I'm doubting that. This does not seem like a typical heat-caused shutdown -- for which I'd expect a warning and the phone completely shutting down -- not just entering standby and coming right back when the power switch is pressed again. It's quite possible this is some heat-related aspect with which I'm unfamiliar, but I don't have enough information at this point to judge what's actually happening.
Hi,
Really been trying to get it to work on the S6. Phone is rooted and installed special apps using magisk and so on, yet still isn't functioning.
Thanks in advance for making it funciton on the S6!!!:) Plan to make some AWESOME apps!
I tried the boxychardroom example. I dragged the DetectedPlaneVisualizer of ARCORE to Player Gameobject. I have two issues with this.
The detected planes move as I move the camera.
I tried to place andy prefab on a specific location. If I move the camera, the 3d object moves as well instead of being static in its original position.
I tested the BoxyRoom.apk on my S7 but tracking felt a bit strange and I suspect this is due to the IMU in the S7 which is not that good compared to the GearVR sensors. A tester who has a S8 or S9 and can compare the GearVR version with the Cardboard version would be ideal.
I noticed that sometimes the frame rate drops noticeably when the controller is connected. This only happens sometimes and seems to be caused by other processes running in the background.
If you notice frame drops try turning of bluetooth to disable the controller.
I guess the reason for this is that the app is hardly able to do the 60fps and even a small program running in the background leads to noticeable frame drops but I am not 100% sure about this.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.