شرکت اپل در رویداد خرداد ماه 1396 خود، به معرفی نسل جدیدی از محصولاتش نظیر مکبوک و آیمک پرداخت به طوری که معرفی سیستمعامل iOS 11 و ویژگیهای جدیدش، یکی از شگفتیهای این رویداد بود. یادگیری ماشینی و هوش مصنوعی عباراتی بودند که بارها توسط ارائهکنندگان استفاده شد اما علاوه بر همهٔ اینها، اپل به بررسی اجمالی کیت واقیعت افزودهٔ خود تحت عنوان ARKit نیز پرداخت.
در سیستمعامل iOS 11، اپل فریمورک جدیدی را با نام ARKit معرفی نمود که به کاربران این امکان را میدهد تا به سادگی بتوانند به خلق تجربههای واقعیت افزوده غیرموازی در آیفون و آیپد بپردازند. با ترکیب اشیاء دیجیتالی و اطلاعات محیط پیرامون، ARKit اپلیکشینهایی را در پس صفحه نمایش اجرا نموده و قابلیت تعامل آنها با دنیای واقعی را فراهم میکند. همچنین لازم به ذکر است نسخهٔ iOS 12، با نسخهٔ جدید این کیت تحت عنوان ARKit 2 همراه است.
آشنایی با برخی ویژگیهای شاخص ARKit
ARKit از تکنولوژی بصری بسیار دقیقی با نام Visual Inertial Odometry یا به اختصار VIO برای تعامل با دنیای اطراف بهره میبرد به طوری که VIO با بهرهگیری از دوربینهای بسیار دقیق و تکنولوژی CoreMotion Data، میتواند هنگام حرکت در فضای یک اتاق، با دقت بسیار بالا و بدون نیاز به هیچگونه کالیبراسیون جانبی و اضافی، چگونگی حرکات و تغییرات را ثبت و پردازش نماید.
با ARKit، دیوایسهایی همچون آیفون و آیپد میتوانند صحنهٔ ثبتشده توسط دوربین را پردازش نموده و سطوح افقی موجود در اتاق نظیر میزها، کف اتاق و ... را پیدا کرده و دنبال نمایند. همچنین دقت بالا در ثبت تصاویر، این امکان را فراهم میکند تا اشیاء مجازی بتوانند حتی بر روی سطوح بسیار کوچک نیز شبیهسازی شوند. ویژگی دیگر این تکنولوژی امکان بررسی و محاسبه میزان نور موجود در صحنه و در صورت نیاز اصلاح آن برای پیادهسازی واقعیت افزوده است.
به عنوان مثال، نمونه کد زیر رِفرِنسی به اندازهٔ واقعی یک تصویر ایجاد میکند:
guard let imageAnchor = anchor as? ARImageAnchor else { return }
let referenceImage = imageAnchor.referenceImage
updateQueue.async {
// Create a plane to visualize the initial position of the detected image.
let plane = SCNPlane(width: referenceImage.physicalSize.width,
height: referenceImage.physicalSize.height)
let planeNode = SCNNode(geometry: plane)
planeNode.opacity = 0.25
/*
`SCNPlane` is vertically oriented in its local coordinate space, but
`ARImageAnchor` assumes the image is horizontal in its local space, so
rotate the plane to match.
*/
planeNode.eulerAngles.x = -.pi / 2
/*
Image anchors are not tracked after initial detection, so create an
animation that limits the duration for which the plane visualization appears.
*/
planeNode.runAction(self.imageHighlightAction)
// Add the plane visualization to the scene.
node.addChildNode(planeNode)
}
ARKit بر روی آخرین پردازندههای اپل اجرا میشود و این در حالی است که این پردازندهها دارای پرفورمنس بسیار بالایی بوده و در زمینهٔ پردازش سریع صحنه و ایجاد اشیاء پیچیده با دارای جزئیات زیاد، میتوانند در واقعیت مجازی بسیار مفید واقع شوند. ترکیب تکنولوژی موجود با سایر اپلیکیشنها و حتی موتورهای بازیسازی نظیر Unity و Unreal، خبر از روزهای خوب پیشرو در زمینهٔ واقعیت افزوده برای کاربران میدهد.