如何用前端做出3D页面

如何用前端做出3D页面

在偶然一次玩游戏过程时产生疑问"这款游戏看起来是3D,实则是2D仿3D,那么它到底是运用了什么样的技术?",前端能实现3D效果吗?

就在我查阅资料的时候发现了用于在Web浏览器上实时渲染3D图形的技术是WebGL。

继而我又发现了一个好东西,没错就是今天的主角three.js,接下来是three.js引入vue以及实现一个简单的3D页面教程

官方文档在这里:http://www.webgl3d.cn/

引入three.js

1.安装threejs

npm命令行安装threejs

// 比如安装148版本

npm install three@0.148.0 --save

2.以ES6 import方式引入引入threejs

npm安装后,如何引入three.js其他扩展库

一般来说,你项目用到那个扩展库,就引入那个,用不到就不需要引入。

在需要使用three.js的页面中进行引入

<script type="module">
// 现在浏览器支持ES6语法,自然包括import方式引入js文件
import * as THREE from 'three';
</script>

//随便输入一个API,测试下是否已经正常引入three.js

console.log(THREE.Scene);

认识场景Scene、相机Camera、渲染器Renderer三个基本概念

官网上说的很详细大家可以自行观看,接下来我将为大家展示代码并解释部分官网没有解释但重要的东西

第一个3D案例

<script type="module">

// 创建3D场景对象Scene
const scene = new THREE.Scene();
// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 创建相机
const camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);
// camera.position.set(-1, -1, -1);
camera.position.z = 5;
//创建一个长方体几何对象Geometry
// const geometry = new THREE.BoxGeometry(100, 100, 100); 
const geometry = new THREE.BoxGeometry(1, 1, 1);
//创建一个材质对象Material
const material = new THREE.MeshBasicMaterial({ color: 0xFFFFFF });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 动画渲染循环
function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();
</script>
const camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);

其中参数的解释:

75:视场角(FOV),表示相机可视范围的角度,以度为单位。决定了相机可以看到多宽的范围。

window.innerWidth / window.innerHeight:相机的视口宽高比,即渲染输出的宽高比。在这个示例中,视口宽高比设置为窗口的宽度与高度之比,以确保内容不会被扭曲。

0.1:近剪切面(near)的距离,表示相机能够看到的最近物体的距离。在这个示例中,设置为 0.1,表示最近的物体在相机的前方 0.1 个单位距离之内可见。

1000:远剪切面(far)的距离,表示相机能够看到的最远物体的距离。在这个示例中,设置为 1000,表示最远的物体在相机的前方 1000 个单位距离之内可见。

至于初始的相机位置,默认情况下是 (0, 0, 0),即原点位置。你可以通过修改 camera.position.set() 或 camera.position.x/y/z 来改变相机的位置。

const geometry = new THREE.BoxGeometry(100, 100, 100); 

则是定义的长方形的空间位置

展示

在这里插入图片描述

展示的是一个立体的不断旋转的正方体

结尾

以上就是使用第三方库three.js使前端实现3D页面全部内容,感谢大家观看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值