logo
0
0
WeChat Login
编辑文件 README.md

PmxConverter

一个将Pmx格式文件转换为GLB2格式文件的工具

apt install zlib1g-dev cmake libassimp-dev build-essential rm -rf build && mkdir build && cd build && cmake .. && make && cd .. ./build/PmxConverter --input input/file.pmx --name output ls ./output.glb

docker

# build docker build -t docker.cnb.cool/sunfkny/pmxconverter:latest . # push docker push docker.cnb.cool/sunfkny/pmxconverter:latest # pull docker pull docker.cnb.cool/sunfkny/pmxconverter:latest # run docker run --rm -v "$(pwd)/input:/app/input" \ -v "$(pwd)/output:/app/output" \ docker.cnb.cool/sunfkny/pmxconverter:latest \ --input /app/input/file.pmx --name output # check ls ./output/output.glb

python

import pathlib import subprocess def convert_pmx_to_glb( input_file: pathlib.Path, output_dir: pathlib.Path, output_name: str = "output", ) -> pathlib.Path: """ 使用 Docker 镜像将 PMX 文件及其贴图转换为 GLB 文件。 Params: input_file: PMX 文件路径 output_dir: 输出目录 output_name: 输出文件名(不含.glb后缀) Returns: 输出的 GLB 文件路径 """ if not input_file.exists() or input_file.suffix.lower() != ".pmx": raise ValueError("输入文件不存在或不是 .pmx 文件") output_dir.mkdir(parents=True, exist_ok=True) docker_cmd = [ "docker", "run", "--rm", "-v", f"{input_file.parent.resolve()}:/app/input", "-v", f"{output_dir.resolve()}:/app/output", "docker.cnb.cool/sunfkny/pmxconverter:latest", "--input", f"/app/input/{input_file.name}", "--name", output_name, ] subprocess.run(docker_cmd, check=True) output_file = output_dir / f"{output_name}.glb" if not output_file.exists(): raise RuntimeError("转换失败,未生成输出文件") return output_file if __name__ == "__main__": for input_file in pathlib.Path("input/").glob("*.pmx", case_sensitive=False): print(f"处理 {input_file.name}") output_file = convert_pmx_to_glb( input_file=input_file, output_dir=pathlib.Path("output"), output_name=input_file.stem, ) print(f"输出: {output_file}") assert output_file.exists()