threejs零基础搭建3D可视化汽车展厅

前置知识(最下面有完整代码)

每个代码都有注释,零基础也能看懂
中文官方文档教程

创建项目

创建空文件夹

执行如下命令初始化package.json文件

npm init -y

安装threejs包

yarn add three

安装tween.js动画库,用于做动画
tweenjs文档

yarn add @tweenjs/tween.js

安装gui调试工具

lil-gui官方文档

yarn add lil-gui

使用parcel工具打包执行项目

官方网站

yarn global add parcel-bundler

根目录下创建src/index.html

这个链接的资料,点击下载到scr文件夹内部,它是个public文件夹,将其下载下来放到scr文件夹内部

初始化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>
  
</body>
</html>

package.json里面配置启动命令(后面的是启动文件路径)

增加type:module

{
   
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "type": "module",
  "main": "index.js",
  "scripts": {
   
    "dev": "parcel src/index.html",
    "build": "parcel build src/index.html"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
   
    "three": "^0.166.1"
  }
}

src下新建app.jsindex.html里面引入一下

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>My First Parcel App</title>
  <style>
    * {
   
      padding: 0;
      margin: 0;
    }
  </style>
</head>

<body>
  <script src="./app.js"></script>
</body>

</html>

使用yarn run dev启动项目

双击启动后的网址,查看页面

在这里插入图片描述

能访问到网页就说明配置正常

案例一(设置几何体及其材质)

案例代码

后续所有操作都在app.js内部写

一切物体都身处一个场景内,即使3D页面也是如此

// 引入three.js
import * as THREE from 'three'
// 引入轨道控制器
import {
    OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
// 引入材质纹理图片,用于设置正方体纹理
import pkq from './public/pkq1.jpg'
// 引入动画库插件
import TWEEN from '@tweenjs/tween.js'

// 全局变量
let scene, camera, renderer, controls, cube

// 初始化场景
function initScene () {
   
  // 创建场景
  scene = new THREE.Scene()
}

// 初始化相机
function initCamera () {
   
  // 参数一:夹角,参数二:宽高比,参数三:近裁剪面,参数四:远裁剪面
  camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)
  // 设置相机位置(x,y,z)
  // camera.position.set(0, 0, 10);
  // 也可以
  // camera.position.z = 10
  // 设置相机方向(指向的场景)
  camera.lookAt(scene.position)
}

// 初始化渲染器
function initWebGL () {
   
  // 设置渲染器
  renderer = new THREE.WebGLRenderer()
  // 设置渲染器的尺寸
  renderer.setSize(window.innerWidth, window.innerHeight)
  // 将渲染器添加到body
  document.body.appendChild(renderer.domElement)
}

// 添加坐标系
function initAxis () {
   
  // 参数一:场景,参数二:坐标系长度
  let axis = new THREE.AxesHelper(3)
  // 将坐标系添加到场景中
  scene.add(axis)
}

// 添加轨道控制器(可以滑动屏幕和缩放屏幕)
function initTrackballControls () {
   
  // 参数一:相机,参数二:渲染器
  let trackballControls = new OrbitControls(camera, renderer.domElement)
  // 添加控制器
  scene.add(trackballControls)
}

// 创建立方体
function initCube () {
   
  // 创建几何体形状
  let geometry = new THREE.BoxGeometry(1, 1, 1)
  // 设置图片纹理
  let texture = new THREE.TextureLoader().load(pkq)
  // 创建材质颜色
  let material = new THREE.MeshBasicMaterial({
   
    color: 'yellow',
    map: texture
  })
  // 创建网格
  cube = new THREE.Mesh(geometry, material)
  // 将网格添加到场景中
  scene.add(cube)
}

// 主函数
function main () 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧寂173

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值