본문 바로가기
SDF 만들기 2 그렇게 하고 나서 이 값 옮겨온 각각의 포인트들에게서 설명해보자. 일단 1번 포지션을 다 하나하나 가져오고 노말도 하나하나 가져왔겠다. 그리고 포지션 빼기 포지션으로 벡터를 만들고 노말벡터도 준비. 그리고 닷 시키면 이제 닷연산으로 포인트가 안에 있는지 밖에 있는지 알것같다. 요렇게 하면... 일단 닷 시킨걸 가지고 디스턴스 필드부터 일단 만들고. 그담에 부호화된 디스턴스 필드 (SDF) 로 만들어 줍시다 만드는 법은 뭐 쉽죠 dot 연산해서 양수면 뒤집어주고 음수면 냅두고 그렇게 하면 이제 안쪽인지 밖인지 체크 가능 뭐야 다 했네.. 이제 이렇게 하면 안에 있는 놈들만 체크 가능. 이렇게 하면 SDF 를 수동으로 만들 수 있는 거임. 하하 이거 근데 이미 그냥 노드로 있는게 아닐까나 2024. 2. 9.
SDF 구현하기 SDF를 있는걸 써도 될텐데 굳이 귀찮게 구현을 해봅시다 (?) 일단 Null 로 컨트롤을 만들어 놓읍시다 기본값은 2미터 2미터에 0.1 단위로 만들고 싶은거죠 SDF를 그럼 기본 수치 넣어 놓는게 안심 그담엔 한번에 갈께요 . 이제 후디니 좀 익숙해졌으니까. Copy and Transform 노드를 이용해서 일단 X 의 Translate 값은 컨트롤의 dev 채널을 가져옵니다. Total Number는 일단 BBOX의 x 값을 가져오는데 그걸로 안끝나죠. floor(BBOX / Translate x) +1 로 해줘야 그 길이 안에 원하는 갯수가 나와요 이제 다 좋은데 원점이 저기 끝임. 뭐 사실 당연 그래서 센터로 옮겨오게 하려면 Transform을 center로 이름바꾸고 컨트롤의 x 사이즈 받아서.. 2024. 2. 7.
일단 구매 아니 무슨.. 엔진 임포트 하려면 무료버전으로는 불가능해... 그래서 구매.. 1년만 구매해 봅시다. 휴 구매하니까 유니티랑도 한방에 깔끔하게 붙네 2024. 1. 16.
파티클의 충돌 & 물리값 2 이번에는 파티클을 돌아가는 박스에 총알처럼 부딫히게 해보자 이런 모양으로 만든다. 파티클의 벨로시티를 높여서 총쏘게 만들고, 박스는 돌아간다. Emission Type을 올 포인트가 아니라 포인트로 하면 많이 나오게도 가능 그래도 기본 5천개는너무하니까 백개 정도만 하자. 두두두두ㅜ 그럼 이제 충돌해야 하는데, 그건 팝넷 안에서 스테틱 오브젝트를 그라운드 플렌과 머지해주고, 이걸 다시 그라비티와 머지해주는 방식으로 하면 된다. (머지 순서가 중요하더라) 박스가 돌고 있었으니 Use Deforming Geometry 를 켜주는걸 잊지 말자. 그리고 이것저것 중력이나 마찰 만져주면 이렇게 됨. 볼륨보기 와 복셀로 볼륨을 볼 수 있다. 이것은 SDF 정보중 하나 이것은 방금 만든 스테틱 오브젝트도 마찬가지인데.. 2024. 1. 10.
파티클의 충돌 & 물리값 파티클이 일단 튀게 만들어 보자 포인트 하나 Add 해 놓고 @v 값에 벡터 들어가게 하고 답넷 하나 만들어서 파티클에 소스 연결해 놓고 중력과 그라운드와 머지해 놓고 밖에서는 닷임포트에 pop넷 연결해 놓고 오브젝트 머지도 만들어 놓고. 머지에서 : 쓰는 주소도 쓰던데 난 안돼서 잘 모르겠음.어디쓰는지도 모르겠고 그냥 트리 찾아서 들어가도 똑같은데? 어쨌건 이렇게 뿜어져 나오게 만들고 트레일 넣어서 id 로 구분해줘서 그려주면 세로로 튄다. 이거 마찰 속성 바꿔줘야 함 팝 오브젝트와 그라운드 플렌에 피지컬 옵션이 있는데 둘다 만져줘야 함. 느낌상 팝 오브젝트는 파티클의 피지컬 옵션, 팝 그라운드는 땅의 피지컬 옵션같음. 이거저거 잡으니 뭐 쉽네. 두번째 . 파티클의 물체와의 충돌. 일단 빙글 도는 박스.. 2024. 1. 9.
스파크 만들기 2 - 답넷 안에서의 솔버 활용 이제 이 스파크의 파티클 갯수를 좀 줄여보자 파티클 출력 부분에 랭글 만들어주고 0-1랜덤값 만들어 주는데 랜덤값이 리밋보다 크면 지금 번호 포인트를 삭제해 주는 방식이다. Limit 값을 키워주면 많이 살아남고 줄여주면 적어진다 이제 여기서 다시 팝 넷퉉에서 팝솔버에 삽솔버로 커스텀 그래비티를 넣어보자 여기서 팝솔버인데 삽솔버가 갑자기 튀어나오는게 좀 당황스럽긴 하다만 세세한건 말 안하기로 어디는 팝이고 어디는 삽인가.. 지오메트리 단계가 갑자기 왜 들어가는가,.. 궁금하지만 흠. 어쨌건 삽솔버에 들어가서 어트리뷰트 랭글 만들어주고 특정 포지션에서 현재 포지션을 빼니까 Head to Tail 로 특정 포지션 - 기본은 000 - 을 향하는 벡터가 만들어지고, 그걸 노말라이즈 해서 단위벡터로 만들어준다음.. 2024. 1. 8.
스파크 만들기 스파크를 만들어 봅시다. 위로 올라갔다 떨어지면서 그게 빙글빙글 돌면서... 시작해보죠 가끔 pop네퉉을 생성하면 그냥 구현이 되어 있는데 이건 뭘까요. 뭐 편하긴 합니다만 어떤 조건에 만들어지는지를 모르겠어서. 어쨌건 포인트 만들고 빙글빙글 돌리고.. 이 포인트에서 파티클 나오게 세팅하면 일케 되겠고 뭐야 중력이나 포스 설정을 안했구 근데 왜 null 달아주는지 알겠다. 함수에서 리턴 달아주듯 만들어 주지않으면, 어디가 출력포인트인지 헷갈려서 힘듬. 그러니 해줘야지. 물론 팦넷퉉에서도 저 포인트_아웃으로 연결시켜 줘야겟고 그래서 스위치 넣어서 특정 순간마다 출력되게 만들 수 있지 그럼 파티클 나오는 타이밍을 제어할 수 있다. 근데 포인트가 하나만 나오는건 아쉬우니까 여러개 나오게 해야. 그래서 스케터를.. 2024. 1. 6.
팝소스의 소스 세팅 지오메트리 만들고 팝 네트워크 만들면 기본 세팅이 그냥 나오는데? 이건 뭔가 싶은데 어쨌건 공짜니 좋다 잇힝 그리고 밖에서 만든 sphere에 연결해주고 sphere에 @v 에 값을 넣어주면 어라 왜 작동해 @v 가 예약어였단 말인가 그리고 공 좀 올려주고.. 그라운드 플렌 만들어서 머지 시켜주고, 중력도 주고, 공은 위로 좀 올려주고, 팝네트웍에서 오브젝트 이름으로 필터링하고.. 결과는 똑같은데, dopimport 로 답네트웍 연결해주고 필터링해주고. 이제 팝소스를 좀 더 깊이 알아보자 여기서 디스플레이 프록시 지오메트리 날려주면 역시 깔끔하게 바닥 안보여 좋음. Emission 타입 Allpoint 지오메트리 스프레드쉬트로 확인 라이프타임과 라이프타임 랜덤. 이미 탄생 시점에 내 생명이 정해져 있음 .. 2024. 1. 5.
Dopnet / 파티클 시스템 셋업 일단 지오메트리에서 dopnet 오브젝트를 만들어 들어가면, 다이나믹스 공간이 된다. 여기선 대충 이런 구조로 작동됨. 맨 오른쪽 sopsolver는 안에 들어가면 지오메트리 공간이라는게 특이한점. 뭐 어쨌건 오늘은 파티클만 볼거니까 나머지는 담에. 팝소스를 팝 오브젝트에 담아주고 , 계산은 팝솔버에서 해준다. 기초적인 파티클 만들기 다시 처음부터 해보자. 파티클을 만들려면 Dop 네트워크부터 하나 꺼내자. 정확히 말하자면 파티클을 만들려고.. 라기보다 다이나믹 시뮬레이션 네트워크를 만들자는 말이지만. 그럼 안에 들어가서 이게 기본상태 팝소스를 꺼내 팝 오브젝트에 담게 되는데 그걸 팝솔버에서 처리. 물론 이상태론 암것도 안보임. 다시 오브젝트로 나가서 파티클이 발산될 오브젝트 하나 만들어주자. 그리고 팝.. 2024. 1. 3.
파티클 시스템 구현 3-1 / 서브스탭과 시뮬레이션 퀄리티 그럼 이번에는 아래로 빠지는 저 문제를 해결해보자. 이게 계산이 너무 간격이 크다보니까 계산 리밋을 넘어버리는건데, 그러면 서브스탭으로 간격을 잘라주면 될 것 아닌가? 그런데 서브스탭은 간격을 잘라주는게 아니라, 간격을 오히려 뛰어넘어 버리는 결과가 나타나게 된다. 만약 서브스탭으로 2로 잘라준다면 1 2 3 4 로 계산될 것을 1 1-1 2 2-1 로 계산되는데, 서브스탭 결과는 출력이 안되니 오히려 간격만 늘어난 꼴이 된다. 그러니 더 러프하고, 속도만 두 배 빨라지는 결과가 되는거다. 이걸 해결하려면? 간단하다. '서브스탭만큼 속도를 느리게 만들어주면 된다' 그러면 1 2 3 4 가 1 1-1 2 2-1 3 3-1 4 가 되면서 속도는 같은데 계산은 정밀해지게 되는 것이다. 일단 그럼 limit 에.. 2024. 1. 3.
파티클 시스템 구현3 이쯤 돼서 이쁘게 정리함 해보자 나이 소멸에서는 age 만들고 더해주고, 특정 숫자 넘으면 removepoint 해주고 충돌/반사에서는 포지션이 특정 범위 넘어가면 (범위는 받아오고) 벨로시티 반사해주는데, 여기는 이렇게 되어 있다. float Xmin = point(1,"xmin",0); float Xmax = point(1,"xmax",0); float Ymin = point(1,"ymin",0); float Ymax = point(1,"ymax",0); if(@P.x > Xmax || @P.x Ymax || @P.y < Ymin){ @vel = @vel*{1,-1,1}; } 그리고 그 뒤에 포인트/ 합류되는 merge가 돈.. 2024. 1. 2.
파티클 시스템 구현 2 - 충돌 규칙 만들기 포인트가 소멸하는 모듈을 만들어 봅시다. 일단 age를 만들어 놓는다 그럼 age가 늘겠지 i@age ++해도 되고 그리고 removepoint(0,@ptnum) 이용해서 아래에는 리무브 포인트 모듈을 만들어 넣어주면 이렇게 기능모듈이 가능 이건 바이패스하기 . 이렇게 모듈을 켜고 끌 수 있다 이제 포인트들이 벽에 충돌해서 없어지게 만들기 일단 solver에 리밋 구조를 만들어 봅시다 솔버 2번에 넣기 . 그리고 여기서 채널플롯으로 제한값이 들어갈 수 있게 해 주는데, 여기서 조금 신경쓴건 Xmax 의 파라미터를 카피해서 릴레티브 레퍼런스로 넣어준거. 어 이거 전에 해본 것 같은데 당연히 잊어버렸다. 이렇게 연동되어 처리되게 해준다 이제 이걸 솔버에서 판별하자 솔버에서는 이렇게 판별한다 X 가 max보다.. 2024. 1. 1.
반응형