본문 바로가기
기타 공부하기/후디니

SDF 구현하기

by 대마왕J 2024. 2. 7.

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 사이즈 받아서 음수로 이동시켜줘야 하니까 - 로 하고, /2로 나눠주면 절반이 되겠지? 

이걸 xyz 에 다 해주면 완전 센터가 될듯

짜잔

이제 트렌스폼 진짜 하나 더 만들고 컨트롤의 트랜스폼과 연결 

그담에 레퍼런스 오브젝트 하나 만들어야겠지? SDF 하려면 

 

아니 ㅋㅋㅋㅋ 다 좋은데 ㅋㅋㅋㅋ 이거 그냥 아티스트들이 할 수 있나 이거 ㅋㅋㅋㅋ 
여기서 절반 떨어져 나갈 것 같은데 ㅋㅋㅋ

어쨌건 getbbox 함수에서 값 받아와서 어트리뷰트로 만들어 놓고 
센터값도 넣어놓고.. 랄라. 

이제 그럼 control 에서 info_ref에 있는 값을 받아와서 바운딩 박스 크기를 정해줄건데 

요건 첨 보는거니 좀 디벼보자. 

detail에서 받아오는거고 , 레퍼런스 위치와 레퍼런스 네임, 그리고 인덱스를 넣으면 된다. 
채널에 넣는건 마지막에 ;을 안해도 되는걸 자꾸 헷갈리고, 
레퍼런스 위치 맨 마지막에 /을 해주는걸 자꾸 헷갈림. 

이제 트렌스폼도 넣어서 중심값도 맞춰줄건데 

위와 똑같은데 

detail("../info_ref/","bboxcenter",1) 

이게 보면 알겠지만 bboxcenter 를 받아오는건 좋은데, xyz 가 각각 인덱스 0 1 2 로 되어 있다. 
이 점을 주의해서 xyz에 넣자 

 

그럼 러버토이를 바운딩 박스에 맞춰 넣을 수 있다 

패딩값 줍시다 너무 딱 맞잖아 

자 좋아요 그럼 다음에는 이 점을 러버토이의 노말값을 받아오게 해야 하는데 

노말을 꺼내서 연산하여  포인트에 노말값을 넣고 
ray를 이용해서 포인트를 러버토이에 '붙여' 준다 

이 때 미니멈 디스턴스로 해주고 

이렇게 해서 히트를 시킨 다음에 
히트한 것에서 포인트 어트리뷰트 N(노말) 을 임포트 시킨다 

 

반응형

'기타 공부하기 > 후디니' 카테고리의 다른 글

볼륨 랭글 / VOP & 비주얼라이즈  (0) 2024.02.11
SDF 만들기 2  (0) 2024.02.09
일단 구매  (2) 2024.01.16
파티클의 충돌 & 물리값 2  (0) 2024.01.10
파티클의 충돌 & 물리값  (1) 2024.01.09

댓글