⚡初识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的首选引擎!

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

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

相关文章
|
前端开发 JavaScript Java
Java和JavaScript的应用场景有显著的不同
【4月更文挑战第8天】Java和JavaScript的应用场景有显著的不同
245 1
|
1月前
|
前端开发 JavaScript API
js实现promise常用场景使用示例
本文介绍JavaScript中Promise的6种常用场景:异步请求、定时器封装、并行执行、竞速操作、任务队列及与async/await结合使用,通过实用示例展示如何优雅处理异步逻辑,避免回调地狱,提升代码可读性与维护性。
214 10
|
JavaScript 前端开发
JavaScript中有哪几种循环?他们的运用场景在哪?
JavaScript中有哪几种循环?他们的运用场景在哪?
|
8月前
|
缓存 自然语言处理 JavaScript
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
11月前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
150 3
|
前端开发 JavaScript UED
JavaScript 中的函数防抖与节流详解及实用场景
在前端开发中,处理用户频繁触发的事件,如输入框的输入、按钮点击、窗口调整大小等,常常需要优化性能以减少无效操作。为此,函数防抖(debounce)和函数节流(throttle)是两种常见的性能优化手段。本文将详细介绍两者的区别与实现,并探讨它们的应用场景。
596 1
|
自然语言处理 JavaScript 前端开发
JS中this的应用场景,再了解下apply、call和bind!
该文章深入探讨了JavaScript中`this`关键字的多种应用场景,并详细解释了`apply`、`call`和`bind`这三个函数方法的使用技巧和差异。
|
安全 JavaScript
旋转木马轮播图 html+css+js
旋转木马轮播图 html+css+js

热门文章

最新文章