序言
随着上章关于几何体的认识,相信你已经建立起了属于自己的几何体分类体系,在项目开发中可以快速找到相关几何体并应用于项目中。不过我们还不能对各种几何体实现材质管理,本章将解决这个问题,使得我们的几何体更加形象生动、真实。
threejs提供了Material对象以及一系列的子对象,一起来看看吧。
点材质
PointsMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:点材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.PointsMaterial({color: 0xF3FFE2});
var torusKnot = new THREE.Points(geometry, material);
基础线条材质
LineBasicMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:基础线条材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.LineBasicMaterial();
var torusKnot = new THREE.Line(geometry, material);
基础网格材质
一个以简单着色(平面或线框)方式来绘制几何体的材质。这种材质不受光照的影响。
MeshBasicMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:基础网格材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.MeshBasicMaterial( { color: 0x0000ff} );
Lambert网格材质
一种非光泽表面的材质,没有镜面高光。可以很好地模拟一些表面(例如未经处理的木材或石材),但不能模拟具有镜面高光的光泽表面(例如涂漆木材)。
MeshLambertMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:Lambert网格材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.MeshLambertMaterial( { color: 0x0000ff} );
Phong网格材质
一种用于具有镜面高光的光泽表面的材质。与MeshLambertMaterial中使用的Lambertian模型不同,该材质可以模拟具有镜面高光的光泽表面(例如涂漆木材)。
MeshPhongMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:Phong网格材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.MeshPhongMaterial( { color: 0x0000ff} );
Phong网格材质
一种用于具有镜面高光的光泽表面的材质。与MeshLambertMaterial中使用的Lambertian模型不同,该材质可以模拟具有镜面高光的光泽表面(例如涂漆木材)。
MeshPhongMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,高光颜色4488ee,默认高亮的程度30,材质为:Phong网格材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.MeshPhongMaterial({
color: 0x0000ff,
specular:0x4488ee,
});
标准网格材质
一种基于物理的标准材质。基于物理的渲染(PBR)最近已成为许多3D应用程序的标准,例如Unity, Unreal和 3D Studio Max。在实践中,该材质提供了比MeshLambertMaterial 或MeshPhongMaterial 更精确和逼真的结果,代价是计算成本更高。注意,为获得最佳效果,在使用此材质时应始终指定environment map。
MeshStandardMaterial( parameters : Object )
parameters - (可选)用于定义材质外观的对象,具有一个或多个属性。 材质的任何属性都可以从此处传入(包括从Material继承的任何属性)。
//创建一个圆环几何体半径10,管道半径4,材质为:标准网格材质
var geometry = new THREE.TorusKnotBufferGeometry( 10, 4);
var material = new THREE.MeshStandardMaterial();