记录一下,uniapp中使用three.js遇到glb模型加载不了的问题

1.这几天在写uniapp项目时,需要使用three.js加载三维模型。在加载模型时,遇到 “ Fetch API cannot load file:///static/glb/YZQ_AGV.glb. URL scheme "file" is n”。

这个问题可能时由于uniapp限制了访问,(具体的原因我也没搞明白。。。)。

然后我又搜了一下,使用了另一个方法就可以成功加载。我是使用andro的plus来解决的。

首先,使用plus.io.resolveLocalFileSystemURL来加载模型的glb文件,加载成功文件之后,再用three.js的loader.load()方法渲染模型;这样就可以成功的渲染出glb模型。

getfile(e){
	let url = plus.io.convertLocalFileSystemURL(e)
	return new Promise((resolve,reject)=>{
	    //利用安卓plus来加载模型文件
		plus.io.resolveLocalFileSystemURL(url, entry => {
			var reader = null;
			entry.file( file => {
				reader = new plus.io.FileReader();
				reader.onloadend =  ( read )=> {
					resolve(read.target.result)
				};
				reader.readAsDataURL( file );
			}, function ( error ) {
				alert( error.message );
			});
		},err=>{
			resolve(e)
		})
	})
},
const loader = new GLTFLoader(); //loader.load()加载模型的方法,uniapp使用会报错不支持,所以在封装一层
				this.getfile(that.file).then(res=>{
					loader.load(res,(gltf) => {
						const model = gltf.scene;
						scene.add(model);
					})
				})

然后把光照,摄像机,场景给加上,就可以成功渲染了。

### 回答1: 在Uniapp微信小程序中,要渲染fbx或者glb模型,可以通过使用THREE.js库来实现。 首先,您需要将fbx或glb模型文件添加到您的Uniapp项目中。可以直接将模型文件放置在项目的静态资源目录下,或者通过引入第三方插件来处理模型文件加载和渲染。 然后,您可以创建一个新的Uniapp页面来显示模型。在该页面中,使用THREE.js库的相关方法来加载模型文件,并将其渲染到页面上。 在加载模型文件之前,需要先引入THREE.js库。可以在页面的script中导入库文件,并创建一个渲染器。然后,使用THREE.js提供的加载器来加载fbx或glb模型文件。 当模型文件加载完成后,可以创建一个场景、摄像机和光源来对模型进行渲染。通过THREE.js提供的相机控制器,可以调整视角和交互方式。 最后,将渲染器输出的结果添加到页面中,用于显示模型。可以通过canvas元素或其他合适的元素将渲染器的输出添加到页面上。 需要注意的是,在Uniapp微信小程序中使用THREE.js库要保证库文件和相关资源的正确路径,并且需要处理好模型的尺寸和纹理等问题,以确保模型在小程序中正确显示。 总而言之,通过使用THREE.js库,在Uniapp微信小程序中渲染fbx或glb模型,可以通过加载模型文件、创建场景和渲染器等步骤来实现。这样可以使得小程序的用户能够在界面上直观地观看和交互模型。 ### 回答2: 在Uniapp微信小程序中渲染fbx或glb模型可以通过引入相关的三维库来实现。首先,需要使用Uniapp的npm模块管理器(插件市场中下载)将相关的三维库安装到项目中。常用的三维库有THREE.js和Babylon.js等。 安装完三维库后,可以在小程序页面中通过引入相应的库,创建场景、相机和渲染器。然后,通过加载fbx或glb模型文件,并将其添加到场景中。这些库通过提供加载器的方式,可以将模型文件解析为可渲染的对象。 加载模型文件后,可以设置其位置、旋转、缩放等属性,以及添加纹理材质。同时,可以根据需要设置光照、阴影等效果,使模型更加逼真。 随后,调用渲染器的渲染方法将场景和相机渲染到画布上,从而实现对fbx或glb模型的渲染。可以通过监听事件或者动画控制库来实现模型的交互和动画效果。 需要注意的是,由于Uniapp是跨平台开发框架,一些平台可能不支持加载fbx或glb模型,因此在开发过程中需要对各个平台的兼容性进行测试和处理。 总之,借助Uniapp的扩展性,结合相关的三维库,可以在微信小程序中轻松实现对fbx或glb模型的渲染和展示,为用户提供更加丰富的视觉体验。 ### 回答3: 在Uniapp中,要渲染FBX或者GLB模型,可以使用uni-3d-model组件来实现。首先,需要将FBX或者GLB模型文件添加到项目中的static文件夹中,然后使用uni-3d-model组件来加载和渲染模型。 1. 在页面的vue文件中,引入uni-3d-model组件: ``` <template> <uni-3d-model :src="modelUrl"></uni-3d-model> </template> <script> export default { data() { return { modelUrl: '/static/model.fbx' // 或者'/static/model.glb' } } } </script> ``` 2.uni-3d-model组件中,通过设置src属性将模型文件路径传递给组件,使其加载并渲染模型。其中,modelUrl的值应为FBX或者GLB模型文件在static文件夹中的相对路径。 需要注意的是,渲染FBX或者GLB模型需要在小程序的云开发环境中进行,因此在使用uniapp编译小程序之前,需要先将uni-3d-model组件配置为“原生小程序组件”。具体操作可参考uni-3d-model组件的官方文档。 通过以上步骤,就可以在uniapp微信小程序中成功渲染FBX或者GLB模型了。同时,可以根据需要,设置组件的其他属性,如大小、位置、旋转等,来调整模型在小程序中的展示效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值