canvas3d .c -height 300 -width 300
pack .c
update

set prj [ .c create matrix -value {{2.0 0.0 0.0 0.0} {0.0 2.0 0.0 0.0} {0.0 0.0 1.0 1.0} {0.0 0.0 -2.0 0.0}} ]
set wrl [ .c create matrix -value {{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} {0.0 0.0 1.0 0.0} {0.0 0.0 0.0 1.0}} ]
set vw [ .c create matrix -value {{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} {0.0 0.0 1.0 0.0} {0.0 0.0 40.0 1.0}} ]
set back [ .c create surface ]  
set view [ .c create viewport -proj $prj -world $wrl -view $vw -background $back ]
update

set red [ .c create surface -emissive { 0 0 1 0 } -diffuse { 0 0 1 0 } -specular { 0 0 1 0 } -ramp 1 ]
set t31 [.c create cylinder -radius 8 -sections 20 -surface $red]
.c translate $t31 10 10 10
.c fill $t31 wireframe
set t32 [.c create cone -radius 6 -sections 15 -surface $red]
.c fill $t32 wireframe
.c rotate $t32 x 1.5
.c translate $t32 -10 -5 0
set t33 [.c create polygon -radius 8 -edges 10 -center { 8 -5 5 } -surface $red]
.c fill $t33 wireframe  
.c update

.c itemconfigure $view -viewpoint { 0 -5 -5 } -up { 1 1 0 }
.c update
