المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [مقال]احد تقنيات الالعاب (IK)



M.hocine
10-12-2009, 08:37 PM
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
الموضوع عن تقنية استعملت في كثير من الالعاب 3d الحديثة مثل : Mortal Kombat vs. DC Universe و Assassin’s Creed

ماهي الـ IK ؟
IK اختصار لعبارة inverse kinematic وهي الحركة العكسية
kinematic = Motion = حركة
و لنفهمها ناخذ مثال في 3ds max

لدينا مجموعة من العظام مرتبطة تسلسليا -لتكون مثلا عظام شخصية ما-
http://www.montada.com/picture.php?albumid=1516&pictureid=10460


لو قمنا بتحريك العظمة الأولى .. ستتحرك بقية العظام معها
http://www.montada.com/picture.php?albumid=1516&pictureid=10461


لو قمنا بتحريك العظمة الثانية ستتحرك العظام المرتبطة اسفلها
http://www.montada.com/picture.php?albumid=1516&pictureid=10462


اذن عندما يتحرك الأب يتأثر الابن (father affect child)

العظمة الزرقاء أب لبقية العظام
الخضراء ابن للعظمة الزرقاء و أب للبقية
الحمراء ابن للخضراء و أب للسوداء
السوداء ابن للحمراء
(يمكن تغيير الاب و الابن -Hierarchy- من الازرار link/unlink في الماكس)
http://www.montada.com/picture.php?albumid=1516&pictureid=10463
وعندما يتحرك الابن لا يتأثر الاب و هنا يأتي دور IK
نختار العظمة السوداء ، ثم من القائمة Animation نختار IK Solvers
http://www.montada.com/picture.php?albumid=1516&pictureid=10464
ما يهمنا من القائمة هو : HI Solver ، (انظر ملف المساعدة للماكس للمزيد) نضغط على HI Solver ثم نختار العظمة الزرقاء
http://www.montada.com/picture.php?albumid=1516&pictureid=10465
الآن بتحريك الـ helper الناتج "IK Chain01" تتأثر كل العظام بتحركه
http://www.montada.com/picture.php?albumid=1516&pictureid=10466

وهكذا تكون الحركة واقعية -الى حد ما- مثلا عندما تجذب اصبع يدك تتأثر كل ذراعك و هذا هو inverse kinematic = الابن يؤثر على الأب

وهذه الاعدادات موجودة أصلا مع الـ Biped :
http://www.montada.com/picture.php?albumid=1516&pictureid=10467

الآن ..هذا الـ inverse kinematic يشمل الذراع فقط أو الرجل فقط أو النصف العلوي فقط ..ولا يشمل بقية الجسم .. نفرض ان شخص ما جذب يدك بقوة ..ستتأثر يدك و ذراعك و النصف العلوي .. و اذا كانت القوة كبيرة سيتأثر كل الجسم ، وهذه الخاصية مدرجة في عدة برانمج مثل Motion Builder ، Endorphim (كلها برامج تحريك) وهناك مقبس للماكس 6، 7 اسمه
"Human IK" لشركة "Kaydara" يؤدي المهمة من داخل الماكس .
http://www.montada.com/picture.php?albumid=1516&pictureid=10477


Kaydara Human IK 1.0 for 3ds max ( 21MB )
http://rapidshare.com/files/8581781/DcpHumanik.rar
البرنامج الذي يحتوي على الـ IK مثل هذا يساعد الانميتور على صنع حركة واقعية بسهولة .

<object width="425" height="344"><param name="movie"

value="http://www.youtube.com/v/LS8hPs12EFE&hl=en_GB&fs=1&"></param><param name="allowFullScreen"

value="true"></param><param name="allowscriptaccess" value="always"></param><embed

src="http://www.youtube.com/v/LS8hPs12EFE&hl=en_GB&fs=1&" type="application/x-shockwave-flash"

allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>


لدينا انميشن للوقوف "stand": صدرنا الشخصية و الانميشن الى المحرك .. وضعنا الشخصية في الlevel ، و هذا الليفل فيه اماكن مائلة و يمكن للشخصية أن تقف فيها ، سنجد ان الاقدام تخترق الارض .
و المشكل ..ان الأنميشن الذي يصدر من الماكس -مثلا- لا يمكن تعديله من داخل محرك الالعاب ..
اذا كان المحرك يدعم الـ IK فيمكن تصحيح زاوية ومكان القدم -أثناء اللعب-بحيث تبدو كأنها أنيميشن مصدرة من الماكس و تبدو الشخصية متأثرة بالتضاريس << عملية retargeting
في لعبة Assassin Creed تم دمج كود Human IK في محرك اللعبة Scimitar engine ، فأعطاهم ذلك مرونة في تصحيح الأنميشن و اصبح بالامكان استعمال انميشن واحدة في عدة اماكن ،

و هذه صورة gif توضح ذلك (http://www.mediafire.com/?jnqtzxze0dn) من ميديافاير

و تم استعمال التقنية أثناء المشي بين الحشود و ابعاد الناس من الطريق :
http://www.montada.com/picture.php?albumid=1516&pictureid=10474
لاحظ وضع اليد على الكتف -الكتف هدف لتصحيح الانميشن-
http://www.montada.com/picture.php?albumid=1516&pictureid=10475

و لتموضع أقدام الحصان :
http://www.montada.com/picture.php?albumid=1516&pictureid=10472

النتيجة
http://www.montada.com/picture.php?albumid=1516&pictureid=10473

وفي لعبة سلاحف النينجا على ننتندو وي ليوبي سوفت أيضا :
http://www.montada.com/picture.php?albumid=1516&pictureid=10471

وهنا نلاحظ قدمي ليوناردو و رفاييل -اليمنى- كيف تتموضع حسب مودل البناية و ذلك أثناء أنميشن القتال :

و الفرتولز يستعمل الـ IK بBB هي :IK Position ، و تستطيع مشاهدة مثال عنها في Documentation\CMOS\WhitepaperSamples
المثال في الفرتولز ليس كمثال يوبي سوفت لكن على الأقل موجود ^_^
عملية الـ retargeting ممكنة في الفرتولز بطريقة أخرى هي باستعمال
Exclude from Animation و Create blended animation و Set Blended Animation Factor
http://www.montada.com/picture.php?albumid=1516&pictureid=10468
ويمكن جعل الـ IK على اي جزء من الجسم -أو حتى الجسم كله-حسب الحاجة

نفس الكود الذي استعملته يوبي سوفت في ألعابها وضعته أوتوديسك الان في برنامجها : Human IK
و أقتبس لكم نبذة عنه :


HumanIK animation middleware frees animators from having to produce every possible animation clip by

procedurally adapting existing character animation to game environments at runtime. Also, the

technology's runtime retargeting enables developers to reuse banks of animation on characters of

completely different scales and proportions. As a result, development teams can save time for more

creative challenges.

Furthermore, HumanIK enhances animation systems by enabling characters to interact more realistically

with the game environment. Characters place their feet correctly, climb walls and pick up objects,

even when the game environment changes. With fewer gameplay constraints, HumanIK helps to bring games

to life with more believable and immersive character animation experiences.http://www.montada.com/picture.php?albumid=1516&pictureid=10469

http://www.montada.com/picture.php?albumid=1516&pictureid=10470

مثلا :
1-لديك 10 سلالم مختلفة في الشكل و لديك أنميشن تسلق واحد :بدل عمل عشرة انميشن لكل سلم ، استعمال Human IK يصحح موضع الاقدام و الايدي حسب السلم وبأنميشن واحدة
http://www.montada.com/picture.php?albumid=1516&pictureid=10478

2- يمكن جعل الشخصية تتفاعل مع المحيط و الاشياء -مثلا يمشي و يتفادى العوائق-
والفيديو التالي يبين ذلك :

<object width="560" height="340"><param name="movie"

value="http://www.youtube.com/v/RA4uQozz30o&hl=en_GB&fs=1&"></param><param name="allowFullScreen"

value="true"></param><param name="allowscriptaccess" value="always"></param><embed

src="http://www.youtube.com/v/RA4uQozz30o&hl=en_GB&fs=1&" type="application/x-shockwave-flash"

allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>

للتفاصيل عن البرنامج من اوتوديسك (http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=12645874)

الفيديو السابق من اوتوديسك (http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=13742401)

للتفاصيل عن Human IK في Assassin’s Creed (http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=10316291&linkID=10225710)

الاصدار الجديد للبرنامج غير متوفر بعد.

وهنا بالتفصيل الممل وشروحات أخرى -لنفس الموضوع- من موقع مايكروسوفت
(محاضرة Power point + ملف الصوت ) 60 ميجا تقريبا
Bringing Assassins Creed to Life (http://www.microsoft.com/downloads/details.aspx?FamilyId=B3BC77F2-4974-4CC0-B409-EAA3B37EAB99&displaylang=en)

و لمن لايملك الأوفيس 2007 و لديه اصدار قديم لا يقرأ ملفات docx نزل تحديث للأوفيس القديم من مايكروسوفت بدون ما تغير الأوفيس (http://www.microsoft.com/downloads/details.aspx?FamilyId=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en)

و هذا حوار مع أحد العاملين في يوبي سوفت عن الانجن الرهيب : Scimitar (http://www.gamingexcellence.com/ps3/features/13.shtml)

وهذه مقالة عن الـ IK في الويكيـبيديا (http://en.wikipedia.org/wiki/Inverse_kinematics)

تم والحمد لله
أتمنى لكم قراءة مفيدة ، و لأي استفسار لا تترددوا
و السلام عليكم ورحمة الله و بركاته

فارس المجد
11-12-2009, 01:58 AM
موضوعك أكثر من رائع أخي
تقنية العظام في الماكس أكثر شيء أعجبني في الماكس ^^

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

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

||صقر||
11-12-2009, 02:07 AM
ممتاز جدا والله D: , كانت فين المقالات اللي زي دي من زمان في المنتدي , الحاجات اللي زي دي الواحد ماشافهاش من قرون XD .

ماعلينا , حبيت أضيف حاجة عشان اللي بيشتغلوا على اليونتي هنا , فيه نظام IK موجود لليونتي , ممكن تنزلوه و تدرسوه من هنا , الخوارزمية مسلية جدا :
http://unity3d.com/support/resources/unity-extensions/locomotion-ik

و شكرا لك مره أخرى يا حج هوكين , موضوعك أجبرني أني أرد :]

ZIRAKI KENPACHI
11-12-2009, 01:00 PM
البلندر موجود فيه IK لكن استخدامه على أكمل وجه فيه صعوبة!!
حتى انك تقدر تربط الIK بعظام البطن مع عظام أصايع اليد^_^
سويتها بالغلط وضحكت على نفسي !!
لكن الحمد لله اعدت كل شيء مثل ما كان..
لكن تخيل انت تدور الاصبع يدور كل الجزء الاعلى من الجسم!!

M.hocine
11-12-2009, 04:02 PM
أهلا أخي فارس المجد :الحمد لله ، أشكرك ... انشاء الله اخي تتقن الماكس فشركة أتوديسك اشترت المايا و xsi (وتركت السينما4دي ^_^) والظاهر انهم يزودوا من قوة الماكس بكود xsi و المايا لأنه منتجهم الأصلي

بالنسبة للتقنيات : كلها مكتوبة في features المحركات الشهيرة(ogre,unity,virtools,cry,unreal...) + ملف documentation للتفاصيل عن كيفية عملها ، وكل محرك يدعم مجموعة (يمكن عمل مقارنة بين المحركات في الـ features لتحديد المناسب للعبة)
مثلا في features محرك الـ Ogre، من بين ما نجد تحت عنوان Meshes :


Progressive meshes (LOD), manual or automatically generated
وهي تقنية للتخفيف وهي اختصار لـ(Level of Detail) وتقوم باظهار مجسم أقل تفاصيل حسب بعد المجسم عن الكمرا

وفي الانميشن : Morph animation
وبها يمكن عمل حركة للوجه -مثلا- بدون عظام ، وتعمل بانشاء انميشن بالبوز (create animation from poses)
و كانت هذه من الاضافات المهمة في الفرتولز 5 ايضا
(وتكون باستعمال موديفير المورفر في الماكس)

الجرافيك :
postprocess وهي شيدر يقوم بتعديل الصورة النهائية قبل اظهارها -وتكون في next gen games-
مثلا (أخذ الصورة التي ستظهر وعمل فلترة لها بحيث يبدو البعيد مضببا و القريب واضح "Depth of field" ، أو blur مثلا .)
والشيدرز بالنسبة للموديلات (وهذه تحدد كيفية ظهور المجسم بالنسبة لمصدر اضاءة أو اكثر )
والشيدر كود مكتوب بلغة :Cg أو GLSL أو HLSL حسب تدعيم المحرك للغة.
+ هذه المشاركة (http://www.montada.com/showpost.php?p=6661284&postcount=16)

وكل انجن له طرق optimisation و كوده الخاص لاظهار المجسمات مثلا في الفرتولز "المجسم الذي لا تراه" "لايعمل له رندر"(بدون كتابة سطر واحد)و يمكنك اضافة كودك الخاص ان اردت ،
وهناك الـ backface culling وهي مماثلة للتي في الماكس (النقط المشكلة للمجسم و التي خلف المجسم لايعمل لها رندر)

البرمجة حسب قواعدها العامة (الكود الاسرع الاقل استهلاك للذاكرة parameters ، استعمال الـ fonctions و procedures بدل كتابة الاوامر في كل مرة ..)
optimised code = optimised game
و الاطلاع على الامثلة اللي مع الانجن
و أيضا Algorithme الذكاء الاصطناعي (مثل ايجاد الطريق الى هدف محدد مع تجاوز العوائق ، أو التحكم في حشد بدون تصادم ...) وهذه غالبا تكون مدرجة في المحرك (على شكل fonctions جاهزة) اومثل pack الفيزيكس .

الصوت : لا اعلم ان كان هناك اخرى غير صوت 3d و خلفية و تعدد الاقنية (بصراحة الجرافيك و الجيم بلاي فقط من ركزت عليها )

و ان شاء الله كل ما سنحت الفرصة اعمل تقرير مفصل عن تقنية اخرى


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

أهلا أخي ZIRAKI KENPACHI : ههههههههههههه ... في البداية كنت متخوف من الماكس فجربت البلندر،حقيقة ..واجهته أكثر شيء مرعب فيه ^_^ كتابة صغيرة وازرار كثيرة وصغيرة وقوائم لاتنتهي يعني شفت الموت ..فاقتنعت بالحمى (الماكس) هههههههه
أحييك أخي لأنك تستعمله و مستواك فيه رائع

شكرا لمروركم الطيب و بالتوفيق

تذكرت أمر : في حال المحرك لا يدعم IK يُصنع الليفل حسب انميشن الشخصية (أو الانميشن حسب الليفل)

PrinceOfSorrow
11-12-2009, 04:28 PM
السلام عليكم ورحمة الله وبركاتة

في حقيقة الامر موضوع جميل ووافي في الشرح وأتمنى من الجميع بأن يستفيدو منه
بأذن الله تعالى أحاول بأن أطبق ذلك على يونايتي لاحقا
شكرا لك اخي m.hocine وكذلك لأخي صقر ^_____^

ayoubsoft
11-12-2009, 04:29 PM
شرح و لا أروع أخي حسين =)
هل هناك مقبس يشتغل على النسخة 8 ؟

M.hocine
11-12-2009, 05:54 PM
أهلا أخي برنس : وعليكم السلام ورحمة الله وبركاته ، العفو أخي على الرحب

أهلا أخي أيوب : الحمد لله ان الموضوع أعجبك ، جرب الاصدار فوق لو لم يشتغل ، أضن مقبس cat به الـ IK
Link To Cat & other (http://cgpersia.com/2009/05/autodesk-cat-v2010-xforce-1397.html)

مشكورين على مروركم الطيب ، بالتوفيق

ayoubsoft
11-12-2009, 07:56 PM
شكرآ أخي حسين .. جاري التجربة ^^

فارس المجد
12-12-2009, 03:28 AM
ألف شكر أخ حسين
بانتظار المزيد من إبداعاتك ^_^

M.hocine
12-12-2009, 10:43 AM
العفو اخواني ، بالتوفيق

Ahmedbna
12-12-2009, 11:50 AM
ما شاء الله عليك موضوع عن جد رائع جدا تسلم ايدك

.JusticeArrow.
12-12-2009, 06:31 PM
المقال روعة ويجعل الألعاب إحترافية
تم الحفظ
سلام

DRAGON 45
27-12-2009, 01:29 AM
يا حسام شرح رائع شكرا

ZIRAKI KENPACHI
27-12-2009, 03:23 PM
بس ال ik ينفع تسويه يدويا لكن معقد...

الحين انا بسوي مثال و لو عندي وقت ارفعه!!

kakarot
29-12-2009, 09:03 PM
بارك الله فيك على هذه المقدمة المميزة ولكن هناك عدة أنواع عن الربط منها HD ومنها HI

ومالفرق بينهما ؟

M.hocine
03-01-2010, 05:04 PM
اهلا أخواني
DRAGON 45 ، JusticeArrow ، Ahmedbna
الحمد لله ، اشكركم على الردود الجميلة

اهلا اخي ZIRAKI KENPACHI
اشكرك اخوي على اهتمامك

اهلا اخي kakarot
وفيك بركة أخوي ، معلوماتي بسيطة عنها :
HD تستطيع تحريك اي عظمة (sliding joints combined with IK) وهي غير مستعملة كثيرا
HI تستطيع تحريك أول وأخر عظمة فقط وهي الاهم و المستعملة في عمل الريجينج للكاركترز