محاكاة الشعر والأقمشة بقطعة قماش موحدة على الهاتف المحمول





يواجه العديد من المصممين عاجلاً أم آجلاً التحدي المتمثل في تحقيق سلوك واقعي في الأنسجة أو الشعر. هناك عدد من التقنيات لهذا الغرض ، ولكن ليست جميعها مناسبة لمنصات الأجهزة المحمولة. عادةً ما يخبز مطورو الأجهزة المحمولة الرسوم المتحركة لأنها الأقل تكلفة. سنتحدث عن محاكاة الوقت الحقيقي - وحدة القماش الوحدة .







Unity Cloth هو نظام قائم على محاكاة فيزياء الأنسجة يعمل جنبًا إلى جنب مع SkinnedMeshRenderer. يسمح لك بالتحكم في مجموعة واسعة من المعلمات ، مثل صلابة الشد أو الالتواء ، والتوهين (المقدار المسؤول عن السرعة التي سيصل بها النسيج إلى التوازن) ، ومحاكاة الرياح ، وتفاعل الاصطدامات الداخلية (الاصطدام الذاتي) ، والاحتكاك ، والجاذبية ، والتأثير ، إلخ. تفاعل المصادمات ، إلخ. قام



أحد الفرق في استوديو كراسنودار بلاريوم بدراسة إمكانية تطبيق Unity Cloth للأجهزة المحمولة.



الجزء 1. محاكاة الأنسجة



بدأنا باختبارات الضغط لتقييم الحدود المقبولة لاستخدام إعدادات الوحدة على الأجهزة المحمولة. كانت العينة الأولى التي تم فحصها عبارة عن شبكة متعددة الطبقات عالية الكثافة - رأس به حوالي 10 آلاف رأس ، حوالي 7 آلاف مثلثات. تمت إضافة 19 مصادمًا على شكل كبسولة إلى الكائن في شكل أجزاء جسم الشخصية. باقي الإعدادات الافتراضية.



يوضح الرسم البياني أدناه وقت الاستجابة للمقاييس التي يتم فحصها بالمللي ثانية اعتمادًا على عدد مثيلات الكائن. الجهاز الذي تم اختباره هو Xiaomi Mi5 (4 مراكز ، 2.15 جيجاهرتز ، 3 جيجابايت من ذاكرة الوصول العشوائي).







Xiaomi Mi5 ليس هو الجهاز الأضعف ، ولكن تظهر عليه بالفعل خسائر فادحة في الأداء. في الأجهزة الأقل قوة (Lenovo A536 ، رباعي النواة ، 1.3 جيجاهرتز ، 1 جيجابايت من ذاكرة الوصول العشوائي) ، تصبح كارثية. بعد ذلك ، سنقوم بتقييم النتائج التي يوضحها أضعف جهاز.







تحديث واحد لفيزياء الأنسجة وحدها يمثل 775 مللي ثانية من 800. دعونا نحاول استبعاد تأثير المصادمات.







تعمل حسابات تصادم المصادم على تقليل الأداء بشكل كبير ؛ مع وجود 25 حالة ، كان الحد الأقصى من 475 مصادمًا موجودًا في المشهد.



القياس التالي متعلق بنموذج منخفض بولي أحادي الطبقة (153 رأسًا ، 256 مثلثًا) مع عدد أقل من الحالات (حتى 9) وعدد أقل من المصادمات (حتى 8).











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







يتم تقريب الوظائف الناتجة بشكل جيد من خلال دالة متعددة الحدود من الدرجة 2.



يمكن ملاحظة أن الوضع مع الأجسام المنخفضة بولي أفضل بكثير. في أقدم الأجهزة ، يستغرق مثيل واحد من الكائن حوالي 1 مللي ثانية في المتوسط ​​(مقابل حوالي 3 مللي ثانية للطراز عالي الكثافة ، وكل الأشياء الأخرى متساوية) ، وهو أمر جيد جدًا.



بعد ذلك ، دعنا نرى كيف تؤثر المعلمات الإضافية على الأداء .



في الاختبارات ، تم استخدام شبكة أحادية الطبقة بتفاصيل أكبر قليلاً مما كانت عليه في البعد السابق (~ 450 رأسًا ، ~ 800 مثلث). تمت إضافة مصادم كبسولة واحد إلى مكون Unity Cloth ، وتم فحص مثيل واحد للكائن ، وتنوعت المعلمات الإضافية للتصادم الداخلي وتأثيرات الرياح .











تؤدي محاكاة الرياح الإضافية ، وكذلك حسابات الاصطدام الداخلي ، إلى تدهور الأداء.



هذا ملحوظ بشكل خاص في النماذج الأكثر تعقيدًا. دعونا نحلل تأثير المعلمات الإضافية للصلابة (التوتر ، الالتواء) والتوهين على الشبكات ذات ~ 10000 قمة و 500 مع مصادم كبسولة واحد.







فيما يلي النتائج التي تم الحصول عليها على أضعف جهاز (Lenovo A536) بمعلمات مختلفة في كل من القياسات.



1. الصلابة: التمدد والالتواء.

منخفض بولي: 1.67 مللي ثانية ارتفاع بولي: 145.32 مللي ثانية.



2. الصلابة: استطالة - مدفوع. / حليقة - إيقاف.

Low-poly: 1.79 مللي ثانية عالية بولي: 160.44 مللي ثانية



3. الصلابة: تمدد - إيقاف. / التواء - مدفوع.

منخفض بولي: 1.90 مللي ثانية ارتفاع بولي: 172.19 مللي ثانية.



4. الصلابة: التمدد والتواء - بما في ذلك.

Low-poly: 1.92 مللي ثانية. ارتفاع بولي: 194.50 مللي ثانية.



5. الصلابة: استطالة - مدفوع. / حليقة - إيقاف. تأثير الرياح - مدفوع.

Low-poly: 1.69 مللي ثانية. عالية بولي: 165.73 مللي ثانية.



6. الصلابة: استطالة - مدفوع. / حليقة - إيقاف. يشمل التوهين.

Low-poly: 1.69 مللي ثانية. عالية بولي: 172.75 مللي ثانية.



7. الصلابة: استطالة - مدفوع. / حليقة - إيقاف. تأثير الرياح - مدفوع. التوهين - مدفوع.

منخفض بولي: 1.76 مللي ثانية عالية بولي: 173.10 مللي ثانية



8. الصلابة: استطالة - مدفوع. / حليقة - إيقاف. الاصطدامات الداخلية - بما في ذلك.

منخفض بولي: 2.01 مللي ثانية High-poly: Unity Crash



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



  • تضيف محاكاة الرياح حوالي 9٪ من إجمالي زمن الوصول المتري.
  • تضيف محاكاة الخبو حوالي 12٪ من إجمالي تأخير القياس.
  • تضيف محاكاة الانكماش / الالتواء حوالي 13-15٪ من إجمالي وقت الاستجابة المتري.
  • ~ 12–16% ( . : ).


2.





نموذج من cgtrader.com



لنتحدث قليلاً عن إمكانيات مكون Unity Cloth في التعامل مع الشعر. للوهلة الأولى ، لا ينبغي أن يكون هذا أكثر صعوبة من الأقمشة أحادية الطبقة - أولاً قم بإصلاح القمم المرغوبة ، ثم وزع درجة تأثير المحاكاة على القمم المتبقية. ولكن هناك مشكلة - مكامن الخلل في الأجسام الحجمية مثل تجعيد الشعر. لمعرفة سبب حدوثها بشكل أوضح ، نأخذ الشبكة البلورية المكعبة المتمركزة على الوجه لبعض المعادن ، على سبيل المثال كلوريد الصوديوم ، كتوضيح.







يتم تفسير مكامن الخلل من خلال حقيقة أن القمم القريبة تتجاوز القمم البعيدة (كما هو موضح بالسهم). لا يمكن تجنب الخلل والتواءات حتى مع استخدام حسابات تفاعلات الاصطدامات الداخلية. نستنتج أن Unity Cloth غير مناسب للأجسام الصلبة.







إعدادات المحاكاة:



  • بارامز 1: 3 مصادمات ، تيبس للتوتر والالتواء ، الرياح والاصطدامات الداخلية ، التخميد ؛
  • Params 2: 3 مصادمات ، تم تمكين صلابة الشد ، تعطيل تصادم الرياح والداخلية ، تعطيل التوهين ؛
  • مصادم Params 3: 1 ، تم تمكين صلابة الشد ، تعطيل تصادم الرياح والداخلية ، تعطيل التوهين.


مؤشرات أداء الجهازين الضعيفين قابلة للمقارنة مع بعضهما البعض ، يعطي Xiaomi أفضل النتائج.



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



ملخص مكون قماش الوحدة



  • تتواءم بشكل جيد مع الأشياء البسيطة أحادية الطبقة (الأعلام ، والرؤوس ، والمفارش ومفارش المائدة).
  • .
  • .
  • . , : Graphics Settings .
  • - Unity ( Bug Story).




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



إذا كنت تنوي استخدام Unity Cloth على منصات الأجهزة المحمولة ، فعليك الانتباه إلى التوصيات التالية:

  • رؤوس أقل تعني أداء أفضل. استخدم الشبكات ذات الحد الأدنى من عدد الرؤوس التي يمكنك التعامل معها.
  • , .
  • , , , , .
  • , , .


Bug Story
, - . Unity Support.



1. Unity 2018.4.4f1 Cloth Bounds SkinnedMeshRenderer, , .







8 9 . Xiaomi Mi 5.







2018.4.8f1.



2. 2018.4.8 Constraints , - /. , :

  • Constraints;
  • -, ;
  • Play Mode ;
  • Cloth.






2018.4.14f.



All Articles