微信小程序实现FBX模型的动画加载

鉴于有CSDN友问我FBX模型在小程序端加载的问题,我就在这里给大家介绍一下吧~
首先,加载fbx模型,我们用到的是three.js和不同的模型类型的加载库,那么,我们在得到了web版本的加载库的前提下,怎么使其用到小程序里面呢?
首先要知道,如下几点:
1:小程序运行的环境是微信APP,不是浏览器,所以dom等不可以直接使用,那么在将动画渲染到哪里方面,就需要使用如下函数:

wx.createSelectorQuery()
    .select('#myCanvas')
    .node()
    .exec((res) => {
      const canvas = res[0].node
      const THREE = createScopedThreejs(canvas)           
      fbxModelLoadPig(canvas, animationUrl, THREE, start)      
    })  

2:fbxModelLoadPig函数就是加载动画的函数,其中,系统的wx.getSystemInfoSync().windowWidth也需要替换
3:在three.js方面,要引入小程序版本的three.js,因为小程序没有XMLRequestHttp对象,所以小程序的three.js也需要改版,不过这个官方已经提供给我们了,直接用就好。
4: 调用loader.load方法时,要改一个压缩库文件inflate.min.js,主要是小程序不支持BOM,所以使用这个库文件时,里面的this指向需要更改,最开始报错很奇怪,知道最后深入到库文件中,才发现是这个问题,所以遇到bug别着急,一步一步找,总会发现端倪的。

var loader = new THREE.FBXLoader();
loader.load(

5:其他的就基本小问题啦,可以自己解决
改版的代码在这里:
点击获取
使用说明:

import {fbxModelLoadPig} from "../../utils/model.js";//路径自己设,这个是我的
import { createScopedThreejs } from '../../utils/three/three_new.js'//路径自己设,这个是我的
onReady: function() {   
    var start = Date.now();
    wx.createSelectorQuery()
    .select('#myCanvas')
    .node()
    .exec((res) => {
      const canvas = res[0].node
      const THREE = createScopedThreejs(canvas)           
      fbxModelLoadPig(canvas, animationUrl, THREE, start)      
    })  
  },
  fbxModelLoadPig参数说明:
  canvas就是createSelectorQuery获取的节点
  animationUrl就是fbx文件的网络链接
  THREE就是利用小程序版本的three.js生成的一个值
  start是我为了测试函数运行时间的,朋友们在使用的时候,可以不传,但是不要忘记更新我的fbxModelLoadPig定义,删除函数体内的start应用

我这边的代码文件目录如下,大家参考相对位置,上面的代码在pages/index/index.js中,pages和utils是同一层目录
微信小程序实现FBX模型的动画加载_第1张图片

你可能感兴趣的:(微信小程序)