Mesh Optimization
Optimize meshes for better performance:
// Freeze transformations (improves performance)
box.freezeWorldMatrix();
// Convert to a thin instance mesh (very efficient for many copies)
const matrix1 = BABYLON.Matrix.Translation(3, 0, 0);
const matrix2 = BABYLON.Matrix.Translation(-3, 0, 0);
const matrix3 = BABYLON.Matrix.Translation(0, 0, 3);
sphere.thinInstanceSetBuffer("matrix", [matrix1, matrix2, matrix3]);
// Level of Detail (LOD)
const highDetailSphere = BABYLON.MeshBuilder.CreateSphere("highDetail", {
segments: 32,
diameter: 2
}, scene);
const mediumDetailSphere = BABYLON.MeshBuilder.CreateSphere("mediumDetail", {
segments: 16,
diameter: 2
}, scene);
const lowDetailSphere = BABYLON.MeshBuilder.CreateSphere("lowDetail", {
segments: 8,
diameter: 2
}, scene);
// Add LOD levels
highDetailSphere.addLODLevel(30, mediumDetailSphere); // Switch at 30 units distance
highDetailSphere.addLODLevel(60, lowDetailSphere); // Switch at 60 units distance
highDetailSphere.addLODLevel(100, null); // Hide beyond 100 units
// Only the highDetailSphere needs to be visible in the scene
mediumDetailSphere.isVisible = false;
lowDetailSphere.isVisible = false;