// 코드삽입위한것

백버너를 이용한 네트워크 렌더시

ping task timeout 에러를 보게 된다면 이유는 

백버너의 기본 렌더 타임이 60분으로 설정되어 있기 때문이다

이 60분이 지나면 렌더링 완료여부와 상관없이

현재 작업을 멈추고 다음 작업을 하게 된다.

이를 해결하기 위한 명령은 -timeout 태그 이며 방법은 두가지가 있다.

한가지는 마야에서 백버너로 명령을 보내는

멜 자체를 수정하는 방법과

마야 백버너 UI창에서 수동적으로 time을 늘려주는 방법이다.

첫번째 멜 자체를 수정하는 방법은

1-1) 마야 설치폴더의 스크립트 폴더

(보통 C:\Program Files\Autodesk\Maya버전\scripts\others)

안 performExportToBackburner.mel 파일을 수정하는 방법이다.

1-2) 일단 백업 파일을 만들어 놓고 파일 안의 다음 코드를 찾아 아래 블럭부분을 추가한다.

    // Prepare the list of tasks and send it to Backburner through a task list file

    int $startFrame = `intFieldGrp -q -v1 bbExportStartFrameCtl`;

    int $endFrame = `intFieldGrp -q -v1 bbExportEndFrameCtl`;

    int $taskSize = `intFieldGrp -q -v1 bbExportTaskSizeCtl`;

    if( $taskSize < 1) $taskSize = 1;

    string $taskListFileName = createTaskListFile($jobName, $startFrame, $endFrame, $taskSize);

    if($taskListFileName != "")

    {

        $exportSysCmd = $exportSysCmd + " -taskList \\\"" + $taskListFileName;

        $exportSysCmd = $exportSysCmd + "\\\" -taskName 1";

$exportSysCmd = $exportSysCmd + " -timeout 360";

    }

두번째 방법은 마야 백버너 UI창에서 해결하는 방법이다.

2-1) 백버너 설정 창에서 use Custom command 체크

2-2) populate Command 클릭

2-3) 아래 스크립트 창에 -timeout 360 삽입


위 과정 중 둘중 하나만 해 주어도 된다.

1번 방법은 마야를 여러 버전 쓰고 있다면 모든 버전에 대해 해주어야 하며

2번 방법은 백버너를 이용할 때마다 해줘야 하는 번거로움이 있다.


* timeout 태그의 기본단위는 분(min)이다. 위 예제는 360분 즉 6시간이다.

두 벡터의 내적을 통해 카메라로 부터 페럴렉스 제로 점의 위치를 파악

페럴렉스 제로면은 항상 카메라 노멀 방향과 수직이다.

빗변 = vector A , 밑변‘ = vector B

dot(A,B) = magA * magB * cosΘ

cosΘ = 밑변 / 빗변

따라서

       magA * magB * 밑변
 dot(A,B) =  ------------------
             magA



            dot(A,B)
밑변   = --------------
             magB 


이로써 카메라에서 페럴렉스 제로점 까지의 거리가 산출됨

이것을 카메라에 전달.

이 MEL은 After Effects에서 .ma 파일을 import하여 Stereo Camera의 key 값을 전달하기 위해 제작 되었습니다.

실제 L R 카메라에는 키프레임이 들어 가지 않음으로 좀 단순하고 무식한 방법을 동원해 봤습니다.

원리는 L R 카메라의 World Space 상의 Translate & Rotate를 매 프래임 추적하여

다른 Single 카메라로 이식하여 키 프레임을 생성토록 하였습니다.

지금은 테스트 단계로 쓰시기에 좀 불편함이 있으나 차 후 이 문제를 해결하도록 하겠습니다.

일단 되어야 뭘 할테니 말이죠 ^^

그리고 당근 마야 2009에서 쓰셔야 합니다.

(실은 그렇지도 않으나 어째던 스테레오 카메라는 2009 이후 버전 부터 존재하니까요 ^^)

 

-------------------------------------------------------------------------------------------

자 일단 제가 첨부한 멜 파일을 다운받아

내문서 > maya > 버전 > script 폴더에 넣어줍니다.

-------------------------------------------------------------------------------------------

그리고 작업을 합니다.

키도 잡고

카메라 애니메이션도 잡고 등등등

참 시뮬레이션이 된다면 시뮬레이션을 다 꺼주세요.

카메라가 시뮬레이션 된다면 어쩔수 없지만요.

------------------------------------------------------------------------------------------------------------

 

 

스테레오 카메라를 생성하고 카메라 애니메이션을 합니다.

그리고 싱글 카메라를 생성 합니다.

먼저 스테레오 카메라의 L 카메라를 선택하고 그 후 싱글 카메라를 선택합니다.

(선택의 순서가 매우 중요합니다.)

 

컴맨드 라인에 StereoToSingle()를 입력합니다. (대소문자 주의)

 

실행을 하면 frame Range를 정해 주시고(시작할 프레임 : 끝날 프레임) Start

누르면 에니메이션이 되면서 카메라에 키프레임이 생겨납니다.

 

에니메이션이 끝나면 싱글 카메라가 L 카메라와 똑같이 움직이는걸 보실 수 있습니다.

R 카메라에 대해서도 같은 방법으로 해주시면 됩니다.

(사실 L R의 순서는 바뀌어도 상관 없습니다)

이제 스테레오가 필요 없으시면 지우셔도 되고 카메라만 따로 export 하셔서 scene를 저장하셔도 되겠네요

whatIs"XXXXX";
mel script를 작성하다 보면 어떤 명령을 사용해야 할지 모르겠을 때가 많다. 특히 자동화와 관련된 스크립트를 제작하면 더욱 그럴 것이다. 그럴땐 보통 스크립트 창을 띄워놓고 직접 확인을 하면 된다. 하지만 몇몇 명령들은 스크립트 창을 통해 알 수 없는 경우가 있다. 대표적인 경우가 멜 명령이 아닌 이미 마야 안에 존재하는 script의 procedual 을 사용하는 경우다. 이런 경우 어떻게 사용된 명령들과 그 방법을 알 수 있을까?

이때 유용하게 쓰이는 명령이 whatIs이다.
우선 script editer 창에서 echo all command 를 체크하고 명령을 실행시키면 마야가 실행하는 명령을 보여준다. 의문이 가는 부분 또는 명령을 찾아 whatIs 로 확인을 하면 해당 procedual가 어떤 경로의 어떤 파일에서 실행되는지 친절히 가르쳐 준다.

도저히 못 찾겠다면
C:\Program Files\Autodesk\Maya8.5\scripts\others
를 뒤져보라. 대부분의 명령이 저기 다 있다.

시간내서 하나씩 뜯어보면 좋은 아이디어를 얻을 수 있지 않을까?
어떤 오브젝트에 lattice가 연결되어 있으며 애니메이션키 까지 잡혀있는 상태에
새로운 오브젝트를 추가하고 그 오브젝트가 lattice의 영향을 받아야 한다면 난감한 문제가
될 것이다.
하지만 lattice의 기본 작동 원리를 알고 있다면 쉽게 해결 할 수 있을것이다.

이를 해결하기 위해 나타난 문제점과 해결 방법을 제시해 본다.

우선 littce와 object의 연결 구조를 파악하기 위해 hypergraph를 열어 연결 상태를 확인해보자.

lattice를 수동으로 연결해 해결하고자 했지만 위 tweak 노드와 연결된 데이터 attribute가 무엇인지 확인하기 어렵고 연결이 불가능하다. 또 lattice에 연결된 key data를 다른 노드에 일일히 복사하여 사용한다는 것 자체도 너무나 비효율적으로 생각된다.

그렇다면 새로이 node를 수동적으로 만들어 사용하는 방법은 어떨까?
이도 필자가 생각해 봤지만 node의 attribute 를 수정하고 연결한다는 것도 자신이 잘 모른다면 매우 어려운 일이 될 수도 있다.

그래서 다음의 방법을 생각해 봤다.
위 node중 생성하고 연결하기 여러운 부분은 과감히 포기하고 연결하기 쉬운 부분과 핵심적인 연결 부분을 찾는 것이다.
위 node를 살펴보면 tweak node가 lattice의 정보를 받아 geometry shape node에 전달하는 것을 볼 수 있고 연결 또한 그리 어려워 보이지 않는다. 그렇다면 노드의 생성은 어떠할까 조금 어려워 보이지 않나? 따라서 수동적으로 생성할 것이 아니라 새로운 object에 latiice를 생성하고 필요한 부분의 정보만 연결 하는 것이 효율적으로 보인다.

자 일단 새로운 object에 lattice를 적용하고 두 오브젝트의 hypergraph node 연결을 보자
위 그림을 살펴보면 fdd 노드가 littice의 정보를 받아 shape 노드에 전달 함을 알 수 있다. 그리고 littice의 기본 적용 방식을 살펴보면 base node와 lattice 노드의 좌표 차이로 인해 deform이 발생된다. 위에서 말한 lattice의 작동 원리 이다.
따라서 base 와 lattice의 정보를 fdd 노드로 전달하면 새로 생성된 objcet 가 전 lattice의 영향을 받게 될 것이다. 새로 생성된 lattice의 base 와 lattice node를 삭제하고 새 object 의 fdd2 노드에 이미 존재하는 lattice와 base 노드를 연결하자. 어떤 속성을 연결해야 할지는 화살표를 살펴보면 알 수 있다.(구체적인 연결방법은 마야 유져라면 당연히 알고 있다 생각하고 설명은 하지 않는다)
연결 결과 다음의 hypergraph 와 결과를 보여준다.

위와 같은 방법을 생각한 것은 애니메이터 혹은 모델러로 부터 넘어온 데이터가 존재하고 이를 이용해 dummy object를 생성하여 dynamic simulation이 이뤄져야 하는데 또는 polygon이 아닌 nurbs로 연산이 이뤄져야 하는 경우도 있을 것이다.
필자도 어떤 cf 장면을 만들면서 위와 같은 난감한 상황이 발생했고 모델러에게 그리고 애니메이터에게 다시 작업을 해달라고 요구하는 것은 더 난감한 상황이 발생하리라 생각했기 때문에 연구를 한 것이다.
물론 이런것을 생각하면 모델링 단계에서 부터 dummy object를 생성하여 두 object에 lattice를 적용하면 위와 같은 불편함을 피할 수 있다. 하지만 그렇지 못한 경우 또는 여러 상황이 그렇지 못하다면 위 방법을 응용하여 여러가지를 해결 할 수 있으리라 생각된다.
----------------------------------------------------------------------------------------------------------------------------
물론 위 방법에서도 문제점이 없는 것은 아니다. object의 축좌표와 자체적 애니메이션등 몇몇 문제점으로 정확히 맞출수 없는 상황도 있다. 이는 개인이 조금더 연구를 한다면 해결되리라 생각한다.
생성될 object의 이름앞에 naming을 해주는 명령.
namespace의 기본 set 값은 ": " 이며, 이는 마야를 실행시키면
자동적으로 생성되는 값이다.
namespace에 할당된 값들은 메모리에 저장되어 마야가 실행되는 동안
유효하다. 따라서 한번 만들어진 값은 다시 만들 필요가 없다.

* 주의 사항
setting 된 값이 유효 함으로 setting된 값을 미리 확인하여야 불상사를
막을 수 있다. 예를 들어 setting 값이 aaa로 되어 있다면 앞으로 만들어질
object의 이름 앞에는 aaa:가 붙게 된다. 그리고, 지금 setting된 값을 다시 불러
오면 runtime error를 일으킴으로 사용상 주의를 요한다.(기본값은 예외)
위와 같은 error과 불편함을 피하기 위해 다음의 방법을 이용하면 좋을것이다.
naming이 필요한 code 앞과 뒷 부분에 다음을 추가하면 된다.
namespace -set ":";
flag 및 기본 문법
 - set (string) : namespace 값을 setting
 - add (string) : namespace 안에 입력된 인자 값을 저장한다.
 - rm (string)
: 입력된 인자 값을 namespace에서 삭제한다.
 - ex (string) : 입력된 인자 값이 namespace 안에 존재하는지 검색한다.
존재한다면 1을 return, 존재하지 않는다면 0을 return한다.

사용 예
{
namespace -set ":";
namespace -add "juns";
namespace -set "juns";
sphere -n "sphere1";
sphere -n "sphere2";
namespace -set ":";
}
위 code의 실행결과 sphere 앞에 juns:가 붙은것을 확인할 수 있다.
* namespace 인자 값에는 ' % 등의 특수문자 사용이 불가능하다.














위 code를 python으로 변환 해 보았다.
from maya.cmds import *
namesapce ( set=':' )
namespace ( add='juns' )
naemspace ( set='juns' )
sphere ( n='sphere1' )
sphere ( n='shpere2' )
namespace ( set=':' )

우분투 8.10을 기준으로 합니다.
$ 부분은 터미널에서 입력하는 부분입니다.
$는 빼고 입력하세요

우선 터미널을 엽니다.
마야의 설치파일은 rpm으로 되어 있습니다.
우분투에선 기본적으로 rpm을 지원하지 않음으로
rpm을 쓸 수 있도록 해야 합니다.

1. rpm파일 쓰게 만들기
$ sudo apt-get install rpm
$ sudo mkdir -p /var/lib/rpm

2. 마야 설치하기 (저는 8.5  sp 1 64비트를 설치했습니다)
$ 자신의 마야 설치 파일이 있는 경로로 들어가세요.
$ sudo rpm -ivh --nodeps AWComm10.80-15.x86_64.rpm Maya8_5_64-8.5-81.x86_64.rpm

3.C-shall 설치하기(요부분은 저도 잘 몰랐던 거라 웹서핑을 통해 알아봤습니다)
$ sudo apt-get install csh

4. 마야 실행하기
$ cd/usr/autodesk/maya/bin
$ csh maya
(프로그램 -> 그림 ->  maya 를 클릭해도 됩니다)

라이센스는 /var/flexlm 폴더에 넣으시면 됩니다.


우선 마야설치(과자) 파일을 어둠의 경로를 통해서든 어떻게 해서든 구합니다.

단순한 설치 파일은 오토데스크사에 가면 받을 수 있습니다. 그러나 과자는 없지요 ^^.

http://usa.autodesk.com/adsk/servlet/ps/dl/index?siteID=123112&id=2334435&linkID=9242259

요기로 가시면 설치파일은 받으실 수 있습니다.

파일을 받으셨다면 설치를 합니다. (설치는 설치파일 그냥 더블클릭하심 됩니다.)

설치가 완료되었다면 어플리케이션폴더(응용프로그램폴더)에 autodesk폴더가 만들어지고

마야가 설치된 것을 알 수 있습니다.

그럼 이제 과자를 써먹어야 겠지요.

리얼맥의 경우는 잘 모르겠지만 해킨을 쓰신다면 미리 네트워크 드라이버를 마야 설치 전에

설치하셔야 합니다.

이제 시스템정보보기(어디있는지 모르시는 분은 왼쪽 위 구석에 있는 '사과' >> 이 매킨토시에관하여 >> 자세한 정보(?)지금 정확히 기억나지 않네요^^ 아무튼 아래쪽 버튼)을 클릭 하세요)

에 보면 이더넷 mac address 부분의 XX:XX:XX~~~부분을 종이에 적어두세요.

이제 윈도우로 부팅을 하시던 아님 윈도우가 깔려 있는 다는 컴을 키시던 하셔서

과자 폴더를 보시면 과자 실행 프로그램과 aw.dat 파일이 존재할겁니다.

aw.dat파일을 메모장등을 이용하여 열어 보시면

FEATURE MayaUnltd sgiawd 8.500 permanent uncounted 0
       HOSTID=000~~~~

요렇게 써 있을 겁니다.

요걸

FEATURE MayaUnltd sgiawd 8.500 permanent uncounted 0
       HOSTID=맥 어드레스(아까 적어둔것)

로 수정하고 저장합니다.

그리고 과자 파일에 퐁당담궈주세요. 그럼 순간 번쩍하고 크랙됩니다. ㅋㅋ

그럼 aw.dat 파일이

FEATURE MayaUnltd sgiawd 8.500 permanent uncounted F2CD9BCC628A
       HOSTID=0016e5441243

요런 형태로 변하게 됩니다. (요런형태가 아니라 몇줄이 더있거나 머 그렇다면 크랙이 실패한거니 천천히 처음부터 해보세요 ^^)

가끔 파일을 닫지도 않고 퐁당한다음 안변했다고 우기시는분 있는데 미워할겁니다. ㅡㅡ;

성공했다면 aw.dat파일을 맥으로 가져옵니다.

이제부터 중요합니다.

가져온 aw.dat파일을 /var/flexlm폴더에 넣어야 하는데 요게 폴더가 숨겨져 있어서 보이지가 않습니다.(파인더에서 암만 뒤져바야 안보인다는 소리입니다.)

그럼 맨 위의 메뉴에서 이동 >> 폴더로 이동을 누르셔서 /var/flexlm 을 입력하고 이동합니다.

보통 마야를 설치하고 나면 위의 폴더가 생성된다고 하는데 저는 생성되지 않아서 제가 직접 만들었습니다.

만드는 방법은 터미널을 여시고

sudo -s

cd /

mkdir /var/flexlm

cp /Users/당신 아이디/Desktop/aw.dat /var/flexlm

를 입력해 줍니다.

그리고 다시 이동 메뉴를 누르셔서 이동하시고

폴더안에 aw.dat 파일을 복사합니다. 인증창 뜨면 가볍게 맥 계정비번 입력해주시고요.

만약 윈도에 이미 마야를 설치하고 크랙을 하신분들은 따로 크랙할 필요없이 그냥 크랙된 aw.dat파일을 가져오셔도 됩니다.(저의 경우도 그리 하였습니다. 같은 컴에 설치된 경우만 해당합니다. 다른컴에서 aw.dat파일만 빼오신 분들도 미워할겁니다. ㅡㅡ;)

이제 마야를 실행해 봅니다.

크랙을 했음에도 불구하고 라이센스가 없다고 한다면 아마 해킨 시스템을 사용해서 마야에서 이더넷 하드웨어를 인식하지 못해 문제가 발생하는 것입니다.

설치 다했는데 안된다고 포기할순 없죠 ㅋㅋㅋ

이제 이 파일을 다운받아 을 적당한 곳에 압축을 풉니다.

<<다운로드>>

저는 바탕화면(데스크탑)에 풀었습니다.

터미널을 열고

sudo -s

cd /Desktop/IONetwrkFmlyDRMFix.app/Contents/MacOS

./IONetwrkFmlyDRMFix.sh

를 입력하고 재부팅 후 마야를 실행하시면 아마 잘될껄요 ㅋㅋㅋ

그럼 즐작하시기 바랍니다.

+ Recent posts