Used Lee's reflection DDS on my clock model, although its not within the rules of challenge just thought I'd show what it would look like.
You will have to down load and move the dds to the same place you put a copy of this programme to see it work.
If I can work out how it is done, and how to save one them may include it the programe as a make your DDS.
Rem Project: clockmodel1
Rem Created: 23/05/2006 04:40:18
Rem ***** Main Source File ****
Rem Project: CLOCK MODEL
Rem Created: 20/05/2006 12:20:59
Rem ***** Main Source File *****
sync on
sync rate 60
backdrop on
autocam off
color backdrop rgb(0,0,0)
load image "dbprocubemap.dds",2
position camera 0,0,150,-650
create_romannums()
make matrix 1,1500.0,1500.0,10,10
position matrix 1,-700,-100,-700
make object cylinder 1,100/2
rem make spin bar and balls
make object sphere 2, 150/2
color object 2,rgb(255,0,0)
make object sphere 3, 150/2
make object cylinder 4,100/2
make object cylinder 5,100/2
make mesh from object 2,2
make mesh from object 3,3
make mesh from object 4,4
make mesh from object 5,5
delete object 2
delete object 3
delete object 4
delete object 5
add limb 1,1,2
add limb 1,2,3
add limb 1,3,4
add limb 1,4,5
delete mesh 2
delete mesh 3
delete mesh 4
delete mesh 5
offset limb 1,1,0,200/2,0,
offset limb 1, 2,0,-200/2, 0
offset limb 1,3,0,100/2,0
offset limb 1,4,0,-100/2,0
roll object right 1,90
fix object pivot 1
rem make a copy of above
clone object 2,1
clone object 3,1
rem turn them on there side and rotate one 90 deg
turn object right 2,90
make mesh from object 6,2
delete object 2
add limb 1,5,6
delete mesh 6
roll object right 3,90
fix object pivot 3
make mesh from object 7,3
delete object 3
add limb 1,6,7
rotate limb 1,6,90,90,0
delete mesh 7
offset limb 1,6,-200/2,0,0
color object 1,RGB(128,64,0)
rem make a clock face and rotate it facewards
make object sphere 2,25,50,50
scale object 2,900,10,900
color object 2,rgb(100,100,100)
rotate object 2,90,0,90
rem clock bits min and hours hands
make object sphere 3, 10
make object cylinder 4,10
make object cylinder 5,10
make object cone 6,10
make mesh from object 10,3
make mesh from object 11,4
make mesh from object 12,5
make mesh from object 13,6
`delete object 3
delete object 4
delete object 5
delete object 6
add limb 3,1,10 : rem sphere
add limb 3,2,11 :rem cylinder
add limb 3,3,12 :rem cylinder
add limb 3,4,12 :rem cone
add limb 3,5,12
add limb 3,6,12
add limb 3,7,12
add limb 3,8,12
add limb 3,9,12
add limb 3,10,12
add limb 3,11,12
add limb 3,12,13
delete mesh 10
delete mesh 11
delete mesh 12
delete mesh 13
rem mins
offset limb 3,2,0,5,0
offset limb 3,3,0,10,0
offset limb 3,4,0,10,0
offset limb 3,5,0,10,0
offset limb 3,6,0,10,0
offset limb 3,7,0,10,0
offset limb 3,8,0,10,0
offset limb 3,9,0,10,0
offset limb 3,10,0,10,0
offset limb 3,11,0,10,0
offset limb 3,12,0,10,0
position object 3,0,200,-115
link limb 3,1,2
link limb 3,2,3
link limb 3,3,4
link limb 3,4,5
link limb 3,5,6
link limb 3,6,7
link limb 3,7,8
link limb 3,8,9
link limb 3,9,10
link limb 3,10,11
link limb 3,11,12
clone object 4,3
`scale object 3,100,500,100
color object 3,rgb(0,255,0)
color object 4,rgb(255,0,255)
rem hours
offset limb 4,12,0,10,0
offset limb 4,11,0,0,0
offset limb 4,10,0,0,0
rem make glass tube and tint with glass look same for half sphere.
gh=0
`make object cylinder 6,325
`texture object 6,23
`ghost object on 6,gh
`position object 6,0,280/2,0
rem make glass sphere for top
make object sphere 7,325
LOCK VERTEXDATA FOR LIMB 7, 0, 2
for V=0 to GET VERTEXDATA VERTEX COUNT()-1
y#=GET VERTEXDATA POSITION y(V)
if y# < 0.0 then y# = -325
x#=GET VERTEXDATA POSITION x(V)
Z#=GET VERTEXDATA POSITION Z(V)
SET VERTEXDATA POSITION V, X#, Y#, Z#
next V
UNLOCK VERTEXDATA
texture object 7,23
ghost object on 7,gh
turn object left 7,-90
position object 7,0,300,0
rem make second hands
clone object 8,3
color object 8,rgb(0,0,255)
`offset limb 8,4,0,-50,0
offset limb 8,12,0,10,0
offset limb 8,11,0,0,0
offset limb 8,10,0,0,0
offset limb 8,9,0,0,0
rem make clock bases
make object sphere 9,50/2,100/2,100/2
scale object 9,1560,20/2,1560
color object 9,RGB(128,64,0)
position object 9,0,-100/2,0
make object sphere 10,50/2,100/2,100/2
scale object 10,1600,20,1600
color object 10,RGB(128,64,0)
position object 10,0,-120/2,0
make object cylinder 11,326
scale object 11,100,5,100
color object 11,RGB(255,255,0)
position object 11,0,306,0
make object box 12,150,100,200
position object 12,0,200,0
rem ...................................................
rem set text to white
set blend mapping on 11,1,2,2,16
set cube mapping on 11,2,2,2,2,2,2
set cube mapping on 7,2,2,2,2,2,2
set cube mapping on 1,2,2,2,2,2,2
set cube mapping on 2,2,2,2,2,2,2
set cube mapping on 3,2,2,2,2,2,2
ink rgb(255,255,255),0
global s h m t$
for o=1 to 400
if object exist(o)<>0
set object cull o,1
inc nl
endif
next o
`make mesh from object 1,9
`add limb 1,7,1
`texture object 2,23
`ghost object on 2,4
position object 2,0,200,-100
`make object from mesh
do
gosub _drag_object
metime()
control camera using arrowkeys 0,1,.1
center text screen width()/2,0,"FPs="+str$(screen fps())+" Poly's="+str$(statistic(1))
sync
loop
_drag_object:
if mouseclick()=0 then pickmode=0 : cursorobj=0
mclick=mouseclick()
if mclick>0
if pickmode=0
cursorobj=pick object(mousex(),mousey(),1,40)
if cursorobj>0
pickmode=mclick
pickdistance#=get pick distance()
pickfromx#=get pick vector x()
pickfromy#=get pick vector y()
pickfromz#=get pick vector z()
if pickmode=1
objx#=object position x(cursorobj)
objy#=object position y(cursorobj)
objz#=object position z(cursorobj)
else
objx#=object angle x(cursorobj)
objy#=object angle y(cursorobj)
objz#=object angle z(cursorobj)
pickdiffx#=mousemovey() : pickdiffx#=0
pickdiffy#=mousemovex() : pickdiffy#=0
endif
else
highlightobj=0
endif
endif
if pickmode>0
if pickmode=1
pick screen mousex(),mousey(),pickdistance#
picktox#=get pick vector x()
picktoy#=get pick vector y()
picktoz#=get pick vector z()
pickdiffx#=picktox#-pickfromx#
pickdiffy#=picktoy#-pickfromy#
pickdiffz#=picktoz#-pickfromz#
grid=0
if grid=1
pickdiffx#=int(pickdiffx#/5)*5
pickdiffy#=int(pickdiffy#/5)*5
pickdiffz#=int(pickdiffz#/5)*5
endif
position object cursorobj,objx#+pickdiffx#,objy#+pickdiffy#,objz#+pickdiffz#
else
pickdiffx#=pickdiffx#+mousemovey()
pickdiffy#=pickdiffy#+mousemovex()
grid=0
if grid=1
tpickdiffx#=int(pickdiffx#/22.5)*22.5
tpickdiffy#=int(pickdiffy#/22.5)*22.5
else
tpickdiffx#=pickdiffx#
tpickdiffy#=pickdiffy#
endif
rotate object cursorobj,wrapvalue(objx#-tpickdiffx#),wrapvalue(objy#-tpickdiffy#),objz#
endif
endif
endif
return
function metime()
t$=get time$()
s=val(right$(t$,2))
m=val(right$(left$(t$,5),2))
`h=val(left$(t$,2)) : h=(h mod 12)
h=val(left$(t$,2)) : if h > 11 then h=h-12
rotate limb 4,1,0,0,(m*-360.0/60.0)-(s/10.0)
rotate limb 8,1,0,0,(h*-360.0/12.0)-(m/2.0)
rotate limb 3,1,0,0,s*-360.0/60.0
if s mod 2 = 0
turn object right 1, wrapvalue(360)+6-slow
inc slow,2
else
turn object right 1, wrapvalue(360)-6+slow
inc slow,2
endif
inc slow
if slow>8 then slow=0
endfunction
function create_romannums()
set text font "times roman"
set text size 21
set text to bold
create bitmap 1,32,32
set current bitmap 1
ink rgb(1,1,1),0
`cls 0
center text 16,9,"I"
get image 11,0,0,32,32
cls 0
center text 16,9,"II"
get image 12,0,0,32,32
cls 0
center text 16,9,"III"
get image 13,0,0,32,32
cls 0
center text 16,9,"IV"
get image 14,0,0,32,32
cls 0
center text 16,9,"V"
get image 15,0,0,32,32
cls 0
center text 16,9,"VI"
get image 16,0,0,32,32
cls 0
center text 16,9,"VII"
get image 17,0,0,32,32
cls 0
center text 16,9,"VIII"
get image 18,0,0,32,32
cls 0
center text 16,9,"IX"
get image 19,0,0,32,32
cls 0
center text 16,9,"X"
get image 20,0,0,32,32
cls 0
center text 16,9,"XI"
get image 21,0,0,32,32
cls 0
center text 16,9,"XII"
get image 22,0,0,32,32
delete bitmap 1
set current bitmap 0
cls 0
for i=1 to 500
grey=rnd(150)
dot rnd(16),rnd(16),rgb(grey,grey,grey)
next i
get image 23,0,0,15,15
cls
rem place clock numbers
for i = 1 to 12
make object plain 400+i,25,25
texture object 400+i,10+i
set object transparency 400+i,1
position object 400+i,((-sin(i*-30))*90),((cos(i*-30))*90)+200,-110
zrotate object 400+i,i*-30
next i
rem make outside minuet marks.
for i = 1 to 60
make object plain 500+i,25,25
texture object 500+i,11
set object transparency 500+i,1
position object 500+i,((-sin(i*-6))*105),((cos(i*-6))*105)+200,-110
zrotate object 500+i,i*-6
next i
endfunction
I'm not getting you down am I, Ho Look! another fancy Door?