From f2aae4c8cb0bc0b6297bd0136f3e00a71864cab5 Mon Sep 17 00:00:00 2001 From: Daveo Date: Tue, 30 Jan 2001 17:39:20 +0000 Subject: [PATCH] --- Utils/MkActor3d/MkActor3d.cpp | 302 +++++++++++++++++++++++++--------- Utils/MkActor3d/MkActor3d.h | 43 +++-- Utils/MkAnim3d/MkAnim3d.cpp | 43 ++--- 3 files changed, 267 insertions(+), 121 deletions(-) diff --git a/Utils/MkActor3d/MkActor3d.cpp b/Utils/MkActor3d/MkActor3d.cpp index 1414160e6..8fdf73d3a 100644 --- a/Utils/MkActor3d/MkActor3d.cpp +++ b/Utils/MkActor3d/MkActor3d.cpp @@ -14,15 +14,18 @@ using namespace std; +//graphics/Characters/SpongeBob/SpongeBob.Gin -o:out/USA/data/Actors -t:24,1,1 -s:256 +// -a:SBEyesAngry.bmp,SBEyesBlink.bmp,SBEyesDown.bmp,SBEyesfiece.bmp,SBEyesLeft.bmp,SBEyesSheepish.bmp,SBEyesUp.bmp,SBEyesWorried.bmp,SBEyesRight.bmp, SBmouth01.bmp,SBMouthGasp.bmp,SBMouthSheepishSBMouthSmile.bmp,SBMouthTerror.bmp,SBMouthWhistle //*************************************************************************** int TPBase=-1,TPWidth=-1,TPHeight=-1; +std::vector ExtraTex; //*************************************************************************** char * CycleCommands(char *String,int Num) { char Text[256],*TextPtr; -int Count; +int Count,i; if (String[0]=='-' || String[0]=='/') { @@ -52,6 +55,19 @@ int Count; TPWidth=atol(TextPtr); TextPtr+=strlen(TextPtr)+1; TPHeight=atol(TextPtr); + break; + case 'a': + TpStr= CheckFileString(String); + TextPtr=Text; + strcpy(TextPtr,TpStr); + Count=ZeroAndCountCommas(TextPtr); + for (i=0; i const &NodeTriList = ThisNode.GetTris(); +vector const &NodeVtxList = ThisNode.GetRelPts(); +vector const &NodeMatList = ThisNode.GetTriMaterial(); +vector const &NodeUVList = ThisNode.GetUVTris(); +vector const &SceneTexList= Scene.GetTexList(); +vector const &SceneUsedMatList=Scene.GetUsedMaterialIdx(); + +int TriCount=NodeTriList.size(); +int ThisIdx=Skel.size(); +sGinSkel &ParentBone=Skel[ParentIdx]; +vector VtxList; + + + + if (!TriCount) + { // Its a Bone!! + sGinSkel ThisBone; + BuildBoneOut(ThisBone.Bone,ThisNode,ParentIdx); + +int WeightCount=ThisNode.Weights.size(); + if (WeightCount) + { + printf("%s %i\n",ThisNode.Name,WeightCount); + for (int i=0; i const &NodeTriList = ThisNode.GetTris(); -vector const &NodeVtxList = ThisNode.GetPts(); -vector const &NodeMatList = ThisNode.GetTriMaterial(); -vector const &NodeUVList = ThisNode.GetUVTris(); -vector const &SceneTexList= Scene.GetTexList(); -vector const &SceneMatList= Scene.GetMaterials(); - -int TriCount=NodeTriList.size(); - - for (int T=0; T>7)&0x003) + { + case 0: + PixPerWord=4; + break; + case 1: + PixPerWord=2; + break; + case 2: + PixPerWord=1; + break; + default: + GObject::Error(ERR_FATAL,"Unknown Pixel Depth"); + break; + }; -// build Weight List - for (int Weight=0; Weight &TexList=TexGrab.GetTexInfo(); +int ListSize=TexList.size(); int Pos=ftell(File); for (int i=0; i WeightList; - CList OutTriList; - CList OutVtxList; + CScene Scene; - sActor3dHdr FileHdr; - FILE *File; + vector Skel; - int TPageBase; - int TPageWidth,TPageHeight; + CFaceStore FaceList; + + CTexGrab TexGrab; + sActor3dHdr FileHdr; + FILE *File; + + int TPageBase; + int TPageWidth,TPageHeight; }; diff --git a/Utils/MkAnim3d/MkAnim3d.cpp b/Utils/MkAnim3d/MkAnim3d.cpp index 2aeae89e7..b1e9d33af 100644 --- a/Utils/MkAnim3d/MkAnim3d.cpp +++ b/Utils/MkAnim3d/MkAnim3d.cpp @@ -16,8 +16,16 @@ using namespace std; int QuatCount=0; +/* +buttbounceend.gin buttbouncestart.gin deathbackwards.gin deathdry.gin deathfall.gin deathforwards.gin deathspin.gin deathtar.gin electricshock.gin electricshockend.gin electricshockstart.gin faceback.gin facefront.gin fall.gin getup.gin getuprun.gin hitground.gin hover.gin hoverend.gin hoverstart.gin idlebreathe.gin idlehoola.gin idlelook.gin idlewigglearm.gin jumpend.gin karate.gin knockback.gin knockforward.gin run.gin runjumpend.gin runjumpstart.gin runstart.gin runstop.gin soakup.gin talk01.gin talk02.gin talk03.gin talk04.gin teeterback.gin teeterfront.gin +*/ +/* duff anims +deathfall.gin +runjumpend.gin +runjumpstart.gin +*/ //*************************************************************************** char * CycleCommands(char *String,int Num) @@ -68,9 +76,19 @@ CScene Scene; int ThisBoneCount; GFName Name=Filename; - printf("%s\n",Filename); + printf("%s\t",Name.File()); Scene.Load(Filename); - ThisBoneCount=Scene.GetPruneTreeSize()-2; + +// Process Anim +sAnim ThisAnim; + ThisAnim.Name=Name.File(); + ThisAnim.Name.Upper(); + ThisAnim.FrameCount=ProcessSkelMove(Scene,ThisAnim,1); + ProcessSkelAnim(Scene,ThisAnim,1); + AnimList.push_back(ThisAnim); + + ThisBoneCount=ThisAnim.BoneAnim.size(); + printf("\t(%i Bones, %i Frames)\n",ThisBoneCount,ThisAnim.FrameCount); // Check Skeleton if (BoneCount==-1) @@ -85,13 +103,6 @@ GFName Name=Filename; } } -// Process Anim -sAnim ThisAnim; - ThisAnim.Name=Name.File(); - ThisAnim.Name.Upper(); - ThisAnim.FrameCount=ProcessSkelMove(Scene,ThisAnim,1); - ProcessSkelAnim(Scene,ThisAnim,1); - AnimList.push_back(ThisAnim); } //*************************************************************************** @@ -120,7 +131,8 @@ CNode &ThisNode=Scene.GetNode(Idx); vector const &NodeAnim=ThisNode.GetAnim(); int FrameCount=NodeAnim.size(); - if (!ThisNode.Pts.size()) // Dont export Skin as bone +// if (!ThisNode.Pts.size()) // Dont export Skin as bone + if (!ThisNode.GetTris().size()) // Dont export Skin as bone { sBoneAnim FrameList; FrameList.Idx.resize(FrameCount); @@ -131,17 +143,6 @@ int FrameCount=NodeAnim.size(); sQuat ThisFrame; Quaternion const &ThisQuat=InFrame.Ang; -/* if (Idx==1) - { - Matrix4x4 Mtx; - ThisQuat.ToMatrix(Mtx); - Mtx.m_M[0][1]=-Mtx.m_M[0][1]; - Mtx.m_M[1][1]=-Mtx.m_M[1][1]; - Mtx.m_M[2][1]=-Mtx.m_M[2][1]; - Mtx.m_M[3][1]=-Mtx.m_M[3][1]; - Mtx.ToQuaternion(ThisQuat); - } -*/ ThisFrame.vx=round(ThisQuat.x*4096); ThisFrame.vy=round(ThisQuat.y*4096); ThisFrame.vz=round(ThisQuat.z*4096);