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

这篇具有很好参考价值的文章主要介绍了【uni-app】只支持在微信小程序运行的 导入外部3d模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、解决问题

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

2、导入模型格式

glb 格式

3、实现效果图

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

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 
			//获取webgl
			uni.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);
				//scene
				scene = 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无积分下载:点击查看文章来源地址https://www.toymoban.com/news/detail-404030.html

到了这里,关于【uni-app】只支持在微信小程序运行的 导入外部3d模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app打包运行成微信小程序,一看就会

     不废话,直接甩步骤: 1.对HX(HBulider X)编译器配置 选择运行配置:设置微信开发者工具的位置 2.uniapp项目配置 找到自己项目的manifest.json,选择微信小程序,填写自己的appid 3.微信开发者工具设置 打开微信小程序的服务端口 设置 - 安全设置 - 打开端口号 4.在HX中编译成微信小

    2024年02月21日
    浏览(35)
  • uni-app运行微信小程序时文件查找失败的问题

    此类问题主要是文件的路径不正确导致的。 造成这种问题的一个比较坑的原因,就是HBuilderX在新建目录的时候会在pages.json中添加路径,如果你修改了路径,pages.json并不会自动更改这个路径,导致无法找到新的路径地址。所以解决这个问题也非常简单,就是在pages.json文件里,

    2024年02月11日
    浏览(35)
  • 创建一个uni-app项目并运行再浏览器及微信小程序

    第一步: 打开HBuilder X 点击文件列表 新建 项目 第二步: 如图所示(根据项目所需要的进行选择) 第三步: 创建完成之后项目文件的(介绍以及作用) 第四步: 如何将uni-app项目运行到不同的浏览器,我在这里运行的是微信小程序 (1) 点击运行可以查看到项目的多种运行方式 (2

    2024年02月12日
    浏览(30)
  • 微信小程序开发者工具运行 uni-app 项目时报错 Uncaught (in promise) undefined

    开发者工具控制台报错 Uncaught (in promise) undefined,如图: 该错误主要是因为调试基础库过高或过低导致的。 在 微信开发者工具 — 详情 — 本地设置 — 调试基础库 中,将调试基础库版本调低或调高即可 调试基础库:此处选择的基础库为微信中的基础库版本,且仅用于开发者

    2024年02月12日
    浏览(52)
  • uni-app运行微信小程序无法启动小程序-Enable IDE Service (y/N) [27D[27C

    uni-app运行微信小程序无法启动小程序 异常信息如下 Enable IDE Service (y/N) [27D[27C (如下图) 解决方式 手动开启微信小程序开发工具 - 设置 - 安全 - 打开服务端口 参考资料 uni-app官方文档中运行uni-app中第3点配置,其中注意项 enable ide service (y/n) [27d[27c

    2024年02月16日
    浏览(30)
  • uni-app Vue3实现一个酷炫的多功能音乐播放器支持微信小程序后台播放

    本文存在多张gif演示图,建议在 wifi 环境下阅读📖 最近在做网易云音乐微信小程序开源项目的时候,关于 播放器功能 参考了一些成熟的微信小程序,如 网易云音乐小程序 和 QQ音乐小程序 ,但是发现这些 小程序端 的播放器相对于 APP端 来说较简单,只支持一些基础功能,

    2024年01月24日
    浏览(43)
  • uni-app运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

     在开发微信小程序时使用HBuilderX uni-app开发运行项目的时候新手可能会出现 routeDone with a webviewId 1 that is not the current page 这个报错,有时是因为调试基础库处于灰度中所以会出现这个报错信息,想解决这个报错我们可以尝试降一下微信开发者工具的调试基础库,总共分为三步

    2024年02月11日
    浏览(32)
  • 微信小程序uni-app

    小程序 是一种不需要下载、安装即可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载。 微信开发文档 1、工作原理 网页开发,渲染线程和脚本是互斥的

    2024年02月10日
    浏览(90)
  • 微信小程序授权(uni-app)

    概述 为了避免重复开发,自己封装了一个通用用户授权回调方法,只需要传入需要授权的scope,权限中文描述、回调函数,就可以实现一整套小程序是否授权、打开授权设置,调用后续操作函数的工作 功能 可以根据自己的实际应用进行微调 目前使用的uni-app版本,可以根据自

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包