0031225: Visualization, TKOpenGl - support cubemap for environment texture within...
[occt.git] / samples / tcl / vis_pbr_spheres.tcl
1 # Script demonstrating PBR metallic-roughness material properties
2 #Category: Visualization
3 #Title: PBR metallic-rougness spheres
4
5 pload XDE OCAF MODELING VISUALIZATION
6 psphere s 0.35
7
8 catch { Close D }
9 XNewDoc D
10
11 # grid of spheres
12 set THE_UPPER 6
13 foreach i [list 0 3] {
14   set aPrefix ""
15   set aColor "GRAY80"
16   if { $i != 0 } {
17     set aPrefix "g_";
18     set aColor "CCB11D"
19   }
20   set aColShapes {}
21   for { set m 0 } { $m <= $THE_UPPER } { incr m } {
22     set aRowShapes {}
23     for { set r 0 } { $r <= $THE_UPPER } { incr r } {
24       set aName ${aPrefix}m${m}r${r}
25       copy s $aName
26       lappend aRowShapes $aName
27       ttranslate $aName ${r} ${i} ${m}
28     }
29     set aName ${aPrefix}m${m}
30     compound {*}$aRowShapes $aName
31     lappend aColShapes $aName
32   }
33   set aName ${aPrefix}spheres
34   compound {*}$aColShapes $aName
35   set aLabName "Gray Spheres"
36   if { $i != 0 } { set aLabName "Golden Spheres" }
37   set aLabComp [XAddShape D $aName 0]
38   SetName D $aLabComp $aLabName
39
40   for { set m 0 } { $m <= $THE_UPPER } { incr m } {
41     set aMet [expr 100 * ${m}/$THE_UPPER]
42     set aName ${aPrefix}m${m}
43     XAddComponent D $aLabComp $aName
44     set aLabCompCol [XFindShape D $aName]
45     SetName D $aLabCompCol "${aPrefix}m${aMet}%"
46     SetName D {*}[XFindComponent D $aName] "${aPrefix}m${aMet}%"
47     for { set r 0 } { $r <= $THE_UPPER } { incr r } {
48       set aRoug [expr 100 * ${r}/$THE_UPPER]
49       set aName ${aPrefix}m${m}r${r}
50       XAddComponent D $aLabCompCol $aName
51       set aLab [XFindComponent D $aName]
52       SetName D {*}$aLab "${aPrefix}m${aMet}%_r${aRoug}%"
53       XAddVisMaterial D $aName -baseColor $aColor -metallic ${m}/$THE_UPPER -roughness ${r}/$THE_UPPER
54       XSetVisMaterial D {*}$aLab $aName
55     }
56   }
57 }
58 set aLab [XFindShape D s]
59 SetName D {*}$aLab "Sphere"
60
61 XGetAllVisMaterials D
62
63 # labels
64 text2brep tm  "Metal"     -plane 0 -1 0 0 0 -1 -height 0.5 -pos -0.5 0  6.5 -halign left  -valign top -font monospace
65 text2brep tnm "Non-metal" -plane 0 -1 0 0 0 -1 -height 0.5 -pos -0.5 0 -0.5 -halign right -valign top -font monospace
66 text2brep ts  "Smooth"    -plane 0 -1 0 1 0  0 -height 0.5 -pos -0.5 0 -0.5 -halign left  -valign top -font monospace
67 text2brep tr  "Rough"     -plane 0 -1 0 1 0  0 -height 0.5 -pos  6.5 0 -0.5 -halign right -valign top -font monospace
68 compound tm tnm ts tr labs
69 set aLab [XAddShape D labs 0]
70 SetName D $aLab "Labels"
71 XAddComponent D $aLab tm
72 XAddComponent D $aLab tnm
73 XAddComponent D $aLab ts
74 XAddComponent D $aLab tr
75 SetName D {*}[XFindComponent D tm]  "Metal"
76 SetName D    [XFindShape     D tm]  "Metal"
77 SetName D {*}[XFindComponent D tnm] "Non-metal"
78 SetName D    [XFindShape     D tnm] "Non-metal"
79 SetName D {*}[XFindComponent D ts]  "Smooth"
80 SetName D    [XFindShape     D ts]  "Smooth"
81 SetName D {*}[XFindComponent D tr]  "Rough"
82 SetName D    [XFindShape     D tr]  "Rough"
83
84 vclear
85 vinit View1 -width 768 -height 768
86 vfront
87 vrenderparams -shadingModel PBR
88 vlight -change 0 -intensity 2.5
89 XDisplay -dispMode 1 D
90 vcamera -ortho
91 vfit