আমি কীভাবে জলে ভরা অঞ্চলগুলি সংজ্ঞায়িত করতে পারি?


9

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

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

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

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


2
আপনার অঞ্চলটি ইঞ্জিনে কীভাবে সংগঠিত হয়? ভক্সেল বনাম হাইটম্যাপ বনাম polysoup (জাল) ভূখণ্ডের জন্য বিভিন্ন কৌশল রয়েছে।
এক্সিলিথ

এটি একটি জাল হিসাবে দেওয়া হয় এবং জল অন্যান্য স্থিতিশীল জালের তুলনায় সেই অঞ্চলটি জালকে আলাদাভাবে বাণিজ্য করা উচিত নয়।
দানিজার

1
বাণিজ্য বা চিকিত্সা?
টম 'ব্লু' পিডক

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

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

উত্তর:


3

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

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


2

আপনি যদি একটি ভক্সেল-ভিত্তিক ভূখণ্ড ব্যবহার করে থাকেন তবে আপনি ভক্সেল প্রতি গ্রাউন্ডের ঘনত্ব সংরক্ষণ করার সাথে সাথে আপনি একটি জলের মূল্যও সংরক্ষণ করতে পারেন যা 0এবং এর মধ্যে ক্ল্যাম্পযুক্ত 1 - groundDensity। জল আঁকতে যেমন সহজ হবে জলচরনের কিউবগুলি পানির মূল্যগুলি অতিক্রম করে। জলের অনুকরণটি আরও কিছুটা কঠিন হবে, তবে প্রাথমিক ভিত্তিটি হ'ল আপনি সিস্টেমটি সমাধান করতে চান যে:

  1. পৃষ্ঠের নীচে পানির ভক্সেলের বাকী অংশটি পূরণ করতে হবে
  2. পৃষ্ঠের স্তরের জলের groundDensity + waterDensityপ্রতিবেশী হিসাবে একই মোট ঘনত্ব হওয়া উচিত
  3. জল অবিলম্বে সংলগ্ন এবং তার নীচে যে কোনও ভক্সেলের কাছে স্থানচ্যুত হতে পারে তবে শর্ত থাকে যে প্রতিবেশীর মোট ঘনত্ব তার মোট ঘনত্বের চেয়ে কম

আদর্শ অ্যালগরিদম একটি গণনা শেডারে চালিত হবে, ভক্সেলের প্রতি এক কার্যকরকরণের পথ। যদি আপনি অভিনবতা পেতে চান, আপনি অতিরিক্ত সিমুলেশন প্রভাবগুলির জন্য সেই ভক্সেলের মধ্যে জলের বেগও সংরক্ষণ করতে পারেন: উদাহরণস্বরূপ, বেগটি ভেক্টর দ্বারা "নির্দেশিত" কোষগুলিতে বেগের সমানুপাতিক পরিমাণে জল বিতরণের চেষ্টা করা হয়েছিল। এই বেগের ডেটা তরঙ্গগুলি সরানো, র‌্যাপিডস আঁকতেও ব্যবহৃত হতে পারে etc.


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