স্পেশিয়াল কন্টেনারের সাহায্যে তৈরি করুন

প্রযোজ্য XR ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরনের XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে সাহায্য করে।
XR হেডসেট
তারযুক্ত XR গ্লাস

স্পেশিয়াল কন্টেনার OpenXR-এ ভলিউমেট্রিক উইন্ডোইং নিয়ে আসে। OpenXR 1.1-এ XR_EXT_spatial_container এবং XR_EXT_spatial_container_self_rendering এক্সটেনশন দ্বারা সংজ্ঞায়িত, স্পেশিয়াল কন্টেনার হল ব্যবহারকারীর স্পেসে সিস্টেম-ম্যানেজ করা 3D ভলিউমেট্রিক অঞ্চল যেখানে আপনার অ্যাপ স্ট্যান্ডার্ড OpenXR কম্পোজিশন লেয়ার ব্যবহার করে 3D কন্টেন্ট রেন্ডার করে।

সাধারণত, OpenXR সেশন ব্যবহারকারীর সম্পূর্ণ ফিল্ড অফ ভিউতে এক্সক্লুসিভ অ্যাক্সেস দাবি করে। স্পেশিয়াল কন্টেনার আপনার অ্যাপকে ব্যবহারকারীর পরিবেশে একটি বাউন্ডেড 3D বক্সের মধ্যে 3D OpenXR কন্টেন্ট রেন্ডার করতে দেয় অথবা যেকোনও সময় একটি আনবাউন্ডেড, ফুল-স্ক্রিন ইমারসিভ অভিজ্ঞতায় ট্রানজিশন করতে দেয়।

স্পেশিয়াল কন্টেনার সম্পর্কে

স্পেশিয়াল কন্টেনার হল একটি বাউন্ডেড বা আনবাউন্ডেড 3D অঞ্চল যা Android XR সিস্টেম দ্বারা ম্যানেজ করা হয় এবং আপনার OpenXR অ্যাপ দ্বারা রেন্ডার করা হয়:

  • বাউন্ডেড মোড: আপনার অ্যাপ 3D ডাইমেনশন (মিটারে প্রস্থ, উচ্চতা ও গভীরতা) সাজেস্ট করে এবং সিস্টেম ব্যবহারকারীর পরিবেশে একটি 3D বাউন্ডিং বক্স বরাদ্দ করে। আপনার অ্যাপ ভলিউমের মধ্যে স্টেরিও 3D কন্টেন্ট রেন্ডার করে এবং সিস্টেম রেন্ডার করা কন্টেন্টকে 3D বক্সের সীমানায় ক্লিপ করে।
  • ইমারসিভ মোড: স্পেশিয়াল কন্টেনার অসীম সীমানায় প্রসারিত হয়, যা আপনার অ্যাপকে ব্যবহারকারীর সম্পূর্ণ ফিল্ড অফ ভিউ প্রদান করে, ঠিক যেমন ফুল-স্ক্রিন OpenXR সেশন।
ফুল স্পেস মোডে তিনটি স্পেশিয়াল কন্টেনার একসাথে চলছে: একটি কমলা রঙের ফ্লোর-লকড 3D টেরেন কন্টেনার, একটি নীল রঙের 3D হাঁসের মডেল যার সাথে 2D UI অ্যাটাচ করা আছে এবং একটি সবুজ রঙের 2D UI কন্টেনার।
ছবি ১. ফুল স্পেস মোডে একাধিক স্পেশিয়াল কন্টেনার: ফ্লোর-লক করা 3D টেরেন ভলিউম (বাঁদিকে), 2D UI-এর সাথে পেয়ার করা 3D ডাক ভলিউম (মাঝখানে) এবং 2D UI কন্টেনার (ডানদিকে)।

ব্যবহারকারীরা কীভাবে স্পেশিয়াল কন্টেনারের সাথে ইন্টার‍্যাক্ট করেন

Android XR সিস্টেম স্পেশিয়াল কন্টেনারের উইন্ডো কন্ট্রোল এবং ফিজিক্যাল স্পেসে প্লেসমেন্ট ম্যানেজ করে, যা বিভিন্ন অ্যাপ জুড়ে একটি সামঞ্জস্যপূর্ণ ইন্টার‍্যাকশন মডেল প্রদান করে:

  • সরানো এবং নতুন জায়গায় রাখা: ব্যবহারকারীরা হাতের জেসচার (যেমন চিমটি কাটা) বা মোশন কন্ট্রোলার ব্যবহার করে স্পেশিয়াল কন্টেনারের সিস্টেম হ্যান্ডেল ধরে 3D স্পেসে নতুন জায়গায় রাখতে পারেন।
  • মিনিমাইজ ও বন্ধ করা: সিস্টেম উইন্ডো কন্ট্রোল ব্যবহারকারীদের আলাদা আলাদা স্পেশিয়াল কন্টেনার মিনিমাইজ বা বন্ধ করতে দেয়। ব্যবহারকারী কোনও কন্টেনার বন্ধ করলে, সিস্টেম আপনার অ্যাপকে বিজ্ঞপ্তি পাঠায় যাতে এটি রিসোর্স খালি করতে পারে।
  • দৃশ্য বোঝার মাধ্যমে ফ্লোরে লক করা: আপনার অ্যাপ যখন android.permission.SCENE_UNDERSTANDING_COARSE অনুমতি ঘোষণা করে এবং অনুরোধ করে, তখন সিস্টেম অটোমেটিক সারফেস স্ন্যাপিং চালু করে যাতে ব্যবহারকারীরা অতিরিক্ত অ্যাপ কনফিগারেশন ছাড়াই ফিজিক্যাল ফ্লোরে একটি স্পেশিয়াল কন্টেনার রাখতে এবং লক করতে পারেন, যেমনটি চিত্র ১-এ কমলা রঙের টেরেন কন্টেনার দ্বারা দেখানো হয়েছে।
  • সরাসরি 3D ইন্টার‍্যাকশন: কোনও কন্টেনার ফোকাস করা ও ইন্টার‍্যাক্টিভ হলে, ব্যবহারকারীরা হ্যান্ড ট্র্যাকিং, আই গেজ বা 6DoF কন্ট্রোলার ব্যবহার করে ভলিউমের মধ্যে 3D কন্টেন্টের সাথে সরাসরি ইন্টার‍্যাক্ট করতে পারবেন।
একজন ব্যবহারকারী হ্যান্ড ট্র্যাকিং ব্যবহার করে একটি বাউন্ডেড নীল স্পেশিয়াল কন্টেনারের ভিতরে একটি 3D হাঁসের সাথে ইন্টার‍্যাক্ট করছেন।
ছবি ২. একজন ব্যবহারকারী হ্যান্ড ট্র্যাকিং ব্যবহার করে একটি বাউন্ডেড স্পেশিয়াল কন্টেনারের মধ্যে 3D কন্টেন্টের সাথে ইন্টার‍্যাক্ট করছেন।
  • বাউন্ডেড ও ইমারসিভ মোডের মধ্যে ট্রানজিশন: ব্যবহারকারী বা আপনার অ্যাপ, OpenXR সেশন রিস্টার্ট না করেই, বাউন্ডেড 3D বক্স ও আনবাউন্ডেড ফুল-স্ক্রিন ইমারসিভ ভিউয়ের মধ্যে কন্টেনার পাল্টাতে পারে।
সীমিত স্পেশিয়াল কন্টেনার থেকে সীমাহীন ফুল-স্ক্রিন ইমারসিভ ভিউতে ট্রানজিশন করার পরে 3D হাঁসের দৃশ্য।
ছবি ৩. বাউন্ডেড মোড থেকে ইমারসিভ মোডে ট্রানজিশন করার পরে স্পেশিয়াল কন্টেনার, যা ব্যবহারকারীর ফিল্ড অফ ভিউ পূরণ করে।
  • যেতে যেতে ফলো মোড: যেহেতু সিস্টেম প্রতিটি স্পেশিয়াল কন্টেনারের কোঅর্ডিনেট স্পেসের (xrCreateSpatialContainerSpaceEXT) পোজ নিয়ন্ত্রণ করে, তাই ব্যবহারকারীরা সিস্টেম উইন্ডো কন্ট্রোল থেকে ফলো মোড চালু করতে পারেন, যাতে একটি বাউন্ডেড 3D কন্টেনার অটোমেটিক তাদের ফলো করে এবং তারা যখন ঘুরে বেড়ান তখন তাদের ফিল্ড অফ ভিউতে থাকে—আপনার অ্যাপে কোনও অতিরিক্ত কনফিগারেশনের প্রয়োজন ছাড়াই।

Android XR-এ কীভাবে স্পেশিয়াল কন্টেনার ব্যবহার করতে হয়

Spatial Containers-এর সাহায্যে অ্যাপ তৈরি করার সময়, কন্টেনারের বাউন্ড, স্ট্যাটাস পরিবর্তন এবং ব্যাকগ্রাউন্ড ব্লেন্ড মোডের আশেপাশে আপনার দৃশ্য ডিজাইন করুন।

কন্টেনার বাউন্ডে আপনার 3D কন্টেন্ট অ্যাডাপ্ট করুন

বাউন্ডেড মোডে, স্পেশিয়াল কন্টেনার স্পেসের অরিজিন (0, 0, 0) (xrCreateSpatialContainerSpaceEXT) 3D বাউন্ডিং বক্সের কেন্দ্রে থাকে। যেহেতু সিস্টেম ব্যবহারকারীর পরিবেশে কন্টেনার স্পেসের পোজ ম্যানেজ করে, তাই আপনার অ্যাপ (0, 0, 0)-এর সাপেক্ষে এর 3D কন্টেন্ট রেন্ডার করে, যখন সিস্টেম ব্যবহারকারীর রিপজিশনিং এবং ফলো মোড ম্যানেজ করে। বক্সের প্রস্থ, উচ্চতা বা গভীরতার বাইরে রেন্ডার করা যেকোনও জ্যামিতি সিস্টেম ক্লিপ করে যাতে কন্টেন্ট তার অ্যাসাইন করা ভলিউমের মধ্যে থাকে।

আপনার অ্যাপকে রানটাইম থেকে বাউন্ডস পরিবর্তন ইভেন্ট শুনতে হবে এবং আপনার 3D সিন স্কেল বা পুনরায় পজিশন করতে হবে যাতে মূল কন্টেন্ট কন্টেনারের বর্তমান ডাইমেনশনের মধ্যে ফিট করে। কন্টেনার ইমারসিভ মোডে ট্রানজিশন করলে, বাউন্ড অসীম হয়ে যায় এবং আপনি নিজের সিনকে সম্পূর্ণ ১:১ ওয়ার্ল্ড স্কেলে ফিরিয়ে আনতে পারেন।

কন্টেনারের স্ট্যাটাস পরিবর্তনের উত্তর দিন

শুধুমাত্র অ্যাপ্লিকেশন লেভেলে দৃশ্যমানতা ও ফোকাস ম্যানেজ করার পরিবর্তে, প্রতিটি স্পেশিয়াল কন্টেনার তার নিজস্ব স্ট্যাটাস রিপোর্ট করে যাতে আপনার অ্যাপ সেই অনুযায়ী কাজ করতে পারে:

  • দৃশ্যমানতা: কন্টেনার বর্তমানে দেখানো হচ্ছে নাকি লুকানো আছে তা নির্দেশ করে। কন্টেনার লুকানো থাকলে অ্যানিমেশন, অডিও বা সিমুলেশন আপডেট পজ করুন। আপনার অ্যাপ কোনও কন্টেনার দেখাতে বা লুকাতে অনুরোধ করতে পারে।
  • ইন্টার‍্যাক্ট করার ক্ষমতা: কন্টেনারটি ফোকাস করা হয়েছে কিনা এবং হ্যান্ড ট্র্যাকিং, কন্ট্রোলার বা চোখের দৃষ্টি থেকে ব্যবহারকারীর ইনপুট গ্রহণ করছে কিনা তা নির্দেশ করে। ফোকাস পরিবর্তন হলে, ইন্টার‍্যাক্টিভ হাইলাইট ও ইনপুট হ্যান্ডলিং চালু বা বন্ধ করুন।
  • বাউন্ডস মোড: কন্টেনারটি বর্তমানে XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT (একটি 3D বক্সে ক্লিপ করা) নাকি XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT (আনবাউন্ডেড ফুল-স্ক্রিন) মোডে আছে তা নির্দেশ করে। মোড পরিবর্তন হলে আপনার সিন স্কেল আপডেট করুন এবং এনভায়রনমেন্ট ভিজ্যুয়াল (যেমন, স্কাইবক্স বা পাসথ্রু) টগল করুন। এছাড়াও, আপনার অ্যাপ যেকোনও সময় বাউন্ডেড ও ইমারসিভ মোডের মধ্যে ট্রানজিশনের অনুরোধ করতে পারে।

বাউন্ডেড মোডে আলফা-ব্লেন্ডেড ট্রান্সপারেন্সি ব্যবহার করুন

বাউন্ডেড মোডে, স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহারকারীর আশেপাশের পরিবেশ এবং অন্যান্য উইন্ডো আপনার 3D মডেলের চারপাশে দৃশ্যমান রাখে। ট্রান্সপারেন্ট ব্যাকগ্রাউন্ড সহ আপনার ক্যামেরা বা ভিউপোর্ট কনফিগার করুন এবং আলফা-ব্লেন্ড এনভায়রনমেন্ট ব্লেন্ড মোড ব্যবহার করুন। ইমারসিভ মোডে পাল্টানোর সময়, আপনি পাসথ্রু চালু রাখতে পারেন অথবা একটি অস্বচ্ছ স্কাইবক্স এনভায়রনমেন্টে পাল্টাতে পারেন।

ফিচার উপলভ্য কিনা তা চেক করুন এবং আপনার ম্যানিফেস্ট কনফিগার করুন

স্পেশিয়াল কন্টেনারের জন্য এমন Android XR ডিভাইস প্রয়োজন যা স্পেশিয়াল API লেভেল ৪ বা তার পরবর্তী ভার্সন সাপোর্ট করে। Android API লেভেল সরাসরি চেক করার পরিবর্তে, OpenXR রানটাইম কোয়েরি করে দেখুন যে স্পেশিয়াল কন্টেনার কাজ করে কিনা। এর জন্য xrEnumerateInstanceExtensionProperties কল করে যাচাই করুন যে XR_EXT_spatial_container এবং XR_EXT_spatial_container_self_rendering উপলভ্য আছে কিনা এবং xrGetSystemProperties কল করে XrSystemSpatialContainerPropertiesEXT-এর সাথে supportsBounded এবং supportsImmersive চেক করুন।

স্পেশিয়াল কন্টেনার ব্যবহার করে এমন অ্যাপ তৈরি করার আগে, আপনার অ্যাক্টিভিটি শুরু করার মোড এবং AndroidManifest.xml-এ ফিচার-নির্দিষ্ট যেকোনও অনুমতি কনফিগার করুন।

AndroidManifest.xml-এ ফুল স্পেস মোড চালু করা

এমনকি স্ট্যান্ডঅ্যালোন OpenXR অ্যাপের ক্ষেত্রেও, স্পেশিয়াল কন্টেনারের জন্য ফুল স্পেস ম্যানেজড মোড প্রয়োজন। প্রথাগত ফুল-স্ক্রিন OpenXR অ্যাপ XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED ঘোষণা করে যাতে সিস্টেম উইন্ডো ম্যানেজমেন্ট ছাড়াই ডিসপ্লের এক্সক্লুসিভ কন্ট্রোল নেওয়া যায়। এর বিপরীতে, স্পেশিয়াল কন্টেনার ব্যবহার করা অ্যাপ, ফুল স্পেস মোডে 3D বাউন্ডেড ভলিউম, উইন্ডো কন্ট্রোল ও স্পেশিয়াল প্লেসমেন্ট ম্যানেজ করার জন্য Android XR সিস্টেম কম্পোজিটরের উপর নির্ভর করে এবং android.window.PROPERTY_XR_ACTIVITY_START_MODE-কে XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED-এ সেট করতে হবে:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application ...>
        <!-- Spatial Containers require Full Space Managed mode -->
        <property
            android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
            android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />

        <activity android:name=".MainActivity" ...>
            <!-- Optional hint declaring which bounds modes the activity uses -->
            <property
                android:name="org.khronos.openxr.PROPERTY_ACTIVITY_HINT_XR_SPATIAL_CONTAINER_USED_BOUNDS_MODES"
                android:value="XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT|XR_SPATIAL_CONTAINER_BOUNDS_MODE_IMMERSIVE_EXT" />
        </activity>
    </application>
</manifest>

ফিচার-নির্দিষ্ট অনুমতির ঘোষণা ও অনুরোধ করা

একটি বেসিক স্পেশিয়াল কন্টেনার তৈরি এবং রেন্ডার করার জন্য বিপজ্জনক রানটাইম অনুমতির প্রয়োজন হয় না। তবে, নির্দিষ্ট ফিচার ব্যবহার করার জন্য সংশ্লিষ্ট Android XR অনুমতি ঘোষণা ও অনুরোধ করতে হবে:

  • সিন বোঝার সুবিধা ব্যবহার করে ফিজিক্যাল ফ্লোরে স্পেশিয়াল কন্টেনার লক ও অ্যাঙ্কর করতে, রানটাইমে বিপজ্জনক android.permission.SCENE_UNDERSTANDING_COARSE অনুমতি ঘোষণা ও অনুরোধ করুন।
  • OpenXR-এ ব্যবহারকারীর মাথার পোজ ট্র্যাক করতে, android.permission.HEAD_TRACKING ঘোষণা করুন এবং অনুরোধ করুন।
<uses-permission android:name="android.permission.HEAD_TRACKING" />
<uses-permission android:name="android.permission.SCENE_UNDERSTANDING_COARSE" />

রানটাইমে বিপজ্জনক XR অনুমতি ঘোষণা করা এবং অনুরোধ করার বিষয়ে বিশদ বিবরণের জন্য XR-এর জন্য অনুমতি বুঝুন দেখুন।

আপনার প্রোজেক্টে স্পেশিয়াল কন্টেনার চালু করুন

আপনি Unity, Godot ব্যবহার করে অথবা সরাসরি C++-এ OpenXR-এর মাধ্যমে স্পেশিয়াল কন্টেনার তৈরি করতে পারবেন। আপনার পছন্দের এনভায়রনমেন্টের জন্য প্রয়োজনীয়তা, এডিটর সেট-আপ এবং কোডের উদাহরণ দেখতে একটি ট্যাব বেছে নিন:

Unity

পূর্বশর্ত

আপনার প্রোজেক্ট কনফিগার করা

  1. এডিট করুন > প্রোজেক্ট সেটিংস > XR প্লাগ-ইন ম্যানেজমেন্ট > OpenXR বিকল্পে নেভিগেট করুন।
  2. Android XR (এক্সটেনশন): সেশন ম্যানেজমেন্ট-এর পাশে সেটিংস বিকল্পে ক্লিক করুন এবং ইমারসিভ XR মুছে দিন।
  3. OpenXR ফিচার গ্রুপ তালিকায়, স্পেশিয়াল কন্টেনার চালু করুন।

C#-এ XRSpatialContainerFeature ব্যবহার করে বাউন্ড কোয়েরি করুন, কন্টেনার ইভেন্টের উত্তর দিন এবং বাউন্ডেড ও ইমারসিভ মোডের মধ্যে পরিবর্তন করুন:

void OnEnable()
{
    XRSpatialContainerFeature.OnSpatialContainerBoundsChanged += OnBoundsChanged;
}

private void OnBoundsChanged(Vector3 bounds, bool infiniteBounds)
{
    float minScale = Mathf.Min(bounds.x, bounds.y, bounds.z);
    transform.localScale = infiniteBounds ? Vector3.one : Vector3.one * minScale;
}

public void SetImmersiveMode(bool immersive)
{
    XRSpatialContainerFeature.TryRequestBoundsMode(immersive);
}

প্রজেক্ট সেট-আপের সম্পূর্ণ ধাপ, ম্যানিফেস্ট কনফিগারেশন ও অনুমতি ম্যানেজ করার ব্যাপারে জানতে, Unity-তে স্পেশিয়াল কন্টেনার ব্যবহার করা দেখুন।

Godot

পূর্বশর্ত

আপনার প্রোজেক্ট কনফিগার করা

  1. প্রোজেক্ট > প্রোজেক্ট সেটিংস বিকল্পে নেভিগেট করুন, উন্নত সেটিংস চালু করুন এবং সাধারণ > XR > OpenXR > এক্সটেনশন বিকল্পে যান।
  2. স্পেশিয়াল কন্টেনার সাবসেকশনের মধ্যে, চালু করা আছে বিকল্প বেছে নিন এবং বাউন্ডস মোড ও বাউন্ডস কনফিগার করুন।
  3. প্রোজেক্ট > এক্সপোর্ট করুন... বিকল্পে নেভিগেট করুন > Android বিকল্পে যান এবং Android XR ফিচার বিকল্পের অধীনে এক্সপেরিমেন্টাল ফিচার ব্যবহার করুন বিকল্প বেছে নিন।

কন্টেনারের বাউন্ড ও মোড পরিবর্তনের উত্তর দিতে GDScript-এ OpenXRSpatialContainerExtension সিঙ্গলটন ব্যবহার করুন:

func _ready() -> void:
    if OpenXRSpatialContainerExtension.is_enabled():
        OpenXRSpatialContainerExtension.spatial_container_bounds_changed.connect(
            _on_bounds_changed
        )

func _on_bounds_changed(_rid: RID, bounds: Vector3) -> void:
    scale = Vector3.ONE * min(bounds.x, bounds.y, bounds.z)

func set_immersive_mode() -> void:
    OpenXRSpatialContainerExtension.request_main_spatial_container_bounds_mode(
        OpenXRSpatialContainerState.IMMERSIVE
    )

সম্পূর্ণ প্রোজেক্ট সেটিংস, এক্সপোর্ট করার অনুমতি এবং GDScript-এর উদাহরণের জন্য, Godot-এ স্পেশিয়াল কন্টেনার ব্যবহার করুন দেখুন।

OpenXR

পূর্বশর্ত

আপনার XrInstance তৈরি করার সময় XR_EXT_spatial_container এবং XR_EXT_spatial_container_self_rendering চালু করুন, তারপর আপনার স্পেশিয়াল কন্টেনার তৈরি ও রেন্ডার করুন:

// 1. Enable the Spatial Container extensions during xrCreateInstance
const char* enabledExtensions[] = {
    XR_EXT_SPATIAL_CONTAINER_EXTENSION_NAME,
    XR_EXT_SPATIAL_CONTAINER_SELF_RENDERING_EXTENSION_NAME,
};

// 2. Configure and create a self-rendering spatial container
XrSpatialContainerConfigurationSelfRenderingEXT selfRenderingConfig{
    .type = XR_TYPE_SPATIAL_CONTAINER_CONFIGURATION_SELF_RENDERING_EXT,
    .next = nullptr,
    .viewConfigurationType = XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO,
    .suggestedBounds = {1.5f, 1.5f, 1.5f}, // Width, height, depth in meters
};

XrSpatialContainerCreateInfoEXT createInfo{
    .type = XR_TYPE_SPATIAL_CONTAINER_CREATE_INFO_EXT,
    .next = &selfRenderingConfig,
    .spatialContainerConfig =
        reinterpret_cast<const XrSpatialContainerConfigurationBaseHeaderEXT*>(
            &selfRenderingConfig),
};

XrSpatialContainerEXT spatialContainer = XR_NULL_HANDLE;
xrCreateSpatialContainerEXT(session, &createInfo, &spatialContainer);

// 3. Request bounded mode and make the container visible
xrRequestSpatialContainerBoundsModeEXT(
    spatialContainer, XR_SPATIAL_CONTAINER_BOUNDS_MODE_BOUNDED_EXT);
xrRequestSpatialContainerVisibilityEXT(spatialContainer, XR_TRUE);

এছাড়াও দেখুন


OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc.-এর মালিকানাধীন ট্রেডমার্ক এবং এগুলি চীন, ইউরোপীয় ইউনিয়ন, জাপান ও যুক্তরাজ্যে ট্রেডমার্ক হিসেবে রেজিস্টার করা আছে।