vue three.js基本案例解析

1.安装依赖

javascript 复制代码
// 比如安装148版本
npm install three@0.148.0 --save

2.使用页面引用

javascript 复制代码
import * as THREE from 'three';
// 引入扩展库OrbitControls.js
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// 引入扩展库GLTFLoader.js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';

3.实例说明代码

javascript 复制代码
export default {
  name: 'App',
  data() {
    return {
      vn: 1,
      scene: '',
      geometry: '',
      material: '',
      mesh: '',
      camera: '',
      controls:'',
      renderer:''
    }
  },
  mounted() {
    this.scene = new THREE.Scene();
    this.geometry = new THREE.BoxGeometry(100, 100, 100);
    //创建一个材质对象Material
    this.material = new THREE.MeshBasicMaterial({
      color: 0xff0000,//0xff0000设置材质颜色为红色
    });
    // 两个参数分别为几何体geometry、材质material
    const mesh = new THREE.Mesh(this.geometry, this.material); //网格模型对象Mesh
    //设置网格模型在三维空间中的位置坐标,默认是坐标原点
    mesh.position.set(0, 10, 0);
    this.scene.add(mesh)

    // 实例化一个透视投影相机对象
    const aspect = window.innerWidth / window.innerHeight;
    const camera = new THREE.PerspectiveCamera(75, aspect, 0.1, 1000);
    //相机在Three.js三维坐标系中的位置
    // 根据需要设置相机位置具体值
    camera.position.set(200, 200, 200);
    camera.lookAt(mesh.position);//指向mesh对应的位置
    this.camera = camera
    // 创建渲染器对象
    const renderer =new THREE.WebGLRenderer({ antialias: true });
    renderer.setSize(window.innerWidth, window.innerHeight);
    this.renderer=renderer
    document.body.appendChild(renderer.domElement);
    // 设置相机控件轨道控制器OrbitControls
    this.controls = new OrbitControls(camera, renderer.domElement);
    this.animate();
    console.log("记载")
  },
  methods:{
    animate(){
      requestAnimationFrame(this.animate.bind(this));
    this.controls.update();
    this.renderer.render(this.scene, this.camera);
    }
  }
}
</script>

效果图

相关推荐
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
言乐62 小时前
通过 3D 动画直观演示球形瓶内可滑动半圆机构在倾倒时防粘盖、回正时刮膏体的运动学过程
python·3d·django·virtualenv·pygame
晗夜未央3 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
jktantan4 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
我命由我123455 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
程序员大阳5 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
苏州福兰克6 小时前
没有3D内容,裸眼3D显示器还能用吗?
3d·计算机外设
paopaokaka_luck7 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
栀椩7 小时前
Electron 内嵌页面跨域问题(CORS/PNA)解决全记录
前端·javascript·electron
SEO_juper7 小时前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome