הגדרת מרחק בין אישונים (IPD) בקוד המשחק
בפרקטיקה שלנו, ראינו שוב ושוב פרויקטים שבהם לאחר הבדיקות הראשונות, משתמשים התלוננו על כאבי ראש ותמונות מטושטשות. הסיבה—התעלמות ממרחק בין אישונים (IPD). IPD הוא המרחק בין מרכזי האישונים, בממוצע 63–65 מ"מ אצל מבוגרים, אבל הטווח האמיתי הוא 54 עד 74 מ"מ. משקפי VR שאינם מתחשבים ב-IPD הספציפי של המשתמש מספקים תמונות מטושטשות, ראייה כפולה וכאבי ראש תוך 15–20 דקות. הגדרת IPD אינה תכונה אופציונלית—זו דרישה בסיסית לכל יישום VR. הניסיון שלנו מראה שתמיכת IPD נכונה בתוכנה מפחיתה משוב שלילי ב-30% ומגבירה את שימור המשתמשים.
כיצד IPD מיושם: חומרה ותוכנה
רוב משקפי ה-VR מטפלים ב-IPD פיזית: Quest 3 ו-Index כוללים כוונון IPD מכני (Quest 3—שלוש עמדות קבועות: 58, 63, 68 מ"מ; Index—כוונון חלק 58–70 מ"מ). PSVR2 משתמש בכוונון תוכנה ללא מחוון מכני.
בצד התוכנה: גם עם IPD פיזי מוגדר נכון, מנוע המשחק חייב למקם את המצלמות הווירטואליות כראוי. ב-Unity דרך OVR SDK, IPD פיזי נקרא אוטומטית דרך OVRPlugin.GetFloat(OVRPlugin.BoolType.ipd) ומיושם על היסט העיניים—המרחק בין המצלמות השמאלית והימנית. אין צורך לגעת בזה ידנית אלא אם משתמשים במערך מצלמות לא סטנדרטי.
הבעיה נוצרת בפרויקטים עם מערכי מצלמה מותאמים אישית—לדוגמה, כאשר מפתח בונה VRCameraController משלו על גבי OVRCameraRig או XRRig ומקודד היסט עיניים = 0.064f (סטנדרטי). משתמש עם IPD של 57 מ"מ מקבל סטריאו שגוי וחווה מאמץ בעיניים. לאחר מספר ימים—ביקורות שליליות כמו "העיניים שלי כואבות".
כיצד לקבל IPD פרוגרמטית ב-Unity
עבור Meta Quest דרך OVR SDK:
float ipd = OVRPlugin.GetEyeRecommendedResolutionScale() > 0 ? OVRPlugin.ipd : 0.064f; // fallback к стандарту
leftCamera.transform.localPosition = new Vector3(-ipd / 2f, 0, 0);
rightCamera.transform.localPosition = new Vector3(ipd / 2f, 0, 0);float ipd = OVRPlugin.GetEyeRecommendedResolutionScale() > 0 ? OVRPlugin.ipd : 0.064f; // fallback к стандарту leftCamera.transform.localPosition = new Vector3(-ipd / 2f, 0, 0); rightCamera.transform.localPosition = new Vector3(ipd / 2f, 0, 0); מחזיר את הערך הנוכחי במטרים, נקרא מהחיישן או מהגדרות המערכת. הוא מתעדכן דינמית כאשר IPD פיזי משתנה (במכשירים עם כוונון מכני)—מומלץ להירשם ל-OVRPlugin.ipd או לבדוק ב-OVRManager.DisplayRefreshRateChanged עם הגבלת קצב כל 0.5 שניות.
עבור OpenXR (XR Interaction Toolkit): היסט העיניים מנוהל דרך Update(), שמקבל נתונים מספק ה-XR הספציפי. גישה ישירה ל-IPD דרך XRCameraSubsystem—מחזיר מיקומים של שתי העיניים בקואורדינטות עולם, שמהם מחושב IPD כ-UnityEngine.XR.InputDevice.TryGetFeatureValue(CommonUsages.eyesData, out Eyes eyes).
מדוע IPD שגוי גורם לאי-נוחות
IPD בקוד משפיע לא רק על הנוחות הפיזית אלא גם על תפיסת גודל האובייקטים. היסט העיניים במנוע שולט בפרלקסה—ההבדל בין התמונות לעין שמאל וימין. כאשר היסט העיניים גדול מה-IPD האמיתי, אובייקטים נראים קטנים יותר (אפקט "קנה מידה מאקרו"). כאשר הוא קטן יותר, הם נראים גדולים יותר (אפקט "ענקיות"). זה משמש אמנותית במשחקים—משחקי VR בקנה מידה ענק מפחיתים בכוונה את היסט העיניים.
עבור סימולטורים ריאליסטיים ויישומי VR חינוכיים, סטייה של היסט העיניים מה-IPD האמיתי של המשתמש אינה מקובלת. דיוק הוא קריטי.
טעות נפוצה בפרויקטים של Unity: Vector3.Distance(leftEyePos, rightEyePos) ו-IPD הם דברים שונים. Camera.stereoSeparation הוא פרמטר תוכנה שמתווסף על גבי IPD חומרתי. אם שניהם אינם אפס, נוצר היסט כפול. הערך של stereoSeparation צריך להיות 0.0f ברוב פרויקטי ה-VR אלא אם נעשה שימוש בהיסט אמנותי מכוון.
הגדרת IPD בממשק המשתמש
עבור PSVR2 ומשקפיים אחרים עם IPD תוכנתי, יש צורך במסך הגדרות ביישום. UX סטנדרטי: מחוון אופקי מ-54 עד 74 מ"מ עם צעד של 1 מ"מ, תצוגה מקדימה בזמן אמת. מיושם דרך API ספציפי לספק—עבור PSVR2 זה Unity PS VR2 Plugin עם Camera.stereoSeparation.
בדיקת IPD: מסך ההגדרות מציג שני קווים אנכיים או כוונות—אחד לעין שמאל ואחד לעין ימין. עם IPD נכון, הקווים נראים כאחד. זו טכניקה סטנדרטית שבה משתמשים יצרני המשקפיים עצמם. כוונון תוכנה מדויק פי 1.5 מכני בשל היעדר משחק (play).
השוואה בין IPD מכני ותוכנתי
| פרמטר | IPD מכני | IPD תוכנתי |
|---|---|---|
| דיוק כוונון | 1–3 מ"מ | 0.1 מ"מ |
| תמיכה במהלך סשן | קבוע | דינמי |
| נדרש ממשק משתמש | לא | כן |
| עלות יישום | מובנה במשקפיים | דורש פיתוח |
מה כלול בעבודת הגדרת IPD
- ביקורת על מערך המצלמות הנוכחי עבור היסטי עיניים מקודדים.
- קריאת IPD דרך OVR SDK או OpenXR.
- יישום מחוון ממשק משתמש ל-IPD תוכנתי (אם נדרש).
- אינטגרציה חוצת פלטפורמות (Quest, PSVR2, PC VR).
- בדיקות עם משתמשים בעלי IPD שונים.
- תיעוד והדרכת צוות.
אנו מבטיחים שאחרי השדרוג, המשחק שלך יהיה נוח למשתמשים עם כל IPD. המהנדסים שלנו מוסמכים ב-Unity ו-Unreal Engine, ויש להם למעלה מ-10 שנות ניסיון בפיתוח VR. ראה תיעוד Unity OVRPlugin.
| משימה | זמן משוער |
|---|---|
| ביקורת ותיקון IPD במערך מצלמות קיים | יום עסקים אחד |
| יישום ממשק IPD תוכנתי עם תצוגה מקדימה | 2–4 ימי עסקים |
| שכבת IPD חוצת פלטפורמות (Quest + OpenXR + PSVR2) | 1–2 שבועות |
התמחור נקבע באופן אישי לאחר ניתוח מצב מערך המצלמות הנוכחי ופלטפורמות היעד. צור קשר לייעוץ על הפרויקט שלך. הזמן חידוד IPD והבטח נוחות למשתמשים שלך.





