조회 수 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
773 링크강좌 C4d와 포토샵을 이용한 간단한 아트웍... 40 끝장 2010.07.16 3452
» 팁 / 노하우 파티클과 엑스프레소는 어떻게 접근해야 하는가 17 file 엘라스틱마인드 2014.08.13 3448
771 팁 / 노하우 [프겔 3탄]세계대전 하면 역시 땡크! 37 file 훈공 2009.08.28 3436
770 팁 / 노하우 CINEMA 4D 찌라시 2탄! 39 file 길동 2004.11.14 3433
769 팁 / 노하우 김그륜-GIF 애니메이션 만들기 7 카리닷컴 2014.12.13 3431
768 기초 CINEMA 4D History 81 길동 2006.10.16 3390
767 팁 / 노하우 시네마 4D와 에펙연동(3D+animation) 25 file .피. 2010.01.18 3368
766 릴레이 튜토리얼 [릴레이튜토리얼] 박태훈 - C4D Hard surface modeling with Boole. 7 file 박태훈 2020.08.17 3359
765 기초 옥테인 렌더 설치 방법, Octane Render 설치(데모, 구독자 버전) 씨지토리닷컴 2020.12.04 3357
764 팁 / 노하우 2013, Maya,3ds Max,Houdini, C4D 리뷰 1편 13 엘라스틱마인드 2012.11.15 3334
763 팁 / 노하우 [프로젝트겔러리 1탄] 수박... 37 file 희빠 2009.07.20 3307
762 팁 / 노하우 C4D R15 랜더링 비교 및 간단한 팁 file 하늘나무 2014.09.16 3297
761 동영상 강좌 [버뮤다 픽쳐스]안녕하세요 튜토리얼 제작하고 있는 버뮤다 픽쳐스입니다! 7 file 버뮤다픽쳐스 2019.09.20 3267
760 동영상 강좌 옥테인 세미나 복습용 영상입니다. (*비밀번호걸려있습니다) 9 김그륜 2016.08.03 3230
759 팁 / 노하우 초보님들을 위한 초간단 Net Render 사용 메뉴얼 ^^ 61 file 유재남 2008.11.13 3213
758 기초 Season3 Lesson01. Move와 Rotation 제어하는 Xpresso강의 23 김그륜 2015.05.03 3212
757 팁 / 노하우 모그라프 - 클로너에서 클론들을 랜덤하게~ 12 file 꺼니 2011.07.29 3212
756 기초 모델링 도구 익히기 Part.01 10 브이에스랩 2016.06.07 3200
755 동영상 강좌 500ml 콜라피티병 만들기 130 file 정석 2008.06.30 3191
754 링크강좌 시포디 공부중인대 한곳 추천해볼게용 4 file 스퀄레온하르트 2012.07.08 3181
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 11 ... 45 Next
/ 45
닫기

마이페이지

로그인을 해주세요