All Projects → googlecreativelab → Lines Of Play

googlecreativelab / Lines Of Play

Licence: apache-2.0
Design domino art creations that interact with the real world using the ARCore Depth API.

Projects that are alternatives of or similar to Lines Of Play

Arcoreutils
Unity plugin that adds shadow and collision to ARCore.
Stars: ✭ 103 (+43.06%)
Mutual labels:  unity3d, arcore
Unity3d Simple Mobile Joystick
Mobile Joystick suitable for any types of game
Stars: ✭ 68 (-5.56%)
Mutual labels:  unity3d
Spatial Computing
Samples showing how to use Azure and AI services in Mixed Reality projects
Stars: ✭ 63 (-12.5%)
Mutual labels:  unity3d
Drawmeshwithmotionvectors
An example showing how to generate per-object motion vectors when using DrawMesh.
Stars: ✭ 65 (-9.72%)
Mutual labels:  unity3d
Unity Scene Query
A library to traverse and query the Unity scene to find particular objects, uses something similar to CSS selectors to identify game objects.
Stars: ✭ 63 (-12.5%)
Mutual labels:  unity3d
Unimic
A wrapper for Unity's Microphone class.
Stars: ✭ 65 (-9.72%)
Mutual labels:  unity3d
Ksframework
QQ Group:538722494,KSFramework = KEngine + SLua(or xLua) , Unity3D Framework/Toolsets focus on hot reload
Stars: ✭ 1,119 (+1454.17%)
Mutual labels:  unity3d
Unity Plane Mesh Splitter
Unity Plane Mesh Splitter
Stars: ✭ 71 (-1.39%)
Mutual labels:  unity3d
Extosc
extOSC is a tool dedicated to simplify creation of applications in Unity with OSC protocol usage.
Stars: ✭ 69 (-4.17%)
Mutual labels:  unity3d
Learning Unity Ecs 2
A bunch of small Unity projects where I explore and learn Unity's new ECS and Job System. Updated for the new API.
Stars: ✭ 65 (-9.72%)
Mutual labels:  unity3d
09 Zombierunner Original
First person shooter with Unity terrain and AI pathfinding (http://gdev.tv/cudgithub)
Stars: ✭ 64 (-11.11%)
Mutual labels:  unity3d
Awesome Unity Open Source On Github
A categorized collection of awesome Unity open source on GitHub (800+)
Stars: ✭ 1,124 (+1461.11%)
Mutual labels:  unity3d
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+16147.22%)
Mutual labels:  unity3d
Roadgen
Road network generation tool for Unity
Stars: ✭ 63 (-12.5%)
Mutual labels:  unity3d
4dviewstest
4DViews volumetric video + Unity
Stars: ✭ 71 (-1.39%)
Mutual labels:  unity3d
Unity Behavior Tree
Unity3D简单的战斗Demo,包含一套表现和逻辑完全分离的AI系统。AI系统包括FSM和行为树两种,行为树有一套编辑器可以配置。(QQ群:542703971)
Stars: ✭ 63 (-12.5%)
Mutual labels:  unity3d
Ecsrx.roguelike2d
An example of the Roguelike 2d game using EcsRx
Stars: ✭ 64 (-11.11%)
Mutual labels:  unity3d
Sentry Unity
Sentry SDK for Unity3d
Stars: ✭ 66 (-8.33%)
Mutual labels:  unity3d
Slash Framework
Provides both a low-level implementation of component-based entity systems and Unity3D integration for them.
Stars: ✭ 71 (-1.39%)
Mutual labels:  unity3d
Uclicker
A Unity Clicker Library
Stars: ✭ 71 (-1.39%)
Mutual labels:  unity3d

Lines of Play – an AR Experiment with Dominoes

Lines of Play is a domino AR experiment built with Unity highlighting recent advancements in ARCore. Unlike previous mobile AR applications limited to horizontal and vertical object placement, AR Core's Depth API allows game objects to interact with real objects in the player’s environment with near surface-level resolution.

Features of the player’s environment provide constraints (on collision) and serve as visual obstructions (occlusion). Players can use Lines of Play to rapidly create and modify lines, rings, paths, and turns of domino tiles.

Get it on Google Play

This app was developed in the Unity Editor and written in C# using the MonoDevelop framework and using ARFoundation. ARFoundation allows build to target both capable iOS and Android devices.

For a list of supported Android devices, check here; for supported iOS devices and more information check here.

Contents

What is the Depth API?

The ARCore Depth API enables depth map creation using a single camera without the use of peripheral hardware. The source gets different references to keep the depth textures up to date, retrieves focal length in pixels and transforms a camera-space vertex into world space.

A depth map is created by taking multiple images from different angles and comparing them as phone is moved and estimating the distance to every pixel. This depth-map determines which objects are closer to the player and thus whether a virtual object placed in the environment should appear overlapped by a real-world object.

Building the Project in Unity

Download the Unity Editor (this application was developed using 2018.4 (LTS)
Note: If this is your first time using the Unity Editor, install the Unity Hub

For Android

  1. Before building and running the app, ensure AR is enabled on your device.
  2. During download, install Android Build Support.
  3. Install Android SDK & NDK Tools and Open JDK.
  4. Download or clone this repository
  5. Add project in Unity Hubs and open project
  6. In Files ▸ Build Settings, Switch build target from PC, Mac and Linux Standalone to Android
  7. Navigate to Edit ▸ Project Settings ▸ Player ▸ Other Settings
  • Turn off Multithreaded Rendering
  • Change color space from Gamma to Linear
  • Turn off Autographics API
  • Enable Open GLES3
  • Set to minimum API level to Android 9.0 (Pie) API level 24 or higher
  • Set unique names for Product Name and Package Name
  1. In Player ▸ XR Settings check ARCore supported
  2. Connect device and allow for USB debugging
  3. Navigate to File ▸ Build Settings, make sure Scene/MainScene is checked in Scenes in Build queue
  4. Build and Run application.

For iOS

  1. During download, install iOS Build Support.
  2. Download or clone this repository
  3. Add project in Unity Hubs and open project
  4. In Files ▸ Build Settings, Switch build target from PC, Mac and Linux Standalone to iOS
  5. Navigate to Edit ▸ Project Settings ▸ Player ▸ Other Settings
  • Set string for Camera Usage Description
  • Enable Requires ARKit support
  • Set Target device to iPhone + iPad
  • Set Target minimum iOS version to 11.0
  • Change architecture to ARM64
  • Set unique names for Product Name and Package Name
  1. In Player ▸ XR Plug-in Management check ARKit for Plug-in Providers
  2. Navigate to File ▸ Build Settings, make sure Scene/MainScene is checked in Scenes in Build queue
  3. Build application and open .xsproj file in XCode to build.

Android troubleshooting for Unity

Click here for troubleshooting help. Also refer to the Unity developer documentation

Using the Placement Tools

After application start, once scene has been scanned, a phantom domino tile is raycast onto the ground plane to provide a preview of where the domino will appear when the user taps the screen. Players can place multiple domino tiles using this method or can toggle between pre- defined path placement modes in the application’s interface.

There are five different modes of domino path placement:

  • Single placement - Players can tap to place individual domino tiles (as previously mentioned)
  • Line placement - Players can draw a path by specifying two points A and B and generate a line of dominoes
  • Circle placement - Players can generate a ring of dominoes by specifying a center point of the circle and a point on its circumference
  • Square placement - Player can specify two points A and B, that comprise the diagonal of a square. This is referred to as a 90-degree turn
  • Draw to place - Players can freeform draw on surfaces and a path of equidistant dominos will generate

General Notes

  • For the Depth API to work, the user needs to move their phone for a few seconds before occlusion starts working reliably

  • Optimal range is 1-3 meters (near and far depth estimates are less accurate)

  • Dynamic objects do not immediately occlude. This adjusts when the scene becomes static

For more information about ARFoundation, check here.

Disclaimer

This is not an official Google product, but an AR Experiment developed at the Google Creative Lab. We’ll do our best to support and maintain this experiment but your mileage may vary.

We encourage open sourcing projects as a way of learning from each other. Please respect our and other creators’ rights, including copyright and trademark rights when present, when sharing these works and creating derivative work. If you want more info on Google's policy, you can find that here.

Contributors

Built by Jasmine Roberts at the Google Creative Lab.

License

Apache 2.0 License

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