All Projects → florent37 → Google-ARCore-Playground

florent37 / Google-ARCore-Playground

Licence: other
Exploring Augmented Reality with google's sdk ARCore

Programming Languages

java
68154 projects - #9 most used programming language
GLSL
2045 projects

Projects that are alternatives of or similar to Google-ARCore-Playground

ProcessingStuff
Various pretty-ish Processing sketches by Odditica. About 50% shaders.
Stars: ✭ 164 (+134.29%)
Mutual labels:  shader
ElectricSheep WebGL
WebGL Electric Sheep Renderer
Stars: ✭ 14 (-80%)
Mutual labels:  shader
sceneform-android
Sceneform Maintained is an ARCore Android SDK with Google Filament as 3D engine. This is the continuation of the archived Sceneform
Stars: ✭ 303 (+332.86%)
Mutual labels:  arcore
2dset-jelly-sprite
#NVJOB 2D Set Jelly Sprite. Unity Asset.
Stars: ✭ 17 (-75.71%)
Mutual labels:  shader
CoppeliaSim-VR-Toolbox
This repository contains the code to experience CoppeliaSim in VR
Stars: ✭ 24 (-65.71%)
Mutual labels:  reality
URP Water
Water shader in unity urp.
Stars: ✭ 19 (-72.86%)
Mutual labels:  shader
image-editor-effects
💎 A WebGL example of image adjustment / effects shaders found in Photoshop, other image editors and game engines.
Stars: ✭ 68 (-2.86%)
Mutual labels:  shader
NVRecoder
It is a lite library to render multiple videos\camera and recoder a new video and each video can change filter.
Stars: ✭ 18 (-74.29%)
Mutual labels:  shader
rvc
A 32-bit RISC-V emulator in a shader (and C)
Stars: ✭ 491 (+601.43%)
Mutual labels:  shader
FlutterAR
No description or website provided.
Stars: ✭ 56 (-20%)
Mutual labels:  arcore
Open4Es-Shader-Android
This is a shader can running on Minecraft Java Edition For Phone project which uses GL4ES
Stars: ✭ 149 (+112.86%)
Mutual labels:  shader
reshade-vrtoolkit
Modular shader to enhance you HMD clarity & sharpness with minimal performance impact.
Stars: ✭ 40 (-42.86%)
Mutual labels:  shader
objmc
python script to convert .OBJ files into Minecraft, rendering them in game with a core shader.
Stars: ✭ 59 (-15.71%)
Mutual labels:  shader
UnityOverDrawKun
overdraw check tool.
Stars: ✭ 39 (-44.29%)
Mutual labels:  shader
black hole shader
This project provides a WebGL2 shader to render a non-rotating black hole with an accretion disc and background stars.
Stars: ✭ 69 (-1.43%)
Mutual labels:  shader
BBearEditor-2.0
My own 3D engine & editor in order to learn graphics algorithms and game engine architecture.
Stars: ✭ 32 (-54.29%)
Mutual labels:  shader
ShaderToy.NET
Native shadertoy-compatible GLSL playground in .NET framework Environment
Stars: ✭ 53 (-24.29%)
Mutual labels:  shader
nvgen-shader-for-unity-speedtree
#NVJOB Shader for Unity SpeedTree. Old, Legacy.
Stars: ✭ 37 (-47.14%)
Mutual labels:  shader
ACLS-Shader
Unity HLSL VR ready "Toony/PBR hybrid" avatar shader for VRCHAT and similar platforms. Built with game industry standard toony appearances and adaptive to vrchat render constraints and reactive to common incorrect user generated map lighting.
Stars: ✭ 20 (-71.43%)
Mutual labels:  shader
stardust-SDK
Stardust SDK and sample app for Unity
Stars: ✭ 23 (-67.14%)
Mutual labels:  arcore

Google ARCore Playground

Android app on Google Play

Prequel

https://developers.google.com/ar/develop/

ARCore provides SDKs for many of the most popular development environments.
These SDKs provide native APIs for all of the essential AR features like motion tracking, environmental understanding, and light estimation. With these capabilities you can build entirely new AR experiences or enhance existing apps with AR features.

Running on your device

Google's ARCore developer preview for Android is awesome.
Unfortunately, Android phone like OnePlus is not on the supported list,
and apps built with ARCore exit at start on my device.

However, its hardware actually can run ARCore!

Using https://github.com/tomthecarrot/arcore-for-all, arCore can run on unsuported devices (only for test purposes)

What the sample does

planes

lines

Understand ARCore

ARCore main goal is to understand his environment, to acomplish this, following camera's video it try to find landmarks in space, then combine them with all device's hardware sensors to track motion and find our exactly position in this environment.

ARCore is capable of detecting planes (eg: ground / surface of a table), and attach anchor point on this environment. It means if you add an object at an exact point of your environment, for example adding a bottle (by OpenGL) in the middle of you table, and you move your phone to make it become out of screen, if you get back to the table, you will be able to see again at the same place your bottle.

ARCore, by the Session singleton class, provides the description of the environment.

At each instant (eg: when we want to draw), we ask ARCore for a Frame

A Frame is the explanation of the environment at the instant X

A Frame contains :

  • The list of Points he detects on the camera .getPointCloud()
  • An estimation of the light intensity .getLightEstimate()
  • The current view matrix .getViewMatrix(matrix, ...)

And the Session contains :

  • The list of detected Planes .getAllPlanes()
  • The list of all saved anchor points .getAllAnchors()
  • The current projection matrix .getProjectionMatrix(matrix, ...)

Then, an Anchor offer

  • a position in space named Pose

Matrix, Reloaded

Projection

As developer, the principal main objects we will need is Pose

Because a Pose contains, for a plane, an object of even a point :

  • The translation (tx, ty, tz) we need to apply on it
  • The rotation (rx, ry, rz) we need to apply on it

To move your object at the pose's exact position you just have to multiply your model's projection matrix by the Pose's matrix

OBJECT_3D.proj_matrix = OBJECT_3D.proj_matrix * OBJECT_3D.anchor.pose.proj_matrix

In java we will use the method `anchor.getPose().toMatrix(float[]) to obtain the anchor projection matrix

Camera

And, do not fo forget to update your camera matrix, to ensure your objects to be drawn & visible at the perfect pose in space

arcoreFrame.getViewMatrix(float[], 0);

Android app on Google Play
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].