在处理3D数据时发现有些文件是wrl的格式的。但要求输入obj格式的文件,所以需要转换一下。看了网上的一些教程,然后现在可以做到把点云和面的信息提取出来。纹理信息还不知道如何对应。

wrl格式举例:

#VRML V2.0 utf8
#3Q Technologies Ltd. Copyright 2002. http://www.3q.com
DEF _3Q_object Transform {children [Shape {appearance Appearance {texture ImageTexture {url "170716093333.bmp"repeatS FALSErepeatT FALSE}}geometry IndexedFaceSet {ccw TRUEsolid FALSEconvex TRUEcreaseAngle 1.57coord Coordinate {point [-2.73104 -17.342 62.2825,62.9104 24.8217 -18.5737]}coordIndex [56240 56352 55946 -1,56444 56352 56240 -1]texCoord TextureCoordinate {point [0.866707 0.480934,0.861055 0.485866]}texCoordIndex [56240 56352 55946 -1,59187 60307 60308 -1]}}]
}
DEF _3Q_Camera_Front Viewpoint {position 1.79461 27.4489 562.665orientation 0 0 0 3.14159fieldOfView 0.5description "3Q Front"
}
DEF _3Q_Camera_Back Viewpoint {position 1.79461 27.4489 -472.268orientation 0 1 0 3.14159fieldOfView 0.5description "3Q Back"
}
DEF _3Q_Camera_Left Viewpoint {position -750.735 27.4489 45.1983orientation 0 1 0 -1.5708fieldOfView 0.5description "3Q Left"
}
DEF _3Q_Camera_Right Viewpoint {position 754.324 27.4489 45.1983orientation 0 1 0 1.5708fieldOfView 0.5description "3Q Right"
}
DEF _3Q_Camera_Top Viewpoint {position 1.79461 660.64 45.1983orientation 1 0 0 -1.5708fieldOfView 0.5description "3Q Top"
}
DEF _3Q_Camera_Bottom Viewpoint {position 1.79461 -605.742 45.1983orientation 1 0 0 1.5708fieldOfView 0.5description "3Q Bottom"
}

可以看到从coord Coordinate开始,先是点云信息(point),然后是面信息(coordIndex)其中面的信息在obj中是从1开始的,我们这份wrl是从0开始的,所以在等下处理时要+1。但是我也不知道其他wrl文件是否需要加1。之后是texCoord TextureCoordinate,里面分别有纹理坐标和信息(现在还不知道怎么对应)。

所以就提了pointcloud和faces的信息,用作后续处理。

贴代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Mar 29 10:23:59 2019@author: DSY
"""import numpy as np
import pandas as pd
import glob
import os
#from re import *
import re
#import linecache
#%%
#points
wrls=glob.glob(os.path.join('E:\\3Dface\ZZ_3D','*.wrl'))
outpath="E:\\3Dface\\ZZ_3D\\ZZobj\\"
wrls.sort()
for wrl in wrls:f=open(wrl,"r")lines=f.readlines()f.close()keywords="coord Coordinate"for i in range(0,len(lines)):i+=1if re.search(keywords, lines[i]):break#skip point[i=i+2points=[]keywords2='coordIndex'for i in range(i,len(lines)):if re.search(keywords2, lines[i]):breakpoints.append(lines[i].split(',')[0].split( ))points=points[0:-2]#%%faces=[]i=i+2keywords3='texCoord TextureCoordinate'for i in range(i,len(lines)):if re.search(keywords3,lines[i]):breakfaces.append(lines[i].split(',')[0].split( )[0:3])faces=faces[0:-1]faces=np.array(faces,dtype=int)+1#+1来符合obj的face格式#%%a=np.zeros((len(points),1),dtype='str')a[:]='v'points=np.hstack((a,points))a=np.zeros((len(faces),1),dtype='str')a[:]='f'faces=np.hstack((a,faces))files=np.vstack((points,faces))np.savetxt(outpath+wrl.split("\\")[-1].split(".")[0]+'.obj',files,delimiter=' ',fmt='%s')

不打注释了…简单的说就是通过三个关键词来框选定区域,找到pointcloud和faces的信息,然后保存成obj的格式。

obj格式:

v x1 y1 z1

v x2 y2 z2

f i1 i2 i3

f i4 i5 i6

求打赏!!!谢谢老板!

wrl文件转换成obj文件相关推荐

  1. python将txt转换为csv_Python Pandas 三行代码将 txt 文件转换成 csv 文件

    今天需要处理几个比较大的 txt 文件,每个文件都在 2GB 以上,直接用 Excel 将其转换成 csv 文件显然是不太可行的,于是用 Python 中的数据处理神器 Pandas,三行代码就能搞定 ...

  2. bat脚本中获取上级目录_使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件...

    使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件 文章来源与博主本人的CSDN博客,博客地址:https://blog.csdn.net/weixin_435 ...

  3. csv文件转换成xlsx文件方法

    背景: 在实际工作中,我们经常会面对大批量的数据进行处理,其中将csv文件文件转换成xlsx文件就是其中的一项,废话少说,上家伙: 一般方法: 将csv文件另存为xlsx文件: 但实际中03版本(.x ...

  4. 如何将Ai文件转换成PDF文件

    要将Ai文件转换成PDF文件,请按照以下步骤操作: 1. 打开客汇宝网站软件并打开要转换的文件. 2. 点击"文件"菜单并选择"另存为". 3. 在" ...

  5. java编程将HTML文件转换成PDF文件

    网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个 PD4ML,它可以解决HTML文件格式不正确的问 ...

  6. 怎么把图片文件转换成PDF文件

    除了office文件外,我们最常用的就是PDF文件了.因为PDF文件格式可以将文字.字型.格式.颜色及独立于 设备和分辨率的图形图像等封装在一个文件中.该格式文件还可以包含超文本链接.声音和动态影像等 ...

  7. pdf文件转换成jpg文件

    pdf文件转换成jpg文件 扫描的文件是PDF格式的,应公司的要求,需要将它转成JPG图片格式,这让我伤透了脑筋,经过自己网上教程的搜集和软件下载尝试,终于让我找到了一个蛮不错的转换工具,帮我解决了眼 ...

  8. Java实现从Excel文件转换成XML文件(一)

    实现思路:         直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取 ...

  9. 怎么把excel文件转成dta_如何将excel表格数据转化为dta格式-怎么把dat文件转换成Excel文件,里面的数据格式要......

    dat文件怎么转换成excel 1.首先点击excel表格左上角的"文件"选项. 2.在打开的页面中点击"另存为"选项并点击其中的"浏览"按 ...

最新文章

  1. this - 想说爱你不容易
  2. 总是感觉时间不够用?程序员如何管理时间?
  3. @responseBody java_java-如何使用@ResponseBody从Spring Controller返回JSON数据
  4. CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
  5. 苏嵌第一天,shell中一些基础知识
  6. Windows驱动程序开发语言
  7. SQL Server Profiler使用方法
  8. linux处理制表文件,linux下PDF及表格处理软件
  9. php file_get_contents 效率,php 浅析file_get_contents、curl 的效率和稳定性
  10. 非家用的监控摄像头都无复位功能
  11. 2018.12.25|区块链技术头条
  12. sql server 2000(迷你sql2000) jdbc驱动
  13. 【数字图像处理课程设计】期中、期末综合考试题目整理总结(共四个图像处理算法应用题)
  14. 将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片
  15. C#编程,无损压缩图片的一种方法
  16. DCDC和LDO原理和关键技术(学习笔记1-buck电路)
  17. 英文字母或者中文字母文本替换
  18. mysql alter index rebuild_Oracle alter index rebuild 说明
  19. Disney Springs - 迪士尼之泉
  20. 中考词汇测试软件,中考英语单词必备app

热门文章

  1. uniapp-怎么把项目打包成H5
  2. 解决debian xmms乱码
  3. php carbon,php-carbon
  4. 终于等到你!国内首条支持自动驾驶技术运用的“智慧高速”——杭甬高速复线宁波杭州湾新区段已进入实质性建设阶段!
  5. 小米平板2刷哪个系统更流畅_小米平板2 Windows版本评测:流畅度不如MIUI 7版 胜在更智能...
  6. A branch-and-price approach to the feeder network design problem
  7. 阿里云RPA机器人流程自动化快速入门
  8. 右斜杠 java chr_PHP(5.3+)中的\(反斜杠)有什么作用?
  9. 微信企业邮箱,手机邮箱格式地址怎么写?
  10. RTSP 流媒体播放地址