Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将导出的Blender纹理转换为使用Three.JS_Three.js_Blender - Fatal编程技术网

将导出的Blender纹理转换为使用Three.JS

将导出的Blender纹理转换为使用Three.JS,three.js,blender,Three.js,Blender,我正在尝试获取一个我已导出以正确显示的混合器模型,但它似乎没有将树叶的纹理正确混合为alpha(尽管树干本身工作正常)。以下是我看到的: 请注意树叶的别名是如何不正确的(例如,它应该看起来像一棵有叶子的树,而不是有灰色纸张的树) 在Blender中,这棵树看起来不错,但有几个人告诉我,它看起来像我的阿尔法倒转了(我不完全确定这是什么意思)。我的猜测是,通过一些文件调整和转换,我可以让附加的图像正常工作。以下是我获得的图像资源: 我认为没有必要,但如果您想查看导出的JSON,我已经将其

我正在尝试获取一个我已导出以正确显示的混合器模型,但它似乎没有将树叶的纹理正确混合为alpha(尽管树干本身工作正常)。以下是我看到的:

请注意树叶的别名是如何不正确的(例如,它应该看起来像一棵有叶子的树,而不是有灰色纸张的树)

在Blender中,这棵树看起来不错,但有几个人告诉我,它看起来像我的阿尔法倒转了(我不完全确定这是什么意思)。我的猜测是,通过一些文件调整和转换,我可以让附加的图像正常工作。以下是我获得的图像资源:

我认为没有必要,但如果您想查看导出的JSON,我已经将其转储到这里:

我很确定问题出在橡树叶子的黑白图像上——因为这是两种包装纹理的唯一区别。是否有一种方法可以使用它或转换它,以便它正确地应用于树叶层

更新

我能够得到一些看起来基本正确的东西(除去一些奇怪的透明度分层问题)-但我很确定它没有被正确地完成。。。任何帮助都将不胜感激

我在白色/黑色和绿色图像上添加了透明度,结果是:

其结果如下:

然后,我在JSON中翻转了对其中两个的引用-结果如下:


我99%确定这没有按预期工作,似乎漫反射贴图没有正常工作。。。有什么建议吗?

Three.js没有遮罩纹理(黑白纹理),因此您需要将其烘焙到漫反射纹理的alpha通道中(因此使用.png格式,因为.jpg不支持alpha-就像您目前所做的那样)

虽然漫反射alpha做得很差(树叶上有洞),但您的更新是正确的。这可以正确完成,例如在Gimp中,通过分解漫反射颜色通道,然后将添加的遮罩层重新组合为alpha(注意,假设白色不透明,黑色透明,因此可能需要反转)


在材质中,根本不使用遮罩纹理。叶片相互重叠也可能会出现问题,这是一个很难解决的问题,因为透明度通常相当高。您可以尝试禁用材质的
depthrite
和/或使用
alphaTest
值(例如,将其设置为0.1)来获得不同类型的工件。

这是100%正确的。要为其他阅读者阐明步骤:-打开gimp中的黑白和彩色图像。-选择彩色图像上的全部,然后执行“颜色->组件->分解(RGB)”-选择黑白图像,然后执行“颜色->反转”-选择整个黑白图像,并作为新层复制到分解的彩色图像中。-执行颜色->组件->合成,使用“RGBA”并选择正确的R/G/B层,并将新层用作“Alpha”-另存为PNG,然后从JS中删除镜面贴图,并将此新图像用作diffuseMap-似乎有效!