When bringing Mixamo Humanoid animations to Android,

 

When bringing Mixamo Humanoid animations to Android, set the floor at OpenGL ES 3.0 (ETC2/EAC as the standard texture compression), and, where possible, split your render path using Vulkan. Because ETC2/EAC is mandatory with ES 3.0, it’s a safe “least-common-denominator” texture baseline (ASTC is widely supported but optional).

With Nougat (7.0), Vulkan arrived on Android, reducing CPU overhead and enabling finer-grained control over rendering. From this point on, use a two-tier plan: prepare universal assets in ES 3.0 (ETC2), then scale up on Vulkan-capable devices.

On Oreo (8) through Pie (9), ES 3.0 support became broadly practical. Set your primary KPI to 60 FPS with thermal stability. As a starting point: ≤70 bones per character, ≤4 weights per vertex, 2–4 skinned characters simultaneously, compressed texture budget ≤128 MB per scene, and ≤150 draw calls. Use Animator + Root Motion for “showcase demos,” and Playables when you need fast clip switching (this split also applies below).

Across Android 10 (Quince Tart) / 11 (Red Velvet Cake), 64-bit devices became mainstream. Target up to Vulkan 1.1; limit shadows to a single Directional light at low resolution with no soft shadows; restrict post-FX to either Bloom or Color Grading. Make ETC2 the universal baseline, and provide an ASTC variant (via Addressables) for GPUs that support it.

On Android 12 (Snow Cone) / 13 (Tiramisu), Vulkan pipelines are easier to implement, and Vulkan 1.3 is recommended for new devices. Here, crank Animation Curve Compression (High) and aggressively resample/decimate clips, aiming to reduce keys per character by 30–60%, shrinking both I/O and CPU.

Android 14 (Upside Down Cake) / 15 (Vanilla Ice Cream) is the current norm. Prefer ASTC (8×8–6×6) with ETC2 fallback, enable GPU skinning, and assume URP with the SRP Batcher. Set two KPIs: 60 FPS (mid-tier SoC) and 90 FPS (high-end SoC). Start around ~300k triangles per frame, then trim shadows and material count to target ≤120 draw calls. Note: Android 15’s internal codename is Vanilla Ice Cream (14 is Upside Down Cake).


Practical Measurement Template (paste at the end of a chapter)

  • Device matrix: Three tiers (e.g., entry A-series, two Pixel generations, high-end Snapdragon). Collect 10 min × 3 runs of thermal, FPS, and memory.

  • KPIs: 60 FPS sustain rate ≥ 95%; battery/SoC temperature < 42 °C; foreground PSS memory ≤ 600 MB; jank rate ≤ 1%.

  • Asset baselines: Humanoid ≤ 70 bones; ≤ 4 skinned characters at once; compressed texture total ≤ 128 MB; ≤ 120 draw calls; ~300k tris.

  • Distribution: Ship ETC2 as default; offer an ASTC add-on pack via Addressables.

  • Issue log / fixes: Foot sliding → disable Root Motion / ground constraint; T-/A-pose mismatch → adjust arms ±5–10°; FBX up-axis mismatch → –90° at import; black materials → recreate URP materials.


Note on codenames vs. numbers

Since Android 10, public branding uses numbers only, but internal dessert codenames continue (e.g., 10 = Quince Tart, 11 = Red Velvet Cake, 12 = Snow Cone, 13 = Tiramisu, 14 = Upside Down Cake, 15 = Vanilla Ice Cream). The codenames here are included to aid readers’ memory.


Comments

Popular posts from this blog

go ahead baby, now on sale!!

Just Go For It, Baby by Red Sweet Pea