【技术实现步骤摘要】
一种基于worker实现three.js异步加载3D模型的方法
[0001]本专利技术涉及计算机
,具体涉及一种基于worker实现three.js异步加载3D模型的方法。
技术介绍
[0002]浏览器端加载3D模型是在3D场景中的普遍业务,在传统的3D业务中,在主线程中加载3D模型,同时加载多个模型,数据量大,模型大,导致浏览器短时间无响应,动画卡顿等现象,网络拥堵,网速慢导致加载缓慢,使用部分插件导致原生方法被重写,而重写的方法与原生的方法相比性能低下,对于用户体验极其不友好。
技术实现思路
[0003]有鉴于此,本专利技术的目的在于提供一种基于worker实现three.js异步加载3D模型的方法,以解决现有技术中,在主线程中加载3D模型,因为同时加载多个模型,数据量大,模型大,导致在主线程中加载3D模型造成的卡顿现象。
[0004]根据本专利技术实施例的第一方面,提供一种基于worker实现three.js异步加载3D模型的方法,包括:
[0005]主线程创建worker线程,创 ...
【技术保护点】
【技术特征摘要】
1.一种基于worker实现three.js异步加载3D模型的方法,其特征在于,包括:主线程创建worker线程,创建事件监听与worker线程通信;主线程通过发送消息通知worker线程加载模型;Worker线程收到加载模型的消息后,从数据库中判断模型数据是否已存在,包括:如果存在,通过发送消息通知主线程已完成读取模型的数据;如果不存在,请求模型数据,并转换为模型对象,将已加载完成的模型对象转换为JSON对象,将模型对象的顶点数组,UV数据从树状结构中分离并转换为类型化数组,分别存储数据和树状结构到数据库中,发送消息通知主线程已完成读取模型的数据;主线程收到已完成读取的消息后,从数据库中取出该模型的树状结构,并通过发送消息通知worker线程取出对应的数据,然后在主线程中合并,并通过ObjectLoader转换为可使用的模型对象。2.根据权利要求1所述的方法,其特征在于,所述发送消息,包括:通过postMessage方法发送消息。3.根据权利要求1所述的方法,其特征在于,所述从数据库中判断该数据是否已存在,包括:数据库以键值对的方式存储数据,通过直接获取主线程中传入的消息中的键对应的值,若该值为空,则数据库中不包含该模型的数据,反之则包含。4.根据权利要求1所述的方法,其特征在于,所述如果不存在,请求模型数据,并转换为模型对象,包括:根据主线程传入的消息中有模型资源的在线地址,它指向服务器上的模型地址,通过对应模型类型的加载器去加载,加载器加载出来的模型为模型对象,模型对象包含贴图对象,通过TextureLoader.prototype.load方法构造出贴图对象,通过ImageBitmapLoader将贴图对象转换为ImageBitMap对象,ImageBitMap对象是贴图对象的数据源,贴图对象可以有多种数据源格式,可以是普通的...
【专利技术属性】
技术研发人员:王忠将,
申请(专利权)人:成都小步创想慧联科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。