Quote: "Being able to zoom and orientate the model would be useful as well."
I added those things and transparency.
Use WASD for movement, z and x for transparency and scroll for zoom
Rem Project: PerLimbRayDetection-FPSC-Characters
Rem Created: Thursday, January 20, 2011
rem init
sync on : sync rate 60 : autocam off : set text size 30
Rem used to make the object vissible at start
transparency=100
rem strips secondary UV data!
set legacy convert mode 1
rem ray detect must work with bone anim shader
load effect "bumpbone.fx",1,0,0
rem load em
perform checklist for files
for c=1 to checklist quantity()
c$=checklist string$(c)
if lower$(right$(c$,2))=".x" and model=0
model=1
load object c$,1
endif
if lower$(right$(c$,4))=".dds" and texture=0
texture=1
load image c$,1
endif
next c
texture object 1,1
loop object 1
set object speed 1,0
rem adding bone shader stops CPU generation (but need it)
set object effect 1,1
rem marker for ray
make object sphere 100,10
rem camera
position camera 0,45,-100
point camera 0,45,0
set normalization on
rem main loop
do
Rem reset camera(used in zoom)
pitch camera up 180
move camera zoom
pitch camera up -180
`
rem ray destination
position object 100,mousex()-320,285-mousey(),300
set cursor 0,0
raysx#=camera position x()
raysy#=camera position y()
raysz#=camera position z()
rayex#=object position x(100)
rayey#=object position y(100)
rayez#=object position z(100)
inter#=intersect object(1,raysx#,raysy#,raysz#,rayex#,rayey#,rayez#)
if inter#<>0.0
intersectlimb=checklist value b(1)
else
intersectlimb=0
endif
print "Limb(bone) Number=";intersectlimb
`
rem ray detect
if mouseclick()=1 and inter#<>0.0
inc obj : if obj<101 then obj=101
make object sphere obj,10
position object obj,object position x(100),object position y(100),object position z(100)
endif
Rem Zoom BY The Zoq2
if keystate(17)
position camera camera position x(),camera position y()+1,camera position z()
ENDIF
if keystate(31)
position camera camera position x(),camera position y()-1,camera position z()
ENDIF
if keystate(30)
move object left 1,-1
ENDIF
if keystate(32)
move object left 1,1
ENDIF
if mousez() < oldmz
zoom=zoom-1
ENDIF
if mousez() > oldmz
zoom=zoom+1
ENDIF
oldmz=mousez()
move camera zoom
Rem Transparency added by The Zoq2
If keystate (45)
transparency=transparency+1
ENDIF
if keystate (44)
transparency=transparency-1
ENDIF
If transparency>100
transparency=100
ENDIF
If transparency<0
transparency=0
ENDIF
Set alpha mapping on 1,transparency
`
rem update
sync
`
rem end loop
loop
Srry about my english im from sweeden