When i use geometry.addGroup(0, Infinity, i) of bufferGeometry, it's scene become slowly

hello everyone
As topic said,when i use geometry.addGroup(0, Infinity, i) of bufferGeometry, it’s scene become slowly. i dont kown whats wrong with it.

Are there any errors in Chrome devtools console? (On a separate note, what’s the point of creating multiple groups that cover the entire range of the geometry? It won’t result in the materials being mixed together one-over-another.)

1 Like

I understand you’re experiencing performance issues when using geometry.addGroup(0, Infinity, i) with a BufferGeometry in Three.js. This is indeed a situation that can lead to slowdowns. Let’s break down the problem and explore some solutions:

  1. Understanding the issue:
    Using geometry.addGroup(0, Infinity, i) creates a group that spans the entire geometry for each material index i. If you’re doing this multiple times, you’re essentially telling Three.js to render the entire geometry multiple times, once for each material. This can significantly impact performance, especially for complex geometries.

  2. Possible solutions:

    a. Use specific ranges instead of Infinity:
    If possible, divide your geometry into specific ranges for each material. For example:

    geometry.addGroup(0, vertexCount1, 0);
    geometry.addGroup(vertexCount1, vertexCount2, 1);
    // and so on...
    

    b. Use a single material:
    If you don’t need multiple materials, consider using a single material for the entire geometry.

    c. Use THREE.MeshPhongMaterial with vertex colors:
    If you’re trying to achieve different colors for different parts of the geometry, consider using vertex colors instead of multiple materials.

    d. Use instancing:
    If you’re repeating the same geometry multiple times, consider using instancing instead of multiple groups.

  3. Optimization techniques:

    • Reduce polygon count if possible
    • Use simpler shaders
    • Implement level of detail (LOD) for complex scenes
    • Use object pooling for frequently created/destroyed objects
  4. Profiling:
    Use the Three.js inspector or browser developer tools to profile your scene and identify performance bottlenecks.

I have fixed it. when i want to use multi materials, i just initial mesh with one material, and before excute ‘addgroup’ there lack of ‘cleargroup’, so i change one material to multi materail when init mesh or execute ‘cleargroup’ before ‘addgroup’, it’s all work.
thanks everyone!

really good.

What is the point of pasting chatgpt answers here?