3D Models in ShowCAST

This information is constantly changing as we implement new ways of doing things to solve any issue via programming wherever we can.


Current Model Limitations in ShowCAST


This is primarily due to the need for USDZ (once WebXR is available on iOS most of this list will be gone)

  • Vertex colors. (android is supported) 
  • Morph targets and vertex animation. (android is supported) 
  • Texture filter modes. All textures are sampled linearly, with mipmapping.
  • Clamp and mirror texture wrap modes. All textures use repeat mode.
  • Cameras are removed.
  • Shadow animation. Shadows are generated from the first frame. (android is supported) 
  • Transparent shadows. This is particularly noticeable for transparent geometry near the ground, which will appear very dark due to shadow falloff. (android is supported) 
  • Multiple UV sets. The converter works around this by disabling textures using secondary UV sets, which works best for the most common-use case: AO.
  • Models can appear darker than expected - follow this thread for updates. We are exploring programmatic fixes. Won't be an issue when we switch to GLB/GLTF once iOS allows WebXR.
  • Transparency sorting. Overlapping transparent surfaces are likely to look incorrect.
  • Skinned animation for vertex normals. Lighting will look incorrect for skinned models, which is especially noticeable for highly reflective surfaces (it will have a painted-on appearance). The converter attempts to mitigate this by baking normals to the first frame of animation, but it will still look incorrect. (android is supported) 
  • Over 500,000 triangles is unstable (Does not mean instant failure)
  • Over 500,000 vertices is unstable (Does not mean instant failure)
  • Using over 200 bones is unstable. Recommended to stay under 150. (This does not mean all models over 200 bones will instantly fail however)
  • Using more than 100 bones per entity will create instability.
  • Overuse of bones (using many in a small location) will potentially fail.
  • Sizes of models from glb to usdz are inconsistent however usdz is almost at least double the size and . reality will usually be larger than that
  • Lights are removed.
  • Read only textures 
  • Animated skinned models with Geometry larger then the armature (IOS does not handle this properly) 
  • Roughness metallic is the preferred material workflow (specular gloss may not work on ios) 
  • iOS reflects the world it's currently within in a blurred state while Android reflects a preset map. 

 

For best performance and load times among all WorldCAST portals 


  • Stay within the 100mb limit on uncompressed forms of the model including its textures.
  • Use textures within 1024p any higher quality will be imperceptible for most uses.
  • Use as few materials as possible and instead UV map the model to handle using one material and texture for multiple elements. You should generally only have to use 1 material per every texture you have. However if this restricts the model artistically, more may be used.
  • Have a clean model hierarchy with not too many deeply nested elements.
  • Use fewer bones on skinned models.
  • Compress animations before exporting the model and only include animations that will be displayed. 
  • Use less faces and have a lower polygon count. Higher counts can be imperceptible for most uses.
  • Have less elements directly next to each other or intersecting. 
  • Join meshes together if possible. This also reduces graphical artifacts.
  • Use a single sided display for faces. (Unless of course the otherside of the face will be viewed).

 

Solutions: 


  • Emulate vertex colours by baking them into a texture. This is difficult to do generally because it may involve re-uv-mapping the model - something better left to content authors. It can be simplified for certain special cases, though (e.g. untextured models with only vertex colors can use a simple color atlas).


Guide to converting vertex colours to textures. Best for uv mapped or simplistic art 

  1. Bring model into Blender 
  2. Decimate meshes for faster processing 
  3. Generate UV for the meshes either automatically or manually. 
  4. Follow this guide to convert vertex to textures. 
  5. Apply your textures to your model. 
  6. Export as GLB without vertex colours 
  7. Bring into WorldCAST and enjoy! 


  • Combine multiple UV sets. This is difficult to do because it requires re-uv-mapping the model - something better left to content authors.
  • Emulate texture mirror wrap mode by mirroring the texture. This is simple, but can increase texture size up to 4x.
  • Emulate texture clamp wrap mode by clipping UVs. This involves relatively complicated clipping, but should not have a significant impact on model size.
  • WorldCAST is an endpoint for models

 


Share by: