16

我正在构建一个浏览器游戏,three.js并且我想将 Maya 2013 中的模型加载到我的场景中。我已将模型导出为 obj 文件。

现在我需要知道如何将其转换为three.js-loader 的JS 文件。

到目前为止,这是我的装载机:

 var jsonLoader = new THREE.JSONLoader();
 jsonLoader.load( "models/model.js", addModelToScene );

提前致谢

4

6 回答 6

13

如果你不想使用搅拌机,mrdoob(madethreejs) 有一个简单的 python 脚本可以将 obj 转换为 json。只需在终端中运行--this script--,如下所示:

python convert_obj_three.py -i infile.obj -o outfile.js
于 2014-06-06T14:33:25.107 回答
11

使用搅拌机。

搅拌机 3D

然后安装这个插件:

三.js 导出器

于 2013-04-18T10:11:39.743 回答
6

那是一个相当晚的回复。我编写了一个转换器来读取 obj 文件并转换为 ThreeJS 支持的 JSON 格式: https ://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

将所有文件下载为 zip 并运行 converter.exe ...

于 2013-10-02T03:05:49.497 回答
6

注意:python 转换器脚本已更新为基于 js 的工具https://github.com/mrdoob/three.js/tree/dev/utils/converters

用法:

node obj2three.js model.obj

于 2017-06-28T14:37:14.767 回答
3

使用[convert_obj_three.py][1]脚本将 3ds max 模型导出到 three.js 时,可以在 cmd promt 中使用以下命令实现一定程度的自动化:

cd C:\Python27 &
python convert_obj_three.py -i _obj\chromeBand.obj -o _json\chromeBand.js &
python convert_obj_three.py -i _obj\controlPanelCover.obj -o _json\controlPanelCover.js

我编写了一个 3ds max 脚本,它将打印多个模型的 phyton 脚本命令,以及一个带有模型相对 URL 和坐标的 json。json 对于将多个模型放置在场景中的正确位置很有用。

(
local inputPath = "D:\Archive\Work\_Dev\_Convert\Obj\\"
local outputPath = "C:\Server\htdocs\viewer\assets\models\my-project\\"
local jsonPath = "assets/models/my-project/"
local myListEntry = "\n"

for o in selection do
    (
        myListEntry +=
        "\"" + o.name + "\": {\n" +
            "\t\"url\": \"" + jsonPath + o.name + ".js\",\n" +
            "\t\"position\": {\n" +
                "\t\t\"x\": \"" + o.position.x as string + "\",\n" +
                "\t\t\"y\": \"" + o.position.z as string + "\",\n" +
                "\t\t\"z\": \"" + (o.position.y * -1) as string + "\"\n" +
            "\t}\n" +
        "},\n"
    )

myListEntry += "\n\n\n=== Run this using cmd promt: ===\n"
myListEntry += "cd C:\Python27 &\n"

for o in selection do
    (
        myListEntry += "python D:\Archive\Work\_Dev\_Convert\convert_obj_three.py -i " + 
            inputPath + o.name + ".obj -o " + 
            outputPath + o.name + ".js & \n"
    )

myListEntry += "exit \n"
print myListEntry
actionMan.executeAction 0 "40472"
)
  • 创建一个新的 txt 文件,将其重命名为coordinates.mcr并将文件拖放到 3ds max 窗口中。它将自动打开 MaxScript Listener 窗口并打印结果。将python命令复制粘贴到cmd中。使用打印的 json 在项目中批量加载模型。
  • 此外,可以将脚本分配给 3dsMax 工具栏中的按钮,以便快速访问。
  • 上面的脚本可以使用进一步的调整。不是最好的解决方案,但至少它可以加快速度,希望如此。
  • 使用 Jos Balcaen 的脚本批量导出 obj 文件(3ds Max)

编辑:

在对脚本进行了一些试验后,我做了一个设置,允许我在 1 分钟内从 3ds max 导出我的模型(超过 20 个)以打开浏览器选项卡。当然,您可能需要根据自己的喜好调整 json 输出。希望你会发现这很有用。

于 2015-11-25T19:28:10.220 回答
2

创建一个命名conversion.py为以下内​​容的 Python 文件:单击此处查看

然后在您的终端中运行此命令:

python conversion.py -i file.obj -o file.js
于 2017-07-24T16:23:54.957 回答