3D-אמן מסר מודל של כיסא — 1.2 מיליון פוליגונים, טקסטורות 8192×8192 PNG. ב-Cinema 4D הרינדור נראה מצוין. ב-AR באייפון — 18 FPS והתחממות תוך 3 דקות. אנחנו נתקלים במקרים כאלה כל הזמן. הניסיון שלנו מראה: הבעיה אינה באפליקציה ולא ב-ARKit — המודל לא מוכן ל-GPU נייד. מצב כזה מוביל לביטול הדגמה ללקוח ולאובדן זמן. כל פרויקט שני של ויזואליזציית AR נתקל בזה.
אופטימיזציה של מודלי 3D ל-AR — משימה הדורשת הבנה של ארכיטקטורת GPU ניידים. אנחנו פותרים אותה באופן מקיף: מורידים פוליגונים, דוחסים טקסטורות, מגדירים LOD. התוצאה — 60 FPS יציבים במכשירים. זה מאפשר להציג תוכן AR ללא לאגים והתחממות. לקוחות חוסכים בכל פרויקט בזכות הפחתת זמן טעינה ועלויות אחסון.
למה פוליגונים חשובים ל-AR?
על מסך הטלפון המרחק לאובייקט AR הוא 0.5–3 מטרים. במרחק זה פירוט מעל 100–150K פוליגונים אינו ניתן להבחנה ויזואלית מ-50K. כלל הפרקטיקה:
| גודל אובייקט | פוליגונים מומלצים | מרחק צפייה |
|---|---|---|
| קטן (כוס, טלפון) | 5,000–15,000 | 0.3–1 מ' |
| בינוני (כיסא, מנורה) | 15,000–50,000 | 0.5–2 מ' |
| גדול (ספה, ארון) | 30,000–80,000 | 1–3 מ' |
| גדול מאוד (רכב) | 50,000–120,000 | 2–10 מ' |
Decimation ב-Blender: Modifier → Decimate → Collapse עם Ratio = 0.05–0.1 למודלים מורכבים נותן תוצאה רצויה ללא רטופולוגיה ידנית. Quadric Edge Collapse Decimation שומר טוב יותר על צורת קצוות מאשר Unsubdivide.
לאחר decimation — בדיקה חובה ב-AR במכשיר היעד, לא רק בתצוגה מקדימה של העורך. צללית האובייקט חשובה יותר מפרטים פנימיים — אנו מפענחים אחרת.
איך לבדוק מודל מוכן
- בנו את המודל ב-Xcode או Android Studio. - הריצו על מכשיר עם iOS 15+ או Android 11+. - ודאו ש-FPS לא יורד מתחת ל-50 במשך 10 דקות. - בדקו חימום: המכשיר לא צריך להיות חם למגע.איך לבחור פורמט טקסטורות?
ההשפעה הגדולה ביותר על ביצועים היא טקסטורות, לא פוליגונים. ASTC (Adaptive Scalable Texture Compression) — הפורמט הנכון ל-AR נייד. נתמך על ידי כל ARM Mali ו-Qualcomm Adreno GPU מאמצע העשור הקודם. ASTC 6×6 נותן בערך 2.37 bpp לעומת 32 bpp ב-PNG — פי 13 פחות זיכרון GPU עם אובדן איכות מינימלי. פרטים נוספים על דחיסת טקסטורות קראו בWikipedia.
ETC2 — fallback אוניברסלי למכשירים ישנים (GLES 3.0+). גרוע מ-ASTC באיכות דחיסה, אבל נתמך רחב יותר.
לעולם אל תשתמשו ב-PNG/JPEG בטקסטורות של סצנת AR. PNG מפוענח ל-RGBA8888 מלא — לטקסטורה 2048×2048 זה 16 MB זיכרון GPU. ASTC 2048×2048 — בערך 2 MB.
יצירת ASTC דרך astcenc (שורת פקודה):
astcenc -cl input.png output.astc 6x6 -medium ב-Xcode Asset Catalog: מוסיפים טקסטורה, מגדירים Compression = Lossy → אוטומטית ASTC ב-iOS. באנדרואיד — קומפילציה דרך Android Studio או ב-CI דרך texturetool.
גודל טקסטורות. כלל: גודל הטקסטורה פרופורציונלי לשטח הנראה של האובייקט על המסך. לאובייקט שתופס 20% מהמסך — טקסטורה 512×512 נותנת תוצאה בלתי ניתנת להבחנה מ-2048×2048. Mipmap חובה: SceneKit ו-ARCore משתמשים אוטומטית ברמת mipmap המתאימה לגודל התצוגה.
יישום LOD ל-AR
בניגוד למנועי משחק, ל-ARKit SceneKit אין מנהל LOD מובנה. אנו מיישמים דרך SCNLevelOfDetail. הנה דוגמת קוד:
let highPolyGeometry = loadGeometry("chair_high.usdz") // 50K פוליגונים
let medPolyGeometry = loadGeometry("chair_med.usdz") // 15K פוליגונים
let lowPolyGeometry = loadGeometry("chair_low.usdz") // 5K פוליגונים
let lod1 = SCNLevelOfDetail(geometry: medPolyGeometry, screenSpaceRadius: 100)
let lod2 = SCNLevelOfDetail(geometry: lowPolyGeometry, screenSpaceRadius: 30)
node.geometry?.levelsOfDetail = [lod1, lod2]screenSpaceRadius — רדיוס כדור חוסם בפיקסלי מסך. בערך 100 — המודל תופס בערך 200×200 פיקסלים. המספרים נבחרים עבור כל אובייקט אמפירית. פרטים נוספים — בSCNLevelOfDetail.
באנדרואיד ARCore עם Filament LOD מיושם דרך MaterialInstance swap או דרך RenderableManager.Builder.boundingBox() ל-culling.
USDZ / glTF: הפורמט הנכון ל-AR
USDZ (iOS, macOS) — קונטיינר מבוסס OpenUSD של Pixar. מכיל גיאומטריה, חומרים, אנימציות, פיזיקה. תומך ב-AR Quick Look ללא קוד. Reality Converter (אפליקציית macOS של אפל) ממיר מ-FBX/OBJ/glTF ל-USDZ עם אופטימיזציה בו-זמנית של טקסטורות.
glTF 2.0 (Android/Cross-platform) — תקן פתוח, נתמך באופן טבעי על ידי Filament ו-Sceneform. glb — גרסה בינארית, מועדף ל-AR (קובץ אחד במקום כמה). אופטימיזציה דרך gltf-pipeline:
gltf-pipeline -i model.gltf -o model_opt.glb \ --draco.compressMeshes --draco.quantizePositionBits 14 דחיסת Draco (גוגל) מקטינה גודל גיאומטריה פי 5–10 באמצעות דחיסה מאבדת. איכות נשלטת על ידי quantizeBits — 14 ביט מספיק לרוב אובייקטי AR.
בחירת הפורמט תלויה בפלטפורמה: USDZ — תמיכה טבעית ב-AR Quick Look, גודל קטן, אבל רק iOS. glTF + Draco — חוצה פלטפורמות, דחיסה חזקה, אבל צריך טוען. לפרויקטים חוצי פלטפורמות בוחרים לעתים קרובות glTF, למערכת האקולוגית של iOS — USDZ.
איך אנחנו עושים זאת: מחסנית ותהליך
אנו משתמשים ב-Blender ל-decimation, astcenc לדחיסה, Xcode ו-Android Studio לבדיקות. התהליך מחולק לשלבים:
- ניתוח מודלים מקוריים: זיהוי פוליגונים עודפים, גודל טקסטורות, חוסר LOD.
- Decimation לפוליגונים יעד (ירידה ממוצעת פי 10).
- דחיסת טקסטורות ל-ASTC/ETC2 עם יצירת mipmap.
- יצירת רמות LOD (עד 3 רמות).
- ייצוא ל-USDZ או glTF עם דחיסת Draco.
- בדיקה על מכשירים אמיתיים (iPhone ו-Android).
יותר מ-5 שנות ניסיון בפיתוח AR ויותר מ-200 פרויקטים מוצלחים מאשרים: גישה זו מבטיחה תוצאה. דוגמה מהפרקטיקה: מותג רהיטים גדול רצה להציג קטלוג ב-AR. המודלים המקוריים שקלו 200 MB כל אחד. הורדנו פוליגונים ל-30K, דחסנו טקסטורות ל-ASTC, הוספנו LOD. המודלים הסופיים — 15 MB, סצנת AR עבדה ב-60 FPS אפילו ב-iPhone X. חיסכון באחסון והעברה — כ-$270–390 לחודש לקטלוג של 50 מודלים.
מקור: דוח פרויקט למותג רהיטים.
רשימת בדיקה לבדיקה עצמית
- פוליגונים < 100K לאובייקטים בינוניים.
- טקסטורות דחוסות ב-ASTC או ETC2.
- גודל טקסטורות ≤ 1024×1024 לאובייקטים שאינם בחזית.
- LOD מוגדר (לפחות 2 רמות).
- פורמט — USDZ (iOS) או glTF (Android).
מה כולל העבודה
במסגרת השירות אנו מספקים:
- ניתוח מודלים מקוריים ודוח אופטימיזציה.
- Decimation, דחיסת טקסטורות, יצירת רמות LOD.
- ייצוא ל-USDZ/glTF עם דחיסת Draco.
- בדיקה על מכשירי יעד (iOS/Android).
- תיעוד של ה-pipeline והמלצות לשימוש עתידי.
- הדרכה לצוות שלך לעבודה עם מודלים מותאמים.
זמנים ועלות
אופטימיזציה של מודל אחד אורכת בין 0.5 ליום אחד. לקטלוג של 20–50 מודלים — 1–2 שבועות עם הגדרת pipeline אוטומטי. העלות מחושבת באופן אישי לפי מורכבות והיקף. צרו קשר להערכת הפרויקט שלכם — נכין הצעה מסחרית. הזמינו ייעוץ, וננתח את המודלים שלכם לקראת הצעה.







