【问题标题】:Convert 3D model to SceneJS JSON, including texture将 3D 模型转换为 SceneJS JSON,包括纹理
【发布时间】:2011-12-04 01:54:06
【问题描述】:

动机
我正在尝试使用 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 中加载模型的方法都可以。

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

我正在使用

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

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

【问题讨论】:

    标签: json textures blender scenejs


    【解决方案1】:

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

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

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

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

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

    附言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。再次感谢。
    • 没问题,有更多错误请告诉我:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2012-11-17
    • 2018-05-30
    • 2017-05-11
    • 2015-06-29
    • 2012-08-12
    • 2012-08-04
    相关资源
    最近更新 更多