Phyllotaxis算法应用

本文介绍了如何使用Phyllotaxis算法和Unity来创建音频粒子效果。通过处理音频频谱数据,分别获取左、右声道信息,并利用叶序算法生成粒子位置。结合Trail Renderer与PostProcessing进行渲染,最终实现音频可视化。提供了包含实现效果的录屏视频和工程的网盘链接。
摘要由CSDN通过智能技术生成

公司最近让研究音频粒子方面的内容,然后在youtob上看到了比较详细的教程,跟着教程自己做了一个Demo

其主要用到了叶序的算法

 private Vector2 PhyllotaxisPo(float degree, float scale, float count)
    {
        double angle = count * (degree * Mathf.Deg2Rad);
        float r = scale * Mathf.Sqrt(count);
        float x = r * (float)System.Math.Cos(angle);
        float y = r * (float)System.Math.Sin(angle);
        Vector2 temp = new Vector2(x, y);
        return temp;
    }

而音频粒子方面的脚本主要是下面的脚本;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;


/// <summary>
/// 声道
/// </summary>
public enum Channel
{
    /// <summary>
    /// 立体声
    /// </summary>
    _stereoChannel,
    /// <summary>
    /// 左声道
    /// </summary>
    _leftChannel,
    /// <summary>
    /// 右声道
    /// </summary>
    _rightChannel
}
[RequireComponent(typeof(AudioSource))]
public class AudioPeer : MonoBehaviour
{
    //public GameObject[] _atomicAttraction;


    [Header("声道")]
    public Channel _channel = new Channel();
    private AudioSource _mAudioSource;
    [Header("音频频谱样本")]
    /// <summary>
    /// 立体声
    /// </summary>
    public  float[] _samples = new float[512];
    /// <summary>
    /// 左声道
    /// </summary>
    public  float[] _sampleLeft = new float[512];
    /// <summary>
    /// 右声道
    /// </summary>
    public  float[] _sampleRight = new float[512];




    [Header("频段")]
    public  float[] _frepBand = new float[8];
    [Header("频段缓冲器")]
    public  float[] _bandBuffer = new float[8];
    [Header("频段减弱")]
    private float

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值