如何将对象转换为tri.js模型加载器的json文件

时间:2013-04-08 19:53:18

标签: python json three.js maya

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

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

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

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

提前致谢

6 个答案:

答案 0 :(得分:12)

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

python convert_obj_three.py -i infile.obj -o outfile.js

答案 1 :(得分:11)

使用Blender。

Blender 3D

然后安装此插件:

Three.js exporter

答案 2 :(得分:6)

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

以zip格式下载所有文件并运行converter.exe ...

答案 3 :(得分:6)

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

用法:

node obj2three.js model.obj

答案 4 :(得分: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窗口并打印结果。复制粘贴cmd中的python命令。使用打印的json在项目中批量加载模型。
  • 此外,可以将脚本分配给3dsMax工具栏中的按钮,以便快速访问。
  • 以上脚本可以进一步调整。不是最好的解决方案,但至少可以加快速度,希望能够。
  • 使用Jos Balcaen的exporting obj files in batch(3ds Max)
  • 脚本

修改

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

答案 5 :(得分:2)

使用以下内容创建名为conversion.py的Python文件:click here to see it

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

python conversion.py -i file.obj -o file.js