# تشويش بيرلين

تشوش بيرلين او ضوضاء بيرلين هي نوع من ضوضاء التدرج التي طورها كين بيرلين في عام 1983. له العديد من الاستخدامات ، بما في ذلك على سبيل المثال ولا تقتصر على: إنشاء التضاريس من الناحية الإجرائية ، وتطبيق التغييرات شبه العشوائية على متغير ، والمساعدة في إنشاء نسيج الصورة . يتم تنفيذه بشكل شائع في بعدين أو ثلاثة أو أربعة أبعاد ، ولكن يمكن تحديده لأي عدد من الأبعاد.
طور كين بيرلين ضوضاء او تشويش بيرلين في عام 1983 نتيجة لإحباطه من المظهر "الشبيه بالآلة" للصور التي تم إنشاؤها بواسطة الكمبيوتر (CGI) في ذلك الوقت. وصف النتائج التي توصل إليها رسميًا في ورقة SIGGRAPH في عام 1985 بعنوان An Image Synthesizer . قام بتطويره بعد العمل على فيلم الرسوم المتحركة للخيال العلمي Tron ( 1982) لشركة الرسوم المتحركة Mathematical Applications Group (MAGI). في عام 1997 ، تم منح بيرلين جائزة الأوسكار للإنجاز الفني لإنشاء الخوارزمية ، ونص الاقتباس على النحو التالي:
لم يتقدم بيرلين بطلب للحصول على أي براءات اختراع بشأن الخوارزمية ، ولكن في عام 2001 حصل على براءة اختراع لاستخدام تطبيقات 3D + للضوضاء البسيط لتركيب النسيج . الضوضاء البسيطة لها نفس الغرض ، لكنها تستخدم شبكة أبسط لملء الفراغ. يخفف الضجيج البسيط من بعض مشاكل "الضوضاء الكلاسيكية" لبيرلين ، من بينها التعقيد الحسابي والتشكيلات الاتجاهية ذات الأهمية المرئية.

## الاستخدامات

ضجيج بيرلين هو نسيج إجرائي بدائي ، وهو نوع من ضجيج التدرج الذي يستخدمه فنانو المؤثرات المرئية لزيادة مظهر الواقعية في رسومات الكمبيوتر . تتمتع الوظيفة بمظهر شبه عشوائي ، إلا أن جميع تفاصيلها المرئية لها نفس الحجم. تتيح هذه الخاصية إمكانية التحكم فيها بسهولة ؛ يمكن إدراج نسخ متعددة من ضجيج بيرلين في التعبيرات الرياضية لإنشاء مجموعة كبيرة ومتنوعة من القوام الإجرائي. غالبًا ما تُستخدم الأنسجة الاصطناعية التي تستخدم ضوضاء بيرلين في CGI لإنشاء عناصر مرئية بواسطة الكمبيوتر – مثل أسطح الأشياء أو النار أو الدخان أو السحب – تبدو أكثر طبيعية ، من خلال تقليد المظهر العشوائي الخاضع للرقابة للقوام في الطبيعة.
يتم استخدامه أيضًا بشكل متكرر لإنشاء مواد عندما تكون الذاكرة محدودة للغاية ، كما هو الحال في المشاهد التوضيحية . أصبح خلفاؤها ، مثل الضجيج الكسري والضوضاء البسيط (اكس) ، في كل مكان تقريبًا في وحدات معالجة الرسومات لكل من الرسومات في الوقت الفعلي والأنسجة الإجرائية غير الواقعية في جميع أنواع رسومات الكمبيوتر.
يتم استخدامه بشكل متكرر في ألعاب الفيديو لإنشاء تضاريس تم إنشاؤها إجرائيًا التي تبدو طبيعية.

## تفاصيل الخوارزمية

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

### تعريف الشبكة

حدد شبكة ذات أبعاد n حيث يرتبط بها كل تقاطع شبكة متجه متجه متدرج بطول الوحدة العشوائي ذي البعد n ، باستثناء الحالة ذات البعد الواحد حيث تكون التدرجات مقاييس عشوائية بين -1 و 1.

### المنتج نقطة

لحساب قيمة أي نقطة مرشحة ، ابحث أولاً عن خلية الشبكة الفريدة التي تكمن فيها النقطة. ثم حدد ملف $2^{n}$ زوايا تلك الخلية ونواقل التدرج المرتبطة بها. بعد ذلك ، لكل زاوية ، احسب متجه الإزاحة. متجه الإزاحة هو متجه الإزاحة من تلك الزاوية إلى النقطة المرشحة.
لكل زاوية ، نأخذ حاصل الضرب النقطي بين متجه التدرج ومتجه الإزاحة إلى نقطة المرشح. سيكون حاصل الضرب النقطي هذا صفراً إذا كانت النقطة المرشحة في زاوية الشبكة بالضبط.
لاحظ أن تأثير متجه التدرج ينمو مع زيادة المسافة ، والذي يمكن تجنبه عن طريق تسوية متجه الإزاحة بطول $1$ أولاً. سيؤدي هذا إلى إدخال تغييرات حادة ملحوظة ، باستثناء المسافة التي يتم أخذها في الاعتبار في خطوة الاستيفاء التالية. ومع ذلك ، فإن تطبيع متجه الإزاحة ليس ممارسة شائعة.
بالنسبة إلى نقطة في شبكة ثنائية الأبعاد ، سيتطلب ذلك حساب 4 متجهات إزاحة ومنتجات نقطية ، بينما في الأبعاد الثلاثة سيتطلب 8 متجهات إزاحة و 8 منتجات نقطية. بشكل عام ، الخوارزمية لديها $O(2^{n})$ التعقيد ، أين $n$ هو عدد الأبعاد.

### الاستيفاء

الخطوة الأخيرة هي الاستيفاء بين $2^{n}$ منتجات النقطية. يتم إجراء الاستيفاء باستخدام دالة لها مشتق أول صفر (وربما أيضًا المشتق الثاني) عند $2^{n}$ عقد الشبكة. لذلك ، عند النقاط القريبة من عقد الشبكة ، سيقارب الإخراج المنتج النقطي لمتجه التدرج للعقدة ومتجه الإزاحة للعقدة. هذا يعني أن وظيفة الضوضاء سوف تمر من خلال الصفر في كل عقدة ، مما يعطي ضوضاء بيرلين مظهرها المميز.
لو $n=1$ ، مثال على دالة تقحم بين القيمة $a_{0}$ عند عقدة الشبكة 0 والقيمة $a_{1}$ عند العقدة الشبكية 1 هي
    $f(x)=a_{0}+\operatorname {smoothstep} (x)\cdot (a_{1}-a_{0})\ \ {\text{for }}0\leq x\leq 1$
حيث تم استخدام وظيفة الخطوة السلسة .
عادةً ما تنتج وظائف الضوضاء المستخدمة في رسومات الكمبيوتر قيمًا في النطاق [-1.0،1.0] ويمكن قياسها وفقًا لذلك.

## تطبيق

ما يلي هو تنفيذ ثنائي الأبعاد لضوضاء بيرلين الكلاسيكية ، مكتوبًا في لغة C.
كان لتطبيق المرجع الأصلي من قبل بيرلين اختلافات كبيرة :
* إنها تستخدم نهجًا ثلاثي الأبعاد عن طريق الإقحام بين 8 زوايا للمكعب بدلاً من الزوايا الأربع للمربع أدناه.
* يقوم اتجاه التدرج العشوائي بتبديل أجزاء من إحداثيات عدد صحيح من الزوايا ، وهو أسرع بكثير من الخلط باستخدام التداخل عند التردد العالي لدورات إحداثيات عدد صحيح للزوايا ، يتم دمجه وتدويره مرة أخرى بتردد عالٍ بواسطة منتج: التدويرات ليست موحدة وزعت.
* قسمت طريقة بيرلين مساحة الأعداد الصحيحة إلى مكعبات 256 × 256 × 256 ثم تستخدم تبديلًا عشوائيًا لهذه المكعبات لخلطها ، ثم يتم تعيين زاوية من اثني عشر اتجاهًا للمكعبات المجاورة غير المتغيرة في مساحة الرصف 4 × 4 × 4: هذا يتطلب فقط عدد صحيح لكنه يحافظ على توزيع موحد للاتجاهات.
* وظيفة الاستيفاء هي الخطوة الأكثر سلاسة من 4 درجات (مع المشتقات الثلاثة الأولى تساوي الصفر على حدود التثبيت) وليست الخطوة الخطية الأساسية. هذا يتجنب القطع الأثرية المرئية ، لا سيما على طول الرؤوس أو الأقطار التي تنضم إلى زوايا العينة ، حيث تكون النتيجة متباينة الخواص (تلطيخ الضوضاء البيضاء المرغوبة إلى ضوضاء وردية ؛ إذا تم استخدام الضوضاء لتوليد بلورة صلبة ، فلن تكون سوداء بالكامل و معتم للضوء ، ولكنه شفاف وملون جزئيًا في بعض اتجاهات المراقبة المنفصلة).

## التقليب

تستخدم العديد من تطبيقات ضجيج بيرلين نفس مجموعة التبديل التي استخدمها كين بيرلين في تطبيقه الأصلي. هذا التنفيذ هو على النحو التالي:
هذا التقليب المحدد ليس مطلوبًا تمامًا ، على الرغم من أنه يتطلب مصفوفة عشوائية من القيم [0-255] (ضمناً). في حالة إنشاء جدول تبديل جديد ، يجب توخي الحذر لضمان التوزيع المنتظم للقيم.

## التعقيد

لكل تقييم لوظيفة الضوضاء ، يجب تقييم المنتج النقطي للموضع ومتجهات التدرج عند كل عقدة في خلية الشبكة المحتوية. وبالتالي ، فإن ضوضاء بيرلين تتناسب مع التعقيد $O(2^{n})$ ل $n$ أبعاد. تشمل بدائل ضوضاء بيرلين التي تنتج نتائج مماثلة مع مقياس تعقيد محسّن ضوضاء بسيطة وضوضاء OpenSimplex .

## أنظر أيضا

* ضوضاء القيمة
* ضوضاء المحاكاة
* ضوضاء بسيطة

## مراجع

* ↑ Perlin، Ken. "Making Noise". noisemachine.com. Ken Perlin. مؤرشف من الأصل في 2007-10-08.
* ↑ Perlin، Ken (يوليو 1985). "An Image Synthesizer". SIGGRAPH Comput. Graph. ج. 19 ع. 97–8930: 287–296. DOI:10.1145/325165.325247.
* ↑ Perlin، Ken. "In the beginning: The Pixel Stream Editor" (PDF). مؤرشف (PDF) من الأصل في 2022-08-16. اطلع عليه بتاريخ 2022-05-31.
* ↑ Tanner, Mike. "Oscar is FX Wizard's Reward". Wired (بالإنجليزية الأمريكية). ISSN:1059-1028. Archived from the original on 2023-03-10. Retrieved 2022-05-31.
* ↑ Original source code نسخة محفوظة 2023-04-09 على موقع واي باك مشين.
* ↑ "نسخة مؤرشفة". مؤرشف من الأصل في 2018-05-01. اطلع عليه بتاريخ 2023-04-27.{{استشهاد ويب}}: صيانة الاستشهاد: BOT: original URL status unknown (link) of Ken Perlin's 'coherent noise function'
* ↑ Gustavson، Stefan. "Simplex noise demystified" (PDF). مؤرشف من الأصل (PDF) في 2023-03-21. اطلع عليه بتاريخ 2019-04-24.
* ↑ Gustavson، Stefan. "Simplex noise demystified" (PDF). مؤرشف من الأصل (PDF) في 2023-03-10. اطلع عليه بتاريخ 2019-04-24.
* ↑ Perlin، Ken. "Perlin noise". مؤرشف من الأصل في 2023-04-09. اطلع عليه بتاريخ 2020-08-26.
* ↑ "Perlin Noise: Part 2". مؤرشف من الأصل في 2023-02-17. اطلع عليه بتاريخ 2020-08-26.
* بوابة الفيزياء
* بوابة رياضيات
* بوابة صور رقمية
* بوابة علم الحاسوب