মাইনক্রাফ্টে আপনি যখন গভীরতর জলের দিকে তাকাবেন তখন যত গভীর হয়। কেউ কি এমন কিছু কোড করতে জানেন?
প্রভাব সঙ্গে মাইনক্রাফ্ট
প্রভাব ছাড়া একই খেলা
মাইনক্রাফ্টে আপনি যখন গভীরতর জলের দিকে তাকাবেন তখন যত গভীর হয়। কেউ কি এমন কিছু কোড করতে জানেন?
প্রভাব সঙ্গে মাইনক্রাফ্ট
প্রভাব ছাড়া একই খেলা
উত্তর:
গভীরতার ভিত্তিতে আলোকসজ্জার জলের জন্য দুটি পৃথক পদ্ধতি রয়েছে:
মাইনক্রাফ্ট ভক্সেল-ভিত্তিক আলো ব্যবহার করে, যা সংলগ্ন কিউবগুলিতে আলোক প্রচার করে কাজ করে, ব্লকের ধরণের উপর নির্ভর করে উজ্জ্বলতা হ্রাস করে। অন্ধকার মহাসাগরগুলি এই সিস্টেমের একটি পার্শ্ব প্রতিক্রিয়া।
জল সূর্যের আলোকে ব্লক করে এবং প্রতি ব্লকটিতে 3 স্তরের আলোকে হ্রাস করে (ডিফল্ট 1 স্তরের পরিবর্তে), যার অর্থ পৃষ্ঠ থেকে প্রতিটি দূরত্বের জন্য একটি মহাসাগরের উজ্জ্বলতা:
0 (surface): 15 (direct sunlight)
1: 12
2: 9
3: 6
4: 3
5 and below: 0 (darkness)
সূত্র: মাইনক্রাফ্ট উইকি - হালকা
একটি traditionalতিহ্যবাহী আলোর মডেল সহ গেমগুলিতে, আলোর উত্স এবং সমুদ্রের তলের মধ্যে থাকা পানির পরিমাণ পরিমাপ করে এই প্রভাব তৈরি করা যেতে পারে। এই দূরত্বের ভিত্তিতে আলোটি বিবর্ণ হয়। এটি করার কয়েকটি পদ্ধতি রয়েছে:
যদি আপনার সমতল পৃষ্ঠ থাকে তবে আপনি জলের দেহ থেকে এই পৃষ্ঠের স্বাভাবিক বিন্দু এবং জ্যামিতির শেডারে কোনও পৃষ্ঠের অবস্থানকে স্বাভাবিকভাবে দূরে সরিয়ে ফেললে আপনি সহজেই জলের মধ্যে আলোকের দূরত্বের দূরত্ব গণনা করতে পারেন ।
কার্যকর জল দূরত্ব হয়
ভার্টেক্সের অবস্থান কোথায় এবং এটি পৃষ্ঠের নীচে আলোর দিক এবং জলের পৃষ্ঠের পৃষ্ঠের নীচের অংশের কোণ is
সূর্যাস্তের সময়, শুধুমাত্র 50 than এর থেকে কিছুটা কম পৌঁছায় কারণ জলে whenোকার সময় আলো প্রতিস্থাপন করা হয়।
এখানে একটি ভাল ব্যাখ্যা সহ একটি ব্লগ পোস্ট: ডিজিটাল ক্যামেরা: মোট অভ্যন্তরীণ প্রতিচ্ছবি
আরও বিশদ সহ আরও একটি পোস্ট : ডিজিটাল ক্যামেরা: প্রতিবিম্বের শরণী আইন
আপনি যদি জলের সমান্তরাল কোনও পৃষ্ঠের উপর একটি হাইটম্যাপ ব্যবহার করেন তবে হয়ে যায় । সূর্য জলের পৃষ্ঠের উপরে সরাসরি থাকলে ডান ফ্যাক্টর 1 সমান।
একটি পয়েন্ট আলো দিয়ে, আপনাকে আলোর উত্সের তুলনামূলক অবস্থানের উপর ভিত্তি করে প্রতিটি ভার্টেক্সের জন্য গণনা করতে হবে।
একটি স্থির জলের স্তর বা একটি নির্দিষ্ট আলোর দিকের সাথে সমীকরণের অংশগুলি স্থির থাকে এবং পারফরম্যান্সের কারণে শেডারে গণনা করা উচিত নয়।
যদি আপনি জলের পৃষ্ঠকে একটি পৃথক গভীরতার মানচিত্রে (যেমন আলোর উত্স থেকে দেখানো হয়েছে) রেন্ডার করেন তবে আপনি পৃষ্ঠটি আঘাতের আগে আলো পানিতে যে দূরত্বটি ভ্রমণ করে তা নির্ধারণের জন্য আপনি গভীরতার টেক্সচারটি ব্যবহার করতে পারেন।
এটি করার জন্য, আপনি প্রতিটি শীর্ষবিন্দুটি ভার্টেক্স শ্যাডারে আলোক উত্সের ভিউ প্রজেকশনে প্রজেক্ট করেন এবং পিক্সেল শেডারটিতে টেক্সচার লকউইচ করেন।
যদি পৃষ্ঠটি তুলনামূলকভাবে সমতল হয় তবে ভাল ফলাফলের জন্য আপনার একটি রিফ্র্যাক্ট হালকা উত্স ব্যবহার করা উচিত।
* আপনি নিচের দিকে আলোর পিওভির গভীরতা গণনা করে নিকটতম শক্ত পৃষ্ঠের সামনে পানির পরিমাণ নির্ধারণ করতে পারেন:
ফলাফলের টেক্সচারে এখন আলো-দর্শন-স্থানে আলোর সামনে পানির পরিমাণ থাকে, তাই আপনি এটি ব্যবহার করার আগে মানটি অবশ্যই আবার রূপান্তর করতে হবে। এই পদ্ধতিটি নির্দেশমূলক আলো (বিয়োগ রিফ্রাকশন) গণনা করতে কাজ করে, তবে যদি ভূপৃষ্ঠগুলি খুব অনিয়মিত হয় এবং একই টুকরাগুলিকে প্রভাবিত করে এমন জলের সংস্থাগুলির মধ্যে প্রচুর পরিমাণে বায়ু থাকে তবে এটি ভুল পরিবেষ্টিত আলোকে নিয়ে যাবে।
উপকারিতা এবং নীতিগুলি সাধারণ ছায়া ম্যাপিংয়ের মতো একই, গভীরতা গণনার সময় আপনার আরও একটি বাফার প্রয়োজন এবং কর্মক্ষমতা আরও খারাপ কারণ আপনাকে আরও জ্যামিতি আঁকতে হবে।
রে ট্রেসিং এখন পর্যন্ত সবচেয়ে সঠিক তবে স্বচ্ছ ভলিউম সরবরাহের জন্য সবচেয়ে ব্যয়বহুল সমাধান। এটি করার দুটি উপায় রয়েছে: 1. সমুদ্রের তল থেকে পৃষ্ঠের দিকে ট্র্যাকিং এবং 2. জলের দিকে আলোর উত্স থেকে ট্র্যাকিং T উজ্জ্বলতা গণনা করতে মেঝেতে প্রতিটি পয়েন্টের জন্য একাধিক রশ্মির প্রয়োজন।
জল রেন্ডার করার সময় আরও কয়েকটি বিষয় ધ્યાનમાં নিতে হবে:
পর্যবেক্ষক ভ্রমণের সময় জলে হালকা আবার ছড়িয়ে ছিটিয়ে থাকে তাই আপনার এটি একটি শক্ত রঙের দিকে মিশ্রিত করা উচিত।
যদি পর্যবেক্ষক নিমজ্জিত হয় তবে আপনি গভীরতা বাফারের চূড়ান্ত ফলাফলের ভিত্তিতে কুয়াশার রেন্ডার করতে পারেন। কুয়াশার রঙ, তবে এর ঘনত্বটি পর্যবেক্ষকের দূরত্বের সাথে পরিবর্তিত হওয়া উচিত নয়! (মাইনক্রাফ্ট কেবল প্রভাবটির এই অংশটি ব্যবহার করে))
যদি পর্যবেক্ষক উপরে থেকে জলের দিকে নজর রাখেন তবে আপনাকে পৃষ্ঠের এবং জলের নীচে জ্যামিতির মধ্যে গভীরতার পার্থক্যের ভিত্তিতে কুয়াশা গণনা করতে হবে। কুয়াশার রঙ বৃহত্তর গভীরতার পার্থক্যগুলির সাথে কিছুটা গা dark় হওয়া উচিত, তবে কেবল সেই বিন্দুতে পরিবর্তন হওয়া উচিত যেখানে কুয়াশা সম্পূর্ণরূপে অস্বচ্ছ।
কুয়াশার রঙ প্রতিটি পিক্সেলের ভিউ দিকের উপরও নির্ভর করে, সুতরাং উভয় ক্ষেত্রে নিচের দিকে তাকালে এটি কিছুটা গাer় হয়।
আপনি যদি জাল কাস্টিকগুলির জন্য ডিকালের পরিবর্তে একটি বিরামহীন টাইলিং 3 ডি-টেক্সচার ব্যবহার করেন তবে আপনি উল্লম্ব পৃষ্ঠের উপর প্রসারিত এড়াতে পারবেন। পৃষ্ঠের নিকটে ছড়িয়ে ছিটিয়ে থাকা আলোর শক্তি তিন মাত্রায় পরিবর্তিত হয়, তাই 2 ডি-টেক্সচার ব্যবহার করে সাধারণত দৃশ্যের কোথাও প্রসারিত হতে পারে। আপনি মেঝের ভার্টেক্স অবস্থানগুলিকে একটি ভিন্ন স্থানাঙ্ক ব্যবস্থায় প্রজেক্ট করে হালকা কোণ পরিবর্তন করতে মডেল করতে পারেন।
আর একটি সম্ভাবনা হ'ল আলোর সমন্বয় ব্যবস্থাতে পৃষ্ঠের অবস্থানের ভিত্তিতে আলোক ঘনত্ব গণনা করা, যদিও সম্ভবত এটির জন্য কিছু কার্য সম্পাদন করতে হবে।
কস্টিকগুলি ক্রমবর্ধমান গভীরতার সাথে ছড়িয়ে পড়া আলোর চেয়ে দ্রুত ম্লান হওয়া উচিত।
রঙগুলি আলাদাভাবে ছড়িয়ে ছিটিয়ে থাকে, তাই হালকা রঙটি ক্রমবর্ধমান গভীরতার সাথে পরিবর্তন করা উচিত। এটি হঠাৎ প্রান্তগুলিও প্রতিরোধ করে যেখানে উদাহরণস্বরূপ, একটি সৈকত জলের পৃষ্ঠকে ছেদ করে।
অপসারণের কারণে, আলোটি সমুদ্রের তলে এটির চেয়ে বেশি খাড়াভাবে আঘাত করে would Snell আইন সম্পর্কে Wikipedia নিবন্ধটি কোণ এবং ভেক্টরের জন্য সূত্র আছে।
আমি বিশ্বাস করি যে মাইনক্রাফ্টে আকাশের আলোক প্রভাবটি সরাসরি নীচে নেমে এসেছে - সূর্য যেখানেই থাকুক না কেন বিষয়গুলি তাদের উপরে যা কিছু রয়েছে তার দ্বারা শেড হয়। তারপরে টর্চ ইত্যাদির স্থানীয় আলো একটি ড্রপ অফের সাথে প্রয়োগ করা হয় - আলোর উত্স থেকে দূরে দূরে যতটা ঘন ঘন আলোকপাত হয় তত কম।
যদি এইভাবে করা হয় তবে জলের প্রতিটি স্তরটি তার নীচের স্তরটিকে সংশ্লেষে ছায়া দেয়, সুতরাং প্রতিটি ক্রমান্বয়ে গা dark় হয়। গাছের পাতাগুলি এর মতো ছায়া সরবরাহ করে তবে এটি সংখ্যক নয়। আপনি গাছের নীচে একই ছায়া পান এটি 1 বা 100 পাতায় ঘনক্ষেত্র কিনা।
একটি পদ্ধতি যা এই পদ্ধতিটি ব্যবহার করা হচ্ছে তা হ'ল দর্শকের থেকে আরও দূরে সরে গেলে জল গা dark় হয় না - কেবল আপনি নীচে নামার সাথেই। হ্যাঁ, কুয়াশার প্রভাবটি দূরত্বে লাঞ্ছিত করে, তবে জলের অন্ধকারের প্রভাব নয়।
সুতরাং আলোক গণনার মূল সূত্রটি সিউডো কোডে এরকম কিছু হবে ...
light_on_cube = 1.0
for each cube above target cube, from lowest to highest {
if cube being examined is tree foliage
light_on_cube = 0.5
else if cube being examined is water
light_on_cube = light_on_cube - 0.1
else if cube being examined is solid
light_on_cube = 0
}
এটি overhangs বা গুহাগুলির নিচে আলো গণনা করার জন্য উপযুক্ত নয়, কারণ এই পদ্ধতিটি ব্যবহার করে ওভারহ্যাংয়ের নীচে অন্ধকার হবে p তবে কেউ স্থানীয় আলোর উত্সগুলিতে (মশাল, আগুন ইত্যাদি) যুক্ত করতে পারে এবং পাশাপাশি সূর্যের আলোতে ব্যবহৃত ব্লকগুলিকে আলোর উত্স হিসাবে বিবেচনা করে। এরকম কিছু এটি করতে পারে ...
এখানে ধারণাটি হ'ল যদি কোনও ঘনকটি সূর্যের আলো বা মশাল দ্বারা প্রজ্বলিত হয়, তার পাশের ঘনক্ষেতটিও কোনও উপায়ে আলোকিত হতে চলেছে। আর আপনি সেই আলোকিত কিউব থেকে আরও দূরে, সেখানে কম আলো থাকবে light বিচ্ছুরিত আলো নির্ণয়ের জন্য এটি একটি ধরণের কলডেজ উপায় তবে আমি মনে করি (?) এটি কার্যকর হবে।
সম্ভবত আমি প্রশ্নটি ভুল বোঝাবুঝি করছি তবে আপনি কেন কেবল তাদের ব্লকের গভীরতার উপর নির্ভর করে রঙ পরিবর্তন করতে পারবেন না?
আপনার যদি গভীরতা ডি থাকে (ব্লকগুলিতে, 0 থেকে শুরু হয়) তবে উজ্জ্বলতার জন্য যুক্তিসঙ্গত সমীকরণটি হ'ল:
এল = (1- মি ) ই - কেডি + মি
কোড: L = (1.0 - m) * exp(-k * d) + m;
কে কতটা অন্ধকার হয়ে যায় তা নিয়ন্ত্রণ করে (উচ্চতর = দ্রুত)। একটি যুক্তিসঙ্গত মান হবে 0.5।
মি আপনি ন্যূনতম উজ্জ্বলতা চান।
এল 0 থেকে 1 পর্যন্ত পরিবর্তিত হয়।
আপনি যে কোনও গ্রাফিক্স এপিআই ব্যবহার করছেন সেগুলিতে কীভাবে ব্লকের রঙ পরিবর্তন করবেন তা আপনি যদি জানেন না তবে দয়া করে আলাদা প্রশ্ন হিসাবে জিজ্ঞাসা করুন (আপনি কোন এপিআই ব্যবহার করছেন এবং আপনি ছায়ার ব্যবহার করছেন কিনা তা উল্লেখ করে)।
e^-kd
বিট শুধু একটি সূচকীয় ক্ষয়, যা ধীরে ধীরে কিছু মান (গভীরতা) উপর শূন্য দিকে ঝোঁক একটি আদর্শ ফাংশন যা। এর দ্বারা গুণন (1-m)
এবং সংযোজন m
কেবল ক্ষয়কে স্কেল এবং অফসেট করতে হবে যাতে এটি সর্বনিম্নে শেষ হয় m
তবে এখনও শুরু হয় 1
। en.wikedia.org/wiki/Exonason_decay