99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于 GPU 渲染的高性能空間包圍計(jì)算

圖撲-數(shù)字孿生 ? 來(lái)源:圖撲-數(shù)字孿生 ? 作者:圖撲-數(shù)字孿生 ? 2024-02-18 10:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

空間包圍檢測(cè)在計(jì)算機(jī)圖形學(xué)、虛擬仿真、工業(yè)生產(chǎn)等有著廣泛的應(yīng)用。

現(xiàn)代煤礦開(kāi)采過(guò)程中,安全一直是最大的挑戰(zhàn)之一。地質(zhì)空間中存在諸多如瓦斯積聚、地質(zhì)構(gòu)造異常、水文條件不利等隱蔽致災(zāi)因素,一旦被觸發(fā),可能引發(fā)災(zāi)難性的后果。因此在安全生產(chǎn)過(guò)程中有效的管理和規(guī)避各隱蔽致災(zāi)因素,有著重要的意義。

通過(guò)對(duì)煤礦地質(zhì)空間中各地質(zhì)因素建模,建立空間數(shù)據(jù)庫(kù),還原地下真實(shí)場(chǎng)景,使用計(jì)算機(jī)圖形學(xué)進(jìn)行空間計(jì)算,可以實(shí)時(shí)監(jiān)測(cè)各隱蔽致災(zāi)因素的位置和距離,指導(dǎo)安全生產(chǎn),并進(jìn)行可視化展示。

空間包圍檢測(cè)有多種方法,比如基于包圍盒的檢測(cè),三角面碰撞檢測(cè)等。本文提出了一種基于 GPU 渲染的高效計(jì)算方法。

假定待檢測(cè)球體范圍的半徑為r。兩種檢測(cè)方法如下:

方法 1:遍歷模型所有的點(diǎn),計(jì)算點(diǎn)和球心的距離。如果有距離小于 r,模型在球體范圍內(nèi)。
方法 2:以檢測(cè)區(qū)域的包圍盒為正交投影空間,渲染所有需要檢測(cè)的模型。渲染過(guò)程中計(jì)算每個(gè)渲染點(diǎn)到球心的距離,如果有距離小于r的渲染點(diǎn),模型在球體范圍內(nèi)。
模型和檢測(cè)區(qū)域有以下幾種位置關(guān)系:

wKgaomXDNlaAF5TBAACBYZPwGrU286.png

圖 1:模型完全在球體范圍內(nèi):方法 1 可檢測(cè)
圖 2:模型部分點(diǎn)在球體范圍內(nèi):方法 1 可檢測(cè)
圖 3:模型點(diǎn)不在球體范圍內(nèi),部分三角面在球形范圍內(nèi):方法 2 可檢測(cè)
圖 4:模型不在球體范圍內(nèi):方法 1 + 2 可檢測(cè)
圖 5:模型完全包含球體范圍:模型如果是空心的,方法 1 + 2 可檢測(cè)模型不在球體范圍內(nèi)。如果需要計(jì)算結(jié)果是模型在球體范圍內(nèi),也就是模型是實(shí)心的,建模時(shí)需要在模型內(nèi)部加上額外的輔助計(jì)算的三角面,用于表達(dá)內(nèi)部信息。此時(shí)用方法 1 + 2 可檢測(cè)模型在球體范圍內(nèi)。

wKgZomXDNlaAO3BaAACn5i3av6c516.png

以上方法使用 WebGL 渲染到紋理(Render To Texture) 和 readPixels 功能。圖撲 HT for Web SDK 組件庫(kù)對(duì) WebGL 底層復(fù)雜操作做了封裝, 為用戶省掉了繁瑣的底層 WebGL 操作,可以方便快捷的實(shí)現(xiàn)正交透視、渲染到紋理和異步 readPixels 等高級(jí) WebGL 功能。

方法 1:點(diǎn)檢測(cè)法
準(zhǔn)備一張 N X N 紋理圖 texture1(HT RenderTarget),保證要檢測(cè)的模型的數(shù)量不大于 N X N。每一個(gè)模型在紋理上分配一個(gè)像素,像素的位置為 (x,y)。

創(chuàng)建點(diǎn)渲染模式著色器程序,實(shí)現(xiàn)以下功能:

頂點(diǎn)著色器:檢測(cè)每個(gè)點(diǎn)到球心的距離,將距離是否小于r的信息傳給片段著色器。指定的位置 (x,y) 賦給 gl_Position。
片段著色器:如果距離小于 r, 渲染紅色,否則不渲染顏色。
JavaScript 程序遍歷每一個(gè)待檢測(cè)模型,將模型的頂點(diǎn)和模型在紋理上的位置 (x,y) 通過(guò) attribute 和 uniform 傳給頂點(diǎn)著色器。所有模型渲染結(jié)束后,使用異步 readPixels 將渲染結(jié)果讀出來(lái)。通過(guò)判斷讀取結(jié)果里每個(gè)像素點(diǎn)顏色值,獲得模型是否在球體內(nèi)部信息。

wKgaomXDNlaAGsnqAAEt-uqadOc011.png

主要代碼:

// 創(chuàng)建渲染材質(zhì)1
const texture1 = new ht.graph3d.RenderTarget(g3d, g3d.getGL(), 100, 100);
 
// 循環(huán)渲染所有的模型,結(jié)果保存到texture1。
for (let i = 0; i < nodeCount; i++) {
    data = datas[i];
    tModel = getDataMesh(data); // 獲取模型網(wǎng)格信息
    // 準(zhǔn)備著色器數(shù)據(jù)
    tModel.mat = model4.mat;
    tModel.matDef[DEFAULT_MAT_NAME] = model4.mat;
    tModel.mat.modelMat = data.getMatrix4().toArray();
    x = i % 100;
    y = Math.floor(i / 100);
    model4.mat.uPos = [x / 100 * 2 - 1 + 1 / 200, 2 * y / 100 - 1 + 1 / 200];
    // 渲染到texture1
    g3d.setViewport(gl, 0, 0, 100, 100);
    g3d.renderModel(texture1, model4, {
        clear: false
    });
}
 
// 讀取檢測(cè)結(jié)果
texture1.readPixelsAsync(0, 0, 100, 100, null, (result) =?> {
    for (let y = 0; y < 100; y++) {
        for (let x = 0; x < 100; x++) {
            // 遍歷像素點(diǎn),檢測(cè)是否是紅色
            // ......
        }
    }
});

方法 2:面檢測(cè)法
準(zhǔn)備兩張紋理貼圖 texture1 和 texture2。Texture1 的要求同方法 1。Texture2 默認(rèn)使用 1000 X 1000 的分辨率。

創(chuàng)建兩套著色器。第一套著色器使用三角面渲染:

頂點(diǎn)著色器:正常計(jì)算頂點(diǎn)投影信息
片段著色器:檢測(cè)每一個(gè)點(diǎn)到球心的距離,如果小于 r,渲染紅色
第二套著色器使用點(diǎn)渲染:

頂點(diǎn)著色器:根據(jù)輸入的 texture2 坐標(biāo)(attribute),使用 texture2D 獲取對(duì)應(yīng)位置的顏色值,如果是紅色,表示模型在球體內(nèi)部,將此信息傳給片段著色器。模型在 texture1 上的位置信息 (x,y) 賦給 gl_Position。
片段著色器:如果距離小于 r, 渲染紅色,否則不渲染顏色。
JavaScript 程序遍歷每一個(gè)模型,使用著色器 1 將結(jié)果渲染到 texture2。渲染過(guò)程使用正交透視矩陣,視錐是球體的包圍盒。JavaScript 將 texture2 (uniform sampler2D)、texture2 每個(gè)像素的 x, y位置信息 (attribute)、模型在 texture1 上的位置信息 (uniform) 傳給頂點(diǎn)著色器 2。片段著色器 2 將模型是否在球體內(nèi)的信息渲染到 texture1。所有模型渲染結(jié)束后,使用異步 readPixels 將渲染結(jié)果讀出來(lái)。通過(guò)判斷讀取結(jié)果里每個(gè)像素點(diǎn)顏色值,獲得模型是否在球體內(nèi)部信息。

wKgZomXDNleARyZHAAEXWlZNxq0476.png

主要代碼:

// 創(chuàng)建渲染材質(zhì)1,2
 
const texture1 = new ht.graph3d.RenderTarget(g3d, g3d.getGL(), 100, 100);
 
const texture2 = new ht.graph3d.RenderTarget(g3d, g3d.getGL(), 1000, 1000);
 
 
// 循環(huán)渲染所有的模型到texture2。texture2信息渲染到texture1
 
for (let i = 0; i < nodeCount; i++) {
 
    data = datas[i];
 
    tModel = getDataMesh(data); // 獲取模型網(wǎng)格信息
 
    // 準(zhǔn)備著色器1數(shù)據(jù)
    tModel.mat = model2.mat;
    tModel.matDef[DEFAULT_MAT_NAME] = model2.mat;
    tModel.mat.modelMat = data.getMatrix4().toArray();
 
    // 渲染到texture2
    g3d.setViewport(gl, 0, 0, 1000, 1000);
    g3d.renderModel(texture2, tModel, { clear: true });
 
    // 準(zhǔn)備著色器2數(shù)據(jù)
    model3.mat.uImage = texture2.texture;
    x = i % 100;
    y = Math.floor(i / 100);
    model3.mat.uPos = [x / 100 * 2 - 1 + 1 / 200, 2 * y / 100 - 1 + 1 / 200];
 
    // 渲染到texture1
    g3d.setViewport(gl, 0, 0, 100, 100);
    g3d.renderModel(texture1, model3, { clear: false });
 
 }

方法 1 簡(jiǎn)單快速。但檢測(cè)結(jié)果不準(zhǔn)確。方法 2 檢測(cè)結(jié)果準(zhǔn)確,但計(jì)算過(guò)程復(fù)雜。實(shí)際使用中兩種方法結(jié)合使用。首先使用方法 1 檢測(cè)。對(duì)于不在球體范圍內(nèi)的模型,再使用方法 2 檢測(cè)。

如果需要檢測(cè)橢球體范圍或者長(zhǎng)方體的范圍,可以獲取橢球體或長(zhǎng)方的變換矩陣,計(jì)算獲得逆矩陣。將逆矩陣應(yīng)用于每一個(gè)待檢測(cè)模型的節(jié)點(diǎn)。此時(shí)只需要檢測(cè)變換后的模型是否在單位圓或單位立方體內(nèi)即可。HT SDK 3D 引擎庫(kù)提供了豐富的數(shù)學(xué)計(jì)算 API,可以非常直觀簡(jiǎn)潔的實(shí)現(xiàn)以上功能。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4938

    瀏覽量

    131193
  • 檢測(cè)
    +關(guān)注

    關(guān)注

    5

    文章

    4640

    瀏覽量

    92804
  • 渲染
    +關(guān)注

    關(guān)注

    0

    文章

    75

    瀏覽量

    11174
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】體驗(yàn)Imagination GPU帶來(lái)的絲滑3D圖形渲染效果

    GPU渲染的glmark2 SDK鏡像上集成了Imagination的GPU驅(qū)動(dòng),可以使用GPU進(jìn)行圖形渲染加速。另外,SDK鏡像內(nèi)部已經(jīng)編
    發(fā)表于 12-24 21:24

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

    本篇閱讀學(xué)習(xí)第七、八章,了解GPU架構(gòu)演進(jìn)及CPGPU存儲(chǔ)體系與線程管理 █從圖形到計(jì)算GPU架構(gòu)演進(jìn) GPU圖像計(jì)算發(fā)展 ●從三角形開(kāi)始
    發(fā)表于 11-03 12:55

    NVIDIA火熱招聘GPU高性能計(jì)算架構(gòu)師

    這邊是NVIDIA HR Allen, 我們目前在上海招聘GPU高性能計(jì)算架構(gòu)師(功能驗(yàn)證)的崗位,有意向的朋友歡迎發(fā)送簡(jiǎn)歷到 allelin@nvidia.comWechat
    發(fā)表于 09-01 17:22

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】星光 2 功耗測(cè)評(píng)

    ,具有更強(qiáng)大的圖像處理能力,如能進(jìn)行3D圖像渲染。憑借其高性能和對(duì)OpenCL、OpenGL ES、Vulkan的支持,昉·驚鴻7110更智能,更高效。昉·驚鴻7110既能完成一系列復(fù)雜的圖像/視頻
    發(fā)表于 09-28 10:34

    什么是強(qiáng)制gpu渲染_強(qiáng)制渲染gpu有什么用

    本文主要介紹了gpu的定義、gpu工作原理、gpu功能作用及手機(jī)的強(qiáng)制進(jìn)行GPU渲染的詳細(xì)解釋?zhuān)詈蠼榻B了強(qiáng)制
    發(fā)表于 01-05 17:13 ?8209次閱讀

    GPU領(lǐng)跑運(yùn)算性能,實(shí)現(xiàn)高性能計(jì)算新突破

    2018 全國(guó)高性能計(jì)算學(xué)術(shù)年會(huì)(HPC CHINA 2018)于10月20日在青島閉幕。大會(huì)以“HPC+一切皆可計(jì)算”為主題,圍繞高性能計(jì)算
    的頭像 發(fā)表于 10-24 17:43 ?5740次閱讀

    存儲(chǔ)空間對(duì)高性能計(jì)算的重要性

    對(duì)于很多有高性能計(jì)算需求的用戶來(lái)說(shuō),通常比較關(guān)注的是計(jì)算的硬件配置是否是最新的,因?yàn)檫@往往關(guān)系到計(jì)算效率。但性能
    發(fā)表于 08-13 15:28 ?1005次閱讀

    GPU加速高性能計(jì)算經(jīng)典應(yīng)用

    高性能計(jì)算(HPC)在重大科學(xué)發(fā)現(xiàn)的前沿基礎(chǔ)科學(xué)研究領(lǐng)域已逐漸成為不可或缺的重要手段之一。從分子動(dòng)力學(xué)模擬、生物制藥、材料電子結(jié)構(gòu)計(jì)算、材料模擬到生命科學(xué),都離不開(kāi)高性能
    的頭像 發(fā)表于 05-24 09:13 ?3017次閱讀

    如何將高性能計(jì)算和科學(xué)計(jì)算應(yīng)用軟件更好的部署到GPU計(jì)算平臺(tái)

    NVIDIA 與智東西公開(kāi)課共同策劃推出「GPU 加速高性能計(jì)算(HPC)經(jīng)典應(yīng)用在線研討會(huì)」。研討會(huì)將聚焦經(jīng)典高性能計(jì)算和科學(xué)
    的頭像 發(fā)表于 05-27 09:53 ?1877次閱讀

    一文詳解CPU渲染GPU渲染之間的優(yōu)劣

    CPU 渲染利用計(jì)算機(jī)的 CPU 來(lái)執(zhí)行場(chǎng)景并將其渲染到接近完美。這也是執(zhí)行渲染的更傳統(tǒng)方式。然而,隨著 GPU 的出現(xiàn),基于
    的頭像 發(fā)表于 03-08 14:50 ?3178次閱讀

    智慧渲染,通用為“先”——象帝先推動(dòng) “通用、好用、高性能、自主可控” GPU解決方案

    與發(fā)熱的要求還很高。 象帝先專(zhuān)注于高性能通用圖形處理器的開(kāi)發(fā),提供“通用、好用、高性能、自主可控”的GPU芯片與完整的軟件驅(qū)動(dòng),同時(shí)積極推動(dòng)生態(tài)系統(tǒng)的建立與發(fā)展。通過(guò)在桌面端與服務(wù)器端部署通用
    的頭像 發(fā)表于 06-25 12:41 ?2288次閱讀

    主流國(guó)產(chǎn)gpu產(chǎn)品有哪些品牌(相關(guān)規(guī)格介紹)

    國(guó)產(chǎn)GPU 持續(xù)發(fā)力,對(duì)標(biāo)行業(yè)龍頭縮小差距。GPU 有兩條主要的發(fā)展路線:分別為傳統(tǒng)的 2D/3D 圖形渲染 GPU 和專(zhuān)注高性能
    發(fā)表于 08-10 10:16 ?4416次閱讀
    主流國(guó)產(chǎn)<b class='flag-5'>gpu</b>產(chǎn)品有哪些品牌(相關(guān)規(guī)格介紹)

    CPU渲染GPU渲染優(yōu)劣分析

    使用計(jì)算機(jī)進(jìn)行渲染時(shí),有兩種流行的系統(tǒng):基于中央處理單元(CPU)或基于圖形處理單元(GPU)。CPU渲染利用計(jì)算機(jī)的CPU來(lái)執(zhí)行場(chǎng)景并將其
    的頭像 發(fā)表于 05-23 08:27 ?1248次閱讀
    CPU<b class='flag-5'>渲染</b>和<b class='flag-5'>GPU</b><b class='flag-5'>渲染</b>優(yōu)劣分析

    GPU高性能服務(wù)器配置

    GPU高性能服務(wù)器作為提升計(jì)算速度和效率的關(guān)鍵設(shè)備,在各大應(yīng)用場(chǎng)景中發(fā)揮著越來(lái)越重要的作用。在此,petacloud.ai小編為你介紹GPU高性能
    的頭像 發(fā)表于 10-21 10:42 ?844次閱讀

    GPU渲染才是大勢(shì)所趨?CPU渲染GPU渲染的現(xiàn)狀與未來(lái)

    技術(shù)的不斷進(jìn)步,尤其是GPU性能的顯著提升,越來(lái)越多的行業(yè)專(zhuān)家和從業(yè)者開(kāi)始預(yù)測(cè)未來(lái)的渲染工作將逐步轉(zhuǎn)向GPU渲染。然而,CPU
    的頭像 發(fā)表于 02-06 11:04 ?675次閱讀
    <b class='flag-5'>GPU</b><b class='flag-5'>渲染</b>才是大勢(shì)所趨?CPU<b class='flag-5'>渲染</b>與<b class='flag-5'>GPU</b><b class='flag-5'>渲染</b>的現(xiàn)狀與未來(lái)