3DS Max => ThreeJs。出口现场

时间:2013-11-21 18:13:13

标签: javascript 3d three.js 3dsmax

我在3ds Max中有一个场景,我想以threejs导出。问题是纹理似乎没有出现在threejs中,而且对象也会变形。

那是我的工作流程(我是trijs的新手,所以必须有一些错误的步骤):

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

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

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

  4. 此外,我发现坐标系不同,导致不可预测的场景放置和交互性。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

使用" 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,但是使用THREE.js r71,JSONLoader对我的工作效果更好。

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