You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 3D中如何修改音频波形绘制线条的厚度?

Unity RawImage绘制音频波形增加线条厚度的解决办法

原代码的逻辑很直接:遍历每个音频采样点,将采样值(范围-1到1)映射为RawImage上的Y坐标,再按采样点数量均分RawImage宽度得到X坐标,每个采样点只绘制一个像素,所以线条是1像素粗。

要增加线条厚度,核心思路是每个采样点对应的X位置,在Y轴方向绘制一片连续的像素,而不是单个像素。具体实现如下:

  1. 先定义线条厚度变量,按需调整:
int waveformThickness = 3; // 线条厚度,可自行修改数值
  1. 修改绘制循环,针对每个采样点的中心Y位置,上下扩展绘制像素(同时处理边界,避免超出RawImage的像素范围):
// 绘制波形
for (int i = 0; i < size; i++) { 
    // 计算当前采样点对应的X坐标
    int xPos = (int)(width * i / size);
    // 将音频采样值(-1~1)归一化到0~1,再转换为RawImage的Y中心坐标
    float normalizedSample = (samples[i] + 1f) / 2f;
    int yCenter = (int)(height * normalizedSample);

    // 计算垂直方向的绘制范围,防止超出图像边界
    int startY = Mathf.Max(0, yCenter - waveformThickness / 2);
    int endY = Mathf.Min(height - 1, yCenter + waveformThickness / 2);

    // 遍历Y范围,绘制每个像素
    for (int y = startY; y <= endY; y++) {
        rawimage.SetPixel(xPos, y, waveformColor);
    }
}
// 将像素数据上传到GPU
rawimage.Apply();

如果想要更顺滑的波形,还可以优化:当多个采样点映射到同一个X坐标时,记录这些采样点的最大和最小Y值,填充两者之间的所有像素,再叠加厚度扩展,这样波形的垂直表现会更连贯。示例代码如下:

// 先按X坐标分组,记录每个X的最大和最小Y值
Dictionary<int, (int minY, int maxY)> xYRange = new Dictionary<int, (int, int)>();

for (int i = 0; i < size; i++) { 
    int xPos = (int)(width * i / size);
    float normalizedSample = (samples[i] + 1f) / 2f;
    int y = (int)(height * normalizedSample);

    if (!xYRange.ContainsKey(xPos)) {
        xYRange[xPos] = (y, y);
    } else {
        var current = xYRange[xPos];
        xYRange[xPos] = (Mathf.Min(current.minY, y), Mathf.Max(current.maxY, y));
    }
}

// 加上线条厚度的扩展,绘制每个X对应的Y范围
foreach (var kvp in xYRange) {
    int x = kvp.Key;
    int originalMinY = kvp.Value.minY;
    int originalMaxY = kvp.Value.maxY;

    // 扩展厚度
    int startY = Mathf.Max(0, originalMinY - waveformThickness / 2);
    int endY = Mathf.Min(height - 1, originalMaxY + waveformThickness / 2);

    for (int y = startY; y <= endY; y++) {
        rawimage.SetPixel(x, y, waveformColor);
    }
}

rawimage.Apply();

内容的提问来源于stack exchange,提问作者Michael D. Knight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:39:54