> Markdown version of [/videos/136-ar-kit-intro-placing-3d-objects-in-a-scene-and-interacting-with-them-in-real-time?t=17](https://www.wearedevelopers.com/videos/136-ar-kit-intro-placing-3d-objects-in-a-scene-and-interacting-with-them-in-real-time?t=17). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # AR Kit intro - placing 3D objects in a scene and interacting with them in real-time Build an interactive augmented reality app in under 200 lines of code. Master ARKit raycasting and SceneKit to seamlessly anchor 3D objects into physical environments. - **Speakers:** Nermin Sehic - **Event:** WeAreDevelopers LIVE - **Published:** April 28, 2021 - **Duration:** 48:21 - **URL:** https://www.wearedevelopers.com/videos/136-ar-kit-intro-placing-3d-objects-in-a-scene-and-interacting-with-them-in-real-time ## Summary This session provides a comprehensive introduction to building augmented reality experiences for iOS using ARKit and SceneKit. It begins by demystifying the fundamental differences between AR and virtual reality, exploring how ARKit uses device sensors like cameras and accelerometers to evaluate environments and augment the real world with 3D information. By reviewing the evolution of ARKit's capabilities—from tracking simple horizontal planes to leveraging LiDAR for advanced 3D room meshing—the narrative establishes the foundational requirements for crafting practical AR applications. Developers are introduced to rendering framework options, noting that while Apple's newer RealityKit is a Swift-native powerhouse, SceneKit remains highly approachable for rendering conventional 3D objects. Transitioning to practical implementation, the core concepts of spatial architecture are unpacked, highlighting 3D coordinate systems, gravity alignment, and node-based scene graphs. An essential developmental insight is effectively structuring parent-child nodes: attaching an object as a child to another animated object avoids writing double animation code, keeping the scene logic DRY. By initializing an AR session, the framework calibrates spatial constraints and assigns a precise device origin (0,0,0 coordinate), dictating how physical space is digitally interpreted. With Apple's shift toward "raycasting" over arbitrary hit tests, dynamically measuring distances and placing interactive 3D objects against detected surfaces has become significantly streamlined. The tutorials anchor these principles using a "Hello World" orientation displaying spatial feature points, followed by a localized application mimicking "IKEA Place." Through fewer than 200 lines of focused logic, the demonstration highlights seamless flat surface tracking and furniture placement. Critical takeaways for testing and optimization include: AR tracking cannot be tested on an iOS simulator and requires physical device compilation, debugging benefits greatly from enabling feature point visualizers to understand environmental mapping, utilizing diffuse and specular configurations creates realistic shadows compared to generic flat renders, and spatial logic behaves best when restricted strictly to "plane anchors." **Keywords:** augmented reality development, arkit framework integration, scenekit 3d rendering, ios coordinate systems, ar session management, raycasting object placement, horizontal plane detection, node-based scene graphs, realitykit alternative, spatial feature points, arkit hit testing comparison, lidar environment meshing, dynamic texture diffusing, plane anchor tracking, iphone physical calibration ## Chapters 1. **Introduction to building iOS augmented reality applications** (00:17) — An introductory outline covers initial device configurations alongside placing and interacting with 3D models. 1. **Differentiating augmented reality sensing from virtual reality** (02:27) — ARKit gathers hardware sensor input to augment real-world scenes rather than creating entirely new virtual environments. 1. **Evolution of ARKit native features and tracking capabilities** (03:25) — The progression expands plane detection, image scaling, face tracking, and complex mesh generation powered by LiDAR. 1. **Hardware prerequisites and development level debugging limitations** (05:48) — Device hardware specifications and optimal physical staging conditions are critical for compiling functionality safely. 1. **Rendering frameworks compatible with ARKit graphic development** (07:06) — Comparisons contrast SceneKit, SpriteKit, Metal, and RealityKit libraries prioritizing asset integrations inside AR sessions. 1. **Understanding the three-dimensional rendering coordinate system layouts** (09:21) — The geometric x, y, and z axes calculate measurements referencing an established initialization focal point. 1. **Configuring tracking session alignment orientation via device gravity** (12:56) — Gravitational inputs function as the most dependable fallback mapping property determining relative alignments. 1. **Managing 3D objects recursively in the SceneKit hierarchy** (14:16) — Nesting geometries natively streamlines synchronized group animations utilizing root inheritance. 1. **Placing objects securely using dynamic coordinate raycasting operations** (16:33) — Casting algorithms calculate distances intercepting flat matrices providing verified destination vectors automatically. 1. **Reviewing a foundational iOS augmented reality demonstration application** (18:02) — Deploying the starting baseline exposes internal device mapping structures painting active feature locations. 1. **Writing the SceneKit code executing Hello World properties** (19:35) — Defining variables configures standard shadow algorithms natively integrating custom colorized materials wrapping base geometries. 1. **Demonstrating interactive digital placement spanning real furniture spaces** (25:15) — Scanning open floors reveals tracking patterns supporting real-time spatial mounting utilizing robust dynamic scale logic. 1. **Managing downloaded 3D geometry assets and model classifications** (28:53) — Parsing grouped file structures translates pre-built visual materials feeding selection states efficiently. 1. **Initializing customized tracking views handling restricted plane targets** (32:29) — Implementing gesture handlers filters unnecessary topological scanning reserving resources strictly optimizing horizontal bounds. 1. **Leveraging delegate events for capturing architectural anchor updates** (35:49) — Continuous listener loops evaluate discovered structural geometries redrawing valid positional boundaries gracefully. 1. **Applying customized digital textures onto generated SceneKit planes** (40:07) — Scaling image coordinates translates mapped tracking areas supporting accurately rotated dimensional boundaries safely. 1. **Planning advanced application interaction functionalities and scaling logic** (44:11) — Exploring expansion strategies advocates analyzing depth limits ensuring large items resist tiny platforms automatically. 1. **Locating project source code bases covering future enhancements** (47:31) — Committing codebase resources freely provisions reusable architectures supporting external developers implementing sophisticated extensions easily. ## Related Moments - [Inside-out tracking and introducing mobile AR frameworks](https://www.wearedevelopers.com/videos/1117-xr-demystified-separating-facts-from-fiction-in-2024) (from "XR Demystified: Separating Facts from Fiction in 2024") - [Leveraging the presence platform for spatial development](https://www.wearedevelopers.com/videos/948-unleashing-a-new-reality-the-transformative-power-of-xr-technologies-for-developers) (from "Unleashing a New Reality: The Transformative Power of XR Technologies for Developers") - [Introduction to the concept of augmented reality](https://www.wearedevelopers.com/videos/160-cross-platform-augmented-reality-development-with-react-native) (from "Cross platform Augmented Reality development with React Native") - [Exploring Unity AR Foundation for advanced tracking logic](https://www.wearedevelopers.com/videos/160-cross-platform-augmented-reality-development-with-react-native) (from "Cross platform Augmented Reality development with React Native") - [Debunking XR misconceptions with practical manufacturing examples](https://www.wearedevelopers.com/videos/1117-xr-demystified-separating-facts-from-fiction-in-2024) (from "XR Demystified: Separating Facts from Fiction in 2024") - [Applying lighting and material textures to AR scenes](https://www.wearedevelopers.com/videos/160-cross-platform-augmented-reality-development-with-react-native) (from "Cross platform Augmented Reality development with React Native") ## Related Articles - [Exploring AI: Opportunities and Risks for Developers](https://www.wearedevelopers.com/magazine/522-exploring-ai-opportunities-and-risks-for-developers) - [Dev Digest 132 - Binging WADFlix?](https://www.wearedevelopers.com/magazine/473-dev-digest-132-binging-wadflix) - [Navigating the AI Shift](https://www.wearedevelopers.com/magazine/629-navigating-the-ai-shift) - [Dev Digest 118 - not a total recall](https://www.wearedevelopers.com/magazine/452-dev-digest-118-not-a-total-recall) ## Related Jobs - [Founding Mobile Engineer (iOS)](https://www.wearedevelopers.com/jobs/ext/1648532-founding-mobile-engineer-ios) at **Almedia** - [Senior React Native Developer](https://www.wearedevelopers.com/jobs/ext/1518176-senior-react-native-developer) at **Almedia** - [Staff Developer Advocate, GitHub Security Lab](https://www.wearedevelopers.com/jobs/ext/1921051-staff-developer-advocate-github-security-lab) at **GitHub** - [Staff Software Engineer, Copilot Experiences](https://www.wearedevelopers.com/jobs/ext/164361-staff-software-engineer-copilot-experiences) at **GitHub** - [Senior Architect Realtime Bare-Metal Software](https://www.wearedevelopers.com/jobs/ext/381559-senior-architect-realtime-bare-metal-software) at **ZEISS Group** - [Principal Software Engineer, Enterprise AI Platform](https://www.wearedevelopers.com/jobs/ext/1467292-principal-software-engineer-enterprise-ai-platform) at **GitHub**