هل تتخيل يومًا تستطيع فيه تجربة قيادة سيارة رياضية جديدة من خلال هاتفك الذكي، أو تشعر بتجربة شراء ملابس جديدة في متجر افتراضي من دون مغادرة منزلك؟ هذا هو عالم الواقع المعزز والافتراضي، عالم يُعيد صياغة مفهوم التفاعل مع الإلكترونيات بكل ما تحمله الكلمة من معنى.
تخيل أحمد، شابًا مهتمًا بالألعاب الإلكترونية، يرتدي نظارة ذكية تُظهره داخل عالم افتراضي غني بالألوان. يمشي في غابة مليئة بالأشجار الشاهقة والحيوانات المفترسة، ويقاتل وحوشًا متوحشة في معركة مُثيرة للإثارة. تُقدم له النّظارة تجربة حسية غامرة تسحره بواقعها وتجعله ينسى حقيقة وجوده في غرفته الصغيرة.
لكن لا يُقتصر دور التقنيات الجديدة على مجال الألعاب فقط. ففي مجال التصميم والهندسة ، يستطيع المهندسون باستخدام تطبيقات الواقع المعزز معاينة نماذج ثلاثية الأبعاد للمباني قبل بنائها، مما يُمكنهم من اكتشاف الأخطاء وإجراء التعديلات اللازمة قبل بدء العمل.
تخيل معي طبيبًا يستخدم نظامًا للرّ الواقع المعزز لمتابعة عملية جراحية معقدة. يساعده النظام على معرفة موقع الأعضاء بدقة وإجراء القطع الجراحية بأكبر قدر من الدّقة. تُتيح هذه التّكنولوجيا للّأطباء تدريبًا أفضل وإجراء عمليات أكثر أمانًا.
الواقع المعزز والواقع الافتراضي يُغيّران قواعد اللّعبة في مجال الإلكترونيات ، فمن منصّة للتواصل ومصادر للمعلومات ، أصبح العالم الافتراضي بوابة إلى عوالم جديدة من التّجربة والتّفاعل ، ليُصبح الهاتف الذكي مجرد نقطة انطلاق لتحقيق أحلام كُلّ منّا.
لا يزال عالم الواقع المعزّز والافتراضي في بداياته ، وهو يشهد تطوّرًا سريعًا. فمن المُتوقّع أن تُصبح هذه التّقنيات أكثر انتشارًا وتُغيّر أسلوب حياة الإنسان في الّسنوات القليلة الّقادمة .
دعونا نستعد لهذه الثّورة التّكنولوجية ، ونُحضر أنفسنا لاستكشاف عوالم جديدة من التّجربة والتّفاعل ، عوالم لا تُحدها حواجز الّواقع الّقديم ، عوالم لا تُحدها الّحدود الّطبيعية لّلعالم الّذي نعيش فيه.
هل أنت مستعد لمغامرة الواقع الافتراضي ؟
بإمكانك الّان الّانضمام إلى عالم الواقع المعزّز والافتراضي ، وذلك باستخدام تطبيقات الّواقع الّمعزّز والواقع الافتراضي الّمتاحة على أجهزة الّهاتف الّذكية ، أو بإمكانك تطوير تطبيقات الّواقع الّمعزّز والواقع الافتراضي بنفسك !
هل أنت مستعد للبدء ؟
ملاحظة:
أمثلة على أكواد برمجة للواقع الّمعزّز والواقع الافتراضي:
Unity Engine:
using UnityEngine;
public class ExampleAR : MonoBehaviour
{
// نُنشئ كاميرا لّلرّ الواقع الّمعزّز
private ARCameraManager arCameraManager;
// نُنشئ كائنًا لّلرّ الواقع الّمعزّز
public GameObject prefab;
void Start()
{
// نُحصل على مرجع لكاميرا الّواقع الّمعزّز
arCameraManager = GetComponent<ARCameraManager>();
// نُنشئ كائنًا جديدًا من نوع prefab
GameObject newObject = Instantiate(prefab, transform.position, transform.rotation);
// نُضيف كائنًا جديدًا إلى مشهد الّواقع الّمعزّز
arCameraManager.AddObject(newObject);
}
}
Android Studio:
package com.example.arapp;
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.MotionEvent;
import com.google.ar.core.Anchor;
import com.google.ar.core.Frame;
import com.google.ar.core.HitResult;
import com.google.ar.core.Session;
import com.google.ar.core.TrackingState;
import com.google.ar.sceneform.AnchorNode;
import com.google.ar.sceneform.ArSceneView;
import com.google.ar.sceneform.Node;
import com.google.ar.sceneform.rendering.ModelRenderable;
import com.google.ar.sceneform.ux.ArFragment;
import com.google.ar.sceneform.ux.TransformableNode;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class MainActivity extends Activity {
private ArFragment arFragment;
private ArSceneView arSceneView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
arSceneView = arFragment.getArSceneView();
arSceneView.getScene().addOnUpdateListener(frameTime -> {
// نُحصل على إطار الّواقع الّمعزّز
Frame frame = arSceneView.getArFrame();
if (frame != null && frame.getCamera().getTrackingState() == TrackingState.TRACKING) {
// نُحصل على نقطة التّلامس مع سطح الّواقع
MotionEvent tap = arFragment.getArSceneView().getLastMotionEvent();
if (tap != null && tap.getAction() == MotionEvent.ACTION_DOWN) {
// نُنشئ مرجعًا لّلرّ الواقع الّمعزّز
HitResult hitResult = frame.hitTest(tap.getX(), tap.getY());
if (hitResult != null) {
// نُنشئ مرجعًا لّلرّ الواقع الّمعزّز
Anchor anchor = hitResult.getTrackable().createAnchor();
// نُنشئ كائنًا جديدًا لّلرّ الواقع الّمعزّز
ModelRenderable.builder()
.setSource(this, R.raw.model)
.build()
.thenAccept(modelRenderable -> {
// نُنشئ عقدة جديدة لّلرّ الواقع الّمعزّز
AnchorNode anchorNode = new AnchorNode(anchor);
// نُنشئ عقدة جديدة لّلرّ الواقع الّمعزّز
TransformableNode node = new TransformableNode(arFragment.getTransformationSystem());
// نُضيف الكائن الجديد إلى العقدة الجديدة
node.setRenderable(modelRenderable);
// نُضيف العقدة الجديدة إلى العقدة الّأساسية
anchorNode.addChild(node);
// نُضيف العقدة الّأساسية إلى مشهد الّواقع الّمعزّز
arSceneView.getScene().addChild(anchorNode);
});
}
}
}
});
}
}
ملاحظة:
من المُهم ملاحظة أنّ هذه الأكواد تُعدّ أمثلة بسيطة لّلرّ الواقع الّمعزّز والواقع الّافتراضي ، وهي لا تُمثّل كُلّ إمكانيات هذه التّقنيات ، ولكنها تُقدم فكرة عامة عن طريقة عملها.
يُمكن لك استكشاف هذه التّقنيات بمزيد من الّتفصيل عن طريق دراسة الّوثائق الّمتاحة على مواقع المطوّرين مثل Unity و Google و Apple.
الّآن ، أنت مستعد للبدء في رحلة الّواقع الّمعزّز والواقع الّافتراضي!
© 2020 All Rights Reserved. Information Network