الشبكة العربية لمطوري الألعاب

خبير  سلوان الهلالي مشاركة 1

بسم الله الرحمن الرحيم

المقالة التي سأشارك بها تحمل عنوان: حركة الشخصيات ثلاثية الأبعاد للمبرمجين

تأتي المقالة بجزيئين:
------------------------------------------------------------------------
الجزء الأول: أسس ومفاهيم حركة الشخصيات في التطبيقات الفورية

تحميل المقالة (~488 كيلوبايت):
http://sal.110mb.com/articles/charanim_1_article.rar

تحميل الملفات المرفقة (~7.1 ميغابايت):
http://sal.110mb.com/articles/charanim_1_files.rar
------------------------------------------------------------------------
الجزء الثاني: استخدام مكتبة Cal3D لتحريك الشخصيات

تحميل المقالة (~523 كيلوبايت):
http://sal.110mb.com/articles/charanim_2_article.rar

تحميل الملفات المرفقة(~10 ميغابايت):
http://sal.110mb.com/articles/charanim_2_files.rar
------------------------------------------------------------------------

خبير مدير وسام البهنسي مشاركة 2

وفي 11 مايو 2009 07:08 م، قال سلوان الهلالي متحمساً:

الملفات المرفقة مع المقالة (7.9 ميغابايت):
http://salwan.net/articles/files/characteranimation_part1.zip

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

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  سلوان الهلالي مشاركة 3

وفي 14 أيار 2009 05:50 م، ظهر شبح ابتسامة على وجه وسام البهنسي وهو يقول:

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


غريب، ليس هنالك أي ملف بإسم عربي [تحديث: لقد نسيت ملف المقالة نفسه ☺ ، تم التعامل مع المشكلة]
ولكن أعتقد إني أعرف سبب المشكلة، لقد رفعت الملف مع تعديلات طفيفة بنفس الاسم طبعاً قبل وقت كتابتك للرد بقليل، قد يكون هذا هو السبب؟ أي إن المصدر تغير أثناء التحميل..
على كل حال، سأرفعه مرة أخرى بصيغة rar للتأكد.

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

[تحديث: آخر إصدار من المقالة مقدّم في المشاركة الأولى.]

خبير مدير وسام البهنسي مشاركة 4

أما في 14 مايو 2009 01:06 م، فقد تنهد سلوان الهلالي بارتياح وهو يرد:

غريب، ليس هنالك أي ملف بإسم عربي

الملف المرفق مع مشاركتك والذي يحتوي نص المقالة نفسها ☺
 



في 14 مايو 2009 01:06 م، غمغم سلوان الهلالي باستغراب قائلاً:

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

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

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 5

السلام عليكم

مرحبا بك أخي سلوان ومبارك لك المقالة الرائعة 😄
نحن في انتظار الجزء الثاني وشكرا لك على المعلومات القيمة


هذا الجزء نقاش خارج عن صلب الموضوع قليلا:
-------------------------------------------------
ماذا عن صيغ الملفات التي تحتفظ بقيم التحريك animation data
ربما حسب علمي أن هناك الكثير - لكن كيث يتم تخزين بيانات التحريك كمثال لاحدى الملفات المشهورة؟

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

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

أيضا أود أن أستفسر عن ال Vertex Tweening  وهل له علاقة بأسلوب التحويل Morphing؟

بالتوفيق ان شاء الله 😄

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير  سلوان الهلالي مشاركة 6

وفي 14 أيار 2009 10:34 م، أعرب ahmed ezz عن رأيه بالموقف كالآتي:

السلام عليكم
مرحبا بك أخي سلوان ومبارك لك المقالة الرائعة
نحن في انتظار الجزء الثاني وشكرا لك على المعلومات القيمة

شكراً لكتابتك الرد 😄

في 14 أيار 2009 10:34 م، قال ahmed ezz بهدوء وتؤدة:

ماذا عن صيغ الملفات التي تحتفظ بقيم التحريك animation dataربما حسب علمي أن هناك الكثير - لكن كيث يتم تخزين بيانات التحريك كمثال لاحدى الملفات المشهورة؟

عادة ما تخزّن بيانات التحريك بصورة مفاتيح أطر (Keyframes) ينطبق كل مفتاح على عظم واحد، لكل مفتاح مجموعة بيانات تمثّل التحويل  (الإنتقال/الدوران/التحجيم) بإسلوب معين لذلك العظم، على سبيل المثال أحد أساليب التعبير يمكن أن يكون بهذا الشكل:
- متجه ثلاثي للإنتقال (translation vector)
- متجه ثلاثي للتحجيم (scaling vector)
- رباعي للدوران (rotation quaternion)
وهذه البيانات تخزّن لكل مفتاح إطار لكل عظمة.
على سبيل المثال، المكتبة التي ستكون محور كلامي في الجزء الثاني من المقالة (Cal3D) تخزّن الحركة في ملف مستقل بهذه الطريقة:

description                length  type      comments
-------------------------  ------  --------  -----------------------------------
[header]
  magic token              4       const     "CAF\0"
  file version             4       integer   700
  duration                 4       float     length of animation in seconds
  number of tracks         4       integer

[first track]
  bone id                  4       integer   index to bone
  number of keyframes      4       integer

  [first keyframe]
    time                   4       float     time of keyframe in seconds
    translation x          4       float     relative translation to parent bone
    translation y          4       float
    translation z          4       float
    rotation x             4       float     relative rotation to parent bone
    rotation y             4       float     stored as a quaternion
    rotation z             4       float
    rotation w             4       float

  [all other keyframes]
    ...

[all other tracks]
  ...


في 14 أيار 2009 10:34 م، عقد ahmed ezz حاجبيه بتفكير وقال:

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

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

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

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


وفي 14 أيار 2009 10:34 م، قال ahmed ezz متحمساً:

يضا أود أن أستفسر عن ال Vertex Tweening  وهل له علاقة بأسلوب التحويل Morphing؟

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

😏

موهوب  عبدالله الشمّري مشاركة 7

السلام عليكم .

كيف حالكم يا اخوان ..


أخ سلوان .. كيف حالك 😄 .. مبدع .. لكن قبل أن أسرد ما لدي ( وهو ليس بالكثير ) .. عجزت أن أجد المقالة .. كل ما وجدته هو الأمثلة .. هل هناك مقالة في هذا الجزء .. انتظر ردك قبل طرح ما لدي بعد بضعة أيّام ..

--
طالب - تخصص نظم معلومات .
--

خبير  سلوان الهلالي مشاركة 8

أما في 18 أيار 2009 06:22 م، فقد تنهد الشمري بارتياح وهو يرد:

السلام عليكم .

كيف حالكم يا اخوان ..


أخ سلوان .. كيف حالك 😄 .. مبدع .. لكن قبل أن أسرد ما لدي ( وهو ليس بالكثير ) .. عجزت أن أجد المقالة .. كل ما وجدته هو الأمثلة .. هل هناك مقالة في هذا الجزء .. انتظر ردك قبل طرح ما لدي بعد بضعة أيّام ..

عليكم السلام ورحمه الله،

أهلاً بك أخ الشمري، وشكراً على الإطراء، المقالة موجودة في المرفقات مع الموضوع (بالاسم character_animation_article_part1.rar) ، هل واجهت مشكلة في فتح الملف المضغوط؟
سوف أضيف رابط لتحميل ملف المقالة إلى محتوى الموضوع للتسهيل.

بانتظار مشاركاتك بفارغ الصبر 😋

(طلب/ أرجو ان يؤكد لي أحد إن الملفات يمكن تحميلها وفتحها جميعاً بشكل صحيح، شكراً. 😄 )

خبير  أحمد عزالدين مشاركة 9

السلام عليكم

كيف حالكم جميعاً؟ بالتوفيق في الامتحانات ان شاء الله

فقط أحببت أن أؤكد أن المقالة سليمة عندي وكذلك قمت بتجربة الامثلة وهي تفتح بنجاح - بجانب عرض الفيديو الرائع

شكرا لك سلوان ، وفي انتظار الجزء الثاني قريبا ان شاء الله😄

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

موهوب  عبدالله الشمّري مشاركة 10

وجدت المقالة☺ , كنت أعتقد أن الملف معطوب .. لم أنتبه إلى أنه مرفوع من جديد .

المقالة رائعة , لماذا ؟

- تقريبا 90% من المعلومات الواردة هي معلومات جديدة ( بالنسبة لي ) ,
- الموضوع صعب , ومجرّد وجود الشجاعة للكتابة حوله أعتقد هذا انجاز .
- أسلوبك جميل في التدرج في الشرح , والأمثلة الجميلة ( لو أني لم أشاهد OpenGL ☺ ) .
- استخدامك رائع للصور التوضيحية و للمجسمات في الامثلة .. على سبيل المثال .. مثالك حول الهرمية Hierarchy .. استخدمت مجسمات معبرة ومتعوب عليها  .. بينما في الكتب الاحترافية تستخدم مجموعة من المكعبات .

اذا تحب تعرف مدى استفادتي من المقالة .. سأقول أني استفدت من مثال التحويل الهرمي ومثال الـ morphing .. بقية المفاهيم تحتاج مزيد من الوقت .. خاصة وأن فيها رائحة Quaternion المنفّرة .

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

أتمنى لك التوفيق " استاذي " .😄

--
طالب - تخصص نظم معلومات .
--