אופטימיזציה של קולידרים פיזיקליים בסצנות משחק מורכבות

סצנות משחק מורכבות עם אובייקטים פיזיים רבים גורמות לעיתים קרובות לפיגור אפילו על חומרה חזקה, במיוחד ב-VR שבו כל אלפית שנייה חשובה. אנו מייעלים את הקולידרים ואת הפיזיקה של Unity על ידי החלפת MeshColliders כבדים בצורות מרוכבות קלות משקל וכיוונון עדין של מטריצת ההתנגשות. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת הסצנה ועד ליישום הפתרון—ומבטיח ביצועים יציבים ותמיכה מתמשכת.

היכולות שלנו

שירותי סטודיו אחרים

יישומי VR/AR/MR מותאמים אישית

טבלו לקוחות וצוותים בחוויות דיגיטליות חדשות

פיתוח משחקי Unity

מקונספט לשחרור — משחקים שאנשים זוכרים

מידול ואנימציה בתלת-ממד

החיו את המוצר שלכם בגרפיקת תלת-ממד ואנימציה

סימולטורי ציוד VR תעשייתיים

אמנו מפעילים על ציוד בבטחה, ללא השבתה

הוראות AR לייצור

הנחיות שלב-אחר-שלב ישירות על הציוד — ללא נייר

סימולטורי VR לבטיחות

תרגול תגובה לשעת חירום ללא צורך בהגעה לשטח

תוכניות הכשרה ב-VR/AR

הכשרת עובדים בשירות, קליטה ומיומנויות רכות ב-VR

חידוני הכשרה לעובדים

בדיקת ידע באמצעות משחקים — בקלות וללא לחץ

הוראות וידאו ארגוניות

סרטונים ברורים להכשרת העובדים והלקוחות שלכם

גיימיפיקציה עסקית

הניעו צוותים עם מכניקת משחק ב-KPI ובמשאבי אנוש

יישומי קיוסק אינטראקטיביים

מסכים אינטראקטיביים לקמעונאות, תערוכות ומשרדים

מתקני VR/AR

אפקט וואו למותגים בתערוכות, אירועים וחדרי תצוגה

תערוכות ומוזיאונים וירטואליים

התערוכות שלכם מגיעות לכל פינה בעולם, 24/7

מסעות אירועים ומשחקי מותג

משחקים בלתי נשכחים לכנסים ולאירועי לקוחות

שאלות נפוצות

העבודות האחרונות

  • פיתוח משחקים עבור Mortal Motors
    פיתוח משחקים עבור Mortal Motors
    1638
  • משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    1123
  • פיתוח משחק עבור חברת Second term
    פיתוח משחק עבור חברת Second term
    751
  • אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    830

אופטימיזציה של קוליידרים פיזיקליים בסצנות משחק מורכבות

סצנה עם 800 אובייקטי משחק, שלכל אחד מהם MeshCollider המבוסס על גיאומטריה אמיתית — PhysX מבזבז 8–12 אלפיות שנייה לכל FixedUpdate על בדיקות Broadphase ו-Narrowphase. זה חצי מתקציב הפריים רק לפיזיקה. ב-VR, שבו תקציב הפריים הוא 11 אלפיות שנייה (90 FPS), זה גורם לנפילה מיידית. הצוות שלנו נתקל בפרויקטים כאלה פעמים רבות: אופטימיזציה של קוליידרים היא משימה שבה ארכיטקטורה נכונה מההתחלה חוסכת שבועות של עבודה. החיסכון הטיפוסי בפרויקט נע בין 40 ל-60 שעות עבודה ידנית. אנו מבטיחים 90 FPS יציבים לאחר השיפורים. צרו קשר — נבחן את הפרויקט שלכם ונציע תוכנית אופטימיזציה.

כיצד PhysX מבזבז זמן והיכן ההפסדים

הפיזיקה ב-Unity עוברת שני שלבים: Broadphase (סינון מהיר: אילו אובייקטים בכלל קרובים זה לזה?) ו-Narrowphase (בדיקת התנגשות מדויקת עבור זוגות מסוננים).

Broadphase משתמש בעץ AABB (Axis-Aligned Bounding Box). אם אובייקטים נעים כל הזמן, העץ נבנה מחדש כל הזמן. 200 Rigidbody עם isKinematic = false שנעים כל פריים גורמים לבנייה מחדש רציפה של עץ ה-AABB. פתרון: אובייקטים שלא נעים כרגע צריכים להיות מוגדרים כ-isKinematic = true באמצעות סקריפט — הם יוצאים מהעץ הדינמי.

ב-Narrowphase, MeshCollider הורג את הביצועים. בדיקת התנגשות בין שתי רשתות שרירותיות היא O(n×m) לכל משולש. קוליידר של שחקן מול קוליידר של בניין עם 50,000 משולשים פירושו אלפי פעולות לכל Narrowphase. PhysX לא תומך כלל ב-MeshCollider לא-קמור מול MeshCollider לא-קמור עבור אובייקטים דינמיים — רק מול סטטיים.

מדוע MeshCollider כל כך יקר?

כל משולש ב-MeshCollider דורש בדיקת Narrowphase. עבור אובייקטים סטטיים (קירות, רצפות) זה נסבל, אבל עבור אובייקטים דינמיים זה אסון. אפילו עם convex = true, הפיזיקה מעריכה את כל הפאות של הקליפה הקמורה. בפועל: החלפת 10 MeshCollider כבדים על דמויות ב-Compound Collider הפחיתה את זמן ה-CPU של הפיזיקה ב-40% בסימולטור VR אחד.

כיצד Compound Collider מפחית עומס

Compound Collider — קבוצה של פרימיטיבים כילדים של Rigidbody אחד. הדרך היחידה לקבל פיזיקה דינמית לא-קמורה ללא שימוש ב-MeshCollider לא-קמור: כמה חלקים קמורים = צורה מורכבת. עבור נשקי VR, אובייקטים מפורטים, רובוטים — גישה סטנדרטית. החלפת MeshCollider אחד ב-Compound של 3–5 פרימיטיבים מפחיתה את עלות הפיזיקה פי 50 תוך שמירה על דיוק של >90%.

החלפות ופישוטים מעשיים

כלל ראשון: החליפו MeshCollider במקום שבו השחקן לא ישים לב. כיסא עם MeshCollider המבוסס על גיאומטריה אמיתית הוא 200 משולשים. אותו כיסא עם 2 BoxCollider (רגליים + מושב) הוא 2 פרימיטיבים. דיוק ההתנגשות הוא 95% מהמקור, העלות — נמוכה פי 50.

עבור צורות אורגניות (סלעים, חביות, מכוניות), קבוצה של 3–6 ConvexMeshCollider (רשתות קמורות מפושטות) עובדת הרבה יותר מהר מאשר לא-קמורה ואינה ניתנת להבחנה ויזואלית. ב-Unity: MeshCollider.convex = true + רשת מפושטת דרך LOD או יצירת פרוקסי התנגשות ידנית ב-Blender.

מטריצת התנגשות (Layer Collision Matrix). ב-Physics Settings → Layer Collision Matrix, השבתו בדיקות בין שכבות שאמורות לעולם לא ליצור אינטראקציה: Environment מול Environment, UI מול Physics Objects, VFX מול כל שכבה. כל זוג מושבת פירושו פחות זוגות Broadphase. עם תצורת מטריצה נכונה, מספר הזוגות הפעילים יכול לרדת ב-30–50%.

סף שינה (Sleep Threshold). Rigidbody נרדם כשהמהירות יורדת מתחת ל-Physics.sleepThreshold. Rigidbody ישן לא משתתף בפיזיקה — עלות כמעט אפסית. ערך ברירת המחדל (0.005) נמוך מדי עבור סצנות מורכבות: אובייקטים נשארים פעילים במהלך רעידות מיקרו. עבור סצנות VR ללא סימולציית נוזלים/בדים, הגדירו אותו ל-0.1–0.2.

כיצד אנו מבצעים אופטימיזציה: מקרה מבחן

מניסיון: בסימולטור VR לציוד תעשייתי, סצנת סדנה הכילה 1200 אובייקטים, רובם עם MeshCollider ממודלי CAD מיובאים (15,000–80,000 משולשים כל אחד). זמן CPU של פיזיקה — 14 אלפיות שנייה. לאחר החלפת כל ה-MeshCollider הסטטיים בפרוקסי קמורים (אוטומטית באמצעות סקריפט עורך + פירוק VHACD) והשבתת זוגות מטריצת שכבות מיותרים — זמן ה-CPU של הפיזיקה ירד ל-2.8 אלפיות שנייה. הרווח — 80% מזמן הפיזיקה. החיסכון הממוצע לפרויקט נע בין 40 ל-60 שעות פיתוח. הפחתת עלויות מחשוב ענן עקב פחות פיזיקה מגיעה ל-30–50%.

סוג קוליידר עלות משוערת (זמן CPU) מתי להשתמש
MeshCollider (לא-קמור) ~10–20 אלפיות שנייה עבור 500 משולשים סטטי, אם הדיוק קריטי
Compound Collider (5 פרימיטיבים) ~0.2 אלפיות שנייה דינמי, צורות מורכבות
Convex MeshCollider (מפושט) ~1–2 אלפיות שנייה אובייקטים אורגניים, לא דורשים דיוק מלא

כלי אבחון

Physics Profiler ב-Unity Profiler — מציג זמן עבור Broadphase, Narrowphase, SimulateAndCollide, UpdateTriggers בנפרד. כאן אפשר לראות היכן ההפסדים.

Physics Debugger (Window → Analysis → Physics Debugger) — מציג קוליידרים ישירות ב-Scene View עם קידוד צבע לפי סוג (Static, Dynamic, Kinematic, Trigger). מאפשר למצוא במהירות אובייקטים עם קוליידרים כבדים באופן בלתי צפוי.

PhysicsViewer — כלי עורך מותאם אישית — סקריפט שמפיק רשימה של כל ה-MeshCollider בסצנה, ממוינים לפי מספר משולשים. אנו כותבים אותו ב-30 דקות, וחוסכים שעות של חיפוש.

טעויות נפוצות באופטימיזציית קוליידרים - החלפת כל ה-MeshCollider ללא התחשבות בדיוק — עלולה לשבור את המשחק. בדקו התנגשויות על אובייקטים קריטיים. - הגדרת Layer Matrix "בעין" ללא ניתוח זוגות. תמיד בצעו פרופיל לפני/אחרי. - התעלמות מ-Sleep Threshold: אובייקטים שאמורים לישון נשארים פעילים עקב סף נמוך.

מה כלול בעבודה

  • פרופיל של זמן CPU של פיזיקה, זיהוי צווארי בקבוק
  • מלאי מלא של קוליידרים בסצנה עם סיווג
  • החלפת MeshCollider כבדים בפרימיטיבים/Compound תוך שמירה על דיוק
  • הגדרת Layer Collision Matrix ו-Sleep Threshold
  • כתיבת סקריפטים לעורך להחלפה אצווה ואוטומציית ולידציה
  • פרופיל חוזר ודוח עם הפרש ביצועים
  • מתן תיעוד והדרכת צוות לשמירה על האופטימיזציה

שלבי עבודה

  1. פרופיל — צילום Physics Profiler, זיהוי צווארי בקבוק.
  2. ביקורת סצנה — מלאי של כל הקוליידרים, סיווג לפי סוג ועלות.
  3. אופטימיזציה — החלפת MeshCollider בפרימיטיבים/Compound, כוונון Layer Matrix, Sleep Threshold.
  4. כלי אוטומציה — סקריפטים לעורך להחלפה אצווה וולידציה.
  5. פרופיל חוזר — השוואה לקו הבסיס, תיעוד שינויים.
היקף סצנה ציר זמן משוער
סצנה אחת עד 500 אובייקטים 3–7 ימים
מספר סצנות, 1000–3000 אובייקטים 2–4 שבועות
פרויקט גדול עם כלים אוטומטיים 1–2 חודשים

העלות מחושבת לאחר פרופיל והערכת היקף השינויים. צרו קשר — נבחן את הפרויקט שלכם ונציע תוכנית אופטימיזציה. הזמינו פרופיל היום: הצוות שלנו מבטיח 90 FPS יציבים לאחר השיפורים.