From e95411a381b01a9ac672d04c47920b967b849411 Mon Sep 17 00:00:00 2001 From: Daveo Date: Thu, 11 Jan 2001 22:17:57 +0000 Subject: [PATCH] --- Utils/MkAnim3d/MkAnim3d.cpp | 314 +++++++++++++++--------------------- Utils/MkAnim3d/MkAnim3d.h | 58 +++---- build/globals.mak | 1 + 3 files changed, 165 insertions(+), 208 deletions(-) diff --git a/Utils/MkAnim3d/MkAnim3d.cpp b/Utils/MkAnim3d/MkAnim3d.cpp index fe8dec86d..6dd6b4f31 100644 --- a/Utils/MkAnim3d/MkAnim3d.cpp +++ b/Utils/MkAnim3d/MkAnim3d.cpp @@ -1,5 +1,5 @@ /**********************************/ -/*** SpongeBob 3d Actor Creator ***/ +/*** SpongeBob 3d Anim Creator ***/ /**********************************/ #include "stdio.h" @@ -10,19 +10,18 @@ #include #include -#include "MkActor3d.h" +#include "MkAnim3d.h" using namespace std; -//*************************************************************************** -int TPBase=-1,TPWidth=-1,TPHeight=-1; +int QuatCount=0; //*************************************************************************** char * CycleCommands(char *String,int Num) { -char Text[256],*TextPtr; -int Count; +//char Text[256],*TextPtr; +//int Count; if (String[0]=='-' || String[0]=='/') { @@ -36,25 +35,6 @@ int Count; case 'd': DebugOn =true; break; - case 's': - TpStr= CheckFileString(String); - Scale=atof(TpStr); - break; - case 't': - TpStr= CheckFileString(String); - TextPtr=Text; - strcpy(TextPtr,TpStr); - Count=ZeroAndCountCommas(TextPtr); - if (Count!=2) - GObject::Error(ERR_FATAL,"Problem with option %s\n",String); - TPBase=atol(TextPtr); - TextPtr+=strlen(TextPtr)+1; - TPWidth=atol(TextPtr); - TextPtr+=strlen(TextPtr)+1; - TPHeight=atol(TextPtr); - case 'q': - StripLength=4; - break; default: GObject::Error(ERR_FATAL,"Unknown switch %s",String); break; @@ -73,176 +53,153 @@ int Count; //*************************************************************************** //*************************************************************************** //*************************************************************************** -CMkActor3d::CMkActor3d(GString const &In,GString const &Out,int TPBase,int TPW,int TPH) +void CMkAnim3d::Add(GString const &Filename) { -GFName File=In; +CScene Scene; +int ThisBoneCount; - InFilename=In; - InPath=File.Drive(); - InPath+=File.Dir(); - OutDir=Out; - OutDir.Append('\\'); + printf("%s\n",Filename); + Scene.Load(Filename); + ThisBoneCount=Scene.GetPruneTreeSize()-2; - Name=File.File(); -// Create Out Filename from inFilename and outdir - OutFile=OutDir+File.File(); -// OutFile+=File.File(); - - TPageBase=TPBase; - TPageWidth=TPW ; - TPageHeight=TPH; -} - -//*************************************************************************** -void CMkActor3d::Load() -{ - Scene.Load(InFilename); -// Scene.PrintPruneTree(); -} - -//*************************************************************************** -void CMkActor3d::Process() -{ - BuildSkin(); - FaceList.SetTexBasePath(InPath); - FaceList.SetTexOut(OutFile+".Tex",TPageBase,TPageWidth,TPageHeight); - FaceList.SetTexDebugOut(OutFile+".Lbm"); - - FaceList.Process(); -} - -//*************************************************************************** -void CMkActor3d::BuildSkin(int Idx) -{ -CNode &ThisNode=Scene.GetNode(Idx); -vector 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 const &NodeAnim=ThisNode.GetAnim(); +int FrameCount=NodeAnim.size(); if (!ThisNode.Pts.size()) // Dont export Skin as bone + { + sBoneAnim FrameList; + FrameList.Idx.resize(FrameCount); + + for (int i=0; i [ .. ] [ switches.. ]\n"); + printf("\nMkAnim3d: by Dave\n"); + printf("Usage: MkAnim3d [ .. ] [ switches.. ]\n"); printf("Switches:\n"); - printf(" -o:[FILE] Set output Dir\n"); - printf(" -s:nn Set Scaling value\n"); - printf(" -t:p,w,h Set TPage No,Width,Height\n"); + printf(" -o:[FILE] Set output File\n"); printf(" -d: Enable Debug output\n"); - printf(" -q: Enable Quadding\n"); GObject::Error(ERR_FATAL,ErrStr); } //*************************************************************************** - int main (int argc, char *argv[]) { +CMkAnim3d AnimBank; + CommandLine(argc,argv,CycleCommands); if (OutStr.Empty()) Usage("No Output File Set\n"); - if (TPBase==-1) Usage("No TPage Set\n"); - vector const &Files = MyFiles.GetFileInfoVector(); for (int Loop=0; Loop #include -#include -#include "..\mapedit\ExportPSXHdr.h" //*************************************************************************** -class CMkActor3d +struct sBoneAnim +{ + vector Quat; + vector Idx; +}; + +struct sAnim +{ + int FrameCount; + vector BoneAnim; + int FileOfs; +}; + +//*************************************************************************** +class CMkAnim3d { public: - CMkActor3d(GString const &In,GString const &Out,int TPBase,int TPW,int TPH); + CMkAnim3d() + { + BoneCount=-1; + } - void Load(); - void Process(); - void Write(); + void Add(GString const &Filename); + void Write(GString &Filename); private: - void BuildSkin(int Idx=0); - void WriteBone(int Idx); - void BuildBoneOut(sBone &OutBone,CNode const &InNode); - void BuildWeightOut(sWeight &OutWeight,sGinWeight const &InWeight); - int WriteWeightList(); + int ProcessSkel(CScene &Scene,sAnim &ThisAnim,int Idx); + int WriteAnim(sAnim const &ThisAnim); + int WriteQuatTable(); - GString InFilename,InPath,Name,OutFile,OutDir; - - CScene Scene; - - CFaceStore FaceList; - vector WeightList; - CList OutTriList; - CList OutVtxList; - - sActor3dHdr FileHdr; + int BoneCount; + vector AnimList; + CList QuatList; FILE *File; - int TPageBase; - int TPageWidth,TPageHeight; - }; //*************************************************************************** diff --git a/build/globals.mak b/build/globals.mak index d21fbd74a..a0baf888f 100644 --- a/build/globals.mak +++ b/build/globals.mak @@ -82,6 +82,7 @@ DATA_INC_DIR := $(DATA_TOOL_DIR)/include MKLEVEL := $(DATA_BIN_DIR)/MkLevel MKACTOR3D := $(DATA_BIN_DIR)/MkActor3d +MKANIM3D := $(DATA_BIN_DIR)/MkAnim3d # Cygwin # ------