ION_Engine만들기.

최근에 ION_Engine을 만드는 작업을 했습니다. 마야와 MTOR 기반에서 했구요.

1. 첫번째 시도는 파티클을 이용해서 만드는 것이었습니다. 이온엔진은 분사가 토치처럼 강력해야 하는데, 파티클의 그것은 약간 촛불처럼 끝이 움직였습니다.

2. 두번째는 맵을 이용한 방법입니다. 첫번때에 만들었던 파티클을 이용해서 512x512맵을 만들고, ?스로 만들 실린더에 맵을 하는 방법이죠. 이때 애니메이트 텍스쳐를 쓰기 위해 texseq.sl 세이더를 만들었습니다. 3개의 지오메트리에 Core, Flame1, Flame2를 지정하고, Diffuse를 이용해서 그 강도를 조정했습니다. 스피드는 세이크에서 텍스쳐를 3배 빠르게 하면서, 루프도 가능하도록 했습니다.

후디니에서는 나름대로 쉬운데, 마야에서는 좀 귀찮은 점이 많았습니다.
locator를 하나 만든다음, Pframe attribute를 하나 만들고 그것을 TCL을 이용해서 SLIM에서 가져옵니다. [mattar "locator1.Pframe" $f] 물론, Pframe=frame;으로 지정하시구요.

자, 그러면 후디니로 한번 만들어 볼까요? ION_ENGINE를?

참고자료 1.

참고자료 2.

surface texseq( float Ka = 1.0, Kd = 1.0,
            rim_width = 0.2;
          string texturename = "";
          float life = 1.0, maxframe = 70.0;)
{
    color Ct = Cs;
    normal nf = faceforward(normalize(N),I);
    vector i = normalize(-I);
   float  dot = i.nf;
    if (texturename != "") {
           string name = format("%s.%04d.tex",texturename,
                             clamp(round(life*maxframe)+1.0,1,maxLife));
        Ct = color texture(name,s,t);
    }
    Oi = Os*smoothstep(1 - rim_width, 1.0, dot);
    Ci = Oi * Ct * (Ka*ambient() + Kd*diffuse(nf));
}

좋군요 ..