logo 范 · 拾光录
网址收集 关于作者 Github Gitee
杂文随笔5
Hexo博客:基础使用Hexo博客:Next主题Hexo博客:Next进阶使用Hexo博客:Next高级配置基于Node的WIKI管理
前端知识16
HTML常用知识CSS常用知识CSS美化checkbox复选框JavaScript常用知识JavaScript格式化时间戳JavaScript窗口宽高处理JavaScript黑夜主题切换实现方案JavaScript数字转大写简易图片查看器TypeScript基础知识Threejs基础三要素Threejs网格辅助和轨道控制器Threejs物体绘制Electron基础使用Nodejs基础知识animate.css页面动画
Vue框架2
Vite的使用及扩展Vue3父子组件

网格辅助

GridHelper:用于显示网格辅助

const gridHelper = new THREE.GridHelper(30, 30, 0xff0000);
scene.add(gridHelper);

坐标辅助

// 坐标辅助,绿色Y轴,红色X轴,蓝色Z轴
const axesHelper = new THREE.AxesHelper(5);
scene.add(axesHelper);

轨道控制器

使用方式:

import { OrbitControls } from 'three/addons/controls/OrbitControls.js'
const controls = new OrbitControls(camera, renderer.domElement)

注意:最好配合动画函数,不然需要手动渲染

惯性

// 是否开启惯性
controls.enableDamping = true;
// 阻尼惯性有多大
controls.dampingFactor = 0.05;
// 是否自动旋转
controls.autoRotate = true
// 围绕目标旋转的速度
controls.autoRotateSpeed = 0.05
// 禁用缩放
controls.enableZoom = false
// 禁止拖动
controls.enablePan = false
// 禁止移动
controls.enableRotate = false

// 必须在动画循环里调用.update()
controls.update()

相机位置和视角切换

// 更新相机位置
new TWEEN.Tween(camera.position)
  .to(
    {
      x: cameraPosition[item * 6],
      y: cameraPosition[item * 6 + 1],
      z: cameraPosition[item * 6 + 2],
    },
    4000
  )
  .easing(TWEEN.Easing.Exponential.InOut)
  .start();
new TWEEN.Tween(controls.target)
  .to(
    {
      x: cameraPosition[current * 6 + 3],
      y: cameraPosition[current * 6 + 4],
      z: cameraPosition[current * 6 + 5],
    },
    4000
  )
  .easing(TWEEN.Easing.Exponential.InOut)
  .start();
网格辅助
坐标辅助
轨道控制器
惯性
相机位置和视角切换