একটি তৃতীয় ব্যক্তির ক্যামেরাটি একটি লক্ষ্যের দিকে ঘোরানো


10

আমার কাছে একটি তৃতীয় ব্যক্তির ক্যামেরা রয়েছে যা সরাসরি প্লেয়ারের দিকে না তাকিয়ে তার সামনে কোথাও।

যখন ব্যবহারকারী শ্যুটিং মোডে প্রবেশ করেন, আমি ক্যামেরাটি খেলোয়াড়কে লক্ষ্যটির মুখের দিকে ঘুরিয়ে দিতে চাই।

আমি যে বিষয়ে কথা বলছি তার উদাহরণ

উপরের ছবিতে। "ও" প্লেয়ার (অরিজিন), "এল" হ'ল লুক, "সি" ক্যামেরার অবস্থান এবং "টি" লক্ষ্যবস্তু। আমি লিক্যাট লাইনটি সি-> এলটি ঘুরতে চাই যাতে এটি টি (সি '-> এল' -> টি ') দিয়ে অরিজিনের ("ও") কাছাকাছি যায়।

মূলত ছবিতে আমি লাল এঙ্গেল আলফাটি খুঁজে বের করতে পারি।

আমি আমার ক্যামেরার অবস্থান যেমন একটি কাঠামোতে সঞ্চয় করি:

struct CameraTarget {
     Quaternion absoluteRotation;
     Vec3 absolutePosition;
     Vec3 cameraOffset;
     Vec3 lookatOffset;
     float FOV;
}

সুতরাং যে কোণটি আমি সন্ধান করছি তা যদি আমি খুঁজে পাই তবে আমি এর মতো কিছু করতে পারি:

cam->absoluteRotation = cam->absoluteRotation * alpha;

খেলোয়াড়কে সর্বদা লক্ষ্য লক্ষ্য করা।

যদি চেহারাটি অরিজিনের পাশ দিয়ে চলেছে তবে আমি তা করতে পারি

Vec3 origDir = cam->lookAtOffset - cam->absolutePosition;
origDir.normalize();
Vec3 newDir = cam->target - cam->absolutePosition;
newDir.normalize();
Quaternion q(origDir, newDir); // from->to
cam->absoluteRotation = cam->absoluteRotation * q;

তবে উপরের চিত্রটিতে এটি পুরোপুরি কার্যকর হয় না কারণ আবর্ত থেকে উত্সটি অফসেট হয়ে গেছে।

উত্তর:


1

এটি যদি একদিন অন্য কাউকে সহায়তা করে তবে আমার কাছে উত্তর দিন:

বর্তমান ক্যামেরার চেহারাটির দিকনির্দেশে লক্ষ্য পয়েন্টটি প্রজেক্ট করার বিষয়ে এসএফডিকেটির সঠিক ধারণা রয়েছে।

যাইহোক, আমার সবচেয়ে বড় সমস্যাটি এই পয়েন্টটি সন্ধান করছিল পি। দেখা গেছে যে কিছুটা ত্রিকোণমিতি এটি সমাধান করতে সক্ষম হয়েছিল।

তিনটি পয়েন্ট সিপিও দ্বারা গঠিত ত্রিভুজটি বিবেচনা করে:

  1. যেহেতু আমি দৈর্ঘ্যগুলি LO, ওসি এবং সিএল জানি তাই আমি সি তে কোণ গণনা করতে পারি

  2. এখন আমি কোণ সি এবং ওসি এবং পিওর দৈর্ঘ্য জানি। সাইনের আইন ব্যবহার করে আপনি ও-তে কোণটি খুঁজে পেতে পারেন (আমি এই ওয়েবসাইটটি অনুপস্থিত কোণগুলি খুঁজে পাওয়ার জন্য খুব দরকারী বলে মনে করেছি)

  3. তারপরে আমি সর্বশেষ অনুপস্থিত কোণ পি খুঁজে পেতে পারি এবং দৈর্ঘ্য সিপি খুঁজে পেতে সাইনসের আইনটি আবার ব্যবহার করতে পারি।

  4. দিকের দিক দেখুন পিসি + নরমালাইজড (সিএল) * দৈর্ঘ্যসিপি আমাকে পি এর অবস্থান দেয়

  5. একবার আমার কাছে পিআই হয়ে গেলে ওপি এবং ওটি এর মধ্যে সবচেয়ে সংক্ষিপ্ত ঘূর্ণন গণনা করতে পারে যা আমাকে আমার ক্যামেরাটি ঘোরানোর জন্য প্রয়োজনীয় চতুরতা দেয়।

3 ডি তে অযাচিত রোলটি নিয়ে আমার কিছুটা সমস্যা হয়েছিল তবে আমি কেবল জেড = 0 দিয়ে সমস্যাটি সমাধান করেছি তখনই ক্যামেরার আপ ভেক্টরটি সোজা রাখতে গুম থাকা পিচ রোটেশনটি গণনা করেছি।


0

এই ছবিটি আরও সহজে প্রশ্ন সমাধানের জন্য প্রয়োজনীয় প্রতিসাম্য যুক্ত করে।

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

শুধু Lভেক্টর বরাবর প্রকল্পCL যাতে |P-O|=|T-O|

এখন এটি স্পষ্টত মাত্র দুটি অভিন্ন ত্রিভুজ ( CPOএবংC'TO ) আপনার পছন্দসই কোণ দ্বারা আবর্তিত। আই ইang(OT)-ang(OP)

C'এবং L'উভয়ই একই পরিমাণে ঘোরার পরে Cএবং Lপরে Oএকই।

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