Thursday, June 17, 2010

global 좌표를 특정 오브젝트의 local 좌표로 변환하는 법

float $v[]=`getAttr $attr`;
matrix $mat[4][4]=<<$v[0], $v[1], $v[2], $v[3]; $v[4], $v[5], $v[6], $v[7]; $v[8], $v[9], $v[10], $v[11]; $v[12], $v[13], $v[14], $v[15]>>;
return $mat;
}

// Multiply the vector v by the 4x4 matrix m, this is probably
// already in mel but I cant find it.
proc vector myVecMult(vector $v, matrix $m){
matrix $v1[1][4]=<<$v.x, $v.y, $v.z, 1>>;
matrix $v2[1][4]=$v1*$m;
return <<$v2[0][0], $v2[0][1], $v2[0][2]>>;
}

matrix $mat[4][4] = myGetMatrix("pPlane2.worldInverseMatrix");
print $mat;
$v = <<0, 24, -7>>;
$result = myVecMult($v, $mat);
코드 출처 : Convert a 3d point to 2d Screen Space in Maya
키워드 : MBM://100617global 좌표를 특정 오브젝트의 local 좌표로.html

Wednesday, June 16, 2010

MEL 관련 링크

THE FX - Community of FX enthusiasts
Hey! You have found us!
THEFX is a place where people can discuss FX related subjects, particle fx, fluid simulations, scripting, programming fx plugins and etc. Once you sign up you can reply to posts, create new topics, download scene files, attachments in posts, interact with others.

3-4-5 직각삼각형과 7-24-25 직각삼각형

각 변이 3:4:5 로 돼있는 직각삼각형은 각이 약 36.87 도이므로
이 각도의 cos sin 값은 각각 4/5, 3/5 라는, 딱 떨어지는 값을 갖는다.

36.87 도를 두번 돌린 각은 73.74 도인데
이 각 역시 cos sin 값이 각각 7/25, 24/25 라는, 딱 떨어지는 값을 갖는다.

다음 그림을 보면 쉽게 증명될 수 있다.



이 삼각형의 이러한 특징은 두번 rotate 되었을때 또는
세 오브젝트가 parent-child 관계로 이어져 있을 때
테스트에 유용하게 쓸 수 있다.

요약 :
3-4-5 삼각형이 이루는 각도는 36.87 도
이 각을 두배 하면 73.74도가 됨 (36.87 x 2 = 73.74)
그런데 73.74 도는 7-24-25 삼각형이 이루는 각도

cos 36.87도 = 4/5 = 0.8
sin 36.87도 = 3/5 = 0.6

cos 73.74도 = 7/25 = 0.28
sin 73.74도 = 24/25 = 0.96

inverseMatrix 구하는 법

질문 : 특정 오브젝트의 inverse matrix 를 얻어내려면?
요약 : 다음 attribute 를 이용하면 된다.
getAttr obj.inverseMatrix // 오브젝트의 inverse
getAttr obj.worldInverseMatrix // 오브젝트의 월드에 대한 inverse
getAttr obj.parentInverseMatrix // parent의 inverse

다음은 직접 해본 것. 다음을 보면 각각의 역할을 알 수 있다.





설명 :
출처
You could also use getAttr on the inverseMatrix, worldInverseMatrix or parentInverseMatrix attributes of the transform node (actually they're attributes of the dagNode node, but they're passed on by inheritance to the transform node). If that's too limited, there's a script on www.highend3d.com called Matrix Playground, it has procedures for all sorts of stuff that you can do with matrices, just make sure you get the dependant procedures as well (Determinant and Adjoint are needed to calculate the inverse).

Maya의 Transform Matrix 계산

Maya의 Transform Matrix 는 처음에는 어렵게 느껴지지만
찬찬히 살펴보면 이해하기 어렵진 않다.
레퍼런스를 어떤것부터 보아야 하나가 막막할 수 있는데 그것은
마야 help 의 xform 설명부터 보면 된다.

트랜스폼 관련해서 만능의 스위스칼 같은 mel 함수는 xform 이다.
따라서 xform command 를 Help 에서 찾아보면,
마야 오브젝트의 transform matrix 가 어떻게 되어 있는지 알 수 있다.

xform 설명을 보면 보통 컴퓨터 그래픽스 convention 처럼
가로로 된 벡터 (x, y, z) 뒤에 4x4 matrix 를 곱하는 방식임을 알 수 있다.
오리지날 help 에서는 레이아웃이 깨져서 위쪽에 알수 없는 -1 이 위치해있으므로 다음과 같이 제대로 고쳐보았다.





다음은 rotation 을 하는 경우를 보여준다.


다음은 scale 이 포함된 경우이다.


다음은 translation 이 포함된 경우.


키워드 : matrix, rotation, translation, translate, rotate

각도, degree, radian, sin, cos, 삼각함수 등 기초 복습 및 기초수치 암기

이 포스트의 목적 :
1. degree와 radian
2. sin, cos 등 삼각함수
복습 및 기초수치 암기

필요성
라디안이 무엇인지 안쓰다보면 쉽게 잊어버린다.
그리고 사인 코사인 값도 안쓰다보면 쉽게 잊어버린다.
그러나 3D 에서 회전 관련 다룰 때 간단한 수치 정도는 기억하는 것이 좋다.
그래야 수치를 볼 때 쉽게 감을 잡을 수 있고
테스트 등을 할때 이게 맞는 값인지 금방 알아채는데 유용하다.

Radian의 정의
Radian 이란, radius(반지름)가 1 인 원에 대하여,
arc(원주) 상을 1 만큼 간 각도를 말한다.



Radian의 기초수치
60도는 약 1.05 라디안이다.
60도가 약 1 라디안인 것은 당연하다.
정삼각형의 형태를 생각해보면 모든 변이 다 같기 때문에,
arc와 radius의 길이는 대략 일치하는 것이다.

180도는 약 3.14 라디안이다.
1 라디안인 60도가 세 번 모였으므로,
180도는 약 3 라디안이 된다.
오래 각도 계산을 안하다보면 180도가 3.14인지 360도가 3.14인지 기억이 안날 때가 있는데
이렇게 기억하면 좋다.

60도는 약 1 라디안이므로
6도는 약 0.1 라디안이 된다.
실제로 6도는 약 0.1047 라디안이다.

Radian 변환 함수
Microsoft Excel 에서 radian/degree 변환하는 함수는 다음과 같다.
Apple의 Pages 에서도 함수명은 동일하다.
=RADIANS()
=DEGREES()

3-4-5 직각삼각형
각 변이 3, 4, 5 인 직각삼각형은 값이 딱딱 떨어지므로 테스트 시에 유용하다.
이 삼각형의 가장 작은 각도(즉 길이가 4인 변과 5인 변이 이루는 각도)는 약 36.87도이다.
이 값을 외워두면, 테스트 시에 정말 편하다.



36.87도는 0.6435 라디안이다.
꼭 암기할 필요는 없지만, 이 값도 기억하면 편리하다.

쉽게 감을 잡으려면 다음과 같이 생각하면 된다.
30도는 약 0.5 라디안이고 60도는 약 1 라디안,
그리고 6도가 약 0.1 라디안이므로,
36도는 약 0.6 가량이 되는 것이다.

sin(36.87도) = 약 0.6000 이다.
cos(36.87도) = 약 0.8000 이다.
tan(36.87도) = 약 0.7500 이다.

3-4-5 인 직각삼각형이므로, 이렇게 값이 떨어지는 것은 당연하다.

7-24-25 직각삼각형
이는 다음 링크를 참조하자
3-4-5 직각삼각형과 7-24-25 직각삼각형

36-24 직각삼각형
가로 36mm, 세로 24mm 직각삼각형의 대각선 길이는
43.2666mm 이다.

레퍼런스
MBM://35mm Equivalent focal length(35mm 환산값) 실제 촬영으로 확인하는 방법.png

Sunday, June 6, 2010

After Effects 로 얼굴 모자이크 처리 하는 법

질문 : After Effects 로 얼굴 모자이크 처리 하는 법?

답 :
1. 얼굴 부분에 모자이크를 하고자 하는 레이어 위에 Adjustment Layer 를 만든다.
2. Adjustment Layer 를 선택하고 Mask 를 만든다.
3. Adjustment Layer 에 Effect > Stylize > Mosaic 를 적용하면 이제 그 부분이 모자이크 될것임
4. Mask 가 얼굴을 따라가도록 애니메이션해준다. 이는 mocha 등의 tracking 소프트웨어 이용하면 됨

레퍼런스 :
http://forums.creativecow.net/thread/202/881571

본문 중에서 :

Blurring face in After Effects CS4

There are a few ways to do that:
Option A) Create an adjustment layer above the layer you want to blur, animate an ellipse mask to cover the face, and apply blur to the adjustment layer.
Option B) Duplicate the layer which contains the face, on the top layer add the ellipse mask and animate it over the face, apply blur to the top layer.

* you can also try track mattes
* in case there are several faces to blur, create mask per face and animate each, make sure all masks mode is set to "Add"