zoukankan      html  css  js  c++  java
  • 微信小程序中写threejs系列之 threejs-miniprogram

    我们大家都知道要在浏览器中写 WebGL 会用到 threejs 这个库,这个库提供了很多好用的属性,实话说,如果没有计算机图形知识的人而言,刚开始接触这个库的时候,确实很多概念都很难理解,我刚开始就是这样。
    我大概学 threejs 花了三个阶段:
    第一个阶段:不求甚解,这个阶段完全就是看看实现的效果,看看里面的基本概念,但是啥都不了解
    第二个阶段:了解基本概念,这个阶段就是去弄懂里面大概的几个概念了,知道是怎么回事了,但是还是不知道怎么用
    第三个阶段:运用里面大部分的API,这个阶段,我基本上知道怎么用了,可以做一些简单的项目了
    后面还有灵活运用基于threejs开发工具这几个阶段还没到。
    既然我已经知道怎么用 threejs,正好现在微信小程序开始支持 WebGL 了,那我就直接到小程序里面开发了。
    刚开始开发的时候我就碰到了几个问题:

    1. threejs 会操作 DOM,但是小程序里面没有 DOM
    2. threejs 会绑定 window 对象,但是小程序里面没有 window

    网上对这一块有一些解决方案,有一个大佬自己开发了一个适配小程序的 threejs.miniprogram,基本上大部分的功能是都可以用的
    还有的人针对 小游戏 里面的 weapp-adapter 做了二次开发,主要是将浏览器中的 DOMwindow 对象进行模拟
    这两个方案毕竟都是民间的,得不到稳定的维护,后来我发现微信官方出了一个 threejs-miniprogram,官方出品的,把 threejs 里面的大部分功能适配过来了,但是也有很多不足的地方,比如 Controls 这一块没有适配过来,可能小程序上需要实现的 3D 效果不需要很多的原因吧

    使用方式:

    npm install --save threejs-miniprogram

    import {createScopedThreejs} from 'threejs-miniprogram'
    Page({
      onReady() {
        wx.createSelectorQuery()
          .select('#webgl')
          .node()
          .exec((res) => {
            const canvas = res[0].node
            // 创建一个与 canvas 绑定的 three.js
            const THREE = createScopedThreejs(canvas)
            // 传递并使用 THREE 变量
          })
      }
    })
    

    也要注意一点:threejs-miniprogram 适配的 Three.js 版本号为 0.108.0,如果需要修改只能自己动手了,还有就是里面的 Controls 估计也只能自己动手

  • 相关阅读:
    php中模拟多继承如何实现
    js进阶 12-4 jquery键盘事件如何使用
    php课程 3-12 带默认参数的函数怎么写
    android_线
    Cocos2d-x 文本渲染
    一张地图告诉你,只JavaScript不够!
    python 导入库问题
    Cocos2d-X字体
    R语言做文本挖掘 Part5情感分析
    Java存储区域——JVM札记<一个>
  • 原文地址:https://www.cnblogs.com/fws407296762/p/13952826.html
Copyright © 2011-2022 走看看