当前位置: 首页 > 文档资料 > Three.js 入门指南 >

8.1 环境光

优质
小牛编辑
131浏览
2023-12-01

环境光是指场景整体的光照效果,是由于场景内若干光源的多次反射形成的亮度一致的效果,通常用来为整个场景指定一个基础亮度。因此,环境光没有明确的光源位置,在各处形成的亮度也是一致的。

在设置环境光时,只需要指定光的颜色:

THREE.AmbientLight(hex)

其中,hex是十六进制的RGB颜色信息,如红色表示为0xff0000

创建环境光并将其添加到场景中的完整做法是:

例8.1.1

var light = new THREE.AmbientLight(0xffffff);
scene.add(light);

但是,如果此时场景中没有物体,只添加了这个环境光,那么渲染的结果仍然是一片黑。所以,我们添加两个长方体看下效果:

var greenCube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2),
        new THREE.MeshLambertMaterial({color: 0x00ff00}));
greenCube.position.x = 3;
scene.add(greenCube);

var whiteCube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2),
        new THREE.MeshLambertMaterial({color: 0xffffff}));
whiteCube.position.x = -3;
scene.add(whiteCube);

如果想让环境光暗些,可以将其设置为new THREE.AmbientLight(0xcccccc)等,效果为:

那么,如果使用红色的环境光会有什么样的效果呢?

例8.1.2

我们将环境光设置为红色,场景内同样放置绿色和白色的长方体,效果为:

我们将两个长方体材质的颜色分别设置为绿色和白色,渲染的结果是这两个长方体都被渲染成了环境光的红色,这一结果可能有些出乎你的意料。其实,环境光并不在乎物体材质的color属性,而是ambient属性。ambient属性的默认值是0xffffff。因此,如果将这两个长方体设置为:

例8.1.3

var greenCube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2),
        new THREE.MeshLambertMaterial({ambient: 0x00ff00}));
greenCube.position.x = 3;
scene.add(greenCube);

var whiteCube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2),
        new THREE.MeshLambertMaterial({ambient: 0xffffff}));
whiteCube.position.x = -3;
scene.add(whiteCube);

效果是:

也就意味着ambient0x00ff00的右边的长方体被渲染成了黑色。这是因为不透明物体的颜色其实是其反射光的颜色,而ambient属性表示的是物体反射环境光的能力。对于0x00ff00的物体,红色通道是0,而环境光是完全的红光,因此该长方体不能反射任何光线,最终的渲染颜色就是黑色;而对于0xffffff的白色长方体,红色通道是0xff,因而能反射所有红光,渲染的颜色就是红色。

前面我们看到,当环境光不是白色或灰色的时候,渲染的效果往往会很奇怪。因此,环境光通常使用白色或者灰色,作为整体光照的基础。

最后更新:

类似资料

  • 标准的 Python 发行版不会与 NumPy 模块捆绑在一起。 一个轻量级的替代方法是使用流行的 Python 包安装程序 pip 来安装 NumPy。 pip install numpy 启用 NumPy 的最佳方法是使用特定于您的操作系统的可安装的二进制包。 这些二进制包含完整的 SciPy 技术栈(包括 NumPy,SciPy,matplotlib,IPython,SymPy 以及 Pyt

  • 环境 shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 OS 当前主流的操作系统都支持shell编程,本文档所述的shell编程是指Linux下的shell,讲的基本都是POSIX标准下的功能,所以,也适用于Unix及BSD(如Mac OS)。 Linux Linux默认安装就带了shell解释器。 Mac OS Mac OS不仅带了

  • 你的应用程序可能需要大量的软件包才能正常的工作。如果都不需要 Flask 包的话,你有可能读错了教程。当应用程序运行的时候,你的应用程序的 环境 基本上是所有一切事情的根基。我们是幸运的,因为有许多方式使得我们能够轻松地管理我们的环境。 使用 virtualenv 管理你的环境 virtualenv 是用于在所谓 虚拟环境 中隔离你的应用程序的一个工具。一个虚拟环境是包含了你的应用依赖的软件的一个

  • 在我们开始编写Perl程序之前,让我们了解如何设置Perl环境。 Perl可在各种平台上使用 - Unix(Solaris,Linux,FreeBSD,AIX,HP/UX,SunOS,IRIX等) 赢9x/NT/2000/ WinCE Macintosh(PPC,68K) Solaris(x86,SPARC) OpenVMS Alpha(7.2及更高版本) Symbian Debian GNU/k

  • 要开始使用Koa框架进行开发,您需要安装Node和npm(节点包管理器)。 如果您还没有这些,请转到Node setup以在本地系统上安装节点。 通过在终端中运行以下命令,确认已安装节点和npm。 $ node --version $ npm --version 您应该收到类似于 - 的输出 v5.0.0 3.5.2 请确保您的节点版本高于6.5.0。 现在我们已经设置了Node和npm,让我

  • 在开始使用Rexx之前,您需要确保在系统上运行Rexx的全功能版本。 本章将介绍在Windows机器上安装Rexx及其后续配置以开始使用Rexx。 在继续安装之前,请确保满足以下系统要求。 系统需求 (System Requirements) Memory 2 GB RAM(推荐) 磁盘空间 没有最低要求。 优选地,具有足够的存储空间来存储将使用Rexx创建的程序。 操作系统版本 Rexx可以安装