Changeset 2234 for trunk/gui


Ignore:
Timestamp:
Apr 28, 2011, 10:53:33 AM (13 years ago)
Author:
gah
Message:

Fix user view controls

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/vtkviewer2.tcl

    r2232 r2234  
    160160        y2 -1
    161161    }
    162     set _arcball [blt::arcball create 100 100]
    163     $_arcball matrix { 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 }
    164 
    165162    # Initialize the view to some default parameters.
    166163    array set _view {
    167         theta           45
    168         phi             45
    169         psi             0
     164        qx              0
     165        qy              0
     166        qz              0
     167        qw              1
    170168        zoom            1.0
    171169        pan-x           0
     
    174172        zoom-y          1.0
    175173    }
     174    set _arcball [blt::arcball create 100 100]
     175    set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)]
     176    $_arcball quaternion $q
     177
    176178    set _limits(vmin) 0.0
    177179    set _limits(vmax) 1.0
     
    182184        $this-lighting          1
    183185        $this-opacity           1
    184         $this-pan-x             $_view(pan-x)
    185         $this-pan-y             $_view(pan-y)
    186         $this-phi               $_view(phi)
    187         $this-psi               $_view(psi)
    188         $this-theta             $_view(theta)
    189186        $this-volume            1
    190187        $this-wireframe         0
     
    192189        $this-grid-y            0
    193190        $this-grid-z            0
    194         $this-zoom              $_view(zoom)
    195191    }]
    196192
     
    786782    # Reset the camera and other view parameters
    787783    #
    788 
    789     set _settings($this-theta) $_view(theta)
    790     set _settings($this-phi)   $_view(phi)
    791     set _settings($this-psi)   $_view(psi)
    792     set _settings($this-pan-x) $_view(pan-x)
    793     set _settings($this-pan-y) $_view(pan-y)
    794     set _settings($this-zoom)  $_view(zoom)
    795 
    796     set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)]
    797     #SendCmd "camera rotate $xyz"
     784    set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)]
     785    $_arcball quaternion $q
     786    SendCmd "camera orient $q"
    798787    PanCamera
    799788    SendCmd "camera mode persp"
    800     #SendCmd "camera zoom $_view(zoom)"
     789    Zoom reset
     790
    801791    FixSettings opacity
    802792    FixSettings grid-x
     
    883873        "in" {
    884874            set _view(zoom) [expr {$_view(zoom)*1.25}]
    885             set _settings($this-zoom) $_view(zoom)
    886875            SendCmd "camera zoom $_view(zoom)"
    887876        }
    888877        "out" {
    889878            set _view(zoom) [expr {$_view(zoom)*0.8}]
    890             set _settings($this-zoom) $_view(zoom)
    891879            SendCmd "camera zoom $_view(zoom)"
    892880        }
    893881        "reset" {
    894882            array set _view {
    895                 theta   45
    896                 phi     45
    897                 psi     0
     883                qx      0
     884                qy      0
     885                qz      0
     886                qw      1
    898887                zoom    1.0
    899888                pan-x   0
     
    902891                zoom-y  1.0
    903892            }
     893            SendCmd "camera reset all"
    904894            if { $_first != "" } {
    905895                set location [$_first hints camera]
    906896                if { $location != "" } {
    907897                    array set _view $location
     898                    parray _view
    908899                }
    909900            }
    910             set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)]
    911             #SendCmd "camera rotate $xyz"
     901            set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)]
     902            $_arcball quaternion $q
     903            SendCmd "camera orient $q"
    912904            PanCamera
    913             set _settings($this-theta) $_view(theta)
    914             set _settings($this-phi)   $_view(phi)
    915             set _settings($this-psi)   $_view(psi)
    916             set _settings($this-pan-x) $_view(pan-x)
    917             set _settings($this-pan-y) $_view(pan-y)
    918             set _settings($this-zoom)  $_view(zoom)
    919             SendCmd "camera reset all"
    920             $_arcball reset
    921905        }
    922906    }
     
    950934            set _click(x) $x
    951935            set _click(y) $y
    952             set _click(theta) $_view(theta)
    953             set _click(phi) $_view(phi)
    954936        }
    955937        "drag" {
     
    974956                }
    975957                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
     958                foreach { _view(qw) _view(qx) _view(qy) _view(qz) } $q break
    976959                SendCmd "camera orient $q"
    977960                set _click(x) $x
     
    1008991            set _view(pan-y) [expr $_view(pan-y) + $y]
    1009992            PanCamera
    1010             set _settings($this-pan-x) $_view(pan-x)
    1011             set _settings($this-pan-y) $_view(pan-y)
    1012993            return
    1013994        }
     
    10271008            set _view(pan-y) [expr $_view(pan-y) - $dy]
    10281009            PanCamera
    1029             set _settings($this-pan-x) $_view(pan-x)
    1030             set _settings($this-pan-y) $_view(pan-y)
    10311010        }
    10321011        "release" {
     
    13391318    $inner configure -borderwidth 4
    13401319
    1341     set labels { phi theta psi pan-x pan-y zoom }
     1320    set labels { qx qy qz qw pan-x pan-y zoom }
    13421321    set row 0
    13431322    foreach tag $labels {
    13441323        label $inner.${tag}label -text $tag -font "Arial 9"
    13451324        entry $inner.${tag} -font "Arial 9"  -bg white \
    1346             -textvariable [itcl::scope _settings($this-$tag)]
     1325            -textvariable [itcl::scope _view($tag)]
    13471326        bind $inner.${tag} <KeyPress-Return> \
    13481327            [itcl::code $this camera set ${tag}]
     
    13691348        "set" {
    13701349            set who [lindex $args 0]
    1371             set x $_settings($this-$who)
     1350            set x $_view($who)
    13721351            set code [catch { string is double $x } result]
    13731352            if { $code != 0 || !$result } {
    1374                 set _settings($this-$who) $_view($who)
     1353                set x _view($who)
    13751354                return
    13761355            }
    13771356            switch -- $who {
    13781357                "pan-x" - "pan-y" {
    1379                     set _view($who) $_settings($this-$who)
    13801358                    PanCamera
    13811359                }
    1382                 "phi" - "theta" - "psi" {
    1383                     set _view($who) $_settings($this-$who)
    1384                     set xyz [Euler2XYZ $_view(theta) $_view(phi) $_view(psi)]
    1385                     #SendCmd "camera rotate $xyz"
     1360                "qx" - "qy" - "qz" - "qw" {
     1361                    set q [list $_view(qw) $_view(qx) $_view(qy) $_view(qz)]
     1362                    $_arcball quaternion $q
     1363                    SendCmd "camera orient $q"
    13861364                }
    13871365                "zoom" {
    1388                     set _view($who) $_settings($this-$who)
    13891366                    SendCmd "camera zoom $_view(zoom)"
    13901367                }
Note: See TracChangeset for help on using the changeset viewer.