দুটি সংঘর্ষকৃত দেহের অনুপ্রবেশ কীভাবে সমাধান করা যায়


9

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

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

সুতরাং আমার প্রশ্ন হ'ল অনুপ্রবেশ সমাধানের আরও ভাল উপায় আছে কি? সম্ভবত মৃতদেহগুলি স্থানান্তর করবেন না, কেবল কোনওরকমভাবে তাদের বেগগুলি সামঞ্জস্য করুন (প্রেরণা গণনা ছাড়াও) যাতে তারা একে অপরের দিকে অগ্রসর হওয়া বন্ধ করে দেয় এবং অনুপ্রবেশটি ফ্রেমগুলির পরবর্তী কয়েকের মধ্যে সমাধান হয়ে যায়। আমি এখানে অনুমান করছি। কোন ধারনা?

উত্তর:


3

যখন আপনি কোনও সংঘর্ষ শনাক্ত করেন, তখন প্রথমে কোন সময় / পয়েন্টে দেহগুলির সংঘর্ষ শুরু হয়েছিল তা নির্ধারণ করুন এবং এই স্থানে সংঘর্ষের চিকিত্সা করুন। এই মুহুর্তে সমাধান করার জন্য আপনার কাছে এখনও সামান্য অনুপ্রবেশ থাকতে পারে তবে এটি অনেক ছোট হবে এবং [সাধারণত] আপনার যে দোলনা সমস্যা রয়েছে তা ফল দেবে না।

বলুন যে আপনার 100 মিমি সিমুলেশন পদক্ষেপ রয়েছে এবং কিছু ফ্রেমে আপনার দুটি বল রয়েছে যা ফ্রেমে অর্ধপথে (50 মিমি) সংঘর্ষে আসে। প্রথমত, আপনি সনাক্ত করতে পারবেন যে তারা ফ্রেমের যে কোনও বিন্দুতে সংঘর্ষ করেছিল (যা আমি বিশ্বাস করি আপনি ইতিমধ্যে কার্যকরভাবে করছেন)। তারা ফ্রেমটি সংঘর্ষের সময় কোন পর্যায়ে তা নির্ধারণ করবে। এখন ফ্রেমের যে 50 টি তারা সংঘর্ষে নি তার প্রথম 50 মিমি সহ সংঘর্ষটি পরিচালনা করুন। আপনার এখন বলগুলির নতুন বেগ হবে এবং তারা যাতে অনুপ্রবেশ না করে তা নিশ্চিত করতে আপনি এখনই পদক্ষেপ নিতে পারেন (এটি "সবেমাত্র ঘটেছে" যেহেতু এটি খুব ছোট হওয়া উচিত) অবশেষে, আপনি পরবর্তী 50s অনুকরণ করবেন ফ্রেম. নোট করুন যে এই সময়কালে, খুব ভাল এই দুটি বা দুটি বলের সাথে অন্য একটি সংঘর্ষ হতে পারে।


1
সুতরাং আপনি মূলত অবিচ্ছিন্ন সংঘর্ষ সনাক্তকরণ বাস্তবায়ন করার পরামর্শ দিচ্ছেন এবং তারপরে হ্যান্ডেলগুলি এখনও আমি ইতিমধ্যে একইভাবে রেখেছি কারণ তারা সম্ভবত খুব ছোট হবে। আমি মনে করি এটি কাজ করতে পারে। এখন আমি কীভাবে আমার সংঘর্ষ সনাক্তকরণকে ধারাবাহিকভাবে তৈরি করব তা নির্ধারণ করতে হবে :)
আদম

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

অবিচ্ছিন্ন সংঘর্ষ শনাক্তকরণের অর্থ হ'ল দুটি স্থিতিশীল বস্তুর (একটি 3 ডি সমস্যা) মধ্যে ছেদটি পরীক্ষা করার পরিবর্তে আপনি দুটি চলন্ত বস্তুর যোগাযোগ (মূলত, একটি 4 ডি সমস্যা) চেক করেন। সাধারণত এটি কেবল ধ্রুবক বেগ বিবেচনা করার জন্য যথেষ্ট, কারণ আপনি টুকরোজ লিনিয়ার বক্ররেখার সাথে ট্র্যাজেক্টরিগুলি আনুমানিক করতে পারেন। সুবিধাটি হ'ল অনুপ্রবেশের দূরত্ব সর্বদা শূন্য হবে (বা ভাসমান গোলাকার ত্রুটির কারণে এটি কাছাকাছি)। আমি যদিও আপনি এই বিষয়ে কথা বলছিলেন, তবে আমি আপনার উত্তরটির ভুল ব্যাখ্যা দিয়েছি?
আদম

@ অ্যাডাম হ্যাঁ, আমি এটিই বলছি।
নোটলেশ

2

এই নিবন্ধটি দেখুন - যা এখানে আগে বহুবার পোস্ট করা হয়েছে, কেবল প্রশ্নোত্তর হিসাবে ট্যাগ করা সংঘর্ষ-সনাক্তকরণের মাধ্যমে অনুসন্ধান করুন - এটি আপনাকে দেখায় যে স্টেফেল্টন যে "ধ্রুবক" সংঘর্ষের রেজোলিউশনটির কথা বলছিলেন তা কীভাবে করবেন:

http://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.php?page=3

মূলত, আপনার দুটি সীমাবদ্ধ বাক্স ছেদ করা শুরু করার সময় আপনি নির্দিষ্ট সময়সীমার জন্য কিছু বেসিক কাইনেটিক্স সমীকরণগুলি সমাধান করেন। আপনি ঠিক সেই মুহুর্তে আপনার সংঘর্ষগুলি সমাধান করুন এবং তারপরে আপনার ফ্রেমে অবশিষ্ট সময়টি নিয়ে এগিয়ে যান। সংঘর্ষের মুহুর্তের পরে যা ঘটে তা আপনাকে পুনরায় সিমুলেট করতে হতে পারে, যেহেতু আপনার সামগ্রীর গতি / ত্বরণ পরিবর্তন হয়ে গেছে। তবে আপনার প্রারম্ভিক বিন্দু আছে, যাইহোক ... চিয়ার্স!


ধন্যবাদ, নিবন্ধটি পরীক্ষা করে দেখুন। বিষয়টি হ'ল আমি আমার বস্তুর বিভিন্ন উপস্থাপনা ব্যবহার করছি। আমি উত্তল পলিহেড্রা ব্যবহার করছি এবং পৃথক অক্ষের উপপাদ ব্যবহার করে সংঘর্ষের পরীক্ষা করছি। এটি ধ্রুব রৈখিক বেগ (যা আমি কীভাবে করতে জানি) দিয়ে চলন্ত সংস্থাগুলি পরিচালনা করতে বাড়ানো যেতে পারে তবে কৌণিক গতিও কীভাবে পরিচালনা করতে হয় তার কোনও ধারণা নেই। তবে আমি যদি এইভাবে যাওয়ার সিদ্ধান্ত নিই তবে আমি আলাদা প্রশ্ন করব।
আদম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.