I decide to say what the hey and run with the viewer idea in case you got sick of it.
Here's a complete minimal viewer with mouse rotation and pitch as well as wheel mouse zooming.
`Declare variables
FOV#=45.0
zoom = 10
cameraX = 0
cameraY = 0
cameraZ = 0
cameraAngle = 0
cameraHeight = 0
cameraSmooth = 1
`Setup environment
Set Display Mode 1024,768,32
Sync Rate 0
Sync On
Set Camera FOV FOV#
Set Text Size 16
Set Text To Bold
filetoload$ = cl$()
filename$ = ""
for a = 1 to len(filetoload$)
b$ = mid$(filetoload$, a)
if b$ <> chr$(34) then filename$ = filename$ + b$
next a
load object filename$, 1
set normalization on
`Main loop
Do
text 10,10, "Model: "+filename$
text 10,30, "FPS: "+str$(screen fps())
button = mouseclick()
oldX = X
oldY = Y
X = mousex()
Y = mousey()
Z = mousez()
if Z > 0 then zoom = zoom - 10: if zoom < 10 then zoom = 10
if Z < 0 then zoom = zoom + 10: if zoom > 800 then zoom = 800
` stupid, but it resets the mouseZ and prevents runaway zooming
if Z <> 0 then position mouse X, Y
if oldX > X
cameraAngle = cameraAngle + (oldX - X)
if cameraAngle > 359 then cameraAngle = cameraAngle - 360
endif
if oldX < X
cameraAngle = cameraAngle - (X - oldX)
if cameraAngle < 0 then cameraAngle = camerAngle +360
endif
if oldY > Y
pitch object up 1, oldY - Y
endif
if oldY < Y
pitch object down 1, Y - oldY
endif
set camera to follow 0, cameraX,cameraY,cameraZ, cameraAngle,zoom,cameraHeight, cameraSmooth,0
point camera 0, cameraX,cameraY,cameraZ
Sync
Loop
End
A funny thing about this code, it liked alien.x but bombed on alien.3ds. No idea why, it was a fatal error with no return data. Some other 3DS files worked just fine. Your mileage may vary with which DBP patch version and OS you're using.
Features you can add... The ability to turn lights on and off, maybe tweak ambient lighting, add a transparent reference plane or grid that runs through 0,0,0, add a scale 'ruler' and allow for setting scaling values on the fly so programmers know what values to use when they load the model in their games, etc.
--
TAZ