使用Three.js开发一个3D案例Demo

使用Three.js开发一个3D案例

最近在找工作,发现好多招聘要求都需要会Three.js,以前接触比较多的是2D开发,也就是平面开发,用到的做多的技术就是d3.js,现在3D开发已经成为了大势所趋,所以就学习下Three.js。这是一个简单的demo。

工程目录结构

这是我的工程目录结构:

教程

第一步,准备一个空文件夹

创建一个空文件夹demo

第二步,npm初始化

在该文件夹下执行npm init,初始化工程。

第三步,安装three.js包

在项目根目录下执行下面命令:

bash 复制代码
npm install three@0.148.0 --save
第四步,敲代码环节

在根目录下创建index.html,然后跟着敲...

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="container"></div>
</body>
<script src="./node_modules/three/build/three.js"></script>

<script>
    const scene = new THREE.Scene()

    const geometry = new THREE.BoxGeometry(100, 100, 100)
    //创建一个材质对象Material
    const material = new THREE.MeshBasicMaterial({
        color: 0xff0000,//0xff0000设置材质颜色为红色
    });

    const mesh = new THREE.Mesh(geometry, material)  // 网格模型对象mesh

    mesh.position.set(0, 10, 0)
    scene.add(mesh)

    // 实例化一个透视投影相机对象
    const camera = new THREE.PerspectiveCamera()

    // 相机在Three.js三维坐标系中的位置
    camera.position.set(200, 200, 200)

    // 相机观察目标指向Three.js 3D空间中的某个位置
    camera.lookAt(0, 0, 0)  // 坐标原点

    camera.lookAt(0, 0, 0) // y轴上位置10

    camera.lookAt(mesh.position)  // 指向mesh对应的位置

    // 定义相机输出画布的尺寸(单位:像素px)
    const width = 600
    const height = 600

    // 30:视场角度, width/height: Canvas 画布宽高比, 1:近裁截面,3000:远裁截面
    // const camera = new THREE.PerspectiveCamera(20, width / height, 1, 3000)


    // 创建渲染器对象
    const renderer = new THREE.WebGLRenderer()

    // 设置 three.js 渲染区域的尺寸
    renderer.setSize(width, height)
    renderer.render(scene, camera)

    document.body.appendChild(renderer.domElement)

    document.getElementById('container').appendChild(renderer.domElement);

</script>

</html>
第五步,运行

创建本地静态服务器,在项目根目录下执行:

bash 复制代码
live-server

(PS:我这块用的是live-server,也可以用其它的,根据自己的环境来)

效果

来看看效果,创建的是一个长方体。

(PS: 我这块用的是live-server,也可以用其它的,根据自己的环境来)

总结

做过2D平面开发和有点数学基础的都知道,二维坐标系只有X轴,Y轴,3D开发就是比2D开发多了一个Z轴,使用三维坐标构建几何世界。还有就是把我们2D可视化的元素换成立体的几何元素,比如:矩形换成了长方体,圆换成了球体...还有圆锥体,圆柱体等。所以说,技术本身并不复杂,难的是对其技术本身的理解。

相关推荐
真滴book理喻15 分钟前
Vue(四)
前端·javascript·vue.js
程序员_三木39 分钟前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
开心工作室_kaic2 小时前
springboot476基于vue篮球联盟管理系统(论文+源码)_kaic
前端·javascript·vue.js
川石教育2 小时前
Vue前端开发-缓存优化
前端·javascript·vue.js·缓存·前端框架·vue·数据缓存
搏博2 小时前
使用Vue创建前后端分离项目的过程(前端部分)
前端·javascript·vue.js
温轻舟2 小时前
前端开发 之 12个鼠标交互特效上【附完整源码】
开发语言·前端·javascript·css·html·交互·温轻舟
web135085886352 小时前
2024-05-18 前端模块化开发——ESModule模块化
开发语言·前端·javascript
LCG元4 小时前
javascript页面设计案例【使用HTML、CSS和JavaScript创建一个基本的互动网页】
javascript
技术程序猿华锋4 小时前
Gemini 2.0 Flash 体验版实测:日常视觉识别的最佳选择,关键在于其API Key现在是免费调用
开发语言·javascript·ecmascript·googlecloud·gemini
TttHhhYy4 小时前
uniapp+vue开发app,蓝牙连接,蓝牙接收文件保存到手机特定文件夹,从手机特定目录(可自定义),读取文件内容,这篇首先说如何读取,手机目录如何寻找
开发语言·前端·javascript·vue.js·uni-app