اللعب بضوضاء بيرلين: توليد أرخبيل واقعي

لم أر الكثير من الأمثلة الرائعة لعمل خرائط مع ضوضاء بيرلين في بيثون. حسنا هيا بنا!

ضجيج بيرلين هو صيغة رياضية تستخدم لإنشاء هياكل `` واقعية ''. إنه ضجيج ولكنه بخلاف الضجيج المنتظم لديه بعض الترابط. هنا الضوضاء العادية مقابل ضوضاء بيرلين:

ضجيج ثابت و Perlin منتظم

في وحدة ضجيج الثعبان ، هناك بعض المعلمات التي تؤثر على ما تراه عند توليد ضوضاء perlin:

  1. مقياس: الرقم الذي يحدد المسافة التي يجب عرضها على خريطة الضوضاء.
  2. octaves: عدد مستويات التفاصيل التي تريد أن تحصل عليها ضوضاء perlin.
  3. lacunarity: الرقم الذي يحدد مقدار التفاصيل التي يتم اضافتها أو ازالتها في كل اوكتاف (يضبط التردد).
  4. استمرار: الرقم الذي يحدد مدى مساهمة كل أوكتاف في الشكل العام (يضبط السعة).

لا تقلق بشأن المقياس كثيرًا ، يمكنك استخدامه للتصغير (مقياس أكبر) أو في (مقياس أصغر).

تجمع ضوضاء بيرلين بين وظائف متعددة تسمى "أوكتاف" لإنتاج أسطح ذات مظهر طبيعي. يضيف كل أوكتاف طبقة من التفاصيل إلى السطح. على سبيل المثال: يمكن أن يكون أوكتاف 1 جبالًا ، أوكتاف 2 يمكن أن يكون صخورًا ، أوكتاف 3 يمكن أن يكون الصخور.

الفراغ لأكثر من 1 يعني أن كل أوكتاف سيزيد من مستوى التفاصيل الدقيقة المحببة (زيادة frqeuency). الفراغ من 1 يعني أن كل اوكتاف سيكون له مستوى التفاصيل سام. الفراغ أقل من واحد يعني أن كل أوكتاف ستصبح أكثر سلاسة. عادة ما يكون الأخيرين غير مرغوب فيهما لذلك فإن الفراغ من 2 يعمل بشكل جيد.

يحدد الثبات مدى مساهمة كل أوكتاف في الهيكل العام لخريطة الضوضاء. إذا كان ثباتك 1 ، فإن كل الأوكتافات تساهم بالتساوي. إذا كان المثابرة أكثر من 1 أوكتاف متتالية تساهم أكثر وتحصل على شيء أقرب إلى الضوضاء العادية (المفسد صورة الضوضاء العادية أعلاه هي في الواقع ضجيج بيرلين مع وجود 5.0). سيكون الإعداد الأكثر افتراضية هو وجود حماية أقل من 1.0 مما سيقلل من تأثير الأوكتافات اللاحقة.

يكفي الدردشة رغم ذلك! دعنا نجري بعض التجارب. لنبدأ أولاً بضجيج بيرلين الافتراضي والصورة المرفقة به:

الطريقة التي يبدو بها ضجيج بيرلين في نصنا هو مجموعة ثنائية الأبعاد من القيم بين -1 و 1. القيم الأكثر قتامة على الخريطة هي قيم أقل ، والقيم القريبة من 1 أفتح. ما أريد تجربته بعد ذلك هو تعيين لونين لنطاقات مختلفة من القيم في هذه الخريطة لإنتاج بعض التضاريس:

خريطة التضاريس هذه أنيقة للغاية ؛ لديها سواحل خشنة وشواطئ وكثير من الماء. بينما لم ألاحظ أبدًا تضاريس طبيعية تشبه هذا إذا نظرنا إلى أي جزء من الخريطة ، فإنه يبدو "واقعيًا". لنأخذ خطوة أبعد ونضيف الجبال والثلوج:

هذا رائع ولكن من الواضح أن نمط التضاريس هذا ليس طبيعيًا. لجعله أكثر طبيعية ، سنستخدم مرشحًا دائريًا للتخلص من كل ضجيج Perlin المحيطي:

سنطلق عليه عالم بيرلين!

هنا كنت أحاول إنشاء جزيرة لذا قمت بعمل مرشح دائري ثم طبقته على مجموعة ضجيج color_world perlin. ما انتهى به الأمر هو كوكب يطفو في محيط. لقد غيرت لون المحيط إلى اللون الأسود ويبدو رائعًا! قال ذلك ما أردت هو جزيرة لذلك دعونا نحاول مرة أخرى. هذه المرة سنقوم بحساب تدرج دائري ثم تطبيق ذلك على ضجيج بيرلين كمرشح.

التدرج الدائري:

لقد كافحت كثيرا مع هذا الجزء. أنا متأكد من أن هناك طريقة أكثر كفاءة للحصول على التدرج مثل هذا ولكن ما سبق كان ما توصلت إليه. قمت بحساب مقياس المسافة من مركز الخريطة ثم تطبيع هذه المسافات وتقليصها وإعادة هيكلتها لإنتاج هذا التدرج الكروي. مرة أخرى أفتح يعني أن القيمة أقرب إلى 1 ، والألوان الداكنة أقرب إلى 0. بعد ذلك أقوم بتطبيق هذا التدرج الدائري على ضجيج perlin الذي أنشأناه من قبل.

التدرج الدائري + الضوضاء:

كان هذا الجزء أقل صعوبة ولكنه لا يزال يعاني من الألم. أضرب ضوضاء بيرلين في التدرج الدائري ثم أقوم بزيادة التباين عن طريق ضرب موجب (قيم أخف) في 20. ثم أعيد التهيئة لجعله 0-1 مرة أخرى.

التدرج الدائري الملون + الضوضاء:

هذا رائع حقًا ويبدو وكأنه أرخبيل أكثر طبيعية. أنا أشجعك على تجربة طرق تظليل مختلفة وربما إزالة بعض الأقسام بشكل عشوائي. سأقوم بتغيير قيمة العتبة وتعيينها على العتبة = 0.2. سوف ينتج عن ذلك أرخبيل أصغر ولكنه أكثر واقعية كما يلي:

ها نحن! لدينا أرخبيل جزيرة ذو مظهر طبيعي! حتى الآن بعد أن أصبح لدينا جزرنا ، قد تلاحظ أنه بغض النظر عن عدد المرات التي تعيد فيها تشغيل ضوضاء النص البرليني سينتج نفس الجزر. للحصول على جزر جديدة ، يمكنك تعيين المعلمة الأساسية لوظيفة pnoise2 على عدد صحيح عشوائي ، دعنا نجرب base = 5 ، base = 100:

تم إنشاء الأرخبيل من القاعدة 5 والقاعدة 100.

استنتاج

لذلك بدأنا ببعض الضجيج البسيط وانتهى بنا الأمر بطريقة لإنشاء عدد غير محدود من الأرخبيل الفريد والطبيعي! اتمنى أنك استمتعت بهذا المنشور!

دفتر الملاحظات الكامل مع جميع التعليمات البرمجية هنا.

إذا استمتعت بهذا المنشور ، يمكنك الاشتراك في رسالتي الإخبارية الجديدة هنا والبقاء على اطلاع على المشاريع الرائعة والمثيرة للاهتمام.