【问题标题】:3DS Max => ThreeJs. Export scene3DS Max => ThreeJs。导出场景
【发布时间】:2013-12-06 09:12:00
【问题描述】:

我在 3ds Max 中有一个场景,我想在 threejs 中导出。问题是threejs中好像没有出现纹理,物体变形了。

这是我的工作流程(我是threejs的新手,所以肯定有一些错误的步骤):

  1. 从 3ds Max 导出为 .obj + .mtl(对象为简单网格,材质为标准网格)

  2. 导入 Blender 2.66 以使用 io_mesh_threejs 将场景转换为 JavaScript(因为我找不到适合 3ds Max 的转换器)。

  3. 导出后,我无法在 threejs 中看到我的场景,但如果我在没有材质的情况下导出它,就可以了。

我还发现坐标系不同,这会导致不可预测的场景放置和交互性。

我想知道您是否对如何将我的场景直接从 3ds Max 导出到 JavaScript 有任何建议?

【问题讨论】:

标签: javascript 3d three.js 3dsmax


【解决方案1】:

您可以使用A3dsViewer 将3ds 模型导出到three.js 并直接在浏览器中预览结果。

【讨论】:

  • 对我来说,对象没有出现在我的场景中。
【解决方案2】:

使用“ThreeJSExporter”脚本,实际上,只需复制脚本代码并在 3dsMax 中运行脚本(代码 https://github.com/timoxley/threejs/blob/master/utils/exporters/max/ThreeJSExporter.ms),因为可以在没有任何安装或命令行的情况下运行 .ms 文件。然后你会得到.js文件(json),手动检查该文件以确保避免在数组中出现“#”之类的字符(我花了很多时间才发现这个错误来源),这些值有时会在脚本重新计算了数据,我用数字改变了这些值(“#”的出现不需要在字符串中改变:-)),然后只使用 THREE.js 的加载器。

代码如下:

var loader = new THREE.JSONLoader();
loader.load( 'js/file.js', function ( geometry ) {
        var mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial({color: 0x07624a}) );
                        mesh.position.x =0;
                        mesh.position.y =0;
                        mesh.position.z =0;
        scene.add( mesh );
});

这是在 WebGL Render 的场景中。在这之间,我发现推荐使用 OBJLoader 而不是 JSONLoader,但 JSONLoader 对我来说在 THREE.js r71 上工作得更好。

类似方法的来源:http://bkcore.com/blog/3d/webgl-three-js-workflow-tips.html

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2021-03-25
    • 2021-11-01
    • 2016-11-17
    • 2011-06-15
    相关资源
    最近更新 更多