How to make your own terrain server?

I found that the terrain service normally used on CesiumJs will have problems on CesiumForUnreal, such as a lot of white blocks. (LogPhysicsCore: Error: PHYSX: (D:\Build++Fortnite\Sync\Engine\Source\ThirdParty\PhysX3\PhysX_3.4\Source\PhysXCooking\src\mesh\TriangleMeshBuilder.cpp 802) reported in Unreal4.26 version eINVALID_PARAMETER: TriangleMesh::loadFromDesc: desc.isValid() failed!).
I compared my terrain service with the official terrain service and found the difference in the layer.json file.

 "bvhlevels": 6,
 "description": "",
 "extensions": [
     "bvh",
     "watermask",
     "metadata",
     "octvertexnormals"
 ],

I want to know if the cause of the build failure is bvh? And how to deal with terrain to be compatible with bvh?

1 Like

Hi @leielyq

I look into the asset, and it seems like the available field isn’t attached to the tile’s content. This field is currently in your layer.json, but the plugin currently don’t parse it. So it only loads up to level 0 at the moment. On the CesiumJS side, it takes the field in the layer.json and tile’s content into account at the same time, so it should work over there. I would recommend to attach the available field into the tile’s content, instead of layer.json. The reason is that there is a good chance there are million of tiles at high detailed levels, and it can overwhelm the memory quickly. Placing it into the tile allows the Unreal plugin and CesiumJS to use what are needed to render at the current frame. You don’t have to embed the available field for every tile, but every 10 level tiles. For example, all level 0 tiles will have available field for those tiles up to level 10. Then, all the level 10 tiles will have the available field for the tiles up to level 20, and so on. Please let me know if you have any question

Thank you very much for your reply, I will study this issue now