官网下载的 Windows 版本的 Blensor 直接导出的文件会有格式问题,用 CloudCompare 等点云可视化工具查看会出错,打开导出的 pcd 文件会发现,错误的原因就是点的数量对不上,虽然有脚本代码可以绕过这个错误,但我已掌握的代码输出不了颜色,所以还是想修复一下 Blensor 的错误。
导出文件后,在 Blensor 的控制台可以看到有报错信息
Traceback (most recent call last): File "D:\Install\Blensor-1.0.18-Blender-2.79-Winx64.79\scripts\addons\blensor\evd.py", line 225, in writePCLFile self.write_point(pcl, pcl_noisy, INVALID_POINT, self.output_labels) File "D:\Install\Blensor-1.0.18-Blender-2.79-Winx64.79\scripts\addons\blensor\evd.py", line 190, in write_point color_uint32 = (e[12]<<16) | (e[13]<<8) | (e[14]) TypeError: unsupported operand type(s) for <<: 'tuple' and 'int'
从报错信息可以看出,问题出在 evd.py 第 190 行中错误的将数组类型的数据进行了位操作。虽然知道了出错原因,没有深入研究源码,也不知道从何下手修改,于是去 Blensor 的 GitHub 评论区翻了一下,发现还真有人已经提出了解决方案:https://github.com/mgschwan/blensor/issues/30
将\Blensor-1.0.18-Blender-2.79-Winx64\2.79\scripts\addons\blensor\evd.py 中第 42 行~44 行的
INVALID_POINT = [0.0, 0.0, 0.0, float('NaN'), float('NaN'), float('NaN'),float('NaN'),float('NaN'),float('NaN'), float('NaN'),float('NaN'),-1,(0,0,0),-1]
修改为
INVALID_POINT = [0.0, 0.0, 0.0, float('NaN'), float('NaN'), float('NaN'),float('NaN'),float('NaN'),float('NaN'), float('NaN'),float('NaN'),-1,0,0,0,-1]
保存修改后,重启 Blensor 即可解决该问题