1、解决问题

uniapp 导入3d模型,在微信小程序端运行。只支持在微信小程序端使用,若要支持 h5 和 APP端,可以查看这篇,点击这里
只导入了3d模型,未设置让模型动。

2、导入模型格式

glb 格式

3、实现效果图

4、步骤

(1)首先文件
下载适配微信小程序的 three.js 地址:https://github.com/wechat-miniprogram/threejs-miniprogram

(2)导入文件
需要导入 three.js 和 gltf-loader.js 文件
从下载好的压缩包里复制目录 threejs-miniprogram-master\example\miniprogram_npm\threejs-miniprogram 的 [index.js] 文件
以及 threejs-miniprogram-master\example\loaders 里的 [gltf-loader.js] 文件

(3)代码

① 设置画布
② 引入 threejs-miniprogram 和 gltf-loader 文件
③ onReady 里获取webgl
④ 3d 初始化(设置相机、设置光照、导入3d模型 、render 渲染)
⑤ 设置动画

index.vue

<template>
<!-- 设置画布 -->
<canvas type="webgl" id="webgl" style='width:100%;height:250px;background-color:rgb(255, 255, 255,1); margin: aotu 0;'>
</canvas></template><!-- 只能在微信小程序端运行 -->
<script>// 引入文件夹import {createScopedThreejs} from '../../wxcomponents/miniprogram_npm/threejs-miniprogram'// 引入文件import {registerGLTFLoader} from '../../wxcomponents/loaders/gltf-loader'let app = getApp();let canvaWidth = 0; //画布宽let canvaHeight = 0; //画布高let canvas, THREE; //3d相关let camera, scene, renderer, model; //定义变量: 摄像机(camera) 场景(scene) 渲染器(renderer) 模型(model)let pagestatus = 0; //函数返回export default {data() {return {}},onLoad() {},onReady() {//在小程序使用// #ifndef   APP||H5 //获取webgluni.createSelectorQuery().select('#webgl').node().exec((res) => {canvas = res[0].node;THREE = createScopedThreejs(canvas);canvaWidth = 600;canvaHeight = 400;this.initCanva(canvas);})// #endif },methods: {/*** 3d 初始化* @param {*} canvas */initCanva: function(canvas) {let that = this;registerGLTFLoader(THREE);//scenescene = new THREE.Scene();//设置相机camera = new THREE.PerspectiveCamera(45, canvas.width / canvas.height, 0.25, 100);camera.position.set(- 5, 3, 10);camera.lookAt(new THREE.Vector3(0, 2, 0));scene = new THREE.Scene();// 设置光照var light = new THREE.HemisphereLight(0xffffff, 0x444444);light.position.set(0, 20, 0);scene.add(light);light = new THREE.DirectionalLight(0xffffff);light.position.set(0, 20, 10);scene.add(light);// 导入3d模型  let loader = new THREE.GLTFLoader(); //badminton.zip loader.load('https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb', function(gltf) {model = gltf.scene;scene.add(model);},function() {return pagestatus;},undefined,function(e) {console.error("加载模型出错:", e);});//render 渲染renderer = new THREE.WebGLRenderer({antialias: true});renderer.setPixelRatio(2);renderer.setSize(canvas.width, canvas.height);that.animate();//画布渲染},// 画布渲染animate: function() {let that = this;if (renderer !== null && scene !== null && camera !== null) {canvas.requestAnimationFrame(that.animate);renderer.render(scene, camera);}},}}
</script>

5、总结

源码下载
csdn无积分下载:点击查看

【uni-app】只支持在微信小程序运行的 导入外部3d模型相关推荐

  1. APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包-Charles 的精简使用教程 2021-09-25 更新 2019-07-10 更新 目标 教程 一.安装 Charles 二.Charles 简介 (1)Charle ...

  2. 移动端App分享,以及微信小程序和公众号分享功能实现

    移动端App分享,以及微信小程序和公众号分享功能实现 分享功能记录收藏,上链接 前端工作记录

  3. finclip小程序运行机制与微信小程序运行机制

    根据运行小程序的宿主应用环境不同,小程序也会有不同的启动机制. #1. 小程序启动 小程序会有两种情况,一种是冷启动,一种是热启动. 冷启动:用户首次打开或小程序被宿主应用主动销毁后再次打开的情况,此 ...

  4. 微信小程序运行及更新机制

    微信小程序运行及更新机制 1.微信小程序运行机制 1.1 前台和后台 1.2 小程序启动:冷启动和热启动 1.3 小程序销毁 2.微信小程序更新机制 2.1 启动时同步更新 定期检查发现版本更新 用户 ...

  5. APP第11篇 微信小程序测试

    目录 1.什么是小程序? 2.小程序特点? 3.小程序的入口 4.小程序的架构 5.微信小程序测试的策略和注意事项 6.小程序测试点 7.常用操作 1.什么是小程序? 微信小程序是一种不需要下载也不需 ...

  6. android微信小程序支持横屏,微信小程序关于横屏存在的一些问题

    微信小程序关于横屏存在的一些问题 最近新的项目中涉及到小程序通过webview跳转h5时切换横竖屏的需求,在项目正式开工的时候我提前进行了踩坑,关于小程序在前不久添加的横屏属性,只需要在app.jso ...

  7. 微信小程序图标不支持html,微信小程序实现自定义加载图标功能

    效果图 实现思路 1.首先通过HTML+CSS实现加载动画的静态效果: 2.根据需求给每个动画设计不同的动画效果. 例如第一个加载图标的静态绘制 1.首先确定动画的盒子宽高: 2.设置盒子中每一个长方 ...

  8. uni.$emit和uni.$on用法;uni-app微信小程序页面通讯;微信小程序页面通讯

    uni-app的官方api uni.$on 场景: 微信小程序两个页面甚至多个页面之间,可能共用一个参数或者需要相互传递使用参数.例如页面A点击按钮,需要把A页面的item数据,赋值给页面B的form ...

  9. node.js+uni计算机毕设项目基于微信小程序的健康管理系统(程序+小程序+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

最新文章

  1. openSuse 13.1 的触摸板,回来了
  2. 镜像服务器文件实时监控同步程序
  3. [转]浅谈CMD和win powershell的区别
  4. Dojo学习笔记(一):Hello Dojo!
  5. Springboot整合zookeeper
  6. 云图说|SAP技术画册“一点通”
  7. Django基础—— 19.Form
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的企业员工考勤管理系统
  9. Bundling and Minification
  10. windows--CMD--命令大全
  11. stm32+ESP8266实现最简单的手机控制LED灯
  12. Android多开框架优化游戏防闪思路
  13. 首个单季度盈利,ARPU增速却持续下滑,拼多多已埋下未来隐忧
  14. domain adaptation 领域自适应
  15. Stacked Hourglass Networks简析
  16. 玩转WSL 2(一)——WSL的介绍和安装
  17. 建模师有年龄限定吗?45岁还能学吗
  18. SAS9.4更新sid,有效期至2022年11月30日
  19. [python]的functools.partial(偏函数)
  20. seaborn seaborn色板的使用设置(二)

热门文章

  1. KKT条件(Karush-Kuhn-Tucker)及二阶充分条件(The second-order sufficiency condition)
  2. [LeetCode] Merge k Sorted Lists 合并k个有序链表
  3. 傅立叶变换在图像处理中的作用
  4. 临终的悲剧——————抢救最后一口气
  5. Serverless,实现 IoT 设备运行状态缓存到Redis方案
  6. ACM/ICPC是什么
  7. 没学历的IT人生没那么悲催,献给程序员们
  8. 数据挖掘思维和实战24 实践 5:使用 fatText 进行新闻文本分类
  9. 【无标题】UNT403A安卓9-S905L3A-B
  10. 大数据之Spark:Spark Core(1)