HOOPS Communicator對3D大模型輕量化加載與渲染的4種解決方案

今天給大家介紹一些關于3D Web輕量化引擎HOOPS Commuicator的關鍵概念,這些概念可以幫您在HOOPS Communicator流緩存服務器之上更好地構建您自己的模型流服務器。如果您是有大型數據集,那么,使用流緩存服務器可以極大地幫助您最大限度地減少內存使用量,并確保瀏覽器中模型數據的交互流暢性。

HOOPS中文網icon-default.png?t=N7T8http://techsoft3d.evget.com/

一、SC Server(流緩存服務器)

SC Server(流緩存服務器)通過Websocket(網絡接口)連接,支持將一個或多個SC模型中包含的數據高效地流式傳輸到HOOPS Web Viewer。SC?Server的單個實例僅支持一個客戶端連接,但SC?Server的多個實例通常會在單個Web服務器上并行運行。SC?Server支持兩種渲染模式——CSR(客戶端渲染)和SSR(服務器端渲染)。

在CSR模式下,SC?Server將CAD模型幾何圖形發送到連接的HOOPS Web Viewer,并讓HOOPS Web Viewer直接在用戶瀏覽器中使用WebGL執行3D渲染。在SSR模式中,SC?Server將在服務器機器上自行執行3D渲染,然后將渲染結果作為圖像數據發送到HOOPS Web Viewer進行顯示。

SC?Server使用WebSocket技術與HOOPS Web Viewer進行通信,這要求每個SC?Server都可以訪問未使用的網絡端口。如果所有中間防火墻均已正確配置,HOOPS Web Viewer可以直接連接到此端口,或者HOOPS Web Viewer可以通過代理技術使用單個共享端口。

但請注意,即使使用代理方法,每個SC?Server實例仍然需要服務器計算機內的專用網絡端口,因為代理在網絡序列中稍后發生。如果正在使用代理,服務器計算機可能只需要為單個代理端口配置其防火墻即可允許網絡流量。HOOPS Communicator?HOOPS Server,它管理多個SC Server實例。但是您不使用HOOPS?Server的服務器配置,則可以直接運行SC?Server。

二、HOOPS Server

HOOPS?Server的主要任務是管理單個計算機上的多個SC?Server實例和關聯資源。任務包括:

  • SC?Server生命周期管理

通常會啟動新的SC?Server實例來響應查看模型的請求。如果關聯的HOOPS Web Viewer斷開連接或發生響應超時,現有SC?Server實例將關閉,每臺服務器計算機同時運行的SC?Server實例的最大數量將受到用戶管理的配置文件的限制,因此正確控制這些實例的啟動和關閉非常重要。

  • 網絡端口管理

HOOPS?Server配置必須包括一系列專用于SC?Server與HOOPS Web Viewer之間的WebSocket的通信端口。HOOPS?Server必須確保可正確使用這些端口,并且如果SC?Server實例關閉或意外啟動,則必須收回任何端口。

  • 查看請求

當用戶希望啟動新的HOOPS Web Viewer時,必須發出請求來創建新的查看會話,從而為該HOOPS Web Viewer啟動新的SC?Server實例。

HOOPS Server支持兩種類型的查看請求:

① REST協議

在此模式下,查看請求通過REST樣式的HTTP URL發送到HOOPS Server。HOOPS Server將啟動一個新的SC Server實例,并使用可用于HOOPS Web Viewer查看的URI進行響應。

② WebSocket代理服務器

在此模式下,查看請求通過WebSocket URL發送到HOOPS Server,通常采用“ws://<服務器主機名>:<端口>”形式。服務器將啟動一個新的SC Server實例,并在內部將請求直接代理到該新實例。

三、HTTP?Server

任何情況下,標準HTTP Web?Server還必須與Communicator服務器結合使用,以將HTML、JS、CSS、圖像和任何其他文件傳送到請求瀏覽器。HOOPS服務器包含一個內置HTTP Web服務器,可用于開發和評估目的,但不建議在生產環境中使用。在特定情況下,應使用針對文件服務進行優化的工業級Web服務器,Apache或NGINX也是不錯的選擇。

四、渲染類型
  • 客戶端渲染(CSR)

通過CSR,SC?Server將模型數據流式傳輸到HOOPS Web Viewer,允許客戶端硬件使用WebGL技術渲染3D圖形。WebGL是一種JavaScript API,用于在Web瀏覽器中渲染交互式3D圖形,而無需使用第3方插件。它在大多數現代瀏覽器中都可用。

對于小型模型,SC?Server通常只需發送整個模型即可,但對于大型模型,這種方法在內存或網絡帶寬方面并不實用。因此,在模型較大的情況下,SC?Server會使用啟發式方法,并結合對當前3D攝像機方向的模型面的了解,來確定向所連接的HOOPS Web Viewer發送模型的最佳部分。通過這種方式,當使用CSR方法時,大型模型幾乎可以立即開始部分數據的渲染。

由于WebGL依賴客戶端硬件來執行所有渲染,因此運行HOOPS Web Viewer的任何設備都必須足以渲染交互式3D圖形,比如:

①您需要有非常高頻的網絡帶寬,可以在可接受的時間內提供3D模型數據

②客戶端設備具有足夠的計算能力和GPU能力來正確渲染3D模型

③客戶端瀏覽器支持WebGL

④您打算在每臺服務器計算機上同時運行大量SC Server

  • 服務器端渲染(SSR)

當HOOPS Web Viewer設置為服務器端渲染時,3D模型的所有渲染均由Web服務器上的GPU執行。因此,您的服務器后端必須包含一個包含GPU的實例。當用戶與模型交互時,服務器會渲染每一幀,并將圖像發送回客戶端的網絡瀏覽器進行顯示,從而最大限度地降低對客戶端硬件的要求。

圖像是實時發送的,因此在用戶看來,渲染就像是在本地計算機上實時完成的。

請注意,SSR僅用于3D模型渲染,所有其他功能(如按鈕和模型瀏覽器)都是通過HTML在客戶端創建的,這包括所有用戶創建的測量和標記數據。SSR的優勢是可以只將圖像發送到客戶端,因此用戶幾乎可以立即開始模型交互。SSR還允許您使用高性能GPU技術,該技術可以為非常大的模型帶來顯著的優勢。但使用SSR模式會將硬件要求轉移到服務器上。

在以下情況下,您可以選擇SSR:

☉ 您希望針對最廣泛的客戶端硬件☉您正計劃為不同的客戶提供超大型的模型

☉ 您擁有一個復雜的服務器后端,能夠以可接受的速度渲染您的模型,它還應該能夠根據模型的大小和并行用戶數量進行擴展

  • SCS基于單個文件的渲染

在轉換源CAD模型時,可以指示HOOPS Communicator?Converter生成名為“<模型名稱>.scs”的單個文件。通過這種方法,您無需使用HOOPS?Server或啟動關聯的SC?Server即可渲染模型。這是CAD模型的獨立版本,可以加載到HOOPS Web Viewer中,以便使用WebGL在客戶端上進行渲染。SCS文件通常會使用HTTP Web服務器傳送到客戶端瀏覽器,所以SCS文件仍然會用到服務器,不過這種方法不需要HOOPS?Server或SC?Server。

雖然SCS文件方法因其簡單性而提供了一些明顯的價值,但也有特定條件:

① 在對CAD模型進行任何渲染之前,瀏覽器必須接收整個SCS文件。對于非常小的模型,這很好,但對于中型到大型模型,與使用CSR相比,這會造成明顯的啟動滯后。

② 對于較大的模型,SCS文件的大小可能會變得太大而不實用,所以,如果您是僅查看小型模型時,SCS這種方式會更便捷且實用。

歡迎持續關注,下期內容,我們將手把手教您構建您自己的流緩存服務器:

  • 如何以編程方式配置和生成SC-Server?(流緩存服務器)實例
  • 如何將JavaScript WebViewer連接到生成的SC-Server
  • 如何監控SC-Server實例的生命周期
關于Tech Soft 3D

Tech Soft 3D是工程軟件開發工具包的領先提供商,成立于1996年,總部位于俄勒岡州本德,在法國、英國、日本和挪威均設有辦事處。該公司的工具包產品為全球數億臺計算機上運行的700多個獨特應用程序提供支持。了解更多HOOPS信息,請訪問“HOOPS中文網”

申請HOOPS試用icon-default.png?t=N7T8http://x7pfmmn259623uby.mikecrm.com/d7EBgIv

如果您的企業目前也有3D數據格式轉換、3D Web輕量化渲染的需求,歡迎聯系我們申請3D 輕量化引擎HOOPS的試用哦~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity-PDF分割器(iTextSharp)

PDF分割器 Unity-PDF分割器前言核心思路解決過程一、Unity安裝iTextSharp二、運行時計算將要生成文件的大小三、分割核心代碼四、使用StandaloneFileBrowser五、其他的一些腳本六、游戲界面主體的構建MainWindowWarningPanel & FinishPanel By-Round Moon Unity-PDF分割器 …

VMware虛擬機安裝詳細指南

在多任務和多環境開發的需求日益增長的當下&#xff0c;虛擬機技術憑借其靈活性和高效性成為了IT行業的一大利器。VMware作為虛擬化技術的領軍者&#xff0c;其提供的VMware Workstation Pro軟件允許用戶在一臺物理機上運行多個獨立的虛擬機&#xff0c;每個虛擬機都可以擁有自…

基于主從模式的Reactor的仿muduo網絡庫

&#x1f307;個人主頁&#xff1a;平凡的小蘇 &#x1f4da;學習格言&#xff1a;命運給你一個低的起點&#xff0c;是想看你精彩的翻盤&#xff0c;而不是讓你自甘墮落&#xff0c;腳下的路雖然難走&#xff0c;但我還能走&#xff0c;比起向陽而生&#xff0c;我更想嘗試逆風…

【.NET Core】.NET中的流(Stream)

【.NET Core】.NET中的流&#xff08;Stream&#xff09; 文章目錄 【.NET Core】.NET中的流&#xff08;Stream&#xff09;一、流&#xff08;Stream&#xff09;1.1 FileStream類1.2 IsolatedStorageFileStream類1.3 MemoryStream類1.4 BufferedStream類1.5 NetworkStream類…

谷歌瀏覽器打開,圖片糊了

現象&#xff08;問題&#xff09;&#xff1a;早上開機&#xff0c;打開谷歌瀏覽器發現里面的所有圖片相關的都糊了&#xff0c;離譜&#xff01; 查閱一番資料后發現&#xff1a; 谷歌瀏覽器的硬件加速模式被打開了 解決&#xff1a; 打開谷歌瀏覽器->設置->系統->…

【C++從練氣到飛升】01---C++入門

&#x1f388;個人主頁&#xff1a;庫庫的里昂 ?收錄專欄&#xff1a;C從練氣到飛升 &#x1f389;鳥欲高飛先振翅&#xff0c;人求上進先讀書。 目錄 推薦 前言 什么是C C的發展史 &#x1f4cb;命名空間 命名空間定義 命名空間使用 命名空間的嵌套 std命名空間的使用 &#…

編譯 qsqlmysql.dll QMYSQL driver not loaded

Qt 連接MySQL數據庫&#xff0c;沒有匹配的qsqlmysql.dll, 需要我們跟進自己Mysql 以及QT版本自行編譯的。異常如下圖&#xff1a; 安裝環境為 VS2019 Qt5.12.12&#xff08;msvc2017_64、以及源碼&#xff09; 我的安裝地址&#xff1a;D:\Qt\Qt5.12.12 Mysql 8.1.0 默認安…

Java 定時器

Java 定時器 package com.su.test.threadtest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** 在這里插入代碼片使用定時器指定定時任務。timer&#xff1a;計時器…

2023年下半年教師資格證考試《教育知識與能力》(中學)題

3.李老師在初二選擇了人數、性別比例、學習成績、教材各方面情況相同的兩個班進行教學&#xff0c;對其中一班采用講授法&#xff0c;對另一個班采用自學輔導法&#xff0c;經過一個階段的教學后進行測驗&#xff0c;以比較兩種方法教學效果&#xff0c;李老師采用的方法屬于&a…

RMSNorm 類中引入一些參數

在 RMSNorm 類中&#xff0c;引入可學習的參數&#xff0c;以增強模型的表達能力和適應性。以下是一些常見的方法&#xff1a; 可學習的縮放參數&#xff08;Scale&#xff09;&#xff1a; 除了 self.weight&#xff0c;可以為每個維度引入一個可學習的縮放參數。這可以通過創…

PyTorch 中的 apply

Abstract nn.Module[List].apply(callable)Tensor.apply_(callable) → TensorFunction.apply(Tensor...) nn.Module[List].apply()? 源碼: def apply(self: T, fn: Callable[[Module], None]) -> T:"""Typical use includes initializing the paramete…

大語言模型LLM代碼:PyTorch庫與ChatGLM模型(LLM系列21)

文章目錄 通過閱讀大語言模型的代碼,熟悉并理解PyTorch大語言模型LLM代碼:PyTorch庫與ChatGLM模型(LLM系列21)大語言模型中的PyTorchChatGLM3-6B模型代碼ChatGLMModel類總覽ChatGLMModel類說明ChatGLMModel類核心代碼片段通過閱讀大語言模型的代碼,熟悉并理解PyTorch 大語…

基于yolov5的飛機蒙皮缺陷檢測系統,可進行圖像目標檢測,也可進行視屏和攝像檢測(pytorch框架)【python源碼+UI界面+功能源碼詳解】

功能演示&#xff1a; 基于yolov5的飛機蒙皮缺陷檢測系統&#xff0c;系統既能夠實現圖像檢測&#xff0c;也可以進行視屏和攝像實時檢測_嗶哩嗶哩_bilibili &#xff08;一&#xff09;簡介 基于yolov5的飛機蒙皮缺陷檢測系統是在pytorch框架下實現的&#xff0c;這是一個完…

單元測試:參數匹配器和參數捕捉器

目錄標題 第一章、參數匹配器1.1&#xff09;參數匹配器列表1.2&#xff09;參數匹配器示例①anyInt()②any(Class<> type)③eq()④same(expectedObject)⑤endsWith() 第二章、參數捕捉器2.1&#xff09;Captor2.2&#xff09;ArgumentCaptor類 第一章、參數匹配器 1.1&…

vue模板語法中的類和樣式綁定

最近公司要求&#xff0c;在學習前端vue知識&#xff0c;記錄一些語法要點 在綁定類和樣式時&#xff0c;如果使用三目運算(三元運算)時&#xff0c;html中使用的是大括號[], 以及使用數組綁定多個class時&#xff0c;也是大括號&#xff0c; 其他的使用中括號{} 比如&…

什么是ABA問題及ABA問題的解決方法。

什么是ABA問題 ABA問題&#xff1a;一個線程thread1讀到的數據是22&#xff0c;它對數據進行操作后變為23&#xff0c;又有一個線程thread2讀到數據22&#xff0c;對它進行操作后數據變為33并更新回去&#xff0c;又來一個線程3讀取數據33&#xff0c;更新數據為22后又更新回去…

js【詳解】自動類型轉換

運算符 Symbol 數字 會報錯 Cannot convert a Symbol value to a number Symbol 字符串 會報錯 Cannot convert a Symbol value to a string 存在對象&#xff0c;數組&#xff0c;函數時 對象&#xff0c;數組&#xff0c;函數會先執行其 toString() 方法&#xff0c;…

用CSS實現一個扇形

用CSS實現扇形的思路和三角形基本一致&#xff0c;就是多了一個圓角的樣式&#xff0c;實現一個90的扇形&#xff1a; div{border: 100px solid transparent;width: 0;heigt: 0;border-radius: 100px;border-top-color: red; }

【c++】list模擬實現

list的接口 #pragma once #include<iostream> #include<assert.h> using namespace std; namespace zjw {template<class T>struct listnode {listnode* <T>_next;listnode* <T>_prev;T _data;listnode(const T& x T()):_prev(nulllptr…

高維中介數據: 聯合顯著性(JS)檢驗法

摘要 中介分析在流行病學和臨床試驗中越來越受到關注。在現有的中介分析方法中&#xff0c;流行的聯合顯著性&#xff08;JS&#xff09;檢驗會產生過于保守的 I 類錯誤率&#xff0c;因此功效較低。但是&#xff0c;如果在使用 JS 測試高維中介假設時&#xff0c;可以準確控制…