MathJax

2011년 9월 10일 토요일

Skin Inforamtion Export Script in 3ds Max

Export skin information of node which has skin modifier
Written by Park Yun Gyu

mynode = select $
myskin = mynode.modifiers[#Skin]

OutFile = createfile "c:\\ExportSkin.txt"

NumVert = skinOps.getNumberVertices myskin
for i=1 to NumVert do
(
NumWeight = skinOps.GetVertexWeightCount myskin i
format "i:% NumWeight:%\n" i NumWeight to: OutFile
for w=1 to NumWeight do
(
BoneID = skinOps.GetVertexWeightBoneID myskin i w
BoneName = skinOps.GetBoneName myskin BoneID 1
format "--BoneID:% BoneName:%\n" BoneID BoneName to: OutFile

)
)

close OutFile

2011년 9월 1일 목요일

구와 구 교차 ( Intersecting sphere and sphere )


bool Sphere_Sphere( Sphere& A, Sphere& B)
{
//두개의 구 중심사이의 거리
D3DXVECTOR3 CenterDist = B.Center - A.Center;

//제곱된 거리 사용
float Dist = D3DXVec3Dot(&CenterDist, &CenterDist);

//두개의 구의 반지름의 합
float SumDist = A.Radius + B.Radius;

//제곱된 거리 사용
SumDist *= SumDist;


//합한거리보다 더 거리가 크면 서로 교차하지 않음
if( Dist > SumDist )
return false;

return true;
}
참고 문헌:
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학(2판)
(Eric Lengyel저, 류광 역, 정보문화사)

REAL-TIME RENDERING 2판
(Tomas;Eric 공저, 신병석;오경수 공역, 정보문화사)
REAL-TIME COLLISION DETECTION
(Christer Ericson저, Morgan Kaufmann Publishers)

AABB와 AABB 교차 ( Intersecting AABB and AABB )


















AABB( Axis Aligned Bounding Box)는 축에 정렬된 상태이기 때문에
박스가 회전하지 않고 축 방향으로 이동만 하여 위치를 잡게 된다.
그러므로 AABB의 두가지 요소 Min, Max값을 이용하여 각각의 축에 대하여 1차원적인 비교만 하면 된다.
bool AABBToAABB(AABB* pAABB1, AABB* pAABB2)
{
//x축에 대하여
if( pAABB1->Max.x < pAABB2->Min.x ||
pAABB1->Min.x < pAABB2->Max.x )
return false;
//y축에 대하여
if( pAABB1->Max.y < pAABB2->Min.y ||
pAABB1->Min.y < pAABB2->Max.y )
return false;
//z축에 대하여
if( pAABB1->Max.z < pAABB2->Min.z ||
pAABB1->Min.z < pAABB2->Max.z )
return false;
return true;
}
참고 문헌:
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학(2판)
(Eric Lengyel저, 류광 역, 정보문화사)


REAL-TIME RENDERING 2판
(Tomas;Eric 공저, 신병석;오경수 공역, 정보문화사)

REAL-TIME COLLISION DETECTION
(Christer Ericson저, Morgan Kaufmann Publishers)