vue中使用threejs注意事项

最近在vue项目中使用threejs一下都是踩过的雷点

## 卡顿问题

在vue中three.js的相机,场景,渲染器,控制器,都不能放在data中,否则会导致项目运行使用出来后很卡

```

//将以上的东西放在mounted中创建,前面加上this.也是全局变量

mounted() {

    this.scene = null

    this.renderer = null

    this.camera = null

    this.controls = null

    this.init()

  },

  //后续还要在beforeDestory中进行销毁

  beforeDestroy() {

    this.scene = null

    this.renderer = null

    this.camera = null

    this.controls = null

  }

```

##  threebsp

通过npm 安装threebsp库后发现每次运行都会报错,尝试自己把threebsp的代码复制进来后导出,也是一样的报错.[后来通过这个安装旧版本的方法解决](https://www.jianshu.com/p/53a3aaefb297).

## 纹理贴图

在使用TextureLoader纹理贴图的方法时不能直接.load(url),这样无法url路径的图片渲染

```

//使用require方法请求到路径.在放到.load方法里

const Texturing = require('../../../public/static/images/floor.jpg')

    const loader = new THREE.TextureLoader()

    loader.load(Texturing, (texture) => {

        texture.wrapS = texture.wrapT = THREE.RepeatWrapping

        texture.repeat.set(10, 10);

        const floorGeometry = new THREE.BoxGeometry(floorWidth,floorHeight,floorDepth)

        const floorMaterial = new THREE.MeshBasicMaterial({

            map: texture,

        });

        const floor = new THREE.Mesh(floorGeometry, floorMaterial)

        floor.rotation.x = -Math.PI / 2

        floor.name = "地面";

        scene.add(floor);

    })

```

但后续创建天空盒需要把图片路径以数组的方式放进去,无法解决,导致天空盒内部无法渲染图片,尚未解决.

(有需要的可以看一下我的项目)

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Three.js是一个跨浏览器的脚本,使用JavaScript函数库或API来在网页浏览器中创建和展示动画的三维计...
    _Giovanni阅读 2,632评论 1 0
  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 8,367评论 0 22
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,550评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,602评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,760评论 1 1