Three.js一学就会系列:01 第一个3D网站
创始人
2024-03-22 22:03:19
0

文章目录

  • 前言
  • 一、Three.js是什么?
    • 官网
    • 官网示例效果尝鲜
  • 二、使用步骤
    • 1.引入three.js库
    • 2.使用方法
      • 创建一个场景
      • 创建一个透视摄像机
      • 将渲染器添加到页面上
      • 创建一个立方体
      • 渲染场景
      • 立方体动起来
  • 效果
  • 总结


前言

最近开始入坑前端3D建站,跟大家一起慢慢深入three.js做网站3D


一、Three.js是什么?

官网

https://threejs.org/

three.js是JavaScript编写的WebGL第三方库。提供了非常多的3D显示功能。

官网示例效果尝鲜

请添加图片描述

二、使用步骤

1.引入three.js库

在线库


离线可以去官网https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene
下载复制到项目所在的目录下
在这里插入图片描述


2.使用方法

创建一个场景

const scene = new THREE.Scene();

创建一个透视摄像机

const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
camera.position.z = 5;

参数:视野角度(FOV)、长宽比(aspect ratio)、近截面(near)和远截面(far)
camera.position.z:透视摄像机位置

将渲染器添加到页面上

const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

创建一个立方体

const geometry = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );

BoxGeometry:立方体,参数为所有顶点和面
MeshBasicMaterial:材质,将应用到对象上,color设置了对象的颜色
Mesh:网格,几何体和几何体材质,作用
scene.add:添加到场景上

渲染场景

function animate() {requestAnimationFrame( animate );renderer.render( scene, camera );
}
animate();

requestAnimationFrame有很多的优点。最重要的一点或许就是当用户切换到其它的标签页时,它会暂停,因此不会浪费用户宝贵的处理器资源,也不会损耗电池的使用寿命。

立方体动起来

function animate() {requestAnimationFrame( animate );// 旋转方向,及大小cube.rotation.x += 0.01;cube.rotation.y += 0.01;renderer.render( scene, camera );
};animate();

完整代码(实例)

My first three.js app


效果

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了three.js的使用,而three.js提供了非常多的3D显示功能,后续文章,我将带大家慢慢深入了解。

如果觉得有用欢迎点赞关注
有问题私信我!!~~

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...