<font size="2"><font face="verdana,sans-serif">I have found a solution, following a suggestion here: <a href="http://vtk.1045678.n5.nabble.com/Updating-color-transfer-function-for-GPU-volume-td3312776.html">http://vtk.1045678.n5.nabble.com/Updating-color-transfer-function-for-GPU-volume-td3312776.html</a></font></font><div>

<font size="2"><font face="verdana,sans-serif">I modified the code to following:</font></font></div><div><font size="2"><font face="verdana,sans-serif"><div><br></div><div>void MainWindow::on_TF_chosen(QAction *action)</div>

<div>{</div><div>    if (volume) //volume is loaded and set up</div><div>    {</div><div>        volume-&gt;SetProperty( tf[action-&gt;data().toInt()] );</div><div>        volume-&gt;GetProperty()-&gt;GetRGBTransferFunction()-&gt;Modified();</div>

<div>        volume-&gt;GetProperty()-&gt;GetScalarOpacity()-&gt;Modified();</div><div>        vis-&gt;GetRenderWindow()-&gt;Render();</div><div>    }</div><div>}</div><div><br></div><div>That is, I just added calls to modified() to color and opacity transfer functions.</div>

</font></font><br><div class="gmail_quote">2011/2/7 Dženan Zukić <span dir="ltr">&lt;<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<font size="2"><font face="verdana,sans-serif">Hi all,</font></font><div><font size="2"><font face="verdana,sans-serif"><br></font></font></div><div><font size="2"><font face="verdana,sans-serif">I have the following menu handler:</font></font></div>


<div><font size="2"><div style="font-family:verdana, sans-serif"><br></div><div><font face="&#39;courier new&#39;, monospace">void MainWindow::on_TF_chosen(QAction *action)</font></div><div><font face="&#39;courier new&#39;, monospace">{</font></div>


<div><font face="&#39;courier new&#39;, monospace">    if (volume) //volume is loaded and set up</font></div><div><font face="&#39;courier new&#39;, monospace">    {</font></div>
<div><font face="&#39;courier new&#39;, monospace">        volume-&gt;SetProperty( tf[action-&gt;data().toInt()] );</font></div><div><font face="&#39;courier new&#39;, monospace">        vis-&gt;GetRenderWindow()-&gt;Render();</font></div>


<div><font face="&#39;courier new&#39;, monospace">    }</font></div><div><font face="&#39;courier new&#39;, monospace">}</font></div><div style="font-family:verdana, sans-serif">
<br></div><div><font face="&#39;courier new&#39;, monospace">tf</font><span style="font-family:verdana, sans-serif"> is an array of </span><font face="&#39;courier new&#39;, monospace">vtkVolumeProperty*</font><font face="verdana, sans-serif">s, containing combinations of color and opacity transfer functions. However, when transfer function is changed with this procedure, the result is not what I expect: transfer functions are either not changed, or they are changed to something I didn&#39;t specify.</font></div>


<div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">Is there some call missing here, something like &quot;UpdateTransferFunctions&quot;?</font></div>
<div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">This is the code from form constructor:</font></div><div><font face="verdana, sans-serif"><br>
</font></div><div><div><div><font face="&#39;courier new&#39;, monospace">//manually create transfer functions</font></div><div><font face="&#39;courier new&#39;, monospace">tf[0] = vtkVolumeProperty::New();</font></div>


<div><font face="&#39;courier new&#39;, monospace">vtkPiecewiseFunction *opacityFun0 = vtkPiecewiseFunction::New();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[0]-&gt;SetScalarOpacity( opacityFun0 );</font></div>


<div><font face="&#39;courier new&#39;, monospace">opacityFun0-&gt;AddPoint(0, 0);</font></div><div><font face="&#39;courier new&#39;, monospace">opacityFun0-&gt;AddPoint(255, 0 );</font></div>
<div><font face="&#39;courier new&#39;, monospace">tf[0]-&gt;ShadeOn();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[0]-&gt;SetScalarOpacityUnitDistance(0.8919);</font></div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><font face="&#39;courier new&#39;, monospace">tf[1] = vtkVolumeProperty::New();</font></div><div><font face="&#39;courier new&#39;, monospace">vtkColorTransferFunction *colorFun1 = vtkColorTransferFunction::New();</font></div>


<div><font face="&#39;courier new&#39;, monospace">vtkPiecewiseFunction *opacityFun1 = vtkPiecewiseFunction::New();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[1]-&gt;SetColor( colorFun1 );</font></div>


<div><font face="&#39;courier new&#39;, monospace">tf[1]-&gt;SetScalarOpacity( opacityFun1 );</font></div><div><font face="&#39;courier new&#39;, monospace">tf[1]-&gt;SetInterpolationTypeToLinear();</font></div>
<div><font face="&#39;courier new&#39;, monospace">colorFun1-&gt;AddRGBPoint( 0, .55, .75, .85 );</font></div><div><font face="&#39;courier new&#39;, monospace">colorFun1-&gt;AddRGBPoint( 80, .88, .60, .29 );</font></div>


<div><font face="&#39;courier new&#39;, monospace">opacityFun1-&gt;AddPoint(0, 0);</font></div><div><font face="&#39;courier new&#39;, monospace">opacityFun1-&gt;AddPoint(80, .5 );</font></div>
<div><font face="&#39;courier new&#39;, monospace">tf[1]-&gt;ShadeOn();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[1]-&gt;SetScalarOpacityUnitDistance(0.8919);</font></div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><font face="&#39;courier new&#39;, monospace">tf[2] = vtkVolumeProperty::New();</font></div><div><font face="&#39;courier new&#39;, monospace">vtkColorTransferFunction *colorFun2 = vtkColorTransferFunction::New();</font></div>


<div><font face="&#39;courier new&#39;, monospace">vtkPiecewiseFunction *opacityFun2 = vtkPiecewiseFunction::New();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[2]-&gt;SetColor( colorFun2 );</font></div>


<div><font face="&#39;courier new&#39;, monospace">tf[2]-&gt;SetScalarOpacity( opacityFun2 );</font></div><div><font face="&#39;courier new&#39;, monospace">tf[2]-&gt;SetInterpolationTypeToLinear();</font></div>
<div><font face="&#39;courier new&#39;, monospace">colorFun2-&gt;AddRGBPoint( 0, .55, .9, .5 );</font></div><div><font face="&#39;courier new&#39;, monospace">colorFun2-&gt;AddRGBPoint( 160, .88, .1, .1 );</font></div>
<div><font face="&#39;courier new&#39;, monospace">opacityFun2-&gt;AddPoint(0, 0);</font></div><div><font face="&#39;courier new&#39;, monospace">opacityFun2-&gt;AddPoint(160, .6 );</font></div>
<div><font face="&#39;courier new&#39;, monospace">tf[2]-&gt;ShadeOn();</font></div><div><font face="&#39;courier new&#39;, monospace">tf[2]-&gt;SetScalarOpacityUnitDistance(0.8919);</font></div>
</div><div style="font-family:verdana, sans-serif"><br></div><div style="font-family:verdana, sans-serif">Thanks,</div><div style="font-family:verdana, sans-serif">Dženan</div></div></font></div>
</blockquote></div><br></div>