Skip to main content

Generate LOD resources from OBJ for Three.js viewer with Draco compression

Project description

obj2drc — OBJ 转 Draco LOD 工具

将大型 OBJ 三维模型转换为多级 LOD(Level of Detail)资源,使用 Google Draco 压缩为 .drc 文件,适用于 Three.js 网页查看器。

安装

pip install obj2drc

依赖:Python 3.8+、numpy、draco_encoder 命令行工具。

安装 draco_encoder

# macOS
brew install draco

# Ubuntu/Debian
sudo apt install draco

# 从源码编译(通用)
git clone https://github.com/google/draco.git
cd draco && mkdir build && cd build
cmake .. && make && sudo make install

快速开始

# 最简单的用法
obj2drc model.obj ./output

# 指定纹理
obj2drc model.obj ./output --texture tex.png

# 批量处理目录下所有 OBJ
python -c "from obj2drc import process_all; process_all('models/', 'data/', recursive=True)"

参数说明

LOD 控制

参数 默认 说明
--levels N 自动(3~25) LOD 层级数
--no-tile 关闭 禁用空间分块,所有层级输出为单文件

编码质量(控制文件大小)

参数 默认 说明
--pos-bits N 16 位置量化精度(1-31)。最核心的体积控制参数,每减2 bits 文件体积约减 25-30%。10-12=移动端,14-16=桌面
--compress N 7 Draco 压缩级别(0-10),越高文件越小但编码越慢
--skip-normals 关闭 跳过法线编码,文件体积减 15-30%。Three.js 可自动计算法线
--skip-uv 关闭 跳过 UV 编码。无纹理时可开启

性能

参数 默认 说明
--workers N 1 并行编码线程。0=全部 CPU,1=顺序,N=指定数
--no-procedural-tex 关闭 无纹理时跳过,不生成程序化纹理

推荐参数组合

场景 命令
快速预览/移动端 obj2drc model.obj ./out --pos-bits 12 --skip-normals
极致压缩 obj2drc model.obj ./out --pos-bits 12 --compress 10 --skip-normals --skip-uv
桌面平衡 obj2drc model.obj ./out --pos-bits 14 --compress 7
高品质桌面 obj2drc model.obj ./out --pos-bits 16 --workers 0

输出结构

output/
├── mesh_lod/
│   ├── lod_0.drc             最粗糙层级
│   ├── lod_1.drc
│   ├── ...
│   ├── lod_N.drc             分块前最细的单文件层级
│   ├── lod_{N+1}/            分块层级(30 万面以上自动分块)
│   │   ├── tile_0_0_0.drc
│   │   └── ...
├── three_lod/
│   └── {model}_texture.png
└── lod_config.json            元数据

API 用法

from obj2drc import obj2drc, process_all

# 单模型
config = obj2drc("model.obj", "./output", pos_bits=14, workers=8)

# 批量处理
results = process_all("models/", "data/", recursive=True, workers=4)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obj2drc-1.1.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obj2drc-1.1.1-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file obj2drc-1.1.1.tar.gz.

File metadata

  • Download URL: obj2drc-1.1.1.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for obj2drc-1.1.1.tar.gz
Algorithm Hash digest
SHA256 5d2231a094064cb202a2b658db195153c5371e22271b4fa728c6d90b3e8e1b07
MD5 090008d6e06f398e01eb33040c06317e
BLAKE2b-256 519013d2bc68297b508d2b1258fbb89ecff5265d67c16a6b85ac8bd546f71919

See more details on using hashes here.

File details

Details for the file obj2drc-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: obj2drc-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for obj2drc-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b544f118a4f1bb418662ecb34b9b2de7e8111527ce22910736a2546892672a68
MD5 73925279c56fb2dd874fde9fcf039a44
BLAKE2b-256 ad6c163b46ffcfc06bc2df86ecb945adf34ddd2c9d9ee78c5c1fe2a4ab618e50

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page