使用Three.js创建的第一个3D场景
近年来,现代浏览器已经具备了直接从JavaScript访问的强大功能。 您可以使用HTML5标签轻松添加视频和音频, 并通过使用HTML5 Canvas创建交互式组件。 与HTML5一起,现代浏览器还支持WebGL。 使用WebGL,您可以直接利用图形卡的处理资源,创建高性能的2D和3D计算机图形。 直接从JavaScript中使用WebGL来创建和动画化3D场景是一个非常复杂、冗长且容易出错的过程。 Three.js是一个使这变得更加容易的库。 以下列表显示了使用Three.js可以轻松完成的一些事情:
- 创建简单和复杂的3D几何体并在任何浏览器中渲染它们
- 通过3D场景中的动画移动对象
- 为对象应用纹理和材质
- 使用不同的光源照亮场景
- 使用来自3D建模软件的模型,并将生成的模型导出到这些程序中
- 向您的3D场景添加高级后处理效果
- 创建并使用自定义着色器
- 创建、可视化和动画化点云
- 创建虚拟现实(VR)和增强现实(AR)场景
使用几行JavaScript(或后面在本书中将看到的TypeScript), 您可以在浏览器中实时渲染从简单的3D模型到逼真场景的任何内容。 例如,图1.1显示了使用Three.js可以完成的一个示例(您可以通过在浏览器中 打开并查看动画):

在本章中,我们将直接深入研究Three.js,并创建一些示例,这些示例将向您展示Three.js的工作原理, 并且您可以使用它们进行尝试,以更全面地了解Three.js。 我们暂时不会深入探讨所有技术细节;这些内容将在接下来的章节中介绍。 通过本章结束时,您将能够创建场景,并运行并探索本书中的所有示例。
我们将以对Three.js的简短介绍开始本书,然后迅速转向前几个示例和代码样本。 在开始之前,让我们简要了解一下一些重要的浏览器以及它们对WebGL(和WebGPU)的支持。
所有现代桌面和移动浏览器目前都支持WebGL。 IE的旧版本(版本11之前的版本)将无法运行基于WebGL的应用程序。 在移动设备上,大多数浏览器都支持WebGL。 因此,使用WebGL,您可以在桌面和移动设备上都能够良好运行的创建交互式3D可视化。
在本书中,我们将重点关注Three.js提供的基于WebGL的渲染器。 然而,还有一种基于CSS 3D的渲染器,它提供了一个简单的API来创建基于CSS 3D的3D场景。 使用CSS 3D的一个重要优势是,该 标准在所有移动和桌面浏览器上都受支持,并允许您在3D空间中呈现HTML元素。 我们不会详细讨论这个渲染器的细节,但将在第7章“点和精灵”中展示一个示例。
除了WebGL之外,还正在开发一种新的标准,用于使用GPU在浏览器中进行渲染,称为WebGPU。 它将提供比WebGL更好的性能,并且在未来将成为新的标准。 当您使用Three.js时,您无需担心此更改。 Three.js已经部分支持WebGPU,随着该标准的成熟,Three.js对该标准的支持也将增加。 因此,您使用Three.js创建的所有内容也将在WebGPU中立即运行。
在本书的第一章中,您将直接创建一个3D场景,并能够在桌面或移动设备上运行它。 我们将解释Three.js的核心概念,如果有更高级的主题,我们将在哪一章中详细解释。 在这一章中,我们将创建两个不同的场景。第一个将显示在Three.js中呈现的基本几何体,如下图所示:
之后,我们还会快速向您展示如何加载外部模型,以及创建逼真场景有多么容易。第二个示例的结果将如下所示:
在您开始处理这些示例之前,在接下来的几个部分中, 我们将了解轻松使用Three.js的工具以及如何下载本书中显示的示例。 在本章中,我们将涵盖以下主题:
- 使用Three.js的要求
- 下载本书中使用的源代码和示例
- 测试和尝试示例
- 渲染和查看3D对象
- 介绍一些用于统计和控制场景的辅助库
技术要求
Three.js是一个JavaScript库, 因此创建Three.js WebGL应用程序所需的只是一个文本编辑器和一个支持渲染结果的支持浏览器 。 我想推荐以下几个我在过去几年中广泛使用于各种项目的文本编辑器:
-
Visual Studio Code:这是微软提供的免费编辑器,适用于所有主要平台, 提供基于类型、函数定义和导入的智能代码高亮和自动完成。 它提供了一个非常清晰的界面,非常适合在JavaScript项目上工作。 可以从这里下载。 如果您不想下载此编辑器, 也可以直接导航到https://vscode.dev/, 这将在浏览器中直接启动一个编辑器, 您可以从中连接到GitHub存储库或访问本地文件系统中的目录。
-
WebStorm:这是JetBrains提供的编辑器,对JavaScript编辑提供了很好的支持。 它支持代码完成、自动部署和直接从编辑器进行JavaScript调试。 此外,WebStorm还具有出色的GitHub(和其他版本控制系统)支持。 您可以从下载试用版。
-
Notepad++:Notepad++是一个通用编辑器,支持广泛的编程语言的代码高亮。 它可以轻松地布局和格式化JavaScript。 请注意,Notepad++仅适用于Windows。 可以从下载Notepad++。
-
Sublime Text Editor:Sublime是一个很棒的编辑器,对JavaScript编辑提供了非常好的支持。 此外,它提供了许多非常有帮助的选择(如多行选择)和编辑选项, 一旦你习惯了它们,就会提供一个非常好的JavaScript编辑环境。 Sublime也可以免费测试,并且可以从下载。
即使您不使用 这些编辑器中的任何一个,也有很多可用的编辑器,包括开源和商业版, 您可以使用它们来编辑JavaScript并创建Three.js项目,因为您只需要能够编辑文本。 您可能想查看的一个有趣的项目是AWS Cloud9。 这是一个基于云的JavaScript编辑器,可以连接到GitHub帐户。 通过这种方式,您可以直接访问本书中的所有源代码和示例,并进行实验。
另外,除了这些文本编辑器,您可以用于编辑和尝试本书源代码的编辑器之外, Three.js目前还提供了一个在线编辑器。 您可以在http://threejs.org/editor/找到这个编辑器, 通过它,您可以使用图形方式创建Three.js场景。
我建议选择使用Visual Studio Code。 这是一个非常轻量级的编辑器,对JavaScript有很好的支持, 并且有几个其他的扩展使得编写JavaScript应用程序更加容易。
之前我提到过,大多数现代的Web浏览器都支持WebGL,并且可以用来运行Three.js的例子。 我通常在Firefox中运行我 的代码。 原因是通常情况下,Firefox对WebGL有最好的支持和性能,并且它有一个出色的JavaScript调试器。 使用这个调试器,如下截图所示,您可以通过使用断点和控制台输出等方式迅速定位问题:
本书中的所有示例在Chrome和Firefox中同样适用。 因此,如果这是您选择的浏览器,当然可以使用它。
在整本书中,我将向您提供关于调试器的使用以及其他调试技巧的指导。 目前就介绍这么多,让我们获取源代码并开始第一个场景。
获取源代码
本书的所有代码都可以在GitHub上找到( https://github.com/yuxuetr/Learn-Three.js)。 GitHub是一个托管Git存储库的站点。 您可以使用这些存储库来存储、访问和版本控制源代码。 有几种方式可以获取这些源代码。您可以选择以下任一方 式:
- 克隆Git存储库。这意味着您使用git命令行工具获取本书源代码的最新版本。
- 从GitHub下载并解压缩包含所有内容的存档文件。
在接下来的两个小节中,我们将稍微详细地探讨这些选项。
使用git克隆存储库
获取所有示例的一种方法是使用git命令行工具克隆此存储库。 为此,您需要为您的操作系统下载一个Git客户端。 如果您的操作系统是最新的,可能已经安装了Git。 您可以通过在终端中运行以下命令来快速检查:
$ git --version
如果尚未安装该命令,则可以从这里获取客户端并按照说明进行安装:http://git-scm.com。
安装Git后,您可以使用git命令行工具克隆本书的存储库。
打开命令提示符并转到要下载源代码的目录。在该目录中,运行以下命令:
$ git clone https://github.com/yuxuetr/Learn-Three.js.git
或
$ git clone git@github.com:yuxuetr/Learn-Three.js.git
执行此操作后,所有源代码将被下载到learning-threejs目录中。
从该目录中,您可以运行本书中介绍的所有示例。
下载并解压缩存档
如果您不想使用git直接从GitHub下载源代码,也可以下载存档。 在浏览器中打开https://github.com/yuxuetr/Learn-Three.js, 并单击右侧的“Code”按钮。 这将使您可以通过点击“Download ZIP”选项将所有源代码下载到单个ZIP文件中:
测试和尝试示例
代码和示例按章节组织,对于示例,我们将提供一个简单的集成服务器,您可以使用该服务器访问所有示例。 要启动此服务器,我们需要安装Node.js和npm。 这两个工具用于管理JavaScript包、构建JavaScript应用程序, 并使我们更容易将Three.js代码模块化和集成现有的JavaScript库。 要安装这两个工具,请访问https://nodejs.org/en/download/, 并选择适合您操作系统的安装程序。 安装完成后,打开终端并检查一切是否正常。在我的机器上,使用了以下版本:
$ npm -v
10.1.0
$ node -v
v20.9.0
安装了这两个工具之后,我们需要执行一些步骤,以获取所有外部需要的依赖项,然后我们才能构建和访问示例:
- 首先,我们需要下载示例中使用的外部库。例如,Three.js是我们需要下载的依赖项之一。
要下载所有依赖项,请在下载或解压缩所有示例的目录中运行以下命令:
$ npm install
上述命令将开始下载所有所需的JavaScript库,并将其存储在node_modules文件夹中。
- 接下来,我们需要构建示例。这将把我们的源代码和外部库合并成一个单一的文件,我们可以在浏览器中显示。 要使用npm构建示例,请使用以下命令:
$ npm run build