আপনার অ্যাপে 3D মডেল কাস্টমাইজ করুন

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

আপনার অ্যাপে একটি 3D মডেল যুক্ত করার পরে, আপনি কাস্টম ম্যাটেরিয়াল প্রোপার্টি নির্ধারণ করে এবং অবজেক্টটিতে টেক্সচার প্রয়োগ করে ভিজ্যুয়াল অভিজ্ঞতা উন্নত করতে পারেন। Jetpack XR-এর ম্যাটেরিয়াল সিস্টেমটি glTF™ 2.0 স্পেসিফিকেশনের উপর ভিত্তি করে তৈরি, এবং 3D মডেলগুলো ফিজিক্যালি-বেসড রেন্ডারিং (PBR) ব্যবহার করে রেন্ডার করা হয়। এগুলো ক্রোনোস গ্রুপ দ্বারা পরিচালিত ওপেন স্ট্যান্ডার্ড।

ব্যবহারকারীর ইনপুট বা অ্যাপের বর্তমান অবস্থার উপর ভিত্তি করে কোনো অবজেক্টের চেহারা গতিশীলভাবে পরিবর্তন করার জন্য রানটাইমে ম্যাটেরিয়াল অ্যাট্রিবিউটগুলো সমন্বয় করা যেতে পারে।

Android XR-এর প্রতিটি সমর্থিত প্রপার্টি এবং কাস্টমাইজযোগ্য প্যারামিটার সম্পর্কে বিস্তারিত জানতে আমাদের রেফারেন্স ডকুমেন্টেশন দেখুন। এই প্রপার্টিগুলো আরও ভালোভাবে বুঝতে ক্রোনোস গ্লসারি দেখুন।

আপনার 3D মডেলের উপাদানের বৈশিষ্ট্যগুলি কাস্টমাইজ করুন

একটি Material কোনো বস্তুর পৃষ্ঠতলের জন্য একগুচ্ছ দৃশ্যমান বৈশিষ্ট্য নির্ধারণ করে এবং দৃশ্যের আলোর সাথে সেই পৃষ্ঠতলটি কীভাবে মিথস্ক্রিয়া করবে তা স্থির করে।

Jetpack XR-এ, এই ম্যাটেরিয়ালগুলো তৈরি ও পরিবর্তন করার জন্য KhronosPbrMaterial এবং KhronosUnlitMaterial ক্লাসগুলো ব্যবহার করা হয়। নাম থেকেই বোঝা যায়, KhronosUnlitMaterials আলোহীন এবং দৃশ্যের আলো দ্বারা প্রভাবিত হয় না। KhronosPbrMaterial আপনাকে আরও বিস্তৃত পরিসরের বৈশিষ্ট্য কাস্টমাইজ করার সুযোগ দেয়, যেমন—শীনের রঙ, কোনো বস্তু কতটা ধাতব বা অমসৃণ হবে এবং সেটি আলো নির্গত করবে কি না।

একটি 3D মডেলের মূল রঙ পরিবর্তন করার উদাহরণ

আপনার 3D মডেলের ম্যাটেরিয়াল প্রোপার্টি কাস্টমাইজ করতে, প্রথমে আপনাকে KhronosPbrMaterial ব্যবহার করে নতুন ম্যাটেরিয়ালটি তৈরি করতে হবে। আপনি যে ভিজ্যুয়াল অ্যাপিয়ারেন্সটি অর্জন করতে চাইছেন, তার জন্য আপনাকে উপযুক্ত AlphaMode সেট করতে হবে:

val pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

এরপর, আপনি যে প্রোপার্টিগুলো পরিবর্তন করতে চান, সেগুলো নির্ধারণ করুন। এই উদাহরণে, আমরা বেস কালার পরিবর্তন করার জন্য setBaseColorFactor ব্যবহার করেছি। এই মেথডটির জন্য একটি Vector4 প্রয়োজন, যেখানে x , y , z , এবং w কম্পোনেন্টগুলো যথাক্রমে RGBA (লাল, সবুজ, নীল, এবং আলফা) ভ্যালুগুলোর সাথে সঙ্গতিপূর্ণ:

pbrMaterial.setBaseColorFactor(
    Vector4(
        x = 0.5f,
        y = 0.0f,
        z = 0.5f,
        w = 0.0f
    )
)

আপনার 3D মডেলের জন্য কাস্টম টেক্সচার তৈরি করুন

Texture হলো একটি ইমেজ অ্যাসেট যা আপনি একটি 3D মডেলের পৃষ্ঠে রঙ, বিবরণ বা অন্যান্য পৃষ্ঠের তথ্য যোগ করার জন্য প্রয়োগ করতে পারেন। Jetpack XR টেক্সচার API আপনাকে আপনার অ্যাপের /assets/ ফোল্ডার থেকে PNG ফাইলের মতো ইমেজ ডেটা অ্যাসিঙ্ক্রোনাসভাবে লোড করতে দেয়।

একটি টেক্সচার লোড করার সময়, আপনি একটি TextureSampler নির্দিষ্ট করতে পারেন, যা টেক্সচারটি কীভাবে রেন্ডার করা হবে তা নিয়ন্ত্রণ করে। স্যাম্পলারটি ফিল্টারিং বৈশিষ্ট্য (টেক্সচারটি তার আসল আকারের চেয়ে ছোট বা বড় দেখানোর জন্য) এবং র‍্যাপিং মোড (স্ট্যান্ডার্ড [0, 1] পরিসরের বাইরের স্থানাঙ্কগুলি পরিচালনা করার জন্য) নির্ধারণ করে। একটি Texture অবজেক্ট নিজে কেবল ডেটা; একটি 3D মডেলে ভিজ্যুয়াল প্রভাব ফেলার জন্য এটিকে অবশ্যই একটি Material এর সাথে যুক্ত করতে হবে।

একটি 3D মডেলের টেক্সচার পরিবর্তনের উদাহরণ

একটি কাস্টম টেক্সচার তৈরি করতে, প্রথমে আপনাকে ইমেজ ফাইলটি আপনার /assets/ ফোল্ডারে সেভ করতে হবে। উত্তম অনুশীলন হিসেবে, আপনি ওই ফোল্ডারে একটি textures সাবডিরেক্টরিও তৈরি করতে পারেন।

উপযুক্ত ডিরেক্টরিতে ফাইলটি সেভ করার পর, Texture API) ব্যবহার করে টেক্সচারটি তৈরি করুন। প্রয়োজন হলে, এখানেই আপনি একটি ঐচ্ছিক TextureSampler প্রয়োগ করতে পারবেন।

val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_file.png")
)

এরপর, টেক্সচারের ধরন নির্ধারণ করুন এবং এর সংশ্লিষ্ট প্যারামিটারগুলো সেট করুন। এই উদাহরণে, আমরা একটি অক্লুশন টেক্সচার প্রয়োগ করছি এবং এর স্ট্রেংথ সেট করছি:

pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 1.0f
)

আপনার 3D অবজেক্টগুলিতে ম্যাটেরিয়াল এবং টেক্সচার প্রয়োগ করুন।

নতুন ম্যাটেরিয়াল বা টেক্সচার প্রয়োগ করতে, আপনার glTF নোডের একটি নির্দিষ্ট নোডের জন্য বিদ্যমান ম্যাটেরিয়ালটিকে ওভাররাইড করুন। এটি করার জন্য GltfModelNodesetMaterialOverride কল করুন:

gltfModelNode.setMaterialOverride(
    material = pbrMaterial
)

নতুন তৈরি করা ম্যাটেরিয়ালগুলো অপসারণ করতে, আপনার GltfModelNode এর পূর্বে ওভাররাইড করা নোডটিতে clearMaterialOverride কল করুন। এটি আপনার 3D মডেলকে তার ডিফল্ট অবস্থায় ফিরিয়ে দেবে:

gltfModelNode.clearMaterialOverride()


glTF এবং glTF লোগো হলো ক্রোনোস গ্রুপ ইনকর্পোরেটেডের ট্রেডমার্ক।