一种基于worker实现three.js异步加载3D模型的方法与流程

文档序号:29252498发布日期:2022-03-16 10:10阅读:来源:国知局

技术特征:
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对象是贴图对象的数据源,贴图对象可以有多种数据源格式,可以是普通的html图片标签,也可以是别的类型的数据源,贴图对象是three.js中基于texture对象构造出的对象,imagebitmap对象是浏览器中表示能够被绘制到canvas上的位图图像。5.根据权利要求1所述的方法,其特征在于,所述将已加载完成的模型对象转换为json对象,包括:将已加载完成的模型对象使用tojson方法转换为json对象,tojson方法是每个threejs模型对象都具有的方法。6.根据权利要求1所述的方法,其特征在于,所述顶点数组用于表示模型的顶点信息;所述uv,纹理坐标通常具有u和v两个坐标轴,因此称之为uv坐标,u代表横向坐标上的分布、v代表纵向坐标上的分布。7.根据权利要求1所述的方法,其特征在于,所述将模型对象的顶点数组,uv数据从树状结构中分离,包括:tojson方法后,查找json对象中的geometries,遍历该数组中的每个geometry对象,该对象下的每一个键值对中的数组都是需要被分离的数据,通过数据库存储这些数据,原有的数组替换为存储的键,主线程读取的时候再通过这个键从数据库中取出对应的值。
8.根据权利要求1所述的方法,其特征在于,所述数据为模型被转换为json后,在存储时一些非常大的数组;所述树状结构为被剔除所述数据后,剩余部分的json。9.根据权利要求1所述的方法,其特征在于,所述通过objectloader转换为可使用的模型对象,包括:通过调用loader的parse方法,传入json和回调函数,回调函数接收的为模型对象。10.根据权利要求1,3,7任一项所述的方法,其特征在于,所述数据库为indexeddb,indexeddb是一种底层api,本质上是indexed database的缩写,用于存储模型的树形结构和数据,这些数据不会因为浏览器的关闭而消失。

技术总结
本发明涉及一种基于worker实现three.js异步加载3D模型的方法,主线程创建worker线程,创建事件监听与worker线程通信,主线程通过发送消息通知worker线程加载模型,Worker线程收到加载模型的消息后,从数据库中判断模型数据是否已存在,包括:如果存在,通过发送消息通知主线程已完成读取模型的数据;如果不存在,请求模型数据,转换为模型对象,将已加载完成的模型对象转换为JSON对象,将模型对象的顶点数组,UV数据从树状结构中分离并转换为类型化数组,分别存储数据和树状结构到数据库中,发送消息通知主线程已完成读取模型的数据,主线程收到消息后,从数据库中取出该模型的树状结构,通知worker线程取出对应的数据,然后在主线程中合并,并通过ObjectLoader转换为可使用的模型对象。用的模型对象。用的模型对象。


技术研发人员:王忠将
受保护的技术使用者:成都小步创想慧联科技有限公司
技术研发日:2021.12.01
技术公布日:2022/3/15
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1