BabylonJs系列-5.材质

278 阅读2分钟

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;

参考链接

【babylonjs】babylonjs实践(六)--材质的颜色