多平台化three-platformize 3D库

1,128 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

前言

说到3D加载,大部分开发人员都能想到Three.js。他是一个基于webgl原生封装的3D引擎库,常用于网页开发各种3D效果展示。

本文在github上发现一个手机端能加载3D效果的库,实际也是根据three.js来改造适配手机端的,目前已适配了多个平台小程序。如今手机上越来越多的3D效果已经出来,掌握手机端加载3D动态效果对我们的开发很有帮助。

three-platformize 介绍

项目地址

github.com/deepkolos/t…

github.com/deepkolos/p…

github.com/deepkolos/t…

适配情况

微信、淘宝、字节 小程序均已支持。

demo使用

先把项目拉到本地,我在这里拉取的是github.com/deepkolos/t… 这个demo

打开微信小程序工具,选择对应的example打开,打开后点击编译一下,运行结果如下图

image.png 看到这个界面说明我们的demo已经打开成功了。

image.png image.png

image.png

从上面可以看到支持很多种格式的加载,但是可能有一些已经失效额,或者模拟器问题,加载不出来。我选择了一个能加载的,点击就能看到。因为没有截取动图,但实际这个图是可以用手拖动的3D效果的,在onLoad方法里就可以进行加载,通过createSelectorQuery 将3d文件加载到某个dom节点。

	onLoad: function () {
		wx.createSelectorQuery()
			.select('#c')
			.node()
			.exec((res) => {
				const canvas = new THREE.global.registerCanvas(res[0].node)
				loadObj(canvas, THREE)
			})
	},

注意事项

经过测试,小程序是不支持2048以上纹理的图片,即图片尺寸超过2048px。因为很多时候3D格式文件都很大,主要是里面加了很多高清贴图,像素都非常高,这就导致加载不了。

所以虽然说3D效果图能加载到手机上,但实际还是有一些限制的,要选择一个好的3D格式,一般建议GLTF、或者OBJ格式,这2种比较合适。

记得把3D文件放到服务器,从服务器加载,如果是小程序则不建议放本地,也不合适。

页面退出记得调用dispose 方法,释放内存。

总结

3D效果还是需要很多功夫去研究,想要深入一点还得学一下webgl,很多东西,下一篇用uni-app引入这个库,加载我们的3d文件,完成一个小demo。