How-to-use-post-processing.html 5.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <!DOCTYPE html>
  2. <html lang="ar">
  3. <head>
  4. <meta charset="utf-8">
  5. <base href="../../../" />
  6. <script src="page.js"></script>
  7. <link type="text/css" rel="stylesheet" href="page.css" />
  8. </head>
  9. <body class="rtl">
  10. <h1>كيفية استخدام المعالجة اللاحقة<br/> (post-processing)</h1>
  11. <p>
  12. تعرض العديد من تطبيقات three.js كائناتها ثلاثية الأبعاد مباشرة على الشاشة. ومع ذلك ، في بعض الأحيان ، تريد تطبيق واحد أو أكثر من التأثيرات الرسومية مثل Depth-Of-Field أو Bloom أو Film Grain أو أنواع مختلفة من Anti-aliasing. المعالجة اللاحقة هي طريقة مستخدمة على نطاق واسع لتنفيذ مثل هذه التأثيرات. أولاً ، يتم تحويل المشهد إلى هدف عرض يمثل مخزنًا مؤقتًا في ذاكرة بطاقة الفيديو.
  13. في الخطوة التالية ، تقوم واحدة أو أكثر من ممرات ما بعد المعالجة بتطبيق المرشحات والتأثيرات على المخزن المؤقت للصور قبل أن يتم عرضه في النهاية على الشاشة.
  14. </p>
  15. <p>
  16. توفر three.js حلاً كاملاً لعملية المعالجة بتوفير [page:EffectComposer] الذي يتولى تنفيذ مثل هذه الأعمال.
  17. </p>
  18. <h2>سير العمل</h2>
  19. <p>
  20. الخطوة الأولى في العملية هي استيراد جميع الملفات الضرورية من دليل الأمثلة. يفترض الدليل أنك تستخدم الرقم الرسمي [link:https://www.npmjs.com/package/three npm package] من three.js. في العرض التوضيحي الأساسي في هذا الدليل ، نحتاج إلى الملفات التالية.
  21. </p>
  22. <code>
  23. import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
  24. import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
  25. import { GlitchPass } from 'three/examples/jsm/postprocessing/GlitchPass.js';
  26. </code>
  27. <p>
  28. بعد أن يتم استرداد جميع الملفات بنجاح ، يمكنك إنشاء الملحن الخاص بنا بتمرير نموذج من [page:WebGLRenderer].
  29. </p>
  30. <code>
  31. const composer = new EffectComposer( renderer );
  32. </code>
  33. <p>
  34. عند استخدام الملحن ، من الضروري تغيير حلقة الرسوم المتحركة للتطبيق. بدلاً من استدعاء طريقة العرض [page:WebGLRenderer] ، نستخدم الآن النظير الخاص بها [page:EffectComposer].
  35. </p>
  36. <code>
  37. function animate() {
  38. requestAnimationFrame( animate );
  39. composer.render();
  40. }
  41. </code>
  42. <p>
  43. أصبح الملحن جاهزًا الآن ، لذا من الممكن تكوين سلسلة ممرات ما بعد المعالجة. هذه التمريرات مسؤولة عن إنشاء الإخراج المرئي النهائي للتطبيق. تتم معالجتها بترتيب الإضافة / الإدراج. في مثالنا ، تم تنفيذ *RenderPass* أولاً ثم *GlitchPass*. يتم عرض آخر تمرير تم تمكينه في السلسلة تلقائيًا على الشاشة. يبدو إعداد التصاريح كما يلي:
  44. </p>
  45. <code>
  46. const renderPass = new RenderPass( scene, camera );
  47. composer.addPass( renderPass );
  48. const glitchPass = new GlitchPass();
  49. composer.addPass( glitchPass );
  50. </code>
  51. <p>
  52. يتم وضع *RenderPass* بشكل طبيعي في بداية السلسلة من أجل توفير المشهد الذي تم عرضه كمدخل لخطوة ما بعد المعالجة التالية. في حالتنا ، ستستخدم *GlitchPass* بيانات الصورة هذه لتطبيق تأثير خلل جامح. تحقق من هذا [link:https://threejs.org/examples/webgl_postprocessing_glitch live example] لتراها في العمل.
  53. </p>
  54. <h2>تصاريح مدمجة</h2>
  55. <p>
  56. يمكنك استخدام مجموعة واسعة من تصاريح ما بعد المعالجة التي يوفرها المحرك. يتم الاحتفاظ بها في الدليل [link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm/postprocessing postprocessing].
  57. </p>
  58. <h2>تصاريح مخصصة</h2>
  59. <p>
  60. في بعض الأحيان تريد كتابة تظليل مخصص للمعالجة اللاحقة وإدراجه في سلسلة ممرات ما بعد المعالجة. في هذا السيناريو ، يمكنك استخدام *ShaderPass*. بعد استيراد الملف والتظليل المخصص الخاص بك ، يمكنك استخدام الكود التالي لإعداد المرور.
  61. </p>
  62. <code>
  63. import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';
  64. import { LuminosityShader } from 'three/examples/jsm/shaders/LuminosityShader.js';
  65. // later in your init routine
  66. const luminosityPass = new ShaderPass( LuminosityShader );
  67. composer.addPass( luminosityPass );
  68. </code>
  69. <p>
  70. يوفر المستودع ملفًا يسمى [link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/shaders/CopyShader.js CopyShader] وهو رمز بداية جيد للتظليل المخصص الخاص بك. *CopyShader* فقط ينسخ محتويات الصورة من مخزن قراءة [page:EffectComposer] إلى مخزن الكتابة المؤقت الخاص به دون تطبيق أي تأثيرات.
  71. </p>
  72. </body>
  73. </html>