2 ডি আইসোমেট্রিক গেমটিতে রিয়েল টাইম শ্যাডো কাস্টিং


15

আমি সি ++ তে একটি ছোট 2 ডি আইসোমেট্রিক ইঞ্জিন লিখছি এবং আমি রিয়েল টাইম শ্যাডো কাস্টিং বাস্তবায়নের চেষ্টা করছি। আমি এই পৃষ্ঠায় বর্ণিত একটি সহজ পদ্ধতির অনুসরণ করেছি এবং এখানে ফলাফল (হালকা হলুদ কিউবের থেকে একই অবস্থানে অবস্থিত):

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

ফলাফলটি খুব দুর্দান্ত তবে দেয়াল এবং কিউবসের শীর্ষে ছায়া গো নেই। এটি দেখতে কেমন হওয়া উচিত তার একটি উদাহরণ এখানে দেওয়া হয়েছে (আমি সবুজ রঙের মধ্যে প্রত্যাশিত ছায়া আঁকছি):

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

টানা সমস্ত কিউবগুলি XY অবস্থানে এবং একটি জেড গভীরতা (z = x + y) সহ 3 ডিডি কোয়াডগুলি দিয়ে তৈরি। আমি orthographic ম্যাট্রিক্স (glOrtho) দিয়ে ওপেনজিএল ব্যবহার করি। স্টেনসিল বাফার ব্যবহার করে ছায়াগুলি আঁকা।

আমি এমন উত্স বা সমাধানগুলি সন্ধান করছি যা আমাকে এই ছায়া castালাইয়ের বাস্তবায়ন সম্পূর্ণ করতে সহায়তা করবে।

অনেক ধন্যবাদ!


5
"এই পৃষ্ঠায়" আপনার লিঙ্কটি কোনও পৃষ্ঠায় নয় একটি চিত্রের দিকে নির্দেশ করছে। এছাড়াও, আমি এখানে কেবল অনুমান করছি, তবে 3 ডি-তে সমস্যাটি সমাধান করা সহজ এবং কেবল ক্যামেরাটি আইওমেট্রিকভাবে প্রজেক্ট করা সহজতর হতে পারে।
টেট্রাড

ওফস, আপনি ঠিক বলেছেন, আমি লিঙ্কটি ঠিক করেছি। 3 ডি প্রজেকশন দিয়ে এটি অবশ্যই সহজতর হবে তবে 2 ডি এরও এর সুবিধাগুলি রয়েছে এবং আমি নিশ্চিত যে এটি 2 ডি তে বাস্তবায়নের সমাধান রয়েছে।
এক্সপ্যাক

উত্তর:


6

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

দ্রষ্টব্য: ছাদের জন্য আপনাকে ছায়ার ক্ষেত্র এবং ছাদের অঞ্চল ছেদ করতে হবে।


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

এটি একটি সময় হয়ে গেছে তবে অবশেষে আপনার পরামর্শগুলির জন্য এটি কাজ করতে পেলাম! আমার কেবল দুটি জ্যামিতি পদ্ধতি প্রয়োজন (একটিটি বহুভুজের মধ্যে একটি বিন্দু রয়েছে কিনা তা জানতে একটি এবং দুটি বিভাগের ছেদটি পেতে একটি) needed আমার এখনও ছাদগুলি পরিচালনা করতে হবে তবে এটি জানা সহজ। আপনি এই ভিডিওতে ফলাফলটি দেখতে পারেন এবং উত্স কোডটি এখানে দেখতে পারেন (আমি এটিতে 1 দিন কাজ করেছি যাতে এটি আরও অনুকূলিত করা সম্ভব হতে পারে)।
এক্সপ্যাক 27

@ এক্সপ্যাক 27 এটি আশ্চর্যজনক। ভাগ করে নেওয়ার জন্য ধন্যবাদ.
ashes999

0

মূলত, আপনি যা খুঁজছেন তা করা যায় না can't আপনি 2 ডি অবজেক্টের একগুচ্ছ নিতে চান এবং তাদের ছায়া ফেলে দিতে চান যেন তারা 3 ডি অবজেক্ট were আপনি যদি পুরো 3 ডি শ্যাডো রাখতে চান তবে আপনার 3 ডি অবজেক্ট থাকা দরকার।


1
তবে এটি 3 ডি শ্যাডো প্রশ্নের মতো নয়। যে কোনও প্রাচীর সম্পূর্ণরূপে দৃষ্টিতে লাইনটি ব্লক করে, আপনার পরিবর্তনশীল উচ্চতার বস্তু থাকতে পারে না।
ইয়ুরিকস

0

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


0

আপনি এই গেমটি ছোট হতে চান এমনটি দেওয়া, এখনকার ছায়া বাস্তবায়ন যথেষ্ট ভাল বলে কী হবে?

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

আমি জানি, আমি জানি, সমস্যার সমাধান হিসাবে "সমস্যা সমাধানের চেষ্টা করবেন না" বলে পরামর্শ দেওয়া খারাপ অভ্যাস হতে পারে। তবুও, আমি সত্যই বলতে চাই যে আপনার কোডের জন্য যদি একটি ছোট পদচিহ্ন চান তবে এটি ঠিক তেমন ভাল।

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