티스토리 뷰
개념 설명 :
OSC 데이터 통신 프로토콜
OSC 라고 하는 오픈 사운드 컨트롤(Open Sound Control) 은 오디오 업계의 여러 분야에서 널리 사용되는 개방형 프로토콜입니다. 주로 클라이언트 간에 일반 오디오 데이터를 네트워킹하는 데 사용하지만 오디오 이외의 데이터에도 사용할 수 있습니다. (websocket : udp 로 통신하고 ip주소와 포트 넘버만 있으면 된다.)
이거 됨 !
https://thomasfredericks.github.io/UnityOSC/
여기서 유니티 페키지를 다운받았다.
포트번호만 수정했는데
딱히 상관없는 오류였음.. 암튼 고치려면
오류:
No Cloud ProjectID Found for Analytics
UnityEngine.Debug:LogError (object)
해결
https://docs.unity3d.com/kr/2020.3/Manual/UnityAnalyticsMismatchedProjectId.html
구름 누르면 Sercices 생긴다.
대충 여기에서 새로운 아이디 만들어서 해줌뎀...
터디는 프로젝트 파일 들어있음 !
나는 다른 값을 보내고 싶은데
CubeX
CubeY
와 같은 채널의 이름에 반응하는 것같음
따라서 채널이름을 저것처럼 맞춰주고 oscout.해주니까 값 프린트 됐음
oscin 해서 다른 컴터 maxmsp에서 값 받아왔음
테이블 arg0번에 내가 원하는 값있으므로 여기서 값 뽑아서 사용했다
dat -> 초록색으로 변경해줘야해서 datto써줬다.
셀렉트를 사용해서 채널이름을 변경해주었다
[유니티]
나는 받기만 할거
ReceivePosition.cs
여기서 로그 출력했다.
[결과]
--> 응용
이거를 이제 VFX 그래프의 인자로 받아서 사운드 반응 파티클을 만들거다 !
최종. 2024.05.05 업데이트 .
TD
1.OSC In
2.받아온 값 정리
**여기서 Name이 중요하다.
3.osc out으로 값내보낸다. 여기서 localhost의 주소가 중요하고, 포트번호 역시 중요하다.
유니티.
OSC를 받아오는 스크립트가 있고
받아온 값을 처리하는 스크립트가 있다. 여기서 우리가 건드려야할 코드는 아래의 스크립트이다.
Receive Position.cs
using UnityEngine;
using UnityEngine.VFX;
using System.Collections;
public class ReceivePosition : MonoBehaviour {
public OSC osc;
public VisualEffect vfx;
// Use this for initialization
void Start () {
//osc 신호가 올 때 함수 실행 됨(이벤트 실행 함수) 여기서 채널 네임이"/"다음 *문자
//osc.SetAddressHandler( "/CubeXYZ" , OnReceiveXYZ );
osc.SetAddressHandler("/CubeX", OnReceiveX);
osc.SetAddressHandler("/CubeY", OnReceiveY);
osc.SetAddressHandler("/CubeZ", OnReceiveZ);
//vfx graph 불러오기
vfx = GetComponent<UnityEngine.VFX.VisualEffect>();
}
// Update is called once per frame
void Update () {
}
void OnReceiveX(OscMessage message) {
//OnReceiveX함수가 불릴때 즉 "CubeX" 채널의 값이 들어올때 실행됨.
// Cube X 가 보낸 message는 bit로 들어온다 -> 플로어트 값으로 변경하는 함수 (0)번째 인자.
float x = message.GetFloat(0);
//Debug.Log(x);
//####### 받아온 값 여기서 적용하면됨 !!!!!!!!!!!!!!!!
//브이에프엑스 그래프에 값넣기 (vfx의 블랙보드의 내가 만든 변수이름 , 적용하고 싶은 값 입력)
vfx.SetFloat("X", x);
print("xxxxx"+x);
}
void OnReceiveY(OscMessage message)
{
//OnReceiveY함수가 불릴때 즉 "CubeY" 채널의 값이 들어올때 실행됨.
// Cube Y 가 보낸 message는 bit로 들어온다 -> 플로어트 값으로 변경하는 함수 (0)번째 인자.
float y = message.GetFloat(0);
//Debug.Log(message + "y");
vfx.SetFloat("Y", y);
print("YYYYYY"+y);
}
void OnReceiveZ(OscMessage message)
{
//OnReceiveZ함수가 불릴때 즉 "CubeZ" 채널의 값이 들어올때 실행됨.
// Cube Z 가 보낸 message는 bit로 들어온다 -> 플로어트 값으로 변경하는 함수 (0)번째 인자.
float z = message.GetFloat(0);
//Debug.Log(message + "z");
vfx.SetFloat("Z", z);
print("ZZZZZ"+z);
}
}
VFX 그래프의 속성에 x,y,z 추가해줘야한다.
'Unity' 카테고리의 다른 글
Unity_ animation _trigger (0) | 2022.12.14 |
---|---|
Unity _ Shader : hololens 2 MRTK UI (1) | 2022.12.09 |
unity_ 타임라인 영상 기록 추출 (0) | 2022.11.11 |
unity_TD_udp통신 (0) | 2022.11.07 |
Unity 2020: 시네머신 ///// Timeline (0) | 2022.10.19 |
- Total
- Today
- Yesterday
- VR
- AI
- RNN
- 라즈베리파이
- TouchDesigner
- motor controll
- JacobianMatrices
- Express
- ardity
- CNC
- oculuspro
- DeepLeaning
- unity 360
- colab
- three.js
- StableDiffusion
- MQTT
- Arduino
- 후디니
- emotive eeg
- node.js
- 유니티
- houdini
- Python
- opencv
- sequelize
- Java
- 유니티플러그인
- docker
- Unity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |