কোয়ার্ট্রনগুলি 3D এ রোটেশন এবং স্কেলিং উপস্থাপনের জন্য কখন ব্যবহার করা উচিত?


13

কোয়ার্টারিয়নস (জটিল সংখ্যার একটি চার-মাত্রিক এক্সটেনশন) একটি 3 ডি ভেক্টরের ঘূর্ণন এবং স্কেলিং উপস্থাপন করতে ব্যবহার করতে পারে এবং 3 ডি ভেক্টরের উপর একটি কোয়ার্টেরিয়নের প্রয়োগের সাথে দুটি কোয়ার্টেরিয়ান গুণ থাকে, যার ফলে সংশ্লিষ্ট ট্রান্সফর্মেশন ম্যাট্রিক্স দ্বারা গুণনের চেয়ে কম অপারেশন প্রয়োজন হয়। তবে লিনিয়ার এবং অ্যাফাইন ট্রান্সফর্মেশন ম্যাট্রিক্সগুলি প্রায়শই পরিবর্তে ব্যবহৃত হয়, বিশেষত শেডার কোডে।

সংশ্লিষ্ট রূপান্তর ম্যাট্রিক্সের পরিবর্তে স্কেলিং এবং ঘূর্ণনকে তিন মাত্রায় উপস্থাপন করতে কোয়ার্টারিয়ন ব্যবহার করা কখন উপযুক্ত এবং পছন্দনীয় (গতি, স্থিতিশীলতা ইত্যাদির কারণে)?


উত্তর:


8

আমি ভুল ধারণা দিয়ে শুরু করতে চাই:

আধুনিক জিপিইউগুলি (বেশ কিছু সময়ের জন্য এনভিআইডিএ এবং দক্ষিণ দ্বীপপুঞ্জের থেকে এএমডি) অর্থাত্ হার্ডওয়ারে ভেক্টর / ম্যাট্রিক্স অপারেশনগুলিকে সমর্থন করে না। এগুলি অন্য দিকে ভেক্টর আর্কিটেকচার: একটি ভেক্টরের প্রতিটি উপাদান (x, y, z) সাধারণত 32- বা 64-মানের হয়, একটি লেনের প্রতিটি উপাদানগুলির জন্য মান থাকে। সুতরাং একটি 3 ডি ডট পণ্য সাধারণত কোনও নির্দেশ নয়, এটি একটি গুণ এবং দুটি গুণফল।

অতিরিক্তভাবে, গুণক-অ্যাডের মতো আদিম ক্রিয়াগুলি গণনা, কোয়ার্ট্রিয়েন দ্বারা একটি ভেক্টরকে রূপান্তর করা ম্যাট্রিক্স দ্বারা ভেক্টরকে রূপান্তর করার চেয়ে ব্যয়বহুল। একটি 3x3 ম্যাট্রিক্স দ্বারা একটি ভেক্টর রূপান্তর 3 গুণ এবং 6 গুনাত্মক সংযোজন, এবং একটি চৌকো দ্বারা একটি ভেক্টর রূপান্তর দুটি quaternion গুণ, যার প্রতিটি 4 গুণ এবং 12 গুণ গুণ যোগ করে। (আপনি এর চেয়ে কম নির্বুদ্ধি পেতে পারেন - এখানে একটি দ্রুততর পথে একটি রাইটআপ রয়েছে - তবে এটি এখনও ম্যাট্রিক্স দ্বারা ভেক্টরকে গুণ করার মতো সস্তা নয়))

যাইহোক, কর্মক্ষমতা সর্বদা নির্ধারণ করা হয় না এটি সম্পাদিত ALU অপারেশনগুলির সংখ্যা গণনা করে। কোয়ার্ট্রিয়নের সমমানের ম্যাট্রিক্সের চেয়ে কম স্থানের প্রয়োজন (ধরে নিচ্ছেন আপনি কেবল খাঁটি রোটেশন / স্কেল করছেন), এবং এর অর্থ কম সঞ্চয় স্থান এবং কম মেমরি ট্র্যাফিক। এটি অ্যানিমেশনে প্রায়শই গুরুত্বপূর্ণ (যা সুবিধামত প্রায়শই যেখানে কোয়ার্টেরিয়েন্সগুলির সুন্দর অন্তরঙ্গ বৈশিষ্ট্যগুলি প্রদর্শিত হয়)।

ব্যতীত:

  • ম্যাট্রিকগুলি আরও বেশি স্থান ব্যবহার করে কারণ তারা আরও ক্রিয়াকলাপ সমর্থন করে। একটি 3x3 ম্যাট্রিক্সে ননউনিফর্ম স্কেল, স্কিউ, প্রতিবিম্ব এবং অরথোগোনাল প্রজেকশন থাকতে পারে।
  • ম্যাট্রিকগুলি স্বাভাবিকভাবে ভিত্তি ভেক্টর হিসাবে বিবেচনা করা যেতে পারে এবং সহজেই সেই ভেক্টরগুলি থেকে তৈরি করা যেতে পারে।
  • একটি চৌম্বককে অন্য দ্বারা গুণিত করা (দুটি ঘূর্ণন রচনা করা) একটি ম্যাট্রিক্সকে অন্য দ্বারা গুণিত করার চেয়ে কম অপারেশন।

মজার বিষয়, এবং ইন্টেল হাসওল জিপিইউ এআরবিএফপি-র DP3নির্দেশে 3 গুণ ও 2 সংযোজন হিসাবে প্রয়োগ করা হয়েছে, INTEL_DEBUG=fsইন্টেল লিনাক্স ড্রাইভারের আউটপুট দেখুন : পেস্ট.বুন্টু . com / 23150494 । নিশ্চিত না যে এটি ঠিক দরিদ্র ড্রাইভার বা এইচডব্লিউয়ের সত্যিকারের বিশেষ ভেক্টর মুল নির্দেশনা নেই।
Ruslan

@ রুসলান খুব সম্ভবত যে হার্ডওয়্যারটিতে কেবল বিশেষ ভেক্টর মুল নির্দেশনা নেই। আরও নির্ভুলভাবে, যদিও তারা তা করে তবে তারা আর্কিটেকচারের সিমডি প্রস্থ (লেনগুলি) জুড়ে ভেক্টরাইজড হয়, ভ্যাক 3 / ভেক 4 মাত্রা জুড়ে ভেক্টরাইজ হয় না।
জন কলসবেক

4

(এখানে প্রচুর তথ্য আমি নির্লজ্জভাবে আমার নিজের কিছু নোট সহ যুজা এবং র‌্যাচেট ফ্রিকের উত্তরগুলি থেকে ধার করে নিয়েছি))

ম্যাট্রিক্স সুবিধা

  • অ ইউনিফর্ম স্কেলিং এবং আবর্তন, স্কিউং, প্রক্ষেপণ
  • অনুবাদ (দ্বৈত চৌকোণ ব্যবহার না করা)
  • নেটিভ হার্ডওয়্যার সমর্থন
  • কোয়ার্ট্রিয়েনগুলি প্রায়শই নির্মাণের জন্য ট্রানসেন্ডেন্টাল ফাংশন প্রয়োজন
  • বোঝা সহজ

কোয়ার্টারিয়ন সুবিধা

  • একটি ভেক্টর রূপান্তর করতে কম অপারেশন প্রয়োজন (বা না - জন এর উত্তর দেখুন)
  • অন্য কোয়াট দ্বারা রূপান্তরকরণে অনেক কম অপারেশন প্রয়োজন
  • কোয়ার্টারিয়নস 4 টি ফ্লোট দখল করে (8 টি যদি এটি দ্বৈত হয়) তবে ম্যাট্রিকেস 9-16 ফ্লোট দখল করে

আপনি যদি জানেন যে আপনি কেবল অভিন্ন অনমনীয় শরীরের রূপান্তর করতে চলেছেন তবে ভেক্টর / কোয়াট জুটি সাধারণত স্ট্রোক স্পেসের ক্ষেত্রে 3x4 ম্যাট্রিক্সে শক্ত জয় (ভেক্টর / কোয়াট: 7 বা 8 ফ্লোট বনাম ম্যাট 3 এক্স 4: 12 ফ্লোট) এবং প্রক্রিয়াজাতকরণ গতি। যদি কোয়ার্টেরিয়ানস এখনও আপনার কাছে রহস্যজনক ভুডো হয় তবে তাদের উপর এই ওয়েব সিরিজটি ব্যবহার করে দেখুন


3

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

ম্যাট্রিকগুলি কেবল খুব সুবিধাজনক যখন আপনার এমন জায়গাগুলি তৈরি করা দরকার যেখানে আপনি ভিত্তি ভেক্টরগুলি জানেন। যেমন অরোগ্রাফিকগুলিতে অনুমান করার সময়। এছাড়াও ম্যাট্রিক্স স্পেসে দৃষ্টিভঙ্গি রূপান্তর করা সহজ। প্রোজেক্টিং স্টাফের ক্ষেত্রে ম্যাট্রিকগুলি উচ্চতর হয়।

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

নোট করুন গ্রাফিক্স কার্ডগুলিতে ম্যাট্রিক্স অপারেশনের জন্য ডেডিকেটেড পাইপ রয়েছে।


আমি আসলে এই সম্পর্কে চিন্তা ছিল। ইভটি ম্যাট্রিক্স এবং কোট হায়ারারচির চেয়ে কী কী মডেলিং পাইপগুলির ব্যবহার করতে পারে সে সম্পর্কে জিজ্ঞাসা করার বিষয়েও মন্তব্য করেছিলেন।
joojaa

3

একটি চৌম্বকটি কেবল অভিন্ন স্কেলিং এবং ঘূর্ণন উপস্থাপন করতে পারে তাই আপনার যদি অন্য কিছু প্রয়োজন হয় তবে এটি উপস্থাপন করার জন্য আপনাকে কিছু যুক্ত করতে হবে।

অনুবাদ একটি একক অতিরিক্ত ভেক 3 (বা দ্বৈত চৌকো ব্যবহার করে ) দিয়ে করা যেতে পারে । তবে অ-ইউনিফর্ম স্কেলিং এবং শিয়ারিংকে ম্যাট 4 দ্বারা আরও ভাল উপস্থাপন করা হয়। প্রজেকশন ট্রান্সফর্ম (মূলত অ-ইউনিফর্ম স্কেলিং এবং জেড এবং ডাব্লু অদলবদল) একটি চৌম্বক দ্বারা প্রতিনিধিত্ব করা যায় না।

ইন্টারপোলটিংয়ের সময় কোয়ার্টেরিয়নের একটি বড় সুবিধা রয়েছে। স্ফটিকটি চতুর্ভুজ ব্যবহার করে খুব সহজেই গণনা করা হয়।

একটি কোয়ার্টেরিয়ন (বা দ্বৈত কোয়ার্টেরিয়ন) প্রয়োগ করা জিপিইউতে নির্মিত হয় না তাই ভেক্টর অপারেশনগুলি ব্যবহার করে এটি প্রয়োগ করা দরকার। বেশিরভাগ কোয়ার্টারিয়ন গ্রন্থাগারগুলি ধরে নিয়েছে যে আপনি কোয়ার্টারিয়নটি স্কেল উপস্থাপনের জন্য ব্যবহার করবেন না যাতে এটি সন্ধানের জন্য কিছু।

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