⚡初识Three.js,在场景中创建一个旋转的正方体~

简介: ⚡初识Three.js,在场景中创建一个旋转的正方体~

微信截图_20221207165032.png

Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。


接下来带大家使用Three.js创建一个旋转的正方体~


一、Just do it


微信截图_20221207165137.png


1.1 Three.js渲染在哪?


我们都知道Three.js是Webgl的封装,而Webgl是 一个JavaScript API,可在任何兼容的 Web 浏览器中渲染高性能的交互式 3D 和 2D 图形,它只作用于canvas元素。因此首先需要在页面中创建一个canvas元素。


<canvas class="webgl"></canvas>
复制代码


1.2 导入Three并创建场景


import * as THREE from 'three';
const scene = new THREE.Scene();
复制代码


1.3 创建一个正方体并将它添加到场景中


在Three.js中,创建一个几何体,也就是创建一个Mesh类的实例,它有两个参数分别是geometry(几何体)以及material(材质)。创建完之后需要将其添加到场景中。


const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 }); // 使用最基础的材质,颜色设为红色
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
复制代码


1.4 创建相机


相机的种类有很多,我们推荐使用PerspectiveCamera透视相机,它可以用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的相机。


const camera = new THREE.PerspectiveCamera(75, sizes.width / sizes.height);
camera.position.z = 3; // 相机的初始位置是和正方体叠在一起的,需要往后(向屏幕外)移动,这样后面我们才能看见正方体
scene.add(camera);
复制代码


1.5 获取canvas元素并渲染到canvas上


const canvas = document.querySelector('canvas.webgl');
const renderer = new THREE.WebGLRenderer({
    canvas: canvas
})
renderer.render(scene, camera)
复制代码


到现在为止,我们的场景中就会出现我们的正方体啦~


1.6 如何让正方体旋转起来


要想让让其旋转起来,我们需要借助requestAnimationFrame,这个函数其实并不只是用来做动画的,它的作用就是在浏览器的下一帧执行我们的函数参数,我们用其实现动画是最佳的选择!我们现在需要在浏览器的每下一帧更改我们正方体的位置并做一次渲染即可。


const tick = () => {
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
  window.requestAnimationFrame(tick);
};
tick();
复制代码


好啦,现在我们已经成功使用Three.js在场景中创建一个旋转正方体啦,码上掘金如下:


微信截图_20221207165146.png


最后


看,我们只用了五十行不到的代码就实现了一个旋转的正方体,还是挺有趣的,总结一下,Three.js对新手比较友好,上手比较容易~,可以作为入门Web3D的首选引擎!

⚾如果你对本专栏感兴趣欢迎点赞关注+收藏,后面会持续更新,更多精彩知识正在等你!😘

🏉此外笔者还有其他专栏,欢迎阅读~

相关文章
|
7月前
|
前端开发 JavaScript Java
Java和JavaScript的应用场景有显著的不同
【4月更文挑战第8天】Java和JavaScript的应用场景有显著的不同
56 1
|
4月前
|
JavaScript 前端开发
JavaScript中有哪几种循环?他们的运用场景在哪?
JavaScript中有哪几种循环?他们的运用场景在哪?
|
2月前
|
前端开发 JavaScript UED
JavaScript 中的函数防抖与节流详解及实用场景
在前端开发中,处理用户频繁触发的事件,如输入框的输入、按钮点击、窗口调整大小等,常常需要优化性能以减少无效操作。为此,函数防抖(debounce)和函数节流(throttle)是两种常见的性能优化手段。本文将详细介绍两者的区别与实现,并探讨它们的应用场景。
42 1
|
24天前
|
分布式计算 JavaScript 前端开发
在 JavaScript 中,哪些场景需要考虑精度控制?
【10月更文挑战第29天】JavaScript在上述各种场景中都需要根据具体的业务需求和数据特点,合理地进行精度控制,以确保计算结果的准确性和可靠性,从而为用户提供正确、稳定的服务和体验。
|
3月前
|
自然语言处理 JavaScript 前端开发
JS中this的应用场景,再了解下apply、call和bind!
该文章深入探讨了JavaScript中`this`关键字的多种应用场景,并详细解释了`apply`、`call`和`bind`这三个函数方法的使用技巧和差异。
|
4月前
|
存储 JavaScript 前端开发
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
JavaScript——对闭包的看法,为什么要用闭包?说一下闭包原理以及应用场景
40 0
|
6月前
|
安全 JavaScript
旋转木马轮播图 html+css+js
旋转木马轮播图 html+css+js
|
5月前
|
JavaScript 前端开发 物联网
Node.js一般在什么场景下使用?
Node.js是一个基于Chrome V8 JavaScript引擎构建的开源运行时环境,它允许开发者使用JavaScript在服务器端运行代码。Node.js具有高性能、轻量级、事件驱动和非阻塞I/O等特性,这些特性使得它在多种场景下具有广泛的应用。
47 0
|
5月前
|
JavaScript API 索引
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
JS【详解】Set 集合 (含 Set 集合和 Array 数组的区别,Set 的 API,Set 与 Array 的性能对比,Set 的应用场景)
72 0
|
5月前
|
JSON JavaScript API
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
111 0