three.js 材质 material

发布于 2021-10-27 23:03:44 字数 1672 浏览 1518 评论 0

材质

为了渲染出不同的效果three.js提供了多种材质对象,点、线、面(网格)三种渲染模式都有自己对应的材质模型,在第二章点线面课程中已经简单介绍过,其中网格模型渲染使用的网格材质对象种类最丰富,在实际的开发中使用频率最高,网格材质对象构造函数开头单词都是Mesh。

  • MeshBasicMaterial 是基础材质,可以设置几何体颜色、透明度、纹理贴图等常见的外观属性,基础材质对场景中的光照没有颜色变化反应;
  • MeshLambertMaterial 是兰伯特Lambert材质,除了支持基础材质的属性外,还支持漫反射光照模型,可以设置反射率、折射率等物理光学参数,Lambert 材质颜色明暗受光照强弱方向影响;
  • MeshPhongMaterial是Phong材质,支持镜面反射光照模型,给几何体添加局部高光效果;
  • MeshDepthMaterial 是深度材质,顾名思义颜色的计算受到顶点深度值的影响;MeshNormalMaterial是法向量材质,Normal就是法线的意思,物体的表面不同的位置有不同的法线方向,从几何体对象的角度看,几何体顶点相关数据一般都有顶点法向量数据,这些数据会被用于顶点的颜色计算。

构造函数语法格式

前面课程中的很多案例中展示过各类材质的使用,但都没有详细介绍材质创建的语法格式,如何在three.js的官方文档查找有关材质的构造函数、方法、属性,
哪些属性是私有属性,哪些属性又是共有属性。

格式

THREE.MeshLambertMaterial({属性1:值,属性2:值,属性3:值......})。

把需要设置的属性及其属性值组成一个对象,然后作为构造函数的参数即可。

/**材质对象*/
var sphereMaterial=new THREE.MeshLambertMaterial({
  color:0xff0000,//材质对象颜色属性
  opacity:0.7,//透明度属性
  transparent:true//开启透明度计算
});

也可以不通过构造函数的参数,既然是属性,就可以通过点符号操作,下面通过点符号设置透明度属性

/**材质对象*/
var sphereMaterial=new THREE.MeshLambertMaterial({
  color:0xff0000//材质对象颜色属性
});
sphereMaterial.opacity = 0.7;//透明度属性
sphereMaterial.transparent = true;//开启透明度计算

color:0xff0000 设置的是颜色属性,颜色属性是 MeshLambertMaterial、MeshBasicMaterial、MeshPhongMaterial 等材质都拥有的私有属性,每种材质的私有属性可以在three.js文档里面对应构造函数中查找。

opacity:0.7 设置的是几何体的透明度,透明度是网格材质的共有属性,各种网格材质的共有属性可以查找他们的基类 Material 对象。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

泛泛之交

暂无简介

0 文章
0 评论
21558 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文