조회 수 3448 추천 수 10 댓글 17
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부

파티클과 엑스프레소

파티클에 관련해서 적은 내용 입니다. 툴에 대한건 적지 않습니다.



파티클, 엑스프레소 공부라기 보다는 수학이나 간단한 시뮬레이션의

이해라고 생각 하시고 접근 하는게 맞아 보이네요. 엑스프레소나 씽킹 파티클

노드가 어려우신건 아닐 테니 말이죠...


뭐 부터 해야 할지 모를 때, 결정을 내릴만한 의견을 들었으면 좋았을 걸 하는 옛날

생각에 좀 적어 봅니다.


이런 구조(system)를 만들기 위해서 배워야 할 것들의 주제를 먼저 적어 보자면 아래와 같아요.


벡터와 행렬

3D니까 각 점을 이용하기 위해서 벡터의 이해 + 벡터 연산법

점의 이동, 회전, 스케일을 할때 쉽게 하기 위해서 행렬의 연산법

기저 벡터의 이해, 직교행렬의 이해

특정 문제를 해결 하기 위한 연립 방정식 풀이법

이런 것들이 기초가 되는 지식들 입니다.


이 내용들은 선형 대수학의 부분입니다. 3D와 연계해서 보아야 이해도가 높을테니 

그나마 적절한건 게임 개발할 때 공부하는 게임용 수학 책이나 위키 정도가 적당 하겠네요.

물론 게임용으로 쓰여진 책 들이라 "필요없는 정보가 더 많네" 할 정도 이긴

합니다. 어짜피 대안이 없으니 문제 풀이 할때 참고용으로 쓰면 400페이지

정도 중에 50 페이지 정도는 쓸만 합니다. 때로는 위키가 더 편할때도 있구요.

제 경우는 위키가 더 편했습니다.



수학적 레벨은

고등학교 공통수학을 이해하는데 문제가 없거나, 학교 시험에서 수1 정도 70점 이상

맞으셨다면 쉽게 입문 할 수 있다고 봅니다. 일 할때는 오픈 북 테스트나 다름 없으니까요.

이해 하는게 문제만 없으면 됩니다.



행렬 연산은

어짜피 C4D의 노드가 해주지만 왜 행렬을 사용하는지 알아야 하고

수학 식의 양변을 정리하거나 식을 단순화 시켜서 최종적으로 쓸데 없는

연산없이나 중복되는 부분은 값을 재 사용한다던지 해서 엑스프레소로

최적화 하기 위해서, 식의 필요한 부분만 노드로 표현하기 위해서 이런 이해가 필요합니다.


이제 어떻게 연산하는걸 배웠으니 써먹어야 겠죠.

물론 파티클만 하기 위해서는 일단은 velocity 만 이해해도 충분 합니다.



파티클의 연산은 단순히 아래의 식과 같습니다.

그 전에, 꼭 씽킹 파티클만을 말하는 것은 아닙니다. 그 어떤 툴에서라도

이런식의 접근을 하면 됩니다.


위치를 바꾸기 위한 공식은 간단하게

현재의 위치 = 이전의 위치 + velocity 입니다.


여기에 추가로 투명도 라든가, 질량, 색 등등 여러가지가 원하는 대로 들어 갈수 있죠.

모그라프가 이런 파티클을 모듈화 한 예라고 볼 수 있습니다.


각 파티클은 위치, 크기, 회전값을 가지고 있고 할당된 오브젝트들에

적용 되는 것입니다. 실제로는 크기, 위치, 회전은 하나의 행렬로 만들어져서

단순화 되서 연산 됩니다. ( 행렬의 실전 쓰임이 이런 것 입니다.. )


C4D에서는 PStorm 으로 기본적인 파티클의 속성들이 구현이 되어 있습니다.

born 을 통해서는 온전히 파티클 자체로 직접 구현해서 쓴다고 보면 됩니다.


단순히 PBorn 으로 생성 후에 벨로시티를 적용해 보세요. 조금은 이해가 갈 겁니다.


이제 좀 더 나아가서, 예제를 하나 보면 곡선으로 파티클 들이 움직이고 싶다 하면

삼각함수를 알아야 겠죠.



예제

ex_particle.zip


Sin 을 이용해서 파티클들을 움직여 본 예제입니다. 간단하게 벨로시티와 엑스프레소

노드들을 어떻게 써야 하느냐를 알수 있을 겁니다. 뭐 이게 중요한건 아니니까

그냥 이해하고 넘어가면 됩니다.


음.. 뭐 이런 단순한거 만들자고 공부 하는건 아니니까요.



어떻게 사용 할 것인가의

예제로서 만들기를 시도 해볼 만 한 것을 하나 더 가져와 봤습니다.

이건 파일을 첨부 하진 않지만, 어떤식으로 공부 및 연구에 접근해야 하는지를

보여주는 좋은 예제가 될거라고 생각 합니다.




이런 형태를 만들기 위해서는 주로 커브를 사용 합니다.

커브( 스플라인 )를 사용해서 컨트롤 하구요. 커브를 따라서 일정한 룰을

가지고 움직이면 되겠죠.


이런 과정을 일일이 다 설명 하기 위한 건 아니구요.

커브가 기반이 되면 커브의 조합으로 원하는 어떤 모양도 만들수가 있겠죠.


그냥 주입식 보다는 이런 필요에 의해서 자료를 찾고 공부 하는 방법을

찾아 가는게 중요 할 것 같습니다. 위와 같이 만들기 위해서 배워야 할 것들이 많고,

설명 하자면 내용이 많겠지만 결국에는 여러가지가 될 접근법을 수학적으로 

스스로 생각 해내는게 중요 하다고 생각 합니다.



아래의 과정은 이것을 구현해 본 방법 입니다.

어떻게 하라는 것 보다는 역시 어떻게 접근 해야 하는 가를 적는게

앞으로의 공부를 위해서도 좋을 것 같아서 과정만을 적습니다.


위의 파티클 움직임을 머리 속에 그렸다면 이를 구현하기

위한 접근법은 다음과 같습니다.

몇몇 단어는 그냥 영어로 할게요 그게 더 편하기도 하고,

이해 하기에도, 읽어 보시기에도 그게 편할거에요.


벡터에 대한 기본 지식은 있다고 생각 하고 적습니다.


1) 토네이도를 만들어 봐야 겠다고 생각 하고 연구를 시작 합니다.

2) 파티클을 일일이 다루기 힘드니 driven 할 factor 로서 커브를 사용 하기로 결정 합니다.

3) 토네이도는 바닥의 파티클들을 빨아 들이면서 회전 하면서 위로 올립니다.

4) 커브를 따라서 파티클들을 회전 시키기 위해서는 어떤 벡터가 필요할까 고민 합니다.

5) 각각의 파티클의 위치에서 커브의 중심을 향하는 벡터와 커브의 탄젠트를 외적하면

바깥쪽을 향하는 벡터가 나올 것을 생각해 냅니다. 이 외적 벡터를 벨로시티로 더 해줍니다.

6) 바깥쪽을 향하면서, 또한 시간이 지나면서 위치가 바뀌므로 이 외적벡터는 커브를 기준으로 

원운동을 하게 됩니다.


6번이 어렵게 느껴지실텐데.. 쥐불놀이 할때 빙빙 돌리는거 생각 하시면 됩니다.

아니면 그냥 스플라인 원을 놓고 점을 선택 했을때 양쪽으로 탄젠트 나와 있는 것을

생각해보셔도 됩니다 그 탄젠트가 이 경우의 외적의 값과 같으니까요.


7) 회전을 완성 했습니다. 이제 커브를 따라서 위로 올려야 하므로 무언가 위로 향하는 벡터를

더해주면 될 것입니다. 시간이 지남에 따라서 커브에 영향을 받는 무언가 factor 가 필요

하다는 것을 느낍니다.


8) 생각 해보니 커브의 각각의 포인트의 탄젠트가 커브의 곡면을 따라서 위로 향합니다.

9) 이 벡터를 벨로시티에 더해줍니다. 그럼 회전 하면서 커브를 따라서 위로 올라 가게 될것 입니다.

10) 하지만 올라 감에 따라 커브의 곡면을 따라 가야 하므로 올라 가는 포인트의 가장 가까운

커브 포인트의 탄젠트 벡터를 이용해야 겠다는 것을 유추 해냅니다.


11) 완성 입니다. 하지만 커브의 일정 반경 내의 파티클만 빨아 들이고 밋밋하게 회전 하면서

올라 갈 것 입니다.


12) 단순히 바닥에 생성되는 파티클에 터뷸런스 같은 노이즈를 주고 seed number를 프레임을 주면

매 프레임마다 노이즈가 되면서 바닥의 파티클과 커브를 따라서 올라가는 포인트들이 랜덤하게 되면서

공중에서는 커브의 포인트 들중에 가장 가까운 것 들이 바뀌게 되고, 바닥의 것들도 외곽으로 빠졌다가

다시 들어오고 들어왔다가 다시 나가고 할 것 입니다.


13) 끝입니다.



필요한 것들

파티클의 위치를 가져오는 방법

커브의 포인트를 가져오는 방법

파티클의 위치로 부터 커브의 포인트 중에 가장 가까운 포인트를 구할 방법

커브의 포인트의 탄젠트를 얻는 방법

터뷸런스 주는 방법


이렇게 계획이 잡히면 하나씩 방법을 해결하면서 완성 하면 됩니다.

결국 수학적 지식이 어느정도 받쳐 줘야지 빠른 해결이 됩니다.

툴은 위의 필요한 것들을 어느 툴이든 헬프에서 찾아서 적용만 하면 됩니다.


음... 조잡 하지만 그림도 하나 준비 해봤습니다..


tornado.gif



결론....

파티클, 엑스프레소 공부는


영어와 영어 소설, 툴과 수학, 툴과 디자인 이런 둘의 관계와 같습니다.


영어 한다고 소설 잘쓰는거 아니고, FX할때 툴 잘 다뤄도 수학 모르면 결국 더 나아가지 못하구요.

모션그래픽 같은 디자인 분야에서 툴 잘 해도 디자인 못하면 더 나아가지 못하는 것 처럼요.


프로그래밍은 엑스프레소 노드, 마야의 노드, 후디니의 노드들이 어느정도 대신 해주고요.


결국은 수학 공부 해야 하는거죠머...


근데 수학 공부 해도 막상 쓸일은 없을 수도 있으니....그냥 디자인공부에

더 매진하는게 나을 수도 있습니다.  대부분의 경우 알고리즘이나 어떤 rule을 생각

해내는 시간보다 그냥 노가다 쳐서 애니 주는게 더 빠르니까요.

머리 쓰다가 실패 하면 시간은 돌아 오지 않으니까요.



List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 팁 / 노하우 P2P Hidden Coin Miner 멀웨어 관련 증상 및 치료방법 (아이원스튜디오 배포) 2 file 염귤 2023.09.28 574
공지 릴레이 튜토리얼 [공지] '릴레이 튜토리얼 시즌2'를 시작합니다! 1 십사 2021.11.10 4473
공지 릴레이 튜토리얼 [공지]유저들과 함께하는 Relay Tutotial 연재 스타트! 12 그래바 2019.10.07 5516
공지 기초 이제 입문하시는 초보분들 필독.....!! 644 길동 2005.07.12 57440
893 팁 / 노하우 휠 만들기.. 14 file WILL 2005.10.27 1745
892 팁 / 노하우 환영그림님의 HyperNUBRS TIP~ 18 돌아온 길동 2008.11.08 1123
891 팁 / 노하우 화이널 강좌도 시작해봅니다. 36 file 박씨 2007.12.05 1449
890 링크강좌 헤어입니당.. 2 이시성 2006.06.10 973
889 링크강좌 헤어- 풀밭,잔디 만들기.. 19 길동 2007.09.18 2060
888 링크강좌 해외디자인 잡지 사이트 모음입니다. 14 러브마크 2007.11.10 1362
887 기초 한스님 애니메이션 에센스~ 8 [길동] 2017.04.20 4302
886 동영상 강좌 학원에서 가르치는 모델링 강좌입니다. 무료로 공부해보세요. 1 난초홍 2020.03.30 3944
885 동영상 강좌 하이퍼넙스 웨이트 기능.. 33 file oizm 2006.11.29 1112
884 팁 / 노하우 필드를 기반으로 볼륨을 자라나게 하는 방법 아미노산스 2021.12.18 295
883 팁 / 노하우 프로젝트 갤러리 3탄 [제1차 세계대전] 6 file 최강길동 2009.08.17 3516
882 팁 / 노하우 프로젝션 맨 영문 헬프 번역 30 file ChoiGeol 2009.03.05 1109
881 팁 / 노하우 프로젝1탄- 여름과일 45 file 훈공 2009.07.21 3590
880 팁 / 노하우 풍선글씨체 모델링 13 file 준치 2013.07.29 6113
879 팁 / 노하우 푸헐헐의 근성자동차만들기 part.2 25 file 푸헐헐 2008.11.12 1778
878 팁 / 노하우 푸헐헐의 근성자동차만들기 part.1 40 file 푸헐헐 2008.11.06 2060
877 팁 / 노하우 파티클시스템 기초이론 46 file 존재와당위 2009.03.17 2043
» 팁 / 노하우 파티클과 엑스프레소는 어떻게 접근해야 하는가 17 file 엘라스틱마인드 2014.08.13 3448
875 팁 / 노하우 파이널렌더 두번째 튜터 올립니다. 25 file 박씨 2007.12.25 1111
874 팁 / 노하우 팁) 무료모델링 부분적으로 꼬이는 현상 해결. 6 라푸 2014.09.26 2361
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 45 Next
/ 45
닫기

마이페이지

로그인을 해주세요