공의 법선 방향이 소리에 맞게 뻗어나가는 미묘한 점
12295 단어 Unity
이렇게 된 느낌.
실제로 해보시면 예쁠 것 같아요.
참고 자료
코드
qiita.csharp
using UnityEngine;
using System.Collections.Generic;
public class Sinus : MonoBehaviour
{
float[] _spectrum = new float[128];
float _lastLow = 0;
public GameObject cube;
[Range(0, 1)]
public float t = 1;
List< GameObject> cubes = new List< GameObject>();
List< Vector3> cubess = new List< Vector3>();
void Start()
{
for (int i = 0; i < 128; i++) {
cubes.Add ((GameObject)Instantiate (cube, new Vector3 (5*Mathf.Sin(i * 15), 5*Mathf.Cos(i*20), 0), Quaternion.identity));
cubess.Add (new Vector3 (i * 1.2f, i * 1.2f, 0));
}
}
void Update()
{
AudioListener.GetSpectrumData(_spectrum, 0, FFTWindow.Rectangular);
float low = 0;
for (int i = 1; i < 3; i++)
low += _spectrum[i];
low = _lastLow * (1 - t) + low * t;
transform.localScale = Vector3.one * 0.05f * low + Vector3.one;
_lastLow = low;
print (cubes.Count);
for (int i = 0; i < cubes.Count; i++) {
//cubes[i].transform.rotation = Quaternion.Euler (new Vector3 (1, _spectrum[i]*i, 1) * 30);
cubes[i].GetComponent<Renderer>().material.color = new Color(0.5f+Mathf.Sin(Time.time)+_spectrum[i]*1,0.5f,0.5f+Mathf.Cos(Time.time)+_spectrum[i]*1);
cubes [i].transform.position = new Vector3 (10*Mathf.Sin(i*100+Time.deltaTime*_spectrum[i])*Mathf.Cos(i),10*Mathf.Sin(i*100)*Mathf.Sin(i),10*Mathf.Cos(i*100));
cubes [i].transform.localScale = new Vector3 (0.1f,0.1f,1000*_spectrum[i]);
cubes [i].transform.LookAt(new Vector3 (100*Mathf.Sin(i*100)*Mathf.Cos(i),100*Mathf.Sin(i*100)*Mathf.Sin(i),100*Mathf.Cos((i*100))));
}
}
}
이런 느낌!!
소리 데이터, 128-64인 것 같아!
응, 배열 중에 단숨에 소리 데이터에 들어간 것 같아!대단해!나 몰라!
음악을 열심히 공부하면 인생이 더 풍부해지겠지!
최고!
사운드에 대한 스펙트럼
참고 자료
우선, 소리는 많은 주파수의 집합이기 때문에
AudioListener.GetSpectrumData(_spectrum, 0, FFTWindow.Rectangular);
빠른 부립엽 변환.나는 많은 파의 데이터 중의 중량 성분이 아마도 스펙트럼의 배열에 들어갔을 거라고 생각한다...
a*sin(T*sita)의 a 섹션은 스펙트럼입니다.
어떤 순서로 들어가느냐에 따라 소리의 높이(T의 크기가 다르다)가 순서대로 나뉘는 것 같다.
부립엽 변환 등에 관하여
참고 자료
Reference
이 문제에 관하여(공의 법선 방향이 소리에 맞게 뻗어나가는 미묘한 점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/renyama/items/f179dbafe36818f0bcc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
using System.Collections.Generic;
public class Sinus : MonoBehaviour
{
float[] _spectrum = new float[128];
float _lastLow = 0;
public GameObject cube;
[Range(0, 1)]
public float t = 1;
List< GameObject> cubes = new List< GameObject>();
List< Vector3> cubess = new List< Vector3>();
void Start()
{
for (int i = 0; i < 128; i++) {
cubes.Add ((GameObject)Instantiate (cube, new Vector3 (5*Mathf.Sin(i * 15), 5*Mathf.Cos(i*20), 0), Quaternion.identity));
cubess.Add (new Vector3 (i * 1.2f, i * 1.2f, 0));
}
}
void Update()
{
AudioListener.GetSpectrumData(_spectrum, 0, FFTWindow.Rectangular);
float low = 0;
for (int i = 1; i < 3; i++)
low += _spectrum[i];
low = _lastLow * (1 - t) + low * t;
transform.localScale = Vector3.one * 0.05f * low + Vector3.one;
_lastLow = low;
print (cubes.Count);
for (int i = 0; i < cubes.Count; i++) {
//cubes[i].transform.rotation = Quaternion.Euler (new Vector3 (1, _spectrum[i]*i, 1) * 30);
cubes[i].GetComponent<Renderer>().material.color = new Color(0.5f+Mathf.Sin(Time.time)+_spectrum[i]*1,0.5f,0.5f+Mathf.Cos(Time.time)+_spectrum[i]*1);
cubes [i].transform.position = new Vector3 (10*Mathf.Sin(i*100+Time.deltaTime*_spectrum[i])*Mathf.Cos(i),10*Mathf.Sin(i*100)*Mathf.Sin(i),10*Mathf.Cos(i*100));
cubes [i].transform.localScale = new Vector3 (0.1f,0.1f,1000*_spectrum[i]);
cubes [i].transform.LookAt(new Vector3 (100*Mathf.Sin(i*100)*Mathf.Cos(i),100*Mathf.Sin(i*100)*Mathf.Sin(i),100*Mathf.Cos((i*100))));
}
}
}
참고 자료
우선, 소리는 많은 주파수의 집합이기 때문에
AudioListener.GetSpectrumData(_spectrum, 0, FFTWindow.Rectangular);
빠른 부립엽 변환.나는 많은 파의 데이터 중의 중량 성분이 아마도 스펙트럼의 배열에 들어갔을 거라고 생각한다...
a*sin(T*sita)의 a 섹션은 스펙트럼입니다.
어떤 순서로 들어가느냐에 따라 소리의 높이(T의 크기가 다르다)가 순서대로 나뉘는 것 같다.
부립엽 변환 등에 관하여
참고 자료
Reference
이 문제에 관하여(공의 법선 방향이 소리에 맞게 뻗어나가는 미묘한 점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/renyama/items/f179dbafe36818f0bcc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)