
Get the complete source code for every lesson from the get up page, plus 3d models, website assets, an ar cheat sheet, and post-section quizzes.
Master how to use the ARCore and Sceneform course to build Android AR apps through an initial setup, a source-code pdf, and four apps learned in chronological order.
Set up an Android Studio project for ARCore and Sceneform, configure Gradle and manifest with camera permission and AR features, and add an AR fragment to the activity layout.
Run AR apps in the emulator by installing emulator-specific Google Play services and deploying the app via adb. Then install Sceneform plugin in Android Studio to work with 3D models.
Learn to build an ARCore and Sceneform layout for Android with a coordinate layout and bottom sheet to display and place 3d models, plus a camera floating action button.
Set up the bottom sheet in the activity using BottomSheetBehavior.from(view), configure a 50 dp peak height from dp to px. Add a callback to keep the sheet front during slides.
Import external 3D furniture models into Android Studio, convert OBJ files to Sceneform assets, and organize sample data, textures, and thumbnails for use in the app.
Create a model data class and recycler view adapter, design a single item layout, and configure the main activity to display chair, piano, and table models in a horizontal list.
Select models from the recycler view using a mutable life data wrapper for the selected model and observe changes in the main activity to update the model title.
Load 3D models from resources with a private function using model and view renderers. Use a complete future and then accept callback to finalize loading and attach a delete button.
Spawn and attach a loaded model to an anchor in the AR scene, using a transformable node hierarchy to position, resize, and toggle visibility of 3d objects.
implement double-tap spawning for ar models by tracking tap times and a one-second tolerance; set a first tap time, validate second tap within tolerance, and caution about timing limitations.
Track and update all view nodes each frame to make them look at the user with quaternion look rotation by computing direction from node to camera.
Develop camera support to capture photos of the AR scene using a Photo Saver that generates a time-based filename and saves a bitmap via Pixel Copy.
save photos on Android API 29+ by using ContentResolver and ContentValues with MediaStore to write JPEG images to the gallery, including API level checks and file naming.
Add external storage write permission alongside camera permission by creating a custom fragment that overrides getAdditionalPermissions, then update the activity layout and manifest to enable saving photos.
Build a reusable video recorder class to capture AR scenes in Android. Use a media recorder with multiple quality levels and a surface input for recording.
Configure the video recorder quality, select camcorder profiles, and adjust video size based on orientation to enable starting and stopping AR scene recordings in Android.
Implement two video-saving functions to store AR scene recordings in the gallery across api levels. Update the activity to start, stop, and save videos with user feedback.
Fix gallery visibility on API level below 28 by using media scanner to scan saved files and notify gallery, and track current path in the video recorder to trigger scans.
Set initial scales for chair and table to fit the scene, rebuild and run the app, and explore improved spawning and remote model loading in augmented reality.
Learn to set up a custom face AR fragment for ARCore, disabling plane discovery and instructions, forcing the front camera, and enabling augmented face mode mesh 3D for facial filters.
Load a face mesh model and its texture by building a model renderable and texture, wiring sources, using complete futures, and disabling shadows for the face renderer.
Detect faces with ARCore and apply a live filter by using a hash map of augmented faces and augmented face notes containing position, rotation, and scale.
Enable users to choose an image from the gallery for ARCore image detection, creating a custom augmented image database and anchoring 3D models to real-world images.
Use the Aikau image tool to evaluate image recognition scores and generate an augmented image database for ARCore apps, stored in assets to shrink APK size.
Import and read a pre-created image database from android raw resources, create an augmented image database, and toggle between using the predefined database or a user-selected image.
Import a 3d model and textures into an ARCore with Sceneform Android project, configure asset paths and animation, then build to view the bedrail animation in raw.
Create a custom augmented image node by extending anchor node, load a 3D model with a completive future, and scale it to fit the augmented image using bounding box calculations.
Animate the model by creating a start animation function using vidrio_animation data to drive a model animator, and set it to repeat infinitely on spawn in the augmented image scene.
Detect augmented images with ARCore in each frame, spawn models on detected targets, and manage an augmented image map using a hash map with frame-by-frame updates and tracking state.
Create a custom rotating node in ARCore, using quaternions and an object animator to rotate around the y axis, enabling attached 3D models to orbit the user.
Import Star Wars 3D models into an ARCore Sceneform project by placing files in sample data/models, then rebuild to render the Star Destroyer, Silencer, and X Wing.
Create a base spaceship class (abstract-like) with degrees per second, radius, height, and rotation degrees; define singletons for Star Destroyer, Silencer, and X wing.
Load and place spaceship models in AR scene by anchoring them to an anchor with a rotating node. Tap the floor to spawn a random spaceship and set its position.
Let spaceships fly around user by updating each rotating node in list to camera's x and z, with a fixed y height, in every frame, using ARCore and Sceneform.
Learn to load 3D models at runtime from Firebase storage, converting remote assets to galbi format and spawning them in an ARCore Sceneform app.
______________________________________________________________________________________________________________________________________________
DISCLAIMER: The Sceneform plugin that is needed for this course is not available and will not be available for Android Studio 4.1 and higher. If you a version below that, you can take this course, otherwise you can't.
______________________________________________________________________________________________________________________________________________
Welcome to the World of Augmented Reality!
Let it be an app to...
...test furniture in your house
...detect popular attractions to display additional information
...try on clothes from online shops
...apply funny filters on people's faces
All this stuff that so much sounds like future is becoming more and more reality. To keep up with the rapidly changing tech world, you need to be constantly learning new technologies. Augmented Reality is one of those highly trending technologies that especially takes over the mobile market.
This course starts to give you the perfect introduction to Augmented Reality with Android and gets more advanced while you follow through it. I designed it in a way that you only need basic knowledge about Android Development with Kotlin to dive into it.
Every single line of code that is not trivial will be explained!
What do you get with this course?
This course will contain the complete source code for every single lesson, so you don't need to worry about encountering an error and not being able to continue that part of the course. You can just visit my GitHub and select the corresponding lesson to get the source code with which you can easily continue.
You will get a complete cheat sheet for all the important new AR terms mentioned in this course. Of course, I will explain them in very detail in the course, but if you encounter them again and want to quickly look up what they meant, you can easily do that with this cheat sheet.
Also, after each section, you will get a quiz to solidify what you have just learned.
Of course, you will get all the 3D graphics, textures and website links I use in this course. However, feel free to choose your own ones.
What will we make together in this course?
In the first part, you will learn how to set up Android Studio so you're ready to use AR. I will also show you how you can easily test your AR apps on your Android Emulator, so you don't always have that annoying cable plugging for USB-Debugging.
In the second part, you will understand all the basics of Augmented Reality. We will build a real app with which you can try out furniture 3D models in your own house. Of course, you can use your very own models here and also decide how many models you want to include in that app. In this app you will learn how to place 3D objects in the AR scene, move them, rotate them, change their size and delete them. And that is not enough! You will also learn how you can easily take pictures and videos of your AR scene. Moreover, you will get familiar with 3D specific terms like WorldSpace, LocalSpace, Vector3, Quaternions and more.
The third part covers a cool app that will apply a funny fruit filter on faces your phone's camera detects. This is very similar to Snapchat or Instagram. You will be able to use your very own filter and graphics here.
In the fourth part, all the Pokémon fans out there can be excited! We will detect pre-defined real life images that will automatically be detected in the app to let a cool animated Pokémon spawn on them! In my example, I spawn the model on book covers, but you can choose any surface that has some uniqueness and can therefore be recognized. You will be able to move the book around and carry your very own personal Pokémon through your house.
Finally, in the last part of this course, you will let Star Wars spaceships fly around your house! The intention of that app is to teach you how to animate 3D models in the AR scene and let them fly around you. In this last part, you will get a deeper understanding of 3D calculations with Vectors and Quaternions to implement your very own behaviour of moving.
And that is not enough! You will also get a bonus part in which I show you, how we can dynamically load 3D models remotely from Google Firebase. You will be able to choose any URL that leads to a 3D model and download it at runtime in your app to show it. I use Firebase for that because it is very popular in the world of Android, but feel free to use your own sources.
Let's not longer wait and dive into the world of Augmented Reality together!