אופטימיזציית ביצועי אפליקציות AR: 60 FPS וחיסכון בסוללה

אפליקציית ה-AR שלך נתקעת ומחממת את המכשיר, מה שגורם למשתמשים לנטוש אותה אחרי הדקה הראשונה. אנחנו מייעלים אפליקציות AR במלואן: מאתרים צווארי בקבוק ברינדור ובמעקב, מכווננים את ביצועי ARKit ו-ARCore, מפחיתים חום ומעלים FPS. הצוות שלנו מטפל בכל התהליך—מבדיקת נאותות ועד הטמעה ותמיכה שוטפת—כך שאתה מקבל אפליקציה יציבה ומגיבה בסמכות מלאה.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
אופטימיזציית ביצועי אפליקציות AR: 60 FPS וחיסכון בסוללה
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

שירות אופטימיזציית אפליקציות AR שלנו מספק 60 FPS יציב וחסכון של עד 30% בסוללה. במשך 5 שנים, אופטימיזציה של 50+ פרויקטי AR — מקטלוגי רהיטים ועד ויזואליזציות תעשייתיות. ביקורת ביצועי AR שלנו מזהה צווארי בקבוק, ואנו מבטיחים תוצאות מדידות. לקוחות חוסכים בממוצע $5,000 לפרויקט.

אפליקציית AR מחממת iPhone 12 ל-45°C תוך 8 דקות, מרוקנת סוללה בקצב של 1% לדקה, ומספקת 45–50 FPS במקום 60. זה לא פיגור קל — זו אפליקציה בלתי שמישה. אנו מבטיחים תוצאות: 60 FPS יציב וחסכון של עד 30% בסוללה. הלקוחות שלנו חסכו בממוצע $5,000 לפרויקט.

למה אפליקציות AR מתחממות ומאבדות FPS

ARKit/ARCore רצים ברציפות: לכידת פריימים ממצלמה → זיהוי תכונות → הערכת מישור → עדכון מודל עולם → רינדור. כל שלב הוא עומס חישובי. באייפונים, ARKit משתמש במנוע העצבי (Neural Engine) למעקב מישורים, מה שמקל משמעותית על CPU/GPU. באנדרואיד, ARCore כבד יותר על ה-GPU במכשירים ללא NPU.

צווארי בקבוק אופייניים:

  • טעינת מודלי תלת-ממד כבדים לתוך ARSCNView ללא אופטימיזציה: SCNNode עם 500K פוליגונים ללא LOD, טקסטורות 4096×4096 ללא mipmapping. ה-GPU מרנדר אובייקט באותה רמת פירוט בין אם הוא במרחק מטר אחד או 10 מטרים.
  • תכונות מעקב מופעלות שאינן בשימוש. ARWorldTrackingConfiguration עם isAutoFocusEnabled = true ו-environmentTexturing = .automatic ללא צורך אמיתי — עומס מערכת קבוע.
  • פיזיקה ב-SCNScene עם SCNPhysicsBody על כל אובייקט כשיש עשרות אובייקטי AR — מנוע הפיזיקה של SceneKit אינו מותאם לסצנות AR ניידות עם גופים רבים.

איך אנו מייעלים ARKit: תצורת סשן ורינדור

תצורת סשן

let configuration = ARWorldTrackingConfiguration() // Включаем только то что реально нужно
configuration.planeDetection = [.horizontal] // не .vertical если не нужно
configuration.isAutoFocusEnabled = false // фиксированный фокус — меньше нагрузки
configuration.environmentTexturing = .none // отключаем если нет PBR-материалов
// Для простых сцен — lighter tracking
let simpleConfig = AROrientationTrackingConfiguration() // только ориентация, без world tracking

לאפליקציות שצריכות רק מעקב פנים, השתמשו ב-let configuration = ARWorldTrackingConfiguration() // Включаем только то что реально нужно configuration.planeDetection = [.horizontal] // не .vertical если не нужно configuration.isAutoFocusEnabled = false // фиксированный фокус — меньше нагрузки configuration.environmentTexturing = .none // отключаем если нет PBR-материалов // Для простых сцен — lighter tracking let simpleConfig = AROrientationTrackingConfiguration() // только ориентация, без world tracking במקום ARFaceTrackingConfiguration. ההבדל בעומס ה-CPU מורגש.

רינדור עם Metal במקום SceneKit

ARWorldTrackingConfiguration נוח, אבל לסצנות מורכבות ARSCNView + רנדרר Metal מותאם אישית נותן שליטה מלאה על draw calls. SceneKit מוסיף תקורה לניהול צמתים ופיזיקה. עם MTKView + ARSession:

func session(_ session: ARSession, didUpdate frame: ARFrame) {
    let commandBuffer = commandQueue.makeCommandBuffer()!
    // Рендерим captured image (камера)
    renderCapturedImage(frame.capturedImage, commandBuffer: commandBuffer)
    // Рендерим AR-контент
    renderVirtualContent(frame, commandBuffer: commandBuffer)
    commandBuffer.present(drawable)
    commandBuffer.commit()
}

זה מניב שיפור של 20–30% ב-FPS בסצנות עם 10+ אובייקטי AR בהשוואה ל-MTKView.

Culling ו-LOD

func session(_ session: ARSession, didUpdate frame: ARFrame) { let commandBuffer = commandQueue.makeCommandBuffer()! // Рендерим captured image (камера) renderCapturedImage(frame.capturedImage, commandBuffer: commandBuffer) // Рендерим AR-контент renderVirtualContent(frame, commandBuffer: commandBuffer) commandBuffer.present(drawable) commandBuffer.commit() } לאובייקטים מחוץ לשדה הראייה — SceneKit אינו מרנדר צמתים נסתרים אבל עדיין מריץ פיזיקה ועדכונים. הגישה הנכונה היא להסיר אובייקטים מהסצנה: ARSCNView.

// Frustum culling вручную
func shouldRenderNode(_ node: SCNNode, camera: ARCamera) -> Bool {
    let screenPoint = camera.projectPoint(node.worldPosition, orientation: .portrait, viewportSize: viewportSize)
    return screenPoint.x > -0.1 && screenPoint.x < 1.1 && screenPoint.y > -0.1 && screenPoint.y < 1.1
}

מה לעשות עם ARCore: סשן ורינדור

תצורת סשן

val config = Config(session)
config.planeFindingMode = Config.PlaneFindingMode.HORIZONTAL_ONLY
config.lightEstimationMode = Config.LightEstimationMode.DISABLED // +15% battery
config.depthMode = Config.DepthMode.DISABLED // если глубина не нужна
session.configure(config)

SCNNode.isHidden = true הוא המצב היקר ביותר, המספק השתקפויות ריאליסטיות. במכשירים ללא Depth API (רוב מכשירי הביניים), השתמשו בו רק אם זה תכונה מרכזית.

רינדור עם Filament

אפליקציות ARCore המשתמשות ב-Filament (רנדרר ה-PBR של גוגל) מרנדרות חומרי PBR דרך Vulkan במכשירים נתמכים — מהיר יותר באופן ניכר מאשר דרך OpenGL ES. דוגמה מוכנה היא דוגמאות node.removeFromParentNode() עם אינטגרציית Filament.

איך להשיג 60 FPS יציב ב-AR

שלבים מרכזיים:

  • כיבוי תכונות מעקב שאינן בשימוש (environmentTexturing, autoFocus, depth mode).
  • מעבר לרינדור ברמה נמוכה (Metal או Vulkan).
  • החלת LOD ו-culling על מודלי תלת-ממד.
  • דחיסת טקסטורות (ASTC, ETC2).
פרמטר תצורה השפעה על ביצועים המלצה
planeDetection בינוני: זיהוי מישורים מעמיס על CPU הפעל רק סוגים נחוצים (אופקי/אנכי)
environmentTexturing גבוה: תאורה דינמית דרך HDR כבה אם PBR לא בשימוש
depthMode גבוה: עיבוד עומק (ARCore) כבה אם חסימה (occlusion) לא נחוצה
lightEstimationMode בינוני–גבוה: ENVIRONMENTAL_HDR היקר ביותר השתמש ב-DISABLED או AMBIENT_INTENSITY
isAutoFocusEnabled נמוך: פוקוס אוטומטי של מצלמה כבה לפוקוס קבוע

השוואה: גישות ARKit לעומת ARCore

פרמטר ARKit (iOS) ARCore (Android)
עומס מעקב משתמש במנוע העצבי למעקב מישורים — פחות עומס CPU תלוי ב-Depth API; בלעדיו, עומס GPU גבוה יותר
רינדור ראשי Metal — שליטה ברמה נמוכה, SceneKit — אב-טיפוס מהיר Vulkan (דרך Filament) או OpenGL ES
FPS מומלץ 60 FPS יציב ניתן להשגה ב-iPhone 11+ לאחר אופטימיזציה 30–60 FPS תלוי במכשיר
בעיות אופייניות חום מקצב פריימים גבוה + מעקב פיצול מכשירים, תמיכת Depth API משתנה

מקרה בוחן: קטלוג רהיטים ב-AR

מהניסיון שלנו: לקוח בנה אפליקציה לצפייה ברהיטים ב-AR. ספות ושולחנות היו מודלי תלת-ממד ממעצבים, כל אחד עם 800K–1.2M פוליגונים. ב-iPhone 13, האפליקציה רצה ב-24 FPS כשהציבו 2 אובייקטים. הבעיה הייתה ברורה.

העבודה שלנו: ייצוא מודלים דרך Blender עם decimation ל-50K פוליגונים לגרסת AR (אובדן פירוט לא היה מורגש במרחק 1–2 מטרים בטלפון). המרת טקסטורות מ-4096×4096 PNG ל-2048×2048 ASTC. הוספת LOD — פירוט גבוה לאובייקטים קרובים מ-1.5 מטרים, בינוני לרחוקים יותר. תוצאה: 58–60 FPS יציב, טמפרטורה תקינה. הלקוח חסך כ-$5,000 על תיקונים, ונמנע משכתוב מלא.

איך האופטימיזציה עובדת: תהליך שלב-אחר-שלב

  1. ביקורת ביצועים — פרופיילינג במכשירים אמיתיים (iPhone 12, Pixel 6 וכו'), מדידת FPS, טמפרטורה, צריכת סוללה. קביעת קו בסיס.
  2. ניתוח ותכנון — זיהוי צווארי בקבוק, יצירת תוכנית פעולה ממוקדת.
  3. יישום — אופטימיזציה של תצורת סשן, רינדור ומודלי תלת-ממד.
  4. בדיקות — פרופיילינג חוזר, השוואה לקו הבסיס, התאמות.
  5. פריסה ותמיכה — הטמעת שינויים, מתן ייעוץ.

מה כלול באופטימיזציית אפליקציות AR

  • ביקורת ביצועים במכשירי יעד.
  • אופטימיזציית תצורת סשן (כיבוי תכונות שאינן בשימוש, כוונון פרמטרים).
  • אופטימיזציית רינדור (מעבר ל-Metal/Filament, LOD, culling, דחיסת טקסטורות).
  • תיעוד עם דוח והמלצות.
  • תמיכה לאחר פריסה.
  • הדרכה והעברת ידע לצוות הפיתוח שלך.

לוחות זמנים ואיך להתחיל

  • ביקורת ביצועים: 2–3 ימים.
  • אופטימיזציית רינדור ותצורת סשן: 1–2 שבועות.
  • אם נדרשת אופטימיזציה של מודלי תלת-ממד, הזמן תלוי במספר הנכסים.

העלות נקבעת באופן אישי לאחר ניתוח; ביקורת מתחילה ב-$500, ופרויקטי אופטימיזציה מלאים נעים בדרך כלל בין $1,500 ל-$5,000. לקוחות רואים לעתים קרובות הפחתה של 30% בעלויות הפיתוח הכוללות בכך שנמנעים משכתובים בשלבים מאוחרים. קבלו ייעוץ על אופטימיזציית אפליקציית ה-AR שלכם — הזמינו ביקורת ביצועים היום.

טעויות נפוצות באופטימיזציית AR
  • ניסיון לייעל רינדור ללא מדידת קו בסיס.
  • שימוש בתצורת מעקב מקסימלית לסצנות פשוטות.
  • שכחת LOD ו-mipmapping למודלי תלת-ממד.
  • אי בדיקת ביצועים על פני דורות שונים של מכשירים.

לפי תיעוד אפל: ARKit Best Practices