123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # Generate set of boxes resembling OCC logo and arranged in the shape of
- # Penrose triangle on perspective view.
- # The sample shows how the viewer can be manipulated to produce required
- # visual effect
- #Category: Visualization
- #Title: Penrose triangle on perspective view
- pload MODELING VISUALIZATION
- # Ray-Tracing doesn't work with Compatible Profile on macOS
- if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
- # procedure to define box dimensions
- set scale 1.
- set ratio 0.94
- proc defbox {} {
- global scale ratio
- set scale [expr $scale * $ratio]
- return [list 1.8*$scale 1.8*$scale 1.3*$scale]
- }
- # make set of boxes
- eval box b1 0 0 0 [defbox]
- eval box b2 2 0 0 [defbox]
- eval box b3 4 0 0 [defbox]
- eval box b4 6 0 0 [defbox]
- eval box b5 6 -1.5 0 [defbox]
- eval box b6 6 -3 0 [defbox]
- eval box b7 6 -4.5 0 [defbox]
- eval box b8 6 -6 0 [defbox]
- eval box b9 6 -6 1 [defbox]
- eval box b10 6 -6 2 [defbox]
- # cut last box by prisms created from the first two to make impression
- # that it is overlapped by these on selected view (see vviewparams below)
- explode b1 f
- explode b2 f
- prism p0 b1_5 12.3 -14 6.8
- bcut bx b10 p0
- prism p1 b2_3 12 -14 6.8
- bcut bxx bx p1
- tcopy bxx b10
- # make some boxes hollow
- for {set i 1} {$i <= 1} {incr i} {
- set dim [bounding b$i -save xmin ymin zmin xmax ymax zmax]
- set dx [dval xmax-xmin]
- set x1 [dval xmin+0.1*$dx]
- set x2 [dval ymin+0.1*$dx]
- set x3 [dval zmin+0.1*$dx]
- box bc $x1 $x2 $x3 0.8*$dx 0.8*$dx $dx
- bcut bb b$i bc
- tcopy bb b$i
- }
- # prepare a view
- vinit Penrose w=1024 h=512
- vbackground -color WHITE
- vrenderparams -rayTrace -fsaa on -reflections off -shadows off
- # set camera position and adjust lights
- vcamera -persp -fovy 25
- vviewparams -eye 14 -14 6.8 -up 0 0 1 -at 4 -4 0 -scale 70
- vsetdispmode 1
- vlight -defaults
- vlight dirlight1 -type DIRECTIONAL -direction 1 -2 -10 -head 1 -color WHITE
- vlight dirlight2 -type DIRECTIONAL -direction 0 -10 0 -head 1 -color WHITE
- # display boxes
- vdisplay b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
- # set colors like in boxes of on OCC logo
- vsetcolor b1 DD0029
- vsetcolor b2 F6DD00
- vsetcolor b3 98F918
- vsetcolor b4 E9007A
- vsetcolor b5 007ABC
- vsetcolor b6 93007A
- vsetcolor b7 EE9800
- vsetcolor b8 00B489
- vsetcolor b9 00A47A
- vsetcolor b10 007ABC
- # set material to plastic for better look
- for {set i 1} {$i <= 10} {incr i} {vsetmaterial b$i plastic}
- vdrawtext label "Which\nbox\nis\ncloser\nto\nyou?" -pos 0 -6 -2 -color BLACK -halign left -valign bottom -angle 0 -zoom 0 -height 40
|