python 如何将对象转换为json文件用于three.js模型加载器

krcsximq  于 2023-06-04  发布在  Python
关注(0)|答案(6)|浏览(419)

我正在使用three.js构建一个浏览器游戏,我想将Maya 2013中的模型加载到场景中。我已经将模型导出为obj文件。
现在我需要知道如何将其转换为three.js-loader的JS文件。
这是我的loader:

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

先谢谢你了

fnx2tebb

fnx2tebb1#

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

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

qnakjoqk2#

使用Blender。
Blender 3D
然后安装这个插件:
Three.js exporter

v1l68za4

v1l68za43#

这是一个相当晚的答复。我写了一个转换器来读取obj文件并转换为ThreeJS支持的JSON格式:https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS
下载所有的文件作为zip和运行converter.exe...

gj3fmq9x

gj3fmq9x4#

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

mxg2im7a

mxg2im7a5#

使用[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输出。希望你会发现这是有用的。

2guxujil

2guxujil6#

创建名为conversion.py的Python文件。Click here to find out how to
然后在终端中执行以下命令:

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

相关问题