أطلق العنان لتجارب واقع معزز فائقة الواقعية. يستكشف دليلنا الشامل واجهة برمجة تطبيقات تقدير الإضاءة في WebXR، من المفاهيم الأساسية إلى التطبيق العملي والتوجهات المستقبلية.
تقدير الإضاءة في WebXR: نظرة معمقة على التصيير الواقعي للواقع المعزز
يحمل الواقع المعزز (AR) وعدًا بدمج عوالمنا الرقمية والمادية بسلاسة. لقد رأينا ذلك في تصورات المنتجات التي تتيح لك وضع أريكة افتراضية في غرفة معيشتك، وفي الألعاب الغامرة حيث تجري الشخصيات عبر طاولة مطبخك، وفي التطبيقات التعليمية التي تعيد القطع الأثرية القديمة إلى الحياة. ولكن ما الذي يفصل بين تجربة الواقع المعزز المقنعة وتلك التي تبدو مصطنعة وغير مناسبة؟ الجواب، في أغلب الأحيان، هو الضوء.
عندما لا يتفاعل كائن رقمي مع ضوء بيئته الواقعية، تدرك أدمغتنا على الفور أنه دخيل. يبدو النموذج ثلاثي الأبعاد ذو الإضاءة المسطحة والعامة كملصق تم لصقه على الشاشة، مما يكسر على الفور وهم الحضور. لتحقيق واقعية فوتوغرافية حقيقية، يجب أن تُضاء الكائنات الافتراضية بنفس مصادر الضوء، وتلقي نفس الظلال، وتعكس نفس المحيط مثل الكائنات المادية المجاورة لها. وهنا تصبح واجهة برمجة تطبيقات تقدير الإضاءة في WebXR (WebXR Lighting Estimation API) أداة تحويلية لمطوري الويب.
سيأخذك هذا الدليل الشامل في رحلة عميقة إلى عالم تقدير الإضاءة في WebXR. سوف نستكشف لماذا الإضاءة هي حجر الزاوية في واقعية الواقع المعزز، ونزيل الغموض عن التكنولوجيا وراء واجهة برمجة التطبيقات، ونستعرض خطوات التنفيذ العملي، ونتطلع إلى مستقبل التصيير الغامر على الويب. هذا المقال مخصص لمطوري الويب، وفناني الرسومات ثلاثية الأبعاد، وعشاق الواقع الممتد (XR)، ومديري المنتجات الذين يرغبون في بناء الجيل القادم من تجارب الواقع المعزز الجذابة مباشرة على الويب المفتوح.
القوة الخفية: لماذا الإضاءة هي حجر الزاوية في الواقع المعزز الواقعي
قبل أن نتعمق في التفاصيل التقنية لواجهة برمجة التطبيقات، من الضروري أن نفهم لماذا تعتبر الإضاءة أساسية جدًا لإنشاء واقع معزز قابل للتصديق. الهدف هو تحقيق ما يُعرف بـ "الواقعية الإدراكية". لا يتعلق الأمر بالضرورة بإنشاء نماذج مفصلة للغاية بملايين المضلعات؛ بل يتعلق بخداع النظام البصري البشري لقبول كائن رقمي كجزء معقول من المشهد. توفر الإضاءة الإشارات البصرية الأساسية التي تستخدمها أدمغتنا لفهم شكل الكائن وملمسه وعلاقته ببيئته.
لننظر في العناصر الرئيسية للإضاءة الواقعية التي غالبًا ما نعتبرها أمراً مفروغًا منه في العالم الحقيقي:
- الضوء المحيط (Ambient Light): هذا هو الضوء الناعم غير الموجه الذي يملأ الفضاء. يرتد عن الجدران والأسقف والأرضيات، ليضيء المناطق التي لا تتعرض للضوء المباشر. بدونه، ستكون الظلال سوداء تمامًا، مما يخلق مظهرًا قاسيًا بشكل غير طبيعي.
- الضوء الموجه (Directional Light): هذا هو الضوء الصادر من مصدر أساسي، غالبًا ما يكون بعيدًا، مثل الشمس أو مصباح سقف ساطع. يخلق إبرازات مميزة ويلقي ظلالًا حادة الحواف، مما يمنحنا إحساسًا قويًا بشكل الكائن وموضعه.
- الانعكاسات واللمعان (Reflections and Specularity): الطريقة التي يعكس بها سطح الكائن العالم من حوله تخبرنا عن خصائص مادته. ستحتوي كرة الكروم على انعكاسات حادة تشبه المرآة، وسيكون للعبة بلاستيكية إبرازات ناعمة وغير واضحة (لمعان)، ولن يكون للكتلة الخشبية أي انعكاسات تقريبًا. يجب أن تتطابق هذه الانعكاسات مع المحيط الواقعي لتكون قابلة للتصديق.
- الظلال (Shadows): يمكن القول إن الظلال هي أهم إشارة لتثبيت كائن في الواقع. يربط الظل كائنًا بسطح ما، مما يمنحه وزنًا وإحساسًا بالمكان. توفر نعومة واتجاه ولون الظل ثروة من المعلومات حول مصادر الضوء في البيئة.
تخيل وضع كرة حمراء لامعة افتراضية في مكتبك. مع الإضاءة الافتراضية المستندة إلى المشهد، قد يكون لها إبراز أبيض عام وظل دائري داكن بسيط. تبدو مزيفة. الآن، مع تقدير الإضاءة، يمكن لنفس الكرة أن تعكس الضوء الأزرق من شاشتك، والضوء الأصفر الدافئ من مصباح المكتب، وحتى انعكاسًا مشوهًا للنافذة. يكون ظلها ناعمًا وموجهًا بشكل صحيح بعيدًا عن مصدر الضوء الأساسي. فجأة، لا تبدو الكرة وكأنها على مكتبك فحسب؛ بل تبدو وكأنها في بيئة مكتبك. هذه هي قوة الإضاءة الواقعية، وهذا ما تتيحه واجهة برمجة تطبيقات تقدير الإضاءة في WebXR.
إزالة الغموض عن واجهة برمجة تطبيقات تقدير الإضاءة في WebXR
تعتبر واجهة برمجة تطبيقات تقدير الإضاءة في WebXR وحدة ضمن مواصفات واجهة جهاز WebXR الأوسع. مهمتها بسيطة لكنها قوية: تحليل بيئة المستخدم الواقعية من خلال كاميرا الجهاز وتوفير بيانات إضاءة قابلة للتنفيذ لمحرك التصيير ثلاثي الأبعاد للمطور (مثل Three.js أو Babylon.js). إنها تعمل كجسر، مما يسمح لإضاءة مشهدك الافتراضي بأن تكون مدفوعة بإضاءة المشهد المادي الفعلي.
كيف تعمل؟ نظرة مبسطة
العملية لا تنطوي على سحر؛ إنها تطبيق متطور لرؤية الحاسوب. عندما تكون جلسة WebXR مع تمكين تقدير الإضاءة نشطة، تقوم المنصة الأساسية (مثل ARCore من Google على Android) بتحليل تغذية الكاميرا باستمرار. يستنتج هذا التحليل العديد من الخصائص الرئيسية للإضاءة المحيطة:
- السطوع واللون العام: تحدد الكثافة الرئيسية والصبغة اللونية للضوء. هل الغرفة مضاءة بسطوع بمصابيح فلورية بيضاء باردة، أم مضاءة بشكل خافت بغروب شمس برتقالي دافئ؟
- اتجاه الضوء: بينما لا تحدد كل مصباح على حدة، يمكنها تحديد الاتجاه العام لمصادر الضوء الأكثر هيمنة.
- التمثيل البيئي: الأهم من ذلك، أنها تنشئ تمثيلاً شاملاً للضوء القادم من جميع الاتجاهات.
يتم بعد ذلك تجميع هذه المعلومات في تنسيقات محسّنة للغاية لتصيير الرسومات ثلاثية الأبعاد في الوقت الفعلي. التنسيقان الأساسيان للبيانات اللذان توفرهما واجهة برمجة التطبيقات هما التوافقات الكروية (Spherical Harmonics) وخريطة الانعكاس المكعبة (Reflection Cubemap).
المكونان الرئيسيان لبيانات الواجهة
عندما تطلب تقديرًا للضوء في جلسة WebXR الخاصة بك، تحصل على كائن `XRLightEstimate`. يحتوي هذا الكائن على قطعتي البيانات الحاسمتين اللتين سيستخدمهما المصيّر الخاص بك.
1. التوافقات الكروية (SH) للإضاءة المنتشرة (Diffuse)
قد يكون هذا هو الجزء الأكثر تعقيدًا من حيث الاسم ولكنه أساسي ومهم في الواجهة. بعبارات بسيطة، التوافقات الكروية هي طريقة رياضية لتمثيل معلومات الإضاءة منخفضة التردد (أي ناعمة وغير واضحة) من جميع الاتجاهات. فكر فيها كملخص مضغوط وفعال للغاية للضوء المحيط العام في المشهد.
- الغرض منها: إنها مثالية لحساب الضوء المنتشر الذي يصطدم بكائن ما. الضوء المنتشر هو الضوء الذي يتشتت بالتساوي عن سطح الكائنات غير اللامعة، مثل الخشب أو الحجر أو البلاستيك غير المصقول. تمنح التوافقات الكروية هذه الأسطح اللون والتظليل الصحيحين بناءً على اتجاهها بالنسبة للضوء المحيط في البيئة.
- كيفية توفيرها: توفر الواجهة بيانات التوافقات الكروية كمصفوفة من المعاملات (عادةً `Float32Array` بـ 27 قيمة للتوافقات من الدرجة الثالثة). يمكن إدخال هذه الأرقام مباشرة في مُظلِلات التصيير المادي (PBR) الحديثة، والتي تستخدمها لحساب اللون النهائي لكل بكسل على سطح غير لامع.
2. خرائط الانعكاس المكعبة (Reflection Cubemaps) للإضاءة اللامعة (Specular)
بينما تعتبر التوافقات الكروية رائعة للأسطح غير اللامعة، فإنها تفتقر إلى التفاصيل اللازمة للأسطح اللامعة. وهنا يأتي دور خريطة الانعكاس المكعبة. الخريطة المكعبة هي تقنية رسومات حاسوبية كلاسيكية تتكون من ستة مواد نسيجية مرتبة كوجوه مكعب. تشكل معًا صورة بانورامية بزاوية 360 درجة للبيئة من نقطة واحدة.
- الغرض منها: تُستخدم الخريطة المكعبة لإنشاء انعكاسات حادة ومفصلة على الأسطح اللامعة (specular). عند تصيير كائن معدني أو لامع، يستخدم محرك التصيير الخريطة المكعبة لمعرفة ما يجب أن ينعكس على سطحه. رؤية انعكاس واقعي للغرفة الفعلية على كرة كروم افتراضية هو عامل رئيسي في تحقيق الواقعية الفوتوغرافية.
- كيفية توفيرها: توفر الواجهة هذا ككائن `XRReflectionCubeMap`، وهو كائن `WebGLTexture` يمكن استخدامه مباشرة كخريطة بيئة في مشهدك ثلاثي الأبعاد. يتم تحديث هذه الخريطة المكعبة ديناميكيًا بواسطة النظام مع تحرك المستخدم أو تغير ظروف الإضاءة.
التنفيذ العملي: جلب تقدير الإضاءة إلى تطبيق WebXR الخاص بك
الآن بعد أن فهمنا النظرية، دعونا نلقي نظرة على الخطوات عالية المستوى المطلوبة لدمج هذه الميزة في تطبيق WebXR. بينما يمكن أن يكون كود التنفيذ الكامل معقدًا ويعتمد بشكل كبير على اختيارك لمكتبة الرسومات ثلاثية الأبعاد، فإن العملية الأساسية تتبع نمطًا ثابتًا.
المتطلبات الأساسية
- فهم قوي لأساسيات WebXR، بما في ذلك كيفية بدء جلسة وتشغيل حلقة تصيير.
- الإلمام بمكتبة رسومات ثلاثية الأبعاد تعتمد على WebGL مثل Three.js أو Babylon.js. هذه المكتبات تجرد الكثير من التعقيد منخفض المستوى.
- جهاز ومتصفح متوافقان. في وقت كتابة هذا التقرير، يتم دعم تقدير الإضاءة في WebXR بشكل أقوى في Chrome على أجهزة Android الحديثة التي تعمل بنظام ARCore.
- HTTPS: مثل جميع ميزات WebXR، يجب تقديم موقعك عبر اتصال آمن.
التكامل خطوة بخطوة (مفاهيمي)
فيما يلي استعراض مفاهيمي للخطوات المطلوبة. سنناقش الأدوات المساعدة الخاصة بالمكتبات في القسم التالي.
الخطوة 1: طلب ميزة 'light-estimation'
لا يمكنك استخدام الواجهة ما لم تطلبها صراحة عند إنشاء جلسة الواقع المعزز الخاصة بك. تقوم بذلك عن طريق إضافة `'light-estimation'` إلى مصفوفة `requiredFeatures` أو `optionalFeatures` في استدعاء `requestSession` الخاص بك.
const session = await navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['hit-test', 'dom-overlay', 'light-estimation'] });
الخطوة 2: إنشاء XRLightProbe
بمجرد بدء الجلسة، تحتاج إلى إخبارها بأنك تريد البدء في تلقي معلومات الإضاءة. تقوم بذلك عن طريق إنشاء مسبار ضوئي (light probe) للجلسة. يمكنك أيضًا تحديد تنسيق خريطة الانعكاس المفضل لديك.
const lightProbe = await session.requestLightProbe();
الخطوة 3: الوصول إلى بيانات الإضاءة في حلقة التصيير
يتم تحديث بيانات الإضاءة مع كل إطار. داخل دالة رد الاتصال لحلقة التصيير `requestAnimationFrame` (التي تستقبل `time` و `frame` كوسائط)، يمكنك الحصول على أحدث تقدير لمسبارك.
function onXRFrame(time, frame) {
// ... get pose, etc. ...
const lightEstimate = frame.getLightEstimate(lightProbe);
if (lightEstimate) {
// لدينا بيانات إضاءة! الآن يمكننا تطبيقها.
applyLighting(lightEstimate);
}
// ... render the scene ...
}
من المهم التحقق من وجود `lightEstimate`، حيث قد يستغرق الأمر بضعة إطارات حتى يقوم النظام بإنشاء التقدير الأول بعد بدء الجلسة.
الخطوة 4: تطبيق البيانات على مشهدك ثلاثي الأبعاد
هنا يأتي دور محرك الرسومات ثلاثية الأبعاد الخاص بك. يحتوي كائن `lightEstimate` على `sphericalHarmonicsCoefficients` و `reflectionCubeMap`.
- تطبيق التوافقات الكروية: يمكنك تمرير مصفوفة `sphericalHarmonicsCoefficients` إلى مواد PBR الخاصة بك، غالبًا عن طريق تحديث كائن `LightProbe` داخل محرك الرسومات ثلاثية الأبعاد الخاص بك. ثم تستخدم مُظلِلات المحرك هذه البيانات لحساب الإضاءة المنتشرة.
- تطبيق خريطة الانعكاس المكعبة: `reflectionCubeMap` هو `WebGLTexture`. تحتاج إلى استخدام `XRWebGLBinding` الخاص بجلستك للحصول على نسخة يمكن للمصيّر الخاص بك استخدامها، ثم تعيينها كخريطة بيئة عامة لمشهدك. سيؤدي هذا إلى جعل جميع مواد PBR ذات القيمة المعدنية أو الخشونة تعكسها.
أمثلة خاصة بالمحركات: Three.js و Babylon.js
لحسن الحظ، تتعامل مكتبات WebGL الشهيرة مع معظم العمل الشاق من الخطوة 4، مما يجعل العملية أكثر بساطة للمطورين.
ملاحظات التنفيذ في Three.js
يحتوي Three.js على `WebXRManager` استثنائي وفئة مساعدة مخصصة تجعل تقدير الإضاءة ميزة شبه جاهزة للاستخدام.
المفتاح هو فئة XREstimatedLight
. يمكنك إنشاء نسخة من هذه الفئة وإضافتها إلى مشهدك. في حلقة التصيير الخاصة بك، ما عليك سوى تمرير نتيجة `xrFrame.getLightEstimate(lightProbe)` و `lightProbe` نفسه إلى طريقة `update()` الخاصة بالضوء. تهتم الفئة المساعدة بكل شيء آخر:
- تحتوي على كائن Three.js `LightProbe` وتقوم تلقائيًا بتحديث خاصية `sh` الخاصة به بمعاملات التوافقات الكروية.
- تقوم تلقائيًا بتحديث خاصية `scene.environment` بخريطة الانعكاس المكعبة.
- عندما لا يكون تقدير الضوء متاحًا، يمكنها العودة إلى إعداد إضاءة افتراضي، مما يضمن تجربة سلسة.
يعني هذا التجريد عالي المستوى أنه يمكنك التركيز على إنشاء محتوى ثلاثي الأبعاد الخاص بك وترك `XREstimatedLight` يتعامل مع تعقيدات ربط المواد النسيجية وتحديث متغيرات المُظلِلات (shader uniforms).
ملاحظات التنفيذ في Babylon.js
يوفر Babylon.js أيضًا نظامًا عالي المستوى قائمًا على الميزات لمساعده `WebXRDefaultExperience`.
لتمكين الميزة، ما عليك سوى الوصول إلى مدير الميزات وتمكينها بالاسم:
const xr = await scene.createDefaultXRExperienceAsync({ /* options */ });
const lightEstimationFeature = xr.featuresManager.enableFeature(WebXRLightEstimation.Name, { /* options */ });
بمجرد تمكينها، تقوم الميزة تلقائيًا بما يلي:
- إدارة إنشاء ودورة حياة `XRLightProbe`.
- تحديث `environmentTexture` الرئيسي للمشهد بخريطة الانعكاس المكعبة التي توفرها الواجهة.
- توفير الوصول إلى معاملات التوافقات الكروية، والتي يمكن لنظام مواد PBR في Babylon استخدامها لحسابات الإضاءة المنتشرة.
- تتضمن مراقبات (أحداث) مفيدة مثل `onLightEstimatedObservable` التي يمكنك الاشتراك فيها لمنطق مخصص عند وصول بيانات إضاءة جديدة.
يسمح هذا النهج، المشابه لـ Three.js، للمطورين بالاشتراك في هذه الميزة المتقدمة ببضعة أسطر من التعليمات البرمجية، ودمجها بسلاسة في مسار التصيير الحالي لـ Babylon.js.
التحديات والقيود في التكنولوجيا الحالية
بينما يعد تقدير الإضاءة في WebXR خطوة هائلة إلى الأمام، فمن الضروري التعامل معها بفهم واقعي لقيودها الحالية.
- تكلفة الأداء: يستهلك تحليل تغذية الكاميرا باستمرار، وإنشاء خرائط مكعبة، ومعالجة التوافقات الكروية موارد كبيرة من وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU). وهذا اعتبار أداء حاسم، خاصة على الأجهزة المحمولة التي تعمل بالبطارية. يجب على المطورين الموازنة بين الرغبة في الواقعية المثالية والحاجة إلى تجربة سلسة ذات معدل إطارات مرتفع.
- دقة التقدير: الاسم يقول كل شيء - إنه تقدير. يمكن خداع النظام بظروف إضاءة غير عادية، أو مشاهد معقدة للغاية بها العديد من الأضواء الملونة، أو تغييرات سريعة للغاية في الضوء. إنه يوفر تقريبًا معقولًا، وليس قياسًا مثاليًا من الناحية المادية.
- دعم الأجهزة والمتصفحات: الميزة ليست متاحة عالميًا بعد. اعتمادها على أطر عمل الواقع المعزز الخاصة بالمنصات مثل ARCore يعني أنها متاحة بشكل أساسي على أجهزة Android الحديثة التي تعمل بنظام Chrome. يعد الدعم على أجهزة iOS قطعة مفقودة رئيسية للتبني على نطاق واسع.
- لا توجد ظلال صريحة: الواجهة الحالية ممتازة للضوء المحيط والانعكاسي ولكنها لا توفر مباشرة معلومات حول مصادر الضوء الاتجاهية المهيمنة. هذا يعني أنها لا تستطيع إخبارك، "هناك ضوء قوي قادم من هذا الاتجاه المحدد". نتيجة لذلك، لا يزال إلقاء ظلال واضحة ودقيقة في الوقت الفعلي من الكائنات الافتراضية على الأسطح الواقعية يتطلب تقنيات إضافية. غالبًا ما يستخدم المطورون بيانات التوافقات الكروية لاستنتاج اتجاه ألمع ضوء ووضع ضوء اتجاهي قياسي في مشهدهم، ولكن هذا تقريبي.
مستقبل إضاءة WebXR: ماذا بعد؟
يتطور مجال التصيير في الوقت الفعلي ورؤية الحاسوب بوتيرة لا تصدق. مستقبل الإضاءة على الويب الغامر مشرق، مع العديد من التطورات المثيرة في الأفق.
تحسين واجهات برمجة تطبيقات الضوء الاتجاهي والظلال
طلب متكرر من مجتمع المطورين هو أن توفر الواجهة بيانات أكثر صراحة حول مصدر (مصادر) الضوء الأساسي، بما في ذلك الاتجاه واللون والشدة. مثل هذه الواجهة ستجعل من السهل إلقاء ظلال دقيقة ماديًا وحادة الحواف، مما سيكون قفزة هائلة إلى الأمام للواقعية. يمكن دمج هذا مع واجهة برمجة تطبيقات اكتشاف الأسطح (Plane Detection API) لإلقاء الظلال على الأرضيات والطاولات في العالم الحقيقي.
خرائط بيئة عالية الدقة
مع ازدياد قوة معالجات الأجهزة المحمولة، يمكننا أن نتوقع أن يقوم النظام بإنشاء خرائط انعكاس مكعبة عالية الدقة وذات نطاق ديناميكي عالٍ (HDR). سيؤدي هذا إلى انعكاسات أكثر حيوية وتفصيلاً، مما يزيد من طمس الخط الفاصل بين الواقعي والافتراضي.
تبني أوسع للمنصات
الهدف النهائي هو أن تصبح هذه الميزات موحدة ومتاحة عبر جميع المتصفحات والأجهزة الرئيسية. مع استمرار Apple في تطوير عروضها للواقع المعزز، هناك أمل في أن يتبنى Safari على iOS في النهاية واجهة برمجة تطبيقات تقدير الإضاءة في WebXR، مما يجلب هذه التجارب عالية الدقة إلى جمهور عالمي أكبر بكثير.
فهم المشهد المدعوم بالذكاء الاصطناعي
بالنظر إلى المستقبل البعيد، يمكن أن تسمح التطورات في التعلم الآلي للأجهزة ليس فقط بتقدير الضوء، ولكن بفهم المشهد دلاليًا. قد يتعرف الجهاز على "نافذة" أو "مصباح" أو "سماء" ويستخدم تلك المعرفة لإنشاء نموذج إضاءة أكثر دقة وقوة، مكتمل بمصادر إضاءة متعددة وتفاعلات ظلال معقدة.
الخلاصة: إضاءة الطريق للويب الغامر
يعد تقدير الإضاءة في WebXR أكثر من مجرد ميزة إضافية؛ إنها تقنية أساسية لمستقبل الواقع المعزز على الويب. من خلال السماح بإضاءة الكائنات الرقمية بشكل واقعي من خلال محيطها المادي، فإنه يرتقي بالواقع المعزز من كونه حيلة جديدة إلى وسيط غامر ومقنع حقًا.
إنه يسد الفجوة الإدراكية التي غالبًا ما تجعل تجارب الواقع المعزز تبدو مفككة. بالنسبة للتجارة الإلكترونية، يعني ذلك أن العميل يمكنه رؤية كيف سيعكس مصباح معدني الضوء حقًا في منزله. بالنسبة للألعاب، يعني ذلك أن الشخصيات تشعر بأنها أكثر حضورًا وتكاملاً في عالم اللاعب. بالنسبة للتعليم، يعني ذلك أنه يمكن عرض القطع الأثرية التاريخية بمستوى من الواقعية كان مستحيلاً في السابق في متصفح الويب.
بينما لا تزال هناك تحديات في الأداء والدعم عبر المنصات، فإن الأدوات المتاحة اليوم، خاصة عند إقرانها بمكتبات قوية مثل Three.js و Babylon.js، قد جعلت هذه التكنولوجيا التي كانت معقدة في السابق سهلة الوصول بشكل ملحوظ. نحن نشجع جميع مطوري الويب والمبدعين المهتمين بالويب الغامر على استكشاف واجهة برمجة تطبيقات تقدير الإضاءة في WebXR. ابدأوا بالتجربة، وتجاوزوا الحدود، وساعدوا في إضاءة الطريق للجيل القادم من تجارب الواقع المعزز الواقعية لجمهور عالمي.