How to load 3D models with big size?

hello guys i came up with new idea…

i facing major problem when i want to load 300Mb > object file so i thought

first of all we divide our object into several parts like :

  • mashes.buf
  • transforms.buf
  • bounds.buf
  • faces.buf
  • faces16.buf
  • vertices.buf
  • normals.buf
  • uvs0.buf
  • uva1.buf

then we create queueAjaxGet for calling this small chunks one by one and load into scene…

it would be very useful and mobile device also may not crashes anymore…

any suggestion where to start ?@mrdoob @Mugen87 @prisoner849 @looeee

i want to create bufferLoader in three.js

thanx in advance :slight_smile:

1 Like

Before you start writing a custom loader I’d suggest doing some tests to isolate what causes the mobile device to crash. Browsers automatically manage requests quite well, so I don’t necessarily think that 10x 30mb requests will give you better results than 1x 300mb request. Better options might be something like Gzip or Draco compression, which can reduce the size of the mesh by quite a lot.

Even once you’ve downloaded the data, loading it into the GPU and rendering could still be the source of the crash. However you load it, 300mb is really quite huge for a mobile device.

There’s a good post by Play Canvas folks here, that might answer some questions. See this SO answer as well, which advises staying under ~20mb on mobile.


i’m already using Gzip compression. it will compress my json data into 65Mb but in mobile devices it will crash

what should i do ?

Use smaller models.


Try to simplify the geometry in order to achieve a lower LOD. Some content creation tools provide automatic simplification like the Decimate Modifier in Blender. Maybe these tools can help you in your case…


Smaller size models and textures for different systems and connection speeds. First have compact temp models to get things going while larger versions load in the background if frame rate suggests it’s possible on the specific device. Hopefully they are sufficient if nesecary because FPS is too low with smaller or medium versions. Otherwise you need to wrap it in an App via PhoneGap then the user can decide if 300 MB is okay for them to download and its stored until updatimg. More Dynamic content is still possible over live wire. Then there is a device specific limited space for App data to store the extra bits/bytes. Otherwise it can be temporary. Reduced models great but also maybe you can think procedurally so textured are generated and models possibly too. In theory this scaled sizes idea should be camera distsnce based for shadow map density (also FPS performace based dynamically procedurally set) etc. but thats another story/chapter.

1 Like