{ } { }

জেটপ্যাক সিনকোর

3D সামগ্রী সহ Android XR দৃশ্য গ্রাফ তৈরি করুন এবং পরিচালনা করুন৷
সর্বশেষ আপডেট স্থিতিশীল রিলিজ প্রার্থী মুক্তি বিটা রিলিজ আলফা রিলিজ
ফেব্রুয়ারি 12, 2025 - - - 1.0.0-আলফা02

নির্ভরতা ঘোষণা করা

XR SceneCore-এ নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha01"
    // Required for Java
    implementation "com.google.guava:listenableFuture:1.0"
    // Required for Kotlin
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01"
}

কোটলিন

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01")
    // Required for Java
    implementation("com.google.guava:listenableFuture:1.0")
    // Required for Kotlin
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01")
}

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যুক্ত করুন দেখুন।

প্রতিক্রিয়া

আপনার প্রতিক্রিয়া জেটপ্যাককে আরও ভাল করতে সাহায্য করে। আপনি যদি নতুন সমস্যা আবিষ্কার করেন বা এই লাইব্রেরির উন্নতির জন্য ধারনা পান তাহলে আমাদের জানান। আপনি একটি নতুন তৈরি করার আগে অনুগ্রহ করে এই লাইব্রেরিতে বিদ্যমান সমস্যাগুলি দেখুন৷ আপনি তারকা বোতামে ক্লিক করে একটি বিদ্যমান সমস্যায় আপনার ভোট যোগ করতে পারেন।

একটি নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

সংস্করণ 1.0

সংস্করণ 1.0.0-alpha02

ফেব্রুয়ারি 12, 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha02 এবং androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 প্রকাশ করা হয়েছে। সংস্করণ 1.0.0-alpha02-এ এই কমিট রয়েছে।

আসন্ন ব্রেকিং পরিবর্তন 1.0.0-alpha02 এর আগে তৈরি অ্যাপগুলিকে প্রভাবিত করে৷

  • ফ্যাক্টরি পদ্ধতিগুলি Session ক্লাস থেকে প্রতিটি স্বতন্ত্র প্রকারের একটি সহচর পদ্ধতিতে সরানো হয়েছে:
    • Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) মুছে ফেলা হয়েছে এবং ActivityPanelEntity.create(Session, Dimensions, String, Pose) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createAnchorEntity(Anchor) মুছে ফেলা হয়েছে এবং AnchorEntity.create(Session, Anchor) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createAnchorEntity(Dimensions, Int, Int, Duration) মুছে ফেলা হয়েছে এবং AnchorEntity.create(Session, Dimensions, Int, Int, Duration) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createEntity(String, Pose) মুছে ফেলা হয়েছে এবং ContentlessEntity.create(Session, String, Pose)
    • Session.createExrImageResource(String) মুছে ফেলা হয়েছে এবং ExrImage.create(Session, String) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createGltfEntity(GltfModel, Pose) মুছে ফেলা হয়েছে এবং GltfModelEntity.create(Session, GltfModel, Pose) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createGltfModelResource(String) মুছে ফেলা হয়েছে এবং GltfModel.create(Session, String) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createInteractableComponent(Executor, InputEventListener) মুছে ফেলা হয়েছে এবং InteractableComponent.create(Session, Executor, InputEventListener) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) মুছে ফেলা হয়েছে এবং MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) মুছে ফেলা হয়েছে এবং PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createResizableComponent(Dimensions, Dimensions) মুছে ফেলা হয়েছে এবং ResizableComponent.create(Session, Dimensions, Dimensions) দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.createStereoSurfaceEntity(Int, Dimensions, Pose) মুছে ফেলা হয়েছে এবং StereoSurface.create(Session, Int, Dimensions, Pose) দিয়ে প্রতিস্থাপিত হয়েছে
  • নিম্নলিখিত অপপ্রচারিত পদ্ধতিগুলি সরানো হয়েছে:
    • Session.canEmbedActivityPanel(Activity) মুছে ফেলা হয়েছে। পরিবর্তে getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY) ব্যবহার করুন।
    • Session.hasSpatialCapability(Int) মুছে ফেলা হয়েছে। এটিকে getSpatialCapabilities().hasCapability() ব্যবহার করার পক্ষে স্থানান্তরিত ক্ষমতার উপস্থিতি পরীক্ষা করার জন্য একটি আরও বিভক্ত উপায় হিসাবে প্রতিস্থাপন করা হয়েছে যেহেতু getSpatialCapabilities() একটি SpatialCapabilities অবজেক্ট প্রদান করে।
    • Session.requestFullSpaceMode() মুছে ফেলা হয়েছে এবং SpatialEnvironment.requestFullSpaceMode() দিয়ে প্রতিস্থাপিত হয়েছে
    • Session.requestHomeSpaceMode() মুছে ফেলা হয়েছে এবং SpatialEnvironment.requestHomeSpaceMode() দিয়ে প্রতিস্থাপিত হয়েছে
  • Session.setFullSpaceMode(Bundle) এবং Session.setFullSpaceModeWithEnvironmentInherited(Bundle) এক্সটেনশন ফাংশনে সরানো হয়েছে। বিকাশকারী ফাইলগুলিকে অ্যাক্সেসের জন্য নতুন আমদানি যোগ করতে হবে:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • Session.setPreferredAspectRatio(Activity, Float) একটি এক্সটেনশন ফাংশনে সরানো হয়েছে। বিকাশকারী ফাইলগুলিকে অ্যাক্সেসের জন্য নতুন আমদানি যোগ করতে হবে:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) এবং Session.getEntityForRtEntity(RtEntity) এক্সটেনশন ফাংশনে সরানো হয়েছে। বিকাশকারী ফাইলগুলিকে অ্যাক্সেসের জন্য নতুন আমদানি যোগ করতে হবে:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • Session.unpersistAnchor(Anchor) মুছে ফেলা হয়েছে
  • Session.createPersistedAnchorEntity(UUID) মুছে ফেলা হয়েছে

পরিচিত সমস্যা

  • PanelEntity.setCornerRadius() এবং ActivityPanelEntity.setCornerRadius() প্যানেলটি পরবর্তী স্থানান্তর না হওয়া পর্যন্ত কার্যকর নাও হতে পারে, প্যানেলটিকে তার বর্তমান অবস্থানে সরানোর মাধ্যমে এটি হ্রাস করা যেতে পারে
  • যখন ActivitySpaceBoundsChanged কল করা হয়, তখন কিছু ActivityPose সঠিকভাবে আপডেট নাও হতে পারে। ActivitySpace এ নিম্নলিখিত OnSpaceUpdated কলে এটি আপডেট করা হবে

ব্রেকিং এবং আচরণগত পরিবর্তন

  • PanelEntity এবং ActivityPanelEntity এর একটি ডিফল্ট কোণার ব্যাসার্ধ 32dp বা ছোট হবে যদি প্যানেলের প্রস্থ বা উচ্চতা 32dp-এর চেয়ে ছোট হয়

নতুন API এবং ক্ষমতা

  • StereoSurface.CanvasShape প্রবর্তন করে, যা ইমারসিভ মিডিয়া রেন্ডার করার জন্য Spherical এবং Hemispherical ক্যানভাস তৈরি করতে দেয়।
  • StereoSurfaceEntity.create() এখন একটি CanvasShape প্যারামিটার গ্রহণ করে। (এই প্যারামিটারটি বর্তমানে উপেক্ষা করা হয়েছে, তবে ভবিষ্যতের রিলিজে ব্যবহার করা হবে)
  • StereoSurfaceEntity.create() আর একটি Dimensions প্যারামিটার নেয় না। CanvasShape সেট করার মাধ্যমে অ্যাপ্লিকেশনগুলিকে ক্যানভাসের আকার নিয়ন্ত্রণ করা উচিত
  • StereoSurfaceEntity একটি CanvasShape সদস্য রয়েছে যা গতিশীলভাবে সেট করা যেতে পারে।
  • StereoSurfaceEntity.dimensions এখন শুধুমাত্র পঠনযোগ্য সম্পত্তি; অ্যাপ্লিকেশনের মাত্রা পরিবর্তন করতে CanvasShape সেট করা উচিত।
  • StereoSurfaceEntity এখন StereoMode নির্মাণের পরে পুনরায় সেট করার অনুমতি দেয়।

অন্যান্য পরিবর্তন

  • কম্পাইল-টাইম minSDK কমিয়ে 24 করা হয়েছে। সমস্ত Jetpack XR API-এর জন্য রানটাইমে API 34 প্রয়োজন অব্যাহত রয়েছে।
  • SceneCore এর সেশন ফ্যাক্টরি ( Session.create ) আর SCENE_UNDERSTANDING অনুমতি অর্জনের কোনো উদ্দেশ্য চালু করে না৷ পরিবর্তে, অ্যাঙ্কর তৈরি করার চেষ্টা করার আগে ক্লায়েন্ট অ্যাপ্লিকেশনটিকে অবশ্যই ব্যবহারকারীর কাছ থেকে স্পষ্টভাবে অনুমতির অনুরোধ করতে হবে। ব্যবহারকারীর অনুমতি না দিলে অ্যাঙ্কর তৈরি ব্যর্থ হবে।

বাগ ফিক্স

  • getActivitySpacePose() ActivitySpace স্কেলের জন্য অ্যাকাউন্টে স্থির করা হয়েছে সবসময় অ-স্কেল করা মিটার ফেরত না দিয়ে স্কেল করা মিটারে অনুবাদের মান ফিরিয়ে দিয়ে। যখন ActivitySpace উৎস বা গন্তব্যের সাথে জড়িত থাকে তখন transformPoseTo এখন সমন্বয় পরিবর্তনের গণনা করার জন্য সঠিক ইউনিট ব্যবহার করে।
  • স্কাইবক্সটি এখন একটি সম্পূর্ণ-কালো স্কাইবক্সে সেট করা হবে যখনই setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) ব্যবহার করে একটি নাল স্কাইবক্স পছন্দ পাস করা হবে। সিস্টেম ডিফল্ট স্কাইবক্স এবং জ্যামিতিতে প্রত্যাবর্তন করতে, setSpatialEnvironmentPreference(null).

সংস্করণ 1.0.0-alpha01

ডিসেম্বর 12, 2024

androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 প্রকাশিত হয়েছে।

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

  • স্থানিক পরিবেশ : আপনার পরিবেশের XR দৃশ্যের পটভূমি হিসাবে একটি স্কাইবক্স ইমেজ এবং/অথবা 3D মডেল জ্যামিতির সাথে সম্পূর্ণ নিমগ্ন অভিজ্ঞতা তৈরি করুন। অথবা পাসথ্রু সক্ষম করুন, যাতে আপনার ভার্চুয়াল দৃশ্য ব্যবহারকারীর বাস্তব-বিশ্বের পরিবেশের সাথে একীভূত হতে পারে।
  • PanelEntity : 2D কন্টেন্ট যোগ করুন আপনার 3D দৃশ্যে স্ট্যান্ডার্ড অ্যান্ড্রয়েড লেআউট এবং অ্যাক্টিভিটিগুলিকে স্থানিক প্যানেলে এম্বেড করে যা ভাসতে পারে বা বাস্তব-বিশ্বের পৃষ্ঠে নোঙ্গর করতে পারে।
  • GltfModelEntity : আপনার দৃশ্যে 3D মডেল রাখুন, অ্যানিমেট করুন এবং ইন্টারঅ্যাক্ট করুন। SceneCore বিদ্যমান মডেলগুলির সাথে একীকরণের সহজতার জন্য glTF ফাইল বিন্যাস সমর্থন করে।
  • স্থানিক অডিও : সম্পূর্ণ নিমজ্জিত, স্থানিক শব্দের জন্য আপনার 3D দৃশ্যে পরিবেষ্টিত এবং পয়েন্ট অডিও উত্স যোগ করুন।
  • StereoSurfaceEntity : SceneCore একটি Android সারফেসে রেন্ডার করা বিষয়বস্তুর বাম/ডান চোখের রাউটিং সমর্থন করে। এটি স্টেরিওস্কোপিক বিষয়বস্তুকে পাশে-পাশে বা টপ-বটম ফরম্যাটে রেন্ডার করতে ব্যবহার করা যেতে পারে, যেমন স্টেরিও ফটো, 3D ভিডিও বা অন্যান্য গতিশীলভাবে রেন্ডার করা UI। অ্যাপ্লিকেশন ভিডিও ডিকোডিং জন্য MediaPlayer বা ExoPlayer ব্যবহার করা উচিত.
  • কম্পোনেন্ট সিস্টেম: সিনকোর আপনার XR সামগ্রীতে সক্ষমতা যোগ করার জন্য একটি শক্তিশালী এবং নমনীয় উপাদান সিস্টেম অফার করে, যার মধ্যে ব্যবহারকারীদের মডেল এবং প্যানেলের সাথে সরানো, আকার পরিবর্তন করা এবং ইন্টারঅ্যাক্ট করার সুযোগ রয়েছে।
  • অ্যাঙ্কর : পাসথ্রু সক্ষম করে, আপনি প্যানেল এবং মডেলগুলিকে প্রকৃত পৃষ্ঠের সাথে সংযুক্ত করতে পারেন, ব্যবহারকারীদের তাদের বাস্তব-বিশ্বের পরিবেশে ভার্চুয়াল সামগ্রীর বিরামহীন একীকরণ প্রদান করে৷
  • ব্যবহারকারীর ভঙ্গি: ব্যবহারকারীর অবস্থানের চারপাশে আপনার বিষয়বস্তুকে অভিমুখী করতে ভার্চুয়াল দৃশ্যে ব্যবহারকারীর অবস্থান অ্যাক্সেস করুন।
  • স্থানিক সক্ষমতা : সম্পূর্ণরূপে অভিযোজিত অ্যাপ্লিকেশনগুলি তৈরি করুন যা উপলব্ধ থাকলে স্থানিক ক্ষমতার সুবিধা নেয়, যেমন UI সামগ্রীর 3D অবস্থান। শুধু তাই নয়, ব্যবহারকারী কীভাবে তাদের অ্যান্ড্রয়েড এক্সআর ডিভাইস ব্যবহার করছেন তার উপর ভিত্তি করে অভিজ্ঞতা পরিবর্তন করতে আপনার অ্যাপটি অ্যাপটি চালানোর সময় ক্ষমতার পরিবর্তনের জন্য নিরীক্ষণ করতে পারে।

পরিচিত সমস্যা

  • বর্তমানে Jetpack SceneCore ব্যবহার করার জন্য 30 এর একটি minSDK প্রয়োজন। একটি সমাধান হিসাবে 23 এর একটি minSDK দিয়ে তৈরি এবং চালানোর জন্য নিম্নলিখিত ম্যানিফেস্ট এন্ট্রি <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> যোগ করুন।
  • সেশনটি বিভিন্ন পরিস্থিতিতে অবৈধ হয়ে যেতে পারে যা স্বয়ংক্রিয়ভাবে একটি প্রধান প্যানেলের আকার পরিবর্তন করা, পেরিফেরাল সংযোগ করা এবং আলো এবং অন্ধকার মোডের মধ্যে পরিবর্তন সহ কার্যকলাপ পুনরায় তৈরি করে। আপনি যদি সেশনের অবৈধকরণের সমস্যার সম্মুখীন হন, তাহলে সমাধানের মধ্যে রয়েছে আপনাকে প্রধান প্যানেল অ-আকারযোগ্য করে তোলা, একটি গতিশীল প্যানেল সত্তা ব্যবহার করে, নির্দিষ্ট কনফিগার পরিবর্তনের জন্য কার্যকলাপ বিনোদন অক্ষম করা বা আলো/অন্ধকার মোড থিম পরিবর্তনগুলি অক্ষম করা।
  • GltfEntity-এ চলমান এবং পরিবর্তনযোগ্য উপাদান সমর্থিত নয়।
  • Entity.getSize() GltfEntity-এ সমর্থিত নয়।
  • Jetpack XR অ্যাপগুলিকে AndroidManifest-এ android.permission.SCENE_UNDERSTANDING অনুমতির অনুরোধ করতে হবে।
  • একটি সেশন তৈরি করা শুধুমাত্র একটি Android XR ডিভাইসে সমর্থিত। এই সময়ে, আপনি যদি একটি সেশন তৈরি করেন এবং এটি একটি নন-অ্যান্ড্রয়েড XR ডিভাইসে ব্যবহার করার চেষ্টা করেন, আপনি একটি RuntimeException পাবেন।
  • `SpatialEnvironment.setSpatialEnvironmentPreference() এর মাধ্যমে স্কাইবক্সটিকে নাল সেট করার ফলে নথিভুক্ত হিসাবে একটি কঠিন কালো স্কাইবক্স তৈরি হয় না। এর ফলে সিস্টেম ডিফল্ট স্কাইবক্স বা বর্তমান স্কাইবক্সে কোনো পরিবর্তন নাও হতে পারে।
  • SceneCore ক্লায়েন্টদের তাদের অ্যাপের নির্ভরতার জন্য তাদের Gradle কনফিগারেশনে implementation(“com.google.guava:listenablefuture-1.0”) যোগ করা উচিত। ভবিষ্যতের রিলিজে, সিনকোর এই লাইব্রেরিটিকে একটি api নির্ভরতা হিসাবে অন্তর্ভুক্ত করবে যাতে ক্লায়েন্টদের স্পষ্টভাবে এটি ঘোষণা করতে হবে না।
  • SceneCore ভুলভাবে com.google.guava:guava-31.1-android এবং com.google.protobuf:protobuf-javalite ট্রানজিটিভ নির্ভরতা হিসেবে অন্তর্ভুক্ত করে। যদি এর ফলে আপনার বিল্ডে ডুপ্লিকেট ক্লাস ত্রুটি হয়, তাহলে এই দুটি নির্ভরতা নিরাপদে বাদ দেওয়া যেতে পারে।
  • যদি আপনার অ্যাপ SceneCore ব্যবহার করে এবং ProGuard সক্ষম করে, আপনি একটি সেশন তৈরি করার সময় এটি ক্র্যাশ হয়ে যাবে। একটি সমাধান হিসাবে, ProGuard অক্ষম করুন। ProGuard কিভাবে সক্ষম করবেন সে সম্পর্কে আরও তথ্যের জন্য এই নির্দেশিকাটি দেখুন।