threejs学习之一

2023-07-16  本文已影响0人  焚心123
npm init -y
npm install  parcel-bundler -D
npm install three -S
 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "parcel index.html",//运行当前的文件
    "build": "parcle build index.html"
  },

*当前我的目录都是同级,你也可以按照vue脚手架中的方式进行创建也可

import * as THREE from "three"
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"
// !初始化场景
const scene = new THREE.Scene()

// ! 相机(人的眼睛去发现去看去观察)//透视相机参数(视场角度,canvas宽高比,近裁截面,远裁界面)
const camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
)

// 设置相机位置
camera.position.set(0, 0, 5) //x,y,z坐标

// ! 创建物体
const geometry = new THREE.BoxGeometry(1, 1, 1) //长方体 球体SphereGeometry(50);等

// ! 给长方体或者几何体添加颜色等(添加网络材质)
const material = new THREE.MeshBasicMaterial({
  color: 0xff0000, //0xff0000设置材质颜色为红色
})

// ! 根据创建的物体和材质(颜色等)进行创建物体
const mesh = new THREE.Mesh(geometry, material)
//设置网格模型在三维空间中的位置坐标,默认是坐标原点

//! 将创建的物体添加到场景当中
scene.add(mesh)

// ! 初始化渲染器进行渲染
const renderer = new THREE.WebGLRenderer()

// 渲染器的尺寸
renderer.setSize(window.innerWidth, window.innerHeight)

// ! 将渲染器的数据添加到页面上
document.body.appendChild(renderer.domElement)
//动画的函数
function animate() {
  mesh.rotateY(0.01) //每次绕y轴旋转0.01弧度
  requestAnimationFrame(animate) //请求再次执行渲染函数render,渲染下一帧(用的api是window中的动画方法)

  // ! 使用渲染器通过相机将场景渲染进页面
  renderer.render(scene, camera)
}

animate()

// 控制器可对页面旋转的物体进行操作
const controls = new OrbitControls(camera, renderer.domElement)
上一篇下一篇

猜你喜欢

热点阅读