'Houdini'에 해당되는 글 112건

  1. 2012.07.23 12.07.12 THU
  2. 2012.07.22 12.07.09 MON
  3. 2012.07.18 12.07.05_THU
  4. 2012.07.18 12.07.02_MON
  5. 2012.07.12 12.06.28_THU
  6. 2012.07.11 12.06.25_MON
  7. 2012.07.10 12.06.21_THU
  8. 2012.07.07 12.06.18_MON

12.07.12 THU

Houdini/SOP 2012. 7. 23. 00:02 |


exam.hipnc


※ 노이즈는 패턴이 있다.


※ 프리퀀시 = 1/주기


◎ mountain

- Fractal Depth

# fractal depth == max octave == turbulence

# 원래의 freq에다 high freq를 더하는 것!! ( frequency를 두개 더하면(low freq + high freq) depth 2가 됨, 다시 또 여기다 이것보다 freq가 더 높은 것을 더하면 depth는 3이 된다.)

# 몇번을 더할 것인가?

# depth를 높이면 디테일해진다.


- Roughness

# 첫번째 wave에 두번째 wave를 얼마나 적용시킬건가

# 두번째 freq에다가 해당 값을 곱한다. ex) $TY * 0.5  => 0.5가 roughness가 된다.

# roughness가 높으면 거칠어진다.


※ 즉, 1번째 노이즈 + (2번째 노이즈 * roughness)  => 옥타브가 된다.


※ depth = 2 (max octave = 2)

# 주파수1 + (주파수2 * roughness)

※ depth = 3 (max octave = 3)

# 주파수1 + (주파수2 * roughness) ^ 2




※ noise($TX, $TY, $TZ) 는 월드스페이스에서 노이즈 발생.


※ turb()

# depth가 있다. 그래서 거칠기를 조절할 수 있음.

# 구름같은 것 만들 때.


※ sin or cos ( $TX * "frequency" + "offset") * amplitude + cutoff


※ Lacunarity == 프리퀀시 스케일

# 복잡한 노이즈를 만들기 위해서 frequency를 다시 스케일링하는데 이것을 frequency scale 혹은 Lacunarity라고 부른다.


※ snoise()

# 그냥 noise와 다르게 뭔가 뭉탱이 느낌이 난다.

# -1.5 ~ +1.5


※ sturb()

# 이것도 그냥 turb()와는 다르게 뭉탱이 느낌이 난다. 뭉쳐있다.

# -1 ~ +1 인데 더 높아질 수 있음. (정확한 것 아님)


※ 뉴턴의 제 2법칙

# F(force) = m(mass) * a(acceleration)

# 힘 = 질량 * 가속도

# a = f / m

# 질량이 커질수록 가속도가 느려진다.


※ 파티클을 움직이는 것은 "가속도" 이다.


※ 후디니에서 mass 가 1이면 1kg이다.

# 1unit은 1m이다.


※ v = a * dt(m/s) (dt == 단위시간)

# 속도 = 가속도 * 시간

※ p = v * dt(m)

# 위치 = 속도 * 시간


※ 가속도(a)  ->  속도(v)  -> 위치(P) 이렇게 바뀐다.


※ Houdini에서의 Particle에서 "v"가 우선권을 가지고 있다. 즉, v, N 이 있는데 v 가 없으면 N을 씀.


※ abs(), clamp(), fit(), smooth()


※ 4D noise (시간 축)

# 3D mesh에서 전체적으로 울렁거리는 효과가 나타남.

# 4D 랑 y축이랑 함께 노이즈를 넣으면 이상함.

'Houdini > SOP' 카테고리의 다른 글

분수에 같은 파티클에 이미지 입히기  (0) 2013.01.25
노말 방향으로 폭파  (0) 2013.01.25
12.07.09 MON  (0) 2012.07.22
12.07.05_THU  (0) 2012.07.18
12.07.02_MON  (0) 2012.07.18
Posted by scii
:

12.07.09 MON

Houdini/SOP 2012. 7. 22. 16:18 |

◎ foreach 노드는 기본적으로 primitive를 가지고 동작한다.

# each의 tolence는 attribute를 선택했을 때만 사용한다. 만약, 0.001이면 이것을 기준으로 나눈다는 뜻이다.


◎ magnet sop은 R, G, B를 따로따로 컨트롤이 가능.


※ npims()

# 해당 노드의 primitive의 총 개수를 리턴.


※ point sop 보다 attribute create sop이 더 빠르다.


※ prim() 는 point()와 같다.

ex) prim("../ref", $PT, "P", 0) 

# ../ref 경로의 현재진행중인 포인트들의 x축 포지션값을 가지고 온다.


※ closet surface를 만들때는 isooffset sop을 이용한다.


※ strcmp와 비슷한 함수: strmatch

# strcmp는 첫번째 인자가 ASCII 코드상 앞서면 -1을 리턴, 두번째 인자가 앞서면 1을 리턴, 둘 다 같으면 0을 리턴한다.

# strmatch 는 같으면 1, 틀리면 0을 리턴.


◎ ray sop

# normal이 필요하다.

# 내가 원하는 point번호와 primitive의 order를 원할 때 가장 많이 사용한다.

# ray sop을 사용할 때 부딪히지 않으면 절격같은 것이 생기므로 내가 원하는 딱 맞는 것을 transform 으로 조절해서 사용.

(땅을 만들 때, 내가 원하는 point, prim번호로 만들고 싶을 때 그리드를 땅에다 레이를 쏘면 됨)


- point intersection destance

# 광선을 쐇을 때 부딪힌 곳까지의 거리를 계산. (dist라는 attribute를 만들고 값을 저장한다.)

※ dist 는 vector의 길이






- create point group

# 부딪힌 그룹만 포인트 그룹으로 만든다.



- point intersection normal

# 부딪힌 geo의 노말을 쓴다.(geo가 가지고 있는 원래의 노말)


- tolerence

# 얼마나 작은 값까지 허용하여 레이를 적용할 것인지를 조절.


- scale

# 0일때는 디폼이 안되고 1이면 완벽하게 모두 디폼된다. 블래드 sop 처럼.


- lift

# 디폼값에 더하는 값.


- bias

# 레이의 미니멈. 올리면 밑에있는 값은 변하기 않음. (어디부터 어디까지 계산할 것인지)


- sample

# 광선을 여러번쏜다. 숫자가 높으면 느려짐. (1이면 한번쏘고, 2면 두번쏜다.)


- shortest

# 가장 짧은 값


- longest

# 가장 긴 값


- minimum distance

# 현재 나에서 가장 가까운 primitive에 붙는다. 디스턴스 상에서.


- Intersect Farthest Surface

# 활성화하면 가장 멀리있는 것부터 붙는다.


※ attribute transfer sop 은 copy sop보다 유용할 때가 있다.



'Houdini > SOP' 카테고리의 다른 글

노말 방향으로 폭파  (0) 2013.01.25
12.07.12 THU  (0) 2012.07.23
12.07.05_THU  (0) 2012.07.18
12.07.02_MON  (0) 2012.07.18
12.06.28_THU  (0) 2012.07.12
Posted by scii
:

12.07.05_THU

Houdini/SOP 2012. 7. 18. 23:57 |


exam.hipnc


◎ isooffset

- ray intersect

# 레이저를 쏘아서 잡는다.(바깥쪽의 것만 다 잡음)

# 바깥에서 빛을 쏘는 방식이다. 밖에서 안으로 쏴서 어디에 부딪히는지 계산하여 폴리곤 surface를 만듦.

# 이음새가 없는 통자 지오메트리를 만들 때.


- max axis

# 제일 긴쪽을 샘플링 수만큼 나눠줌.


- x axis

# x축을 샘플링 수만큼 나눠줌.


- by size

# divide size 나눌 때 한개의 사이즈.


- non square

# 별로안씀(그닥임)


- Lazer scan

# 바깥쪽만 쭉 스캔 됨.


- fog volum

# 0~1 을 표현한다. (바깥쪽은 0, 안쪽은 1)

# 구름이나, 연기.


- sdf volum  ==  level set

# sign distance field.

# +, - 정보를 가지고 있다. 따라서 0이 되는 부분을 표시, 표현한다.


- override bound

# 바운딩 박스로 특정구간만 테스트할 때.

- override output divs

# 테스트할 때 오래 안걸리게 (로우한 것 테스트할 때)


- tetra mesh

# tetra type 큐브는 안을 전부 박스로 채워준다.

# 큐브 말고도 각 포인트를 네크워크로 이어지게하여 연결한다. 이것은 소프트바디 시뮬레이션할 때 속의 내용이 차 있어야 움직임을 계산할 수 있으므로 유용하다. == box노드의 enforcement bars 를 체크하면 tetra mesh와 동일해진다. (리지드 바디에서 유용)]


- invert sign

# 바깥과 안쪽을 뒤집는다 (sdf 상에서)


- file mode

# 여기에서 sdf로 저장할 수 있다.

# simdata는 dop에서 쓰이는 데이타 형식이다.


※ 리지드 바디, 워터, 파이로 시뮬레시션, 불 붙는 용기등등 만들때 모두 레벨셋으로 만든다.


※ sdf는 4~5년전부터 본격적으로 쓰기 시작했다. 스파이더맨할 때. 박스안에 한 포인트에서 계산하기 시작하여 내 바깥쪽은 +, geo 안쪽은 -값을 넣는다.


※ sdf만 simdata로 저장된다.


※ sdf는 리지드바디 할 때.


※ sdf volum == level set 중요하다.


※ 시뮬레이션에서 가장 좋은 것은 "정사각형(정육면체)" 이다.


◎ primitive sop

- adjust visualization 체크 후 isosurface를 선택하면, +와 -가 교차하는 지점을 계산하여 서페이스로 보여준다.


◎ polyreduce 는 폴리곤 수를 줄여준다.


◎ spring


◎ particle flued surface

# 이 노드는 scale, pscale 이 안된다. 왜냐면 샘플링 방식이라.


◎ magnet

# 메타볼을 이용해 디포메이션을 준다.


◎ bulge

# magnet의 심플버젼이다. (방향성 x)

# magnet은 방향이 바뀌면 즉, 회전하면 색이 변한다. 하지만 bulge는 방향성이 없기때문에 회전해도 색이 안변한다.


◎ metaball

# R, G, B 를 조절할 수 있다는 것이 큰 장점이다.

'Houdini > SOP' 카테고리의 다른 글

12.07.12 THU  (0) 2012.07.23
12.07.09 MON  (0) 2012.07.22
12.07.02_MON  (0) 2012.07.18
12.06.28_THU  (0) 2012.07.12
12.06.25_MON  (0) 2012.07.11
Posted by scii
:

12.07.02_MON

Houdini/SOP 2012. 7. 18. 01:52 |


eax.hipnc

update.hipnc





# primgroupmask()

# primitive group을 마스크를 씌어 싹다 불러온다. 

ex) primgroupmask("경로명", block_*) => block_으로 시작하는 그룹 싹다 불러옴.


# arg()

# 인자를 번호에 맞게 리턴한다. 

ex) arg("haha hoho", 1) => hoho를 리턴한다. (C언어의 argv와 같음)


# argc()

# 인자의 개수를 리턴한다.

ex) arg("haha hoho") => 2가 리턴. (C언어의 argc와 같음)


# opdigits()

# 인자안에 있는 숫자를 리턴.


※ exhelp -k opd

# 이렇게 "-k" 옵션을 주면 opd로 시작하는 모든 익스프레션이 출력된다.


※ exhelp -k string

# string에 관련된 모든 익스프레션이 출력된다.


◎ foreach sop

# 반복문과 같은 역할을한다.



exam2.hipnc




갑자기 영화 제목이 기억이 안나네... 아무튼 그 영화에서 큐브모양으로 부서지는 원리가 이런 원리로 만들었다고 한다.

'Houdini > SOP' 카테고리의 다른 글

12.07.09 MON  (0) 2012.07.22
12.07.05_THU  (0) 2012.07.18
12.06.28_THU  (0) 2012.07.12
12.06.25_MON  (0) 2012.07.11
12.06.21_THU  (0) 2012.07.10
Posted by scii
:

12.06.28_THU

Houdini/SOP 2012. 7. 12. 02:50 |
◎ copy sop
- Tranform Cumulative(변형 누적).

※ 1-를 한 이유는, 뒤집기 위함이다.
※ $CY는 현재 진행중인 Number of Copies이다. (0~19까지를 0.1에 계속 곱해나간다)
※ Transform Cumulative를 비활성화 하였기 때문에 누적되지 않는다. 즉, 복사본의 0.1씩을 계속 곱해나간다. 

- Transform Cumulative 비 활성화.



- Transform Cumulative 활성화.

# 활성화를 하였기때문에 계속 누적이 된다. 즉, 제곱이 된다.



DNA 만들기






※ npoints는 point 개수 리턴.

※ nprims는 primitive 개수 리턴.



※ houdini 는 항상 "Z축" 을 향하여 만든다.


※ pointer 만들기(방향성을 직관적으로 보기 위함).

# platonic solid에서 transform 노드 달고 여기서 rot Y = 90, scale Y = 0.25, Z = 0.5



※ 뷰 포트에서 D를 눌러 custom에서 Edit을 눌러 나만의 속성 만듦 => upvector

※ orient, up, v, rot, trans, scale, pscale

# Houdini의 Attribute (orient -> N -> v -> up -> scale -> pscale 순이다.)


※ houdini는 쿼터니언을 쓴다.

# 파티클에서 파티클 회전.


※ 오일러는 3자리, 쿼터니언은 4자리이다.


※ pscale = uniform scale.


※ scale은 float이다.


※ orient 애트리뷰트는 "끝판 왕"이다.

# attribute중에서 가장 강력하다.


※ N이 있고 V가 있을 때, N이 없어지면 V를 N으로 쓴다.


※ 파티클 만들고 컨트롤 할 때, N, V를 가능한 한 만들어서 컨트롤을 해야한다.


※ orient(float, 4자리), N(vector, 3자리), v(vector, 3자리), up(vector, 3자리), scale(float, 3자리), pscale(float, 1자리)


※ scale은 local축이다.

# 오브젝트 스페이스. 축이 돌아가도 그 돌아간 상태에서 커진다.


'Houdini > SOP' 카테고리의 다른 글

12.07.05_THU  (0) 2012.07.18
12.07.02_MON  (0) 2012.07.18
12.06.25_MON  (0) 2012.07.11
12.06.21_THU  (0) 2012.07.10
12.06.18_MON  (0) 2012.07.07
Posted by scii
:

12.06.25_MON

Houdini/SOP 2012. 7. 11. 14:15 |


120625_MON.hipnc


※ noise, sin, cos 는 -1 ~ +1 까지의 값을 리턴한다.

※ rand()는 0~1 까지의 값을 리턴한다.


◎ clip sop

# 커터칼로 자르는 듯한 노드.


◎ divide sop

- Remove Shared Edge

# 연결되지 않은 부분만 살리고 다 지움(외곽선만을 딴다. 면이 없는).



※ 연산속도가 delete 보다 clip이 빠름.


◎ cookie sop

- crease

# 부딪혀있는 부분만 남김(부딪히는).





※ rand($PT) > $CR

# 만약, rand($PT)가 0.5가 나오고 $CR이 1이 나왔다. 그러면 진한 색인 1을 살린다. 그리고 rand($PT)가 0.2가 나오고 $CR이 0.1이 나오면 $CR인 0.1을 지운다.

따라서, 진한색을 남기고 검은색은 듬성듬성 남긴다.(확률적으로 남겨둠)



◎ paint

- Accmulate to stencil

# 포토샵의 layout 처럼


- UV Radius

# UV상에서


- Stroke, oriendt Brush To Suface

# 노말 상관없이 칠해짐. 유용하다.


- Use Connectivity

# 이것은 연결안 된 부분은 칠하지 않는다.




※ paint sop과 관련된 sop들



※ $NCY => 총 복사 개수.




※ fit() 

# fit(num, -1, 1, ?, ?) => 이건 fit11()과 같다.


# fit(num, 0, 1, ?, ?) => 이건 fit01()과 같다. 



'Houdini > SOP' 카테고리의 다른 글

12.07.02_MON  (0) 2012.07.18
12.06.28_THU  (0) 2012.07.12
12.06.21_THU  (0) 2012.07.10
12.06.18_MON  (0) 2012.07.07
12.06.07_THU  (0) 2012.07.05
Posted by scii
:

12.06.21_THU

Houdini/SOP 2012. 7. 10. 04:02 |

※ point 정보(point position)만을 가지고 있는 것을 "point cloud" 라 부른다.


※ obj 레벨에서 애니메이션, 시뮬레이션을 하는 것이 훨씬 가볍다. 반면, sop 레벨에서는 느리다. 

왜냐면, obj레벨에서는 그냥 있는 그대로를 통째로 옮기기 때문이고, sop레벨에서는 위에서 아래로 일일이 계산해야 하기 때문이다.


# $CEX, $CEY, $CEZ 입력단의 센터로 간다.



add sop


#  add sop의 particle - Add Particle System을 켜주면 포인트가 보인다 (따로 "." 체크를 안해도 보인다). 그리고 포인트의 컬로도 볼 수 있으므로 편리하다.


: 패턴에서 0-$N 을 하면 처음부터 끝까지 모두 연결됨. $N은 포인트의 마지막 번호이다.



$N-2를하면 포인트 마지막번호에서 -2값을 한 범위만 연결한다. 하지만 `(Backticks) 를 안 넣으면 제대로 된 실행 값이 안나온다. 


Group sop의 Create Ordered는 자기가 쓴 패턴대로(3-2-4-0) 이 순서대로 그룹을 짓는다는 해석이된다.

체크를 해제하면, 후디니 마음대로 순서를 정해 그룹이 되어진다.


위에서 내가 쓴 순서대로 그룹을 지었던 것을 쓴다는 것이 된다. 그러므로 3-2-4-0의 순서대로 연결이 된다.





attribute copy 

# 2번째 입력단을 1번째 입력단에 속성을 카피한다. 

# Other Attribute 에서 P(transform) 을 카피한다. 


point sop에 들어오는 2번째 입력단을 쓰겠다 라는 해석이 된다.


블렌드 값이 1이기 때문에 완전히 곱해진다. 즉, 그대로 된다.





scatter sop

- compute Number of points

# measure 노드처럼 primitive 면적을 계산해서 primitive 안에 포인트 갯수를 정해 넣을 수 있다.


- Scatter Based On Primitive Area

# primitive 면적에 관계없이 포인트를 "균등"하게 생성 (scatter sop은 UV를 기준으로 포인트를 만듦).


※ `(Backticks) 를 뷰포트상에서 치면 셀렉트 화면으로 돌아감.


※ Preserve Original

# 원래 그룹을 남겨 놓는다.


※ Houdini 에서 여러방법으로 포인트를 생성할 수 있지만 가장 빠른것은 Line sop에서 포인트를 생성하는 것이다. 

# primitive Type 에서 Points로 두고 포인트를 생성하면 된다.




Group sop

- Combine 탭에서 hand, head 그룹을 or(합침) 해서 foo라는 그룹을 생성한다.


Unshared Edges를 활성화하면, obj의 가장자리 엣지부분이 선택되어 진다.


'Houdini > SOP' 카테고리의 다른 글

12.06.28_THU  (0) 2012.07.12
12.06.25_MON  (0) 2012.07.11
12.06.18_MON  (0) 2012.07.07
12.06.07_THU  (0) 2012.07.05
높은 지역에서만 파티클 날리기  (0) 2012.07.04
Posted by scii
:

12.06.18_MON

Houdini/SOP 2012. 7. 7. 04:00 |


exam.hipnc


◎ Vector Normalize (벡터 정규화) 단위 벡터


vector의 normalize 방법 3가지


1. facet 노드의 Make Normals Unit Length.



2. normalize 익스프레션.

 ex) point노드에서 normalize(vector3($NX, $NY, $NZ))[0]

※ [0]은 컴퍼넌트 (x 를 뜻함, [1]이면 y).



3. length 익스프레션.

ex) point 노드에서 1/length($NX, $NY, $NZ) * $NX





◎ Vector Add


두 벡터를 합하면 그 사이에 합한 벡터의 길이만큼의 벡터가 생긴다.




◎ Vector Subtract


$TX2 - $TX

$TY2 - $TY

$TZ2 - $TZ


ex) TX2는 $TX의 위치를 바라보게 된다.



sort 노드를 이용하며 포인트 넘버를 shift 하는 이유?


 - 그것은 각각의 포인트들을 서로 subtract 하기 위해서이다.




◎ Dot Product


dot(vector3($NX, $NY, $NZ), vector3($NX2, $NY2, $NZ2))

# 이렇게 닷을 구하면 벡터의 그림자 길이를 구한다.




※ 각도 구하기(벡터와 벡터의 사이) 

acos(dot(normalize(vector3($NX, $NY, $NZ), normalize(vector3($NX2, $NY2, $NZ2)))



※ Dot Product의 활용 예


dot(normalize(vector3($NX, $NY, $NZ), normalize(vector3($VX, $VY, $VZ))

# 이렇게 닷을 구하면 velocity가 향하는 닷을 구할 수 있다.







◎ Cross Product


- cross product는 vector 사이의 기준을 만듦(축)





# cross product 구하는 또 다른 공식 

point sop의 normals에서...


x = $NX * $NZ2 - $NZ * NY2


y = $NZ * NX2 - $NX * $NZ2


z = $NX * $NY2 - $NY * $NX2



◎ point Expression


point 익스프레션 -> REFout에서 현재 진행중인 모든 포인트의 컬러값 중 R을 가져온다.


'Houdini > SOP' 카테고리의 다른 글

12.06.25_MON  (0) 2012.07.11
12.06.21_THU  (0) 2012.07.10
12.06.07_THU  (0) 2012.07.05
높은 지역에서만 파티클 날리기  (0) 2012.07.04
ramp를 활용한 애니메이션  (0) 2012.05.18
Posted by scii
: