I found the old FPSC model packs here..
https://github.com/TheGameCreators/FPS-Creator-Classic
So I made a little program so I could see the frame numbers of animated models.
I was surprised to find animated textures as .avi files.
I used "VSDC Free Video Editor" to convert to mp4 and it works fine.
Just sharing for anyone that may be interested.
The code.
// Project: animated 3D model info - by ando
// Created: 24-04-02
// For animated models only.
// The 4 models included here come from...
// https://github.com/TheGameCreators/FPS-Creator-Classic
// ( scroll down the github page )
/*
Animations list for wingedreptile fpe
1 0,275 grounded idle 0,1
2 276,366 flying start (transition) 10
3 367,451 flying idle 2
4 472,490 flying right arm damage hit 3
5 452,471 flying left arm damage hit 4
6 491,506 flying land (transition) 9
7 507,546 flying throw 6
8 547,628 flying die fore 14.15,17,20
9 630,658 grounded walk 19
10 659,683 grounded melee right arm 23
11 683,707 grounded melee left arm 24
12 708,764 flying melee 7,8
13 765,833 flying die back 11,12,18,21
14 834,852 grounded run 5
15 853,911 grounded die fore 25
16 912,975 grounded die back 26
17 977,1025 grounded squat eating 31
18 1026,1124 grounded squat idle 30
19 1125,1160 grounded squat to stand (transition) 29
20 1161,1188 grounded right arm damage hit 27
21 1189,1218 grounded left arm damage hit 28
22 1219,1235 grounded throw 36
23 1236,1347 grounded idle 2 22
*/
SetErrorMode(2)
width# = GetMaxDeviceWidth()
height# = GetMaxDeviceHeight()
SetWindowSize(width#,height#,1)
SetVirtualResolution(width#,height#)
SetSyncRate(30,0)
SetScissor(0,0,0,0)
UseNewDefaultFonts(1)
//SetGenerateMipmaps(1)
SetAmbientColor(100,100,100)
SetSkyboxVisible(1)
SetSkyBoxHorizonColor(100,100,255)
SetSkyBoxSkyColor(100,100,255)
setprintsize(height#/30)
light1=1
CreatePointLight(light1,0,1000,-100,10000,255,255,255)
SetPointLightMode(light1,1)
// xxxxxxxxxxxxxxxxxxxxxx load an animated model
// 4 models, just copy paste the name
name$="wingedreptile" // wizard sas wingedreptile scifiassaulttroop
model=loadobjectwithchildren("models/"+name$+"/"+name$+".x")
if name$="wingedreptile"
video=LoadVideo("models/"+name$+"/reptile_flamer_new2.mp4")
tex=1
PlayVideoToImage(tex)
else
tex=loadimage("models/"+name$+"/"+name$+".png")
endif
SetObjectImage(model,tex,0)
// xxxxxxxx
numanimations=GetObjectNumAnimations(model)
if numanimations
numbones=GetObjectNumBones(model)
animname$=GetObjectAnimationName(model,1)
numframes=GetObjectAnimationDuration(model,animname$)
PlayObjectAnimation(model,animname$,1,numframes,1,1)
SetObjectAnimationSpeed(model,10)
endif
animswitch=1
paused=0
// xxxxxxxxxxxxxxxxxxxx camera setup
cam1=1
SetCameraRange(cam1, 0.1, 50000 )
SetCameraposition(cam1,0,60,-250)
pivot=CreateObjectbox(1,1,1)
SetObjectposition(pivot,0,60,0)
setobjectvisible(pivot,0)
SetObjectRotation(pivot,0,0,0)
SetCameraLookAt(cam1,getobjectX(pivot),getobjectY(pivot),getobjectZ(pivot),0)
FixCameraToObject(cam1,pivot)
pivotpos#=CreateVector3(0,0,0)
cam1pos#=CreateVector3(0,0,0)
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX main loop
do
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxx camera control
if GetRawKeyState(40) then SetObjectPosition(pivot,0,getobjectY(pivot)-1,0) // arrow down
if GetRawKeyState(38) then SetObjectPosition(pivot,0,getobjectY(pivot)+1,0) // arrow up
SetVector3(cam1pos#,GetCameraWorldX(cam1),GetCameraWorldY(cam1),GetCameraWorldZ(cam1))
SetVector3(pivotpos#,GetObjectWorldX(pivot),GetObjectWorldY(pivot),GetObjectWorldZ(pivot))
dist#=GetVector3Distance(cam1pos#,pivotpos#)
if dist#>5.0
if GetRawKeyState(87) then MoveCameraLocalZ(cam1,2) // W forward
endif
if GetRawKeyState(83) then MoveCameraLocalZ(cam1,-2) // S backward
if GetRawKeyState(65) then RotateObjectLocalY(pivot,2) // rotate left
if GetRawKeyState(68) then RotateObjectLocalY(pivot,-2) // rotate right
if GetRawKeyState(81) then MoveCameraLocalY(cam1,-2) // Q down
if GetRawKeyState(69) then MoveCameraLocalY(cam1,2) // E up
SetCameraLookAt(cam1,getobjectX(pivot),getobjectY(pivot),getobjectZ(pivot),0)
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx video texture for wingedreptile
if name$="wingedreptile"
if GetVideoPlaying()=0
PlayVideoToImage(tex)
endif
endif
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Pause and then can step forward / back to find
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx beginning and end of animations within main animation.
if getrawkeypressed(32)
animswitch=1-animswitch
if animswitch=1
SetObjectAnimationSpeed(model,10)
paused=0
else
SetObjectAnimationSpeed(model,0)
paused=1
currentframe=GetObjectAnimationTime(model)
endif
endif
if paused=1
if getrawkeypressed(190)
currentframe=currentframe+1
if currentframe > numframes then currentframe=1
SetObjectAnimationFrame(model,animname$,currentframe,0.1)
currentframe=GetObjectAnimationTime(model)
endif
if getrawkeypressed(188)
currentframe=currentframe-1
if currentframe < 1 then currentframe=numframes
SetObjectAnimationFrame(model,animname$,currentframe,0.1)
currentframe=GetObjectAnimationTime(model)
endif
endif
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
pivotHeight=getobjectY(pivot)
print(" cam controls")
print(" up / down arrows = move cam pivot")
print(" pivot height "+str(pivotHeight))
print(" Q E = down / up")
print(" A D = left / right")
print(" W S = in / out")
print(" Spacebar = play / pause animation")
print(" < > = back / forward one frame if paused")
print("")
print(" total bones = "+str(numbones))
print(" total animations = "+str(numanimations))
print(" anim name$ = "+ animname$)
print(" frames = "+str(numframes))
print(" current frame = "+str(GetObjectAnimationTime(model)))
Sync()
if GetrawKeyPressed(27) then end
loop
BASIC appeared in May 1964. Lightning flashed, the wind roared and the Earth moved.
And nine months later I was born.
So here I am.
I am Basic.
Code is in my genes.