খুব সাধারণ 3 ডি রেসিং গেমগুলিতে সংঘর্ষগুলি কীভাবে পরিচালনা করা হয়?


9

আমি ভাবছিলাম যে কয়েকটি সাধারণ 3 ডি কার রেসিং গেমগুলিতে সংঘর্ষগুলি কীভাবে হয় (বিশেষত আউটরুন ​​2 / মোটোরেরারের মতো গেমগুলিতে)।

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

আউটরুন ​​2 / মোটোরেসারের মতো গেমটিতে গেমপ্লেটি এতটাই সহজ যে বিকাশকারীদের সম্ভবত এটির প্রয়োজন নেই এবং সবকিছুই অনেক সহজ করা যেতে পারে। যাঁরা এটি কখনও খেলেন না, তাদের পক্ষে এখানে সুনির্দিষ্ট:

  • গাড়ি / বাইকটি সর্বদা রাস্তায় আঠালো থাকে।
  • রাস্তাটি সর্বদা একই আকারের এবং খুব সাধারণ আকারের হয়।
  • কেবলমাত্র সম্ভাবনাগুলি হ'ল সেই রাস্তাটি অনুসরণ করা, রাস্তা ছেড়ে যাওয়া সম্ভব নয় বা অন্য কোনও কিছুর সাথে সংঘর্ষে পড়তে হবে (অন্যান্য গাড়ি / বাইক বাদে তবে আমাদের যত্ন নেই)।
  • আপনি যখন রাস্তার সাথে সংঘর্ষে আসেন তখন খুব প্রাথমিক আরকেডের সংঘর্ষ হয় (গাড়িটি কেবল এ থেকে দূরে ঠেলে দেওয়া হয়)

এখানে আমার মনে হয় সংঘাত (কীভাবে) করা হয়েছিল done

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

তারপরে, সংঘর্ষগুলি পরিচালনা করতে (এবং গাড়ি আঁকুন):

1) বর্তমান গাড়ী 3 ডি অবস্থান থেকে 3 ডি বক্ররেখানের নিকটতম অবস্থানটি সন্ধান করুন। অন্য কথায়, 3 ডি গাড়ী অবস্থানকে বেজিয়ার বক্র অবস্থানে রূপান্তর করুন। রাস্তার প্রতিটি 3 ডি অবস্থান 3 ডি বক্ররেখা ( t) + পার্শ্বীয় স্থানচ্যুতি ( d) সহ একটি স্থানচ্যুতি হিসাবে বিবেচিত হতে পারে । চিত্রটি পরিষ্কার না হলে নীচের চিত্রটি পরীক্ষা করুন (এটি একটি 2 ডি উদাহরণ তবে এটি সহজে 3 ডি তে প্রযোজ্য)।

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

যখন t = 0 গাড়ি ট্র্যাক বিভাগের শুরুতে থাকে, যখন t = 1 গাড়িটি শেষে থাকে। যখন d = -1 বা 1 গাড়ি ট্র্যাকের সীমানায় থাকে, যখন d = 0 গাড়ি রাস্তার মাঝখানে থাকে

2) গাড়িটি রাস্তায় সারিবদ্ধ করে tএবং d(খুব সহজ: যে কোনও tএবং dমানগুলির জন্য আমি 3 ডি অবস্থান + আপ / সামনের / বাম ভেক্টর পেতে পারি) can গাড়ী এখন রাস্তায় আঠালো হয়

3) dগাড়ির পার্শ্বীয় স্থানচ্যুতি পরীক্ষা করুন । মানটি যদি খুব বড় হয় (d > 1)বা কম (d < -1)গাড়ি ট্র্যাকের বাইরে থাকে। গাড়িটি সঠিক জায়গায় রাখার জন্য কেবল এটি ক্লিপ করুন।

এটি 3 ডি কুলিংও খুব সহজ করে তোলে, কেবল বর্তমান গাড়ির tঅবস্থান থেকে ট্র্যাকটি আঁকুন t + some_big_enough_value_to_avoid_visible_clipping

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

উত্তর:


16

আপনার বর্ণনা অনুসারে আমি কয়েকটি বাণিজ্যিক গেমগুলিতে কাজ করেছি।

এই গেমগুলির প্রত্যেকটিতে, আমরা আসলে বহুভুজগুলি ট্র্যাকের চারপাশে একটি অদৃশ্য "প্রাচীর" তৈরি করেছিলাম এবং walls দেয়ালগুলির বিরুদ্ধে traditionalতিহ্যগত সংঘর্ষের পরীক্ষা করেছি। এর অর্থ হ'ল আমাদের অদৃশ্য দেয়ালের অভ্যন্তরের রাস্তার পাশে কিছু অতিরিক্ত সংঘর্ষযোগ্য বিপদ থাকতে পারে এবং আমাদের একটি স্প্লিন পদ্ধতির সাহায্যে রাস্তাটির প্রস্থকে দ্রুততর করে তুলুন faster

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

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

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

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

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


তথ্য পড়তে এবং মজাদার উত্তর পড়তে
onedayitwillmake

0

আমার ওপেনজিএল রেসারে, আমি প্রথমে ট্র্যাকের সীমানা নির্ধারণ করতে দুটি চেনাশোনা ব্যবহার করে শুরু করেছি, তবে দেখে মনে হচ্ছে এটি খুব বেশি ঝামেলার মতো। আমি পিক্সেল রঙ পড়ার জন্য কেবল গ্লারিডপিক্সেল ব্যবহার করি। প্লেয়ার্স গাড়িটি যদি সবুজ (ঘাস বর্ণের) পিক্সেলের বেশি হয় তবে চলাচল আরও সীমাবদ্ধ। পারফরম্যান্সের খুব কম প্রভাব আছে।


এটি দেখে মনে হচ্ছে আপনি 2 ডি গেমটি বর্ণনা করছেন (চেনাশোনাগুলি, পিক্সেল রঙের সাথে সংঘর্ষে)। তাই নাকি? তারপরে উত্তরটি অফটোপিক।
ক্রোমস্টার

আমি দৃষ্টিকোণ প্রজেকশন একটি গেম উল্লেখ করছি। glReadpix 2d ortho বা 3d দৃষ্টিভঙ্গি মোডে প্রয়োগ করা যেতে পারে।
ztech79
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.