본문 바로가기
파티클 시스템 구현 1 - 속도에 따른 이동 1번 add 에 test에는 f@test 2번 add에 포인트. gap 에는 f@gap = chf("gap"); 각 포인트가 튀어 나오는 갭 설정 그리고 솔버에서 gap 을 포인트 펑션으로 받아옴 그리고 test에 더해줌 그리고 시뮬레이트 걸어보면 숫자가 증가된다 이번에는 좀 다르게 해보자 똑같은걸. 이렇게. 여기서만 선언해줘도 문제없음 이제 여길 벡터로 바꿔보자. 1 0 0 주는거 잊지말고 그리고 포지션에 더해줘서 이동하게 만듬. 플레이하면 계속 1씩 이동할것임 자 그럼 다 지우고 다시 한번 여기서 다른점은 add5한테는 포인트가 없음. 포인트 합류시켜주기 도전 포인트는 add6에 있다. 그럼 솔버에서 이 부분이 핵심 ($FF==15)||($FF==21) 으로 15프레임과 21 프레임에 스위치를 바꿔준.. 2024. 1. 1.
solver의 작동 (기초) : 조건문 if 문의 기본적인 조건문이었다 원리상으로 대단히 간단. 9가 되면 내려가고 0이 되면 올라가고 . 컨디션 변수를 스위칭해주면 되는것 이니셜에서 변수선언과 초기값을 넣어준다. f@count = 3; s@condition = "A"; 그리고 solver는 다음과 같이 참고로 solver의 스타트 프레임은 생각한 그대로인데, 서브스탭은 내부에서 다시 도는 횟수이다. 이를 이용하여 시뮬레이션을 정밀하게 만들 수 있다고. 그런데 특이점은, 처음에는 한 번만 돈다는거. 아래쪽 파란 라인은 솔버의 캐싱 상태를 의미한다. if 문으로 카운트가 몇에 당도하면 컨디션을 바꿔줄건지 체크한다. if 두 개도 괜찮고 else if 써도 상관없었을듯? 즉 여긴 컨디션 체인져 그리고 아래 랭글이 컨디션에 따라 값을 올려줄거냐 내.. 2023. 12. 31.
for - loop 과 solver의 관계 시간에 따라 규칙이 반복적용된다라는 것이 둘이 같은 점이다. 시뮬레이션을 위해서는 꼭 필요 일단 이렇게 반복되는게 있다 치면 for loop 사이에 넣으면 반복된 결과를 볼 수 있다 숫자로 이터레이션 하고. 10번이네. 각각 이터레이션을 피드백해서 결과를 쌓는 방식. 머지하면 이케 되는거지 그럼 피드백인 상태에서 $F 로 프레임을 넣으면 일케 되는거지 이게 솔버다 솔버에 넣고 솔버 더블클릭해서 솔버 안에 이렇게 넣으면 마 똑같이 움직인다 아이가 2023. 12. 29.
For each로 풀만들기 2 지금까지 만든걸 복습하는 의미로 다시 첨부터 만들어봄. 코드가 바뀌어도 그런가보다 하기 이제 길이조절해야 하는데 길이조절은 카브로 할라고 어트리뷰트 랭글로 빼고 랜덤값 범위를 지정해줬다 그리고 카브에다가 포인트 펑션으로 y 값 불러옴. 풀 랜덤값은 y 에서 범위 지정해주면되고. 이제 두께 만들어야 함.. 폴리 와이어 씀. 폴리 와이어 앞에 어트리뷰 랭글 써주고 , 리샘플에서 커브 u 받아와서 길이별로 채널램프 조작할 수 있게 해줌. 물론 리샘플에서 커브 u 켜는거 잊지 말고. 어트리뷰트가 있어야 상속된다는 개념이 넘 재밌네 셰이더에서 버텍스 인풋 레지스터 같잖음? 여하간 이렇게 @seed 에서 모든 값이 파생되게 만들었으니 이런게 만들어지는거지 다했네 다했어 다음은 모판을 깝시다 서클 하나 깔고 스캐터 .. 2023. 12. 29.
For each 로 풀만들기 1 For each 포인트 - 각각 포인트 데이터를 분리해서 그걸 한 번 돈다 For each 프리미티브 - 프리미티브를 한 번씩 돈다 풀을 만들어 보자. 일단 선을 그어야겠지 ? 선을 긋기 위해 점을 추가 . 하나 더 추가해주고 싶은데, 원래 점에 연결된 위치이고 싶다. 이렇게 하나 더 추가 그리고 선을 연결해주고 , 섭디바이드로 부드럽게 해주고 리샘플로 밀도 정리. 섭디바이드가 무슨 일을 하는지는 알고 있었지만 포인트 연결을 부드럽게 할때 쓰는건 또 갑자기 신선하네 그럼 위의 점이 좀 랜덤하게 움직이게 하려면 어떻게 하냐.. 일단 상위에 랜덤 추가 이 랜덤은 값이라기보단 시드값. 시드값을 외부에서 줄거라 여기서 한 번 널로 끊어줌 그럼 여기 seed 값을 넣으면 좌우로 랜덤해 지겠지? 이걸 0~1 인걸 .. 2023. 12. 28.
경로 라인 따르기 채널램프를 이용해 시작과 끝 부분 사이에 색상변화를 만들어 보자. 리샘플링에 있는 커브 U 어트리뷰트를 켜주면 전체 길이를 0~1 값으로 리샘플링해준다. 채널램프를 만들어 준다 출력 어트리뷰트를 벡터로 만들었지만 채널램프의 출력값은 플롯이다 파라미터 인터페이스를 수정해서 칼라 출력으로 바꿔줌 벡터값 들어오는 것을 알 수 있다 공 그리기 그리는건 쉬운데 닫히질 않지. 그건 0번 하나 더 만들어 머지해주면 된다 일케. 근데 지금 할건 이게 아니고 일케 해주면 이걸 그대로 이전 시간 것에 이식 짧길래 포인트가 선으로 되는 부분에 하나 더 널로 복사해서 포인트를 두 배 만들어준게 특징. 그럼 2회 움직인다 후후 시작점과 끝점을 안맞춰서 점프하긴 한데 어쨌건 2회입니다 ? 그리고 하는김에 z 값을 포인트 넘버에 .. 2023. 12. 27.
라인 애니메이션 - 경로 따르기 원을 따라가는 애니메이션을 만들자. 아래 3개 공 중에 오른쪽 작은거 하나를 타다가 큰 거 90도만 타다가 위쪽 작은 라인을 타게 만들기 일단 이렇게 만들어 줍시다 첫 번째 것은 이렇게 0번부터 119번까지 . 근데 이게 처음 만날 놈은 아니지. 그래서 이 작은걸로 먼저출발하게 만들면 될듯. 0번부터 29번까지 한 번 돌고, 위의 저 큰 것 0번으로 이어지게 하면 될듯. 그냥 merge 해주면 숫자가 연결됨. 편리. 그럼 이제 저 큰 원을 다 돌면 안되잖음? 작은 원은 위에서 만날테니 그래서 큰 원을 짤라주면 됨. 뭐로? blast 있잖음 이렇게 큰 원을 0~30 까지 블라스트로 잘라주면 됨 그리고 다음 원이랑 연결시켜 줘야 하는데 일단 rot로 90도 돌려서 연결되는 부분을 0번으로 만들어서 연결 그리.. 2023. 12. 26.
라인 애니메이션 (기초) foreach 공부하기 위한 기본 일단 점 두개 만들고 선으로 만들자. 이제 이건 쉽지? 그 다음에 카브로 시작과 끝점 제어를 하고, 와이어로 두께를 만들어 주는 거지. 이제 제어하는 오브젝트를 만들어 줍시다. 인티져로 스타트와 토탈 플레이 시간을 받으면, end 를 구할 수 있죠 그럼 이제 카브의 나중값 (위에 있는 점) 의 값인 second U 의 값에다가 넣어줄 녀석을 마련해 줍시다. 0~ 1 사이로 만들어 줘야 하니까 (현재 프레임 - 스타트 프레임) / 토탈 프레임 을 해주면 전체 플레이가 0~ 1로 나오겠죠. 그래도 음수나 1 이상 넘어가는 경우를 방지하기 위해 클램프를 해줍시다. 그 위 채널램프로 제어할수도 있게 해줄게요 그리고 null에 연결해줄게요 이제 카브에서 이걸 받아오면 되겠죠 po.. 2023. 12. 25.
nearpoint() nearpoint를 공부하기 전에 미리 구현해보자 역시 하나는 서클 하나는 뱅글뱅글 돌게. 그리고 sort 에서 dist 어트리뷰트 받아 처리하게 하면 일케 가까운 순서대로 포인트 넘를 정렬하게 할 수 있다. Blast로 0번 포인트만 남기게 하면 그리고 선긋게 하면 이런걸 만들 수 있다. 혹은 이렇게 점 하나 또 움직이게 하고 그 둘을 이어붙이면 이렇게도 만들 수 있다. 뭐 nearpoint가 별건가 가까운 포인트 찾는거겠지. nearpoint( 레퍼런스 넘버 , @P ) 요건 주인공 포인트를 기준으로 레퍼런스의 가장 가까운 @ptnum 을 int로 리턴해준다. 위와 같은 결과인데 순서가 다르지. 그리고 이렇게 하면 같은 결과 나옴 int pt = nearpoint(1,@P); i@pt = pt; ve.. 2023. 12. 23.
Length() Distance() cos($FF) 하면 실시간 프레임에 cos 이 먹는다. 그래서 포인트의 트랜스폼에 cos($FF) 와 sin($FF) 를 넣으면 원운동을 한다. 요렇게 서클에 포인트 만들어 주고 또하나 add로는 이렇게 넣으면 뱅글뱅글 돌잖음? 그럼 어트리뷰트 랭글을 꺼내서 distance 를 이용해서 두 벡터 거리를 프로퍼티로 출력해주면, * 두 벡터 빼도 거리 구해지는건 똑같. 그럼 뭐 이렇게 나오지 0.5 보다 큰걸 removepoint(0, @ptnum); 해버리면 지울 수 있음. 채널펑션 limit를 만들어서 제어할 수도 있음. fit을 써서 이렇게 가까이 있는것만 색을 변하게 할 수도 있음,. f@a = fit(@dist,0.3,1,1,0); 의 의미는 거리가 0.3~ 1 까지 클램프를 하고 , 그걸 1 ~.. 2023. 12. 22.
클램프 / 핏 / 채널램프 Clamp(값 , min ,max ) -> 알고 있는 그 클램프 fit( 값 , min , max , outmin , outmax ) -> 앞 부분은 클램프이고 뒷 부분은 리맵핑값 흠 이건 쉽네요. 셰이더 공부하고 나면 이런거야 뭐. 포인트 두 개 만들고 머지시킨후 , add로 라인을 그려줍니다. 그리고 리샘플링으로 값 간격을 넓혀줍니다. 그리고 sin으로 그래프 그리기 이제 여기를 클램프 예제를 해봅시다. 이지이지. 칼라 넣어서 처리 가능. 하는김에 채널펑션으로 처리 그럼 fit은 뭐냐. 클램프를 한 후에 그걸 리맵핑해주는 것. 이렇게 해주면 된다. Chramp( ) 0~ 1 사이의 값에 대해 사용자가 직접 그릴 수 있는 함수 채널이라는걸 주의해서 보자. 그리고 램프군. 어디서 많이 보던건데..? 어트.. 2023. 12. 21.
VEX 펑션 훈련 / 효과쌓기 이전시간 여기에서부터 시작. 노이즈 만들어주던때부터. 여러 개 복사하자. 앞에 두 개는 float y = amp * (noise(a*(x-b)) + c) ; 로 두고, 마지막은 float y = amp * (sin(a*(x-b)) + c) ; 으로 sin으로 만든다. 그리고 각각 f@FXa = y; f@FXb = y; f@FXc = y; 채널 만들어서 y 값을 넣어놓자. 이걸 받아올거니까 빈 어트리뷰트 랭글 만들고 이걸 연결하자 1번 위치의 값이 복사되게 만들자. f@FXa = point(1,"FXa",@ptnum); 1번 위치의 FXa 라는 채널값을 가져오는데 , @ptnum 포인트의 넘버를 다 가져온다. 이러면 완벽히 가져옴 그러면 쉬움 이렇게 해서 값을 다 더해서 합성할 수 있다. b 를 @Fram.. 2023. 12. 20.
반응형