ছায়া মানচিত্রের নিদর্শন


16

আমি একটি 3D এক্সএনএ গেমের সাথে ছায়া যুক্ত করার চেষ্টা করতে চাই। আমি একটি আলো এবং একটি ক্যামেরা দিয়ে কিছু পরীক্ষার পরিবেশ স্থাপন করেছি। যাইহোক, আমি আমার পদ্ধতির সাথে নিদর্শনগুলিতে চালাচ্ছি।

চূড়ান্ত ফলাফলটি রেন্ডার করতে আমি http://pastebin.com/zXi0hmsU থেকে শেডার কোড এবং ছায়ার মানচিত্র তৈরি করতে http://pastebin.com/rY4Gcj9N ব্যবহার করছি । কোডটি বেশ সোজা এগিয়ে রয়েছে এবং আলোর দৃষ্টিকোণ থেকে গভীরতার মানচিত্রের উত্পাদন জড়িত থাকে, তারপরে একে ক্যামেরার স্পেসে প্রজেক্ট করে এবং ফলাফলগুলি অনুসন্ধান করে।

তবে বেশিরভাগ কোণ থেকে আমি বেশ কুৎসিত ফলাফল পাচ্ছিএই স্ক্রিনশট মত

দৃশ্যে কিছু সাধারণ কিউবস রয়েছে (হাতের সাহায্যে নির্মিত, বাইরে মুখোমুখি, ব্যাকফেসটি কুল্ড হয়েছে), একটি হালকা (উপরের বাম কোণে ছায়ার মানচিত্র দেখানো হয়েছে - ঠিক আছে দেখায়) এবং একটি ক্যামেরা রয়েছে।

ছায়া মানচিত্রের জন্য আমার রেন্ডারট্যাজেট শুরু করে

int shadowMapSize = 512;
RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize,
    shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat,
    DepthFormat.Depth24Stencil8);
GraphicsDevice.SetRenderTarget(shadowMap);
GraphicsDevice.Clear(Color.White);
GraphicsDevice.DepthStencilState = DepthStencilState.Default;

এরপরে, CreateShadowMapএফেক্টটি প্রয়োগ করা হয়, তারপরে ল্যামবার্টভিথশ্যাডোস ইফেক্ট হয়। অবশেষে, ছায়া মানচিত্রটি একটি ব্যবহার করে আঁকা SpriteBatch

কোডের বাকী অংশটি শেডারে সঠিক মান সরবরাহ করে। প্রয়োজনে আমি এটি সরবরাহ করতে পারি।

উত্তর:


19

এটি সাধারণ সমস্যা বলা হয় ছায়া মানচিত্র ব্রণ । এটি কারণ ছায়া মানচিত্রের প্রস্থিত পিক্সেল (গভীরতা) পর্দার পিক্সেলের চেয়ে বড় (কারণ, সঠিকভাবে গভীরতার প্রতিনিধিত্ব করতে পারে না) এর কারণেই এটি ঘটে।

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

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

আরও উন্নত কৌশল অধ্যয়নের জন্য কিছু সংস্থান।


সম্পাদনা:


আমার এই বিষয়ে আরও কিছু বিষয়বস্তু রয়েছে কাজের ক্ষেত্রে, যদি আপনি আগ্রহী হন তবে আমি এটিও ভাগ করে নেব।
নোটবেন

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

আমি আগ্রহী যদি কমপক্ষে তবে :)
জেমস

1
@Etan। হ্যাঁ ওমনি নির্দেশিক আলোগুলি ছায়ার বিষয়ে কথা বললে আসল ব্যথা হয়। (আমি এটি সম্পর্কে কিছু জানি :) গেমদেব.স্ট্যাকেক্সেঞ্জার / প্রশ্নগুলি / 20২০৩/২ )। দ্বৈত প্যারাবোলয়েড মানচিত্র ব্যবহার করার চেষ্টা করুন। বা যদি আপনি কিউব্যাপগুলি পছন্দ করেন তবে হতাশ-ক্যামেরা_ফ্রাস্টাম ছেদ করে প্রতিটি চেহারা / রেন্ডার করে কিছু জায়গা সাফ করার চেষ্টা করুন। আপনি সম্ভবত সব সময় সব দিকের ছায়ার প্রয়োজন হবে না (বিশেষত বহিরাগতদের মধ্যে)
নোটাবিন

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