{"title":"使用 C++、OpenGL 和 GLSL 理解 3D 地震数据可视化","authors":"Farhan Naseer, Vladimir Kazei, Weichang Li","doi":"10.1016/j.cageo.2024.105681","DOIUrl":null,"url":null,"abstract":"<div><p>Seismic data visualization in 3D space is a valuable interpretation tool. Several open-source visualization tools are available. However, little explanation is provided about the inner working of visualization process. The current work discusses a “hello world” equivalent source code for 3D seismic data visualization using Graphical Processing Units (GPUs) with OpenGL and the OpenGL Shading Language (GLSL) programming languages. Rendering is the core process generating 2D image that we see on the screen from the 3D data structures being visualized. Texture mapping-based rendering commonly applied to seismic data starts with creating an OpenGL object called texture. The texture is then mapped over a rectangular object to display a seismic line. The work presented here is performed using OpenGL, GLSL, C++ and Qt toolkit. Here Qt provides the application GUI framework, C++ is used for data I/O, filtering, and sorting, and OpenGL and GLSL are used for 3D rendering. This paper describes the data flow through the application, and two implementations of vertex and fragment GLSL shaders. Visualization is critical for seismic data processing and interpretation. The low-level details of the process presented here will hopefully help readers in obtaining better understanding of the visualization concept and inner working principle and facilitate further development.</p></div>","PeriodicalId":55221,"journal":{"name":"Computers & Geosciences","volume":"191 ","pages":"Article 105681"},"PeriodicalIF":4.2000,"publicationDate":"2024-07-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Understanding 3D seismic data visualization with C++, OpenGL and GLSL\",\"authors\":\"Farhan Naseer, Vladimir Kazei, Weichang Li\",\"doi\":\"10.1016/j.cageo.2024.105681\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<div><p>Seismic data visualization in 3D space is a valuable interpretation tool. Several open-source visualization tools are available. However, little explanation is provided about the inner working of visualization process. The current work discusses a “hello world” equivalent source code for 3D seismic data visualization using Graphical Processing Units (GPUs) with OpenGL and the OpenGL Shading Language (GLSL) programming languages. Rendering is the core process generating 2D image that we see on the screen from the 3D data structures being visualized. Texture mapping-based rendering commonly applied to seismic data starts with creating an OpenGL object called texture. The texture is then mapped over a rectangular object to display a seismic line. The work presented here is performed using OpenGL, GLSL, C++ and Qt toolkit. Here Qt provides the application GUI framework, C++ is used for data I/O, filtering, and sorting, and OpenGL and GLSL are used for 3D rendering. This paper describes the data flow through the application, and two implementations of vertex and fragment GLSL shaders. Visualization is critical for seismic data processing and interpretation. The low-level details of the process presented here will hopefully help readers in obtaining better understanding of the visualization concept and inner working principle and facilitate further development.</p></div>\",\"PeriodicalId\":55221,\"journal\":{\"name\":\"Computers & Geosciences\",\"volume\":\"191 \",\"pages\":\"Article 105681\"},\"PeriodicalIF\":4.2000,\"publicationDate\":\"2024-07-25\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Computers & Geosciences\",\"FirstCategoryId\":\"89\",\"ListUrlMain\":\"https://www.sciencedirect.com/science/article/pii/S009830042400164X\",\"RegionNum\":2,\"RegionCategory\":\"地球科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q1\",\"JCRName\":\"COMPUTER SCIENCE, INTERDISCIPLINARY APPLICATIONS\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Computers & Geosciences","FirstCategoryId":"89","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S009830042400164X","RegionNum":2,"RegionCategory":"地球科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q1","JCRName":"COMPUTER SCIENCE, INTERDISCIPLINARY APPLICATIONS","Score":null,"Total":0}
Understanding 3D seismic data visualization with C++, OpenGL and GLSL
Seismic data visualization in 3D space is a valuable interpretation tool. Several open-source visualization tools are available. However, little explanation is provided about the inner working of visualization process. The current work discusses a “hello world” equivalent source code for 3D seismic data visualization using Graphical Processing Units (GPUs) with OpenGL and the OpenGL Shading Language (GLSL) programming languages. Rendering is the core process generating 2D image that we see on the screen from the 3D data structures being visualized. Texture mapping-based rendering commonly applied to seismic data starts with creating an OpenGL object called texture. The texture is then mapped over a rectangular object to display a seismic line. The work presented here is performed using OpenGL, GLSL, C++ and Qt toolkit. Here Qt provides the application GUI framework, C++ is used for data I/O, filtering, and sorting, and OpenGL and GLSL are used for 3D rendering. This paper describes the data flow through the application, and two implementations of vertex and fragment GLSL shaders. Visualization is critical for seismic data processing and interpretation. The low-level details of the process presented here will hopefully help readers in obtaining better understanding of the visualization concept and inner working principle and facilitate further development.
期刊介绍:
Computers & Geosciences publishes high impact, original research at the interface between Computer Sciences and Geosciences. Publications should apply modern computer science paradigms, whether computational or informatics-based, to address problems in the geosciences.