-
vvvv gamma : Language Methodologies / week7 #2Graphics/VVVV gamma 2023. 12. 5. 02:12
지난번에 만든 예제를 기반으로 객체지향형으로 작동하도록 만들어볼 것이다.
여기서 객체지향형이란, 각각 다른 기능을 가진 코드(노드)들을 함수처럼 묶어주어
어디서든 활용이 가능하도록 하는 편리한 기능이다.
Definitions Definitions에 Process(함수와 유사)노드를 추가해, RandomSphere 라고 이름 붙였다.
RandomSphere 안에 전 예제에서 원의 크기와 위치를 바꿔주는 내용을 옮겨 붙였다.
메인 패치와의 연결을 위해, Sphere의 아웃풋핀을 만들어준다.
(Ctrl 누르면서 놓기 -> 아웃풋/인풋핀 생성)
메인 패치로 돌아와 Randomsphere 노드를 두개 만든 뒤 그룹지어 연결했다.
화면에 나타나며 정상적으로 작동하는 것을 볼 수 있다.
RandomSphere을 오른쪽 마우스 누른 뒤, Repeat 안에 묶어준다.
프로그래밍적으로 바라본다면 일종의 While문과 가까운 기능을 하는 것으로 보인다.
Interation Count를 통해 반복할 횟수를 정할 수 있다.
색상 인풋도 받을 수 있도록 설정해보았다.
RandomSphere 안으로 들어가 PBRMaterial을 연결해준뒤, 인풋핀을 빼준다.
메인 패치에서 RandomSphere의 색상 인풋을 바꿔준다.
이제 특정 상황에서만 포지션이 다시 리셋되도록 설정해보자.
랜덤 포지션 노드를 새로 만들어 두개를 연결한다.
RandomSphere 패치 왼편에 보면 P 버튼이 있다.
이 버튼을 눌러주면 Properties뿐 아니라 Operations을 추가할 수 있다.
+ 버튼을 누른 뒤, GenerateRandomPosition이라고 이름 붙여 오퍼레이터를 하나 만들어준다.
패치로 돌아와 에러가 뜬 연결선을 누른 뒤, 오른쪽 마우스 - Assign - GenerateRandomPosition을 눌러준다.
선의 색이 GenerateRandomPosition와 같은 색으로 바뀐 것을 볼 수 있다.
ProcessNode에서 GenerateRandomPosition의 앞에 작은 네모를 눌러 활성화 시켜준다.
메인 패치에 돌아가보면 RandomSphere의 오른쪽 인풋이 새로 생겨난 것을 볼 수 있다.
이 핀에 Bang Boolean을 연결해준다.
이제 Bang을 눌러보면 Sphere의 위치가 랜덤으로 바뀌는 것을 볼 수 있다.
이처럼 Operation을 이용하면 노드의 실행 시점을 직접 정할 수 있다.
Repeat 안에 있는 RandomSphere에도 GenerateRandomPosition을 연결한다.
클릭해보면 10개의 구들이 한번에 위치가 재조정된다.
이제 위치를 바꾸는 복잡한 부분을 Operation을 이용해 간소화 시켜보자.
가운데 부분을 모두 삭제한 뒤 +, - 노드를 추가해 Position 연결해준다.
MoveLeft, MoveRight Operation을 추가해준다.
+ 에는 MoveRight를, -에는 MoveLeft를 할당해주고 0.1을 더하고 빼도록 했다.
마찬가지로 ProcessNode에서 MoveRight, MoveLeft를 활성화시킨다.
메인 패치에 적용해보면 10개의 Sphere들이 통째로 움직이는 것을 볼 수 있다.
각각의 Sphere의 분리하여 움직이도록 설정해보자.
GenerateRandomPosition을 Repate문의 밖으로 연결해 빼준다.
Configure을 통해 Toogle에서 Bang으로 바꿔준다.
이제 각각의 Bang을 누를때마다 독립적으로 포지션이 랜덤하게 배정되는 Sphere을 볼 수 있다.
'Graphics > VVVV gamma' 카테고리의 다른 글
vvvv gamma : Language Methodologies / week7 #1 (2) 2023.12.02 vvvv gamma : Advanced 3D / week6 #1 (1) 2023.11.24 vvvv gamma : Audio Visualization (with FFT) #2 / week5 (0) 2023.11.20 vvvv gamma : Audio Visualization (with FFT) #1 / week5 (2) 2023.11.19 vvvv gamma : Audio React / week5 (0) 2023.11.16