আপনার অ্যাপে একটি 3D মডেল যোগ করার পরে, আপনি কাস্টম উপাদান বৈশিষ্ট্য নির্ধারণ করে এবং বস্তুতে টেক্সচার প্রয়োগ করে ভিজ্যুয়াল অভিজ্ঞতা উন্নত করতে পারেন। Jetpack XR এর উপাদান সিস্টেম glTF™ 2.0 স্পেসিফিকেশনের উপর ভিত্তি করে তৈরি, এবং 3D মডেলগুলি শারীরিকভাবে-ভিত্তিক রেন্ডারিং (PBR) ব্যবহার করে রেন্ডার করা হয়। এগুলি Khronos Group দ্বারা রক্ষণাবেক্ষণ করা উন্মুক্ত মান।
ব্যবহারকারীর ইনপুট বা অ্যাপের বর্তমান অবস্থার উপর ভিত্তি করে গতিশীলভাবে কোনও বস্তুর চেহারা পরিবর্তন করার জন্য রানটাইমের সময় উপাদানের বৈশিষ্ট্যগুলি সামঞ্জস্য করা যেতে পারে।
প্রতিটি সমর্থিত সম্পত্তি এবং Android XR-এর কাস্টমাইজযোগ্য পরামিতি সম্পর্কে বিস্তারিত জানতে, আমাদের রেফারেন্স ডকুমেন্টেশন দেখুন। এই বৈশিষ্ট্যগুলি আরও ভালভাবে বুঝতে, Khronos শব্দকোষ দেখুন।
আপনার 3D মডেলের উপাদান বৈশিষ্ট্যগুলি কাস্টমাইজ করুন
একটি Material একটি বস্তুর পৃষ্ঠের জন্য দৃশ্যমান বৈশিষ্ট্যের একটি সেট সংজ্ঞায়িত করে এবং নির্ধারণ করে যে সেই পৃষ্ঠটি দৃশ্যের আলোর সাথে কীভাবে মিথস্ক্রিয়া করে।
Jetpack XR-এ, KhronosPbrMaterial এবং KhronosUnlitMaterial ক্লাসগুলি এই উপকরণগুলি তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত হয়। নাম থেকেই বোঝা যাচ্ছে, KhronosUnlitMaterials আলোকিত নয় এবং দৃশ্যের আলো দ্বারা প্রভাবিত হয় না। KhronosPbrMaterial আপনাকে আরও বিস্তৃত বৈশিষ্ট্য কাস্টমাইজ করতে দেয়, যেমন উজ্জ্বল রঙ, কোনও বস্তু কতটা ধাতব বা রুক্ষ, এবং এটি আলো নির্গত করে কিনা।

আপনার 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 Texture API আপনাকে আপনার অ্যাপের /assets/ ফোল্ডার থেকে অ্যাসিঙ্ক্রোনাসভাবে PNG ফাইলের মতো ইমেজ ডেটা লোড করতে দেয়।
একটি টেক্সচার লোড করার সময়, আপনি একটি TextureSampler নির্দিষ্ট করতে পারেন, যা টেক্সচারটি কীভাবে রেন্ডার করা হবে তা নিয়ন্ত্রণ করে। স্যাম্পলার ফিল্টারিং বৈশিষ্ট্য (যখন টেক্সচারটি তার মূল আকারের চেয়ে ছোট বা বড় দেখায়) এবং র্যাপিং মোড (স্ট্যান্ডার্ড [0, 1] রেঞ্জের বাইরে স্থানাঙ্ক পরিচালনা করার জন্য) সংজ্ঞায়িত করে। একটি Texture অবজেক্ট নিজেই কেবল ডেটা; একটি 3D মডেলে ভিজ্যুয়াল এফেক্ট দেওয়ার জন্য এটি একটি Material বরাদ্দ করা আবশ্যক।

একটি কাস্টম টেক্সচার তৈরি করতে, প্রথমে আপনাকে আপনার /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 সত্তার একটি নির্দিষ্ট নোডের জন্য বিদ্যমান উপাদানটিকে ওভাররাইড করুন। GltfModelEntity এ setMaterialOverride কল করে এটি করুন:
gltfModelEntity.setMaterialOverride( material = pbrMaterial, nodeName = "Node Name" )
নতুন তৈরি উপকরণগুলি সরাতে, আপনার GltfModelEntity এর পূর্বে ওভাররাইড করা নোডে clearMaterialOverride কল করুন। এটি আপনার 3D মডেলটিকে তার ডিফল্ট অবস্থায় ফিরিয়ে আনবে:
gltfModelEntity.clearMaterialOverride( nodeName = "Node Name" )
glTF এবং glTF লোগো হল Khronos Group Inc. এর ট্রেডমার্ক।