vue使用three.js并导入.obj模型

2023-11-11

//下载three.js等依赖
npm install three.js
	//data下面定义的
     canvasDom: null,
     renderer: null,
     scene: null,
     camera: null,
     controls: null,
//在需要用到three.js模型渲染的界面导入
import * as THREE from 'three'
//three.js控制器引入
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"

import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
//初始化场景并将obj模型初始化
 initThree () {
      //创建场景
      this.scene = new THREE.Scene();
      //创建相机
      this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)
      this.camera.position.set(0, 2, 6)
      //创建渲染器
      this.renderer = new THREE.WebGLRenderer({
        //抗锯齿
        antialias: true,
      })

      this.renderer.setSize(window.innerWidth / 3, window.innerHeight / 2)

      console.log(window.innerWidth / 3, window.innerHeight / 2, "这是用来测试three.js场景的宽高")


      console.log(this.renderer, 'biubiubiubiubiubibu')

      //把渲染器插入到dom中
      this.$refs.canvasDom.appendChild(this.renderer.domElement)

      //初始化渲染器,渲染背景
      this.renderer.setClearColor("#000");
      this.scene.background = new THREE.Color("#ccc");
      this.scene.environment = new THREE.Color("#ccc");

      this.render()

      //添加网格地面
      const gridHelper = new THREE.GridHelper(10, 10);
      gridHelper.material.opacity = 0.2;
      gridHelper.material.transparent = true;
      this.scene.add(gridHelper)

      //添加控制器

      this.controls = new OrbitControls(this.camera, this.renderer.domElement)
      this.controls.update()


      const loader = new OBJLoader();

      loader.load("./model/test.obj", (gltf) => {
        console.log(gltf, "------我是3D的模型")
        this.scene.add(gltf)
      }, (xhr) => {
        console.log((xhr.loaded / xhr.total * 100) + '% loaded');
      }, (error) => {
        console.log('An error happened');
      })

    },

    render () {
      this.renderer.render(this.scene, this.camera);
      this.controls && this.controls.update();
      requestAnimationFrame(this.render);
    }
//mounted的生命周期添加
 mounted () {
    //初始化three.js
    this.initThree()
  }

参考教程:https://www.bilibili.com/video/BV1Gg411X7FY?p=44&vd_source=4716b12357fe8e4b33b293b4bbbbfcd8

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue使用three.js并导入.obj模型 的相关文章

随机推荐

  • 浏览器(Microsoft Edge)主页被360劫持的终极解决办法

    今天开启Microsoft Edge发现主页变成了360搜索的主页 心里很膈应 我的电脑里没有安装任何360的软件 不知道是怎么被改动了 可能是装其他软件时被篡改了 尝试一 更改edge浏览器的设置 即使设置了打开特定网址 再次打开依然是3
  • 笔记本电脑亮度突然无法用快捷键调节

    重装系统后 笔记本的亮度无法调节始终为最高亮度 一度以为是系统问题 重装了显卡驱动也无效 该问题困扰了我半年之久 今天终于解决了 1 故障现象 笔记本的屏幕亮度无法调节 快捷键 失效 重装显卡驱动 无效 2 原因分析 这是因为电脑安装了某个
  • char和varchar简单比较

    区别 char varchar 最大长度 255字符 65535字符 长度设置 定长 变长 空间使用 浪费空间 节省空间 查找效率 较高 较低 解读varchar 20 字段最多存放20个字符 varchar 20 和varchar 200
  • 基于http协议的Web服务器

    原理 由HTTP客户端发起一个请求 建立一个到服务器指定端口 默认端口 80 的TCP连接 HTTP在此端口监听客户端发送过来的请求 一旦收到请求 服务器向客户端回复一个状态行 比如 HTTP 1 0 200 OK 和响应消息 HTTP协议
  • 微服务项目实战 - 电商平台 项目框架及多模块开发

    本项目会被分为多个文章去讲解实现 目录 1 项目简介 项目模式 1 B2B模式 B2B Business to Business 2 B2C 模式 B2C Business to Consumer 3 C2B模式 C2B Customert
  • 【Word】学习笔记|批量解决文档中公式编号不居中的问题

    1 问题描述 当你将一个Word中内容 包含公式 复制到另外一个Ward里 发现MathType公式编号未居中 如上图所示 如果你公式较少 可以参考官方教程解决 就是将段落 中文版式 文本对齐方式中设置为居中就行 官方解决方法 MathTy
  • 一个Chen系统的激活控制同步——MATLAB实现

    对于 C h e n Chen Chen系统 驱动系统定义为
  • Linux下lt8911exb调试总结

    调试lt8911exb花了两天时间 总结下 ic功能介绍 mipi转eDP http cn lontiumsemi com UploadFiles pdf LT8911EXB Product Brief pdf github下有驱动源码 可
  • c++11~c++20 -05-thread_local

    目录 一 thread local简介 二 示例 2 1 全局变量 2 2 局部变量 2 3 类对象 2 4 类成员变量 一 thread local简介 thread local变量是C 11新引入的一种存储类型 它会影响变量的存储周期
  • 深入了解Java队列接口

    队列接口 队列接口是 Java 集合框架的一个重要部分 它扩展了 Collection 接口 队列接口表示遵循 先进先出 FIFO 原则的元素集合 队列允许存储重复值 队列的基本特征是元素按特定顺序存储 类似于等待轮流的人群 主要通过添加元
  • 服务器文件怎么删,怎么删除服务器文件

    怎么删除服务器文件 内容精选 换一换 执行chmod R 777 导致CentOS云服务器根目录权限设置成777 系统中的大部分服务以及命令无法使用 此时可通过系统自带的getfacl命令来拷贝和还原系统权限 本节操作介绍误操作导致根目录设
  • Android 12应用适配指南

    Android 12应用适配指南 1 Android 12上的主要变更 1 1 兼容性 1 1 1 前台服务启动限制 1 1 2 前台服务通知延迟 1 1 3 待处理 intent 必须声明可变性 1 1 4 非SDK接口名单更新 1 2
  • vue 通过逻辑控制el-dropdown组件展开和收起

    el dropdown在element ui中应用场景并不少 有些时候 我们下拉的内容并不是他本来的选项 用户选择后就没有关闭 这个时候 就需要我们在逻辑层开启或关闭他的菜单
  • 通过JVM深入理解Java异常机制

    JVM内部结构 要深入理解JVM异常处理机制 需要从JVM内部结构开始 下图描述的主要是Java程序在执行时 由JVM管理的运行时数据区 包括方法区 Java堆 Java虚拟机栈 PC寄存器 本地方法栈 还有常量池 它们又被分为两大类 线程
  • matlab-基础 plot xlabel 图像加上x,y轴的标签

    2019独角兽企业重金招聘Python工程师标准 gt gt gt matlab R2018a 64bit OS Windows 10 x64typesetting Markdown blog my oschina net zhicheng
  • 2014百度校招笔试题之动态链接库&静态链接库详解

    1 什么是静态连接库 什么是动态链接库 静态链接库用通俗的话讲 静态库就是将代码编译到一个二进制文件下 通常扩展名为 LIB 然后客户端调用程序 只需要包含相关的 h文件及LIB库文件一起链接到exe文件中 可执行程序发布后 不再需要该 l
  • cookie默认有效期多长_惊艳面试官的 Cookie 介绍

    关注在看 以后更多干货分享在头条 Cookie 是什么 Cookie 是用户浏览器保存在本地的一小块数据 它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上 Cookie 主要用于以下三个方面 会话状态管理 如用户登录状态 购物
  • 亲测GO环境搭建,理解go build、go install、go get

    前言 秉承着作为一个新人 要有着 指哪打哪 的觉悟 在老大的需求下 顶上前端的空缺先干阵子前端 当然 在工作之余还是要好好朝着既定的方向努力的 实习结束后还了电脑 这次毕业再来换了新Mac 重新搭下Go的环境 顺便好好总结下 以后随着学习的
  • VMware虚拟机安装教程

    虚拟机 Virtual Machine 是通过软件模拟的完整计算机系统 在实体计算机中能够完成的工作在虚拟机中都能够实现 在计算机中创建虚拟机时 需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量 每个虚拟机都有独立的CMOS 硬盘
  • vue使用three.js并导入.obj模型

    下载three js等依赖 npm install three js data下面定义的 canvasDom null renderer null scene null camera null controls null 在需要用到thre