এতক্ষণ আমরা flat (2D) টেক্সচার নিয়ে কাজ করেছি। কিন্তু মব, custom ব্লক বা custom আইটেমের 3D চেহারা আসে geometry (মডেল) থেকে। এই লেসনে geometry-র মূল ধারণা পরিষ্কার করব — পরের মডিউলে নিজে মডেল বানাবে।
Geometry কী?
Geometry হলো একটা JSON ফাইল যা বর্ণনা করে বস্তুটা কয়টা box (কিউব) দিয়ে তৈরি, প্রতিটা box কোথায় বসবে, আর টেক্সচারের কোন অংশ কোন box-এ লাগবে (UV mapping)।
Bone — মডেলের কঙ্কাল
মডেলের প্রতিটা নড়াচড়া-যোগ্য অংশকে বলে bone (হাড়)। যেমন একটা মানুষের মডেলে আলাদা bone থাকে: head, body, leftArm, rightArm, leftLeg, rightLeg। অ্যানিমেশনে এই bone-গুলোই ঘোরে/নড়ে।
- Bone = নড়তে পারে এমন একটা অংশ (head, arm...)।
- একটা bone-এর ভেতরে এক বা একাধিক cube থাকে।
- Bone-এর parent থাকতে পারে — যেমন হাত body-র child, তাই body নড়লে হাতও নড়ে।
- pivot = bone কোন বিন্দুকে কেন্দ্র করে ঘুরবে (যেমন কাঁধ)।
models/entity/goblin.geo.json (সরলীকৃত)
1{2"format_version": "1.16.0",3"minecraft:geometry": [4{5"description": {6"identifier": "geometry.goblin",ⓘ7"texture_width": 64,ⓘ8"texture_height": 649},10"bones": [11{ⓘ12"name": "body",ⓘ13"pivot": [0, 12, 0],14"cubes": [ⓘ15{ "origin": [-4, 12, -2], "size": [8, 12, 4], "uv": [16, 16] }16]17},18{19"name": "head",20"parent": "body",ⓘ21"pivot": [0, 24, 0],22"cubes": [23{ "origin": [-4, 24, -4], "size": [8, 8, 8], "uv": [0, 0] }24]25}26]27}28]29}
- L6identifier: এই মডেলের নাম। entity ফাইলে এই "geometry.goblin" দিয়ে রেফার করবে।
- L7texture_width/height: এই মডেলের টেক্সচার ছবিটা কত পিক্সেল।
- L11একটা bone — এখানে 'body'।
- L12pivot: bone যে বিন্দুকে কেন্দ্র করে ঘুরবে [x, y, z]।
- L14cube: origin = কোথায় শুরু, size = কত বড়, uv = টেক্সচারের কোন অংশ।
- L20parent: "body" — তাই body নড়লে head-ও সাথে নড়বে।