2017年Maya出口的ThreeJS导致问题

时间:2017-05-05 16:15:08

标签: javascript json three.js maya

我遇到从Maya导出到Three.js的问题

我在Mac上安装了Maya 2017,从网站上下载了ThreeJS - 最近。最初我下载了三个版本,.min版本(似乎是修订版57)似乎工作正常。我正在使用

mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));

然后我读到这个已被弃用,所以我换成使用mesh = new.Three.Mesh ( geometry, materials )。使用three.js它完全失败 - 没有渲染模型并且没有生成错误。它渲染舞台或者在threejs中调用的任何东西,但没有别的。如果我在json加载器之外的脚本中生成模型,它们会正常渲染,但这并不是很有用。我需要加载和渲染json。

我回去试图重新安装三个导出。与此同时,我认为版本已经更改,现在我无法从three.min.js或three.js中获得任何快乐来实例化模型。

我已经阅读了几个解决方案并试图对模型进行三角测量而没有任何影响 - 我仍然得到一个空的阶段并且没有产生错误。我创建了一个非常简单的模型 - 只是一个三角形的立方体,并没有得到任何快乐。我查看了ThreeJS站点上的JSON加载器示例 - 但它们也没有太大帮助。 无需借助JSONLoader解析器来查看JSON,是否有人有任何好主意?我甚至不确定在哪里可以找到导出数据的正确格式。

2 个答案:

答案 0 :(得分:0)

当我说我没有得到任何快乐时,我的意思是没有模型渲染,据我所知,没有任何错误。我当然使用控制台来检查数组的内容,例如材料是正确的,就我所知。 正如我所提到的,我恢复了尽可能简单的模型,一个单独的立方体。杰森 很短,我可以发布吗? 基本问题是没有模型显示。我已经检查了灯光,以防它被隐藏,并将其他对象放在json外面,看看我是否可以看到它,但我认为它只是没有实例化而且不会抛出错误?

我认为我的目标是从maya获取一个简单的json文件,然后导入到threejs并使用网格(几何,材质)生成一个我可以操作的模型。

答案 1 :(得分:0)

我现在会添加一个答案,因为我有一个。

基本问题是Maya的ThreeJS JSON导出似乎不起作用 - 导出不对,ThreeJS不喜欢该输出 - 我无论如何都无法使用它。 使用将OBJ文件更改为JS文件的转换实用程序的工作原理是什么,然后可以使用相同的代码加载。所以首先从Maya输出一个OBJ文件 - 很简单。转换实用程序可以在utils>转换器> obj> convert_obj_three.py中的threes下载文件夹中找到 您必须在Mac上使用控制台 - 我最容易将文件的副本放在您的工作文件夹中,然后一旦您使用控制台中的所有文件导航到正确的工作文件夹,请使用此行,

python convert_obj_three.py -i myFile.obj -o myfile.js

然后可以使用

将生成的JS文件加载到threeJS中

var jsonLoader = new THREE.JSONLoader();

//load a resource
jsonLoader.load(

//resource URL
'myFile.js',

//Function when resource is loaded
function ( geometry, materials ) {

    var material = materials[ 0 ];
    var object = new THREE.Mesh( geometry, material );
    scene.add( object );

}
);

接下来的问题是,事情并没有显示 - 材料是黑色的。如果有东西在它前面,或者你使用网格或其他东西,你只能看到它。我花了一段时间才通过检查控制台来确定材料是否正在装载,但它显示为黑色 - 无论我对照明做了什么,我认为是问题。我发现添加一种材质颜色神奇地将其打开,因此添加了一条线材料.color.setHex(0xffffff);在scene.add(对象)之前;线。