three.js浅谈@材质

2018-09-20  本文已影响0人  琙灵

材质种类

上一节介绍了光源,但是表现一个物体的表面仅仅需要光源是不够的,光源与材质进行影响,会表现出不同的表面
材质大致分为以下几种

  1. MeshBasicMaterial
  2. MeshDepthMaterial
  3. MeshLambertMaterial
  4. MeshNormalMaterial
  5. MeshPhongMaterial
  6. MeshStandardMaterial
  7. MeshPhysicalMaterial
  8. MeshToonMaterial

材质总类实在太多了,我们介绍几种常用的来管中窥豹

MeshBasicMaterial

这是一种基础材质,光照在上面处处都会表现出一样的颜色,此种材质是其他几种材质的基础

const mat = new THREE.MeshBasicMaterial({
  ...
});

以下是材质构造函数的部分参数

MeshLambertMaterial

这种材质是一种漫反射材质,表现类型和基础材质基本类似,但是相比基础材质处处的颜色相同,漫反射材质会和光源产生影响,不同光照强度会产生不同的反射强度
并且此种材料多了个重要参数

MeshPhongMaterial

这种材料是一种镜面反射的材料可以用于表现金属等具有镜面反射的性质
这种材质在MeshLambertMaterial多了种特有的参数

参考代码

const THREE= window.THREE=require('three')
const scene = new THREE.Scene();//创建一个场景
const camera = new THREE.PerspectiveCamera(50, window.innerWidth/window.innerHeight, 0.1, 1000);
camera.position.z=150//因为刚刚创建的对象都会位于原点,我们需要把相机拉远一点
//创建一个渲染器,并设置大小,然后把这个渲染器加入到dom中
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const light = new THREE.DirectionalLight('#fff',1)
light.position.set(-100,-69,20)//光方向

const mat = new THREE.MeshPhongMaterial({
    color: new THREE.Color("rgb(220,76,65)"),
    shininess:10,
    specular:new THREE.Color("rgb(220,76,65)"),
    emissive:new THREE.Color("rgb(6,53,53)"),
    shading: THREE.FlatShading 
});
// const mat = new THREE.MeshLambertMaterial({
//     color: new THREE.Color("rgb(106,153,153)"),
//     emissive: new THREE.Color("rgb(220,76,65)"),
//     emissiveIntensity: 0.3
// });
// const mat = new THREE.MeshBasicMaterial({
//     color: new THREE.Color("rgb(106,153,153)"),
// });
//创建一个多面体模型,并将模型和材质结合
const ballGeometry = new THREE.IcosahedronGeometry(50,2);
const ball = new THREE.Mesh( ballGeometry, mat );

scene.add(light)//场景中加入光源
scene.add( camera )//场景中加入相机
scene.add( ball )//场景中加入多面体

renderer.render(scene, camera);

参考

  1. https://hopepdm.github.io/blog/archivers/stuJs14
  2. https://zhuanlan.zhihu.com/p/25939826
  3. http://blog.bbadtimes.com/2017/10/29/401
  4. https://blog.csdn.net/csdn2193714269/article/details/77807798
  5. https://www.cnblogs.com/w-wanglei/p/6736615.html
  6. http://www.yanhuangxueyuan.com/Three.js_course/material.html
上一篇下一篇

猜你喜欢

热点阅读