আমি কীভাবে স্প্রেট শীটগুলিকে নন-ইউনিফর্ম স্প্রাইট মাত্রার সাথে পরিচালনা করতে পারি?


14

অ-ইউনিফর্ম স্প্রাইট মাত্রা সহ স্প্রিটশিটের জন্য , আমি প্রতিটি পৃথক স্প্রাইটের (যেমন নীচের চিত্রের নীল বাক্সগুলিতে / আমি কেবল কয়েকটি উদাহরণ আঁকার জন্য) বাউন্ডিং-আয়তক্ষেত্রগুলি কীভাবে পেতে পারি ?

আমি যা নির্ধারণ করতে চাই তা হ'ল: offset_x, offset_y, width, height

এখানে চিত্র বর্ণনা লিখুন

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

সম্পাদনা: মন্তব্য এবং উত্তরগুলি পড়ে, আমি আমার প্রশ্নটিকে আরও অন্তর্ভুক্ত করার জন্য পুনরায় চাপ দিয়েছি। একটি গেমের স্প্রিটশিট ব্যবহারের আসল প্রক্রিয়া। পূর্বে, প্রশ্নটিতে লোকেরা কেন অ-ইউনিফর্ম মাত্রার স্প্রিটশিট তৈরি করে এবং আমি কীভাবে এটি মোকাবেলা করতে পারি সেই প্রশ্নগুলিতে।


1
আমার কাছে তাদের সকলের কাছে অভিন্ন আকার রয়েছে বলে মনে হচ্ছে, স্থানটি রঙ দ্বারা পূরণ করা হচ্ছে না তা কেবল শূন্যে আলফা সেট করে পিক্সেল।
ডেরেক

উত্তর:


8

অ-অ-অভিন্ন মাত্রার বেশিরভাগ স্প্রাইট শিটগুলিতে সাধারণত স্প্রিটের অ্যাঙ্কর থাকে এমন কিছু ধরণের মেটা ডেটা থাকে। অনেকগুলি সরঞ্জাম রয়েছে যা সম্পূর্ণ আলফা পিক্সেলগুলি ছড়িয়ে দেওয়ার মতো জিনিসগুলি করে এবং আপনার প্রয়োজনীয় ডেটা দেয় যাতে এই ডেটা ম্যানুয়ালি তৈরি হয় না।

আপনার যদি এই মেটা ডেটা না থাকে আপনার নিজের এটি লেখতে হবে। সর্বাধিক নির্ভুল উপায় হ'ল আপনি নিজের প্রশ্নে যা বলেছেন তা কেবল হাতে হাতে করা। এটি কিছুটা সময় নিতে পারে তবে নতুন স্প্রাইট তৈরির চেয়ে এটি সম্ভবত দ্রুত।


এটি - স্বতঃ-সনাক্তকরণের ভিত্তিতে পন্থাগুলির ব্যবহারগুলি ব্যবহার করার ক্ষেত্রে, বাস্তবে তারা চতুর এবং ত্রুটিযুক্ত। আপনি ইতিমধ্যে পরী (আপনার sprites উৎপত্তি জন্য মেটাডাটা প্রয়োজন না , ডান একটি মূল আছে?) তাই অতিরিক্ত তথ্য কমই অত্যধিক বোঝা হয়। শিল্পীর স্বতন্ত্র স্প্রাইটের আকার কী তা আপনার অ্যাপ্লিকেশনটির চেয়ে সর্বদা ভালভাবে জানা উচিত।
স্টিভেন স্টাডনিকি

+1। স্প্রেটসের সাথে মেটাডেটা সরবরাহ করা এটি বুদ্ধিমানের সাথে সমাধানের গ্যারান্টিযুক্ত ।
বারটেক বানাচেউইচজ

5

প্রতিটি স্প্রাইটের সীমাবদ্ধ আয়তক্ষেত্রগুলি সনাক্ত করতে আপনি চিত্রটিতে বিশ্লেষণ করতে পারেন, সেই সীমাবদ্ধ আয়তক্ষেত্রগুলি বাছাই করুন (সম্ভবত ন্যূনতম এক্স, তারপর ওয়াই বৃদ্ধি করে) এবং আপনার কাছে স্প্রাইড শীটের ফ্রেমের সাথে সীমাবদ্ধ অঞ্চলগুলির একটি সেট থাকবে।

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

যদিও এটি করা সহজ, যদিও। মূলত আপনি বৈশিষ্ট্য সনাক্তকরণ এবং বিশেষত ব্লব সনাক্তকরণ যা মেশিন দর্শন সমস্যা are আপনি ইমেজটি থ্রেশোল্ড করতে পারেন (কালো এবং সাদা পর্যন্ত) এবং একটি প্রান্ত সনাক্তকরণ কৌশল ব্যবহার করতে পারেন । এই কৌশলগুলির পিছনে প্রাসঙ্গিক গণিতটি আমার তুলনায় সেই লিঙ্কগুলিতে আরও ভালভাবে ব্যাখ্যা করা হয়েছে, এবং আপনি যেখানে সেই গণিতটি নিজে প্রয়োগ করতে বোধ করেন না সেখানে কয়েকটি গ্রন্থাগার রয়েছে যা আপনাকে সহায়তা করতে পারে। নীচের লিঙ্কগুলির সেটটি আমার কাছে সবচেয়ে প্রতিশ্রুতিবদ্ধ বলে মনে হয়েছিল:


1
+1 টি। আমি সম্মত হই যে সঠিক স্প্রাইটের সীমা নির্ধারণের জন্য কিছু কম্পিউটার উপলব্ধি / চিত্র-ম্যানিপুলেশন দক্ষতা প্রয়োজন। কখনও কখনও এটি এমনকি অসম্ভবও হতে পারে, উদাহরণস্বরূপ যদি আপনি অ্যানিমেশন শেল করার জন্য কচ্ছপের দিকে তাকান। অন্যান্য অ্যানিমেশন ফ্রেমের তুলনায় সেই সঠিক অবস্থান নির্ধারণ করা শক্ত হতে চলেছে। আর জন্য কেন : এটা জমিন স্থান অনুকূল ব্যবহারের কারণ সম্ভবত আছে। এবং সাধারণত স্থানাঙ্কগুলির সাথে একটি ফাইল যেমন একটি স্প্রিটশিট সরবরাহ করা উচিত, তবে আপনি যদি গুগল ইমেজ অনুসন্ধান থেকে এটি সহজভাবে গ্রহণ করেন তবে এটিতে এই তথ্যের অভাব হতে পারে।
বাম্মজ্যাক

আপনি একটি ভাল বক্তব্য উত্থাপন: আমার উত্তর স্প্রাইট উত্স সমস্যা সমাধান করে না; এটি কেবল আঁট-ফিটিং বাউন্ডিং আয়তক্ষেত্রগুলি সন্ধান করতে পারে এবং নন-ইউনিফর্ম স্প্রাইটসযুক্ত একটি শীটের জন্য প্রতিটি ফ্রেমের উত্স জানা মোটামুটি গুরুত্বপূর্ণ। আপনি কিছু (সম্ভাব্য ডোমেন নির্দিষ্ট) অনুমান না করা থাকলে এটি স্বয়ংক্রিয়ভাবে করা শক্ত হবে উদাহরণস্বরূপ যে উত্সটি সর্বদা (প্রস্থ / ২, সর্বোচ্চ ওয়াই) বা কিছু হবে something

4

আমি এই জাতীয় অ-ইউনিফর্ম স্প্রিটশিটের জন্য আমার নিজের সরঞ্জাম তৈরি করেছি। এটি অফসেটগুলি সম্পাদনা করতে পারে, এবং অন্যদের জন্য। আপনাকে ধারণা দেওয়ার জন্য এখানে একটি স্ক্রিনশট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


দেখে মনে হচ্ছে আপনি অ-ইউনিফর্মের একটি মাত্র অ্যানিমেশন সমন্বিত একটি অভিন্ন স্প্রিটশিট তৈরি করেছেন? নাকি আমি এর ভুল ব্যাখ্যা দিচ্ছি?
বেন

না, আমি একটি অ-ইউনিফর্ম স্প্রিটশিট খুলি এবং স্প্রিটগুলির চারপাশে একটি আয়তক্ষেত্র আঁক (যা সঠিক আকারে স্বয়ংক্রিয়ভাবে সঙ্কুচিত হয়)। একবার ive পুনরাবৃত্তি করে একটি অ্যানিমেশন তৈরি করে যে আমি প্রতিটি অ্যানিমেশন খেলতে পারি এবং আমার প্রয়োজন অনুসারে অফসেটটি সামঞ্জস্য করতে পারি।
অজ্ঞাতনামা

আপনি সেখানে তৈরি খুব ঝরঝরে সরঞ্জামের মতো মনে হচ্ছে। মন কি শেয়ার করতে চাই?
একিপুত্রডি

@ কাইকিপুত্রডি, আমি দুঃখিত তবে এটি সম্পূর্ণ হওয়া অনেক দূরে তবে আমি একটি অন্য সরঞ্জামের প্রস্তাব দিচ্ছি (যা মূলত আমাকে অনুপ্রাণিত করেছে)। আপনি এটি এখানে খুঁজে পেতে পারেন: colourclash.com/sprite_buddy/sprite_buddy.html
বেনামে

0

টেক্সচারপ্যাকার পরীক্ষা করে দেখুন

http://www.texturepacker.com/

এটি এর মতো কোনও ফাইলকে আউটপুট দেয় (আপনার পূর্বনির্ধারিত সেটিংসের উপর নির্ভর করে)

    {
    "filename": "image_front_1",
    "frame": {"x":1,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":2,"w":36,"h":40},
    "sourceSize": {"w":36,"h":40}
},
{
    "filename": "image_front_2.png",
    "frame": {"x":36,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":36,"h":42},
    "sourceSize": {"w":36,"h":42}
},
{
    "filename": "image_front_3.png",
    "frame": {"x":71,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":34,"h":52},
    "sourceSize": {"w":36,"h":42}
},
{
    "filename": "image_front_4.png",
    "frame": {"x":106,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":34,"h":52},
    "sourceSize": {"w":36,"h":42}
}

এই ডেটা ব্যবহার করে, আপনি সহজেই চিত্রটি থেকে পৃথক আয়তক্ষেত্রগুলি দখল করতে পারেন।


এটি কোন প্রযুক্তিটি প্রশ্ন ব্যবহার করার নয়। কেবলমাত্র কোনও সরঞ্জামের লিঙ্ক এবং তার আউটপুট উদাহরণের সাথে উত্তর দেওয়া আমার মতে যথেষ্ট নয়।
মাইকেলহাউস

-1

স্প্রাইটবুদ্ধি ডট কম আমার পক্ষে দুর্দান্ত কাজ করেছে। সাইটে নিজেই কোনও সহায়তা খুঁজে পেল না, তবে এই গুগল গ্রুপগুলির পোস্টটি এটি সত্যিই ভালভাবে ব্যাখ্যা করেছে। এটি আপনার স্প্রাইটের সীমানা স্বয়ংক্রিয়ভাবে অনুমান করে, আপনাকে এটি সামঞ্জস্য করতে দেয় এবং আপনাকে এনিমেশন সিকোয়েন্সগুলিতে সাজিয়ে তুলতে দেয়। তারপরে এটি জাসন বা এক্সএমএল উভয়ের মধ্যেই এইগুলির জন্য একটি মেটাডেটা ফাইল আউট করে। তারপরে আপনাকে যা করতে হবে তা হল আপনার গেমের সেই ডেটা ফাইলকে সঠিক বাউন্ডিং আয়তক্ষেত্রগুলি পার্স করা।


1
এটি কোন প্রযুক্তিটি প্রশ্ন ব্যবহার করার নয়। আরও, এই সরঞ্জামটি ইতিমধ্যে একটি মন্তব্যে পরামর্শ দেওয়া হয়েছিল।
MichaelHouse

আমি আমার উত্তর আপডেট করেছি, তবে আমি দ্বিমত পোষণ করছি যে এটি ওপি-র প্রশ্নের উত্তর দেয় না: "আমি যা নির্ধারণ করতে চাই তা হ'ল: অফসেট_ এক্স, অফসেট_ওয়াই, প্রস্থ, উচ্চতা।" গেম রান-টাইমে এটি অবশ্যই ঘটবে কিনা তা (যা ভয়ঙ্করভাবে অ-পারফরম্যান্ট হবে) বা নির্দিষ্ট করা হয়নি। "সম্পাদনা: [...] আমি এটিকে আরও অন্তর্ভুক্ত করার জন্য আমার প্রশ্নটির পুনঃব্যক্ত করেছি a গেমটিতে স্প্রিটশিট ব্যবহারের আসল প্রক্রিয়া," এটি আমার প্রক্রিয়া। আমি স্প্রেটবুদ্ধি ব্যবহার করে উপযুক্ত জেএসএন ফাইল তৈরি করি তারপরে আমার প্রয়োজনীয় ডেটা পাওয়ার জন্য এটি আমার গেমটিতে পার্স করুন।
CletusW

1
@ ক্ল্যাটাস ডাব্লু: ভাল উত্তরগুলি ব্যাখ্যা করবে যে কেন সেই সরঞ্জামটি আপনার প্রক্রিয়াটির জন্য এত ভাল কাজ করে, এটি কী করে এবং কীভাবে সহায়তা করে ইত্যাদি etc. আমার উত্তরটি পড়তে সক্ষম হওয়া উচিত এবং তারপরে কোনও সরঞ্জাম কীভাবে নির্বাচন করতে হয় বা নিজের লেখা লিখতে হয় তাও আমার জানা উচিত। যদি আপনি আপনার প্রিয় উদাহরণের সাথে লিঙ্ক করেন তবে এটি কেবলমাত্র বোনাস, উত্তরের মাংস নয়।
সান মিডলডিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.