场景视觉环境:背景、天空、雾

场景视觉环境:背景、天空、雾

一月 16, 2024

1、环境

1
2
3
4
5
6
7
8
9
scene.clearColor - 改变「背景」颜色

scene.ambientColor - 改变几种效果中使用的颜色,包括环境照明

scene.clearColor = new BABYLON.Color3(0.5, 0.8, 0.5);

scene.clearColor = BABYLON.Color3.Blue();

scene.ambientColor = new BABYLON.Color3(0.3, 0.3, 0.3);

2、天空盒

手动创建

1
2
3
4
5
6
7
8
9
var skybox = BABYLON.Mesh.CreateBox("skyBox", 100.0, scene); 

var skyboxMaterial = new BABYLON.StandardMaterial("skyBox", scene);

skyboxMaterial.backFaceCulling = false;

skyboxMaterial.disableLighting = true;

skybox.material = skyboxMaterial;

设置infiniteDistance属性,这使得skybox跟随摄像机的位置

1
skybox.infiniteDistance = true;

消除箱子上所有的反光(太阳不会反射在天空上)

1
skyboxMaterial.disableLighting = true;

接下来,我们将我们特殊的天空纹理应用于它。此纹理必须已准备好成为天空盒,位于专用目录中,在我们的示例中名为“天空盒”:

1
skyboxMaterial.reflectionTexture = new BABYLON.CubeTexture("textures/skybox", scene);skyboxMaterial.reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX\_MODE;

3、雾

1
scene.fogMode = BABYLON.Scene.FOGMODE\_EXP;

以下是可用的模式:

  • BABYLON.Scene.FOGMODE_NONE - 默认一个,雾被停用。
  • BABYLON.Scene.FOGMODE_EXP - 雾密度遵循指数函数。
  • BABYLON.Scene.FOGMODE_EXP2 - 与上面相同,但速度更快。
  • BABYLON.Scene.FOGMODE_LINEAR - 雾密度遵循线性函数。

如果选择EXP, 或EXP2模式,则可以定义密度选项(默认为0.1):

1
scene.fogDensity = 0.01;

否则,如果你选择LINEAR模式,那么你可以定义雾从哪里开始,雾从哪里结束:

1
2
3
scene.fogStart = 20.0;

scene.fogEnd = 60.0;

最后,无论哪种模式,您都可以指定雾的颜色(默认为BABYLON.Color3(0.2, 0.2, 0.3)):

1
scene.fogColor = new BABYLON.Color3(0.9, 0.9, 0.85);