IT/이펙트

SOP 란?

헥크 2021. 11. 28.
728x90
반응형

SOP: Surface Operator
3D오브젝트의 형태를 가공할때. point(점), edge(선), primitive(면)등과 관련있다.
Geometry 과 Volume를 다룰때 사용한다.
vertex는 primitive와는 조금 다른 의미로 primitive를 구성하기 위한 정점이다.
SOP 노드들은 Geometry필드에서 볼 수 있다. 

변수(Variation)
변수는 달러+대문자 영어 형태로 표현된다.
$F :프레임 번호
$T : 현재 타임(실수)
$PT : 포인트 번호
$TX : x 좌표 (+TY, TZ)
$PR : 면 개수
$NPT : 포인드 개수
$NX : 노멀 X (+ NY, NZ)
$LIFE : life
$BBX: bounsing box X, (+ BBY, BBZ)
$YMIN: geo의 최소 y값 (+ XMIN, ZMIN)
사용하고자하는 변수를 속성값에 적용시키면 재미있는 표현이 가능하다.
($F변수 확인 시 Real Time Toggle 체크 필수)

변수의 종류
글로벌 변수: $F같이 전반적인 영역에서 사용가능한 변수.
로컬 변수: 각 노드안에서만 사용가능한 변수

익스프레션(Expression)
후디니 안에서 사용되는 함수들의 모임.
abs() : 절대값
fit() : 어떤 흐름을 다른 흐름으로 (eg. life를 투명도로 life가 3~1일때 변동, 완료)
min() : 인자중 최소값
mas() : 인자중 최대값
smooth() : smooth(50, 100, 60)이라면 50이하는 0, 100이상은 1, 60이면 보간 계산
opinputpath() : path의 GEO불러오기 opinputpath("..", 0)
nprims() :

sin(), cos(), tan() : 삼각함수, y값은 각 그래프 참고 

어트리뷰트(Attribute)
GEO의 구성요소(점, 선, 면)들이 가진 속성값.
이름, 색상, 점 번호 등등등

Attribute Create SOP를 이용해 어트리뷰트를 추가할수도 있다.
(박스 생성후 Attribute Create 로 hello 라는 변수를 만들면 박스의 모든 구성요소는 hello를 갖게된다)
노드위에 마우스 중간버튼을 누르거나 Geomotry Spreadsheet를 통해 추가됨을 확인할수 있다.

Class 지정
네 가지로 나뉜다
Point(점), Vertex(면의 점), Primitive(면), Detail 각각의 속성에 추가할 속성을 부여한다는 의미다.

Type 지정
네 가지 타입으로 나뉜다.
Float(실수), Integer(정수), Vector(3실수), String(문자열) 각각의 타입으로 자정할수 있다.

속성 가져오기(Transfer)
Attribute Transfer SOP를 이용한다.
네 가지 트랜스퍼 방식이 있다.
근접한 Detail(디테일), Primitives(면), Points(점), Vertices(면의 점) 의 어트리뷰트를 가져온다.
*Point Cloud를 이용하면 이 노드보다 섬세한 제어가 가능.

입력1: 받을 GEO
입력2: 가져갈 GEO

쉽게 말해 2에서 1로 속성을 가져다 주는것.
어떤 속성을 넘길것인지는, 이 노드의 Attributes탭 안에 적을수 있다. (색상을 넘기려면 Cd)
여기서, Attribute Transfer SOP의 주목해야할 특징은, 근접한 속성만 가져오는것이다.
얼마나 근접한 속성을 가져올지는 Conditions탭 안의 Distance Threshold값을 조정하면 된다.

그룹(Group)
Group SOP로 Point(점), Edge(선), Primitive(면) 등을 특정 기준으로 그룹을 만들수 있다.
원하는 부분만 수정, 변경할때 유용하다.

간단하게 Select모드에서 마우스로 클릭해 씬 뷰에서 Group을 타입하면 그룹지을수 있다.
(select 모드 단축키: s, 1, 2,3 으로 점, 선, 면 선택 가능, 씬뷰에서 노드 만들기: tab)
Group노드의 Base Group 속성에서 4-5는 4~5 번째 점 or 선 or 면을 만한다.

바운딩 박스(Bounding Box)
모든 Geometry는 BBOX 정보를 가진다.
GEO를 감싸는 직육면체라고 생각하면 된다.
만약 구의 Radius중 x의 길이만 바꾸면 BBOX의 x길이의 변동이 일어난다.

Scatter SOP
인풋 GEO위에 원하는 개수의 새로운 점들을 생성하고. 점 분포를 조절한다.
  Force Total Count: 생성할 점의 개수
  Relax Iterations: 점사이 간격 균등하게, 낮아질수록 균등함의 정도가 낮아짐-> off하면 완전한 랜덤 분포를 만든다.
  Density Attribute: 밀도에 근거하여 점을 생성하겠다. (density말고 다른 값을 넣으면 해당값이 높은 부분에 점을 많이 생성한다.)

Copy and Transform SOP
원하는 개수대로 복사할때 사용한다.
Total Number로 개수 조절하고, 아래 속성들로 다음 복사본의 속성을 조정한다.
원본에서부터 차례대로 복사가 되는 원리(추가된 속성값이 누적된다) 

Copy to points SOP
특정 규칙을 통해 복사하고자 할 때 사용한다.
입력1을 입력2의 모든 point에 복사한다.

Trail SOP
움직이는 물체의 위치변화를 이용한 기능을 제공한다.
주된 기능
  1. 여행경로에 따른 복사 : 움직이는 물체의 흔적을 복사한다.
  2. 속도 계산 : 움직이는 물체의 속도를 계산한다.
움직이는 물체에 연결하면 간단하게 복사가 가능하다.
Trail Increment 속성: 몇 프레임전의 물체를 복사할것인지(5라면 5프레임전의 모습으로 시작.)
Trail Length 속성: 복사체의 개수를 결정.
Result Type 속성을 Compute Velocity로 선택한다면 속도계산값을 출력한다.

For-Each Loop
두개의 기본 SOP 노드를 만든다.
Block Begin SOP(시작) ~ Block Eng SOP(종료)

반복횟수
  1. 지오메트리 수 :  point또는 primitive 개수로
  2. 어트리뷰트 수 : point 또는 primitive 의 어트리뷰트 개수
  3. 단순 횟수 :  원하는 만큼

Voronoi Fracture SOP
Voronoi 다이어그램은 수학적 개념.
  입력1: 쪼개려는 GEO
  입력2: 분할시 참조되는 점들 
입력2(점들)를 수직이등분하는 선들으로 쪼개지는것이다.

DOP에서 건물 붕괴나 사물 폭파에 필수적이다.
+ Scatter과 주로 함께 쓴다. 
입체 도형을 다룰때는 primitive type을 Mesh 로 설정해야 내부까지 쪼개진다.
이때 내부와 외부는 자동으로 그룹으로 나눠진다.

Pack SOP
씬뷰 디스플레이 속도와 RBD시뮬레이션 속도를 향상 시켜준다.
IFD(렌더러에 보내는 Scene Description 텍스트)파일을 가볍게 해준다. -> 렌더링 속도 향상
copy sop 을 이용할때 힘을 발휘한다.
copy sop 의 pack and instance 옵션을 on -> 메모리가 뚝 떨어짐~
왜? 단순 복사로 나온결과가 아니라 100개의 복사체라면 모두 동일한 GEO를 참조하고있으므로 메모리가 대폭 줄어든것이다.


+ 신기한것
pack한 후에 voronoi로 쪼개면 바닥에 닿는순간 copy된 수 만큼 새로 복제된다.

Vellum Constraint SOP
DOP로 Vellum 다이나믹을 구현할때 사용된다.
적용하고자하는 GEO에 연결한 후 DOP로 출력값을 연결한다.

세 가지 출력값
1. Vellum Geometry: 그리드 
2. Constraint Geometry: 뼈대
3. Collision Geometry:  충돌
1, 2를 DOP에 연결하자

 

원글

https://hui-studio.tistory.com/5
https://www.sidefx.com/docs/houdini/nodes/sop/index.html

독학넷이라는 사이트를 참고해봤다. https://www.dokak.net/

 

SOP 에 대해

SOP: Surface Operator 3D오브젝트의 형태를 가공할때. point(점), edge(선), primitive(면)등과 관련있다. Geometry 과 Volume를 다룰때 사용한다. vertex는 primitive와는 조금 다른 의미로 primitive를 구성하..

hui-studio.tistory.com

 

728x90
반응형

댓글

추천 글