না এটি কোনও ইঞ্জিন বাগ বা কোনও নির্দিষ্ট ঘূর্ণন উপস্থাপনের একটি শৈল্পিক নয় (এগুলিও ঘটতে পারে, তবে এই প্রভাবটি প্রতিটি সিস্টেমের ক্ষেত্রে প্রযোজ্য যা ঘূর্ণন, চতুর্ভূত অন্তর্ভুক্ত) প্রতিনিধিত্ব করে)।
ত্রিমাত্রিক স্থানে ঘূর্ণন কীভাবে কাজ করে সে সম্পর্কে আপনি একটি আসল সত্যটি আবিষ্কার করেছেন এবং অনুবাদ হিসাবে অন্যান্য রূপান্তরগুলি সম্পর্কে এটি আমাদের অন্তর্দৃষ্টি থেকে প্রস্থান করে:
যখন আমরা একাধিক অক্ষের উপর আবর্তন রচনা করি, ফলাফলটি আমরা পাই কেবলমাত্র প্রতিটি অক্ষের জন্য প্রয়োগ করা মোট / নেট মান নয় (যেমন আমরা অনুবাদ আশা করতে পারি)। যে আবর্তনে আমরা আবর্তনগুলি প্রয়োগ করি সেই ফলটি পরিবর্তিত হয়, যেহেতু প্রতিটি ঘোরানো অক্ষগুলি চালিত করে যার পরবর্তী ঘূর্ণনগুলি প্রয়োগ করা হয় (যদি বস্তুর স্থানীয় অক্ষগুলির সাথে ঘোরানো হয়), বা বস্তুর এবং অক্ষের মধ্যে সম্পর্ক (যদি বিশ্বের ঘোরানো হয়) অক্ষ)।
সময়ের সাথে অক্ষের সম্পর্কের পরিবর্তনগুলি প্রতিটি অক্ষকে "অনুমিত" করা উচিত তা সম্পর্কে আমাদের স্বজ্ঞাকে বিভ্রান্ত করতে পারে। বিশেষত, ইয়াবা এবং পিচ ঘূর্ণনের নির্দিষ্ট সংমিশ্রণগুলি রোল রোটেশনের একই ফলাফল দেয়!
আপনি যাচাই করতে পারেন যে প্রতিটি পদক্ষেপটি আমাদের অনুরোধ করা অক্ষটি সম্পর্কে সঠিকভাবে ঘুরছে - আমাদের ইনপুটটির সাথে হস্তক্ষেপ বা দ্বিতীয়-অনুমান করাতে আমাদের স্বরলিপিটিতে কোনও ইঞ্জিন বিচূর্ণতা বা শিল্পকলা নেই - গোলাকার (বা হাইপার্ফেরিকাল / চৌম্বক) ঘূর্ণনের প্রকৃতিটির অর্থ কেবল আমাদের রূপান্তর "র্যাপ একে অপরের উপর "কাছাকাছি"। এগুলি স্থানীয়ভাবে, ছোট ঘোরার জন্য অরথগোনাল হতে পারে, তবে তারা স্তূপাকার হিসাবে আমরা দেখতে পাই যে তারা বিশ্বব্যাপী অরথোগোনাল নয়।
এটি উপরেরগুলির মতো 90-ডিগ্রি টার্নগুলির জন্য সবচেয়ে নাটকীয় এবং স্পষ্ট, তবে ঘোরাঘুরির অক্ষগুলি অনেকগুলি ছোট ছোট ঘূর্ণায়মানের উপরেও হামাগুড়ি দেয়, যেমন প্রশ্নটিতে প্রদর্শিত হয়েছে।
সুতরাং, আমরা এটি সম্পর্কে কি করব?
যদি আপনার কাছে ইতিমধ্যে পিচ-ইয়ু রোটেশন সিস্টেম রয়েছে, অযাচিত রোলকে অপসারণের দ্রুততম উপায়গুলির মধ্যে একটি হ'ল ঘূর্ণনগুলির মধ্যে কোনও একটিকে অবজেক্টের স্থানীয় অক্ষগুলির পরিবর্তে গ্লোবাল বা প্যারেন্ট ট্রান্সফর্মেশন অক্ষগুলিতে পরিচালনা করতে পরিবর্তন করা হয়। এইভাবে আপনি দুজনের মধ্যে ক্রস-দূষণ পেতে পারেন না - একটি অক্ষর একেবারে নিয়ন্ত্রিত থাকে।
এখানে পিচ-ইয়াও-পিচের একই অনুক্রমটি যা উপরের উদাহরণে রোল হয়ে উঠেছে, তবে এখন আমরা আমাদের ইয়াজটিকে বস্তুর পরিবর্তে বিশ্বব্যাপী Y অক্ষের চারপাশে প্রয়োগ করি
সুতরাং আমরা "স্থানীয়ভাবে পিচ, বিশ্বব্যাপী ইয়াও" মন্ত্রটি দিয়ে প্রথম ব্যক্তির ক্যামেরাটি ঠিক করতে পারি:
void Update() {
float speed = lookSpeed * Time.deltaTime;
transform.Rotate(0f, Input.GetAxis("Horizontal") * speed, 0f, Space.World);
transform.Rotate(-Input.GetAxis("Vertical") * speed, 0f, 0f, Space.Self);
}
যদি আপনি গুণগুলি ব্যবহার করে আপনার ঘূর্ণনগুলি মিশ্রণ করে থাকেন তবে একই প্রভাবটি পেতে আপনি কোনও একটিটির বাম / ডান ক্রমটি ফ্লিপ করতে চান:
// Yaw happens "over" the current rotation, in global coordinates.
Quaternion yaw = Quaternion.Euler(0f, Input.GetAxis("Horizontal") * speed, 0f);
transform.rotation = yaw * transform.rotation; // yaw on the left.
// Pitch happens "under" the current rotation, in local coordinates.
Quaternion pitch = Quaternion.Euler(-Input.GetAxis("Vertical") * speed, 0f, 0f);
transform.rotation = transform.rotation * pitch; // pitch on the right.
(নির্দিষ্ট ক্রমটি আপনার পরিবেশে গুণমানের সম্মেলনের উপর নির্ভর করবে তবে বামে = আরও বেশি গ্লোবাল / ডান = আরও স্থানীয় একটি সাধারণ পছন্দ)
এটি নেট টোটাল ইয়াও এবং মোট পিচটি আপনি ভাসমান ভেরিয়েবল হিসাবে সংরক্ষণ করার সমান, তারপরে সর্বদা নেট ফলাফল একবারে প্রয়োগ করুন, এই কোণগুলি থেকে একা নতুন নতুন ওরিয়েন্টেশন কোয়ার্টেরিয়ন বা ম্যাট্রিক্স তৈরি করুন (আপনি যদি totalPitch
ক্ল্যাম্পড রাখেন তবে ):
// Construct a new orientation quaternion or matrix from Euler/Tait-Bryan angles.
var newRotation = Quaternion.Euler(totalPitch, totalYaw, 0f);
// Apply it to our object.
transform.rotation = newRotation;
বা সমতুল্য ...
// Form a view vector using total pitch & yaw as spherical coordinates.
Vector3 forward = new Vector3(
Mathf.cos(totalPitch) * Mathf.sin(totalYaw),
Mathf.sin(totalPitch),
Mathf.cos(totalPitch) * Mathf.cos(totalYaw));
// Construct an orientation or view matrix pointing in that direction.
var newRotation = Quaternion.LookRotation(forward, new Vector3(0, 1, 0));
// Apply it to our object.
transform.rotation = newRotation;
এই গ্লোবাল / স্থানীয় বিভাজনটি ব্যবহার করে, ঘূর্ণনগুলির একে অপরকে মিশ্রণ এবং প্রভাবিত করার কোনও সুযোগ নেই, কারণ সেগুলি অক্ষের স্বতন্ত্র সেটগুলিতে প্রয়োগ করা হয়।
একই ধারণাটি পৃথিবীর কোনও বস্তু যা আমরা ঘুরতে চাইছি তা যদি সহায়তা করে। গ্লোব যেমন উদাহরণস্বরূপ, আমরা প্রায়শই এটিকে ঘুরিয়ে ফিরিয়ে স্থানীয়ভাবে নিজের ইয়াবা প্রয়োগ করতে চাই (তাই এটি সর্বদা তার খুঁটির চারপাশে ঘুরতে থাকে) এবং বিশ্বব্যাপী পিচ (সুতরাং এটি অস্ট্রেলিয়ার দিকে / দূরে নয় বরং আমাদের দৃষ্টিভঙ্গির দিকে / দূরে পরামর্শ দেয়) , যেখানেই এটি নির্দেশ করছে ...)
সীমাবদ্ধতা
এই গ্লোবাল / স্থানীয় হাইব্রিড কৌশল সর্বদা সঠিক স্থির নয়। উদাহরণস্বরূপ, 3 ডি ফ্লাইট / সাঁতারের সাথে কোনও খেলায় আপনি সরাসরি উপরে / সোজা নীচে নির্দেশ করতে সক্ষম হতে পারেন এবং এখনও সম্পূর্ণ নিয়ন্ত্রণ রাখতে পারেন। তবে এই সেটআপটির সাহায্যে আপনি জিম্বল লকটিকে আঘাত করবেন - আপনার ইয়া অক্ষটি (গ্লোবাল আপ) আপনার রোল অক্ষের সাথে সমান্তরাল হয়ে উঠবে (স্থানীয় ফরোয়ার্ড), এবং মোচড় না করে আপনার বাম বা ডানদিকে দেখার কোনও উপায় নেই।
এর পরিবর্তে আপনি যা করতে পারেন তা হল খাঁটি স্থানীয় আবর্তন ব্যবহার করা যেমন আমরা উপরের প্রশ্নে শুরু করেছি (সুতরাং আপনার নিয়ন্ত্রণগুলি যেখানে আপনি যেখানেই তাকান না কেন একই রকম অনুভূত হয়), যা প্রাথমিকভাবে কিছুটা রোল কেটে দেবে - তবে তারপরে আমরা এটির জন্য সংশোধন করি।
উদাহরণস্বরূপ, আমরা আমাদের "ফরোয়ার্ড" ভেক্টরটি আপডেট করতে স্থানীয় ঘূর্ণনগুলি ব্যবহার করতে পারি, তারপরে আমাদের চূড়ান্ত ওরিয়েন্টেশনটি তৈরি করতে সেই ফরোয়ার্ড ভেক্টরকে "আপ" ভেক্টর সহ একসাথে ব্যবহার করতে পারি। (উদাহরণস্বরূপ, ইউনিটির কোয়ার্টারিওন.লুকরোটেশন পদ্ধতি ব্যবহার করে বা ম্যানুয়ালি এই ভেক্টরগুলি থেকে অর্থনরমাল ম্যাট্রিক্স তৈরি করে) আপ ভেক্টরটি নিয়ন্ত্রণ করে আমরা রোল বা মোড়কে নিয়ন্ত্রণ করি।
বিমান / সাঁতার উদাহরণের জন্য, আপনি সময়ের সাথে ধীরে ধীরে এই সংশোধনগুলি প্রয়োগ করতে চাইবেন। যদি এটি খুব আকস্মিক হয় তবে দৃশ্যটি বিভ্রান্তিকর উপায়ে ঠাঁই করতে পারে। পরিবর্তে, আপনি প্লেয়ারের বর্তমান আপ ভেক্টরটি ব্যবহার করতে পারেন এবং এটির উল্লম্ব, ফ্রেম-ফ্রেম-ফ্রেমের দিকে ইঙ্গিত করতে পারেন, যতক্ষণ না তাদের ভিউ স্তরটি বাইরে যায়। কোনও পর্দার সময় এটি প্রয়োগ করা কখনও কখনও প্লেয়ারের নিয়ন্ত্রণগুলি অলস থাকাকালীন ক্যামেরা মোচড়ানোর চেয়ে কম বমি বমি ভাব করে।