b7cd4ba7 |
1 | puts "========" |
2 | puts "OCC24307 Objects clipping algorithm using BVH performance test: Solid spheres test" |
3 | puts "========" |
4 | |
5 | # define objects' location parameters and their characteristics |
6 | set SPHERES_NUM 10 |
7 | set SPERE_RADIUS 100 |
8 | set SPHERE_FINENESS 10 |
9 | set PERCENT_OF_INNER_SPHERES 30 |
10 | |
11 | # window parameters |
12 | set SMALL_WIN_WIDTH 512 |
13 | set SMALL_WIN_HEIGHT 512 |
14 | |
15 | # other |
16 | array set aSphereNames {} |
17 | |
b7cd4ba7 |
18 | pload VISUALIZATION MODELING |
15669413 |
19 | vclear |
b7cd4ba7 |
20 | vinit name=small_wnd l=32 t=32 w=$SMALL_WIN_WIDTH h=$SMALL_WIN_HEIGHT |
21 | vactivate small_wnd |
15669413 |
22 | vrenderparams -perfUpdateInterval 0 |
b7cd4ba7 |
23 | vfrustumculling 0 |
24 | vautozfit 0 |
25 | vviewparams -scale 1.953125 -eye 0.57735026918962573 -0.57735026918962573 0.57735026918962573 |
26 | vzrange 1 512 |
b7cd4ba7 |
27 | vremove -all -noinfo |
28 | |
29 | puts [vdrawsphere tmp_sph $SPHERE_FINENESS] |
30 | vremove -noinfo tmp_sph |
31 | |
32 | set aInnerSpheresNum [expr $SPHERES_NUM * $PERCENT_OF_INNER_SPHERES / 100] |
33 | puts "" |
34 | set aDebugInfo "Total number of visible objects: " |
35 | append aDebugInfo $aInnerSpheresNum |
36 | puts $aDebugInfo |
37 | puts "" |
38 | |
39 | puts "Start displaying spheres without clipping..." |
40 | set aInnerWidthStep [expr $SMALL_WIN_WIDTH / ($aInnerSpheresNum + 1)] |
41 | set aInnerHeightStep [expr $SMALL_WIN_HEIGHT / ($aInnerSpheresNum + 1)] |
42 | set aOuterStep [expr $SPERE_RADIUS * 3 / ($SPHERES_NUM - $aInnerSpheresNum + 1)] |
43 | for {set i 0} {$i < $aInnerSpheresNum} {incr i} { |
44 | set aCurrName "inner_sph" |
45 | append aCurrName $i |
46 | set aX [expr - $SMALL_WIN_WIDTH / 2 + ($i + 1) * $aInnerWidthStep ] |
47 | set aY [expr - $SMALL_WIN_HEIGHT / 2 + ($i + 1) * $aInnerHeightStep ] |
48 | vdrawsphere $aCurrName $SPHERE_FINENESS $aX $aY 0 $SPERE_RADIUS 0 0 |
49 | set aSphereNames($i) $aCurrName |
50 | } |
51 | for {set i $aInnerSpheresNum} {$i < $SPHERES_NUM} {incr i} { |
52 | set aCurrName "outer_sph" |
53 | append aCurrName $i |
54 | set aX [expr - $SMALL_WIN_WIDTH - $SPERE_RADIUS * 3 + ($i - $aInnerSpheresNum + 1) * $aOuterStep ] |
55 | set aY [expr - $SMALL_WIN_HEIGHT - $SPERE_RADIUS * 3 + ($i - $aInnerSpheresNum + 1) * $aOuterStep ] |
56 | vdrawsphere $aCurrName $SPHERE_FINENESS $aX $aY 0 $SPERE_RADIUS 0 0 |
57 | set aSphereNames($i) $aCurrName |
58 | } |
59 | puts [vfps] |
15669413 |
60 | vrenderparams -perfCounters none |
61 | vdump $imagedir/${casename}_cull_off_ref.png |
62 | vrenderparams -perfCounters verbose|nofps|nocpu |
63 | vdump $imagedir/${casename}_cull_off.png |
b7cd4ba7 |
64 | puts "All spheres were displayed." |
65 | puts "" |
66 | |
67 | verase |
68 | |
69 | puts "Start displaying spheres with clipping..." |
70 | vfrustumculling 1 |
71 | vdisplayall |
72 | puts [vfps] |
15669413 |
73 | vrenderparams -perfCounters none |
74 | vdump $imagedir/${casename}_cull_on_ref.png |
75 | vrenderparams -perfCounters verbose|nofps|nocpu |
76 | vdump $imagedir/${casename}_cull_on.png |
b7cd4ba7 |
77 | puts "All spheres were displayed." |
78 | puts "" |
79 | |
15669413 |
80 | set aDiffImageResult [diffimage $imagedir/${casename}_cull_on_ref.png $imagedir/${casename}_cull_off_ref.png 0.1 0 0 $imagedir/${casename}_diff.png] |
b7cd4ba7 |
81 | if {$aDiffImageResult != 0} { |
82 | puts "ERROR : Test failed: there is a difference between images rendered with and without clipping" |
83 | } |