Javascript 如何从Blender将模型和相关纹理导入three.js?

Javascript 如何从Blender将模型和相关纹理导入three.js?,javascript,three.js,blender,Javascript,Three.js,Blender,我刚接触Open/WebGL,在从下载的Blender模型获取纹理/皮肤以显示在three.js中时遇到问题。我可以从Chrome的“网络”选项卡确认它正在下载所有纹理文件,但由于某些原因,它们没有被渲染 我使用webgl_loader_collada.html示例作为基础,将示例3D模型从blender导入three.js 对于输入,我使用。作为参考,可以看到NASA 3D模型的完整图库 我目前的步骤: 下载并在Blender中打开模型 文件->导出->Collada(.dae) 要查看:

我刚接触Open/WebGL,在从下载的Blender模型获取纹理/皮肤以显示在three.js中时遇到问题。我可以从Chrome的“网络”选项卡确认它正在下载所有纹理文件,但由于某些原因,它们没有被渲染

我使用webgl_loader_collada.html示例作为基础,将示例3D模型从blender导入three.js

对于输入,我使用。作为参考,可以看到NASA 3D模型的完整图库

我目前的步骤:

  • 下载并在Blender中打开模型
  • 文件->导出->Collada(.dae)
要查看:

  • 修改threejs/examples/webgl_loader_collada.html的副本以指向导出的.dae文件
  • 移除第59行上的刻度
使用“混合器导出”中的默认选项,生成的渲染将缺少所有纹理。如果我启用“包含材质纹理”,我最终会在模型的主要部分使用金色,但其他纹理都不会被映射,太阳能电池板也会变得完全黑色。或者,如果我也选中“包含UV纹理”,我会得到一个没有纹理的全灰色渲染

我还尝试了Blender的three.js js exporter插件,但在这种情况下(使用适当的演示模板),我得到的只是一个js异常“无法读取未定义的属性'opacity'

我在翻译过程中是做错了什么,还是源模型有问题?如果是后者,我如何着手修复原始模型或其导出形式

谢谢,
-David

非常好的项目,感谢链接

用于collada出口

  • 不包括UV纹理
  • 包括材质纹理
  • 不复制(可以使用提供的纹理图像)
  • 仔细检查.dae文件中的纹理路径,在
    标记中,使用相对路径
我自己试过,如果你愿意的话,
但它并不完美,例如,没有使用法线贴图的箔片效果。

也许可以尝试GLTF格式而不是collada?它是一种更为现代的格式,专为实时/网络资产交付而设计,并被广泛采用

搅拌机出口商:

导出为.glb文件后,可以将其拖到此处进行检查:

然后使用三个.GLTFLoader()来加载它


感谢您的快速回复。复制选项做了一件有用的事情——它使路径成为相对路径,如果没有它,它将使用完整的系统路径,并且需要手动编辑。经过更多的实验,铝箔效果的问题似乎是某种分层问题——合并各种出口选项的结果,我可以得到金色或蓝色的铝箔纹理,但不是它们的正确合并组合,我还不知道为什么。这非常有用,特别是对于要测试的查看器