返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue2.x引入threejs的实例代码
  • 804
分享到

vue2.x引入threejs的实例代码

2024-04-02 19:04:59 804人浏览 安东尼
摘要

目录Vue2.x引入threejsnpm安装使用指定版本:其他插件实例强调vue2.x引入threejs npm安装 npm install three 使用指定版本: npm in

vue2.x引入threejs

npm安装

npm install three

使用指定版本:

npm install three@<版本号>

其他插件

因为本次开发需要引入3D模型,所以需要使用 MTLLoader, OBJLoader两种加载器,因为开发需求和
版本问题, 最新版本自带的加载器不能实现需求,所以需要额外引入three-obj-mtl-loader插件,并且threejs版本需要退到122版本;

npm安装three-obj-mtl-loader

npm install three-obj-mtl-loader --save

实例

//-- html部分 -- 开始 --
<div class="three_box" id="container">
</div>
//-- html部分 -- 结束 --

import * as THREE from 'three';
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 控制器-控制相机运行轨道
import { MTLLoader, OBJLoader } from 'three-obj-mtl-loader' //项目中使用到.obj文件和.mtl文件,故引入

mounted() {
	let width = 1053	// dom宽度
	let height = 473	// dom高度
	
	this.scene = new THREE.Scene()// 运行创建场景函数
	let mtlLoader = new MTLLoader() //创建MTLLoader实例
	let objLoader = new OBJLoader() //创建OBJLoader实例
	let k = width / height	// 宽高比
	let camera = new THREE.PerspectiveCamera( 60, k, 1, 2000) //创建相机,这个相机模拟人眼所看到的景象,近大远小没参数分别为:
	//fov — 摄像机视锥体垂直视野角度
	//aspect — 摄像机视锥体长宽比
	//near — 摄像机视锥体近端面
	//far — 摄像机视锥体远端面
	camera.position.set( -500, 300, 300 )//设置相机位置
	this.initDoor()//调用引入3D模型方法
	this.initcao() //调用几何图形方法
	//点光源
	let point = new THREE.PointLight(0xffffff)
	point.position.set(800, 800, 2000); //光源位置
	this.scene.add(point);  //光源添加进场景
	
	//环境光
	let ambient = new THREE.AmbientLight(0xffffff); //设置环境光
	this.scene.add(ambient)  //讲环境光加入场景
	this.renderer = new THREE.webGL1Renderer(); // 实例渲染器
	this.renderer.setSize( width, height) //渲染器宽高
	this.renderer.setClearColor(new THREE.Color('#07224e'), 1) //设置背景颜色
	setTimeout(() => {
	  document.getElementById('container').appendChild(this.renderer.domElement)//将渲染器添加进dom
	}, 500)
	this.animate()//调用动画效果
	this.controls = new OrbitControls(this.camera, this.renderer.domElement) //添加相机和渲染器到控制器,实现滑动
},
methods: {
	initcao() {
		let geometry = new THREE.BoxGeometry(3200, 1600, 8); //矩形平面
		let material = new THREE.MeshLambertMaterial({  // 配置样式,包括颜色 透明度等
			  color: new THREE.Color('#bcbfc6'),
			  transparent: true,
			  opacity: 0.3,
			  side: THREE.DoubleSide
		});
		let mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
		mesh.rotateX(-Math.PI / 2);
		this.scene.add(mesh); //网格模型添加到场景中
	},
	initDoor() {
		let that = this //后面回调会影响this指向
		let mtlLoader = new MTLLoader()
		let objLoader = new OBJLoader();
		mtlLoader.load('static/door.mtl', function( material) { //引入模型.mtl文件,是3D模型的贴图,如果不需要贴图可以不使用,模型会只有一个框架
		  material.preload();
		  objLoader.setMaterials(material)
		  objLoader.load('static/door.obj', //引入模型.obj文件
		      function( obj) {
		          obj.position.z = -188  //调整模型位置
		          obj.position.x = -265 //调整模型位置
		          obj.position.y = 10 //调整模型位置
		          obj.rotateY(Math.PI / 2) //调整模型角度
		          obj.scale.set( 20, 20, 20 ) //调整模型放大缩小倍数
		          that.scene.add(obj) //模型添加进场景
		      },
		  )
		})
	},
	animate() {
		//这里自己写点要对模型进行的操作
       this.renderer.render(this.scene, this.camera);
       requestAnimationFrame(this.animate) //这里按帧更新画面,大概一秒60次左右
         
     }, 
}

强调

如果在开发中需要引入3D模型,模型文件应放在与src文件同级的static下,引入方式应该是 'static/door.mtl'

如果在开发过程中出现threejs生成的canvas出现外边框,只需要用CSS样式修改,代码如下:

.three_box {
      width: 1053px;
       height: 473px;
       >>> canvas:focus-visible {
           outline: 0px
       }
   }

threejs官方文档

到此这篇关于vue2.x引入threejs的文章就介绍到这了,更多相关vue2.x引入threejs内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue2.x引入threejs的实例代码

本文链接: https://lsjlt.com/news/168570.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue2.x引入threejs的实例代码
    目录vue2.x引入threejsnpm安装使用指定版本:其他插件实例强调vue2.x引入threejs npm安装 npm install three 使用指定版本: npm in...
    99+
    2024-04-02
  • vue2.x中keep-alive源码解析(实例代码)
    目录一、前世尘缘二、keep-alive内置组件1.缓存动态组件2.缓存路由组件3.原理解析三、LRU算法一、前世尘缘 vue中内置组件keep-alive的设计思想源于HTTP中的...
    99+
    2023-02-14
    vue2.x keep-alive源码 vue keep-alive源码 vue2.x源码解析
  • threejs太阳光与阴影效果实例代码
    目录前言灯光与材质基础篇太阳光整体调用代码太阳光类初始化设置平行光信息Tween总结前言 这篇文章实现智慧城市中模拟太阳光随时间变化产生对应场景效果。为了场景能够更逼真,我们一般会通...
    99+
    2024-04-02
  • Vue2.x 项目性能优化之代码优化的实现
    目录1 v-if 和 v-show 的使用 2 computed 和 watch 区分使用 3 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 4 纯显示长...
    99+
    2024-04-02
  • RxJava2.x实现定时器的实例代码
    前言由于现在网络层已经升级到RxJava2.x相关的了,所以需要做些调整。虽然RxJava1.x和RxJava2.x同属RxJava系列,但由于RxJava2.x部分代码的重写,导致RxJava2.x与RxJava1.x已是两个不同的版本,...
    99+
    2023-05-31
    rxjava 定时器 ava
  • vue3引入highlight.js进行代码高亮的方法实例
    目录背景描述:一、安装依赖:二、在vue3主入口main文件,对highlight进行引入和注册:三、页面使用:四、看下效果展示吧:五、一些优化:1.问题2.解决方法3. 处理后的效...
    99+
    2024-04-02
  • SpringBoot2.x集成Dozer的示例代码
    目录一、引入依赖二、实体类三、编写配置文件四、创建测试类五、Dozer的基本使用代码示例Dozer是Java Bean到Java Bean的映射器,它以递归的方式将数据从一个对象复制...
    99+
    2024-04-02
  • Springboot2.3.x整合Canal的示例代码
    目录一、故事背景二、什么是Canal三、Canal安装(1)事前准备(1)数据库开启binlog(2)数据库新建账号,开启MySQL slav权限(2)Canal Admin 安装(...
    99+
    2024-04-02
  • Springboot2.x集成kafka2.2.0的示例代码
    目录引言基本环境代码编写1、基本引用pom2、基本配置3、实体类4、生产者端5、消费者6、测试效果展示遇到的问题引言 kafka近几年更新非常快,也可以看出kafka在企业中是用的频...
    99+
    2024-04-02
  • 详解SpringBoot缓存的实例代码(EhCache 2.x 篇)
    本篇介绍了SpringBoot 缓存(EhCache 2.x 篇),分享给大家,具体如下:SpringBoot 缓存在 spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),S...
    99+
    2023-05-31
    springboot ehcache hcache
  • 使用threejs实现第一人称视角的移动的问题(示例代码)
    在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生。今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能。如果你是一位three...
    99+
    2024-04-02
  • 基于nodejs+express4.X实现文件下载的实例代码
    之前写了一个关于基于nodejs+express4.X实现文件下载实例,最近需要回顾,就顺便发到随笔上了 在nodejs的express框架中,下载变得非常简单,就一个方法,res.download() ...
    99+
    2022-06-04
    实例 代码 文件
  • React + Threejs + Swiper 实现全景图效果的完整代码
      咱先看看全景图实现效果:展示地址   截图:   体验了一下是不是感觉周围环境转了一圈,感觉世界是圆的?...
    99+
    2024-04-02
  • vue3.x中apollo的使用案例代码
    目录通过客户端获取Apollo配置环境工具的安装获取Apollo配置相关代码错误提示通过开放接口获取Apollo配置通过不带缓存的Http接口从Apollo读取配置参数说明浏览器方式...
    99+
    2023-02-23
    vue apollo使用 apollo使用
  • vue3中unplugin-auto-import自动引入示例代码
    目录1、安装2、在vite.config.ts中引入补充:unplugin-auto-import自动导入TS2304警告问题1.前置配置2. TS23043.解决方案总结vue3日...
    99+
    2023-02-07
    vue3 unplugin-auto-import vue unplugin-auto-import
  • Echarts实现一张图现切换不同的X轴(实例代码)
    效果图 如果大家想实现如下图的效果那么久继续往下看吧,直接上动图! 方法 因为项目需要展示的数据图表比较多我选择的是把每一张图表封装成一个vue组件来引用。 先上一个完整的代码,引...
    99+
    2024-04-02
  • python入门代码实例分析
    这篇文章主要介绍“python入门代码实例分析”,在日常操作中,相信很多人在python入门代码实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python入门代码实例...
    99+
    2024-04-02
  • javascript入门实例代码分析
    这篇文章主要介绍“javascript入门实例代码分析”,在日常操作中,相信很多人在javascript入门实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2024-04-02
  • Rollup入门实例代码分析
    这篇文章主要介绍了Rollup入门实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Rollup入门实例代码分析文章都会有所收获,下面我们一起来看看吧。Rollup介绍及使用1、Rollup 概述仅仅是...
    99+
    2023-07-05
  • Android 软引用和弱引用详解及实例代码
    Android 软引用 和 弱引用        1.  SoftReference<T>:...
    99+
    2022-06-06
    Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作