美文网首页GIS相关
three.js之材质

three.js之材质

作者: sakatayui酱 | 来源:发表于2017-07-14 22:24 被阅读0次

材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性。通过设置材质可以改变物体的颜色、纹理贴图、光照模式等。它也是三维物体的皮肤,决定其外观效果,例如一个物体的透明度、颜色和反光度等效果。

three.js提供了哪些材质?

1.基础材质MeshBasicMaterial,渲染后物体的颜色始终为该材质的颜色,而不会由于光照产生明暗、阴影效果。如果没有指定材质的颜色,它的颜色就是随机的。

2.深度材质MeshDepthMateria,根据网格到相机的距离,该材质决定如何给网格染色 ,根据物体上每一点到摄像机的远近来显示颜色,远的显示黑色,近的显示白色

3.法向材质MeshNormalMaterial,根据物体表面的法向量计算颜色 ,决定光的发射方向、在计算光照、阴影时提供信息、为物体表面上色。法向量所指的方向决定每个面从MeshNormalMaterial材质获取的颜色。在平面上添加表示法向量的箭头:使用THREE.ArrowHelper。

4.朗伯材质MeshLambertMaterial,考虑光照的影响,可以创建颜色暗淡,不光亮的物体 。ambient:对环境光的反射能力 ,和AmbientLight光源一起使用。该颜色会与AmbientLight光源的颜色相乘。默认是白色。 emissive:该材质发射的属性。材质的自发光颜色,可以用来表现光源的颜色 。不像是光源,只是一种纯粹的、不受其他光照影响的颜色。默认是黑色。Lambert 材质(MeshLambertMaterial)是符合 Lambert 光照模型的材质。 Lambert 光照模型的主要特点是只考虑漫反射而不考虑镜面反射的效果,因而对于金属、镜子等需要镜面反射效果的物体就不适应,对于其他大部分物体的漫反射效果都是适用的。

Idiffuse = Kd * Id * cos(theta) ,Idiffuse 是漫反射光强, Kd 是物体表面的漫反射属性, Id 是光强, theta 是光的入射角弧度。

5.phong式材质MeshPhongMaterial,考虑光照的影响,可以创建光亮的物体 。对于金属、镜面的表现尤为适合。 specular:指定该材质的光亮程度及其高光部分的颜色。如果将他设置成跟color属性相同的颜色,将会得到一种更加类似金属的材质。如果设置为灰色,材质将变得更像塑料。

Ispecular = Ks * Is * (cos(alpha)) ^ n ,Ispecular 是镜面反射的光强, Ks 是材质表面镜面反射系数, Is 是光源强度,alpha 是反射光与视线的夹角, n 是高光指数,越大则高光光斑越小。 shininess 属性控制光照模型中的 n 值。

6.面材质MeshFaceMaterial,这是一种容器,可以在该容器中为物体的各个表面上设置不同的颜色 。

7.着色器材质ShaderMaterial,使用自定义的着色器程序,直接控制顶点的放置方式,以及像素的着色方式。个人觉得这个比较复杂,但是应用应该比其他几种都要广泛一点,需要一些webGL的基础。

8.粒子材质SpriteMaterial,适用于粒子系统,用来模拟雪花小雨什么的。

相关文章

  • three.js之材质

    材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性。通过设置材质可以改变物体的颜色、纹理贴图、...

  • Material 材质

    材质决定了物体是否透明颜色等 three.js 中涉及的主要几种材质 MeshBasicMaterialcolor...

  • three.js浅谈@材质

    材质种类 上一节介绍了光源,但是表现一个物体的表面仅仅需要光源是不够的,光源与材质进行影响,会表现出不同的表面材质...

  • HTREE.JS1.0 Hello three.js

    1、Hello Three.js程序 2、添加灯光效果 在场景里添加一个光源 将材质改成对光源有效果的材质 Mes...

  • spriteMaterial (rotate) 旋转问题

    spriteMaterial是Three.js中的点精灵材质。利用它我们可以在场景中加载图片,贴上纹理。并且效果很...

  • three.js(6)-点材质和线材质

    下面这张图囊括了目前所有的材质。今天我们说说点材质和线材质。 点材质 点材质,顾名思义,就是用点作为物体的材质。 线材质

  • three.js(35)-金属材质

    常用材质 点材质PointsMaterial线材质LineBasicMaterial:线基础材质LineDashe...

  • three.js(4)-网格Lambert材质

    有关物体的材质,我们前面用了MeshBasicMaterial来体现。 MeshBasicMaterial就是基础...

  • Three.js学习规划

    学习目标 熟悉并掌握Three.js中的基本概念,主要包括场景,摄像机,灯光,渲染器,物体对象,几何体,材质,动画...

  • Three.js MeshStandardMaterial菲涅尔

    前面两篇分别讲了Three.js的源码结构和Shader改写方法,本篇做一个基于Standard材质的菲涅尔。如未...

网友评论

    本文标题:three.js之材质

    本文链接:https://www.haomeiwen.com/subject/aggohxtx.html