[Plib-cvs] CVS: plib/demos/exposer/src bones.cxx,1.13,1.14 exposer.cxx,1.17,1.18 load_save.cxx,1.6,1
Brought to you by:
sjbaker
|
From: Steve B. <sj...@us...> - 2002-01-19 20:37:23
|
Update of /cvsroot/plib/plib/demos/exposer/src
In directory usw-pr-cvs1:/tmp/cvs-serv2656/plib/demos/exposer/src
Modified Files:
bones.cxx exposer.cxx load_save.cxx load_save.h
Log Message:
Exposer will now operate in command-line mode to convert model+bones into tweened model.
The SSG loader now observes the 'appstate' callback.
ssgTween and ssgTweenController now include print() and getTypeName().
Significant changes to ssgaParticleSystem have taken place.
Index: bones.cxx
===================================================================
RCS file: /cvsroot/plib/plib/demos/exposer/src/bones.cxx,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- bones.cxx 2001/10/27 05:34:46 1.13
+++ bones.cxx 2002/01/19 20:37:20 1.14
@@ -16,8 +16,6 @@
bone = new Bone [ 1000 ] ;
sgZeroVec3 ( curr_translate ) ;
-
- initBoneGUI () ;
}
@@ -42,7 +40,7 @@
hb -> setValue ( (shb == 'H') ? 0 : 1 ) ;
pb -> setValue ( (spb == 'P') ? 0 : 1 ) ;
rb -> setValue ( (srb == 'R') ? 0 : 1 ) ;
-
+
hide_headingCB ( hb ) ;
hide_pitchCB ( pb ) ;
hide_rollCB ( rb ) ;
Index: exposer.cxx
===================================================================
RCS file: /cvsroot/plib/plib/demos/exposer/src/exposer.cxx,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- exposer.cxx 2001/07/23 22:40:50 1.17
+++ exposer.cxx 2002/01/19 20:37:20 1.18
@@ -409,8 +409,11 @@
static void help ()
{
fprintf ( stderr, "\n\n" ) ;
- fprintf ( stderr, "exposer: Usage -\n\n" ) ;
+ fprintf ( stderr, "exposer: Interactive Usage -\n\n" ) ;
fprintf ( stderr, " exposer\n" ) ;
+ fprintf ( stderr, " ...or...\n" ) ;
+ fprintf ( stderr, "exposer: Batch Tweenfile generation Usage -\n\n" ) ;
+ fprintf ( stderr, " exposer -f framerate modelfile bonefile tweenfile\n" );
fprintf ( stderr, "\n\n" ) ;
}
@@ -422,12 +425,23 @@
init_graphics () ;
init_database () ;
init_bones () ;
+ initBoneGUI () ;
- loadCB ( NULL ) ;
+ /* Interactive? */
- glutPostRedisplay () ;
- glutMainLoop () ;
- return 0 ;
+ if ( argc <= 1 )
+ {
+ loadCB ( NULL ) ;
+
+ glutPostRedisplay () ;
+ glutMainLoop () ;
+ return 0 ;
+ }
+
+ setTweenInterval ( 1.0f / atof ( argv [ 2 ] ) ) ;
+ loadFile ( argv [ 3 ], FALSE ) ;
+ loadBoneFile ( argv [ 4 ], FALSE ) ;
+ saveTweenFile ( argv [ 5 ], FALSE ) ;
}
Index: load_save.cxx
===================================================================
RCS file: /cvsroot/plib/plib/demos/exposer/src/load_save.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- load_save.cxx 2001/07/23 22:40:50 1.6
+++ load_save.cxx 2002/01/19 20:37:21 1.7
@@ -53,7 +53,6 @@
void twsavepickfn ( puObject * )
{
char path [ PUSTRING_MAX ] ;
- char fname [ PUSTRING_MAX ] ;
file_selector -> getValue ( path ) ;
@@ -66,9 +65,19 @@
return ;
}
+ saveTweenFile ( path, TRUE ) ;
+}
+
+
+void saveTweenFile ( char *path, int interactive )
+{
+ char orig_path [ PUSTRING_MAX ] ;
+ char fname [ PUSTRING_MAX ] ;
char *p = NULL ;
int i ;
+ strcpy ( orig_path, path ) ;
+
for ( i = strlen(path) ; i >= 0 ; i-- )
if ( path[i] == '/' || path[i] == '\\' )
{
@@ -92,12 +101,20 @@
/* SAVE THE TWEENED MODEL */
- if ( file_selector->getStringValue()[0] == '\0' )
+ if ( orig_path[0] == '\0' )
{
- puDeleteObject ( file_selector ) ;
- file_selector = NULL ;
- dialog ( "FAILED TO SAVE TWEENED MODEL!", 1, 0, 0 ) ;
- return ;
+ if ( interactive )
+ {
+ puDeleteObject ( file_selector ) ;
+ file_selector = NULL ;
+ dialog ( "FAILED TO SAVE TWEENED MODEL!", 1, 0, 0 ) ;
+ return ;
+ }
+ else
+ {
+ perror ( "saveTween:" ) ;
+ exit ( 1 ) ;
+ }
}
tweenScene = (ssgRoot *) makeTweenCopy ( skinScene ) ;
@@ -111,18 +128,28 @@
makeTweenCopy ( tweenScene, skinScene ) ;
}
- if ( ! ssgSave ( file_selector->getStringValue(), tweenScene ) )
+ if ( ! ssgSave ( orig_path, tweenScene ) )
{
+ if ( interactive )
+ {
+ puDeleteObject ( file_selector ) ;
+ file_selector = NULL ;
+ dialog ( "FAILED TO SAVE TWEENED MODEL!", 1, 0, 0 ) ;
+ return ;
+ }
+ else
+ {
+ perror ( "saveTween:" ) ;
+ exit ( 1 ) ;
+ }
+ }
+
+ if ( interactive )
+ {
puDeleteObject ( file_selector ) ;
file_selector = NULL ;
- dialog ( "FAILED TO SAVE TWEENED MODEL!", 1, 0, 0 ) ;
- return ;
+ dialog ( "TWEENED MODEL WAS SAVED OK.", 1, 1, 0 ) ;
}
-
- puDeleteObject ( file_selector ) ;
- file_selector = NULL ;
-
- dialog ( "TWEENED MODEL WAS SAVED OK.", 1, 1, 0 ) ;
}
@@ -204,7 +231,6 @@
void bnpickfn ( puObject * )
{
char path [ PUSTRING_MAX ] ;
- char fname [ PUSTRING_MAX ] ;
file_selector -> getValue ( path ) ;
@@ -215,9 +241,18 @@
return ;
}
+ loadBoneFile ( path, TRUE ) ;
+}
+
+void loadBoneFile ( char *path, int interactive )
+{
+ char orig_path [ PUSTRING_MAX ] ;
+ char fname [ PUSTRING_MAX ] ;
char *p = NULL ;
int i ;
+ strcpy ( orig_path, path ) ;
+
for ( i = strlen(path) ; i >= 0 ; i-- )
if ( path[i] == '/' || path[i] == '\\' )
{
@@ -241,20 +276,36 @@
/* LOAD THE BONES */
- if ( file_selector->getStringValue()[0] == '\0' )
+ if ( orig_path[0] == '\0' )
{
- puDeleteObject ( file_selector ) ;
- file_selector = NULL ;
- return ;
+ if ( interactive )
+ {
+ puDeleteObject ( file_selector ) ;
+ file_selector = NULL ;
+ return ;
+ }
+ else
+ {
+ perror ( "loadBones:" ) ;
+ exit ( 1 ) ;
+ }
}
- FILE *fd = fopen ( file_selector->getStringValue(), "ra" ) ;
+ FILE *fd = fopen ( orig_path, "ra" ) ;
if ( fd == NULL )
{
- puDeleteObject ( file_selector ) ;
- file_selector = NULL ;
- return ;
+ if ( interactive )
+ {
+ puDeleteObject ( file_selector ) ;
+ file_selector = NULL ;
+ return ;
+ }
+ else
+ {
+ perror ( "loadBones:" ) ;
+ exit ( 1 ) ;
+ }
}
timebox->deleteAll () ;
@@ -262,9 +313,11 @@
int numbones, numevents ;
float floor_z_coord, maxtime, new_ground_speed ;
- fscanf ( fd, "NUMBONES=%d NUMEVENTS=%d MAXTIME=%f Z_OFFSET=%f SPEED=%f\n",
- &numbones, &numevents,
- &maxtime, &floor_z_coord, &new_ground_speed ) ;
+ fscanf ( fd,
+ "NUMBONES=%d NUMEVENTS=%d MAXTIME=%f Z_OFFSET=%f SPEED=%f\n",
+ &numbones, &numevents,
+ &maxtime, &floor_z_coord, &new_ground_speed ) ;
+
/* Don't use the floor_z_coord from the file. */
/* ground -> setZcoord ( floor_z_coord ) ; */
@@ -275,7 +328,7 @@
if ( numbones != getNumBones () )
{
fprintf ( stderr,
- "Number of bones in model doesn't agree with number in bones file!\n" ) ;
+ "Number of bones in model (%d) doesn't agree with number in bones file (%d)!\n", getNumBones (), numbones ) ;
exit ( 1 ) ;
}
@@ -285,8 +338,12 @@
eventList -> read ( numevents, fd ) ;
fclose ( fd ) ;
- puDeleteObject ( file_selector ) ;
- file_selector = NULL ;
+
+ if ( interactive )
+ {
+ puDeleteObject ( file_selector ) ;
+ file_selector = NULL ;
+ }
}
@@ -344,7 +401,6 @@
void pickfn ( puObject * )
{
char path [ PUSTRING_MAX ] ;
- char fname [ PUSTRING_MAX ] ;
file_selector -> getValue ( path ) ;
@@ -362,6 +418,12 @@
return ;
}
+ loadFile ( path, TRUE ) ;
+}
+
+void loadFile ( char *path, int interactive )
+{
+ char fname [ PUSTRING_MAX ] ;
char *p = NULL ;
for ( int i = strlen(path) ; i >= 0 ; i-- )
@@ -389,6 +451,8 @@
strcpy ( lastModelFileName, fname ) ;
skinScene -> addKid ( ssgLoad ( fname, NULL ) ) ;
+ ssgFlatten ( skinScene -> getKid ( 0 ) ) ;
+ ssgStripify ( skinScene -> getKid ( 0 ) ) ;
boneScene -> addKid ( extractBones ( skinScene ) ) ;
extractVertices ( skinScene ) ;
Index: load_save.h
===================================================================
RCS file: /cvsroot/plib/plib/demos/exposer/src/load_save.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- load_save.h 2001/07/23 22:40:50 1.3
+++ load_save.h 2002/01/19 20:37:21 1.4
@@ -5,5 +5,9 @@
void bnsaveCB ( puObject * ) ;
void twsaveCB ( puObject * ) ;
+void loadFile ( char *fname, int interactive ) ;
+void loadBoneFile ( char *fname, int interactive ) ;
+void saveTweenFile ( char *fname, int interactive ) ;
+
void setTweenInterval ( float t ) ;
|