1. 首页
  2. three.js

three.js在添加到场景之前更改/变异纹理中的颜色

three.jsn在将纹理添加到>nHi之前,是否可以更改纹理的某些像素颜色!n材料有.onBeforeCompile()。使用它添加您想要的功能n一种方法是将图像绘制到画布上,并对同一画布应用其他修改,然后将画布用作纹理。n将新画布用作每个精灵的纹理的性能如何?n我不知道。我想它至少会消耗更多的内存。@prisoner849关于使用着色器(修改)的建议可能适用,具体取决于需要的修改类型。如果是应用于所有像素的某种变换,则着色器可能是合适的。我们需要更多地了解上下文。n想象一张有蓝色像素的精灵表,蓝色代表团队。我想通过编程将此蓝色更改为红色,以使用相同的精灵表。n是否可以选择在片段着色器中完全交换R和B通道?n但说真的,可以替换着色器中的纯色。但是如果纯颜色之间有抗锯齿渐变呢?嗯。n分割纹理是一种东西吗?其中您有一个纹理,该纹理由每个像素表示的“组织”(皮肤、头发、衣服、盔甲等)的整数定义,并提供纹理索引到的颜色托盘数组?(仍然只适用于纯色。)EliasHasle:n但是如果纯色之间有抗锯齿渐变呢?嗯。n我会准备纯蓝色像素的精灵表。因此,我只需要找到这些像素并将其更改为红色。n然后我猜检查着色器中读取的纹理并修改值(如果是纯蓝色)可能是最简单的(?)和最快(?)解决方案。EliasHasle:n检查着色器中读取的纹理n这是什么意思?我能举个例子吗?n在阅读了一些有关着色器的基本教程(包括涉及纹理的教程)后,您可能会理解这一点:nvec4 == vec3(0.,0.,1.))>nOr>nNot an easy solution for an easy task I\”m afraid.n@Enzo Why so? Just a couple of additional lines in a shader.nI don\”t even know how to read all the color pixels of the texture.nPass a texture in a uniform, then via UV coordinates you\”ll get a texel and then change/swap r和b通道,如果它处于某种状态。这就是Elias提供的。n或者我无法解决这个问题nShader-Shadertoy BETA 5只是一个交换示例(需要取消对行的注释以获得效果)n Change/mutate colors in a texture before being added to the scenen

three.js在添加到场景之前更改/变异纹理中的颜色 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-js%e5%9c%a8%e6%b7%bb%e5%8a%a0%e5%88%b0%e5%9c%ba%e6%99%af%e4%b9%8b%e5%89%8d%e6%9b%b4%e6%94%b9-%e5%8f%98%e5%bc%82%e7%ba%b9%e7%90%86%e4%b8%ad%e7%9a%84%e9%a2%9c%e8%89%b2/