2011-10-09 142 views
9

动机
我正尝试使用WebGL创建一个小型演示应用程序。我选择使用SceneJS,因为它看起来是一个简单的框架,并且足以达到这个目的。将3D模型转换为SceneJS JSON,包括纹理

我已经下载了一些.blend模型(Amy Rose等),并使用Blender将它们导出为Collada(.dae)文件。然后我使用scenejs-pycollada将它们转换为json模型。

我刚刚花了几个小时让scenejs-pycollada转换器正常工作。显然,如果你以前从未使用Python,那么让这些Python依赖在Windows中工作并不那么容易。 ;)

问题
但现在我卡住(再次)。我的问题是模型没有任何纹理或材质。我使用了SceneJS的Seymour Plane Example。我转换的模型几乎不可见。它是黑色的,似乎没有响应场景中的照明。如果我将飞机和模型一起载入,我可以看到模型已加载,因为它的胳膊和腿都伸出了飞机。

现在我遵循了几个教程,可以让我将纹理导出为PNG图像。然后,我修改了JSON模型中的纹理文件名以匹配文件名,但它没有帮助。

所以我希望有人可以帮助我找到一种方法将Blender模型(或其他常见3D模型)导出到SceneJS使用的JSON格式,包括纹理。

任何其他在SceneJS中加载模型的方法也可以,只要它能够工作。

如果你有一个免费下载body/figure JSON模型的链接,那现在会有所帮助,但我宁愿学习它是如何工作的。 :)

我使用

  • Windows 7家庭高级版64位
  • Python 2.7版(32位的Windows)
    我选择了32位版本,因为图书馆看似更好的支持,以及更多可用的安装程序。起初我混合了32位和64位,这给我带来了麻烦,但现在一切似乎都奏效了(除了纹理,就是这样)。
  • 搅拌机2.59
  • SceneJS 0.8.0

我的工作流程
在搅拌机我的模型导出为COLLADA格式(* .dae)文件,然后使用scenejs-它们转换为原始JSON pycollada。这给了我一个包含两个对象的JSON文件。第一个似乎是现场,第二个模型。我保留第二个,并将其放入一个在SceneJS示例的代码中使用的Javascript变量。该模型以属性, "type": "library", "parent": "Scene"结尾,我需要从代码中删除它以使其加载。

回答

7

我其实是scenejs-pycollada的作者。让我看看我是否可以帮助你:)

我看到你使用的是SceneJS的0.8版本......事情已经相当流行,所以它可能最容易从我的personal repo中拉出2.0 branch of SceneJS from github和scenejs-pycollada 。我基本上是针对scenejs-pycollada的第一个发行版的SceneJS 0.9,但该版本从未正式发布。另外,从长远来看,如果您现在切换,您将不必重写所有内容...

有问题的Windows编译也是一个大刺,我真的希望numpy的开发人员能够为您解决这个问题民间。一旦SceneJS 2.0发布,我将发布一个正式版本的scenejs-pycollada,它包含了Windows所有必需的依赖项。

因此,随时对此问题发表评论或更新您的问题。我会尽量留意它。

P.S.另外,如果你真的感到沮丧,我实际上有第二个搅拌机出口商在https://github.com/rehno-lindeque/Blender-WebGL-exporter,但我不推荐使用这个 - 它是非常过时的。唯一的其他scenejs collada导出器很久以前就被弃用了。

P.P.S.还有scenejs-pycollada本身的示例和一些测试模型。如果你只是想要一个快速模型玩,看看https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example虽然承认它不是有史以来最漂亮的模型。

P.P.P.S.其实Amy Rose模型不适合你的原因之一是scenejs-pycollada不支持多种材质。我很快为今晚增加了一些支持。

+0

谢谢!它似乎与你的版本scenejs-pycollada和SceneJS 2.0一起工作。不需要重新编译任何东西,所以这很好。 ;)我不会非常指责Numpy的人,安装不同版本的各种库是我自己的错。 在这一刻我正在尝试GLGE,有人推荐。 (它加载.dae文件而不必转换它们)。现在我需要让我的演示工作,但我希望我很快能够重新调查SceneJS。再次感谢。 – GolezTrol

+0

没问题,还有更多的bug让我知道:) –