[vtk-developers] Lightweight transform?

David Gobbi dgobbi at imaging.robarts.ca
Thu Feb 6 17:41:38 EST 2003


Hi Chris,

When I modified the vtkTransform class back to add the Update() I made the
assumption that most people used a vtkTransform by building the transform
once and then applying it to a whole bunch of points (or uploading the
matrix to OpenGL via the actor from whence OpenGL would apply it).
I would be very interested to see a chunk of your code that demonstrates
how you are using the vtkTransform.

The 'Legacy Hack' warning occurs if you do something like this:
  transform->GetMatrix()->SetElement(i,j,val);
because you aren't allowed to directly change the transform's matrix
(for the same reason that you shouldn't directly change the vtkDataArray
inside a vtk data set that is part of a pipeline).

If the Identity(), Translate() etc. methods are too slow for your
application, you can subclass a new "vtkSimpleTransform" class
from the vtkLinearTransform class.

Regards,
 - David

-- 
  David Gobbi, MSc                dgobbi at imaging.robarts.ca
  Advanced Imaging Research Group
  Robarts Research Institute, University of Western Ontario

On Thu, 6 Feb 2003, Volpe, Christopher R (Research) wrote:

> I have a need for a high-performance lightweight transform object, specifically, one that bypasses
> all of the Input and Concatenation stuff, and which has no need, therefore, for an Update call. I
> just want to be able to perform all the basic operations that vtkTransform provides (Rotate,
> Translate, etc), but as efficiently as possible. (We have an application that requires very high
> performance, and we've determined via Rational Quantify that an excessive amount of time is spent in
> some of the internal transform methods that get invoked from say, Identity(), and numerous others
> common methods.)
>
> At first I thought I'd subclass vtkTransform, but there are a number of methods in the whole
> transform hierarchy that are not declared virtual, and therefore overriding them is not possible,
> unless I also override the whole transitive-closure of upper-hierarchy methods that use them, which
> would make things inconvenient. So before I go cutting and pasting a Whole Lotta Code from various
> portions in the hierarchy into a new class, I thought I'd see if there's a simpler and more elegant
> approach available, perhaps some undocumented feature of sorts that could be harnessed. (I keep
> seeing references to some "Legacy Hack", but it's not clear to me if that's in any way relevant.)
>
> Thanks in advance for any insights.
>
> Chris
> > GE Global Research Center
> > ___________________________________________________________________________________________________
> > _______________________________________________
> >
> Dr. Christopher R. Volpe, Ph.D.
> Computer Scientist
> Visualization and Computer Vision Lab
> Imaging Technologies
> Bldg KW, Room C215
> P.O. Box 8, Schenectady, NY 12301
>
> (518) 387-7766, Dial Comm: 8*833-7766, Fax: (518) 387-6981
> e-mail: volpecr at research.ge.com    web: http://www.crd.ge.com/~volpecr
>
>
>
>
> begin 600 winmail.dat
> M>)\^(B$5`0:0"``$```````!``$``0>0!@`(````Y`0```````#H``$(@`<`
> M&````$E032Y-:6-R;W-O9G0 at 36%I;"Y.;W1E`#$(`06``P`.````TP<"``8`
> M$``D`!X`!``X`0$@@`,`#@```-,'`@`&`!``)``=``0`-P$!"8`!`"$````W
> M-S0S1$5&-S0V-3 at X0S0V.4$P03A$-S$U0C8W13(S10`Y!P$$@`$`%P```$QI
> M9VAT=V5I9VAT('1R86YS9F]R;3\`NP@!#8`$``(````"``(``0.0!@"P"P``
> M+P````,`WC^O;P```P`!;B`````#`#V`""`&``````#`````````1@````!2
> MA0``?6X!`!X`/H`((`8``````,````````!&`````%2%```!````!````#DN
> M,``+`.J!""`&``````#`````````1@`````&A0````````,`/X`((`8`````
> M`,````````!&``````&%````````"P`[@`@@!@``````P````````$8`````
> M`X4````````+`$"`""`&``````#`````````1@`````.A0````````,`/(`(
> M(`8``````,````````!&`````!"%`````````P!!@`@@!@``````P```````
> M`$8`````$84````````#`$*`""`&``````#`````````1@`````8A0``````
> M``(!"1`!````+08``"D&``"$"0``3%I&=7I?L&T#``H`<F-P9S$R-18R`/@+
> M8&X.$#`S,T\!]P*D`^,"`&-H"L!S\&5T,"`'$P*#`%`$Y7$"`'!R<0Y0$-8.
> M,#5_!@`%`P*#$O$0=1+"$6DSNP/&$7 at T%)L0SP*2-0/&FP7K`H!]"H`(R"`[
> M"6_W$Y$;TPX at .`FT'7(*,AUQ7QO3$Y$)NP*`"H%V")!WRFL+@&070'5C`%`+
> M`Q$+M2!)(!A0=F4 at R&$@;@G at 9"`"$`7`@2)P:&EG:"UP!)`K(N$#@6,B4&PC
> M471W8F4D8B!T<@!Q(\(@"&]B:@60="P@<YTCD&,&D`W@!T!L>280FP(@(E!T
> M&%`%0&)Y"K!O!!`'D2:Q):!F)T$B4$GX;G!U!4``<"+`"%`D$#<G<`GP)W!I
> M`B`F('1U]P$@)A`I0G<C0!A`(A$$('QN;R*#)A`HH0EP(N%E1R80(N,#H%5P
> M9"G!(.4FHBXA\6IU*F`K``!P^R3Q*\!B(E$"8"<Q*\`CE?LH(RBB8B?0#>`E
> MH".1*@/#!"`G4W9T:U0E)Q+`[F\@4`$`!"`H"``!D"G0GR80,F,+8#/B$3!C
> M*280_F(I$@0@`1$-X`B0`C`FT&DU8G!O!!!I+V$N$"C.5R)0(B0#H&%P"U`F
> MD<<J$R=3"7!Q=6D)<`0@?2)`<C9`(T(OQB0"*K5E_B<B00$`*=`CX`N`(K$@
> M4(TB<%(J`P=`(%%U+K'/!I`V0"=3`Y%E>"0 at -K&[(D($8'4NP2AR!W$@!`#_
> M)B(NP0N`)B`#<")0*'4+@'\[P3SB)1@'@"=0!'`QQ6?C$3!`079O:R*R`V$F
> M(!IA)N%)`0`]471Y*/,U`2E";G4'@`- at +F`EH'<L0 at 0@!:!M!&`#H$)U+NXI
> M"N,*A`J`005`)H`1$)<%0"(`0I%U)-)))R+`\'-U8F,+8`01,CHU%/\L0R)@
> M2\)%DB\@!<`H<4)V_T!1**(K$`;P)S$E)R-`,5'^<AA`/99+P2NP!4`%@0M@
> M[PEQ/$$`(#TP;"JT+$<EH.LYD0409`N`9RB2)9`_P?]0$C:6)A`_`"]P!!$B
> M``=`OT"`4D8G,DW+1/`^D2U*$+<VH`AP0+-U.``$D"U.Z%]">RY at 5;-+(2L4
> M=PA@;/\BP`#`0\`G05+!35(%H$.0=PGP-?(N$%,O`E(#(@!G_2O`8RD0*A!2
> MT2E")\%=Q/0 at 5TWS3#.P`9`I<56A_40#=@K`*B!&`3:0`"`QD_]-=4[H04$K
> MP")R!^!*$T2!WTD<">`_L"B#"7`G*!$F(+\'<`M03)$I0 at 1@2\%E+W#^9RZR
> M-_$#8`#0*U`B,`MP[PM at 5!,CD1A0<#_10)(_`+QD;UV0!X!!42+!92=P_U=E
> M0(``(#'%!:!:PB\A&%$[(I`GX60W$2(`0\!E</]D8E+"+'$L8201,<$KP$"#
> M5"),9K%C-D!(`-!K_B(U%$3P93%0$DH0:@`%P/\N\3^2*((G<&4Q0%$`<#9`
> MORZ at -D`)<"]P8%!<82E'NM)4&%!N:W&T9'+!)"'_+/1B4@"0)'%'<$>Z"-``
> M0>\`H!(##D`I<&@%$!"P=H9_#E`,,#,!*=`E\!1D(=%'YD5XU at +1,R`#,7G!
> M"0#W,-`)4'JB4@>0<)$K07KB>D-IDG)ZE'CI=H86$&+%`4!I"\(T(%]_7X!O
> M_X%_ at H^#GX2OA;^&SX=G=G=C`4!Z&',Q-T>U%S`@O$1R+A`487>T+O!P+%%[
> M!_`N$%8&\".0BE(F$%#X:"Y$=@!]Y at A09:`I$-],D1/0-?*+04>T5 at 0`42'Y
> MBE)I>BH$*42-M8\1*B)63`&@1Z5)`,!G4L)4_060:"NP"0"20`>0B?854.9"
> M6M!2X$M7)A`(`$0A&$,R,1EP1\-0+D_!+A!";W@@."80$]`?*+`BD"7P=(`F
> MX4Y9(!D.(#,P(1-']B at U,0(X1Y`S.#<M-S<T-C8F$$0',9!B;3H9E?`J.`]@
> MF-5&87CCF="82#8Y.!(1E06*TG]7``#``Q"9T$. at C"$%`$"OBE(Y47P#BM(N
> M0T`N1J'W>L!ZP"2 at 8IG0=M-:P"(0P0)`<#HO+W>@H)[@\PL at GK4O?ITUB--:
> MP"NPOR*0F^D+Q78J1\,:\0"E,````!X`<``!````%P```$QI9VAT=V5I9VAT
> M('1R86YS9F]R;3\```L``@`!`````P#]/^0$```#``E9`P````(!<0`!````
> M%@````'"SB?;_N`I:4"12T\0I?V=C2^84MT``$``.0#0QI//)\["`0,`\3\)
> M!```'@`Q0`$````2````0TA225-43U!(15(N5D],4$4````#`!I``````!X`
> M,$`!````$@```$-(4DE35$]02$52+E9/3%!%`````P`90``````#`"8`````
> M``,`-@```````P"`$/____\+`/(0`0````(!1P`!````-@```&,]55,[83U-
> M05)+-#`P.W`]1T4[;#U834(P,D-21$=%+3`S,#(P-C(Q,S8S,%HM,S0T.34W
> M`````@'Y/P$```!U`````````-RG0,C`0A`:M+D(`"LOX8(!`````````"]/
> M/4=%+T]5/4-21$Y)4TM!655.02]#3CU214-)4$E%3E13+T-./4580TA!3D=%
> M($-,245.5"`H15A#,#%#4D1'12DO0TX]0TA225-43U!(15(N5D],4$4`````
> M'@#X/P$````;````5F]L<&4L($-H<FES=&]P:&5R(%(@*$-21"D``!X`.$`!
> M````$@```$-(4DE35$]02$52+E9/3%!%`````@'[/P$```!U`````````-RG
> M0,C`0A`:M+D(`"LOX8(!`````````"]//4=%+T]5/4-21$Y)4TM!655.02]#
> M3CU214-)4$E%3E13+T-./4580TA!3D=%($-,245.5"`H15A#,#%#4D1'12DO
> M0TX]0TA225-43U!(15(N5D],4$4`````'@#Z/P$````;````5F]L<&4L($-H
> M<FES=&]P:&5R(%(@*$-21"D``!X`.4`!````$@```$-(4DE35$]02$52+E9/
> M3%!%````0``',+XCC\\GSL(!0``(,.+[8,\GSL(!'@`]``$````!````````
> M`!X`'0X!````%P```$QI9VAT=V5I9VAT('1R86YS9F]R;3\``!X`-1`!````
> M-@```#Q&0D4Y,$1&0S(T,$)!-30Q0C,X030S1C,Y.3$S03$V1#`U049%0D)%
> M0'AM8C`R8W)D9V4^````"P`I```````+`",```````,`!A`:0?M6`P`'$%4%
> M```#`!`0``````,`$1``````'@`($`$```!E````24A!5D5!3D5%1$9/4D%(
> M24=(+5!%4D9/4DU!3D-%3$E'2%1714E'2%144D%.4T9/4DU/0DI%0U0L4U!%
> M0TE&24-!3$Q9+$].151(051"65!!4U-%4T%,3$]&5$A%24Y0551!3@`````"
> M`7\``0```#8````\1D)%.3!$1D,R-#!"034T,4(S.$$T,T8S.3DQ,T$Q-D0P
> 8-4%&14)"14!X;6(P,F-R9&=E/@```"TA
> `
> end
> _______________________________________________
> vtk-developers mailing list
> vtk-developers at public.kitware.com
> http://public.kitware.com/mailman/listinfo/vtk-developers
>




More information about the vtk-developers mailing list