0

帮我理解如何在PIXI中更改颜色有一张红色的图片假设 http://data.3dtuning.com/tun/4nI0lcnL9b.jpg 需要将颜色从红色更改为绿色,用于prtimerna。而是让影子留下,也就是给定了基调。

我可以逐个像素地做到这一点。如果对算法有想法,我也将不胜感激

var cR = baseData[i];
                var cG = baseData[i + 1];
                var cB = baseData[i + 2];

                if (alpha) {
                    currentData[i + 3] = alpha[i / COMPONETNS_PER_PIXEL];
                } else {
                    currentData[i + 3] = baseData[i + 3];
                }

                if (cR === cG && cR === cB) {
                    currentData[i] = currentData[i + 1] = currentData[i + 2] = cR * brightness;
                    continue;
                }

                var gray = Math.min(cR, cG, cB);

                // parts should be red
                var percent = (cR - gray) / 255;

                currentData[i] = (cR + (color.r - 255) * percent) * brightness;
                currentData[i + 1] = (cG + color.g * percent) * brightness;
                currentData[i + 2] = (cB + color.b * percent * 0.9) * brightness;

但我想将其更改为 VVGL 我非常感谢您的帮助

4

1 回答 1

0

我有一个提示,但遗憾的是不是一个完整的答案。我检查了所有 pixi 示例一次,并尝试理解带有滤色器的示例。

在示例中,颜色矩阵过滤器应用于“app.stage.filters”并且它正在替换颜色。

它使用以下代码:

var filter = new PIXI.filters.ColorMatrixFilter();
app.stage.filters = [filter];


app.ticker.add(function(delta) {
  count += 0.1;

  var matrix = filter.matrix;

  matrix[1] = Math.sin(count) * 3;
  matrix[2] = Math.cos(count);
  matrix[3] = Math.cos(count) * 1.5;
  matrix[4] = Math.sin(count / 3) * 2;
  matrix[5] = Math.sin(count / 2);
  matrix[6] = Math.sin(count / 4);
}

Pixi 文档对矩阵参数有以下描述,遗憾的是这无助于理解它:

颜色矩阵过滤器的矩阵。默认值:[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]

我还在这篇关于 Flash 的帖子中找到了这张图片,我假设它描述了矩阵的参数和转换。

我尝试使用这些资源来创建自己的过滤器,但我失败了,没有时间进一步尝试。

于 2018-07-17T15:29:44.990 回答