후디니 내에서 쓸 수 있는 함수를 만들때의 기본 틀:

[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
Posted by scii
: