'Houdini'에 해당되는 글 112건

  1. 2012.11.18 VEX functions
  2. 2012.11.17 inline code노드
  3. 2012.08.23 12.08.20 MON
  4. 2012.08.23 12.08.20 MON
  5. 2012.08.17 12.08.16 THU
  6. 2012.08.14 ex
  7. 2012.08.14 12.08.13 MON
  8. 2012.08.14 12.08.13 MON

VEX functions

Houdini/VEX functions 2012. 11. 18. 17:20 |


set VEX function

vector set(float, float, float)

vector4 set(float, float, float, float)


set() 함수는 float 타입의 자료를 3개 받아 vector로 반환해주는 함수이다.

하나의 벡터 컴포넌트를 바꿔주고 그것을 vector로 반환

※ vop의 Set Vector Component 노드와 같다.




getbbox VEX function

void getbbox(vector min&, vector max&)


getbbox() 함수는 매개변수로 들어오는 2개의 vector 타입의 인자를 참조형으로 받아서 getbbox 안에서 해당 지오메트리의 min, max를 구해준다.

※ vop의 Bounding Box와 같다.




getneighbour VEX function




getneighbours VEX function

int[] getneighbours(int ptnum, input)

Returns an array of the point numbers of the neighbours of a point.





getneighbourcount VEX function




addattribute VEX function

1. void addattribute(string name, int value)

2. void addattribute(string name, float value)

3. void addattribute(string name, vector value)

4. void addattribute(string name, vector4 value)

5. void addattribute(string name, matrix value)

6. void addattribute(string name, matrix3 value)

7. void addattribute(string name, string value)

8. void addattribute(string name, float values[]; int capacity, ...)


-> 인수에 type을 정의할 수도 있다. 

vector(3 floats), normal(3 floats), point(3 floats), quaternion(4 floats), indexpair


float f[] = array(1,2,3,4,5,6,7,8);

addattribute("a1", arraylength(f));

=> 이렇게 하면, 포인트의 a1 속성에는 8이라는 배열길이가 들어간다.


/* addattribute는 각각의 포인트마다 값들이 들어간다. */

sop
create_attribs()
{
  float   f[] = array(1,2,3,4,5,6,7,8);

  // Add an attribute called "a1" with length 8
  addattribute("a1", f, arraylength(f));

=> 배열의 길이만큼 들어간다. 즉, 포인트마다 a1[0]~a1[7]이 생기고 1~8의 숫자가 들어간다. 0포인트에는 1, 1포인트에는 2, ... 이런식으로 들어간다.

// Force the attribute size to be 3 addattribute("a2", f, 3);

=> 배열의 3번째 요소까지만 포인트에 a2라는 속성이 생기며 들어간다. 1, 2, 3

// Set the "vector" qualifier so the attribute is transformed // differently. addattribute("a3", f, 3, "type", "vector");

=> "type", "vector"로 인하여 속성이 다르게 변한다. 즉, a3라는 속성이 생기는데 a3[x], a3[y], a3[z] 이렇게 생기고 배열의 첫번째부터 세번째까지의 값이 차례대로 들어간다. a3[x] = 1, a3[y] = 2, ...

주의할 점은, 길이가 꼭 3이어야만 한다는 점이다. 2나 4나 이런숫자가 들어가면 vector의 속성이 생기지 않는다.

// Set the "index-pair" qualifier (array length must be even) addattribute("a4", f, 8, "type", "indexpair");

=> a4 regn[0], a4 w[0.0], a4 regn[1], a4 w[1.0], ... 이런식으로 속성이 생기는데.. 이걸 어떨때 써야하는지 감이 잘 안온다.

"type", "indexpair" 는 배열의 길이는 되어야 한다고 써있는데.. 그 이유는 잘..

// Add some random values in a 2-tuple f = array( float(nrandom()), float(random(ptnum)) ); addattribute("rnd", f, arraylength(f));

=> f는 길이가 2인 배열로 바뀌면서 rnd[0]에는 nrandom()으로 생성된 랜덤값이, rnd[1]에는 random(ptnum)으로 생성된 랜덤값이 들어간다.

}


Adds a new point attribute (or Writes to an existing attribute)

파티클이나 포인트에 VEX를 이용해서 새로운 attribute를 부여하고자 할 경우나 Output에 없는 attribute의 경우에 이 노드를 이용해서 Output 시킬 수 있다.

addattribute 함수나 vop 노드는 따로 output variables에 연결되지 않고 자체적으로 끝마친다. 왜냐면, 그 애트리뷰트에 넣어주는 것이므로.

※ vop의 Add Attribute와 같다. 또한 sop의 Create Attribute와 비슷하다.




import VEX function

int import(string attrib_name, type result&; int input)
int import(string attrib_name, type result&; int input; int pt_num)
int import(string attrib_name, float values[] &; int input; int pt_num)


This from lets you import attributes containing arbitrary length arrays of floats, such as capture data.

Import attribute data from the SOP or POP connected to the specified input. Returns 1 and puts the data in result on success, or returns 0 on failure.


Possible reasons for failure are:

  • No input is connected to the specified index.

  • The attribute doesn’t exist on the input geometry.

  • The attribute size/type doesn’t match the VEX type.

  • The input geometry has fewer points than the VEX SOPs geometry.

  • The point number given is larger than the number of points in the input.

There are two forms of the import() function. The first form will import the attribute data from the current point that the VEX function is working on. The second form allows you to specify an arbitrary point number of the input. Point numbers are indexed from 0. 


sop에서 UV Texture node를 이용하여 만든 UV값을 vop에서 불러오고자 할 때, Global Variables에 없는 Attribute를 불러올 때 유용하게 사용이 가능하다.

OP Input Index를 이용하면 vop의 다른 Input에 연결된 node의 Attribute도 불러올 수 있다.

그리고, 첫번째 output인 Integer 값은, 잘 갖고오면(성공하면) 1을 반환하고 그렇지 않으면 0을 반환하기 때문에 그것을 이용하여 'Two Way Switch node' 와 같이 사용할 수 있다.




resize VEX function

void resize(arraytype &array; int size)

If you enlarge the array, intermediate values may be uninitialized (return 0 or "").




array VEX function

arraytype array(...)


효율적으로 배열의 인수를 만든다.

만약, vector v1[] = array(1, 2, {1,2,3}, 4, 5, 6, 7, 8); 이런식으로 문장이 구성되면, 아래의 그림과 같이 v1배열이 구성된다.

저 수식에서 array를 빼면 2번째 인덱스에 들어가는 {1,2,3} 때문에 에러가 난다. 즉, 이런식으로 효율적으로 배열의 요소들을 구성하려면 array()함수를 써야만 한다.


그리고, 

vector v[] = vector(array( 1, {1,2,3}, 3, s, t, Cl, P, N)); float f[] = float(array(1, 2, s, t, length(P-L), length(N)));

올바른 배열의 구성을 가지려면 함수스타일형 변환을 하라고하는데... 이렇게하면 에러가 난다. 왜 그러지..




nrandom VEX function

1. float nrandom()
2. vector nrandom()
3. vector4 nrandom()
4. float nrandom(float)

이 함수는 랜덤을 발생시키는 함수인데.. 랜덤을 발생하고 그 다음 랜덤을 또 발생시키면 7번 포인트가 가졌던 랜덤 값을 6번포인트가 갖고 6번 포인트가 갖고 있던 랜덤 값을 5번 포인트가 갖도로 해준다. 즉, 랜덤 값이 모든 포인트마다 새롭게 생기는 것이 아니라 하나씩 번갈아가며 랜덤 값을 갖는다.



rotate VEX function

1. void rotate(matrix &, float amount(radians), vector axis)
2. void rotate(matrix3 &, float amount(radians), vector axis)

이 함수는 주어진 매트릭스에 회전을 적용한다. 
그리고 각도는 radians로 해주어야 하며, 축은 정규화를 해주어야 한다.

그리고 첫번째 인수로 matrix 자료형을 받는데, 참조형으로 받아서 반환형이 void이다. 내부에서 matrix 값을 변환하는가보다.




Set Vector Component VEX node


Assigns a value to one of the vector's components.
This operator assigns a value to one of the vector's components.

vector의 한가지 요소를 할당한다. 
그리고 vex에서 어떻게 쓰이는지 예제가 없는것은 vex에서 기본적으로 되어있다는 뜻이다. 
즉, 이 vex node 같은 경우에는 vex에서 P.x = v.x로 할당할 수 있다.



dihedral VEX function

matrix3 dihedral(vector a, vector b)


computes the rotation matrix which rotates the vector 'a' onto the vector 'b'

vop sop의 노드로는 Align 노드가 있다.



qconvert VEX function

matrix3 qconvert(vector4 quaternion)

Converts a quaternion represented by a vector4 to a matrix3 representation.

쿼터니언을 matrix3로 변환해서 반환해준다.
vop의 노드로는 Quaternion To Matrix3 노드가 있다.



Make Transformer VEX node


Builds a general 4×4 transform matrix given an order of transformations (trs), an o...

This operator builds a general 4×4 transform matrix given an order of transformations (trs), an order for rotations (xyz), vectors representing the translation (t), rotation (r) and scale (s) amounts, and optionally a pivot. 


Transform Matrix VEX node


Transforms an input position, normal, or vector by a matrix specified by the translate, rotate, and scale parameters. 


Make Transformer 노드와 Transform Matrix 노드는 비슷하다. 단지, output이 매트릭스냐 벡터냐의 차이 뿐!




'Houdini > VEX functions' 카테고리의 다른 글

VEX Functions Definition  (0) 2013.01.18
VEX shading functions  (0) 2012.12.13
Posted by scii
:

inline code노드

Houdini/VEX 2012. 11. 17. 13:26 |

inline code 노드는 vex를 후디니 안에서 쓸 수 있도록 해주는 노드이다.

단, 외부에서 vex를 코딩할 때와 inline code 노드에서 vex를 코딩할 때 차이점이 있다. 

그 차이점은 변수앞에 '$'를 붙여준다는 점이다. inline code 노드에서 vex코딩을 할 때에는 변수명 앞에 $를 필히 붙여주어야 한다.

이유는 inline code에서 $를 붙여주어야만 vex코드로 변환시킬 때 변수로 인식하는 것 같다.



view vex code에서 확인한 결과, $를 붙여준 변수가 모두 그냥 변수처럼 바뀌었다는 것을 확인할 수 있다.

그리고 외부에서 만들어져 들어오는 변수같은 경우, '$'를 붙여줘도 되고 안붙여줘도 된다는 것을 확인할 수 있다.

FF 같은 경우는 $를 붙이게 되면 후디니에서 쓰는 $FF local variable와 헛갈리므로 $를 빼내었다.


외부에서 vex language를 쓸때면...

이렇게 된다.



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

vex로 만들어 본 노이즈의 적용방식  (0) 2012.12.11
vex로 코딩해 본 여러가지  (0) 2012.12.11
VEX의 특성  (0) 2012.12.02
나름 약간 변경해본 것...  (0) 2012.11.30
Posted by scii
:

12.08.20 MON

Houdini/Houdini etc 2012. 8. 23. 16:01 |

LookUp Table    ==    LUT (럿)

# 컬러 그래프가 들어왔을 때, 어떤 값을 곱해서 다른 그래프를 만드는 것!


※ 사람 눈은 감마 2.2 이다.


※ Linear WorkFlow

# 작업할 땐 감마 1.0에서 작업을 하고 마지막에 2.2로 맞추는 것!!


※ 감마 2.2에 가장 가까운 것이 "sRGB" 이다.


※ HDR의 장점.

# Reflection이 정말 잘 나온다!!


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

Cross Product  (0) 2012.11.27
후디니 내에서 쓸 수 있는 함수를 만들 때, 기본적으로 알아야 할 것들  (0) 2012.11.20
짝수 공식  (0) 2012.05.16
$F, $FF 의 차이점  (0) 2012.05.04
참고 수식  (0) 2012.05.03
Posted by scii
:

12.08.20 MON

Houdini/CHOPs 2012. 8. 23. 15:50 |

◎ Area CHOP

# 앞에 것을(위의 노드) 더해서 그래프로 만든다.


※ relative start/End

# 상대적이다. 스타트의 상대적.

# 그렇게 잘 안씀.


◎ Slope CHOP

# velocity의 변화량을 가지고 작업할 때 좋다.




※ Merge Sop 에서 "Warning" 이 나오는 이유?


=> 각각의 노드에서 애트리뷰트가... 한쪽에는 있는데 다른 한쪽에는 애트리뷰트가 없을 때 "경고"가 뜬다.

없는 쪽에는 "Default 값" 이 들어가서 들어가도 되냐고 경고가 뜨는 것이다.

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

CHOPs 의 slope 노드를 이용  (0) 2013.01.27
chops의 lag를 이용한 애니메이션  (0) 2013.01.27
12.08.16 THU  (0) 2012.08.17
12.08.13 MON  (0) 2012.08.14
12.08.09 THU  (0) 2012.08.12
Posted by scii
:

12.08.16 THU

Houdini/CHOPs 2012. 8. 17. 03:19 |

※ velocity를 적분하면 포지션이 나온다. 


※ area는 디스턴스를 구할 때 씀.


※ fr은 chan파일을 불러올 때!! fr은 frame


◎ Channel CHOP

- channel scope

# channel에서 썼던 것.


- Attribute scope

# 채널에서 썼던 것을 이 애트리뷰트에 그대로 갖다 써라라는 것.


※ point position이 있으면 geometry CHOP으로 불러야 함.


◎ Slop CHOP

# 미분을해서 속도를 구할 수 있다. 


◎ Area CHOP

# 적분을해서 속도를 이동거리로 구할 수 있다. 

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

CHOPs 의 slope 노드를 이용  (0) 2013.01.27
chops의 lag를 이용한 애니메이션  (0) 2013.01.27
12.08.20 MON  (0) 2012.08.23
12.08.13 MON  (0) 2012.08.14
12.08.09 THU  (0) 2012.08.12
Posted by scii
:

ex

Houdini/Expressions 2012. 8. 14. 22:19 |

chsop()

# 절대경로를 리턴한다. 

# ex) chsop("../null")    => /obj/geo/null 을 리턴.



chs()

# 상대경로를 리턴한다. 

# ex) chs("../null")    => ../null 을 리턴.

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

print expression function  (0) 2013.01.08
dopfield Expression  (0) 2013.01.08
여러가지  (0) 2012.05.01
ceil, floor, round, int, trunc, frac  (0) 2012.05.01
point Expression  (0) 2012.05.01
Posted by scii
:

12.08.13 MON

Houdini/CHOPs 2012. 8. 14. 17:49 |
※ CHOP에서만 할 수 있는 것.
# 미분, 적분을 할 수 있다.
# 모션과 그래프 분석을 할 수 있다. 
# 그래프를 가지고 모션을 제어할 수 있다. 

--------- 채널 만들기 -----------

※ 바 부분만 잡고 슬로프를 움직이면 Acceleration은 건들지 않고 슬로프만 건든다..
※ 점 부분만 잡고 슬로프를 움직이면 Acceleration과 슬로프를 건든다.

◎ channel CHOP
- func~
- use full ~
# 내가 한 모든 애니


- current~

# 현재 키프레임


※ func - Cubic()

# Acceleration을 컨트롤 못함. 슬로프만 컨트롤한다. 


◎ Constant CHOP

# 채널을 많이 만들 수 있다. 


- snapshop

# 스냅샵기능이 있어서 위에 있는 슬로프를 스냅으로 찍을 수 있다. 


◎ Noise CHOP

# sop과 등등의 용어가 조금 다름.

# period (Frequency의 반대)

# 숫자가 낮아지면 고주파가 된다. 


# Hamornics

# Turb과 같다. 몇번을 더할 것인지.


# roughness

# 한 옥타브를 지날때마다 얼마만큼의 Amplitude를 곱할 지.


- Constraint

# 곱, 더할 때 처음과 끝에

# 시작과 끝을 딱 정해준다. 

# Mean은 평균값이다.


◎ Pulse CHOP

# 다른 sop이나 다이나믹에서 pulse를 가져와서 개수를 세어주는 것. 여기서 직접하는 것은 드물다. 


- width

# 시간축에 맞게 설정.


- limit

# 제한.


◎ wave CHOP

- phase

# offset이다. 시간축으로 옵셋.


◎ Delete CHOP

# sop, pop의 delete노드와 비슷하다. 


◎ Limit CHOP

# clamp 하고 싶으면 limit를 써야 한다. 


- postive Only

# abs()와 같다 .절대 값을 말함.


- Quantize

# 디지털 할 때.

# 디지털신호로 다시 샘플링을 해준다. 


◎ Trim CHOP

# 시간 축으로 잘라 줌.


- unit values

# 데이터를 조작해서 많이 씀.


# 많이 쓰는 것은 abs이다


※ 시간축으로 잘라는 것은 trim으로

value값으로 잘라주는 것은 clamp


◎ Shift CHOP

# 프레임을 옮길 때.


◎ Stretch CHOP

# 시간축으로 늘리는 것.


- constant Area

# 면적을 똑같이 하려고 노력해준다. 


◎ Math CHOP

# 수학 연산


- chann pre~

# 수학 연산하기 전에 미리 연산한다. 


- match by

# 이름이나, 숫자가 같은 것끼리 연산할 것인지.


- Align

# 길이를 맞춰 연산.


- Mult~ Add

- pre~ - Add

# 어떤 연산을 하기 전에 먼저 더할 것인지.


- Range

# fit()과 비슷하면서 다르다. fit은 오버되는 것을 clamp시키지만 이것은 clamp를 안시킨다 .


◎ Merge CHOP

# 단순하게 합쳐짐. 


- Duplicate ~ Name

- Make Unique

# 다른 이름으로 만든다. 


◎ Count CHOP

- Trigger Thre~~

# 이 경계를 넘어가는 애들의 카운트를 세어준다. 


- release in~

# 아래값들 카운트 0아래.


◎ Trigger CHOP

# count랑 비슷하다. 

# 많이 씀.


◎ Lag CHOP

# 애니를 스프링처럼 쫓아간다. 

# "관성"이 있는 것처럼 움직인다. 


◎ Spring CHOP

# 스프링처럼의 모양이 됨.

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

CHOPs 의 slope 노드를 이용  (0) 2013.01.27
chops의 lag를 이용한 애니메이션  (0) 2013.01.27
12.08.20 MON  (0) 2012.08.23
12.08.16 THU  (0) 2012.08.17
12.08.09 THU  (0) 2012.08.12
Posted by scii
:

12.08.13 MON

Houdini/POP 2012. 8. 14. 17:41 |

◎ Attribute Transfer sop

- Kernel Radius

# Max sample count가 2이상 일때만 효과가 나타난다. 

# Distance~ 보다 커야한다. 

# 보통 디폴트 값.


- Max Sample Count

# 1이면 중간 값이 나올 수 없음. 2면 2개의 값을 가져서 블랜딩 된다. 


◎ 파티클 렌더링

- geo>geo>render as points 를 켜야 파티클 렌더링이 된다. (pscale, scale 먹음)

# 이것은 모레나 작은 알갱이를 렌더할 때 좋다. 빠름.


- sample>geometry velocity blur 를 켜야 파티클 블러까지 렌더링 됨.


- Use N For Point Rendering

# 꼭 켜야한다. 꼭 필요.



◎ Trail sop

# 트레일 삽은 기본적으로 "전 프레임"과 "현재 프레임"을 가지고 계산하여 "v"를 만든다. 

그래서 제대로 하려면 Trail sop에 "$F+1"을 하여 "다음 프레임"과 "현재 프레임"을 계산하여, "v"를 만든다.


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

12.08.09 THU  (0) 2012.08.12
12.08.06 MON  (0) 2012.08.12
12.08.02 THU  (0) 2012.08.12
12.07.26 THU  (0) 2012.08.08
12.07.23 MON  (0) 2012.07.25
Posted by scii
: