当加载具有多个 png 纹理的 obj 文件时,Meshlab 崩溃

Meshlab crashes when loading obj files with more than one png textures

我有一个 OBJ 文件以及相应的 MTL 和几个 PNG 纹理。我使用 meshlab 打开它。 This mesh file downloaded from free3d 未在 MTL 中指定纹理 PNG 文件。所以我自己添加了它:

map_Kd [texture_file_name.png]

由于有多个纹理,我在两个不同的地方添加了两行map_Kd。但是,我发现如果我只使用两个(取其中一个)map_Kd 命令之一,meshlab 可以正常打开文件。但是如果我同时使用两个,meshlab 会在启动时崩溃。

我在终端中试过运行,它显示如下:

user@computer:~/data/Bikes2/obj_with_text/3/OBJ$ meshlab Sepeda\ Facific\ Invert.obj 
Qt: Session management error: Could not open network socket
Current Plugins Dir is: /snap/meshlab/36/usr/lib/meshlab/plugins 
Shader directory found '/snap/meshlab/36/usr/share/meshlab/shaders', and it contains 19 gdp files
Mesh is Polygonal!
libpng warning: iCCP: known incorrect sRGB profile
LOG: 0 Opened mesh Sepeda Facific Invert.obj in 519 msec
LOG: 0 All files opened in 521 msec
libpng warning: iCCP: known incorrect sRGB profile
user@computer:~/data/Bikes2/obj_with_text/3/OBJ$ meshlab Sepeda\ Facific\ Invert.obj 
Qt: Session management error: Could not open network socket
Current Plugins Dir is: /snap/meshlab/36/usr/lib/meshlab/plugins 
Shader directory found '/snap/meshlab/36/usr/share/meshlab/shaders', and it contains 19 gdp files
Mesh is Polygonal!
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
Segmentation fault (core dumped)

有谁知道为什么?是 meshlab 错误还是我做错了什么?

如果重要的话,我正在使用 Ubuntu20.04 和从 Ubuntu 软件中心安装的 Meshlab_64bit_fp v2020.12。


更新 1: Meshlab_64bit_fp Windows 10 上的 v2020.03 行为相同。


更新二:

为了使其可重现,我 post 下面是我的 MTL 文件。我添加的两个 map_Kd 命令分别在第 184 行(newmtl col_rangka_wadah_perr 下)和最后一行。

# Blender MTL File: 'Sepeda Facific Invert.blend'
# Material Count: 29

newmtl Material
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.002
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.003
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.004
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.005
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.006
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl Material.007
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl None
Ns 0.000000
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.800000 0.800000 0.800000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl ban_luar.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.064007 0.064007 0.064007
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_ban
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_casing_hp
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_jari2
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_lantai
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_master_btl
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_pegangan_stank
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_pelek
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl col_rangka_per_sepeda
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2


newmtl col_rangka_wadah_perr
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
#map_Kd uv_rangka.png

newmtl col_uv_btl
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl dominan.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl gear.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl guma.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.301176 0.301176 0.301176
Ks 0.447059 0.447059 0.447059
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl skp_front_defaul.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.447059 0.447059 0.447059
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl steel_whiter.001
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.589804 0.589804 0.589804
Ks 0.447059 0.447059 0.447059
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl uv_ban_kanan
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl uv_ban_kiri
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl uv_hp
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl uv_pelek_kanan
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

newmtl uv_pelek_kiri
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd uv_pelek_kiri.png

可以确认这似乎是 meshlab OBJ 导入程序中的错误。

我已经使用批处理 meshlabserver 程序管理了一个解决方法。

  1. 我编辑了 mtl 文件以使用 map_Kd filename.png 行添加多个纹理,方法与您相同。
  2. 使用命令行转换文件:

meshlabserver -i Sepeda\ Facific\ Invert.obj -o fixed.obj -m wt

并得到一个 meshlab 可以正确加载的文件: