如何使用MB-System的GMT插件生成3D模型.obj

本文的实现了使用MB-System v5.8.1的GMT v6.5.0插件mbgrd2obj生成3D模型.obj。可以支持3D打印。见下图:

1.   MB-system与GMT的更新

MB-system是国内声呐研究常用的平台,标准C语言实现,代码可直接用于工程软件开发,在github上百星,让人吃惊的是这个项目目前2024年了,持续更新的频率还挺高,活力项目。

网址:https://github.com/dwcaress/MB-System

          https://www.mbari.org/technology/mb-system/

手册页地址:MB-System Manual Pages (mbari.org)

MB-System Manual Pages

MB-system的数处理有其自身的架构设计(.fbt/.fnv…),同时由于将GMT作为依赖库,对grd网格数据的支持符合GMT的规范,并提供了针对GMT的插件。

 GMT (Generic Mapping Tools) 是地球科学使用最广泛的制图软件之一。GMT 支持绘制多种类型的底图, 包含 30 多种地图投影、笛卡尔坐标轴(线性坐标轴、对数轴、指数轴)、极坐标轴; 支持绘制统计直方图、等值线图、2D 网格图以及 3D 视角图等; 也支持绘制线段、海岸线、国界、多种符号、图例、色标、文字等。数据处理方面,GMT 具有数据筛选、重采样、时间序列滤波、二维网格滤波、三维网格插值、 多项式拟合、线性回归分析等功能。

GMT 的历史:

1988 年,Paul Wessel 和 Walter H.F. Smith 开发了 GMT 的最原始版本 GMT 1.0

1991 年 8 月 10 日,GMT2 发布

1998 年 11 月 8 日,GMT3 发布

2005 年 10 月 1 日,GMT4 发布

2013 年 11 月 5 日,GMT5 发布

2019 年 11 月 1 日,GMT6 发布(目前最新版本 GMT 6.5.0 发布于 2024 年 01 月 07 日)

GMT 中文手册 (gmt-china.org)

简介 — GMT 中文手册

    MB-System v5.8.1的GMT v6.5.0插件mbgrd2obj生成3D模型.obj,mbgrd2obj插件的是2020年更新的,需要GMT的版本不低于6.0.0.

*--------------------------------------------------------------------*/

* mbgrd2obj is a GMT module which reads a topography grid file and

 * generates an OBJ format 3D module file representing the topography.

 * The OBJ format is an open format used by visualization software and

 * 3D printers.

 *   https://en.wikipedia.org/wiki/Wavefront_.obj_file

* Most of the code here derives from the GMT version 6.0.0

 * source files grdinfo.c, grd2xyz.c, and grd2kml.c.

* Author:  D. W. Caress

 * Date:   May 12, 2020

/*--------------------------------------------------------------------*/

mbgrd2obj插件的手册地址:mbgrd2obj.pdf (mbari.org)

https://www3.mbari.org/products/mbsystem/html/mbgrd2obj.pdf

  1. 2. Centos 7下MB-System v5.8.1安装

根据官网的说明安装即可:

Download and Install • MBARI

以下是我在centos7下的安装步骤,在联网状态下安装。

步骤一:下载源码,我下载的5.8.1:

https://github.com/dwcaress/MB-System/archive/refs/tags/5.8.1.tar.gz

拷贝我提供的“最终替换文件”文件夹加

步骤二:

需要预先安装的软件如下:

GMT (Generic Mapping Tools)

Proj

GDAL

netCDF

FFTW (Fastest Fourier Transform in the West)

X11

OpenMotif

OpenGL

OpenCV (for optional photomosaicing tools)

PCL (Point Cloud Library) (planned, not yet in release 5.8.0)

安装步骤:

如果必要,可以先更新yum

      sudo yum upgrade

安装软件依赖:

      sudo yum install epel-release

      sudo yum install openmotif openmotif-devel \

        fftw fftw-devel netcdf netcdf-devel \

        proj proj-devel gdal-devel gmt gmt-devel gv \

        mesa-libGL mesa-libGL-devel \

        mesa-libGLU mesa-libGLU-devel

把下载的软件移动到/usr/local/src文件夹下,并解压压缩包

     mv MB-System-5.8.1-tar.gz /usr/local/src

     cd /usr/local/src

     tar xvzf MB-System-5.8.1.tar.gz

进入到解压路径,把我提供的“最终替换文件”里的所有文件拷贝到MB-System-5.8.1/ src/mbio/文件夹下

回到MB-System-5.8.1文件夹下打开终端运行配置:

     cd MB-System-5.8.1

    ./configure --enable-mbtrn --enable-mbtnav

     export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

     LDFLAGS="-Wl,-rpath -Wl,/usr/local/lib" \

       ./configure --enable-mbtrn --enable-mbtnav

     make

     sudo make install

安装完成。可以运行测试

先运行数据处理:

mbdatalist -D -I /root/MBsystem/data/青岛_L和沉船/1.hrms -N -V 3

再运行显示界面:

mbeditviz -I /root/MBsystem/data/青岛_L和沉船/沉船.hrms

显示界面如果打不开,提示无法转换字体xxxx_xxx等等,是因为GMT的依赖没有安装支持的语言包:

直接百度命令行安装即可,也可参考github上的问题解决:

Issues · dwcaress/MB-System · GitHub

  1. 3. Centos 7下GMT v6.5.0的安装

虽然更新了yum,但会发现通过yum安装的GMT的版本是v5,所以为了使用新插件,需要手动源码安装新版的GMT。。。

官网安装说明:Linux/macOS 下编译 GMT 源码 — GMT 中文手册 (gmt-china.org)

https://docs.gmt-china.org/latest/install/build-source-unix/

解压

 tar -xvf gmt-6.5.0-src.tar.gz

 tar -xvf gshhg-gmt-2.3.7.tar.gz

 tar -xvf dcw-gmt-2.1.2.tar.gz

 将 gshhg 和 dcw 数据复制到 gmt 的 share 目录下

 mv gshhg-gmt-2.3.7 gmt-6.5.0/share/gshhg-gmt

 mv dcw-gmt-2.1.2 gmt-6.5.0/share/dcw-gmt

切换到 gmt 源码目录下

 cd gmt-6.5.0

用文本编辑器新建并打开 CMake 用户配置文件

 gedit cmake/ConfigUser.cmake

添加文本:

set (CMAKE_INSTALL_PREFIX "/opt/GMT-6.5.0")

以下的 mkdir build 命令新建的 build 文件夹位于 GMT 源码压缩包解压出来的 gmt-6.5.0 目录下。

 mkdir build

 cd build/

 cmake .. -G Ninja

 cmake --build . --target install

安装完毕后

gedit ~/.bashrc

添加文本

export GMT6HOME=/opt/GMT-6.5.0

export PATH=${GMT6HOME}/bin:$PATH

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GMT6HOME}/lib64

重启终端生效

gmt --version

6.5.0

  1. 4. 使用插件mbgrd2obj生成3D模型

为了使得GMT识别MBsystem的插件,需要通过gmtset设置GMT_CUSTOM_LIBS变量,运行:

gmt set GMT_CUSTOM_LIBS /usr/local/lib/mbsystem.so

数据预处理:

mbdatalist -D -I /root/MBsystem/data/grid/boat.hrms -N -V 3

显示数据:

mbeditviz -I /root/MBsystem/data/grid/boat.hrms

Mbeditviz工具支持声呐数据的三维显示,多波束声呐的每个生成的深度点构建出沉船的大致三维点云,上图显示的三维点云可见声呐的成像特点,类似于遥感SAR成像的特征,利用三维点云构建三维模型是不能直接通过点的空间位置构建Delaunay 三角网或 Voronoi 图来生成3D的,而是需要结合声呐(或者SAR)的成像方向,具体到每个波束的方向构建.obj文件的f 面(Face)。MB-System-5.8.1/src/gmtmbgrd2obj.c便是针对声呐的这种特性开发的。

MBsystem使用GMT的数据中介是.grd格式的网格文件,为了生成三维.obj文件,就需要先将声呐数据转化成GMT支持的.grd文件,运行命令:

mbgrid -R123.5874970/123.5880302/35.9131091/35.9134966 -D512/512 -L1 -C251 -N -I list -Ohu_int –V

这里指定了声呐文件中沉船的矩形范围(经纬度),生成结果hu_int.grd.cmd 文件,运行改文件才能生成结果hu_int.grd。

./hu_int.grd.cmd

生成的hu_int.grd文件可以使用MBsystem的mbgrdviz可视化工具查看,MBsystem对grd数据的功能支持是非常丰富的。

mbgrdviz -I /root/MBsystem/data/grid/hu_int.grd

PS:对深度的说明,在美国人水声学里深度习惯默认用正值,例如深度70m就水下70米深,放到GIS遥感语境里,地图数值其实应该是-70m,例如上图grd格式数据突出水底的沉船显示为了凹陷状态。即深度数值是70m,但正确的空间三维坐标(WGS84经纬度下)应该是-70m。

利用生成的hu_int.grd文件便可以生产三维模型.obj文件了,命令行:

gmt mbgrd2obj /root/MBsystem/data/grid/hu_int.grd -V3

默认输出的三维对象是WGS84经纬度的:

经纬度的点不是地图投影,主要用于定位,利用经纬度的点云做的三维模型存在越往高纬度地区越被“压扁”的现象,我们需要转化成一个近似等面积的投影,然后才能生成外形尽量符合实际的三维模型。所以需要至少转换成UTM投影,使用-JU参数:

mbgrid -R123.5874970/123.5880302/35.9131091/35.9134966 -D512/512 -L1 -C251 -JU -N -I list -Ohu_UTM_int -V

./hu_UTM_int.grd.cmd

gmt mbgrd2obj /root/MBsystem/data/grid/hu_UTM_int.grd -V3

这样得到的三维.obj文件中的顶点对象xyz指都是单位米,可以在不使用GIS插件的blender等软件中直接打开与打印了。同时面对象也是结合声呐成像方向生成的,没有出现浮空的船。

Done

  • 30
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值