BabylonJs系列-5.材质
开始学习材质就已经开始脱离了基础,之前的教程都是为了让大家更好的了解WebGL世界。能够做一个简单的应用,而学习材质,纹理,则可以让自己构建的世界更加丰富起来。
材质就是物体的质感,比如布料,铁球,玻璃等,都可以称之为材质。
材质的分类
- 漫反射材质(Diffuse)—— 在光线下观察的材料的基本颜色或质地;
- 镜面材质,也叫高光(Specular)—— 光线给材质的亮点;
- 发光材质(Emissive)—— 发光材料的颜色或质地,如自发光;
- 环境材质(Ambient)—— 由环境背景光照明的材料的颜色或质地。
1.自发光材质(Emissive)
如果不想受到光线的影响,让一个物体自动发光,如夜明珠等。可以使用这个材质。
材质的使用很简单,直接mesh.material = 定义的材质,即可应用到物体上
var redMat = new BABYLON.StandardMaterial("redMat", scene);
redMat.emissiveColor = new BABYLON.Color3(1, 0, 0);
var greenMat = new BABYLON.StandardMaterial("greenMat", scene);
greenMat.emissiveColor = new BABYLON.Color3(0, 1, 0);
var blueMat = new BABYLON.StandardMaterial("blueMat", scene);
blueMat.emissiveColor = new BABYLON.Color3(0, 0, 1);
var whiteMat = new BABYLON.StandardMaterial("whiteMat", scene);
whiteMat.emissiveColor = new BABYLON.Color3(1, 1, 1);
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", {diameter: 0.25}, scene);
sphere.material = greenMat;
2.漫反射材质
某个颜色的漫反射材质,只能在漫散射光下有颜色。
redMat.diffuseColor = new BABYLON.Color3(1, 0, 0);
var light = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, 10, 0), scene);
light.diffuse = new BABYLON.Color3(1, 0, 0);
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 0.25 }, scene);
sphere.material = redMat;
3.镜面材质
某个颜色的镜面反射材质,只能在镜面散射光下有颜色
var redMat = new BABYLON.StandardMaterial("redMat", scene);
redMat.specularColor = new BABYLON.Color3(1, 0, 0);
var light = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, 10, 0), scene);
light.specular = new BABYLON.Color3(1, 0, 0);
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 0.25 }, scene);
sphere.material = redMat;
4.环境材质
由环境光进行决定
var redMat = new BABYLON.StandardMaterial("redMat", scene);
redMat.ambientColor = new BABYLON.Color3(1, 0, 0);
scene.ambientColor = new BABYLON.Color3(1, 0, 0);
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 0.25 }, scene);
sphere.material = redMat;