解決 3D Gaussian Splatting 中 SIBR 可視化組件報錯 uv_mesh.vert 缺失問題【2025最新版!】

一、📌 引言

在使用 3D Gaussian Splatting(3DGS)進行三維重建和可視化的過程,SIBR_gaussianViewer_app 是一款官方推薦的本地可視化工具,允許我們在 GPU 上實時瀏覽重建結果。然而,許多用戶在啟動該工具時,會遇到如下報錯:
在這里插入圖片描述
而且可視化界面會閃退,該錯誤雖簡單,卻阻礙了整個可視化流程的展開。本文將基于實際案例,詳細解析錯誤成因,并提供一個無需改代碼即可成功運行的實戰級解決方案

二、🧠 報錯溯源分析

運行如下命令:

./SIBR_gaussianViewer_app -m /home/sunshine/Project/darkgs/output/7a0f12c0-7

出現日志信息:

[SIBR] ##  ERROR  ##:   FILE .../Utils.cppLINE 82, FUNC loadFileFile not found: uv_mesh.vert
terminate called after throwing an instance of 'std::runtime_error'

這表明程序在嘗試加載 GLSL 著色器 uv_mesh.vert 文件時失敗,觸發異常崩潰。
在日志中,我們可以看到以下關鍵線索:
正確加載了 COLMAP 的 SfM 數據(例如 points3D.bin);
成功讀取了高斯點(193073 個);
初始化 OpenGL 過程也未報錯;
最后失敗點為:嘗試加載 uv_mesh.vert 著色器失敗,觸發 C++ 層的異常,導致程序崩潰。
這一錯誤本質上是 SIBR 框架依賴某些 GLSL 著色器文件未找到,其核心由如下函數觸發:

std::string loadFile(const std::string &filename) {std::ifstream file(filename);if (!file.is_open())throw std::runtime_error("File not found: " + filename);...
}

三、🎯根本原因分析

SIBR 使用 OpenGL 渲染高斯點云時,需要加載多個著色器文件(例如 .vert, .frag 等),但程序使用的是 相對路徑加載資源文件,默認在可執行文件當前路徑下尋找 shaders/core/uv_mesh.vert。

因此,如果你直接在 install/bin/ 下運行程序,而當前路徑下沒有 shaders/ 文件夾或著色器文件,就會導致加載失敗。

四、?解決方案

SIBR_gaussianViewer_app?在加載 shader 時 直接從“當前工作目錄”拿裸文件名,不會去讀?SIBR_PATH。
所以只要執行時所在的目錄里沒有 uv_mesh.vert 就會崩潰 ——?環境變量已經對,但程序根本沒去用它。
官方 issue #508 給的辦法:
讓 工作目錄 指向 shader 文件夾,或把 shader 扔到可執行旁邊。

# 進入 shader 目錄當工作目錄
cd ~/Project/darkgs/SIBR_viewers/install/shaders/core# 從這里啟動 Viewer(相對路徑回到 bin)
../../../bin/SIBR_gaussianViewer_app \-m /home/sunshine/Project/darkgs/output/RNN-0.1路徑解釋:
../../../ = 從 shaders/core → shaders → install → bin。

在這里插入圖片描述
執行完畢就可以正常可視化了!

五、? 方案 A:建立軟鏈接其他方案可選(便于后續使用)

方案 A:建立軟鏈接

ln -s ~/Project/darkgs/SIBR_viewers/install/shaders ~/Project/darkgs/SIBR_viewers/install/bin/shaders
cd ~/Project/darkgs/SIBR_viewers/install/bin
./SIBR_gaussianViewer_app -m ...

方案 B:設置環境變量(部分版本支持)

export SIBR_RESOURCE_PATH=~/Project/darkgs/SIBR_viewers/install/shaders
./SIBR_gaussianViewer_app -m ...

SIBR 在某些版本中支持通過該變量設置資源路徑,適用于自動化腳本運行場景。

六、總結與建議

一句話總結: 該報錯并非缺少文件,而是路徑未對齊,調整運行目錄即可解決。

📌 核心結論:

報錯 uv_mesh.vert 缺失源于路徑問題;
推薦在包含 shaders/core/ 的目錄中運行程序;
也可通過軟鏈接或環境變量方式規避路徑問題。

🛠 建議:

可寫入一個運行腳本 run_viewer.sh,自動設置路徑;
若部署跨設備使用,務必將 shaders/ 文件夾隨模型一同打包。

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

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

相關文章

shell_plus

python manage.py shell_plus 是由 django-extensions 提供的一個增強版的 Django shell,它自動導入你的所有模型和其他一些便捷功能,使得交互式開發更加方便。 如果你遇到配置或運行問題,特別是與 RQ_SHOW_ADMIN_LINK 相關的 ImproperlyCon…

文章記單詞 | 第62篇(六級)

一,單詞釋義 noon [nu?n] n. 中午,正午clothes [kl??z] n. 衣服,衣物reward [r??w??d] n. 報酬,獎賞;vt. 獎勵,獎賞newly [?nju?li] adv. 最近,新近;以新的方式premier [?…

Linux watch 命令使用詳解

簡介 watch 命令會以固定間隔(默認每 2 秒)重復運行給定命令,并在終端上顯示其輸出。它非常適合監控不斷變化的輸出,例如磁盤使用情況、內存使用情況、文件更改、服務狀態等。 基礎語法 watch [options] command常用選項 -n, -…

C++類_成員函數指針

在 C11 里,成員函數指針是一種特殊的指針,它指向類的成員函數。下面詳細介紹成員函數指針的定義、使用及注意事項。 定義 成員函數指針的定義格式如下: 返回類型 (類名::*指針名)(參數列表);例如: class MyClass { public:voi…

qmt下載的數據放在了哪里了?

#qmt獲取日線數據 from xtquant import xtdata # 設置股票代碼列表和時間范圍 stock_list xtdata.get_stock_list_in_sector(滬深A股) # print("獲取到的股票列表:", stock_list,len(stock_list)) start_time 20240501 end_time 20250501# 下載多只股票…

深入淺出數據庫管理系統

數據庫管理系統:數字世界的“隱形管家” ——從數據雜亂到井井有條的秘密武器 一、數據庫管理系統:數字世界的“隱形管家” 你有沒有想過,為什么我們在電商平臺購物時,商品庫存能實時更新?為什么銀行轉賬時&#xff…

關于Docker拉取鏡像超時/無法訪問鏡像倉庫解決方案

文章目錄 關于Docker拉取鏡像超時/無法訪問鏡像倉庫解決方案卸載原先安裝的Docker及相關配置使用代理后無法拉取鏡像解決方案驗證代理連通性安裝 Docker 最新版配置 Docker Daemon HTTP 代理重啟驗證與拉取鏡像 不使用代理解決方案安裝 Docker 最新版配置阿里云容器鏡像加速 關…

Docker Compose:服務編排:批量管理多個容器

通過docker compose進行容器批量管理:一次性啟動四個容器(nginx,tomcat,redis,mysql) (1) 創建docker-compose目錄 mkdir ~/docker-compose cd ~/docker-compose (2&…

Java面試大綱(以及常見面試問答)

🤟致敬讀者 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺 📘博主相關 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息 文章目錄 Java面試大綱(以及常見面試問答&…

2025年- H25-Lc133- 104. 二叉樹的最大深度(樹)---java版

1.題目描述 2.思路 返回左右子樹中,最高高度的子樹,高度從0開始計數。 3.代碼實現 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;…

個性化推薦:大數據引領電子商務精準營銷新時代

個性化推薦:大數據引領電子商務精準營銷新時代 引言 在電子商務的時代,個性化推薦系統已經成為提升用戶體驗、增強平臺競爭力的重要技術。隨著大數據技術的迅猛發展,傳統的推薦方法已經無法滿足用戶日益增長的需求。為了精準地把握用戶興趣和消費傾向,商家們依賴大數據分析…

VulnHub-OSCP靶機

前言:由于這臺機器過于簡單,所以我會盡量細化和介紹每個步驟以及涉及到的知識點,讓正在打入門機器的你不在迷茫和硬化的操作,理解并熟悉每條命令以及參數的含義,以及把前期帶給我們的信息進行快速篩選,有利…

傳感器數據處理筆記

里程計模型: 兩輪差分地盤的運動學模型三輪全向底盤的運動學模型航跡推算(Dead Reckoning) 里程計標定 線性最小二乘的基本原理最小二乘的直線擬合最小二乘在里程計標定中的應用 差分底盤的優勢就是: 結構簡單便宜&#xff0…

Spring的循環依賴問題和解決方案

在Spring框架中,循環依賴指的是兩個或多個Bean之間相互依賴,形成閉環。例如,Bean A依賴于Bean B,而Bean B又依賴于Bean A。這種情況如果處理不當,會導致應用程序無法正常啟動。 形成原因 構造函數注入:當使…

PDF轉換工具xpdf-tools-4.05

XPDF是一個開源的PDF查看、提取和轉換工具套件,使用C編寫,支持多種操作系統,包括Linux、Unix、OS/2、Windows和Mac OS X?1。XPDF不僅是一個PDF查看器,還包含多個實用工具,如文本提取器、圖像轉換器和HTML轉換器等?&a…

Vivado FPGA 開發 | 創建工程 / 仿真 / 燒錄

注:本文為 “Vivado FPGA 開發 | 創建工程 / 仿真 / 燒錄” 相關文章合輯。 略作重排,未整理去重。 如有內容異常,請看原文。 Vivado 開發流程(手把手教學實例)(FPGA) 不完美先生 于 2018-04-…

【PINN】DeepXDE學習訓練營(13)——operator-antiderivative_aligned.py

一、引言 隨著人工智能技術的飛速發展,深度學習在圖像識別、自然語言處理等領域的應用屢見不鮮,但在科學計算、工程模擬以及物理建模方面,傳統的數值方法仍然占據主導地位。偏微分方程(Partial Differential Equations, PDEs&…

NPP庫中libnppc模塊介紹

1. libnppc 模塊簡介 libnppc 是 NVIDIA Performance Primitives (NPP) 的 核心基礎模塊,提供跨模塊的通用數據類型、內存管理和基礎運算功能,不直接實現圖像或信號處理算法,而是為其他模塊(如 libnppi、libnpps)提供支持。 主要功能包括: 基礎數據類型定義(如 Npp8u、…

#基于PCL的多平面分割系統技術文檔

多平面分割系統技術文檔 一、數據結構定義 /*** @brief 平面分割結果結構體* @param coefficients 平面方程系數(ax+by+cz+d=0)* @param cloud 屬于該平面的點云子集* @param centroid 平面質心坐標(齊次坐標)* @param plane_id 平面編號(主平面為1)*/ struct PlaneSegmentRes…

PyTorch_張量拼接

張量的拼接操作在神經網絡搭建過程中是非常常用的方法,例如:殘差網絡,注意力機制中都使用張量拼接。 torch.cat 函數的使用 可以將兩個張量根據指定的維度拼接起來。 import torch import numpy as np def test01():data1 torch.randint(…