See above code, and the problem is marked with red circle:
// Below line works well.
//scene.createDefaultCameraOrLight(true, true, true);
// Replace with below lines, mesh is invisible. And we can check mesh's properties are all right.
var light = new BABYLON.PointLight ("light",new BABYLON.Vector3(1,100,1), scene);
var camera = new BABYLON.UniversalCamera("UniversalCamera", new BABYLON.Vector3(1, 100, 1), scene);
scene.activeCamera = camera;
camera.setTarget(mesh.position);
camera.attachControl(canvas, true);
Have you checked in the inspector to see the camera and light values when you use the CreateDefault option? This will tell you whether the values you use are in range.
Yeah, thanks, I found the solution with your suggestion by changing position and fov of camera. There must be a soft coding solution for each glb file, so as that the application will be suitable for everything.
How could I read the useful information from *.glb file to make a smarter mesh loader?
If you are fine with scaling the mesh you can always use mesh.normalizeToUnitCube() which will normalize the mesh and scale it down to a 1,1,1 size cube. Then you can position your camera correctly