<p dir="ltr">Den 8 mars 2017 2:31 em skrev "Simon ESNEAULT" <<a href="mailto:simon.esneault@gmail.com">simon.esneault@gmail.com</a>>:<br>
><br>
> Same here, for the still rendering I use the minimal spacing value in all 3 directions divided by 2 (something to respect Shannon theorem but I'm not sure if it's relevant here ...)<br>
> During interaction I ended up hacking vtkOpenGLGPUVolumeRayCastMapper::ComputeReductionFactor() method to compute a sampling distance that really honor the wanted FPS. That make it easier to ensure a target FPS<br>
><br>
> Here is the diff from VTK 7.1 release</p>
<p dir="ltr">Thanks for sharing. In my case what I found was that the default computation was too aggressive in reducing the quality. At least it looked/felt like that.</p>
<p dir="ltr">I also know that adding support for respecting the image sample distance is on the radar for the VTK devs (see recent post by me on vtk-developers, I'm on my phone so don't have it handy atm).</p>
<p dir="ltr">Elvis</p>
<p dir="ltr">><br>
> //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
> --- C:/VTK-7.1.0/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx Mon Nov 14 19:58:01 2016<br>
> +++ C:/VTK-7.1.0/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx Wed Mar 08 14:21:13 2017<br>
> @@ -2116,26 +2116,9 @@<br>
>    else<br>
>    {<br>
>      input->GetSpacing(this->CellSpacing);<br>
> -    vtkMatrix4x4* worldToDataset = vol->GetMatrix();<br>
> -    double minWorldSpacing = VTK_DOUBLE_MAX;<br>
> -    int i = 0;<br>
> -    while (i < 3)<br>
> -    {<br>
> -      double tmp = worldToDataset->GetElement(0,i);<br>
> -      double tmp2 = tmp * tmp;<br>
> -      tmp = worldToDataset->GetElement(1,i);<br>
> -      tmp2 += tmp * tmp;<br>
> -      tmp = worldToDataset->GetElement(2,i);<br>
> -      tmp2 += tmp * tmp;<br>
> -<br>
> -      // We use fabs() in case the spacing is negative.<br>
> -      double worldSpacing = fabs(this->CellSpacing[i] * sqrt(tmp2));<br>
> -      if(worldSpacing < minWorldSpacing)<br>
> -      {<br>
> -        minWorldSpacing = worldSpacing;<br>
> -      }<br>
> -      ++i;<br>
> -    }<br>
> +     // Approximate Shannon -> half the miniaml spacing<br>
> +    double minWorldSpacing = std::min(std::min(this->CellSpacing[0],<br>
> +                             this->CellSpacing[1]),this->CellSpacing[1]) / 2.;<br>
>  <br>
>      // minWorldSpacing is the optimal sample distance in world space.<br>
>      // To go faster (reduceFactor<1.0), we multiply this distance<br>
> @@ -3113,7 +3096,6 @@<br>
>  <br>
>    if ( this->TimeToDraw )<br>
>    {<br>
> -    double oldFactor = this->ReductionFactor;<br>
>  <br>
>      double timeToDraw;<br>
>      if (allocatedTime < 1.0)<br>
> @@ -3137,30 +3119,17 @@<br>
>        timeToDraw = 10.0;<br>
>      }<br>
>  <br>
> -    double fullTime = timeToDraw / this->ReductionFactor;<br>
> -    double newFactor = allocatedTime / fullTime;<br>
> -<br>
> -    // Compute average factor<br>
> -    this->ReductionFactor = (newFactor + oldFactor)/2.0;<br>
> -<br>
> -    // Discretize reduction factor so that it doesn't cause<br>
> -    // visual artifacts when used to reduce the sample distance<br>
> -    this->ReductionFactor = (this->ReductionFactor > 1.0) ? 1.0 :<br>
> -                              (this->ReductionFactor);<br>
> -<br>
> -    if (this->ReductionFactor < 0.20)<br>
> +    if ( timeToDraw == BigTimeToDraw )<br>
>      {<br>
> -      this->ReductionFactor = 0.10;<br>
> +      this->ReductionFactor = 1;<br>
>      }<br>
> -    else if (this->ReductionFactor < 0.50)<br>
> -    {<br>
> -      this->ReductionFactor = 0.20;<br>
> -    }<br>
> -    else if (this->ReductionFactor < 1.0)<br>
> +    else<br>
>      {<br>
> -      this->ReductionFactor = 0.50;<br>
> +      double l_wanted_fps = 1. / ( allocatedTime * 3. );<br>
> +      double l_current_fps = 1. / timeToDraw;<br>
> +      this->ReductionFactor *= l_current_fps / l_wanted_fps;<br>
> +      this->ReductionFactor = vtkMath::Round( this->ReductionFactor * 50. ) / 50.;<br>
>      }<br>
> -<br>
>      // Clamp it<br>
>      if ( 1.0/this->ReductionFactor > this->MaximumImageSampleDistance )<br>
>      {<br>
> //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
><br>
><br>
> Simon<br>
><br>
> 2017-03-08 14:04 GMT+01:00 Elvis Stansvik <<a href="mailto:elvis.stansvik@orexplore.com">elvis.stansvik@orexplore.com</a>>:<br>
>><br>
>> 2017-03-08 11:16 GMT+01:00 Simon ESNEAULT <<a href="mailto:simon.esneault@gmail.com">simon.esneault@gmail.com</a>>:<br>
>> > Hello Alvaro,<br>
>> ><br>
>> > That's real good news to hear (about the down-sampling in X and Y), I find<br>
>> > it really difficult to tweak volume rendering only with sample distance,<br>
>> > especially during interaction.<br>
>> > Has the development began already ? Is there some branche where we can test<br>
>> > that feature ?<br>
>> ><br>
>> > Also in that case would it be possible to add a final "gaussian smoothing<br>
>> > pass" or equivalent only on the 2D generated image (maybe only as an option)<br>
>> > ? I look like it is the case with FixedPointVolumeraycastMapper, the image<br>
>> > looks a bit blurred but sometimes it helps to see the structures<br>
>><br>
>> I'm also very interested in this. I'm using vtkGPUVolumeRayCastMapper,<br>
>> and I'm currently turning off the automatic adjustment of sample<br>
>> distance during interaction and resorted to doing my own simpler<br>
>> adjustment. I'm simply quadrupling the sample distance during<br>
>> interaction (for still rendering I use<br>
>> (spacingX+spacingY+spacingZ)/6). I'd love to have another quality<br>
>> controlling knob to turn.<br>
>><br>
>> Is there a MR up for it already? Will it be in 7.2?<br>
>><br>
>> Elvis<br>
>><br>
>> ><br>
>> > Thanks<br>
>> > Simon<br>
>> ><br>
>> ><br>
>> > 2017-03-06 18:17 GMT+01:00 Alvaro Sanchez <<a href="mailto:alvaro.sanchez@kitware.com">alvaro.sanchez@kitware.com</a>>:<br>
>> >><br>
>> >> Hi Shark,<br>
>> >><br>
>> >> unfortunately there is no current plan of porting vtkVolumeTextureMapper3D<br>
>> >> to OpenGL2<br>
>> >> , as far as I know.  We will soon however support image down sampling in X<br>
>> >> and Y which<br>
>> >> should serve as additional knobs to tweak the performance of<br>
>> >> GPURayCastMapper in<br>
>> >> OpenGL2 (only sample distance can be currently adjusted).<br>
>> >><br>
>> >> Could you provide more detail on the size of the dataset you are rendering<br>
>> >> and your GPU<br>
>> >> specs?<br>
>> >><br>
>> >> Thanks,<br>
>> >> Álvaro<br>
>> >><br>
>> >> On Mon, Mar 6, 2017 at 10:30 AM, Shark <<a href="mailto:m.nunes@fratoria.com">m.nunes@fratoria.com</a>> wrote:<br>
>> >>><br>
>> >>> Hello,<br>
>> >>><br>
>> >>> I have been having some issues with vtkVolumeTextureMapper3D. I see it<br>
>> >>> has<br>
>> >>> been deprecated, however it is still available if I use the old openGL.<br>
>> >>><br>
>> >>> Since for software rendering with texture mapping is much faster than ray<br>
>> >>> casting, I would like to know if you are planning to have a Volume<br>
>> >>> Texture<br>
>> >>> Mapper for openGL 2, or if there is actually a new one that I am not able<br>
>> >>> to<br>
>> >>> find.<br>
>> >>><br>
>> >>> Best regards,<br>
>> >>> Shark<br>
>> >>><br>
>> >>><br>
>> >>><br>
>> >>><br>
>> >>> --<br>
>> >>> View this message in context:<br>
>> >>> <a href="http://vtk.1045678.n5.nabble.com/vtkVolumeTextureMapper3D-in-VTK-7-1-tp5742368.html">http://vtk.1045678.n5.nabble.com/vtkVolumeTextureMapper3D-in-VTK-7-1-tp5742368.html</a><br>
>> >>> Sent from the VTK - Users mailing list archive at Nabble.com.<br>
>> >>> _______________________________________________<br>
>> >>> Powered by <a href="http://www.kitware.com">www.kitware.com</a><br>
>> >>><br>
>> >>> Visit other Kitware open-source projects at<br>
>> >>> <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>
>> >>><br>
>> >>> Please keep messages on-topic and check the VTK FAQ at:<br>
>> >>> <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>> >>><br>
>> >>> Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers">http://markmail.org/search/?q=vtkusers</a><br>
>> >>><br>
>> >>> Follow this link to subscribe/unsubscribe:<br>
>> >>> <a href="http://public.kitware.com/mailman/listinfo/vtkusers">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >> --<br>
>> >> Alvaro Sanchez<br>
>> >> Kitware, Inc.<br>
>> >> Senior R&D Engineer<br>
>> >> 21 Corporate Drive<br>
>> >> Clifton Park, NY 12065-8662<br>
>> >> Phone: 518-881-4901<br>
>> >><br>
>> >> _______________________________________________<br>
>> >> Powered by <a href="http://www.kitware.com">www.kitware.com</a><br>
>> >><br>
>> >> Visit other Kitware open-source projects at<br>
>> >> <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>
>> >><br>
>> >> Please keep messages on-topic and check the VTK FAQ at:<br>
>> >> <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>> >><br>
>> >> Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers">http://markmail.org/search/?q=vtkusers</a><br>
>> >><br>
>> >> Follow this link to subscribe/unsubscribe:<br>
>> >> <a href="http://public.kitware.com/mailman/listinfo/vtkusers">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>> >><br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> > ------------------------------------------------------------------<br>
>> > Simon Esneault<br>
>> > Rennes, France<br>
>> > ------------------------------------------------------------------<br>
>> ><br>
>> > _______________________________________________<br>
>> > Powered by <a href="http://www.kitware.com">www.kitware.com</a><br>
>> ><br>
>> > Visit other Kitware open-source projects at<br>
>> > <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>
>> ><br>
>> > Please keep messages on-topic and check the VTK FAQ at:<br>
>> > <a href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
>> ><br>
>> > Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers">http://markmail.org/search/?q=vtkusers</a><br>
>> ><br>
>> > Follow this link to subscribe/unsubscribe:<br>
>> > <a href="http://public.kitware.com/mailman/listinfo/vtkusers">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
>> ><br>
><br>
><br>
><br>
><br>
> -- <br>
> ------------------------------------------------------------------<br>
> Simon Esneault<br>
> Rennes, France<br>
> ------------------------------------------------------------------<br></p>