利用FME给倾斜三维模型添加水印

原标题:利用FME给倾斜三维模型添加水印

1目的

程序的主要目的是实现对倾斜三维模型生成的osgb数据成果添加水印,在一定程度上实现数据版权的保护。由于是直接对模型数据添加水印,能够有效增加水印去除的难度。

虽然FME能够直接读取并转换osgb数据格式,但目前的FME版本还不能正确读取并写入osgb模型的LOD规则,同时输出的osgb模型由于参数不可设置,导致FME输出的osgb格式不能被Smart3DViewer软件识别,因此计划结合FME及开源的OpenSceneGraph共同来实现倾斜三维模型添加水印的工作。

2、所需材料

(1)Smart3D软件生成的带LODosgb模型数据;

(2)编译后的osgconv.exe及相应dll库文件

3、转换界面及成果

转换界面

FME工作空间

转换成果样例

4、实现思路

(1)利用Path读取*.osgb文件所在位置,生成批处理命令

(2)将批处理文本输出,并用FeatureReader调用批处理命令,利用osgconvosgb格式转换为osg+jpg纹理;

(3)利用FME生成水印图片(或者您也可以直接用一幅大小为2048*2048的图片作为水印图片)

(4)读取第二步输出的osg+jpg中的jpg纹理图像,并将此图像与FME生成的水印图片进行裁切和融合。

  • 读取用FeatureReader

  • 由于mosaic要求的图像分辨率必须要保持一致,因此需要将水印图片和纹理图片每幅图进行裁切后再进行融合(注意融合前波段数量必须保持一致)

读取用FeatureReader

由于mosaic要求的图像分辨率必须要保持一致,因此需要将水印图片和纹理图片每幅图进行裁切后再进行融合(注意融合前波段数量必须保持一致)

(5)输出带水印的纹理图片

(6)删除原有的纹理,并将带水印的纹理图片进行重命名

*如果不删除原来的图片直接替换的话会提示原来的图片正在使用

(7)osg格式转换为osgb格式

(8)删除过程文件,只保留osgb格式

至此,转换完成!

5、注意事项

(1)不建议对所有级别的osgb都添加水印,一方面是因为osgbosg之间的格式转换效率太低(实测对5000个模型添加水印需要花费1个小时。另一方面osgb格式采用LOD机制加载数据,只需要对前面5-6级添加水印也能起到一个版权保护的效果。因此在处理前可以对LOD进行一个筛选,但一定要注意生成水印的LOD的级别务必要保持连续。

(2)输入模型数据由于利用osgconv进行转换,因此不需要读取osgb数据,进需要读取osgb文件所在位置路径即可,因此利用path来读取数据路径,能够节省读取数据的时间。

(3)过程文件的读写利用FeatureReaderFeatureWrite来实现,最终利用批处理+systemcaller删除过程文件即可。

(4)利用默认的osgconv库转换osgbosg格式后,生成的osg文件会写入纹理和LOD文件的绝对位置,这种情况会导致后续转回osgb格式时LOD错误,因此需要对过程的osg格式进行读取并修改,修正lod路径和纹理文件位置。

大功告成!最后,还是我对FME的一句话总结“万能的FME”!返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
推荐阅读
免费获取
今日搜狐热点
今日推荐