2017-05-05 74 views
0

我已经得到了来自玛雅导出问题three.js所ThreeJS从玛雅2017年出口造成的问题

我有玛雅2017年Mac和从网站上下载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有没有人有任何明智的想法?我甚至不知道我在哪里可以找到导出数据的正确格式。

+0

正因为如此,没有足够的具体信息来帮助您。例如,当它“完全失败”时,发生了什么?有没有错误信息?其他时候,你不能得到任何喜悦,你得到了什么?同时尝试缩小你的问题到一个案例。 – LarsH

回答

0

当我说我没有得到任何快乐我的意思是没有模型呈现,并且据我所知,没有错误。我当然使用控制台来检查数组的内容,例如,据我所知,材料是正确的。 正如我所提到的,我尽可能简单地模型化了一个立方体。 Json 很短,我可以发布? 基本问题只是没有模型显示。我已经检查了照明,以防它被隐藏,并将json外部生成的其他对象看作是否可以看到它,但我认为它没有被实例化并且不会抛出错误?

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

+0

如何处理一些代码而不是回答你自己的问题:) – pailhead

+0

好的 - 如此新的用户,论坛 - 错了。我似乎无法删除答案,并重新发布本应该有进一步评论的内容。我应该删除问题并重新开始吗? –

+0

您是否也可以建议显示JSON的最佳位置,尽管它非常小,但仍然太大以至于无法发表评论? 我已经在这里创建了一个JSFiddle的HTML等,http://jsfiddle.net/weymouthwookie/8wfcr1cr/ - 但那不是真的有帮助,因为它明显没有在代码的那一边失败。 –

0

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

基本问题是,MayJ的ThreeJS JSON导出似乎不起作用 - 导出不正确,ThreeJS不喜欢关于该输出的内容 - 无论如何我都无法使其工作。 工作是使用转换实用程序将OBJ文件更改为JS文件,然后可以使用相同的代码加载它。所以首先你从Maya输出一个OBJ文件 - 很简单。转换实用程序可以在utils> converters> obj> convert_obj_three.py 的threes下载文件夹中找到。您必须在Mac上使用console - Im,并且最简单的方法是将文件的副本放在工作文件夹中,然后一旦有导航到与控制台中的所有文件正确的工作文件夹,使用这条线,

蟒蛇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); 

} 
); 

接下来的问题是,东西不显示 - 材料是黑色的。你只能看到它,如果前面有东西,或者你使用网格或其他东西。我花了一段时间才弄明白这一点,通过检查控制台看到材料正在加载,但它显示为黑色 - 无论我对照明采取了什么,我认为是问题。我发现添加一个材质的颜色魔术般地打开了它,因此添加了一行material.color.setHex(0xffffff);在scene.add(object)之前;线。