PLY 转 OBJ 转换器
拖入 .ply 文件,直接在浏览器中转换为 .obj。文件不会离开你的电脑。
为什么要把 PLY 转换为 OBJ?
PLY 是源自 Stanford 的扫描格式,RealityCapture、Meshroom 和 Agisoft Metashape 都能导出。OBJ 则是扫描进入 Blender / ZBrush 做重拓扑、清理和合成的入口。从原始采集到可用的 DCC 资产,通常要经过这两种格式。
谁会做这种转换
将 RealityCapture / Meshroom 输出导入 Blender 清理的摄影测量用户、处理现场数据的 LiDAR 扫描人员,以及处理 Stanford 格式 3D 扫描档案的研究人员和学者。
常见问题
- PLY 的逐顶点颜色会丢失——OBJ 没有内置的顶点颜色通道。需要颜色请改走 PLY → GLB。
- 没有面的纯点云 PLY 会转换成空 OBJ(OBJ 基于面)。请先在 MeshLab 或 Blender Remesh 中将点云网格化。
- 大型扫描会生成巨大的 OBJ 文本文件;为了后续流程更顺畅,可考虑改用 GLB 或先对网格减面。
本工具的技术说明
Three.js PLYLoader 支持 ASCII 和 binary-little-endian 两种变体,生成 BufferGeometry,再由 OBJExporter 写出单个 .obj,包含位置、法线以及(如有)UV。不输出 .mtl。
PLY 与 OBJ 有什么区别?
Stanford Polygon 格式——3D 扫描、摄影测量和点云的首选网格格式。
- 存储逐顶点颜色、法线和自定义属性
- 既能处理网格,也能处理原始点云
- 提供紧凑的二进制模式
- 在美术 / 游戏流程中较少见
- 没有材质或纹理引用
人类可读的 Wavefront 网格格式——在 3D 图形、游戏美术和资产流程中无处不在。与 .mtl 材质文件配套使用。
- 几乎所有 3D 工具都支持(Blender、Maya、3ds Max、Unity、Unreal……)
- 纯文本,便于 diff 和手动编辑
- 保留 UV 坐标和顶点法线,这一点 STL 做不到
- 通过配套的 .mtl 文件引用材质
- 文本格式——磁盘占用比二进制网格大
- 没有场景层级、动画和骨骼
- 材质存放在单独的文件中,容易丢失
深入了解这两种格式
PLY 的由来
由 Greg Turk 及其同事于 1990 年代中期在斯坦福大学为 Stanford 3D Scanning Repository 设计——也就是每个图形学学生至少渲染过一次的“Bunny”(兔子)和“Dragon”(龙)参考网格。PLY 由文件头驱动的结构定义,意味着无需修改规范就能描述点云、网格或介于两者之间的任何数据。
- ASCII PLY 会把大型点云膨胀成数 GB 的文件;除非确实需要人类可读的输出,否则请始终保存为二进制小端格式。
- 不同导出器对逐顶点颜色的编码方式不同(RGB 与 RGBA、0-255 与 0.0-1.0)——请确认颜色在往返转换后仍然正确。
- 要求三角面的工具会悄悄丢弃 n-gon 和仅含边的 PLY 数据;如果下游是网格渲染器,请预先三角化。
实际用途:摄影测量输出(Meshroom、RealityCapture、Agisoft Metashape)、LIDAR 扫描、文化遗产扫描项目以及学术图形学研究。如果数据集来自相机阵列或激光扫描仪,通常就是 PLY。
OBJ 的由来
由 Wavefront Technologies 在 1980 年代后期为其 Advanced Visualizer 软件创建。Wavefront 被并入 Alias(后来又归入 Autodesk)后,该格式依然公开,成为学术 3D 研究、业余建模和早期游戏美术的通用语言。正因为它的 ASCII 格式足够简单,每本图形学教材至今仍附带 OBJ 示例文件。
- .mtl 材质文件必须与 .obj 一起传递——请打包成 zip 发送,否则对方那边的纹理会消失。
- 规范中存在负索引和逐面法线,但许多导入器会悄悄读错。如果下游工具报错,请在 Blender 中往返一次后重新导出。
- 如果目标是游戏引擎,请在导出前三角化——Unity 和 Unreal 的 OBJ 导入器处理不了 n-gon。
实际用途:计算机图形学研究论文至今仍以 OBJ 作为网格的参考格式。爱好者模型市场(TurboSquid、CGTrader 的免费区)以 OBJ + MTL 包的形式分发。摄影测量流程(Meshroom、RealityCapture)以 OBJ 作为可移植的中间格式输出。当一个陌生人只说了一句“我需要一个 3D 模型”时,交给对方 OBJ 仍然是最稳妥的选择。
如何将 PLY 转换为 OBJ
- 1将 .ply 文件拖放到页面上。ASCII 和 binary-little-endian PLY 均可原生解析。
- 2在 3D 中预览网格(或点云),转换前检查顶点颜色和拓扑。
- 3点击“下载 OBJ”。可直接在 Blender、Maya、3ds Max 或任何支持 Wavefront 的查看器中打开。
常见问题解答
为什么要把 PLY 转成 OBJ?
PLY 是扫描/摄影测量的标准格式(RealityCapture、Meshroom、Agisoft 都能导出)。OBJ 是 DCC 的标准格式。转换后无需插件即可把扫描导入 Blender 或 ZBrush。
顶点颜色会保留吗?
OBJ 基础规范中没有逐顶点颜色通道,PLY 中的颜色数据会在转换时丢弃。如需颜色,请改为 PLY → GLB(GLB 将顶点颜色存为 PBR 属性)。
点云怎么办?
OBJ 是基于面的格式,无法表示纯点云。如果你的 PLY 是没有面的原始点云,得到的 OBJ 将是空的。请先对扫描进行网格化(Meshlab、Blender remesh 等)再转换。
UV 坐标会保留吗?
如果 PLY 包含 UV(多数扫描仪导出不含),OBJ 写入器会输出 vt 行。纹理不会被迁移,也不会生成配套的 .mtl。
会上传任何内容吗?
不会。PLY 在浏览器中解析,并在本地重新导出为 OBJ。文件不会离开你的设备。