هذه المقالة محمية ضمن الحقوق الفكرية لشركة In|Framez Technology Corp.، ومرخصة للعرض فقط ضمن الشبكة العربية لمطوري الألعاب مع الموافقة الصريحة من المؤلف وشركة In|Framez Technology Corp.. لا يسمح بإعادة نشر هذه المقالة أو تعديلها دون الرجوع للمؤلف. يمنع النسخ والاقتباس دون ذكر المصدر والموافقة من المؤلف.
لا تقلق عزيزي القارئ، فكل الشخصيات التي تخلقها في عالم الـ 3D الافتراضي هي بكل تأكيد شخصيات غبية! والدليل على ذلك أنه عليك أن تقوم بتحريك كل جزء فيها طوال فترة تواجدها في المشهد بشكل يدوي مهما كان نوع الحركة المطلوبة من الشخصية. خذ على سبيل المثال شخصية تلعب دور مقاتل في معركة. عليك كـ Animator أن تقوم بوضع الشخصية بوضعيات (Poses) مناسبة وحفظ مفاتيح حركة (Keyframes) لكل وضعية جديدة. أما إذا كنت محظوظاً وتعمل في شركة كبيرة ويهمها وقت المشروع، فتقوم باستئجار استوديو لِــلـَـقط الحركة (Motion Capture)، وممثل ليقوم بتمثيل الحركة المطلوبة منه، ونقلها فيما بعد إلى شخصيتك الرقمية في المشهد. نلاحظ أن العمل في كلتا الحالتين إما مُضني أو مكلف، ولكن ما رأيك أن نحوله إلى مستحيل؟
ببساطة، تخيل لو أنه بدلاً من أن يكون مطلوباً منك تحريك شخصية مقاتل واحد، طـُلِب منك تحريك جيش من المقاتلين يخوضون معركة ضد جيش آخر! لا تقلق نفسك بالتفكير بحلول يدوية، لأن هذا هو تعريف المستحيل هنا! ولكن كيف تم تنفيذ حالات مشابهة للحالة التي طرحتها في أفلام مثل Lord Of The Rings و Troy وغيرها، حيث يقوم مئات الآلاف من المقاتلين بتنفيذ أدوارهم بكل ضمير؟
يظهر هنا مبدأ "الحاجة أمّ الاختراع"، ولحسن الحظ كان هناك من لديه القدرة على تلبية هذه الحاجة.. فماذا اخترعوا؟
قامو باختراع ما يسمى بأنظمة المحاكاة والتحكم بالحشود (Crowd Simulation/Control Systems)، والتي –ببساطة- مهمتها التحكم وتحريك أي عدد من الشخصيات الرقمية. وأقصد بأي عدد هنا بالأعداد التي تحجز على يمينها عدد كبير من الأصفار، بحيث يقتصر عمل المسؤول عند تنفيذ المشهد على التعامل مع هذه الحشود بشكل أكثر منطقية، أقرب ما يكون إلى تعامل المخرج السينمائي مع الممثلين الحقيقين، حيث ما عليك إلا الصياح بكلمة آكشن! أو (Simulate)! (في حال هذه البرامج) لترى الممثلين الرقميين الموجودين في مشهدك ينفذون المقطع المطلوب منهم بشكل يمكن إعتباره -تجاوزاً- ذكياً.
أعتقد أننا جميعا نستغرب قدرة هذه الأنظمة على تحقيق مثل هذه النتائج، التي كانت ومازالت عند معظم استديوهات المؤثرات الخاصة حلماً يصعب تحقيقه!
سأقوم من خلال هذه المقالة بإزالة البعض من هذا الاستغراب، واستبداله بالمعرفة المرفقة بالأمل للمشاركة بالمزيد من التطوير والبحث في هذا الجانب بدل من استغراقنا بالبحث (عن سوبر ستار جديد)!
ما وراء الكوابيس
سننتقل مباشرة إلى أحد المخابر السرية... لماذا؟! بالطبع لنعلم المزيد عن الأبحاث الخاصة بهذه الأنظمة، ولأنه -ببساطة- معظم الأبحاث العلمية لابد أن تكون سرية، وهذا البحث ليس إستثناءً على الإطلاق...
أنظر... يبدو أن هذه المكاتب هي المكاتب الخاصة بتطوير أبحاث الذكاء الصناعي والسيطرة على وحدات القتال الآلية... يبدو أن الأمر قد ابتدأ من هنا... ماذا؟ أرفع صوتي قليلاً؟ لا يا صديقي، لا أستطيع حتى لايسمعنا الآخرون، فهنالك دائماً آخرين... دعنا إذاً ندخل ونرى ما يمكن الحصول عليه... تقدم بهدوء ولا تحدث جلبة أرجوك... أغلق الباب وابدأ البحث. سأبحث أنا هنا في هذه الأوراق... ماذا وجدت؟ ماهذا؟ State Machines , Advanced Path Finding , Motion Synthesis عظيم... بل عظيم جداً... خذها كلها لنطـّلع عليها ونشرحها للقراء لاحقاً... إنتبه! أحدهم قادم! تعال واختبأ هنا... (أصوات أقدام ثابتة على أرض من البلاط اللامع)... اييييء... (باب ينفتح محدثاً صريراً حاداً)... لب دب لب دب لب دب (صوت ضربات قلبي المرتجفة)... كلشك (صوت بحث ضمن درج فيه أوراق)... (صوت خطوات أقدام مغادرة ومبتعدة)... أوووووه حمداً لله يبدو أنه قد ذهب. لقد عاد ليأخذ طعام كلبه الذي ابتاعه ونسيه في درج مكتبه... ما علينا... يجب أن نخرج الآن وبسرعة كما دخلنا. لاتسلني كيف دخلنا، لأننا سنخرج بنفس الطريقة (ظننت هذا واضحا بالنسبة لك)... المهم أننا حصلنا على ما نريد من معلومات حول موضوعنا.
لاشك أن هذه المعلومات قد أصبحت قديمة ولا تحمل أي طابع من السرية (وإلا ما أمكنني نشرها)، استثمرت فيما بعد في العديد من المجالات السلمية المختلفة، ابتداءً من علوم الفضاء، وانتهاءً باستثمارها بشكل مبسـَّط في الأفلام وألعاب الكمبيوتر الاستراتيجية.
سأبدأ الأن باستعراض مبسط لبعض المعلومات التي حصلنا عليها، والتي تكشف لنا بعض المبادئ التي تعتمد عليها كل التطبيقات والأنظمة التي سنذكرها لاحقاً.
دعنا نرى هذه الأوراق هنا. جميل. جميعها يتحدث ويشرح كمّ هائل من الخوارزميات والتقنيات التي تندرج في مجملها ضمن ما يسمى بالذكاء الصناعي أو (Artificial Intelligance). لن أتمكن بالطبع من شرح هذه التقنيات، لأنها كفيلة بمضاعفة طول هذه المقالة إلى ماشاء الله، ولكني سأكتفي بالحديث عن بعض هذه الخوارزميات المستخدمة في برامج الحشود (Crowd) بشكل مختصر. ولكي نغطي هذه الحالات، سنأخذ مثال ونرى كيف سيتعامل البرنامج معه، وما هي الخوارزميات التي سيستخدمها.
لنفرض أنه لدينا المثال التالي: ثلاثة شخصيات في مشهد بسيط مؤلف من أرض جبلية، وبعض العوائق الطبيعية. والمطلوب من هذه الشخصيات الانتقال من نقطة إلى أخرى.
لنرى الآن ماهي المهام المسؤول عن تنفيذها البرنامج من أجل تحريك هذه الشخصيات بشكل صحيح ومنطقي.
تحليل النموذج الأساسي للحركة والشخصية (Motion/Actor Analysis)
تعتبر هذه الخطوة تمهيدية للبرنامج، حيث يقوم المستخدم فيها بتهييء نماذج أساسية مبسطة للحركات الرئيسية، كالمشي والركض والوقوف، إضافة إلى تجهيز هيكل الحركة الخاصة بالشخصية (Actor Rig). يقوم المستخدم في هذه المرحلة بتنفيذ الحركات الأساسية بالطرق التقليدية (Key-Framed Animation) أو بالتقاطها بشكل مباشر من ممثل عن طريق أجهزة Motion Capture.
هيكل الحركة لإحدى الشخصيات، مع قائمة بالحركات الأساسية الخاصة بها (Softimage|Behavior)
لا يتجاوز زمن الحركات الأساسية عن بضع ثوان، حيث أنها تكون كافية للبرنامج لتحليلها، واستنتاج ساعات من الحركة المتواصلة لكل شخصية. تعتبر هذه الخطوة هامة لأنها تحدد للبرنامج المزايا الخاصة بحركات كل شخصية. فمثلاً، إذا كانت لدينا شخصية لبطل قوي وأخرى لفتاة أو شيخ كبير، فنحن بحاجة لإعطاء حركات أساسية تميز كل شخصية عن الأخرى، عدا عن تميزهم بالمظهر. يقوم البرنامج في هذه المرحلة باستخدام مجموعة من الخوارزميات التي تقوم بتحليل الحركات الأساسية، واستنتاج مجموعة من المعلومات، مثل أزمنة تلاقي أقدام الشخصية مع الأرض، وزوايا الدوران المفضلة لمفاصل الشخصية، ومعدل التغير في سرعة الشخصية أثناء المشي مثلاً، وغيرها الكثير من المعلومات التي يحتاجها البرنامج أثناء عمله، والتي لحسن الحظ تتم بشكل تلقائي بواسطة البرنامج.
البحث عن مسارات الحركة (Path Finding)
ينتقل البرنامج في هذه المرحلة إلى درجة أعقد من التحليلات الرياضية، والتي تزداد درجة تعقيدها مع ازدياد عدد الشخصيات الموجودة في المشهد الواحد. يتحمل البرنامج في هذه المرحلة مسؤولية تحديد مسار الحركة لكل شخصية، من نقطة البداية إلى النهاية بشكل ديناميكي، يأخذ بعين الإعتبار أي عوائق مفاجئة تظهر له أثناء الحركة. الأمر الذي يزيد تعقيد العمليات هنا هو وجود عدد كبير من الشخصيات على مسافات متقاربة، مما يؤدي إلى دراستها كعوائق متحركة بشكل متبادل. أي تقوم كل شخصية بمعاملة بقية الشخصيات كعوائق متحركة ذات مسارات حركة غير محددة مسبقاً.
تمثيل مبسط لمسارات الحركة الخاصة بمجموعة الشخصيات (Softimage|Behavior)
عامل آخر يقوم البرنامج بمعالجته أيضاً، هو اختيار المسار الذي يضمن وصول الشخصية بأقصر زمن إلى هدفها. وهذا الشرط لا يعني أن يكون هو المسار الأقصر من ناحية المسافة، بل قد يكون أطول ولكنه يحوي عدداً من العوائق أقل من غيره، مما يؤدي إلى وصول الشخصية بزمن أقصر في النهاية. تطبق نتائج هذه التحليلات على موقع الشخصية فقط، دون التعرض لأي عمليات تحريك لأطراف الشخصية، حيث تقوم الوحدة التالية بهذا العبء.
تركيب الحركة (Motion Synthesis)
بعد أن ينتهي البرنامج من تحديد موقع الشخصية بشكل مطلق من خلال المرحلة السابقة، عليه الآن تحريك أجزاء الشخصية (أطرافها) بحيث تتفاعل مع البيئة المحيطة بشكل منطقي. فمثلاً، إذا كانت الشخصية تحاول الصعود على منحدر، يجب أن تعدل حركة السير، حيث يتم نقل مركز ثقل الشخصية للأمام قليلاً للإيحاء بعملية الصعود الشاقة. وإذا واجهت الشخصية أثناء عملية السير على الأرض منطقة من الوحل، فيجب أيضاً أن يتعدل أسلوب الحركة بشكل مختلف عن الحركة الأساسية للإيحاء بصعوبة السير ضمن الوحل.
تصل دقة التحكم في هذه المرحلة لدرجة مراعاة أطراف أصابع القدم أثناء سير الشخصية على الأرض. فمثلاً، إذا صادفت صخرة صغيرة جاءت أسفل إحدى أقدام الشخصية، نلاحظ أنها بشكل تلقائي ستقوم برفع القدم فوق هذه الصخرة ومطابقة القدم عليها بشكل دقيق.
مجموعة من الشحصيات تسير على أرض وعرة مع مراعاة تضاريس الأرض المحيطة (Softimage|Behavior)
يعود الفضل في هذا التحكم لمجموعة من النظريات الخاصة بالمسير (Locomotion)، والتي تعتمد بدورها على خوارزميات الـ Inverse Kinematics. حيث يتم تحديد وضع الأطراف من خلال نقطة نهايتها (Effector). بفضل هذه الميزة، يمكنني أن أضمن لك الكثير من التوفير في الوقت والجهد، حتى ولو كنت بصدد تحريك شخصية واحدة فقط.
المدهش هنا أن كل هذه العمليات التي ذكرتها سابقاً يتم تنفيذها بشكل فوري (Real-Time) دون الحاجة لإجراء أي حسابات مسبقة، أو انتظار البرنامج لعرض النتائج. ليس هذا فقط، بل وفي بعض البرامج المتقدمة يمكنك تغيير بعض الظروف المحيطة ومشاهدة النتائج بشكل فوري ومباشر (Interactive)... حسناً، تعتقد أن هذا كثير بالنسبة لصناعة الـ 3D؟
أقول لك لا. فما زالت أهم نقطة تميز هذه الأنظمة لم نتكلم عنها وهي ما يسمى بالـ State Machines. لنرى إذاً ما قصة الـ State Machine هذه...
معالجات الحالة (State Machines)
نلاحظ أن الأنظمة آنفة الذكر تضمن لنا تحريك أي عدد من الشخصيات ضمن البيئة المفروضة بشكل ديناميكي ودقيق، ولكن ماذا عن اتخاذ القرارات؟ وبالقرارت أقصد قدرة كل شخصية على التفكير بشكل منفصل، واتخاذ قرارت اعتماداً على أحداث ضمن البيئة المفروضة. فمثلاً، إذا أخذنا نفس الشخصية السابقة، ولكن هذه المرة هي في ساحة معركة تواجه شخصيات أخرى عدوة، فماذا تفعل؟ هل تهاجم وتقاتل؟ أم تهرب؟ أم تستجير بغيرها؟ في أية "حالة" تدخل؟
نلاحظ أن الأمثلة السابقة وغيرها تحتوي على حالات تتطلب من الشخصيات أن تقوم بنوع من المحاكمة المنطقية واتخاذ القرار، الأمر الذي استدعى أنظمة الـ Crowd إلى إضافة ما يسمى بالـ State Machines للتعبير عن المنطق الذي يتحكم بقرارات هذه الشخصيات ضمن المشاهد. تعتبر هذه الـ State Machines بمثابة العقل المفكر للشخصية الرقمية، والذي بواسطته تتمكن من تحليل الأحداث واتخاذ قرارات مناسبة لها. فمثلاً، يمكن تمثيل عقلية الشخصية الأخيرة بالـ State Machine التالي:
نموذج لـ State Machine مبسطة خاصة بشخصية مقاتلة
بحيث عندما تواجه الشخصية أعداءها، تقوم باتخاذ أحد القرارات اعتماداً على الـ State Machine المفروضة. فطبقاً لهذه الـ State Machine، يمكن للشخصية أن تهرب إذا كان العدو أقوى منها، أو تطلب المساعدة من شخصيات أخرى في حال تواجدهم. أما إذا كانت هي الأقوى فتقوم بالهجوم عليهم وسحقهم مباشرة.
هذا النظام من الـ State Machines يؤمن أسلوب سهل ومباشر لتمثيل عقليات (أو نفسيات) بسيطة وواضحة للشخصيات الرقمية. ولكن في حال الحاجة لإضافة State Machine أكثر تعقيداً وتشعباً، قد يؤدي هذا النظام إلى تشكيل State Machine معقدة يكون العمل ضمنها وإدراكها صعباً (خاصة على المستخدم)، لذلك أضيفت ما تسمى بالـ State Machine التشعبية (Hierarchical State Machine)، حيث يمكننا في هذه الحالة بناء عقول متشعبة ومتداخلة مع الحفاظ على الوضوح والتوقع في طريقة أخذ القرارات.
بقي أن نعلم أن جميع الـ State Machines المتوفرة حالياً في أنظمة الـ Crowd هي State Machines منتهية (Finite State Machines). والمقصود بكونها منتهية (Finite) أي أنها غير قادرة على تطوير أو زيادة نفسها بنفسها، على عكس نظيرتها الغير منتهية (Infinite State Machines)، والتي تكون الشخصية فيها قادرة على تطوير العقل الخاص بها بشكل تلقائي اعتماداً على الخبرات التي تكتسبها من البيئة المحيطة.
بالطبع استخدام هذا النوع من الـ State Machines في برامج الـ Crowd ليس ذو فائدة مباشرة، بل قد يخلق المزيد من المشاكل الغير متوقعة، وذلك بسبب قدرة الشخصيات على تطوير نفسها بنفسها، واتخاذ قرارات غير متوقعة، مما يجعلك تفقد السيطرة على تصرفات الشخصيات ضمن المشهد، وهذا آخر شيء يريده المخرج (أن يرتجل الممثلون أدوارهم)!
لذلك، واعتماداًَ على ما سبق، نلاحظ أن أهم خطوة لتنفيذ مشاهد مكتظة بشكل ناجح هو بناء State Machine ناجحة ومحكمة للشخصيات. وهي في نفس الوقت الخطوة التي تتطلب أكبر قدر من التجهيز والعمل العقلي من المستخدمين، حيث عليهم بناء مجموعة من الـ State Machines التي تحدد كيفية تصرفات وتفكير الشخصية في كل مشهد. ففي مثال المشهد القتالي، نكون بحاجة لتجهيز عقل قتالي للشخصيات لتتصرف على أساسه ضمن هذا المشهد. الجميل في الموضوع هنا، أنه بعد فترة من العمل تتشكل لدينا مكتبة من الـ State Machines، أو العقول التي يمكن استخدامها مرة أخرى لمشاهد أو شخصيات أخرى لاحقاً. ليس هذا فقط، بل أصبحت هذه الـ State Machines تبنى بشكل ديناميكي قابل للمعايرة، بحيث يمكن لنفس الـ State Machine أن تـُعطى لأكثر من شخصية مع قيم خاصة بكل منها، لنحصل على تصرفات مختلفة وفريدة لكل واحدة!
فمثلاً، يمكن إضافة نفس العقل القتالي لشخصيتين، ولكن يمكننا جعل أحدهم شجاع والآخر جبان�� وذلك من خلال مجموعة من القيم التي تحدد مجموعة من الخصائص بالـ State Machine.
أدى هذا النظام المتبع إلى اعتماد خطوة إضافية في بناء وهندسة الشخصيات في شركات الجرافيكس الكبيرة. ومثالاً على ذلك، أصبحت مراحل إنتاج الشخصية في إحدى هذه الشركات كما يلي:
-
تصميم أولي لمظهر وتصرفات الشخصية (Concept Design).
-
نحت نموذج خاص بالشخصية وتلوينه (Sculptor).
-
بناء النموذج (Modeling) في أحد برامج الـ 3D أو مسحه باستخدام أجهزة المسح المُجسِّمة (3D Scanner).
-
إكساء الشخصية وإعطاءها المظهر النهائي (Texturing & Shaders Setup).
-
بناء وهندسة هيكل الحركة (Rig Engineering).
-
بناء وهندسة نظام عضلي (Muscles System).
-
إضافة أية أنظمة خاصة بالمحاكاة مثل الملابس والشعر (cloth & hair) ومعايرتها.
-
اضافة بارامترات خاصة لعقل الشخصية.
نلاحظ هنا أن الخطوات 1،3،7 هي عبارة عن خطوات كمالية في معظم الشركات العربية، ولا يتم تنفيذ شيء منها غالباً. أما الخطوات 2،6،8 فهي خطوات خرافية بالنسبة لمعظم هذه الشركات، ولا أنصحك أن تقترح أي منها على مديرك لأن رده سيكون قاس غالباً! أما بالنسبة لبقية الخطوات، فيتم عادة تنفيذها من قبل شخص واحد أو أكثر، بحيث لا يتجاوز عددهم أصابع اليد الواحدة. الأمر الذي يعطي نتائج بين سيئة إلى مخزية في معظم الأحيان.
على كل حال، أعتقد أنني قد خرجت قليلاً عن الموضوع الأساسي، وإن كانت هذه النقاط على قدر من الأهمية التي تستحق أن أفرد لها مقالة خاصة بها (ربما ضمن مقالة -الإدارة في مشاريع الجرافيكس-). لنعد إلى موضوعنا... بقي لدينا أن نعلم الآن أين نجد وكيف نختار النظام الأمثل لعملنا...
البرامج التجارية المتاحة
بسبب حداثة هذا المجال نسبياً، نلاحظ أن عدد الحلول التجارية المتاحة قليل إذا ما قارناه مثلاً بعدد برامج الـ 3D المتاحة، والتي نجدها في أي مكان وتحت أي حجر! بالطبع هناك المزيد من الأنظمة والبرامج الخاصة بهذا المجال، ولكنها غير متاحة تجارياً، حيث تقتصر الشركة المنتجة على تطويرها واستخدامها لمشاريعها الخاصة فقط، دون طرحها للبيع (قلة خير). وسأستثني من القائمة كل هذه البرامج، وذلك لعدم إمكانية الحصول عليها (هذا إذا افترضنا إمكانية الحصول على البرامج المتاحة تجارياً).
إذن ماذا يبقى لدينا من حلول؟
Character Studio Crowd Tool, AI Implant, Phoenix Tools Behave, Softimage|Behavior, Massive.
وهي كما ترى ليست حلول كثيرة.
سأقوم بالحديث بشكل مختصر عن كل برنامج من البرامج السابقة موضحاً أهم ميزاته وعيوبه، ولكن بعد فصل هذه البرامج إلى قسمين اعتماداً على بساطة وتعقيد النظام. فلدينا قسم للأنظمة عالية المستوى (High-End Systems) ويشمل الـ Behavior , Massive. وقسم للأنظمة خفيضة المستوى (Low-Level Systems) ويشمل ما تبقى من المجموعة.
سنرى الآن من خلال استعراض هذه الأنظمة السبب في هذا التقسيم.
Character Studio Crowd Tool
هذا النظام الجديد الخاص بـ Character Studio والذي طرحته Discreet مع الإصدارات الأخيرة لـ 3Ds Max يعتبر من أكثر الأنظمة بساطة وسهولة في التعامل، حيث يعتمد على معظم ميزات التحريك المتوفرة في Character Studio، مما يجعل تجهيز الشخصيات له الأسرع والأسهل بين كل أقرانه. ولكنه بالمقابل، يـُعتبر من أكثر الأنظمة بدائية. وأعتقد أن هذا كان نتيجة متوقعة مقابل سهولة استخدامه -والذي يعتبر أمر بديهي بالنسبة للسياسة التي تعتمدها Discreet (سهولة الاستخدام مقابل تحكم أقل) والذي يناسب أكثر من 60% من الشركات ولا سيما المحلية منها-. يفتقد هذا الحل إلى نظام ناضج لبناء State Machine، إضافة إلى افتقاره لعمليات Motion Synthesis بشكل كامل. حيث عليك أن تجهز له وبشكل يدوي كل الحركات المتوقعة. كما أنه لا يعمل بشكل فوري (Real-Time)، حيث يحتاج إلى إجراء عملياته الحسابية بشكل مسبق، والتي قد تفشل بعد انتظارك لها لزمن طويل! وأخيراً، هو غير فعال للتحكم بأعداد غفيرة (لا تصل عملياً إلى 100 شخصية)، وذلك بسبب معماريته الداخلية المرتبطة بالـ 3Ds Max. بقي أن نعلم أنه لا يدعم ميزة العمل بشكل منفصل (Batch Mode)، والتي تعتبر أمراً هاماً في حال معالجة أعداد كبيرة من الشخصيات، حيث تمكنك هذه الميزة من القيام بالحسابات على شبكة من الأجهزة ودون الحاجة لتشغيل 3Ds Max الذي يتسهلك جزء من موارد الجهاز.
اعتماداً على ما سبق، يمكننا أن نرى بوضوح لماذا تم تصنيف هذا النظام والأنظمة الشبيهة به ضمن البرامج الخفيضة المستوى، حيث لا توفر الكثير من الأساسيات الموجودة في الأنظمة عالية المستوى. ولكنه يبقى مثالياً من حيث سهولة الاستخدام والسعر المادي للمشاهد البسيطة التي تكون بحاجة لتحريك بعض من الشخصيات بسرعة ويسر دون أي تكاليف مادية باهظة.
Phoenix Tools Behave
وهو النظام الثاني من الأنظمة خفيضة المستوى، والذي يتوفر كإضافة (Plug-In) لـ Softimage|3D وَ Maya ويعتبر فعالاً بشكل رئيسي ضمن Softimage|3D.
يتمتع هذا النظام تقريباً بكل ميزات وعيوب النظام السابق، مع فارق وحيد وجوهري، وهو فعاليته في التحكم بأعداد أكبر نسبياً. إضافة إلى إمكانية التحكم بالشخصيات عن طريق مجموعة من العوامل الفيزيائية، والتي تعتبر أسلوب سهل ومباشر للتحكم بالشخصيات. حيث يمكنك ببساطة تحريك سرب من الطيور أو الأسماك دون الحاجة للكثير من العمل الأضافي. لكن بالمقابل، يكلف هذا الحل عبء مادي إضافي (1500$)، إضافة إلى العبء الخاص بالبرامج المضيفة (Softimage/Maya)، الأمر الذي يجعله غير مرغوب فيه، ولا سيما مع وجود بدائل أحدث وعالية المستوى تعمل بشكل متكامل مع كل من Softimage|XSI وَ Maya.
نلاحظ أن الأمثلة السابقة وغيرها تحتوي على حالات تتطلب من الشخصيات أن تقوم بنوع من المحاكمة المنطقية واتخاذ القرار، الأمر الذي استدعى أنظمة الـ Crowd إلى إضافة ما يسمى بالـ State Machines للتعبير عن المنطق الذي يتحكم بقرارات هذه الشخصيات ضمن المشاهد. تعتبر هذه الـ State Machines بمثابة العقل المفكر للشخصية الرقمية، والذي بواسطته تتمكن من تحليل الأحداث واتخاذ قرارات مناسبة لها. فمثلاً، يمكن تمثيل عقلية الشخصية الأخيرة بالـ State Machine التالي:
التحكم بسرب من النحل الهائج (Softimage|3D/Pheonix Tools Behave)
AI Implant
يتميز هذا النظام عن أقرانه بأنه يمسك العصا من المنتصف، حيث يجمع ما بين سهولة الإستخدام، وبعض من الميزات الأساسية المتوفرة في البرامج عالية المستوى. يعمل AI Implant أيضاً كـ Plug-In للـ Maya فقط، مما يحدّ من انتشاره في الشركات التي لا تعتمد Maya ضمن نظام عملها.
وبسبب وجوده كـ Plug-In، فهو أيضاً يتمتع بكل العيوب السابقة من حيث عدم فعاليته لأعداد كبيرة وعدم إمكانية عمله في الـ Batch Mode. ولكنه بالمقابل يتميز باحتوائه على نظام بدائي لبناء State Machines والتحكم بها، إضافة إلى وجود نظام بسيط للقيام بعمليات Motion Synthesis. والميزة الأهم هنا هي إمكانية إجراء معظم حساباته بشكل فوري Real-Time، مما يجعله أقرب إلى الأنظمة عالية المستوى. ولكن ما يضعفه كخيار عملي هو ارتفاع سعره، والذي يصل إلى 6000$ دون مبرر واضح لذلك.
Softimage|Behavior
إذا كنت تخطط لإنتاج جزء جديد من Lord of The Rings أو Troy، فهذا أحد الأنظمة التي يمكنك الاعتماد عليها. يؤمن هذا البرنامج حل متكامل يحوي كل الميزات المتقدمة التي ذكرناها سابقاً. فهو يحتوي على نظام متقدم لبناء ومعايرة الـ State Machines بشكلها الشجري (Hierarchal Finite State Machine)، ولديه القدرة على القيام بكافة عمليات الـ Motion Synthesis، ليس فقط للشخصيات ثنائية الأرجل، بل نظرياً لشخصيات بعدد غير محدود من الأرجل!
كما أنه فعال لأعداد كبيرة تصل بشكل فعلي ومجرب إلى 150,000 شخصية لمرحلة Render واحدة. أي يمكنك ببساطة الحصول على مليون ونصف شخصية إذا قمت بعملية الـ Render على عشر مراحل 10 Render Passes.
130,000 شخصية تمت معالجتها بواسطة (Behavior/Mental Ray). يمكنك أن تتأكد من ذلك بنفسك!
وبالطبع فإن كامل عملية الـ simulation تتم بشكل فوري وتفاعلي (Interactive Real-Time Simulation) بحيث يمكنك القيام بأي تغييرات على المشهد أو الشخصيات حتى أثناء قيامه بعمليات المعالجة! وفي حال المشاهد المعقدة، يمكنك استخدام نظام الـ Batch Mode لإجراء كافة عمليات المعالجة بشكل مستقل وعلى أكثرمن جهاز.
يضيف Behavior إلى مجموعة ميزاته المتقدمة أنظمة للمحاكاة الفيزيائية (Rigid Bodies Simulation) حيث يمكنك استخدامها لإضافة حركات واقعية للشخصيات والأجسام، اعتماداً على مجموعة من الشروط الفيزيائية، كالجاذبية الأرضية (Gravity)، ومعاملات الاحتكاك (Friction)، والمرونة (Elasticity).
واذا كانت كل هذه الميزات لا تكفيك، فيمكنك تطوير أية إضافة Plug-In تحتاجها من خلال الـ SDK المتوفرة معه، والتي بدورها تشتمل على كمّ هائل من الميزات والتسهيلات الرياضية التي سأكتفي بعدم ذكر أي منها!
بقي أن نعلم أن ما يميز هذه الأنظمة ويجعلها فعلاً من الأنظمة المتقدمة عالية المستوى، هو خوارزميات الذكاء الصناعي المتقدمة التي تعتمد عليها، والتي تجعل تصرفات الشخصيات فعلا ذكية! حيث تعتمد الشخصيات في اتخاذ قراراتها على المنطق العائم (Fuzzy Logic)، والذي يجعل قرارات الشخصيات أقرب إلى تلك التي يتخذها البشر، والتي لا تقتصر فقط على منطق رقمي ذو نتائج 0 أو 1 أو أسود أو أبيض، بل هناك دائماً مكان للرمادي أو أنصاف الحلول. تقلص هذه الخوارزميات من التصرفات الروبوتية (Robotic Behaviors) التي تظهر بشكل واضح على الشخصيات التي تعتمد المنطق الرقمي فقط لاتخاذ قرارتها.
إضافة الى ذلك، فإن هذه الخوارزميات تحصل على ما تحتاجه من معلومات عن البيئة المحيطة بشكل فوري وديناميكي، وذلك عن طريق توظيف طبقة أخرى من الخوارزميات المسؤولة عن إضافة بعض الحواس الأساسية، كالسمع والنظر واللمس، مما يجعل هذه الشخصيات تتفاعل مع البيئة المحيطة بشكل أكثر واقعية، كما تمكن النظام ككل من معالجة أية حالة يضيفها أو يعدلها المستخدم بشكل فوري وتفاعلي.
حسناً... بعد كل هذه الميزات والتي لم أستطع أن أحصرها، ماهي العيوب التي يتمتع بها هذا النوع من الأنظمة؟ إذا تجاهلنا الأسعار الباهظة لهذه الحلول، والتي تتراوح بين الـ 10,000$ والـ 15,000$، يبقى لدينا مجموعة من السلبيات، والتي تترأسها تعقيد وصعوبة استخدام مثل هذه البرامج. فعلى الرغم من تبجح الشركات المنتجة Avid/Softimage وغيرها بسهولة الاستخدام والتعامل، إلا أنني لا أثق إلا بتجربتي الشخصية. وتجربتي التي قضيتها في التعامل مع نسخة الـ Behavior الخاصة بـ In|Framez تؤكد عكس ذلك! حيث كانت تضمن لي المزيد من التعقيدات البرمجية والرياضية، والتي هي أكثر ما كنت أحاول الابتعاد عنه، إضافة إلى حاجته إلى أجهزة ذات سرعات عالية لتتمكن من الحصول على نتائج جيدة بزمن منطقي. كما أن توفره كبرنامج مستقل وليس كـ Plug-In ضمن برنامج 3D، يضيف للمستخدمين عبء تجهيز الشخصية في برنامج الـ 3D الذي استخدم لبناء وتحريك الشخصية، ومن ثـَمّ تصديرها له بشروط معينة. وإن كانت الشركة المنتجة Softimage تسعى جاهدة لتقليص هذه المشكلة، وذلك بتجهيز مجموعة من الأدوات التي تساعدك في تجهيز شخصيتك بشكل سريع ومباشر، وخاصة على خط XSI -> Behavior -> MentalRay.
نلاحظ من واجهات الاستخدام الخاصة بهذه البرامج، أنها أقرب إلى واجهات استخدام بيئات البرمجة، حيث يمكننا بسهولة ملاحظة التشابه بين واجهة استخدام Behavior وَ Visual Studio. وذلك بالطبع بسبب تغلب الطابع البرمجي على الطابع الجرافيكي فيها. حيث توفر هذه الواجهات أدوات كاملة لإدارة الملفات والكود، إضافة إلى عمليات كشف الأخطاء (Debugging).
أخيراً، بقي تعليقي الذكي حول هذا البرنامج. وأقول أنه حل مثالي لمشاريع ضخمة من عيار Troy (أشك في وجود هذا النوع من المشاريع في وطننا العربي الكبير)، وفي نفس الوقت، اختيار فاشل لمَـشاهد تحوي بضع عشرات من الشخصيات، أو لمشاهد قصيرة لا تتجاوز الدقائق المعدودة.
Massive
وهو الخيار الآخر الذي يمكنك بواسطته إنتاج مشاهد من العيار الثقيل (Massive)، من حيث عدد الشخصيات التي يمكنه التعامل معها ومن حيث الأداء! نعم، الأداء... فعلى الرغم من كونه ضمن الأنظمة عالية المستوى، والتي يجب أن تقوم بمعالجاتها بشكل فوري، إلا أن أداءه البطيء لا يخفى على أي شخص يستخدمه. إلا أن الشركة المنتجة تتباهى بهذا الأمر وتعزيه إلى دقة وتعقيد العمليات الحسابية التي يجريها البرنامج، والتي تفتقر لها البرامج المنافسة. لذلك كانت متطلبات التشغيل لهذا البرنامج أكبر من أقرانه، فهو بحاجة إلى 1GB – 2GB من الذاكرة RAM ومعالج بسرعة لا تقل عن 3GB، إضافة إلى كرت شاشة Quadro أو ما يكافئه، وهو فوق كل هذا لا يعمل على أنظمة تشغيل Windows، بل يشترط RedHat 7.3 أو RedHat 9. فيما عدا هذا، فهو يشمل كامل عيوب وميزات هذا النوع من البرامج. حيث يقدم لنا نظام جيد لبناء الـ State Machines يدعى Agent Brain، إضافة إلى قدرته على القيام بعمليات Motion Synthesis والتكيف مع التضارييس (Terrain Adaptation). كما يشتمل على مجموعة لا بأس بها من أنظمة المحاكاة الفيزيائية، كنظام Rigid Bodies وَ Cloth والتي تمكنك من إضافة خصائص فيزيائية للشخصيات للحصول على نتائج أكثر واقعية. بالنسبة لبقية الميزات، فهي مشابهة للتي ذكرناها سابقا في حديثنا عن Behavior.
الاستفادة من نظام الـ Cloth المتوفر للتحكم بملابس الشخصيات أثناء تحريكهم.
بالنسبة لما تبقى من العيوب، فهي لا تقل عن تلك الموجودة في Behavior، بل تضيف عليها بعض الأعباء الإضافية في التعامل مع الشخصيات. حيث يجب على المستخدم بعد جلب الشخصية إلى البرنامج، القيام ببعض العمليات الخاصة بالـ Skinning أو Envelopes، إضافة لمعايرة الخصائص الفيزيائية للـ Cloth في حال استخدامها.
تترأس كل هذه العيوب سعره الباهظ، الذي يبدأ بـ 18,000 $ للنسخة الواحدة و 2000$ لإيجار النسخة الواحدة في الشهر! مما يجعل عملية اختياره ليست بهذه السهولة حتى بالنسبة للشركات الكبيرة، ولا سيما أن دعمه في عملية التصدير لأنظمة الـ Render يقتصر فقط على RenderMan، وإن كانت الشركة المنتجة تعد بأن تدعم MentalRay في القريب العاجل.
أخيراً، يمكننا القول أنه نظام عالي المستوى يقدم الكثير من الميزات مقابل الكثير من المال، لذلك إن لم تكن بحاجة لكل الميزات التي يقدمها فعلاً، فلا أعتقد أنه سيكون خيار موفق، وعليك إعادة النظر في الصفحات السابقة بحثاً عن نظام بميزات أقل وبسعر أقل.
في النهاية...
هاااه. وهكذا ينتهي عرضنا النظري اليوم لبرامج الـ Crowd ومبدأ عملها. للأسف، بقي لدينا الكثير من الأفكار والأمثلة العملية حول هذا الموضوع، والتي للأسف لن أتمكن من تغطيتها في مقالة واحدة أخرى. ولكني أعدكم بأن أنشرها بأقرب فرصة ممكنة إما في مقالات لاحقة (باللغة العربية) أو ضمن المقالات التقنية على موقع In|Framez (باللغة الانجليزية)، وأعتقد أني أشم رائحة مقالة حول الـ HFSM ستنشر قريباً على الموقع... ابقوا متيقظين...