안녕하세요 ^^
이번에 uv 애니메이션을 지원해주기 위해 익스포트 작업중에..
혹시 해보신분의 도움을 좀 얻을 수 있을까 해서 글을 씁니다.
매터리얼 정보에서 uv 좌표정보를 얻어오는건 쉽게 성공하였습니다만,
제가 원하는건 모디파이어의 uvw mapping 정보를 얻어오는 것입니다.
프레임별로 uvw mapping 에서 수정한 값을 행렬로 얻어오려 하는데요.
uvw mapping 모디파이어를 얻어오는것까진 성공하였습니다만,
그 안의 데이터를 어떻게 가져와야 할지 자료가 참 없네요.
성공하신분 정보좀 공유해주세요 ^^
맥스에서 uvw mapping 정보 익스포트
Moderator: 류광
MacroRecorder활용 강추
MaxScript Listener에서 MacroRecorder메뉴에서 Enable을 체크해놓고
오브젝트에 uvw mapping 모디파이어 올려놓고 모디파이어의 속성을 변경시켜보세요
그러면 MaxScript Listener에 접근할수 있는 맥스스크립트 명령어로 나옵니다.
p.s. 사진 퍼가도 되나요?^^
오브젝트에 uvw mapping 모디파이어 올려놓고 모디파이어의 속성을 변경시켜보세요
그러면 MaxScript Listener에 접근할수 있는 맥스스크립트 명령어로 나옵니다.
p.s. 사진 퍼가도 되나요?^^
-
- Posts: 17
- Joined: 2005-11-29 11:56
- Location: 한림대학교 GVE LAB
원하시는게 이거신지..
잘모르겠지만...
UV animation을 했을때
우선은 텍스쳐가 있다고 가정하고
Tex = pMtrl->GetSubTexmap(1);
이렇게 texture map을 뺀후에
StdUVGen* uvGen = ((BitmapTex*)Tex)->GetUVGen();
이렇게 텍스쳐 의 uv 좌표를 얻어오고
uvGen->Update(t,animRange);
여기서 t값은 tick이고요 animRange는 interface에서 얻어온 interval 값입니다.
Tex->GetUVTransform(uvtrans);
이런식으로 하면 uvtrans(Matrix3)행렬로 빼낼수있습니다.
그리고 해당 uv좌표에다가 uvtrans를 곱해서 변환된 uv좌표를 저장했습니다.
이게 맞을지 모르겟습니다.^^
UV animation을 했을때
우선은 텍스쳐가 있다고 가정하고
Tex = pMtrl->GetSubTexmap(1);
이렇게 texture map을 뺀후에
StdUVGen* uvGen = ((BitmapTex*)Tex)->GetUVGen();
이렇게 텍스쳐 의 uv 좌표를 얻어오고
uvGen->Update(t,animRange);
여기서 t값은 tick이고요 animRange는 interface에서 얻어온 interval 값입니다.
Tex->GetUVTransform(uvtrans);
이런식으로 하면 uvtrans(Matrix3)행렬로 빼낼수있습니다.
그리고 해당 uv좌표에다가 uvtrans를 곱해서 변환된 uv좌표를 저장했습니다.
이게 맞을지 모르겟습니다.^^
하나라도 더 배우고 공부하자~!!
-
- Posts: 268
- Joined: 2005-02-28 20:08
3dsmax UVW Mapping Modifier 접근하기.
방법을 찾았기에 저로 같은문제로 고생하시는분들을 위해 글을 남깁니다.
MaxSDK 의 Sample 에 Modifiers 관련 소스들이 있더군요.
그중 MapMod.cpp 를 참고하시면 됩니다.
1> 모디파이어를 얻어온다.
2> 얻은 모디파이어 포인터를 Sample/Modifiers/Mapping.h 에 있는 MapMod 클래스 포인터로 변형한다.
3> 정보를 빼온다 ^^
예를 들어 특정 시간대의 UV Mapping gizmo 의 행렬정보,MapType(Box Gizmo,Sphere Gizmo 등), 크기정보를 얻어오시려면..
매터리얼의 UV Ani 정보를 얻어오는건 쉽지만 디자이너 입장에서 불편해하더라구요.
이 방법은 UVW Mapping 모디파이어를 사용하기 때문에 디자이너들이 좋아해줍니다. ㅋㅋ[/code]
MaxSDK 의 Sample 에 Modifiers 관련 소스들이 있더군요.
그중 MapMod.cpp 를 참고하시면 됩니다.
1> 모디파이어를 얻어온다.
2> 얻은 모디파이어 포인터를 Sample/Modifiers/Mapping.h 에 있는 MapMod 클래스 포인터로 변형한다.
3> 정보를 빼온다 ^^
예를 들어 특정 시간대의 UV Mapping gizmo 의 행렬정보,MapType(Box Gizmo,Sphere Gizmo 등), 크기정보를 얻어오시려면..
Code: Select all
Modifier * GetUVWMappingMod(INode* pNode)
{
assert(pNode!=NULL);
Object *pObj = pNode->GetObjectRef();
if(!pObj) return NULL;
while(pObj->SuperClassID() == GEN_DERIVOB_CLASS_ID)
{
IDerivedObject *pDerivedObj = static_cast<IDerivedObject>(pObj);
int stackIdx = 0;
while(stackIdx <pDerivedObj>NumModifiers())
{
Modifier* pMod = pDerivedObj->GetModifier(stackIdx++);
if( pMod->ClassID() == Class_ID(UVWMAPOSM_CLASS_ID, 0) )
{
MapMod* pMapMod = (MapMod*)pMod;
ModContext *modContext = NULL;
modContext = pDerivedObj->GetModContext(stackIdx-1);
// 기즈모 타입
int iMapType = pMapMod->GetMapType();
// 기즈모 width, height
float fWidth = pMapMod->GetWidth(0);
float fHeight = pMapMod->GetHeight(0);
// 행렬정보
Matrix3 matGizmo = pMapMod->CompMatrix(0, modContext, &pNode->GetObjectTM(0), 1, 1);
return pMod;
}
}
pObj = pDerivedObj->GetObjRef();
}
return NULL;
}
이 방법은 UVW Mapping 모디파이어를 사용하기 때문에 디자이너들이 좋아해줍니다. ㅋㅋ[/code]
이지노리, 김현중