将3D模型转换为SceneJS JSON,包括纹理

时间:2011-10-09 18:50:40

标签: json textures blender scenejs

动机
我正在尝试使用WebGL创建一个小型演示应用程序。我选择使用SceneJS,因为它似乎是一个简单的框架,并且足以达到此目的。

我已经下载了几个.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中加载模型的任何其他方法也都可以,只要它有效。

如果有人可以免费下载身体/身材JSON模型的链接,那么现在就会有所帮助,但我更愿意了解它的工作原理。 :)

我正在使用

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

我的工作流程
在Blender中,我将模型导出到Collada(* .dae)文件,然后使用scenejs-pycollada将它们转换为Raw JSON。这给了我一个JSON文件,里面有两个对象。第一个似乎是场景,第二个是模型。我保留第二个并将其放在SceneJS示例代码中使用的Javascript变量中。模型以属性, "type": "library", "parent": "Scene"结束,我需要从代码中删除它以使其加载。

1 个答案:

答案 0 :(得分:7)

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

我看到你正在使用SceneJS的0.8版本......事情已经变得很不稳定了,所以实际上最容易从我的2.0 branch of SceneJS from github中提取personal repo和scenejs-pycollada。我基本上将SceneJS 0.9作为第一个版本的scenejs-pycollada,但该版本从未正式发布。此外,从长远来看,如果你现在只是切换,你将不必重写所有内容......

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

因此,请随意评论此答案或更新您的问题。我会试着留意它。

P.S。或者,如果你真的很沮丧我实际上在https://github.com/rehno-lindeque/Blender-WebGL-exporter有第二个搅拌机出口商,但我不建议使用这个 - 它已经过时了。很久以前,唯一的其他scenejs collada exporter已被弃用。

P.P.S。在scenejs-pycollada本身也有例子和一些测试模型。如果您只是想要一个快速模型,请查看https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example,尽管它确实不是最漂亮的模型。

P.P.P.S。实际上,Amy Rose模型不适合你的原因之一是因为scenejs-pycollada还不支持多种材料。我今晚很快就会为此增加一些支持。