কোনও মডেলের নির্দিষ্ট অংশগুলিকে কীভাবে রঙিন করা যায় - আরটিএস গেমগুলির মতো এই দলের রঙ রয়েছে?


16

আরটিএস গেমসে আমরা দেখতে পাই এমন কিছু বাস্তবায়নের জন্য আমি প্রয়োজন: দলের রঙ। মূলত, আমি একটি মডেলের কিছু অংশ রঙিন করার উপায় খুঁজছি। আমি কীভাবে এটি অর্জন করব? এমনকি কোথা থেকে শুরু করব তা আমার কোনও ধারণা নেই। আমার কি প্রথমে 3 ডি মডেলের কিছু সামঞ্জস্য করা দরকার?

উত্তর:


18

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

আপনি যদি টেক্সচারটি আঁকেন যেন রঙিন অঞ্চলগুলি গ্রেস্কেল হয় তবে আপনি কোন অঞ্চলগুলিকে রঙিন করতে হবে তা নির্ধারণের জন্য আলফা চ্যানেলটি ব্যবহার করতে পারেন।

সুতরাং আপনার ছায়ায় আপনি যেতে পারেন (সবচেয়ে সহজ উপায় জন্য):

float3 finalColor;
if (colorFromTex.a > 0)
 finalColor = colorFromTex.rgb;
else
 finalColor = colorFromTex.rgb*myTintColor.rgb;

এটি অনুকূল নয় যদিও আপনার একটি শক্ত স্থানান্তর হবে এবং আপনার শেডারে একটি শাখা থাকবে। পরিবর্তে এটি আরও ভাল:

float3 finalColor = lerp(colorFromTex.rgb, 
    colorFromTex.rgb*myTintColor.rgb, colorFromTex.a);

আপনি কীভাবে 3 ডি ম্যাক্সের 3 ডি মডেলগুলিতে ডাইরেক্টএক্স শেডার পাবেন তা জানতে পেরেছেন? আমি যখন এক ধরণের শেডারের সাথে একটি উপাদান সেট করার চেষ্টা করেছি এবং শেডারটিকে প্রতিস্থাপনের জন্য কল করুন.ফএক্স সেট করে মডেলটি রফতানি করলাম, ফলাফল ছিল Error 1 Missing asset "C:\Users\Kai\AppData\Local\Temp\fbx.shader.temp.1064.2756\ReplaceColor.fx"। আমি বুঝতে পারি না যে আমি কীভাবে এটি সঠিক হতে পারি।
rFactor

আপনি যখন এটি লোড হয়? এটি অদ্ভুত বলে মনে হচ্ছে যে এফবিএক্সের পথটি একটি অস্থায়ী ফোল্ডারে নির্দেশ করবে। ফাইলটি কি বিদ্যমান? আমি 3 ডি ম্যাক্স থেকে এফবিএক্স রফতানির সাথে খুব বেশি পরিচিত নই তবে পাথগুলিকে আপেক্ষিক করতে আপনার ফাইলগুলি সম্পাদনা করতে (বা কোনও বিকল্প সেট করা দরকার) হতে পারে।
লুকাস

ভাল কৌশল, তবে আপনি যদি "tintability" বোঝাতে আলফা চ্যানেলটি ব্যবহার করেন তবে আপনার চূড়ান্ত রঙের আলফা উপাদানটি পুনরায় সেট করতে ভুলবেন না।
চরস্তর

3

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

অবশ্যই আপনার কেবল দুটি টিম থাকলে এটি কাজ করে। আপনি এটির চেয়ে বেশি সময় ধরে পালিয়ে যেতে পারলে এটি অদক্ষ হতে শুরু করে।

আর একটি উপায় দুটি টেক্সচার মিশ্রন করা হয় - প্রথমটি হচ্ছে মডেলটির বেস টেক্সচার, দ্বিতীয়টি রঙিন ওভারলে যা আপনি রানটাইমে তৈরি করতে পারেন।

তৃতীয় উপায়টি হ'ল বেস মডেলের রঙ পরিবর্তন করা এবং মডেলটির সেই অংশগুলির উপর কোনও টেক্সচার (বা আংশিক স্বচ্ছ টেক্সচার) নেই যা আপনি দলের রঙ দেখাতে চান।


2

টিমের রঙের সাথে একটি টেক্সচার আলফা চ্যানেল উত্সর্গকরণ ডিএক্সটি টেক্সচার 2x আরও বড় করে তোলে, তাই আমি বরং টিমের রঙ গণনা করার জন্য ক্রোমা কীটি ব্যবহার করব । আপনার টেক্সচারে একটি রঙকে (যেমন সবুজ, নীল, ম্যাজেন্টা) "সংরক্ষিত রঙ" হিসাবে মনোনীত করুন।

ইঞ্জিনটি বুট হয়ে গেলে, প্রতিটি দলের বর্ণের জন্য একটি ম্যাট্রিক্স তৈরি করুন যা "রঙের রঙ" টিমের রঙের দিকে ঘোরায়। কোনও টিম অবজেক্ট আঁকার ঠিক আগে, এই ম্যাট্রিক্সটিকে পিক্সেল শেডার ধ্রুবক হিসাবে সেট করুন।

পিক্সেল শেডারে টিম রঙের ম্যাট্রিক্স দ্বারা পিক্সেল রঙ রূপান্তর করুন। পিক্সেলের ক্রোমার কোণটিকে "সংরক্ষিত রঙের" ক্রোমাতে আনুপাতিক পরিমাণে, রূপান্তরিত পিক্সেলের রঙের সাথে অপরিবর্তিত পিক্সেল রঙটি লিপ করুন।

এটির জন্য আপনাকে কিছু ALU নির্দেশাবলীর ব্যয় করতে হবে এবং পিক্সেল শেডারটিতে ট্রিগার করতে হবে তবে এটি আপনার টেক্সচার ক্যাশেটিকে টেক্সচার 2x এর মতো বড় করে তুলতে অনেক বেশি সস্তা।

আপনার প্রতিটি রঙের জন্য একটি টেক্সচার চ্যানেলটি ব্যয় না করে একাধিক ক্রোমা কী (যেমন, ম্যাজেন্টা এবং সায়ান প্রাথমিক এবং গৌণ টিমের রঙের সাথে ম্যাপ করা যায়) রাখার ক্ষমতাও রয়েছে।


1

আমার কৌশলটি হবে: 2 টেক্সচারযুক্ত: একটি প্রধান টেক্সচার, একটি দ্বিতীয় টেক্সচার মূলটি কেবল ওভারলাইং করে যা কেবল রঙগুলি হতে চান parts আপনি যেমন চান তেমন দ্বিতীয় জমিনের রঙ পরিবর্তন করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.