{"id":81542,"date":"2026-08-24T16:28:03","date_gmt":"2026-08-24T10:58:03","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=81542"},"modified":"2026-09-15T10:33:09","modified_gmt":"2026-09-15T05:03:09","slug":"ios-the-power-of-arkit-face-points-capturing-part-2","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/","title":{"rendered":"iOS: The Power of ARKit: Face Points Capturing: Part- 2"},"content":{"rendered":"<p>In the <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.tothenew.com\/blog\/ios-arkit-with-swiftui\/\"><span style=\"color: #ff00ff;\">first part of the blog<\/span><\/a><\/span>, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device.<\/p>\n<p>In this part, we\u2019ll take that implementation further by using <strong>ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect<\/strong> that follows the user\u2019s lips in real time.<\/p>\n<p>The core implementation focuses on <strong>ARKit and SceneKit<\/strong>. SwiftUI is used only for the application flow and navigation, while ARKit handles face detection, facial geometry, tracking, and expressions.<\/p>\n<h1>Understanding ARKit Face Tracking<\/h1>\n<p>Apple\u2019s TrueDepth camera provides the depth information required for detailed face tracking. ARKit processes this information to detect the user\u2019s face and continuously track its position, shape, and expressions.<\/p>\n<p>ARKit can provide information such as:<\/p>\n<ul>\n<li><strong>Face position and orientation<\/strong><\/li>\n<li><strong>Facial geometry<\/strong><\/li>\n<li><strong>Eyes, nose, lips, and other facial regions<\/strong><\/li>\n<li><strong>Facial expressions<\/strong><\/li>\n<li><strong>Eye movement<\/strong><\/li>\n<\/ul>\n<p>This information can be used to create virtual makeup, face filters, avatars, and other augmented-reality experiences.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/21.png\" alt=\"Blog image\" width=\"344\" height=\"744\" \/><\/p>\n<h1>Organizing the Sample Project<\/h1>\n<p>Before implementing lip tracking, we\u2019ll organize the sample application so that multiple ARKit examples can be accessed from a single interface.<\/p>\n<p>The application contains a root controller responsible for navigation and a home screen that lists the available samples.<\/p>\n<p>For example:<\/p>\n<ul>\n<li><strong>Face Tracking<\/strong><\/li>\n<li><strong>Lip Tracking<\/strong><\/li>\n<li><strong>Other facial-feature experiments<\/strong><\/li>\n<\/ul>\n<p>Selecting an item opens its corresponding implementation.<\/p>\n<p>This structure keeps individual ARKit experiments separate and makes it easier to extend the project with additional features.<\/p>\n<h1>Starting an ARKit Face-Tracking Session<\/h1>\n<p>The face-tracking process starts with <span style=\"color: #ff00ff;\"><em>ARFaceTrackingConfiguration<\/em><\/span>.<\/p>\n<p>First, we should verify that face tracking is supported on the current device:<\/p>\n<pre>guard ARFaceTrackingConfiguration.isSupported else {\r\n\u00a0\u00a0\u00a0\u00a0return\r\n}\r\nlet configuration = ARFaceTrackingConfiguration()\r\nsceneView.session.run(configuration)<\/pre>\n<p>The configuration is passed to an <em><span style=\"color: #ff00ff;\">ARSession<\/span><\/em>, which processes the camera feed and tracks the user&#8217;s face.<\/p>\n<p>Once a face is detected, ARKit continuously provides updated tracking information as the user moves or changes facial expressions.<\/p>\n<h1>Understanding ARFaceAnchor<\/h1>\n<p>When ARKit detects a face, it creates an <span style=\"color: #ff00ff;\"><em>ARFaceAnchor<\/em><\/span>.<\/p>\n<p>ARFaceAnchor provides important information about the tracked face, including:<\/p>\n<ul>\n<li><span style=\"color: #ff00ff;\">transform<\/span> \u2014 the position and orientation of the face.<\/li>\n<li><span style=\"color: #ff00ff;\">geometry<\/span> \u2014 the 3D geometry of the face.<\/li>\n<li><span style=\"color: #ff00ff;\">blendShapes<\/span> \u2014 information about facial expressions.<\/li>\n<li>Eye-related properties \u2014 information about eye position and movement.<\/li>\n<\/ul>\n<p>For our makeup implementation, <span style=\"color: #ff00ff;\">geometry<\/span> and <span style=\"color: #ff00ff;\">blendShapes<\/span> are particularly useful.<\/p>\n<p>The geometry represents the facial surface, while blend shapes describe changes in facial expressions.<\/p>\n<h1>Understanding ARFaceGeometry<\/h1>\n<p>ARKit represents the tracked face using <span style=\"color: #ff00ff;\"><em>ARFaceGeometry<\/em><\/span>, a 3D mesh containing:<\/p>\n<ul>\n<li><strong>Vertices<\/strong> \u2014 points defining the facial surface.<\/li>\n<li><strong>Triangle indices<\/strong> \u2014 connections between vertices that form the mesh.<\/li>\n<li><strong>Texture coordinates<\/strong> \u2014 define how a 2D texture maps onto the 3D surface.<\/li>\n<\/ul>\n<p>As the user moves or changes expressions, ARKit updates the geometry so that the mesh continues to match the user&#8217;s face.<\/p>\n<p>This dynamic mesh is what allows virtual content to remain attached to the face.<\/p>\n<h1>Rendering the Face with ARSCNFaceGeometry<\/h1>\n<p>For SceneKit-based implementations, ARKit provides <em><span style=\"color: #ff00ff;\">ARSCNFaceGeometry<\/span><\/em>.<\/p>\n<p>We can create the face geometry using the Metal device associated with the AR view:<\/p>\n<pre>let faceGeometry = ARSCNFaceGeometry(\r\n\u00a0\u00a0\u00a0\u00a0device: sceneView.device!\r\n)<\/pre>\n<p>The geometry can then be attached to an <span style=\"color: #ff00ff;\"><em>SCNNode<\/em><\/span> and rendered in the AR scene.<\/p>\n<p>Whenever ARKit provides updated face information, the geometry can be refreshed:<\/p>\n<pre>faceGeometry.update(from: faceAnchor.geometry)<\/pre>\n<p>This keeps the rendered mesh synchronized with the user&#8217;s facial movement.<\/p>\n<h1>Understanding UV Mapping<\/h1>\n<p>Now that we have a 3D face mesh, we need a way to place a 2D makeup image onto it.<\/p>\n<p>This is where <strong>UV mapping<\/strong> is used.<\/p>\n<p>UV mapping establishes a relationship between the 3D surface and a 2D texture. ARKit provides texture coordinates as part of <span style=\"color: #ff00ff;\"><em>ARFaceGeometry<\/em><\/span>, allowing a texture to be mapped to the appropriate facial regions.<\/p>\n<p>For our lipstick example, the texture is designed so that its lip area corresponds to the lip region of the face mesh.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/22.jpg\" alt=\"Blog image\" width=\"637\" height=\"637\" \/>\u00a0 \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/23.png\" alt=\"Blog image\" width=\"296\" height=\"640\" \/><\/p>\n<h1><span style=\"font-size: 1.5rem;\">Creating the Lipstick Texture<\/span><\/h1>\n<p>We can create a lipstick texture using Photoshop or another image-editing tool.<\/p>\n<p>The texture should follow the UV layout of the face mesh. The desired lipstick color is placed over the corresponding lip region, while the remaining areas can remain transparent.<\/p>\n<p>Once created, this texture can be applied to the material of the face geometry.<\/p>\n<p>The important part is that the texture is attached to the <strong>3D face mesh<\/strong>, rather than being placed at a fixed position on the camera screen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/24.jpg\" alt=\"Blog image\" width=\"540\" height=\"540\" \/> \u00a0<img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/25-1.png\" alt=\"Blog image\" width=\"595\" height=\"555\" \/><\/p>\n<h1><span style=\"font-size: 1.5rem;\">Applying the Lipstick Effect<\/span><\/h1>\n<p>When the lipstick texture is applied to the tracked face mesh, ARKit continuously updates the mesh as the user moves.<\/p>\n<p>If the user turns their head, opens their mouth, or changes expressions, the mesh changes accordingly. Since the lipstick texture is mapped to that mesh, the effect follows the lips naturally.<\/p>\n<p>This creates a real-time virtual makeup experience without manually calculating the lipstick position for every frame.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/26.png\" alt=\"Blog image\" width=\"339\" height=\"733\" \/>\u00a0 \u00a0<img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/27.png\" alt=\"Blog image\" width=\"339\" height=\"734\" \/><\/p>\n<h1>Tracking Facial Expressions<\/h1>\n<p>Face movement is not limited to head position. Users can also smile, open their mouth, or make other expressions.<\/p>\n<p>ARKit exposes these changes through the <span style=\"color: #ff00ff;\"><em>blendShapes<\/em><\/span> property of <span style=\"color: #ff00ff;\"><em>ARFaceAnchor<\/em><\/span>.<\/p>\n<p>For example:<\/p>\n<pre>if let jawOpen = faceAnchor.blendShapes[.jawOpen] as? Float {\r\n \u00a0\u00a0\u00a0print(\"Jaw movement: (jawOpen)\")\r\n}<\/pre>\n<p><span style=\"color: #ff00ff;\"><em>ARBlendShapeLocation<\/em><\/span> provides predefined identifiers for different facial movements and expressions.<\/p>\n<p>These values can be used to trigger animations, modify visual effects, or respond to specific facial movements.<\/p>\n<p>For our lipstick example, the face mesh handles the surface alignment, while blend-shape information can be used for additional expression-based behavior.<\/p>\n<h1>Why Does It Work on Different Faces?<\/h1>\n<p>Every person has a different facial structure, so how can the same lipstick texture work for multiple users?<\/p>\n<p>ARKit solves this by continuously adapting the face mesh to the detected user&#8217;s facial shape and expressions.<\/p>\n<p>The mesh topology and texture-coordinate layout remain consistent, while the mesh vertices are adjusted according to the user&#8217;s face.<\/p>\n<p>Therefore, we can create the lipstick texture once and reuse it across different users.<\/p>\n<p>This makes the technique suitable for reusable virtual makeup assets rather than creating a separate texture for every facial structure.<\/p>\n<h1><span style=\"font-size: 1.5rem;\">Extending <\/span><span style=\"font-size: 1.5rem;\">the Technique<\/span><\/h1>\n<p>Once the basic texture-mapping approach is implemented, the same concept can be used for many other effects:<\/p>\n<ul>\n<li><strong>Lipstick<\/strong><\/li>\n<li><strong>Blush<\/strong><\/li>\n<li><strong>Eyeliner<\/strong><\/li>\n<li><strong>Eyeshadow<\/strong><\/li>\n<li><strong>Face paint<\/strong><\/li>\n<li><strong>Facial tattoos<\/strong><\/li>\n<li><strong>Other face filters<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/14.png\" alt=\"Blog image\" width=\"345\" height=\"746\" \/>.\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/15.png\" alt=\"Blog image\" width=\"345\" height=\"747\" \/><\/p>\n<p>The overall process remains similar:<\/p>\n<p><strong>Create the texture \u2192 Map it using the face UV layout \u2192 Apply it to the tracked face mesh \u2192 Let ARKit update the mesh in real time.<\/strong><\/p>\n<h1><span style=\"font-size: 1.5rem;\">Putting the Implementation Together<\/span><\/h1>\n<p>In our sample application, the main components are separated according to their responsibilities.<\/p>\n<p>The navigation layer manages the available samples, while the ARKit implementation is responsible for tracking and rendering the face.<\/p>\n<p>The important ARKit components involved are:<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 168px;\">\n<tbody>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Component<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Purpose<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARFaceTrackingConfiguration<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Configures the AR session for face tracking<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARSession<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Runs the AR tracking session<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARFaceAnchor<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Provides information about the detected face<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARFaceGeometry<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Represents the tracked 3D face mesh<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARSCNFaceGeometry<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Provides a SceneKit representation of the face mesh<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #ff00ff;\">ARBlendShapeLocation<\/span><\/td>\n<td style=\"width: 50%; height: 24px;\"><span style=\"color: #000000;\">Identifies individual facial expressions and movements<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>SwiftUI can be used around these components to provide the application&#8217;s navigation and supporting UI, but the actual facial tracking and rendering are handled by ARKit and SceneKit.<\/p>\n<h1>Source Code<\/h1>\n<p>The complete source code for this implementation is available in the Git repository below:<\/p>\n<p>GitLab Repository: <span style=\"color: #ff00ff;\"><a style=\"color: #ff00ff;\" href=\"https:\/\/gitlab.com\/ios-tester\/arkitwithswiftui\/\">Sample Code<\/a><\/span><\/p>\n<p>You can clone the repository to explore the complete ARKit face-tracking implementation, including the lip-tracking and virtual makeup examples.<\/p>\n<h1><span style=\"font-size: 1.5rem;\">Conclusion<\/span><\/h1>\n<p>In this part of the series, we moved beyond basic face-point detection and created a <strong>real-time virtual lipstick effect using ARKit.<\/strong><\/p>\n<p>We explored how <span style=\"color: #ff00ff;\"><em>ARFaceTrackingConfiguration<\/em><\/span> starts a face-tracking session, how <span style=\"color: #ff00ff;\"><em>ARFaceAnchor<\/em><\/span> provides information about the detected face, and how <span style=\"color: #ff00ff;\"><em>ARFaceGeometry<\/em><\/span> represents the face as a dynamic 3D mesh.<\/p>\n<p>We also used <span style=\"color: #ff00ff;\"><em>ARSCNFaceGeometry<\/em><\/span> to render the mesh and explored how UV mapping connects a 2D makeup texture to the 3D facial surface.<\/p>\n<p>The major advantage is that the same texture can be reused across different users because ARKit continuously adapts the face geometry to match the detected face.<\/p>\n<p>SwiftUI provides the supporting application flow, while <strong>ARKit and SceneKit handle the core face tracking and rendering.<\/strong><\/p>\n<p>In the next part, we\u2019ll build on this foundation and explore additional facial features and ARKit-based effects.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real [&hellip;]<\/p>\n","protected":false},"author":1898,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":10,"footnotes":""},"categories":[1400],"tags":[3489,7944,3488,5460],"class_list":["post-81542","post","type-post","status-publish","format-standard","hentry","category-ios","tag-ar","tag-arkit","tag-augmentedreality","tag-swiftui"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Sandeep Kumar\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#article\",\"name\":\"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog\",\"headline\":\"iOS: The Power of ARKit: Face Points Capturing: Part- 2\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/sandeep-kumar3\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/wp-ttn-blog\\\/uploads\\\/2026\\\/08\\\/21.png\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#articleImage\"},\"datePublished\":\"2026-08-24T16:28:03+05:30\",\"dateModified\":\"2026-09-15T10:33:09+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#webpage\"},\"articleSection\":\"iOS, AR, ARKit, AugmentedReality, SwiftUI\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/ios\\\/#listItem\",\"name\":\"iOS\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/ios\\\/#listItem\",\"position\":2,\"name\":\"iOS\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/ios\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#listItem\",\"name\":\"iOS: The Power of ARKit: Face Points Capturing: Part- 2\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#listItem\",\"position\":3,\"name\":\"iOS: The Power of ARKit: Face Points Capturing: Part- 2\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/ios\\\/#listItem\",\"name\":\"iOS\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/sandeep-kumar3\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/sandeep-kumar3\\\/\",\"name\":\"Sandeep Kumar\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/60b5bfdb-3225-4e0b-ad06-5fb32f26cbef_Sandeep-Kumar-Profile-Pitcure.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Sandeep Kumar\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/\",\"name\":\"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog\",\"description\":\"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\\u2019ll take that implementation further by using ARKit\\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\\u2019s lips in real\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/ios-the-power-of-arkit-face-points-capturing-part-2\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/sandeep-kumar3\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/sandeep-kumar3\\\/#author\"},\"datePublished\":\"2026-08-24T16:28:03+05:30\",\"dateModified\":\"2026-09-15T10:33:09+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog","description":"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real","canonical_url":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#article","name":"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog","headline":"iOS: The Power of ARKit: Face Points Capturing: Part- 2","author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/sandeep-kumar3\/#author"},"publisher":{"@id":"https:\/\/www.tothenew.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2026\/08\/21.png","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#articleImage"},"datePublished":"2026-08-24T16:28:03+05:30","dateModified":"2026-09-15T10:33:09+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#webpage"},"isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#webpage"},"articleSection":"iOS, AR, ARKit, AugmentedReality, SwiftUI"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.tothenew.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/ios\/#listItem","name":"iOS"}},{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/ios\/#listItem","position":2,"name":"iOS","item":"https:\/\/www.tothenew.com\/blog\/category\/ios\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#listItem","name":"iOS: The Power of ARKit: Face Points Capturing: Part- 2"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#listItem","position":3,"name":"iOS: The Power of ARKit: Face Points Capturing: Part- 2","previousItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/category\/ios\/#listItem","name":"iOS"}}]},{"@type":"Organization","@id":"https:\/\/www.tothenew.com\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/www.tothenew.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.tothenew.com\/blog\/author\/sandeep-kumar3\/#author","url":"https:\/\/www.tothenew.com\/blog\/author\/sandeep-kumar3\/","name":"Sandeep Kumar","image":{"@type":"ImageObject","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/60b5bfdb-3225-4e0b-ad06-5fb32f26cbef_Sandeep-Kumar-Profile-Pitcure.jpeg","width":96,"height":96,"caption":"Sandeep Kumar"}},{"@type":"WebPage","@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#webpage","url":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/","name":"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog","description":"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/#breadcrumblist"},"author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/sandeep-kumar3\/#author"},"creator":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/sandeep-kumar3\/#author"},"datePublished":"2026-08-24T16:28:03+05:30","dateModified":"2026-09-15T10:33:09+05:30"},{"@type":"WebSite","@id":"https:\/\/www.tothenew.com\/blog\/#website","url":"https:\/\/www.tothenew.com\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.tothenew.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog","og:description":"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real","og:url":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/","og:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"iOS: The Power of ARKit: Face Points Capturing: Part- 2 | TO THE NEW Blog","twitter:description":"In the first part of the blog, we explored the fundamentals of face tracking with ARKit and learned how facial information can be captured using a physical iOS device. In this part, we\u2019ll take that implementation further by using ARKit\u2019s face-tracking capabilities to create a virtual lipstick effect that follows the user\u2019s lips in real","twitter:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"81542","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2026-08-16 18:06:12","updated":"2026-09-15 05:03:11","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.tothenew.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.tothenew.com\/blog\/category\/ios\/\" title=\"iOS\">iOS<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tiOS: The Power of ARKit: Face Points Capturing: Part- 2\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.tothenew.com\/blog"},{"label":"iOS","link":"https:\/\/www.tothenew.com\/blog\/category\/ios\/"},{"label":"iOS: The Power of ARKit: Face Points Capturing: Part- 2","link":"https:\/\/www.tothenew.com\/blog\/ios-the-power-of-arkit-face-points-capturing-part-2\/"}],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1898"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=81542"}],"version-history":[{"count":26,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81542\/revisions"}],"predecessor-version":[{"id":83427,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/81542\/revisions\/83427"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=81542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=81542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=81542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}