动机
我正在尝试使用WebGL创建一个小型演示应用程序。我选择使用SceneJS,因为它看起来很简单,并且足以满足此目的。
我已经下载了几个.blend模型(Amy Rose等),并使用Blender将它们导出为Collada(.dae)文件。然后,我使用scenejs-pycollada将它们转换为json模型。
我花了几个小时才使scenejs-pycollada转换器正常工作。如果您以前从未使用过Python,显然要让这些Python依赖关系在Windows中工作并不容易。 ;)
问题
但是现在(再次)我被卡住了。我的问题是模型没有任何纹理或 Material 。
我使用了SceneJS的Seymour Plane Example。我转换后的模型几乎看不到。它是黑色的,似乎对场景的照明没有反应。如果同时加载平面和模型,则可以看到模型已加载,因为模型的 ARM 和腿都伸出了平面。
现在,我遵循了一些教程,可以让我将纹理导出为PNG图像。然后,我在JSON模型中修改了纹理文件名以匹配该文件名,但这无济于事。
因此,我希望有人能帮助我找到一种方法,将Blender模型(或其他常见的3D模型)导出为SceneJS使用的JSON格式,包括纹理。
只要可以,在SceneJS中加载模型的任何其他方法也可以。
如果有人提供了免费下载正文/数字JSON模型的链接,那将对您有所帮助,但我宁愿了解它的工作原理。 :)
我正在使用
我的工作流程
在Blender中,我将模型导出到Collada(* .dae)文件,然后使用scenejs-pycollada将其转换为Raw JSON。这给了我一个带有两个对象的JSON文件。第一个似乎是场景,第二个是模型。我保留第二个参数并将其放在SceneJS示例代码中使用的Javascript变量中。该模型以
, "type": "library", "parent": "Scene"
属性结尾,我需要从代码中删除该属性以使其完全加载。 最佳答案
我实际上是scenejs-pycollada的作者。让我看看是否能为您提供帮助:)
我看到您正在使用SceneJS的0.8版...事情一直在变化中,因此实际上从我的2.0 branch of SceneJS from github中拉出personal repo和scenejs-pycollada可能是最简单的。我基本上将SceneJS-pycollada的第一个发行版定位为SceneJS 0.9,但是该版本从未得到正式发行。而且,从长远来看,如果您现在切换,就不必重写所有内容...
有问题的Windows编译也是一个很大的麻烦,我真的希望那些精明的开发人员会为您解决Windows上的问题。 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还不支持多种 Material 。今晚我将为此提供一些支持。