Wednesday, December 30, 2009

Photoshop Undo 할 때 레이어 바뀌는 것 Layer changed

http://www.bigresource.com/Photoshop-Undo-more-then-one-step--Gq96vTGF.html

Q. Undo - More Then One Step?

In CS that I've just installed (yes, new to PS the ctrl-z only undo's 1 step backwards, what can I do to enable it to undo multiple times? Coming from PSP, you could undo for hundreds of steps....

----------

A. Step Backward And Step Forward
I have CTR-Z mapped to step backward.

Using two different shortcuts for "undo" (one step back) and "Step Backward" (Multiple steps back) makes no sense to me. As such, I rarely use the regular undo, and do not have it mapped.

The case:

When I switch to a new layer, do a brush stroke and undo it, photoshop treats my undo as a switch back to the layer I came from. This happens a LOT, and not just to me, but to a lot of designers I know (I'm a GUI designer at a game company). Some of them have even formed a habit of "erasing" a bit in an empty part of the layer, just in case the'd later want to undo. That's bad.

My proposed solution:

-First undo my stroke, Leave my selected layer alone.

-On a NEXT press of "Step backward" change my current layer to the one I came from.

Monday, November 9, 2009

Sunday, August 23, 2009

MotionBuilder에서 Maya keyboard configuration일때 Alt-drag 하는 법

MotionBuilder에서 Maya keyboard configuration일때 Alt-drag 하는 법?
(이를테면 Motion Blend 창으로 bone 을 끌어 넣을때)
Instead of Alt+drag...use x+drag.
http://forums.cgsociety.org/archive/index.php/t-290269.html

Saturday, August 22, 2009

50 motion graphics tips

50 motion graphics tips Whenever you’re working on a new motion graphics project, don’t start without reading this expert advice from the best in the business http://www.computerarts.co.uk/in_depth/features/50_motion_graphics_tips (본문중에서) A z-depth render pass is a greyscale image showing which parts of your 3D scene are closest to the camera. Combine this with a focus effect like After Effects’ lens blur and you can produce a depth of field effect...

Wednesday, August 12, 2009

Photoshop에서 RGB/8 vs RGB/8# vs RGB/8*

출처 : http://www.elementsvillage.com/forums/showthread.php?t=14436 Some trivia that I came across that I wanted to share: Did you ever open a .psd and notice …RGB/8 sometimes…RGB/8# other times,…RGB/8* other times at the end of the title of the image that opened? After a lot of searching I found the why behind the # and * after the 8. The hint came from the following find dealing with color space: http://ask.metafilter.com/mefi/24625 To test this out, when I open a .psd in Photoshop Elements 3.0, I am greeted by the Missing Profile Dialog with (1) Leave it as it is (don’t Color Manage) (2) Assign Adobe RGB (use the current Working Space) (3) Assign sRGB If I select (1), the ending is …RGB/8# If I select (2), the ending is …RGB/8 If I select (3), the ending is …RGB/8* ATR

Thursday, August 6, 2009

Photoshop 포토샵 자동 batch process 하는법

수백개의 그림파일 등을 일괄적으로 처리하는 방법
요는, 포토샵의 매크로와 Automate 기능을 사용하면 된다.
1. 매크로 레코딩
우선 포토샵에서는 action 이라는 것이 있어서 여러 단계의 작업을 하나의 action 으로 만들수가 있다. 즉 다른 프로그램의 매크로macro와 비슷한 것인데, 이를테면 명도 변화 후 RGB조절 하고 사이즈를 조절한 후 세이브 하는 작업을 하나의 action 으로 만들 수 있다. Action 즉 포토샵에서의 매크로를 Recording 하려면
    메뉴 > Window > Actions 를 선택해서 Actions window 를 띄우고, 레코딩 버튼을 누른 후 record 하면 된다.
2. 배치 프로세스
이 action 을 여러 파일들에 일괄적용하려면
    메뉴 > File > Automate > Batch 를 해서 Batch 창을 띄우면 맨 위에 Set 즉 카테고리와 위에서 두번째인 Action 즉 매크로를 선택할수 있게 뜬다. 그 밑에 Folder 를 선택하면 폴더 내의 모든 파일에 일괄 적용이 되는것이고 열려 있는 파일들에만 일괄적용할 수도 있다. 그 밑에 Destination 을 Save and Close 하면 batch 작업이 적용된 후 저장하고 닫힘.

Wednesday, August 5, 2009

Photoshop에서 렌더링 결과를 프로처럼 좀더 선명해보이게

Filter > Artistic > Paint Daubs > Brush size 1 로 주고 sharpness 조정

Tuesday, August 4, 2009

Surviving color management in Photoshop CS2

http://sidesh0w.com/weblog/2006/09/07/surviving_color_management_in_photoshop_cs2/ http://sidesh0w.com/weblog/2006/09/07/surviving_color_management_in_photoshop_cs2/

SSS Shader 에서 디폴트 컬러

맵에다가 Link 했다가 끊어버리면 디폴트 컬러를 잊어버리기 쉬워서 여기 적어놓음. Primary Specular Color HSV = 204, 0.25 1.0 Secondary Specular Color HSV = 210, 0.1, 1.0

Monday, August 3, 2009

Maya attribute window 를 separate 창에 띄우는 법

Tearing off the attribute editor Maya attribute window 를 separate 창에 띄우는 법
 it is a preference under Window->Settings/Preferences->Preferences Select the Interface heading and choose Attribute Editor In separate window.
출처 : http://forums.creativecow.net/archivethread/61/608914

유용하지만 잊기 쉬운 기본 MEL 명령 및 Attribute

listAttr 특정 노드의 Attribute 들을 열거함.
listAttr file1;
// Result: message caching isHistoricallyInteresting nodeState binMembership ...//
 
nodeType 노드의 타입 이름을 얻어냄
nodeType file1;
// Result: file //

file 노드의 fileTextureName 어트리뷰트
$texname = `getAttr file1.fileTextureName`;
// Result: C:/maya/dream/house in/images/2.jpg //

Texture File Node 등의 absolute Path를 MEL로 일괄 변경하기

다른 사람이 작업하던 프로젝트 파일을 받아보면 path 가 Relative 아 아니라 absolute path 로 들어가 있는 경우가 종종 있다. 이를 원하는 path 로 convert 하는 MEL 을 다음과 같은 함수로 구현해보았다.

global proc NodeUtil_ChangePathAttrDir(string $nodeType, string $filepathAttr, string $prefixBefore, string $prefixAfter);

실제사례 1) 
illustrator로 뽑은 커브로 단면을 묘사한 파일에서 모든 illustrator 외부파일이 D:/ 밑에 있는걸로 돼있는데, D:/ 가 없는 다른 PC에서는 열수조차 없다. 따라서 D:/ 가 있는 컴에서 다음과 같이 실행해서 파일을 변환해주었다.

NodeUtil_ChangePathAttrDir("makeIllustratorCurves", "illustratorFilename", "D:/", "C:/Alba/"); 

실제사례 2) 
텍스처에 사용된 file 노드의 패스가 예전 작업자의 절대패스로 되어 있어서 현재 작업자의 패스로 변환해주었다.

NodeUtil_ChangePathAttrDir("file", "fileTextureName", "C:/maya/dream/house in/", "G:/me/new/Bunny cur 090525/dream/house in/");

좋은 폰트 Nice Font 목록

Eras Bold ITC
HYGothic-Extra
Arial Black
Handwriting - Dakota

after effects error : the file format module could not parse the file" 45::35

I get this error "the file format module could not parse the file" 45::35 When i try to export in after effects http://forums.creativecow.net/thread/2/923770

이 에러는 파일이 깨져 있을때 생긴다. 맨 마지막 파일이 렌더하다 만 파일일수도 있으니 용량이 특별히 작은 파일은 없는지 점검요망. 혹은 파일 확장자를 잘못 줬다거나 파일이 손상되었을 경우 등. 이 링크처럼 CMYK 컬러로 저장하면 그렇게 되기도 한다고 하는데 이런 경우는 겪지 못했음.

Saturday, July 25, 2009

ZBrush To Maya Displacement Guide

http://www.pixologic.com/docs/index.php/ZBrush_To_Maya_Displacement_Guide

Maya에서 모델링한 obj 파일 ZBrush로 import 할때 UV 깨지는 현상 해결법

질문 : Maya에서 모델링한 obj 파일 ZBrush로 import 할때 UV 깨지는 현상 해결법
답 : 지브러시는 UV 가 세로가 반대이다. 텍스처 로딩시 Flip Vertical 만 해주면 된다.
부연 : 이런 작업은 16비트 맵에만 해당됨
설명 : http://www.zbrushcentral.com/zbc/showthread.php?t=28393
(본문중에서) Yes. You can apply your texture to the model in ZBrush. Simply load the model and draw it on the canvas. Enter Edit mode. Import the texture into the Texture palette and flip it vertically. It will now wrap correctly onto the model. The catch is that each model can only have one texture applied to it. So if your model uses multiple textures you will probably want to bring each part into ZBrush separately.
주의점 : Photoshop 의 Color Profile 관련 옵션을 제대로 해줘서 포토샵이 멋대로 색을 수정하지 않게 해줄 것.
관련자료 : Scott Spencer의 강좌를 참조할 것 : Gnomonology Rendering Zbrush Displacement Maps
지브러시 및 displacement map 을 알려면 반드시 봐야 하는 강좌임

Thursday, July 23, 2009

Mac이 PC보다 더 좋다?

Mac이 PC보다 더 좋다? (본문중에서) 저는 미국에서 살고 전공도 영화라 영상편집을 많이 합니다... 근데.. 여기선 그래픽작업과 영상편집은 거의다 Mac을 씁니다... 물론 가격은 엄청 비싸죠.. 괜찮은 MacPro사려면 $3000 ~ $5000정도 드니까요. 학교에서도 그래픽이랑 영상쪽으론 MAC으 가르칩니다.. 그정도로 미국애들은 Mac을 많이쓰고.. PC보단 Mac을 좋아합니다. 적어도 그래픽과 영상쪽에선요. 저의 과에서도 컴퓨터를 보면 10명중에 8명이상은 MAC을 쓰고 나머지는 PC씁니다. 물론 PC를 쓰는애는 영상작업을 안하는 애들이고요. 건 사람 나름이고.. 제 친구도 Dreamworks Animation에서 일하는데 그녀석은 직장에선 PC를 쓴답니다. 왜냐고 물었더니 잘은 모른겠는데 Pixar animation사장이 apple사장이라나.. 그래서 라이벌이라서 회사에서 맥을 많이 안산다고.. 하지만 그녀석도 집에선 Mac을 씁니다.. 학교다닐땐 맥으로 배우고요...

드림웍스 Dreamworks 에서 사용하는 컴퓨터 스펙 (2007당시)

슈렉은 디지털 애니의 산 증인 (본문중에서) 영화 제작 기간 동안, AMD 옵테론(Opteron) 듀얼코어 프로세서 기반의 HP 프로라이언트 DL145 서버와 HP xw9300 워크스테이션은 드림웍스 애니메이션 아티스트들이 놀랄 만큼 생생한 캐릭터들을 표현하는데 기여했다... 이 밖에도, 드림웍스 애니메이션 제작진들은 AMD 튜리온(Turion) 64 X2 듀얼코어 모바일 기술 기반의 HP nx6125 노트북을 사용하여 복잡한 제작 활동을 간소화했다... 소비자들은 애니메이션 제작자들이 ‘슈렉 3’의 생동감 넘치는 세상을 표현하기 위해 사용했던 AMD 애슬론 64 X2 듀얼코어 프로세서 기반의 HP 데스크톱 시스템과 AMD 튜리온 64 X2 듀얼 코어 모바일 기술 기반의 HP 노트북을 통해 영화에서와 같은 프로세싱 파워를 각자의 가정에서 경험할 수 있다...

Wednesday, July 22, 2009

photoshop의 "not enough RAM", "not enough memory" error

이런 에러는 포토샵의 메모리 leak 때문에 생긴다. 포토샵은 memory leak 이 많기로 악명높은데 예를 들면 많은 레이어를 만들다가 그 레이어들을 다 합치면 메모리 용량이 줄어들 것으로 예상하지만 메모리 leak 때문에 occupy 하는 용량은 줄어들지 않는 경우가 다반사. 그 외에도 다양한 경우에 이런 에러가 발생한다고 한다. 이런 경우는 그냥 포토샵을 다시 시작하거나, 컴퓨터를 리부트할수밖에 없는 것 같다. http://www.flickr.com/groups/photoshopsupport/discuss/72157594292074207/

Saturday, July 18, 2009

How can I use the old style render layers in Maya 2009?

There is no preset option to create a layer override in Maya 2009 as it was in 2008
However you can still create these overrides by using the following Mel
Where layer1 is the name of the Layer you like to override.

Ambient Occlusion

renderLayerBuiltinPreset occlusion layer1;

Luminance Depth

renderLayerBuiltinPreset linearDepth layer1;

Normal Map

renderLayerBuiltinPreset normal layer1;

Geometry Matt

renderLayerBuiltinPreset matte layer1;

Diffuse

renderLayerBuiltinPreset diffuse layer1;

Specular

renderLayerBuiltinPreset specular layer1;

Shadow

renderLayerBuiltinPreset shadow layer1;

From http://mayastation.typepad.com/

http://eltepedia.blogspot.com/2009/04/can-i-use-old-style-render-layers-in.html

Render pass, multipass render

Friday, July 17, 2009

진짜보다 더 진짜같이… ‘오감체험 놀이’가 뜬다

진짜보다 더 진짜같이… ‘五感체험 놀이’가 뜬다 진동·냄새·바람 까지 4D 입체 영화관 각광 http://www.munhwa.com/news/view.html?no=2009071101210127256001&w=nv 서울 마포구 상암동 CGV 블러디 발렌타인 등 (본문중에서) 의자가 덜컹거리면서 세차게 흔들린다. 누군가 나를 공격하는 느낌에 ‘쭈뼛’ 머리칼이 곤두선다. 피가 흘러내리듯 얼굴이 끈적거리고, 무언가 타는 듯한 매캐한 냄새가 코를 찌른다. 갑자기 눈앞이 화염에 휩싸이고 불쑥 날선 흉기가 날아든다. 서울 마포구 상암동 ‘CGV 포 디멘션(4D·Four Dimensions)관’에서 9일 개봉된 영화 ‘블러드 발렌타인’은 ...

Thursday, July 16, 2009

Endorphin에서 Character Rig Setup

Endorphin에서의 Character Rig Setup 다이얼로그 박스는 옛날 버전(2.6 이전 것)용이다. 튜토리얼은 옛날 버전이라 Character Rig Setup 사용한 것이다. 2.6 버전부터는 Character Rig Setup 다이얼로그가 Motion Transfer Editor 로 바뀌었다. 핫키는 M 이다.

Saturday, July 11, 2009

마야 기능 관련 사이트/블로그 Link

http://www.onoff.ch/2008/01/04/maya-please-dont-select-the-back-face/
http://mayastation.typepad.com/

Anatomy of a walk

Anatomy of a walk http://www.rubberbug.com/walking.htm 인체 애니메이션 해부학적 분석

CUDA releases RUINS, a Real Time Shatter tool for Maya

CUDA releases Real Time Shatter tool for MayaRUINS is a shatter plug-in for Autodesk's Maya. RUINS is an advanced technology designed to simulate shatter sequences in Maya. In Maya, solid shatter is a difficult to solve, moreover a lengthy process, RUINS offers shattering and breaking of your models in an instant. RUINS is production-proven software and capable of meeting most simulation shattering and breaking needs. RUINS costs $66.00-$99.00 See more information about RUINS here: http://www.nshatter.com/index.html Tutorial Available here: http://www.nshatter.com/ruins%201.0.html

NaturalMotion Endorphine 내츄럴모션 사의 엔돌핀

모션캡처motion capture 없이 애니메이션animation 비용 절감 NaturalMotion Endorphine, Morpheme, Euphoria 엔돌핀, 모핌, 유포리아 http://www.naturalmotion.com/

doMenuComponentSelection 관련 에러 해결법-dagMenuProc source 해주기

메뉴 관련해서 Mel 함수를 만들 때 doMenuComponentSelection 가 없다는 에러메시지가 뜨는 경우가 있다.

특히 마야를 처음 띄우고 할때 이런 메시지를 종종 보게 되는데 일단 오른버튼을 눌러서 메뉴를 띄운 후에 실행하면 제대로 됨을 알 수 있다. 이것은 right mouse button menu 관련 코드인 dagMenuProc.mel 가 아직 source 되지 않았기 때문이다. 마야는 시작시에 모든 스크립트를 한꺼번에 다 로드하지 않는다. 예를 들면, Right mouse button menu 관련 코드는 오른 마우스버튼이 처음 눌렸을 시점에 로드한다.

따라서 MEL 처음 부분에

  • if(!`exists doMenuComponentSelection`) eval("source dagMenuProc");

를 라고 넣어주면, doMenuComponentSelection 관련 에러를 보지 않고 제대로 실행되게 할 수 있다.

doMenuComponentSelection 가 dagMenuProc.mel 에 포함된 함수인지 어떻게 아는가 하면, 다음과 같이 whatIs 명령을 쓰면 된다.

  • whatIs doMenuComponentSelection;

그러면 다음과 같이 나온다. // Result: Mel procedure found in: C:/Program Files/Autodesk/Maya2009/scripts/others/dagMenuProc.mel //

참고로 MMM에서는 F6 눌러 build 할때 install script 초반에 자동으로 이 코드를 넣어주고 있다.

MMM에서 whatIs 에 해당하는 함수는 ScriptingUtil_FindMelFileFromFunction() 이다.

오브젝트의 children 얻을때 listRelatives 에 -path 플래그 줄것

$obj 라는 오브젝트의 children 들을 모두 열거할때
  • string $children[] = `listRelatives -c $obj`;
와 같이 하는데, 이렇게 하면 결과값을 다른 함수에 넣어줄 때 문제가 되는 경우가 있다. 그것은 같은 이름의 오브젝트가 다른 parent 밑에 있을 경우이다. 따라서 결과값을 MEL스크립트에서 사용할 것이라면 다음과 같이 해야 한다.
  • string $children[] = `listRelatives -c -path $obj`;
이렇게 하면 ambiguity 가 없는 이름값이 얻어진다. MMM을 써서
  • ListUtil_ListChildren($obj);
해도 된다.

Vertex의 위치를 구하는 법

Component 모드에서 선택된 $vertex 의 world 위치를 구하려면

  • float $pos[] = `pointPosition -w $vertex`;

와 같이 하면 된다.

MEL에서 object의 position 얻기 Get position

Object의 월드좌표에서의 좌표를 얻기를 원하는 경우가 많은데 그때 다음과 같이 하면 안된다.

  • float $x = `getAttr ($obj + ".translateX")`; float $y = `getAttr ($obj + ".translateY")`; float $z = `getAttr ($obj + ".translateZ")`;

다음과 같이 얻도록 한다.

  • vector $pos = `xform -q -ws -rp $obj`;

-q 는 query, -rp 는 rotate pivot 즉 오브젝트의 피봇, -ws 는 world space 을 의미.

MMM을 써서

  • vector $pos = GeomUtil_GetPos($obj); vector $pos = GeomUtil_GetPosAsVector($obj); // 위와 동일 float $pos[] = GeomUtil_GetPosAsArray($obj); // float array 로 얻어짐
같이 하면 간편하다.

MEL 의 move 명령 메모 Set Position

MEL 에서 헷갈리기 쉬운 것이 move 명령의 플래그 -wd 와 -os 등이다. -a 와 -r, -wd, -os 등을 정리해보자.

move 명령은 주로 다음과 같이 쓴다.

물체를 절대좌표 원점으로 옮기기

  • move -a 0 0 0 $obj; // -a 는 -absolute 의 약자.

물체를 vector로 나타낸 절대좌표 $pos 로 옮기기

  • move -a ($pos.x) ($pos.y) ($pos.z) $obj;

물체를 현재위치에서 relative하게 object space 기준으로 z축 -3 만큼 이동

  • move -relative -objectSpace -worldSpaceDistance 0 0 -3 $obj;
  • move -r -os -wd 0 0 -3 $obj; // (위와 동일)

-worldSpaceDistance 라는 플래그는 object space 에서 scale 등이 적용되었을 때 world space 내의 distance 와 object space 내의 distance 가 다르기 때문에 사용된다.

Object space 단위의 distance 로 움직이려면 -wd 를 빼고 다음과 같이 하면 된다. Scale 하고 rotate 한 오브젝트로 시험해보면 쉽게 알 수 있다.

  • move -r -os 0 0 -3 $obj;

주의할점은 물체를 월드 상의 특정 위치에 위치시키려할때

  • setAttr ($obj + ".translateX") ($pos.x); setAttr ($obj + ".translateY") ($pos.y); setAttr ($obj + ".translateZ") ($pos.z);

와 같이 하지 말고 move 명령을 -a 플래그와 함께 써야 쓰라는 것이다. 또는 MMM 의

  • GeomUtil_SetPos();

를 쓰면 편하다.

두 object가 identical 한 것인지 비교 하려면

Array 를 $arr 라고 할 때

  • $arr[size($arr)] = 값

하면 저절로 array 가 늘어나면서 값이 들어간다.

두 object가 identical 한 것인지 비교 하려면

if(longNameOf($objA) == longNameOf($objB)) 와 같이 해야 한다. 이렇게 하면 Hierarchy 에 상관없이 둘이 identical 한지 여부를 파악할수 있다. 만일 그냥 비교하게 된다면 서로 다른 노드인데도 이름이 같은 경우에 문제가 된다.

connectAttr 로 각도 attribute 를 연결할때 자동으로 생성되는 unitConversion 노드

1. connectAttr 와 각도 attribute 
여기서는 connectAttr 로 각도 attribute 를 연결할때의 현상을 알아보자.

// 1. 물체 $a 와 $b 를 만든다.  
// $a 에는 angle 이라는 attribute 가 들어갈 것이다. 그 attribute는 // $b 의 rx 를 조절할 것이다. 
string $a = CreateSimpleObjUtil_Cube(); // polygon Cube 를 만들어준다. 
string $b = CreateSimpleObjUtil_Pipe(); // polygon Pipe 를 만들어준다. 

// 2. cube 에 "angle" 이라는 Attribute 를 slider와 함께 추가 
// (기본값 0, slider 최소값 0, slider 최대값 360) 
NodeUtil_AddAttr_Double_WithSlider $a "angle" 0 0 360; 

// 3. connect attribute 한다. 
connectAttr -f ($a + ".angle") ($b + ".rx");

이제 이렇게 하면 $a 의 angle 어트리뷰트를 슬라이더로 조절할 때 $b 즉 pipe 가 회전하는 것을 볼 수 있다.

2. unitConversion 노드

이제 다음과 같이 해보자.
connectionInfo -destinationFromSource ($a + ".angle"); 
이렇게 하면 아마 pPipe.rx 가 출력될거라고 예상할 것이다. 하지만 실제로는
// Result: unitConversion1.input // 
같은 값이 출력된다. 그 이유는 이 값이 angle 값이기 때문이다. (내부적으로 아마 라디안 값으로 변환하는 모양이다) 다른 보통의 attribute 들을 connectAttr 하면 unitConversion 노드 없이 바로 연결된다. 참고로
ls -type unitConversion; 
를 해보면 모든 unitConversion 노드를 list 해볼 수 있다.

3. disconnect 하는 방법 중간에 unitConversion 노드가 있기 때문에 모든 경우에 disconnectAttr 함수를 쓸수는 없다. 따라서 다음과 같이 해주면
NodeUtil_DisconnectAttr ($a + ".angle") ($b + ".rx"); 
unitConversion 노드가 있는 경우와 없는 경우 모두 connection 이 제대로 끊어진다.

4. Connected 여부 알아내기 중간에 unitConversion 노드가 있는 경우, MEL 에서 기본 제공되는 isConnected 함수를 쓸 경우 connect 되지 않았다고 나온다. 이는 매우 이상하게 느껴질 수 있다 왜냐하면 분명히
  • connect -f "A.rot" "B.rx"
와 같이 연결해놓은 것들이,
  • isConnected "A.rot" "B.rx"
하면 연결되지 않은 결과가 나오기 때문이다. 이는 매우 불편하다. 따라서 NodeUtil_IsConnected()  같은 함수를 만들어 쓰면 이런 경우 편하다. NodeUtil_IsConnected() 함수는 중간에 Unit conversion 노드가 있는 경우도 감안하여 connected 여부를 돌려주기 때문이다.

listRelatives 에서 틀리기 쉬운 것 (Flag 의 and 조건 안됨)

1. 저지르기 쉬운 실수
예를 들면 특정 노드 $obj의 child 로 되어 있는 light 들만 얻으려 할 때
string $children[] = `listRelatives -c -typ light $obj`;
라고 하면 될 것 같지만, 이렇게 하면 잘 되지 않는다.
-c 와 -typ 플래그가 and 의 조건으로 동작하지 않는 것이다.

2. 해결책
따라서
string $children[] = `listRelatives -c $obj`;
와 같이 한 후 여기서 light 노드들만을 가려내는 식으로 얻어내야 한다.
따라서 다음과 같은 함수를 만들어 쓰면 편하다.
ListUtil_ListAllTextures()
ListUtil_ListAllLights()

Maya의 project path와 workspace path

Workspace 와 Project 의 관계에 대해서는 마야의 어떤 help 에도 안나온다(마야 2008 기준).
그러나 Project 마다 workspace.mel 파일이 있는 것으로 보아, 마야의 Project 파일이 workspace.mel 이라는 것을 유추할 수 있 다. 또한 메뉴의 File > Project > Set .. 에서 프로젝트를 세팅한 후       
workspace -q -fullName 
 하면 방금 세팅한 project directory 가 나오는 걸로 보아 workspace 가 project 와 동일한 의미라는 것은 명백하다. 또한 workspace 명령에 -projectPath 같은 프로젝트 관련 플래그가 있는 것도 이러한 사실을 뒷받침해준다. 한가지 혼동될 수 있는 것은       
workspace -q -fullName       
workspace -q -directory 
가 서로 다른 결과를 준다는 것인데 이는 다음 예를 보기로 하자.
C:/gameModeling        
를 set project 하고
C:/gameModeling/scenes/packman.mb
라는 모델링 파일을 로딩했다고 해보자. 이 상태에서       
workspace -q -fullName 하면
C:/gameModeling 가 되고 
workspace -q -directory 하면      
C:/gameModeling/scenes 가 된다. 
그런데 여기서 만약 C:/modelingSources/scenes/star.mb 라는 모델링 파일을 로딩했다고 하자. 그러면 현재 project 는 여전히 C:/gameModeling 지만 씬은 C:/modelingSources 라는 다른 프로젝트에서 로딩되는 것이다. 따라서      
workspace -q -fullName 하면
C:/gameModeling 가 되고        
workspace -q -directory 하면      
C:/modelingSources/scenes 가 된다.
따라서 workspace -q -fullName 를 SystemUtil_GetProjectDir() 라는 함수로 만들어주고
workspace -q -directory 를 SystemUtil_GetWorkspaceDir() 라는 함수로 만들어주면
혼동 없이 쓰기 좋다.

Light 노드 리스트list 시 주의점

1. objectType 에서의 -isType

어떤 오브젝트 $obj 가 라이트인지 구별하기 위해

  • if(`objectType -isType light $obj` == "light")

와 같이 하면, 스팟라이트 같은 경우 리턴값이 spotLight 이 되기 때문에 의도한것과는 다르게 if 문 자체가 false 가 되어버리는 문제가 있으므로 주의해야 한다.

2. ls 의 -type

ls 를 쓸때는

  • ls -type light

  • ls -type spotLight

를 용도에 따라 둘다 사용할수 있다.

3. Light shape 노드와 Transform 노드

ls 명령으로 light 노드를 리스트하면 light shape 노드들이 리스트되는데, 원하는 것이 light transform 노드인 경우라면 귀찮아진다. 따라서 이런 경우는 MMM 의 ListUtil_ListAllLights() 등을 쓰는 것이 간편하다.

Tuesday, June 23, 2009

How to install GI Joe? (in Maya MEL)

GI Joe is somewhat old MEL. Now its website is down and there are no help files available, but it's still popular.
Execution is simple. Just type
GI_Joe();
Then GI_Joe window is supposed to be load.
However, in most cases, you might run into this error :
// Error: File not found. //
To fix this, Inside the script, change this directory into the proper path.
Like this:
// modify here the path of the imported scene.
string $pathL = "C:/Your own path/GIJoe.lights";
Then problem will be solved.
FYI, GIJoe.lights is just a maya file that contains bunch of pre-made lights.
Below is the captured image of GIJoe.lights loaded into Maya.

GI Joe는 여러가지 단점 때문에 사용하기가 안좋으므로 별도의 툴을 간단히 만들어 사용하는 게 좋음.
키워드 : MMM 의 Light 툴


마야 다운될때 임시저장파일 있는곳 찾기

Maya crashes... How do I find the temp backup project file?
마야가 죽을때 자동으로 임시 저장되는 파일 위치
user(sometimes default user) > Document(or whatever its called in the english version) > Temp (or sometimes in the maya folder)

Subcharacter Set 만들기

Character Set 에 너무 많은 attribute 가 들어가면 Graph Editor 에서 보기 불편하다.
그럴땐 Subcharacter Set 을 만들어서 편한 단위로 관리할 수 있다.

Character Set 은
    메뉴 > Character > Create Subcharacter Set
하면 생성할수 있고
Character Set 에 Attribute 를 추가하거나 제거하는 등 Edit 하는 것은
그냥 Outliner 에서 끌어서 해도 되지만

Relationship Editor 에서
Character 에디트 모드로 한 후

왼쪽에 캐릭터셋을 선택하고,
오른쪽에 그 캐릭터에 들어갈 attribute 를 선택하면 바로 들어간다.

왼쪽에 parent 가 될 캐릭터 셋을 선택하고
오른쪽에 child 가 될 캐릭터 셋을 선택해서
subcharacter set 사이의 hierarchy 를 edit 하는 것도 가능하다.

MEL 함수정의 순서로 인한 error 해결법

멀쩡하던 MEL이 함수정의 순서를 바꾸니까 에러가 나는 경우가 있다.
이럴때는 호출하는 쪽에서 타입을 명확히 해서 argument 를 넘겨주면 문제가 해결된다.

--------------------------------
사례)

예를 들면 andy rig 즉 JTD Rigging Tool 사용시, 함수정의 순서가 바뀌면 문제가 생기는 일이 있다.
결론부터 말하면 이것은 float array 를 argument 로 받는 함수를 호출할때
{1.0, 2.0} 와 같이 넣어주지 않고 {1, 2} 와 같이 넣어주어 생기는 문제이다.

---------------------------------
설명)

MEL 에서 함수 정의 순서는, mainFunc() 가 sub() 를 부른다고 할때
정의 순서는 원칙적으로 상관이 없다.

하지만 실제 사용중에 문제가 생기는 경우가 있는데
예를 들어 sub() 가 argument 로 float[] 를 쓰는 경우,
mainFunc() 에서 {1.0, 2.0} 또는 {(float)1, (float)2} 와 같이 주면 문제가 안생기지만
그냥 {1, 2} 라고 주면 문제가 생긴다.

float array 를 {1.0, 2.0} 처럼 철저하게 소수점까지 찍어주지 않고
{1, 2} 처럼 부르는 버릇이 있다면, sub() 가 mainFunc() 보다 뒤에 정의되었을 경우
int[] 를 float[] 로 변환할 수 없다는 type error 를 낸다.

왜냐하면 아직 정의되지 않은 함수를 부를 때 호출하는 쪽에서 int array 를 넣어준다면
MEL 은 자동적으로 그 호출되는 함수의 array 타입이 int array 일 것이라고 가정하기 때문이다.

command line rendering in Maya 마야에서 커맨드 라인 렌더링하는 법

참고 : Dos command prompt 에서 Batch 파일 이용한 Batch Render 사용예

// Help 보기
Render -help -r sw Render -help -r mr

// house.mb 라는 파일을 렌더링한다. 렌더러는 software renderer 를 사용.
Render "house.mb"

// house.mb 라는 파일을 렌더링한다. 단 렌더러는 mental ray 를 사용.
Render -r mr "house.mb"

// mycam1 이라는 카메라를 이용해서 1 프레임에서 10 프레임까지 렌더링한다
Render -cam mycam1 -s 1 -e 10 "house.mb"

// 1 프레임부터 20 프레임까지 2 프레임씩 건너뛰어 렌더링한다. 즉, 총 10프레임이 렌더링됨
Render -s 1 -e 20 -b 2 "house.mb"

// 640 x 480 해상도로 렌더링한다.
Render -x 640 -y 480 "house.mb"

// -rd 는 Render Directory 를 지정한다.
Render -rd "c:\myRender" "house.mb"

// -n 은 프로세서 개수를 지정한다.
// 여기서는 두개의 프로세서로 렌더링하도록 지정.
Render -n 2 "house.mb" Render -rt 2 -r mr "house.mb"

// 멘탈레이일 때는 -rt 로 해야한다. -rt는 Render Threads
// 전체 프로세서 수는 task manager 에서 볼 수 있다.
// 다음과 같이 4개의 프로세서가 있다면, -n 2 라고 지정하면 이중 2개의 프로세서만 써서
// 렌더링을 하게 된다. 따라서 렌더링 걸면서도 컴퓨터를 별 지장 없이 쓸 수 있다.
// 별도로 지정하지 않으면 모든 프로세서를 다 쓴다. 즉 여기서는 -n 4 라고 한것과 같이 렌더링된다.



Troubleshooting
간혹 다음 같은 에러가 생기는 때가 있는데 Error: Error reading file. Error: Cannot load scene "empty.ma". Please check the scene name 이런 에러가 생기는 원인은 크게 두가지.

1. 마야에서 현재 프로젝트 세팅을 제대로 해준 후에 Command line 으로 렌더링 걸어야 한다. 안그러면 텍스처 경로 같은 것이 없어서 제대로 렌더링 안됨.

2. 마야 버전이 여러개 깔린 경우에 간혹 문제가 될 수 있는데 (보통의 경우 문제가 안됨. 왜냐하면 최신버전을 제일 나중에 깔았을 것이기 때문에 system path 등이 최신버전 걸로 돼 있을 것이므로) 이는 다음과 같이 하면 된다.

예를 들어 기존에 먀아 2010을 깔았는데 나중에 마야 2009를 깔아서 다음과 같이 했더니 마야 2009로 렌더가 돼버린다고 하자.
render -r mr "d:\myproject\myscene.ma"

마야 2010으로 렌더하고 싶으면 다음과 같이 실행하면 하면 된다.
"c:\program\autodesk\maya2010\bin\render.exe" -r mr "d:\myproject\myscene.ma"

(이와 같이 실행 파일인 render.exe의 패스를 full path 로 주면 해결된다(참고링크))

참고 :
DOS 명령어 잘 모르는 사람들은 다음 참조

여기는...

CG 관련 간단한 tip 모아놓는 곳