প্রজেকশন এবং মডেলভিউ ম্যাট্রিক্সের ক্ষেত্রে পরিচয় ম্যাট্রিক্স মূলত ম্যাট্রিক্সটিকে তার ডিফল্ট অবস্থায় ফিরিয়ে দেয়।
আপনি যেমন আশাবাদী জানেন, glTranslate
এবং glRotate
সর্বদা ম্যাট্রিক্সের বর্তমান অবস্থার সাথে আপেক্ষিক। উদাহরণস্বরূপ, যদি আপনি কল করেন তবে আপনি glTranslate
ম্যাট্রিক্সের বর্তমান 'অবস্থান' থেকে অনুবাদ করছেন, উত্স থেকে নয়। তবে আপনি যদি শুরুতে শুরু করতে চান, আপনি যখন কল করবেন glLoadIdentity()
তখনই আপনি glTranslate
ম্যাট্রিক্স থেকে শুরু করতে পারেন যা এখন উৎপত্তিস্থলে রয়েছে বা glRotate
ম্যাট্রিক্স থেকে এখন ডিফল্ট দিকনির্দেশিত।
আমি মনে করি বুনের উত্তর, এটি 1 এর সমতুল্য, ঠিক সঠিক নয়। ম্যাট্রিক্সটি আসলে এটির মতো দেখাচ্ছে:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
এটাই পরিচয় ম্যাট্রিক্স। বুন সঠিক, গাণিতিকভাবে, যে কোনও ম্যাট্রিক্স সেই ম্যাট্রিক্সের সাথে গুণিত হয়েছে (বা এমন ম্যাট্রিক্স যা এরকম দেখতে লাগে; ডায়াগোনালগুলি, অন্য সমস্ত 0s) এর ফলাফল মূল ম্যাট্রিক্সের ফলস্বরূপ হবে তবে আমি বিশ্বাস করি না যে তিনি কেন এটি গুরুত্বপূর্ণ তা ব্যাখ্যা করেছিলেন।
কেন এটি গুরুত্বপূর্ণ তা কারণ ওপেনজিএল প্রতিটি ম্যাট্রিক্সের মাধ্যমে সমস্ত অবস্থান এবং আবর্তনকে গুণ করে; সুতরাং উদাহরণস্বরূপ আপনি যখন বহুভুজ আঁকেন ( glBegin(GL_FACE)
কিছু পয়েন্ট glEnd()
), এটি মোডেলভিউ দিয়ে গুণ করে এটি "ওয়ার্ল্ড স্পেস" এ অনুবাদ করে এবং তারপরে প্রজেক্ট ম্যাট্রিক্সের সাথে গুণ করে এটি 3D থেকে 2D এ অনুবাদ করে এবং এটি দেয় স্ক্রিনে 2 ডি পয়েন্ট, গভীরতার সাথে (স্ক্রিন 'ক্যামেরা' থেকে) যা পিক্সেল আঁকতে ব্যবহার করে। কিন্তু যখন এই ম্যাট্রিকগুলির মধ্যে একটি আইডেন্টিটি ম্যাট্রিক্স হয়, পয়েন্টগুলি পরিচয় ম্যাট্রিক্সের সাথে গুণিত হয় এবং তাই পরিবর্তিত হয় না, সুতরাং ম্যাট্রিক্সটির কোনও প্রভাব নেই; এটি পয়েন্টগুলি অনুবাদ করে না, এটি ঘোরায় না, এটি তাদের যেমন রয়েছে তেমন ছেড়ে দেয়।
আমি আশা করি এটি আরও কিছুটা স্পষ্ট করে!