CN114116234B - 一种基于浏览器的三维场景模型解压缩加载方法 - Google Patents
一种基于浏览器的三维场景模型解压缩加载方法 Download PDFInfo
- Publication number
- CN114116234B CN114116234B CN202210077007.8A CN202210077007A CN114116234B CN 114116234 B CN114116234 B CN 114116234B CN 202210077007 A CN202210077007 A CN 202210077007A CN 114116234 B CN114116234 B CN 114116234B
- Authority
- CN
- China
- Prior art keywords
- decompression
- response
- dimensional scene
- browser
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 75
- 238000011068 loading method Methods 0.000 title claims abstract description 30
- 230000004044 response Effects 0.000 claims abstract description 64
- 238000004422 calculation algorithm Methods 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 230000003139 buffering effect Effects 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于浏览器的三维场景模型解压缩加载方法,属于三维场景模型解压缩技术领域,包括在浏览器上创建一个新线程,向线程发送消息,要求线程开始加载;线程收到消息后发起网络请求,等待服务器返回响应头,读取响应体,等待服务器返回响应;当读取到响应体的一部分时,对这一部分进行解压缩,如果不足以解压缩,缓冲这一部分;将解压缩后的三维场景通过消息发送给主线程;主线程渲染场景。本发明通过流式解压技术,有效减少网络传输的阻塞,提升三维场景加载速度。
Description
技术领域
本发明涉及三维场景模型解压缩技术领域,特别涉及一种基于浏览器的三维场景模型解压缩加载方法。
背景技术
三维场景模型在许多情况下需要在浏览器中进行加载,三维场景模型一般体积较大,在浏览器中直接加载时需要通过网络传输大量数据,加载速度慢。
现有的三维场景模型一般采用先加载完成后解压缩的方式在浏览器中进行展现,解压缩的操作需要进行大量的运算,而浏览器在执行脚本时会阻塞浏览器进程,影响渲染和用户交互响应,影响系统的使用体验。
另外,如果将整个三维场景模型文件从网络上缓冲到浏览器上,然后进行解压缩,将导致在过程中的某个时刻需要占用解压缩的前后两份内存,对客户端硬件要求较高,而下载时网络占用高而CPU较为空闲,解压时网络较为空闲而CPU利用率高,对客户端闲置资源造成了浪费。现有申请号为201710335647.3的中国发明专利公开一种实现三维模型的网页加载的方法及装置,能够避免三维模型加载引起浏览器崩溃,但是加载效果不理想。
有鉴于此,实有必要提供一种新的技术方案以解决上述问题。
发明内容
发明目的:提供一种基于浏览器的三维场景模型解压缩加载方法,能够减少浏览器的三维场景模型传输时间,加快加载速度。
为解决上述技术问题,本申请提供一种基于浏览器的三维场景模型解压缩加载方法,包括以下步骤:
S1、在浏览器主线程已经运行的基础上创建一个新线程,设置事件监听器监听新线程传来的消息;
S2、向新线程发送消息,通知新线程开始加载;
S3、新线程收到消息后调用浏览器的Fetch API接口发起网络请求,等待服务器返回响应头;
S4、浏览器异步地返回包含响应头及响应体的响应信息到新线程,根据响应头的内容确定解压缩算法;
S5、初始化解压缩算法,通过事件监听器监听解压缩输出结果;
S6、采用与所述步骤S4中响应信息相同的API接口,要求浏览器流式读取响应体并创建一个流读取器;
S7、通过流读取器的读取方法读取流,浏览器将异步地返回读取响应体的结果;如果存在响应体的数据块,将数据块通过调用所述步骤S4中的解压缩算法进行解压缩,直至响应体的数据块全部读取完成;
S8、通知解压缩算法没有更多数据,并等待解压缩完成,将缓冲的解压缩结果合并为一个数据块,合并后的数据块即为将解压缩后的三维场景;
S9、将解压缩后的三维场景整体通过消息发送给主线程;
S10、主线程通过所述步骤S1中的事件监听器接收解压缩后的三维场景,并渲染场景。
进一步的,所述步骤S2中的消息为发起网络请求所需信息;所述消息包括请求url地址、参数和请求头。
进一步的,所述步骤S5中的解压缩输出结果包括第一部分输出结果和第二部分输出结果;所述第一部分输出结果包括当前解压缩后的数据块;所述第二部分输出结果包括用以确定解压缩是否已完成的信息。
进一步的,所述步骤S7中读取响应体的结果包含第一部分响应结果和第二部分响应结果;所述第一部分响应结果包括响应体的数据块;所述第一部分响应结果包括用以确定响应体结果读取是否完成的信息。
进一步的,所述步骤S4中的解压缩算法包括gzip解压缩算法、xz解压缩算法、bzip2解压缩算法及Zstandard解压缩算法。
与现有技术相比,本申请至少具有以下有益效果:
1、与不压缩直接加载三维场景模型方式相比,通过使用压缩的模型文件减少了传输时间,加快了加载速度。
2、与现有加载压缩的三维场景模型,在加载完成后解压缩相比,通过流式读取响应体并解压缩,降低过程中最大内存占用量,降低对客户端设备的需求,同时数据加载和解压缩同时进行,充分利用网络和CPU的性能,加快加载和解压缩的速度。
3、与通过设置请求头,在服务器端分片加载三维场景模型的方式相比,使用浏览器原生流式请求方式,每一个文件只产生一个http请求,传输过程和服务器端无性能损耗。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1为本发明的整体流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,一种基于浏览器的三维场景模型解压缩加载方法,包括以下步骤:
S1:在浏览器主线程已经运行的基础上创建一个新线程,设置事件监听器监听新线程传来的消息。
具体的,浏览器在主线程已经运行的基础上使用Web Workers API创建一个新线程,通过在message事件上设置事件监听器监听线程传来的消息。
S2:向新线程发送消息,通知新线程开始加载。
具体的,当主线程中由于用户事件或定时器等因素触发的已压缩的模型的加载,在主线程中调用postMessage向新线程发送消息,消息应包含请求url、参数、请求头等发起网络请求所需信息,通知新线程开始加载。此时主线程可以继续进行其他操作,如运行脚本或响应用户事件。
S3:新线程收到消息后调用浏览器的Fetch API接口发起网络请求,等待服务器返回响应头。
具体的,新线程通过message事件监听主线程传来的消息,收到消息后调用浏览器的 Fetch API 接口发起网络请求,等待服务器返回响应头。
S4:浏览器异步地返回包含响应头及响应体的响应信息到新线程,根据响应头的内容确定解压缩算法。
其中,解压缩算法包括gzip解压缩算法、xz解压缩算法、bzip2解压缩算法及Zstandard解压缩算法。
具体的,浏览器将异步把包含响应头和响应体的响应信息返回到线程中,如果响应头中包含Content-Type头且其值不为空字符串且其值不为application/octet-stream,则根据Content-Type头确定解压缩算法;如果响应头中包含Content-Disposition头且其中包含有效的文件名,则根据其中的文件名的扩展名确定解压缩算法;如果不包含这两个请求头或者无法根据这两个请求头确定解压缩算法,则视为采用gzip解压缩算法,其对应关系如表1所示。
表1为响应头、扩展名以及解压缩算法的对应关系表
Content-Type | 扩展名 | 解压缩算法 |
application/gzip | gz, tgz, gzip | gzip |
application/x-xz | xz | xz |
application/x-bzip2 | bz2, bzip2 | bzip2 |
application/zstd | zs, zst, zstd | Zstandard |
S5:初始化解压缩算法,通过事件监听器监听解压缩输出结果。
解压缩输出结果包括第一部分输出结果和第二部分输出结果;第一部分输出结果包括当前解压缩后的数据块;第二部分输出结果包括用以确定解压缩是否已完成的信息。
具体的,本例中响应头情况如表2所示,由于Content-Type头的值为application/octet-stream,不能通过此头确定解压缩算法,通过Content-Disposition头中文件名的扩展名为gz可知,此模型文件使用gzip算法压缩。
表2为本实施例响应头及其对应值表
响应头 | 值 |
Content-Type | application/octet-stream |
Content-Disposition | inline;filename="example.gz" |
其中,本例使用npm上的fflate类库作为解压缩算法库,创建一个数组,作为解压缩数据缓冲区,初始化一个Gunzip实例,通过在实例上的ondata事件上设置事件监听器,监听解压缩输出结果,输出结果包含两个部分,第一个部分为当前解压缩后的数据块,第二个部分为用以确定解压缩是否已完成的信息,在事件回调中缓冲解压缩输出结果到前述数组。
S6:采用与所述步骤S4中响应信息相同的API接口,要求浏览器流式读取响应体并创建一个流读取器。
S7:通过流读取器的读取方法读取流,浏览器将异步地返回读取响应体的结果;如果存在响应体的数据块,将数据块通过调用所述步骤S4中的解压缩算法进行解压缩,直至响应体的数据块全部读取完成。
读取响应体的结果包含第一部分响应结果和第二部分响应结果;所述第一部分响应结果包括响应体的数据块;所述第二部分响应结果包括用以确定响应体结果读取是否完成的信息。
具体的,读取响应体的结果为一个包含了value和done属性的对象,value属性为响应体的数据块,done属性为读取是否完成。当读取响应体的结果中的done属性为false时视为响应体没有读取完成。如果响应体没有读取完成,则继续执行该步骤,直至响应体的数据块全部读取完成。
其中,调用步骤S5中的解压缩算法进行解压缩的具体方式为:调用步骤S5中所初始化的Gunzip实例的push方法传递上述响应体的数据块作为第一个参数进行解压缩,此时不必等待这一部分的解压缩完成。此用例选用的解压缩算法实现接收两个传入参数,其中第一个参数为待解压缩数据响应体的数据块,第二个参数为是否有更多待解压缩数据的数据块,在数据传输完成前,第一个参数必须传递,第二个参数可以不传;在数据传输完成后,第一个参数可以不传,需要传递第二个参数以通知解压缩算法完成操作。
S8:通知解压缩算法没有更多数据,并等待解压缩完成,将缓冲的解压缩结果合并为一个数据块,合并后的数据块即为将解压缩后的三维场景。
其中,通知解压缩算法没有更多数据为调用步骤S5中所初始化的Gunzip实例的push方法,传递null值作为第一个参数,true值作为第二个参数。等待解压缩完成的具体方法为等待步骤S5中在Gunzip实例的ondata事件上设置的事件监听器输出结果的第二个部分输出结果标识了解压缩完成时视为解压缩完成。
其中,将缓冲的解压缩结果合并为一个数据块的具体方式为按照接收到事件的顺序将数据块首位相连,合并过程中注意解除已合并的数据块的引用以减轻内存压力。
S9:将解压缩后的三维场景整体通过消息发送给主线程。
具体的,通过调用postMessage API将解压缩后的三维场景整体发送给主线程,此时可使用transferList参数避免传输过程中再次复制解压缩后的场景。
S10:主线程通过步骤S1中的事件监听器接收解压缩后的三维场景,并渲染场景。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于浏览器的三维场景模型解压缩加载方法,其特征在于,包括以下步骤:
S1、在浏览器主线程已经运行的基础上创建一个新线程,设置事件监听器监听新线程传来的消息;
S2、向新线程发送消息,通知新线程开始加载;
S3、新线程收到消息后调用浏览器的Fetch API接口发起网络请求,等待服务器返回响应头;
S4、浏览器异步地返回包含响应头及响应体的响应信息到新线程,根据响应头的内容确定解压缩算法;
S5、初始化解压缩算法,通过事件监听器监听解压缩输出结果;
S6、采用与所述步骤S4中响应信息相同的API接口,要求浏览器流式读取响应体并创建一个流读取器;
S7、通过流读取器的读取方法读取流,浏览器将异步地返回读取响应体的结果;如果存在响应体的数据块,将数据块通过调用所述步骤S4中的解压缩算法进行解压缩,直至响应体的数据块全部读取完成;
S8、通知解压缩算法没有更多数据,并等待解压缩完成,将缓冲的解压缩结果合并为一个数据块,合并后的数据块即为将解压缩后的三维场景;
S9、将解压缩后的三维场景整体通过消息发送给主线程;
S10、主线程通过所述步骤S1中的事件监听器接收解压缩后的三维场景,并渲染场景。
2.如权利要求1所述的三维场景模型解压缩加载方法,其特征在于:所述步骤S2中的消息为发起网络请求所需信息;所述消息包括请求url地址、参数和请求头。
3.如权利要求1所述的三维场景模型解压缩加载方法,其特征在于:所述步骤S5中的解压缩输出结果包括第一部分输出结果和第二部分输出结果;所述第一部分输出结果包括当前解压缩后的数据块;所述第二部分输出结果包括用以确定解压缩是否已完成的信息。
4.如权利要求1所述的三维场景模型解压缩加载方法,其特征在于:所述步骤S7中读取响应体的结果包含第一部分响应结果和第二部分响应结果;所述第一部分响应结果包括响应体的数据块;所述第一部分响应结果包括用以确定响应体结果读取是否完成的信息。
5.如权利要求1所述的三维场景模型解压缩加载方法,其特征在于:所述步骤S4中的解压缩算法包括gzip解压缩算法、xz解压缩算法、bzip2解压缩算法及Zstandard解压缩算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210077007.8A CN114116234B (zh) | 2022-01-24 | 2022-01-24 | 一种基于浏览器的三维场景模型解压缩加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210077007.8A CN114116234B (zh) | 2022-01-24 | 2022-01-24 | 一种基于浏览器的三维场景模型解压缩加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114116234A CN114116234A (zh) | 2022-03-01 |
CN114116234B true CN114116234B (zh) | 2022-05-10 |
Family
ID=80361052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210077007.8A Active CN114116234B (zh) | 2022-01-24 | 2022-01-24 | 一种基于浏览器的三维场景模型解压缩加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116234B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115294257B (zh) * | 2022-10-10 | 2023-02-17 | 中交第四航务工程勘察设计院有限公司 | 基于几何分离的大体量模型的多线程异步加载方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582067A (zh) * | 2008-05-15 | 2009-11-18 | 国际商业机器公司 | 解压压缩文件时减小存储需求的方法和系统 |
CN104572966A (zh) * | 2014-12-30 | 2015-04-29 | 北京奇虎科技有限公司 | 一种压缩文件的解压方法和装置 |
SE540178C2 (en) * | 2016-01-29 | 2018-04-24 | Zeropoint Tech Ab | Methods, devices and systems for compressing and decompressing data |
CN108287877B (zh) * | 2018-01-02 | 2020-10-27 | 西安交通大学 | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 |
CN108446300B (zh) * | 2018-01-26 | 2021-04-09 | 北京奇虎科技有限公司 | 数据信息的扫描方法及装置 |
US11204897B2 (en) * | 2018-10-31 | 2021-12-21 | Taiwan Semiconductor Manufacturing Co., Ltd. | Importing and exporting circuit layouts |
CN113468448A (zh) * | 2020-03-31 | 2021-10-01 | 腾讯科技(深圳)有限公司 | 页面渲染方法及装置 |
CN111930697B (zh) * | 2020-07-09 | 2023-09-19 | 北京皮尔布莱尼软件有限公司 | 一种基于3d信息的数据传输方法、计算设备及系统 |
CN112257135B (zh) * | 2020-10-30 | 2023-09-05 | 久瓴(上海)智能科技有限公司 | 一种基于多线程的模型加载方法、装置、存储介质及终端 |
CN113641928B (zh) * | 2021-08-11 | 2023-10-31 | 上海浦东发展银行股份有限公司 | 一种网页请求方法、系统及存储介质 |
-
2022
- 2022-01-24 CN CN202210077007.8A patent/CN114116234B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114116234A (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4165668B2 (ja) | 連続的で分離されていないデータ・ストリームを圧縮する方法および装置 | |
CN102546612B (zh) | 用户态下基于rdma协议的远程过程调用实现方法 | |
US20230215076A1 (en) | Image frame display method, apparatus, device, storage medium, and program product | |
US20030191860A1 (en) | Accelerated collaboration of high frame rate applications | |
EP3410302B1 (en) | Graphic instruction data processing method, apparatus | |
JPH06324970A (ja) | コンピュータ・ワークステーション | |
CN109040786B (zh) | 摄像头数据的传输方法、装置、系统及存储介质 | |
CN114116234B (zh) | 一种基于浏览器的三维场景模型解压缩加载方法 | |
CN113873255A (zh) | 一种视频数据传输方法、视频数据解码方法及相关装置 | |
CN114422807B (zh) | 一种基于Spice协议的传输优化方法 | |
CN106657172A (zh) | 一种信息推送的实现方法及装置 | |
CN114900555A (zh) | 基于无损压缩算法的数据分发方法及装置 | |
CN101583145B (zh) | 实现大话务下信令跟踪的方法、系统以及客户端装置 | |
CN112445624A (zh) | 一种面向任务的gpu资源优化配置方法及装置 | |
CN111063347A (zh) | 实时语音识别方法、服务端及客户端 | |
TWI814134B (zh) | 虛擬行動架構的遠端渲染系統、方法及裝置 | |
CN115225623B (zh) | 基于Unity引擎的网络图片加载方法、装置及介质 | |
CN112468576B (zh) | 一种云内存共享的方法与系统 | |
CN116033235B (zh) | 数据传输方法、数字人生产设备以及数字人显示设备 | |
CN116431944A (zh) | 一种高并发数据请求的优化处理方法、装置、设备、介质 | |
CN116599942A (zh) | 一种虚拟桌面的图像处理方法、装置、服务端和存储介质 | |
CN115941968A (zh) | 解码处理方法、装置、计算机设备及存储介质 | |
CN115277602A (zh) | 一种api网关流量镜像方法 | |
CN116346873A (zh) | 一种云游戏的数据传输方法、装置及介质 | |
CN117279041A (zh) | 数据发送、数据接收方法、设备、介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A browser based method for decompressing and loading 3D scene models Granted publication date: 20220510 Pledgee: Shanghai Pudong Development Bank Limited by Share Ltd. Yantai branch Pledgor: SHANDONG JEREI DIGITAL TECHNOLOGY Co.,Ltd. Registration number: Y2024980013682 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |