أسرار العمل بالنسيج في لعبة آلان ويك


[وصف هنري إنكويست ، مبرمج الرسوم المتحركة ، كيف ابتكر فريقه محاكاة سترة تويد قوية لبطل فيلم الرعب آلان ويك.]

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

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

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

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

في هذه المقالة ، سأتحدث عن المشكلات التي كان علينا مواجهتها ، وعن الحلول لإنشاء محاكاة الأنسجة الخاصة بنا.

سترة تلاعب


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


الشكل 1. تلاعب سترة أعلى هيكل عظمي لعبة العادية.

سترة أعلى


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

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

كيف يبدو شكل القيد المكلف
صورة

نظرة في costraint تطبيقها على مخروط أحمر

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


الشكل 2. حركة العظام عند رفع شخصية اليد.

قد يكون هذا كافيًا لتطبيق القيود في مصدر الرسوم المتحركة وإخراج النتائج في بيانات الرسوم المتحركة ، لكننا ما زلنا نحاول التحكم في العظام في محرك اللعبة في الوقت الفعلي.

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

الجزء السفلي من سترة


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

لقد أردنا الحفاظ على دقة شبكة السترة بحيث لا تتداخل مع أي قيود يحددها المبرمج. على سبيل المثال ، إذا قررنا استخدام نفس الشبكة لمحاكاة النسيج كتلك المستخدمة في التجسيد ، فستفقد صورة ظلية الجيوب وأمام الغلاف.

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

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



الشكل 3. مقارنة الصور الظلية من سترة لدينا والنسيج الذي لديه نفس القمم مع محاكاة.

الفيزياء Werle


أولاً نلقي نظرة على فيزياء Verlet ، ثم نتعلم كيفية إنشاء تطابق لمحاكاة العظام. تعد Verlé Physics حلاً قياسيًا لمحاكاة الأقمشة في الألعاب. إذا لم تكن على دراية بتقنية Verlet ، فبالنسبة للمبتدئين ، أوصي بقراءة إحدى هذه المقالات على Gamasutra: Devil in the Blue Faceted Dress: Real Time Cloth Animation أو فيزياء الشخصيات المتقدمة .


الشكل 4. شبكة من 4X4 القمم والقيود لأحد القمم.

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

وتسمى القيود من الجيران المباشرين قيود التمدد ويشار إليها باللون الأزرق. تسمى القيود الطويلة المشار إليها باللون الأحمر قيود القص / الانحناء.

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

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

Vector3 vVelocity = vertex.vCurrentPosition - vertex.vPreviousPosition; vertex.vPreviousPosition = vertex.vCurrentPosition; vertex.vCurrentPosition += vVelocity * ( 1.0f - fDampingFactor ) + vAcceleration * fDeltaTime * fDeltaTime; 

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

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

 Vector3 vDelta = constraint.m_vertex1.m_vCurPos - constraint.m_vertex0.m_vCurPos; float fLength = vDelta.length(); vDelta.normalize(); Vector3 vOffset = vDelta * ( fLength - constraint.m_fRestLength ); constraint.m_vertex0.m_vCurrentPosition += vOffset / 2.0f; constraint.m_vertex1.m_vCurrentPosition -= vOffset / 2.0f; 

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

 vOffset *= fStiffness; constraint.m_vertex0.m_vCurrentPosition += vOffset / 2.0f; constraint.m_vertex1.m_vCurrentPosition -= vOffset / 2.0f; 

مع معامل الصلابة 1.0 ، النسيج سيكون غير مرن ، وعند 0.0 ، سينحني النسيج دون أي قيود.

خطوة وقت ثابت


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

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

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

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

غطاء محرك السيارة


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


الشكل 5. هود والبندول.

خلق مصفوفات العظام


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

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

ثم نحتاج إلى حساب مصفوفة الدوران 3x3. يتم تعريف كل صف (أو عمود ، بناءً على تكوين المصفوفة) بالمحاور x و y و z للعظام.

نحدد المحور السيني للعظم على أنه الاتجاه من قمة الرأس إلى التالي أسفله. ثم ، يتم تعريف المحور ص من قبل المتجه من قمة الرأس على اليسار إلى قمة الرأس على اليمين.


الشكل 6. العظام تعلق على شبكة النسيج.

في الشكل 6 ، يظهر المحور x باللون الأحمر ، ويظهر المحور y باللون الأخضر. بعد ذلك ، يتم حساب المحور z كمنتج متجه لهذه المتجهات. في النهاية ، نقوم أيضًا بتعريف المصفوفة للتخلص من التشويه في بيانات الإزاحة.

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

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

اصطدام


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


الشكل 7. النظام الإهليلجي لنموذج ويك.

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

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

قررنا أننا يمكن أن نتصالح مع عدم دقة طفيفة في حساب اتجاه الاصطدام. في الحالات التي يمكن أن تسبب فيها الإهليلجيات الممتدة بقوة ردود فعل غير صحيحة ، قمنا بتقسيمها إلى اثنين أكثر تجانسًا.

أقصى مسافة للجسيم


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

لكل قمة ، يتم وضع موضع الاستراحة الأولي عن طريق التصفيق بأقرب عظم ونستخدمه كنقطة مرجعية. إذا تجاوزت المحاكاة قيمة العتبة ، فنحن ببساطة نحرّك الرأس من النقطة المرجعية. في تصميمنا ، سمحنا للقمم الموضحة أدناه أن تتحرك مسافة أكبر من القمم القريبة من الكتفين.

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

أكثر تويد ، المطاط أقل


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

القتال تمتد


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

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

لقد فرضنا قيودًا صارمة على قيود الامتداد (كلها موجهة رأسياً). تم فرز هذه القيود من أعلى إلى أسفل بحيث تم حل القيود القريبة من الكتفين على قيود بالقرب من الأرجل.

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

 Vector3 vDelta = constraint.m_vertexTop.m_vCurPos - constraint.m_vertexDown.m_vCurPos; float fLength = vDelta.length(); vDelta.normalize(); Vector3 vOffset = vDelta * ( fLength - constraint.m_fRestLength ); constraint.m_vertexDown.m_vCurrentPosition += vOffset; 


الشكل 8. قيود ضيقة.

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

ومع ذلك ، لاحظنا أنه في حالة السترة ، فإن الامتداد الأفقي يظل في الواقع غير مرئي للعين البشرية ، وبسبب التمدد العمودي ، تبدو السترة سيئة للغاية. تبين أن هذا الحل جيد جدًا.

حواف سترة


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

يمكن العثور بسهولة على الحواف بعدد القيود المرتبطة بها. أي قمة تحتوي على أقل من أربعة قيود تمتد هي حافة. لذلك ، يمكننا وضع علامة على هذه القمم ومحاكاةها بمعلمات أخرى.

  • انخفاض التوهين.
  • الرياح العالمية لها تأثير أكبر.
  • للحركة في الفضاء العالمي تأثير أكبر (لمعرفة المزيد عن الحركة في الفضاء العالمي ، انظر أدناه).
  • الحد الأقصى لمسافة السلامة المسموح بها أعلى.

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


الشكل 9. قمم الحواف.

الحركة في الفضاء العالمي وفي الفضاء المحلي


ثم لاحظنا أنه عند تحريك الشخصية ، يكون للحركة في الفضاء العالمي تأثير كبير إلى حد ما على المحاكاة ، في حين أن حركات الجسم المحلية الصغيرة أو حركات الكتف لا تُلاحظ.

في محاكاة الأنسجة التقليدية ، يتم محاكاة مواقع القمم في الفضاء العالمي. قد يقول شخص ما إن محاكاة القماش صحيحة ، لكنها غير طبيعية. لذلك ، قمنا بمحاكاة سترة على الشخصيات في الفضاء المحلي وأضفنا بشكل منفصل حركة صغيرة في الفضاء العالمي. لقد لاحظنا أن النتائج التي نحتاج إليها يتم الحصول عليها من خلال رسوم متحركة محلية 100 ٪ للهيكل العظمي مع حركة 10-30 ٪ في الفضاء العالمي.

احتكاك


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

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

الخلاصة والمزيد من العمل


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

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

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


الرقم 10. سترة تويد.

Source: https://habr.com/ru/post/ar458486/


All Articles