初识 Three.js(二)

初识 Three.js

昨天我们讲了 Three 里面的一些基本概念

今天我们来仔细的讲一下这些基本概念

场景

在 Three.js 当中,场景是这么解释的

场景(Scene)

场景能够让你在什么地方、摆放什么东西来交给three.js来渲染,这是你放置物体、灯光和摄像机的地方。

顾名思义,就是一个场景,我们可以把它想象成一个空间或者一个容器

来存放我们的各种东西

例如:物体、相机之类的

在 Three.js 中,我们需要通过框架给的构造函数去 new 一个出来

const scene = new Scene()

以下是在场景里面添加东西的方法

scene.add(camera);

相机

在 Three.js 当中,相机的定义是这样的

摄像机(Camera)

摄像机的抽象基类。在构建新摄像机时,应始终继承此类。

想当于我们的眼睛来观察这个 3D 的物体

相机有两种模式

  1. 透视相机
  2. 正交相机,目前我还没研究到,暂且略过

透视相机

所谓的透视相机,就是相机会生成类似一个视锥的东西,向外面放射出去

因为视锥上下有个角度,所以在生成构造对象的时候需要一个垂直视野角度的参数

同理相机需要长宽比

因为电脑的性能是有极限的,所以我们在构造相机时需要给他添加一个近点和远点

所谓的近点和远点是摄像机视锥体近端面和远端面

就是在某个距离区间,我们可以通过相机看到该物体

因为我们相机是需要在场景中的,所以我们还需要给相机添加一个位置

所以透视相机的构造函数是

// 创建一个相机
const camera = new PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);

// 给相机一个位置
camera.position.set(0, 0, 10);
// 在场景里面添加相机
scene.add(camera);

这里插一嘴,就算相机里面看不到某物体,只要添加到了场景当中,那么该物体就仍然是在的,并不是不在了

图片
所谓的视锥,以上是我粗浅画了个视锥的草图

绿色标出来的是视锥的角度,黄色的是场景中的物体,黑色的是场景,白色的是相机,红色的是视锥大概的样子,视锥的样子大概类似一个金字塔的形状

如果还是不太明白的可以参考一下网页资料

Viewing frustum - Wikipedia

物体

很简单,就是我们可以看到的东西,就叫物体

就是场景里面的建模

物体有不同的形状和不同的材质,与相机相同,也需要被添加在场景中

详情请看以下代码

// 物体 -> 方形
const cubeGeometry = new BoxGeometry(1, 1, 1);
// 材质 -> vue 的主题色
const cubeMaterial = new MeshBasicMaterial({
    
     color: 0x4fc08d });
// 生成物体
const cube = new Mesh(cubeGeometry, cubeMaterial);
// 将物体添加到场景中
scene.add(cube);

渲染器

我们需要通过渲染器,来进行页面的渲染

把我们刚刚添加的相机、场景、物体之类的东西添加到页面上,使其能够显示

代码也比较简单

例:

// 生成渲染器
const renderer = new WebGLRenderer();
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight);
// 渲染器渲染的是画布 -> canvas
// 需要将渲染的 canvas 内容添加到 body 上
document.body.appendChild(renderer.domElement);

// 通过渲染器将场景和相机进行渲染
renderer.render(scene, camera);

以上是我对于昨天那篇文章的一些补充~

希望对你们有所帮助,如果可以的话希望顺路来看看我的博客哦
新的博客
以前的博客

我们下集再见~

猜你喜欢

转载自blog.csdn.net/Vixcity/article/details/128703072