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

9

动机
我正在尝试使用WebGL创建一个小型演示应用程序。我选择使用SceneJS,因为它似乎是一个易于使用的框架,并且对此目的来说完全足够。

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

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

问题
但现在我又卡住了。我的问题是这些模型没有任何纹理或材质。

我使用了SceneJS的Seymour Plane Example。我转换的模型几乎看不见。它是黑色的,似乎不受场景中的光照影响。如果我同时加载飞机和模型,我可以看到模型已经被加载,因为它的手臂和腿伸出了飞机。

现在,我按照一些教程导出纹理为PNG图像。然后,我修改了JSON模型中的纹理文件名以与文件名匹配,但这并没有帮助。

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

任何其他加载模型到SceneJS的方法都可以,只要它能工作。

如果有人有免费下载身体/人物JSON模型的链接,那暂时会有所帮助,但我更想学习如何做这件事。:)

我正在使用

  • Windows 7 Home Premium 64位
  • Python 2.7 (Windows 32位)
    我选择了32位版本,因为它似乎对库有更好的支持,并且有更多可用的安装程序。起初我混淆了32位和64位,这给我带来了麻烦,但现在一切似乎都可以工作(除了纹理)。
  • Blender 2.59
  • SceneJS 0.8.0

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

1个回答

7

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

我看到您正在使用 SceneJS 的 0.8 版本...事情一直在变化,所以从 github 拉取 2.0 分支的 SceneJS 和我的 个人存储库 中的 scenejs-pycollada 可能会更容易。我最初是针对 SceneJS 0.9 开发 scenejs-pycollada 的第一个版本发布的,但该版本从未正式发布。此外,从现在开始转换,您将不必重写所有内容...

问题窗口编译也是一个大问题,我真希望 numpy 开发人员能为您的 windows 用户解决这个问题。一旦 SceneJS 2.0 发布,我就会发布官方版本的 scenejs-pycollada,其中包含所有必要的 windows 依赖项。

因此,随时评论此答案或更新您的问题。我会尽量关注。

P.S. 如果您非常沮丧,我实际上有第二个blender导出器,位于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尚不支持多个材质。我今晚会快速添加一些支持。


谢谢!使用您的版本scenejs-pycollada和SceneJS 2.0似乎可以工作。也不需要重新编译任何东西,这很好。 ;) 我不太怪Numpy的人,安装不兼容的各种库的问题很大程度上是我的错。目前我正在尝试GLGE,有人推荐它。(它可以加载.dae文件而无需转换)。现在我需要让我的演示程序正常运行,但我希望很快能有时间重新调查SceneJS。再次感谢。 - GolezTrol
没问题,如果还有更多的bug,请让我知道 :) - Rehno Lindeque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接