Three.js应用程序的基本组件
在上一章中,您了解了Three.js的基础知识。 我们看了一些例子,并创建了您的第一个完整的Three.js应用程序。 在本章中,我们将深入了解Three.js,并解释构成Three.js应用程序的基本组件。
通过本章结束时,您将学会使用在每个Three.js应用程序中使用的基本组件, 并能够使用这些标准组件创建简单的场景。 您还应该能够轻松处理使用更高级对象的Three.js应用程序, 因为Three.js在处理简单和高级组件时采用的方法是相同的。
在本章中,我们将涵盖以下主题:
- 创建场景
- 几何体和网格的关系
- 为不同场景使用不同的摄像机
我们将从查看如何创建场景和添加对象开始。
创建场景
在第1章中,您创建了一个THREE.Scene,因此您已经了解了Three.js的一些基础知识。
我们看到,要使场景显示任何内容,我们需要四种不同类型的对象:
- 摄像机:确定在屏幕上呈现
THREE.Scene的哪个部分。 - 灯光:这些影响材质的显示方式,并在创建阴影效果时使用(在第3章使用Three.js中的光源中详细讨论)。
- 网格:这些是从摄像机的透视图中呈现的主要对象。这些对象包含组成几何体的顶点和面(例如,球体或立方体),并包含一个定义几何体外观的材质。
- 渲染器:使用摄像机和场景中的信息在屏幕上绘制(渲染)输出。
THREE.Scene充当包含要呈现的灯光和网格的主容器。
THREE.Scene本身没有太多选项和功能。
THREE.Scene是一种有时也称为场景图的结构。
场景图可以保存图形场景的所有必要信息。
在Three.js中,这意味着THREE.Scene包含进行渲染所需的所有对象。
有趣的是,场景图,顾名思义,不仅仅是对象数组;场景图由树结构中的一组节点组成。
正如我们将在第8章创建和加载高级网格和几何体中看到的,
Three.js提供了可以用来创建不同网格或光源组的对象。
您用于此的主要对象是THREE.Group。
顾名思义,此对象允许您将对象组合在一起。
THREE.Group扩展自Three.js中的另一个基类,称为THREE.Object3D,
它提供了一组标准函数,用于添加和修改子元素。
THREE.Mesh和THREE.Scene也都扩展自THREE.Object3D,
因此您也可以使用它们来创建嵌套结构。
但是,按照惯例,并且更语义正确,使用THREE.Group来构建场景图。