three.js加载stl模型文件,怎么能让模型大小一致并居中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了three.js加载stl模型文件,怎么能让模型大小一致并居中相关的知识,希望对你有一定的参考价值。

参考技术A #include<stdio.h>
int main()

char a[10];
scanf("%s",a);
printf("%s\n",a);
return 0;
本回答被提问者采纳

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

【中文标题】如何为three.js模型加载器将对象转换为json文件【英文标题】:How to convert object to json file for three.js model loader 【发布时间】:2013-03-31 01:04:21 【问题描述】:

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

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

到目前为止,这是我的加载器:

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

提前致谢

【问题讨论】:

How could i convert a maya file into a json file and use it with three.js 的可能副本 ...直接来自侧边栏。 或者,既然你已经转成obj了,可以使用OBJLoader或者OBJMTLLoader直接加载到three.js中 我尝试了 OBJLoader,但我得到了一个类型错误:THREE.MTLLoader 不是 costructor。但包含 OBJLoader 您还需要包含 MTLLoader.js。 使用 OBJloader 和 MTLloader 不是最佳解决方案,因为应用程序必须在每次加载时解析几何。目前,我正在尝试(并尝试)让 Blender 识别导出器插件,(在插件列表中仍然显示为灰色。) 【参考方案1】:

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

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

【讨论】:

关于如何自动化的任何想法?导出几个模型也是一件繁琐的工作。【参考方案2】:

使用搅拌机。

Blender 3D

然后安装这个插件:

Three.js exporter

【讨论】:

【参考方案3】:

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

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

【讨论】:

我已经在 Windows 8 上尝试过,但它不起作用。你测试过吗? 嘿,我无法在 Windows 8 上测试它。你能分享一下问题/截图吗? 不幸的是,在对各种工作流程进行大量试验后,我发现使用 converter.exe 导出的顶点法线并不总是与 .3ds 文件匹配。我使用vertexNormalsHelper 来检查缺陷。但是,可以肯定的是convert_obj_three.py python 脚本。它似乎给出了预期的结果。【参考方案4】:

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

用法:

node obj2three.js model.obj

【讨论】:

【参考方案5】:

使用[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 的 exporting obj files in batch 脚本 (3ds Max)

编辑:

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

【讨论】:

【参考方案6】:

创建一个名为 conversion.py 的 Python 文件,其内容如下:click here to see it。

然后在你的终端中运行这个命令:

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

【讨论】:

以上是关于three.js加载stl模型文件,怎么能让模型大小一致并居中的主要内容,如果未能解决你的问题,请参考以下文章

使用 Three.js 加载模型

three.js 加载 obj模型

threejs大模型加载崩溃

用three.js在网页实现3D模型

使用 three.js 加载 STL 文件时出错

使用 Vue-cli 和 Three.js 加载 STL 文件