후디니 내에서 쓸 수 있는 함수를 만들 때, 기본적으로 알아야 할 것들
Houdini/Houdini etc 2012. 11. 20. 23:19 |후디니 내에서 쓸 수 있는 함수를 만들때의 기본 틀:
[return_type] functionName([[arg_type1] arg_name1 [, [arg_type2] arg_name2] ...])
{
...
}
반환형 타입과 인수 타입은 float, string, vector, or matrix 를 쓸 수 있다.
#은 주석처리.
만약 반환형과 인수의 타입을 명시하지 않으면 후디니는 자료형에 float이 있는 것처럼 인식한다.
그리고, 만약 인수타입에 string을 넣어야 하는데 그것을 잊고 넣지않으면, float으로 인식해서 잠재적 버그를
열심히 찾는다고 한다.
자료형을 꼭 명시해야겠다.
Examples
# Function to find the minimum value of two # floating point numbers min(v1, v2) { if (v1 < v2) { return v1; } else { return v2; } } # Function to reverse the order of a string string strreverse(string in) { float len = strlen(in); string result = ""; for (src = len-1; src >= 0; src--) { result += in[src]; return result; } } # Example to find the minimum element in a vector float vecmin(vector vec) { min = vec[0]; for (i = 1; i < vsize(vec); i++) { if (vec[i] < min) min = vec[i]; } return min; } # Example to transform a vector into the space # of an object passed in. vector opxform(string oname, vector v) { matrix xform = 1; if (index(oname, "/obj/")) { xform = optransform(oname); } else { xform = optransform("/obj/"+oname); } return v * xform; } # Example to find all objects which have their # display flag set string opdisplay() { string objects = run("opls /obj"); string result = ""; nargs = argc(objects); for (i = 0; i < nargs; i++) { string obj = arg(objects, i); if ( index(run("opset " + obj), " -d on") >= 0 ) result += " " + obj; } return result; }
'Houdini > Houdini etc' 카테고리의 다른 글
Houdini User가 갖춰야 할... (0) | 2012.12.02 |
---|---|
Cross Product (0) | 2012.11.27 |
12.08.20 MON (0) | 2012.08.23 |
짝수 공식 (0) | 2012.05.16 |
$F, $FF 의 차이점 (0) | 2012.05.04 |