【问题标题】:How to generate a color histogram in unity?如何统一生成颜色直方图?
【发布时间】:2016-07-29 11:57:07
【问题描述】:

我有一个统一的 texture2d,我想根据每个像素的色调值生成一个颜色直方图。我尝试过使用 getPixels,但对于 1920x1080 的纹理来说速度非常慢。

if (tex == null)
{
    return null;
}
tex = GetComponent<GUITexture>().texture as Texture2D;
Color32[] texColors = tex.GetPixels32();
int total = texColors.Length;

int[] Harray = new int[360];
for (int i = 0; i < total; i++)
{
    float H;
    float S;
    float V;

    Color.RGBToHSV(new Color(texColors[i].r, texColors[i].g, texColors[i].b),out H,out S,out V);
    Harray[(int)H]++;
}


for (int i = 0; i < 360; i++)
{
    PlotManager.Instance.PlotAdd("Hue", Harray[i]);
}

我认为着色器可能会提供帮助,但我没有着色器编程经验。着色器能否填充色调发生数组并返回它,同时保持良好的帧速率?

【问题讨论】:

  • 真的,Unity 不是为这样模糊的东西而构建的。这不是它的用途。你不妨开始尝试在原生 iOS 中制作骨骼动画,你知道吗?我建议您从资产商店获取 NatCam,并联系该软件包的制造商以了解满足此需求的本机插件。
  • @JoeBlow 你在 NatCam 工作吗?还是只是一个大粉丝?我看到的所有 StackOverflow 帖子都有你推荐它 - 考虑购买它并努力寻找第二个意见;)
  • 嘿@EvanKnowles!显然我不为 NatCam 工作。终于有人发布了一个合适的相机包是一个奇迹,因为 Unity 基本上还没有相机软件。它是“每个人都使用它”的一个例子——就像 AntiCheatToolKit 或 Vectrosity 一样。实现它需要 6-12 个人月的工作量。

标签: unity3d shader


【解决方案1】:

Unity 商店中有一个资产使用带有 RWStructuredBuffer 的计算着色器来实现这一点:https://www.assetstore.unity3d.com/en/#!/content/15699

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2015-01-24
    • 1970-01-01
    • 2020-09-07
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多