踩坑:vue使用three.js中CubeTextureLoader()加载图片不能直接使用load()路径获取,如.load( [ ‘…/…/img/posx.jpg’, ] )。。

。需要先require(’…/assets/xxxxx’)

<template><div id="blocker" style="height: 100%"  ><div id="container" ref="ray"></div></div>
</template><script>import * as Three from '../../node_modules/three/build/three.module.js';//import * as Three from 'three'import {OrbitControls} from 'three/examples/jsm/controls/OrbitControls'import { PointerLockControls } from 'three/examples/jsm/controls/PointerLockControls.js';import {OBJLoader} from 'three/examples/jsm/loaders/OBJLoader.js'export default {name: 'ThreeTest',data() {return {camera: null,scene: null,renderer: null,mesh: null,controls:"",intersections:null,objects : [],clock:"",moveForward:false,moveLeft:false,moveBackward:false,moveRightInit:false,direction : new Three.Vector3(),velocity : new Three.Vector3(),prevTime : performance.now(),group:"",posx:require('../assets/img/posx.jpg'),negx:require('../assets/img/negx.jpg'),posy:require('../assets/img/posy.jpg'),negy:require('../assets/img/negy.jpg'),posz:require('../assets/img/posz.jpg'),negz:require('../assets/img/negz.jpg')}},methods: {init() {this.initScene()//场景对象this.initCamera()//相机this.initWebGLRenderer()//渲染器this.initAxisHelper()//辅助坐标this.render()this.createControls()//控件对象},创建场景对象SceneinitScene(){let that=thisthat.scene = new Three.Scene();// 默认您已经创建了相机和渲染器,就直接在场景上加入背景就行that.scene.background = new Three.CubeTextureLoader().load( [ that.posx, that.negx, that.posy, that.negy, that.posz, that.negz ] );//添加天空盒子背景图},相机initCamera(){let container = document.getElementById('container');this.camera = new Three.PerspectiveCamera(60, container.clientWidth/container.clientHeight, 1, 1000);this.camera.position.set(292, 109, 268);//设置相机位置this.camera.lookAt(this.scene.position); //设置相机方向(指向的场景对象)//this.scene.fog = new Three.Fog(0x43CD80, 1, 10);},// 网格initGrid() {let gridHelper = new Three.GridHelper(2, 50, 0xff00ff, 0x808080);this.scene.add(gridHelper);},//创建渲染器对象initWebGLRenderer(){this.renderer = new Three.WebGLRenderer({antialias: true});this.renderer.setSize(container.clientWidth, container.clientHeight);//设置渲染区域尺寸//this.renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色container.appendChild(this.renderer.domElement);//body元素中插入canvas对象},//辅助三维坐标系AxisHelperinitAxisHelper(){this.axisHelper = new Three.AxisHelper(250);this.scene.add(this.axisHelper);},render:function(){let that=this//this.mesh.rotation.x+=0.01requestAnimationFrame(that.render); //请求再次执行渲染函数renderthat.renderer.render(that.scene,that.camera);//执行渲染操作},// 创建控件对象createControls () {this.controls = new OrbitControls(this.camera,this.renderer.domElement)}},mounted() {this.init();this.render();}}
</script>
<style scoped>#container {width: 100%;height: 100%;}#blocker {position: absolute;margin: 0;padding: 0;width: 100%;height: 100%;background-color: rgba(0,0,0,0.5);}
</style>

Vue中Three.js的天空盒相关推荐

  1. Vue中的Js动画与Velocity.js 的结合

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  2. vue中通过js加载图片显现

    在vue开发中会遇到这样的问题:有时需要在img中加载多个静态资源的图片,如果我们将src的路径整个定义成一个变量,会发现img加载不出来正个图片的路径,其实此时需要require()来加载静态资源的 ...

  3. Vue中向js中传递参数并在js中定义对象并转换参数

    场景 有下面这种主从表结构 上面的信息是主表的信息,下面是从表的信息. 在Vue中将页面的信息传递到js的方法中,在js方法中将参数进行转换使其与后台接收的参数相匹配. 注: 博客: https:// ...

  4. vue中使用js进行AES加密及解密(含密钥和iv偏移量)、以及HMAC-SHA256加密方法对于签名加密的使用

    一.AES加密解密 1.下载安装 npm install crypto-js --save-dev 2.在utils文件夹下创建encryp.js文件进行aes加密解密工具类方法的封装 import ...

  5. js 获取vue组件html_关于Vue中main.js,App.vue,index.html之间关系进行总结

    在初始化的Vue项目中,我们最先接触到的就是main.js,App.vue,index.html这三个文件,我们从培训视频或者官方文档上可以了解到: index.html---主页,项目入口 App. ...

  6. 浅析vue中wavesurfer.js的Minimap插件的使用

    前言:vue中嵌入使用wavesurfer.js的教程详见:https://blog.csdn.net/zrcj0706/article/details/104635357 1.Minimap插件的使 ...

  7. vue中引入js,然后new js里的方法

    阿里云Web播放器Web端使用SDK说明:https://help.aliyun.com/document_detail/51991.html?spm=5176.11065259.1996646101 ...

  8. Vue中Share.js分享组件

    Share.js是一款一键转发工具,它可以一键分享到新浪微博.微信.QQ空间.QQ好友.腾讯微博.豆瓣.Facebook组件.Twitter.Linkedin.Google+.点点等社交网站,使用字体 ...

  9. vue中通过js控制页面样式方法

    在使用vue.js框架的时候,有时候会希望在页面渲染完成之后,再执行函数方法来处理初始化相关的操作,如果只处理页面位置.宽或者高时,必须要在页面完全渲染之后才可以,页面没有加载完成之前,获取到的宽高不 ...

最新文章

  1. Android 获取apk签名的fingerprint
  2. Windows10 家庭版没有本地组策略解决方法
  3. Java的this、super和final关键字
  4. vuls漏洞扫描工具
  5. Flutter布局锦囊---蜡笔画的表单
  6. com.mysql.cj.jdbc.Driver这个驱动类
  7. Wpf ScrollBar自定义样式
  8. 三读《UNIX编程艺术》——UNIX哲学
  9. TeamViewer在windows2003上如何免费使用
  10. android自动悬浮窗代码,三行代码实现Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商...
  11. python实现英文新闻摘要自动提取_“关键字”法完成新闻摘要提取
  12. 基于OCCT7.4的实验性CAD程序
  13. 使用 Cloudflare 进行域名跳转(重定向)
  14. 【电路第八章】相量法
  15. (Scikit-Learn)线性回归 基函数的含义详解
  16. 区块链PoP(Proof of Peer)共识介绍
  17. 【Multisim仿真】二极管钳位电路仿真
  18. git将分支合并到主分支
  19. 数学建模算法与应用【BP神经网络算法】
  20. 读取文件路径中的图片

热门文章

  1. Swift - 05 - 数值型字面量
  2. ajax前台值传到后台
  3. 关于static继承的问题
  4. C语言中的static
  5. zabbix监控tomcat服务
  6. centos shell 编程-通过端口号kill对应的进程
  7. 免密码自动登录远程服务器脚本
  8. 【C】输出乘法口诀表
  9. composer 下载包慢的解决方法
  10. 安装RabbitMq启动运行出现服务无法启动 发生系统错误1067解决方案