9

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

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

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

问题
但现在我被卡住了(再次)。我的问题是模型没有任何纹理或材料。

我使用了SceneJS 的Seymour Plane 示例。我转换的模型几乎看不到。它是黑色的,似乎对场景中的照明没有反应。如果我将飞机和模型一起加载,我可以看到模型已加载,因为它的手臂和腿伸出飞机。

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

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

只要可行,任何其他在 SceneJS 中加载模型的方法都可以。

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

我正在使用

  • Windows 7 家庭高级版 64 位
  • Python 2.7 (Windows 32bit)
    我选择了 32 位版本,因为对库的支持似乎更好,并且可用的安装程序更多。起初我混合了 32 位和 64 位,这给我带来了麻烦,但现在一切似乎都正常(除了纹理)。
  • 搅拌机 2.59
  • 场景JS 0.8.0

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

4

1 回答 1

7

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

我看到您使用的是 SceneJS 的 0.8 版...事情一直在不断变化,因此实际上可能最容易从 github和从我的个人 repo中提取 SceneJS 的2.0 分支和 scenejs-pycollada 。我基本上将 SceneJS-pycollada 的第一个版本定位为 SceneJS 0.9,但该版本从未正式发布。此外,从长远来看,如果您现在切换,您将不必重写所有内容......

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

因此,请随时对此答案发表评论或更新您的问题。我会尽力关注它。

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

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

PPPS 实际上,Amy Rose 模型不适合您的原因之一是因为 scenejs-pycollada 还不支持多种材质。今晚我很快就会为此添加一些支持。

于 2011-10-10T22:45:33.463 回答