vtkChartXY lines not visible when using logarithmic x axis

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

vtkChartXY lines not visible when using logarithmic x axis

VTK - Dev mailing list
Hi,

Due to spam reasons the bug tracker's user login is disabled right now.
One should send bug reports to the vtk's user mailing list, which I did
twice. My bug report was totally ignored. That's why I send it here
again. Hopefully someone can finally create a ticket in the bug tracker.
Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two
days ago to the vtkUsers mailing list without receiving any answer. The
bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running
Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc).
On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04
machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x
axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing
more special. In the compiled application I start zooming into the chart
using the mouse wheel, making sure I always have a line displayed in the
view. At some zoom level this line just disappears. At the zoom level
the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see
http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added
after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
     vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY
 >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to
visualize the bug.


Please contact me if you need more information. I can also provide
images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
     // Create a table with some points in it
     vtkSmartPointer<vtkTable> table =
       vtkSmartPointer<vtkTable>::New();

     vtkSmartPointer<vtkFloatArray> arrX =
       vtkSmartPointer<vtkFloatArray>::New();
     arrX->SetName("X Axis");
     table->AddColumn(arrX);

     vtkSmartPointer<vtkFloatArray> arrC =
       vtkSmartPointer<vtkFloatArray>::New();
     arrC->SetName("Cosine");
     table->AddColumn(arrC);

     vtkSmartPointer<vtkFloatArray> arrS =
       vtkSmartPointer<vtkFloatArray>::New();
     arrS->SetName("Sine");
     table->AddColumn(arrS);

     // Fill in the table with some example values
     int numPoints = 69;
     float inc = 7.5 / (numPoints-1);
     table->SetNumberOfRows(numPoints);
     for (int i = 0; i < numPoints; ++i)
     {
       table->SetValue(i, 0, i * inc);
       table->SetValue(i, 1, cos(i * inc));
       table->SetValue(i, 2, sin(i * inc));
     }

     // Set up the view
     vtkSmartPointer<vtkContextView> view =
       vtkSmartPointer<vtkContextView>::New();
     view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

     // Add multiple line plots, setting the colors etc
     vtkSmartPointer<vtkChartXY> chart =
       vtkSmartPointer<vtkChartXY>::New();
     chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
     view->GetScene()->AddItem(chart);
     vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
     line->SetInput(table, 0, 1);
#else
     line->SetInputData(table, 0, 1);
#endif
     line->SetColor(0, 255, 0, 255);
     line->SetWidth(1.0);
     line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
     line->SetInput(table, 0, 2);
#else
     line->SetInputData(table, 0, 2);
#endif
     line->SetColor(255, 0, 0, 255);
     line->SetWidth(5.0);

     // For dotted line, the line type can be from 2 to 5 for different
dash/dot
     // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
     line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
     // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
     //  machines with built-in Intel HD graphics card...)

     //view->GetRenderWindow()->SetMultiSamples(0);

     // Start interactor
     view->GetInteractor()->Initialize();
     view->GetInteractor()->Start();

     return EXIT_SUCCESS;
}
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

Andrew Maclean-3
Hi Hagen,
  I just tested your example and I get similar behaviou using an NVIDIA Video card, OpenGL2,  VS2015 and the VTK Master.
 
I can zoom in and, at some point the line disappears, but zooming out immediately restores the line.

It seeme to me that once a certain zoom level is reached the line is not drawn, however zooming out restores it.

Attached are two pngs showing the effect.When the line disappears it should still be visible as the scales on the axes have only changed slightly.

Andrew

---------- Forwarded message ----------
From: "Hagen Mölle" <[hidden email]>
To: [hidden email]
Cc: 
Date: Mon, 25 Jul 2016 10:14:21 +0200
Subject: [vtk-developers] vtkChartXY lines not visible when using logarithmic x axis
Hi,

Due to spam reasons the bug tracker's user login is disabled right now. One should send bug reports to the vtk's user mailing list, which I did twice. My bug report was totally ignored. That's why I send it here again. Hopefully someone can finally create a ticket in the bug tracker. Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two days ago to the vtkUsers mailing list without receiving any answer. The bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04 machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more special. In the compiled application I start zooming into the chart using the mouse wheel, making sure I always have a line displayed in the view. At some zoom level this line just disappears. At the zoom level the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true); view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to visualize the bug.


Please contact me if you need more information. I can also provide images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
    // Create a table with some points in it
    vtkSmartPointer<vtkTable> table =
      vtkSmartPointer<vtkTable>::New();

    vtkSmartPointer<vtkFloatArray> arrX =
      vtkSmartPointer<vtkFloatArray>::New();
    arrX->SetName("X Axis");
    table->AddColumn(arrX);

    vtkSmartPointer<vtkFloatArray> arrC =
      vtkSmartPointer<vtkFloatArray>::New();
    arrC->SetName("Cosine");
    table->AddColumn(arrC);

    vtkSmartPointer<vtkFloatArray> arrS =
      vtkSmartPointer<vtkFloatArray>::New();
    arrS->SetName("Sine");
    table->AddColumn(arrS);

    // Fill in the table with some example values
    int numPoints = 69;
    float inc = 7.5 / (numPoints-1);
    table->SetNumberOfRows(numPoints);
    for (int i = 0; i < numPoints; ++i)
    {
      table->SetValue(i, 0, i * inc);
      table->SetValue(i, 1, cos(i * inc));
      table->SetValue(i, 2, sin(i * inc));
    }

    // Set up the view
    vtkSmartPointer<vtkContextView> view =
      vtkSmartPointer<vtkContextView>::New();
    view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    // Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY> chart =
      vtkSmartPointer<vtkChartXY>::New();
    chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
    view->GetScene()->AddItem(chart);
    vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 1);
#else
    line->SetInputData(table, 0, 1);
#endif
    line->SetColor(0, 255, 0, 255);
    line->SetWidth(1.0);
    line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 2);
#else
    line->SetInputData(table, 0, 2);
#endif
    line->SetColor(255, 0, 0, 255);
    line->SetWidth(5.0);

    // For dotted line, the line type can be from 2 to 5 for different dash/dot
    // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
    line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
    // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
    //  machines with built-in Intel HD graphics card...)

    //view->GetRenderWindow()->SetMultiSamples(0);

    // Start interactor
    view->GetInteractor()->Initialize();
    view->GetInteractor()->Start();

    return EXIT_SUCCESS;
}


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers



--
___________________________________________
Andrew J. P. Maclean

___________________________________________

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers


JustAfterLineDisappearance.PNG (36K) Download Attachment
JustBeforeLineDisappearance.PNG (47K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

VTK - Dev mailing list
Hi Andrew, Hi Mathieu,

That's exactly the behaviour I see. By the way I am using ATI/AMD video cards in my Windows/Linux machine.

!!!! UPDATE: The error also occurs when logarithmic x axis is not enabled. But you have to zoom in a lot more. See attached pictures. I am sorry for not realizing this earlier.


I am not that familiar with OpenGL. But I can imagine two things:

(1) Line is clipped
(2) If shaders are used to draw the line thickness it might be a floating point precision problem. Actually this could be the problem because the line thickness starts fluctuating at some point of zoom level before it finally disappears. See attached picture. The line thickness is about the half the original line thickness.


I hope this helps to fix the bug. One might also contact Marcus D. Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure if he is still responsible.

Hagen


On 26.07.2016 01:52, Andrew Maclean wrote:
Hi Hagen,
  I just tested your example and I get similar behaviou using an NVIDIA Video card, OpenGL2,  VS2015 and the VTK Master.
 
I can zoom in and, at some point the line disappears, but zooming out immediately restores the line.

It seeme to me that once a certain zoom level is reached the line is not drawn, however zooming out restores it.

Attached are two pngs showing the effect.When the line disappears it should still be visible as the scales on the axes have only changed slightly.

Andrew

---------- Forwarded message ----------
From: "Hagen Mölle" <[hidden email]>
To: [hidden email]
Cc: 
Date: Mon, 25 Jul 2016 10:14:21 +0200
Subject: [vtk-developers] vtkChartXY lines not visible when using logarithmic x axis
Hi,

Due to spam reasons the bug tracker's user login is disabled right now. One should send bug reports to the vtk's user mailing list, which I did twice. My bug report was totally ignored. That's why I send it here again. Hopefully someone can finally create a ticket in the bug tracker. Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two days ago to the vtkUsers mailing list without receiving any answer. The bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04 machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more special. In the compiled application I start zooming into the chart using the mouse wheel, making sure I always have a line displayed in the view. At some zoom level this line just disappears. At the zoom level the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true); view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to visualize the bug.


Please contact me if you need more information. I can also provide images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
    // Create a table with some points in it
    vtkSmartPointer<vtkTable> table =
      vtkSmartPointer<vtkTable>::New();

    vtkSmartPointer<vtkFloatArray> arrX =
      vtkSmartPointer<vtkFloatArray>::New();
    arrX->SetName("X Axis");
    table->AddColumn(arrX);

    vtkSmartPointer<vtkFloatArray> arrC =
      vtkSmartPointer<vtkFloatArray>::New();
    arrC->SetName("Cosine");
    table->AddColumn(arrC);

    vtkSmartPointer<vtkFloatArray> arrS =
      vtkSmartPointer<vtkFloatArray>::New();
    arrS->SetName("Sine");
    table->AddColumn(arrS);

    // Fill in the table with some example values
    int numPoints = 69;
    float inc = 7.5 / (numPoints-1);
    table->SetNumberOfRows(numPoints);
    for (int i = 0; i < numPoints; ++i)
    {
      table->SetValue(i, 0, i * inc);
      table->SetValue(i, 1, cos(i * inc));
      table->SetValue(i, 2, sin(i * inc));
    }

    // Set up the view
    vtkSmartPointer<vtkContextView> view =
      vtkSmartPointer<vtkContextView>::New();
    view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    // Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY> chart =
      vtkSmartPointer<vtkChartXY>::New();
    chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
    view->GetScene()->AddItem(chart);
    vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 1);
#else
    line->SetInputData(table, 0, 1);
#endif
    line->SetColor(0, 255, 0, 255);
    line->SetWidth(1.0);
    line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 2);
#else
    line->SetInputData(table, 0, 2);
#endif
    line->SetColor(255, 0, 0, 255);
    line->SetWidth(5.0);

    // For dotted line, the line type can be from 2 to 5 for different dash/dot
    // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
    line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
    // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
    //  machines with built-in Intel HD graphics card...)

    //view->GetRenderWindow()->SetMultiSamples(0);

    // Start interactor
    view->GetInteractor()->Initialize();
    view->GetInteractor()->Start();

    return EXIT_SUCCESS;
}


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers



--
___________________________________________
Andrew J. P. Maclean

___________________________________________



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers


nonlogarihmic_justbeforelinedisappears.png (65K) Download Attachment
nonlogarithmic_justafterlinedisappears.png (47K) Download Attachment
linethickness_fluctuates.png (59K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

Andrew Maclean-3

Hi Hagen, Mathieu,

I agree with you, if I zoom in when the logarithmic axis is disabled, the thick line vanishes, however if you look carefully there is a very faint thin line. It may be (2) as you outline below.

Regards
   Andrew

Andrew Maclean


On 26 Jul 2016 5:02 pm, "Hagen Mölle" <[hidden email]> wrote:
Hi Andrew, Hi Mathieu,

That's exactly the behaviour I see. By the way I am using ATI/AMD video cards in my Windows/Linux machine.

!!!! UPDATE: The error also occurs when logarithmic x axis is not enabled. But you have to zoom in a lot more. See attached pictures. I am sorry for not realizing this earlier.


I am not that familiar with OpenGL. But I can imagine two things:

(1) Line is clipped
(2) If shaders are used to draw the line thickness it might be a floating point precision problem. Actually this could be the problem because the line thickness starts fluctuating at some point of zoom level before it finally disappears. See attached picture. The line thickness is about the half the original line thickness.


I hope this helps to fix the bug. One might also contact Marcus D. Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure if he is still responsible.

Hagen


On 26.07.2016 01:52, Andrew Maclean wrote:
Hi Hagen,
  I just tested your example and I get similar behaviou using an NVIDIA Video card, OpenGL2,  VS2015 and the VTK Master.
 
I can zoom in and, at some point the line disappears, but zooming out immediately restores the line.

It seeme to me that once a certain zoom level is reached the line is not drawn, however zooming out restores it.

Attached are two pngs showing the effect.When the line disappears it should still be visible as the scales on the axes have only changed slightly.

Andrew

---------- Forwarded message ----------
From: "Hagen Mölle" <[hidden email]>
To: [hidden email]
Cc: 
Date: Mon, 25 Jul 2016 10:14:21 +0200
Subject: [vtk-developers] vtkChartXY lines not visible when using logarithmic x axis
Hi,

Due to spam reasons the bug tracker's user login is disabled right now. One should send bug reports to the vtk's user mailing list, which I did twice. My bug report was totally ignored. That's why I send it here again. Hopefully someone can finally create a ticket in the bug tracker. Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two days ago to the vtkUsers mailing list without receiving any answer. The bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04 machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more special. In the compiled application I start zooming into the chart using the mouse wheel, making sure I always have a line displayed in the view. At some zoom level this line just disappears. At the zoom level the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true); view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to visualize the bug.


Please contact me if you need more information. I can also provide images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
    // Create a table with some points in it
    vtkSmartPointer<vtkTable> table =
      vtkSmartPointer<vtkTable>::New();

    vtkSmartPointer<vtkFloatArray> arrX =
      vtkSmartPointer<vtkFloatArray>::New();
    arrX->SetName("X Axis");
    table->AddColumn(arrX);

    vtkSmartPointer<vtkFloatArray> arrC =
      vtkSmartPointer<vtkFloatArray>::New();
    arrC->SetName("Cosine");
    table->AddColumn(arrC);

    vtkSmartPointer<vtkFloatArray> arrS =
      vtkSmartPointer<vtkFloatArray>::New();
    arrS->SetName("Sine");
    table->AddColumn(arrS);

    // Fill in the table with some example values
    int numPoints = 69;
    float inc = 7.5 / (numPoints-1);
    table->SetNumberOfRows(numPoints);
    for (int i = 0; i < numPoints; ++i)
    {
      table->SetValue(i, 0, i * inc);
      table->SetValue(i, 1, cos(i * inc));
      table->SetValue(i, 2, sin(i * inc));
    }

    // Set up the view
    vtkSmartPointer<vtkContextView> view =
      vtkSmartPointer<vtkContextView>::New();
    view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    // Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY> chart =
      vtkSmartPointer<vtkChartXY>::New();
    chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
    view->GetScene()->AddItem(chart);
    vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 1);
#else
    line->SetInputData(table, 0, 1);
#endif
    line->SetColor(0, 255, 0, 255);
    line->SetWidth(1.0);
    line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 2);
#else
    line->SetInputData(table, 0, 2);
#endif
    line->SetColor(255, 0, 0, 255);
    line->SetWidth(5.0);

    // For dotted line, the line type can be from 2 to 5 for different dash/dot
    // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
    line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
    // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
    //  machines with built-in Intel HD graphics card...)

    //view->GetRenderWindow()->SetMultiSamples(0);

    // Start interactor
    view->GetInteractor()->Initialize();
    view->GetInteractor()->Start();

    return EXIT_SUCCESS;
}


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers



--
___________________________________________
Andrew J. P. Maclean

___________________________________________



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

VTK - Dev mailing list
Hi Andrew, Hi Mathieu,

I can not see the line after it disappears. This might be a special feature of the open source radeon graphics driver under Linux.

Just for completeness one can easily see the line thickness fluctuation by zooming into the scene just right before the line disappears. At this zoom level just drag the scene using the left mouse button and move the mouse around.

In fact it would be very nice if this bug could be fixed at least when logarithmic x axis is enabled. Because when logarithmic x axis is enabled the error is visible after zooming in only a few steps.

Hagen

On 26.07.2016 10:57, Andrew Maclean wrote:

Hi Hagen, Mathieu,

I agree with you, if I zoom in when the logarithmic axis is disabled, the thick line vanishes, however if you look carefully there is a very faint thin line. It may be (2) as you outline below.

Regards
   Andrew

Andrew Maclean


On 26 Jul 2016 5:02 pm, "Hagen Mölle" <[hidden email]> wrote:
Hi Andrew, Hi Mathieu,

That's exactly the behaviour I see. By the way I am using ATI/AMD video cards in my Windows/Linux machine.

!!!! UPDATE: The error also occurs when logarithmic x axis is not enabled. But you have to zoom in a lot more. See attached pictures. I am sorry for not realizing this earlier.


I am not that familiar with OpenGL. But I can imagine two things:

(1) Line is clipped
(2) If shaders are used to draw the line thickness it might be a floating point precision problem. Actually this could be the problem because the line thickness starts fluctuating at some point of zoom level before it finally disappears. See attached picture. The line thickness is about the half the original line thickness.


I hope this helps to fix the bug. One might also contact Marcus D. Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure if he is still responsible.

Hagen


On 26.07.2016 01:52, Andrew Maclean wrote:
Hi Hagen,
  I just tested your example and I get similar behaviou using an NVIDIA Video card, OpenGL2,  VS2015 and the VTK Master.
 
I can zoom in and, at some point the line disappears, but zooming out immediately restores the line.

It seeme to me that once a certain zoom level is reached the line is not drawn, however zooming out restores it.

Attached are two pngs showing the effect.When the line disappears it should still be visible as the scales on the axes have only changed slightly.

Andrew

---------- Forwarded message ----------
From: "Hagen Mölle" <[hidden email]>
To: [hidden email]
Cc: 
Date: Mon, 25 Jul 2016 10:14:21 +0200
Subject: [vtk-developers] vtkChartXY lines not visible when using logarithmic x axis
Hi,

Due to spam reasons the bug tracker's user login is disabled right now. One should send bug reports to the vtk's user mailing list, which I did twice. My bug report was totally ignored. That's why I send it here again. Hopefully someone can finally create a ticket in the bug tracker. Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two days ago to the vtkUsers mailing list without receiving any answer. The bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04 machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more special. In the compiled application I start zooming into the chart using the mouse wheel, making sure I always have a line displayed in the view. At some zoom level this line just disappears. At the zoom level the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true); view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to visualize the bug.


Please contact me if you need more information. I can also provide images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
    // Create a table with some points in it
    vtkSmartPointer<vtkTable> table =
      vtkSmartPointer<vtkTable>::New();

    vtkSmartPointer<vtkFloatArray> arrX =
      vtkSmartPointer<vtkFloatArray>::New();
    arrX->SetName("X Axis");
    table->AddColumn(arrX);

    vtkSmartPointer<vtkFloatArray> arrC =
      vtkSmartPointer<vtkFloatArray>::New();
    arrC->SetName("Cosine");
    table->AddColumn(arrC);

    vtkSmartPointer<vtkFloatArray> arrS =
      vtkSmartPointer<vtkFloatArray>::New();
    arrS->SetName("Sine");
    table->AddColumn(arrS);

    // Fill in the table with some example values
    int numPoints = 69;
    float inc = 7.5 / (numPoints-1);
    table->SetNumberOfRows(numPoints);
    for (int i = 0; i < numPoints; ++i)
    {
      table->SetValue(i, 0, i * inc);
      table->SetValue(i, 1, cos(i * inc));
      table->SetValue(i, 2, sin(i * inc));
    }

    // Set up the view
    vtkSmartPointer<vtkContextView> view =
      vtkSmartPointer<vtkContextView>::New();
    view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    // Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY> chart =
      vtkSmartPointer<vtkChartXY>::New();
    chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
    view->GetScene()->AddItem(chart);
    vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 1);
#else
    line->SetInputData(table, 0, 1);
#endif
    line->SetColor(0, 255, 0, 255);
    line->SetWidth(1.0);
    line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 2);
#else
    line->SetInputData(table, 0, 2);
#endif
    line->SetColor(255, 0, 0, 255);
    line->SetWidth(5.0);

    // For dotted line, the line type can be from 2 to 5 for different dash/dot
    // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
    line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
    // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
    //  machines with built-in Intel HD graphics card...)

    //view->GetRenderWindow()->SetMultiSamples(0);

    // Start interactor
    view->GetInteractor()->Initialize();
    view->GetInteractor()->Start();

    return EXIT_SUCCESS;
}


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers



--
___________________________________________
Andrew J. P. Maclean

___________________________________________




_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

Mathieu Westphal
Hello

I indeed reproduce the problem, I will submit a bug report and ping Marcus to see if he knows what is going on.
http://www.paraview.org/Bug/view.php?id=16797

Regards,

Mathieu Westphal

On Tue, Jul 26, 2016 at 11:19 AM, Hagen Mölle <[hidden email]> wrote:
Hi Andrew, Hi Mathieu,

I can not see the line after it disappears. This might be a special feature of the open source radeon graphics driver under Linux.

Just for completeness one can easily see the line thickness fluctuation by zooming into the scene just right before the line disappears. At this zoom level just drag the scene using the left mouse button and move the mouse around.

In fact it would be very nice if this bug could be fixed at least when logarithmic x axis is enabled. Because when logarithmic x axis is enabled the error is visible after zooming in only a few steps.

Hagen


On 26.07.2016 10:57, Andrew Maclean wrote:

Hi Hagen, Mathieu,

I agree with you, if I zoom in when the logarithmic axis is disabled, the thick line vanishes, however if you look carefully there is a very faint thin line. It may be (2) as you outline below.

Regards
   Andrew

Andrew Maclean


On 26 Jul 2016 5:02 pm, "Hagen Mölle" <[hidden email]> wrote:
Hi Andrew, Hi Mathieu,

That's exactly the behaviour I see. By the way I am using ATI/AMD video cards in my Windows/Linux machine.

!!!! UPDATE: The error also occurs when logarithmic x axis is not enabled. But you have to zoom in a lot more. See attached pictures. I am sorry for not realizing this earlier.


I am not that familiar with OpenGL. But I can imagine two things:

(1) Line is clipped
(2) If shaders are used to draw the line thickness it might be a floating point precision problem. Actually this could be the problem because the line thickness starts fluctuating at some point of zoom level before it finally disappears. See attached picture. The line thickness is about the half the original line thickness.


I hope this helps to fix the bug. One might also contact Marcus D. Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure if he is still responsible.

Hagen


On 26.07.2016 01:52, Andrew Maclean wrote:
Hi Hagen,
  I just tested your example and I get similar behaviou using an NVIDIA Video card, OpenGL2,  VS2015 and the VTK Master.
 
I can zoom in and, at some point the line disappears, but zooming out immediately restores the line.

It seeme to me that once a certain zoom level is reached the line is not drawn, however zooming out restores it.

Attached are two pngs showing the effect.When the line disappears it should still be visible as the scales on the axes have only changed slightly.

Andrew

---------- Forwarded message ----------
From: "Hagen Mölle" <[hidden email]>
To: [hidden email]
Cc: 
Date: Mon, 25 Jul 2016 10:14:21 +0200
Subject: [vtk-developers] vtkChartXY lines not visible when using logarithmic x axis
Hi,

Due to spam reasons the bug tracker's user login is disabled right now. One should send bug reports to the vtk's user mailing list, which I did twice. My bug report was totally ignored. That's why I send it here again. Hopefully someone can finally create a ticket in the bug tracker. Thanks.

I want to report a bug for vtkChartXY. So I already send this Email two days ago to the vtkUsers mailing list without receiving any answer. The bug is not visible in the vtk bug tracker too. Thus I send the Email again.

Bug environment:
a) I am using VTK 6.2. I checked my test code on machines running Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On all these systems the bug is visible.
b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04 machine and compiled VTK 7.0 using OpenGL2 interface).

Bug description:

I am using vtkChartXY to display one line. I also enabled logarithmic x axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more special. In the compiled application I start zooming into the chart using the mouse wheel, making sure I always have a line displayed in the view. At some zoom level this line just disappears. At the zoom level the line disappears I did the following:

1. Zooming more into the chart the line will not appear again.
2. Zooming out twice (with mouse wheel) the line will reappear.

How to reproduce the bug:

I basically used the LinePlot example for vtkChartXY (see http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).

I added one line to the example code marked with *** (line was added after line 54 in example code).
I added the full code to the end of the Email.
---------------

// Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true); view->GetScene()->AddItem(chart);

---------------

Compile and execute the program. See my bug description above to visualize the bug.


Please contact me if you need more information. I can also provide images of the bug if needed.
I hope the bug can be fixed.

Hagen.




#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkChartXY.h>
#include <vtkAxis.h>
#include <vtkTable.h>
#include <vtkPlot.h>
#include <vtkFloatArray.h>
#include <vtkContextView.h>
#include <vtkContextScene.h>
#include <vtkPen.h>

int main(int, char *[])
{
    // Create a table with some points in it
    vtkSmartPointer<vtkTable> table =
      vtkSmartPointer<vtkTable>::New();

    vtkSmartPointer<vtkFloatArray> arrX =
      vtkSmartPointer<vtkFloatArray>::New();
    arrX->SetName("X Axis");
    table->AddColumn(arrX);

    vtkSmartPointer<vtkFloatArray> arrC =
      vtkSmartPointer<vtkFloatArray>::New();
    arrC->SetName("Cosine");
    table->AddColumn(arrC);

    vtkSmartPointer<vtkFloatArray> arrS =
      vtkSmartPointer<vtkFloatArray>::New();
    arrS->SetName("Sine");
    table->AddColumn(arrS);

    // Fill in the table with some example values
    int numPoints = 69;
    float inc = 7.5 / (numPoints-1);
    table->SetNumberOfRows(numPoints);
    for (int i = 0; i < numPoints; ++i)
    {
      table->SetValue(i, 0, i * inc);
      table->SetValue(i, 1, cos(i * inc));
      table->SetValue(i, 2, sin(i * inc));
    }

    // Set up the view
    vtkSmartPointer<vtkContextView> view =
      vtkSmartPointer<vtkContextView>::New();
    view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);

    // Add multiple line plots, setting the colors etc
    vtkSmartPointer<vtkChartXY> chart =
      vtkSmartPointer<vtkChartXY>::New();
    chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
    view->GetScene()->AddItem(chart);
    vtkPlot *line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 1);
#else
    line->SetInputData(table, 0, 1);
#endif
    line->SetColor(0, 255, 0, 255);
    line->SetWidth(1.0);
    line = chart->AddPlot(vtkChart::LINE);
#if VTK_MAJOR_VERSION <= 5
    line->SetInput(table, 0, 2);
#else
    line->SetInputData(table, 0, 2);
#endif
    line->SetColor(255, 0, 0, 255);
    line->SetWidth(5.0);

    // For dotted line, the line type can be from 2 to 5 for different dash/dot
    // patterns (see enum in vtkPen containing DASH_LINE, value 2):
#ifndef WIN32
    line->GetPen()->SetLineType(vtkPen::DASH_LINE);
#endif
    // (ifdef-ed out on Windows because DASH_LINE does not work on Windows
    //  machines with built-in Intel HD graphics card...)

    //view->GetRenderWindow()->SetMultiSamples(0);

    // Start interactor
    view->GetInteractor()->Initialize();
    view->GetInteractor()->Start();

    return EXIT_SUCCESS;
}


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers



--
___________________________________________
Andrew J. P. Maclean

___________________________________________





_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

Marcus D. Hanwell-2
I can take a look when I return, I am currently out on travel and have
limited connectivity.

On Tue, Jul 26, 2016 at 5:56 AM, Mathieu Westphal
<[hidden email]> wrote:

> Hello
>
> I indeed reproduce the problem, I will submit a bug report and ping Marcus
> to see if he knows what is going on.
> http://www.paraview.org/Bug/view.php?id=16797
>
> Regards,
>
> Mathieu Westphal
>
> On Tue, Jul 26, 2016 at 11:19 AM, Hagen Mölle <[hidden email]>
> wrote:
>>
>> Hi Andrew, Hi Mathieu,
>>
>> I can not see the line after it disappears. This might be a special
>> feature of the open source radeon graphics driver under Linux.
>>
>> Just for completeness one can easily see the line thickness fluctuation by
>> zooming into the scene just right before the line disappears. At this zoom
>> level just drag the scene using the left mouse button and move the mouse
>> around.
>>
>> In fact it would be very nice if this bug could be fixed at least when
>> logarithmic x axis is enabled. Because when logarithmic x axis is enabled
>> the error is visible after zooming in only a few steps.
>>
>> Hagen
>>
>>
>> On 26.07.2016 10:57, Andrew Maclean wrote:
>>
>> Hi Hagen, Mathieu,
>>
>> I agree with you, if I zoom in when the logarithmic axis is disabled, the
>> thick line vanishes, however if you look carefully there is a very faint
>> thin line. It may be (2) as you outline below.
>>
>> Regards
>>    Andrew
>>
>> Andrew Maclean
>>
>>
>> On 26 Jul 2016 5:02 pm, "Hagen Mölle" <[hidden email]> wrote:
>>>
>>> Hi Andrew, Hi Mathieu,
>>>
>>> That's exactly the behaviour I see. By the way I am using ATI/AMD video
>>> cards in my Windows/Linux machine.
>>>
>>> !!!! UPDATE: The error also occurs when logarithmic x axis is not
>>> enabled. But you have to zoom in a lot more. See attached pictures. I am
>>> sorry for not realizing this earlier.
>>>
>>>
>>> I am not that familiar with OpenGL. But I can imagine two things:
>>>
>>> (1) Line is clipped
>>> (2) If shaders are used to draw the line thickness it might be a floating
>>> point precision problem. Actually this could be the problem because the line
>>> thickness starts fluctuating at some point of zoom level before it finally
>>> disappears. See attached picture. The line thickness is about the half the
>>> original line thickness.
>>>
>>>
>>> I hope this helps to fix the bug. One might also contact Marcus D.
>>> Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure
>>> if he is still responsible.
>>>
>>> Hagen
>>>
>>>
>>> On 26.07.2016 01:52, Andrew Maclean wrote:
>>>
>>> Hi Hagen,
>>>   I just tested your example and I get similar behaviou using an NVIDIA
>>> Video card, OpenGL2,  VS2015 and the VTK Master.
>>>
>>> I can zoom in and, at some point the line disappears, but zooming out
>>> immediately restores the line.
>>>
>>> It seeme to me that once a certain zoom level is reached the line is not
>>> drawn, however zooming out restores it.
>>>
>>> Attached are two pngs showing the effect.When the line disappears it
>>> should still be visible as the scales on the axes have only changed
>>> slightly.
>>>
>>> Andrew
>>>
>>>> ---------- Forwarded message ----------
>>>> From: "Hagen Mölle" <[hidden email]>
>>>> To: [hidden email]
>>>> Cc:
>>>> Date: Mon, 25 Jul 2016 10:14:21 +0200
>>>> Subject: [vtk-developers] vtkChartXY lines not visible when using
>>>> logarithmic x axis
>>>> Hi,
>>>>
>>>> Due to spam reasons the bug tracker's user login is disabled right now.
>>>> One should send bug reports to the vtk's user mailing list, which I did
>>>> twice. My bug report was totally ignored. That's why I send it here again.
>>>> Hopefully someone can finally create a ticket in the bug tracker. Thanks.
>>>>
>>>> I want to report a bug for vtkChartXY. So I already send this Email two
>>>> days ago to the vtkUsers mailing list without receiving any answer. The bug
>>>> is not visible in the vtk bug tracker too. Thus I send the Email again.
>>>>
>>>> Bug environment:
>>>> a) I am using VTK 6.2. I checked my test code on machines running
>>>> Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On
>>>> all these systems the bug is visible.
>>>> b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04
>>>> machine and compiled VTK 7.0 using OpenGL2 interface).
>>>>
>>>> Bug description:
>>>>
>>>> I am using vtkChartXY to display one line. I also enabled logarithmic x
>>>> axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more
>>>> special. In the compiled application I start zooming into the chart using
>>>> the mouse wheel, making sure I always have a line displayed in the view. At
>>>> some zoom level this line just disappears. At the zoom level the line
>>>> disappears I did the following:
>>>>
>>>> 1. Zooming more into the chart the line will not appear again.
>>>> 2. Zooming out twice (with mouse wheel) the line will reappear.
>>>>
>>>> How to reproduce the bug:
>>>>
>>>> I basically used the LinePlot example for vtkChartXY (see
>>>> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).
>>>>
>>>> I added one line to the example code marked with *** (line was added
>>>> after line 54 in example code).
>>>> I added the full code to the end of the Email.
>>>> ---------------
>>>>
>>>> // Add multiple line plots, setting the colors etc
>>>>     vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY
>>>> >::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
>>>> view->GetScene()->AddItem(chart);
>>>>
>>>> ---------------
>>>>
>>>> Compile and execute the program. See my bug description above to
>>>> visualize the bug.
>>>>
>>>>
>>>> Please contact me if you need more information. I can also provide
>>>> images of the bug if needed.
>>>> I hope the bug can be fixed.
>>>>
>>>> Hagen.
>>>>
>>>>
>>>>
>>>>
>>>> #include <vtkVersion.h>
>>>> #include <vtkRenderer.h>
>>>> #include <vtkRenderWindowInteractor.h>
>>>> #include <vtkRenderWindow.h>
>>>> #include <vtkSmartPointer.h>
>>>> #include <vtkChartXY.h>
>>>> #include <vtkAxis.h>
>>>> #include <vtkTable.h>
>>>> #include <vtkPlot.h>
>>>> #include <vtkFloatArray.h>
>>>> #include <vtkContextView.h>
>>>> #include <vtkContextScene.h>
>>>> #include <vtkPen.h>
>>>>
>>>> int main(int, char *[])
>>>> {
>>>>     // Create a table with some points in it
>>>>     vtkSmartPointer<vtkTable> table =
>>>>       vtkSmartPointer<vtkTable>::New();
>>>>
>>>>     vtkSmartPointer<vtkFloatArray> arrX =
>>>>       vtkSmartPointer<vtkFloatArray>::New();
>>>>     arrX->SetName("X Axis");
>>>>     table->AddColumn(arrX);
>>>>
>>>>     vtkSmartPointer<vtkFloatArray> arrC =
>>>>       vtkSmartPointer<vtkFloatArray>::New();
>>>>     arrC->SetName("Cosine");
>>>>     table->AddColumn(arrC);
>>>>
>>>>     vtkSmartPointer<vtkFloatArray> arrS =
>>>>       vtkSmartPointer<vtkFloatArray>::New();
>>>>     arrS->SetName("Sine");
>>>>     table->AddColumn(arrS);
>>>>
>>>>     // Fill in the table with some example values
>>>>     int numPoints = 69;
>>>>     float inc = 7.5 / (numPoints-1);
>>>>     table->SetNumberOfRows(numPoints);
>>>>     for (int i = 0; i < numPoints; ++i)
>>>>     {
>>>>       table->SetValue(i, 0, i * inc);
>>>>       table->SetValue(i, 1, cos(i * inc));
>>>>       table->SetValue(i, 2, sin(i * inc));
>>>>     }
>>>>
>>>>     // Set up the view
>>>>     vtkSmartPointer<vtkContextView> view =
>>>>       vtkSmartPointer<vtkContextView>::New();
>>>>     view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
>>>>
>>>>     // Add multiple line plots, setting the colors etc
>>>>     vtkSmartPointer<vtkChartXY> chart =
>>>>       vtkSmartPointer<vtkChartXY>::New();
>>>>     chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
>>>>     view->GetScene()->AddItem(chart);
>>>>     vtkPlot *line = chart->AddPlot(vtkChart::LINE);
>>>> #if VTK_MAJOR_VERSION <= 5
>>>>     line->SetInput(table, 0, 1);
>>>> #else
>>>>     line->SetInputData(table, 0, 1);
>>>> #endif
>>>>     line->SetColor(0, 255, 0, 255);
>>>>     line->SetWidth(1.0);
>>>>     line = chart->AddPlot(vtkChart::LINE);
>>>> #if VTK_MAJOR_VERSION <= 5
>>>>     line->SetInput(table, 0, 2);
>>>> #else
>>>>     line->SetInputData(table, 0, 2);
>>>> #endif
>>>>     line->SetColor(255, 0, 0, 255);
>>>>     line->SetWidth(5.0);
>>>>
>>>>     // For dotted line, the line type can be from 2 to 5 for different
>>>> dash/dot
>>>>     // patterns (see enum in vtkPen containing DASH_LINE, value 2):
>>>> #ifndef WIN32
>>>>     line->GetPen()->SetLineType(vtkPen::DASH_LINE);
>>>> #endif
>>>>     // (ifdef-ed out on Windows because DASH_LINE does not work on
>>>> Windows
>>>>     //  machines with built-in Intel HD graphics card...)
>>>>
>>>>     //view->GetRenderWindow()->SetMultiSamples(0);
>>>>
>>>>     // Start interactor
>>>>     view->GetInteractor()->Initialize();
>>>>     view->GetInteractor()->Start();
>>>>
>>>>     return EXIT_SUCCESS;
>>>> }
>>>>
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Search the list archives at:
>>>> http://markmail.org/search/?q=vtk-developers
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/vtk-developers
>>>
>>>
>>>
>>>
>>> --
>>> ___________________________________________
>>> Andrew J. P. Maclean
>>>
>>> ___________________________________________
>>>
>>>
>>
>
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

Reply | Threaded
Open this post in threaded view
|

Re: vtkChartXY lines not visible when using logarithmic x axis

VTK - Dev mailing list
Hi guys,

has any progress been made regarding this bug so far
(https://gitlab.kitware.com/vtk/vtk/issues/16797)? It seems nobody is
responsible for this bug any more. In the old mantis bug tracker Marcus
was assigned to solve the bug. So far I remember two weeks afterwards
reporting the bug all tickets were moved to new bug tracking system. The
assignee field was left empty during this process.

Best,

Hagen

On 27.07.2016 17:47, Marcus D. Hanwell wrote:

> I can take a look when I return, I am currently out on travel and have
> limited connectivity.
>
> On Tue, Jul 26, 2016 at 5:56 AM, Mathieu Westphal
> <[hidden email]> wrote:
>> Hello
>>
>> I indeed reproduce the problem, I will submit a bug report and ping Marcus
>> to see if he knows what is going on.
>> http://www.paraview.org/Bug/view.php?id=16797
>>
>> Regards,
>>
>> Mathieu Westphal
>>
>> On Tue, Jul 26, 2016 at 11:19 AM, Hagen Mölle <[hidden email]>
>> wrote:
>>> Hi Andrew, Hi Mathieu,
>>>
>>> I can not see the line after it disappears. This might be a special
>>> feature of the open source radeon graphics driver under Linux.
>>>
>>> Just for completeness one can easily see the line thickness fluctuation by
>>> zooming into the scene just right before the line disappears. At this zoom
>>> level just drag the scene using the left mouse button and move the mouse
>>> around.
>>>
>>> In fact it would be very nice if this bug could be fixed at least when
>>> logarithmic x axis is enabled. Because when logarithmic x axis is enabled
>>> the error is visible after zooming in only a few steps.
>>>
>>> Hagen
>>>
>>>
>>> On 26.07.2016 10:57, Andrew Maclean wrote:
>>>
>>> Hi Hagen, Mathieu,
>>>
>>> I agree with you, if I zoom in when the logarithmic axis is disabled, the
>>> thick line vanishes, however if you look carefully there is a very faint
>>> thin line. It may be (2) as you outline below.
>>>
>>> Regards
>>>     Andrew
>>>
>>> Andrew Maclean
>>>
>>>
>>> On 26 Jul 2016 5:02 pm, "Hagen Mölle" <[hidden email]> wrote:
>>>> Hi Andrew, Hi Mathieu,
>>>>
>>>> That's exactly the behaviour I see. By the way I am using ATI/AMD video
>>>> cards in my Windows/Linux machine.
>>>>
>>>> !!!! UPDATE: The error also occurs when logarithmic x axis is not
>>>> enabled. But you have to zoom in a lot more. See attached pictures. I am
>>>> sorry for not realizing this earlier.
>>>>
>>>>
>>>> I am not that familiar with OpenGL. But I can imagine two things:
>>>>
>>>> (1) Line is clipped
>>>> (2) If shaders are used to draw the line thickness it might be a floating
>>>> point precision problem. Actually this could be the problem because the line
>>>> thickness starts fluctuating at some point of zoom level before it finally
>>>> disappears. See attached picture. The line thickness is about the half the
>>>> original line thickness.
>>>>
>>>>
>>>> I hope this helps to fix the bug. One might also contact Marcus D.
>>>> Hanwell. He is the developer who mainly implemented vtkCharts. I am not sure
>>>> if he is still responsible.
>>>>
>>>> Hagen
>>>>
>>>>
>>>> On 26.07.2016 01:52, Andrew Maclean wrote:
>>>>
>>>> Hi Hagen,
>>>>    I just tested your example and I get similar behaviou using an NVIDIA
>>>> Video card, OpenGL2,  VS2015 and the VTK Master.
>>>>
>>>> I can zoom in and, at some point the line disappears, but zooming out
>>>> immediately restores the line.
>>>>
>>>> It seeme to me that once a certain zoom level is reached the line is not
>>>> drawn, however zooming out restores it.
>>>>
>>>> Attached are two pngs showing the effect.When the line disappears it
>>>> should still be visible as the scales on the axes have only changed
>>>> slightly.
>>>>
>>>> Andrew
>>>>
>>>>> ---------- Forwarded message ----------
>>>>> From: "Hagen Mölle" <[hidden email]>
>>>>> To: [hidden email]
>>>>> Cc:
>>>>> Date: Mon, 25 Jul 2016 10:14:21 +0200
>>>>> Subject: [vtk-developers] vtkChartXY lines not visible when using
>>>>> logarithmic x axis
>>>>> Hi,
>>>>>
>>>>> Due to spam reasons the bug tracker's user login is disabled right now.
>>>>> One should send bug reports to the vtk's user mailing list, which I did
>>>>> twice. My bug report was totally ignored. That's why I send it here again.
>>>>> Hopefully someone can finally create a ticket in the bug tracker. Thanks.
>>>>>
>>>>> I want to report a bug for vtkChartXY. So I already send this Email two
>>>>> days ago to the vtkUsers mailing list without receiving any answer. The bug
>>>>> is not visible in the vtk bug tracker too. Thus I send the Email again.
>>>>>
>>>>> Bug environment:
>>>>> a) I am using VTK 6.2. I checked my test code on machines running
>>>>> Windows 7 (Visual Studio 2012/2015) and Ubuntu 15.10/Ubuntu 16.04 (gcc). On
>>>>> all these systems the bug is visible.
>>>>> b) I can also reproduce the bug in VTK 7.0 (here I used an Ubuntu 16.04
>>>>> machine and compiled VTK 7.0 using OpenGL2 interface).
>>>>>
>>>>> Bug description:
>>>>>
>>>>> I am using vtkChartXY to display one line. I also enabled logarithmic x
>>>>> axis (chartXY->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);). Nothing more
>>>>> special. In the compiled application I start zooming into the chart using
>>>>> the mouse wheel, making sure I always have a line displayed in the view. At
>>>>> some zoom level this line just disappears. At the zoom level the line
>>>>> disappears I did the following:
>>>>>
>>>>> 1. Zooming more into the chart the line will not appear again.
>>>>> 2. Zooming out twice (with mouse wheel) the line will reappear.
>>>>>
>>>>> How to reproduce the bug:
>>>>>
>>>>> I basically used the LinePlot example for vtkChartXY (see
>>>>> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/LinePlot).
>>>>>
>>>>> I added one line to the example code marked with *** (line was added
>>>>> after line 54 in example code).
>>>>> I added the full code to the end of the Email.
>>>>> ---------------
>>>>>
>>>>> // Add multiple line plots, setting the colors etc
>>>>>      vtkSmartPointer<vtkChartXY >  chart= vtkSmartPointer<vtkChartXY
>>>>>> ::New(); *** chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
>>>>> view->GetScene()->AddItem(chart);
>>>>>
>>>>> ---------------
>>>>>
>>>>> Compile and execute the program. See my bug description above to
>>>>> visualize the bug.
>>>>>
>>>>>
>>>>> Please contact me if you need more information. I can also provide
>>>>> images of the bug if needed.
>>>>> I hope the bug can be fixed.
>>>>>
>>>>> Hagen.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> #include <vtkVersion.h>
>>>>> #include <vtkRenderer.h>
>>>>> #include <vtkRenderWindowInteractor.h>
>>>>> #include <vtkRenderWindow.h>
>>>>> #include <vtkSmartPointer.h>
>>>>> #include <vtkChartXY.h>
>>>>> #include <vtkAxis.h>
>>>>> #include <vtkTable.h>
>>>>> #include <vtkPlot.h>
>>>>> #include <vtkFloatArray.h>
>>>>> #include <vtkContextView.h>
>>>>> #include <vtkContextScene.h>
>>>>> #include <vtkPen.h>
>>>>>
>>>>> int main(int, char *[])
>>>>> {
>>>>>      // Create a table with some points in it
>>>>>      vtkSmartPointer<vtkTable> table =
>>>>>        vtkSmartPointer<vtkTable>::New();
>>>>>
>>>>>      vtkSmartPointer<vtkFloatArray> arrX =
>>>>>        vtkSmartPointer<vtkFloatArray>::New();
>>>>>      arrX->SetName("X Axis");
>>>>>      table->AddColumn(arrX);
>>>>>
>>>>>      vtkSmartPointer<vtkFloatArray> arrC =
>>>>>        vtkSmartPointer<vtkFloatArray>::New();
>>>>>      arrC->SetName("Cosine");
>>>>>      table->AddColumn(arrC);
>>>>>
>>>>>      vtkSmartPointer<vtkFloatArray> arrS =
>>>>>        vtkSmartPointer<vtkFloatArray>::New();
>>>>>      arrS->SetName("Sine");
>>>>>      table->AddColumn(arrS);
>>>>>
>>>>>      // Fill in the table with some example values
>>>>>      int numPoints = 69;
>>>>>      float inc = 7.5 / (numPoints-1);
>>>>>      table->SetNumberOfRows(numPoints);
>>>>>      for (int i = 0; i < numPoints; ++i)
>>>>>      {
>>>>>        table->SetValue(i, 0, i * inc);
>>>>>        table->SetValue(i, 1, cos(i * inc));
>>>>>        table->SetValue(i, 2, sin(i * inc));
>>>>>      }
>>>>>
>>>>>      // Set up the view
>>>>>      vtkSmartPointer<vtkContextView> view =
>>>>>        vtkSmartPointer<vtkContextView>::New();
>>>>>      view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
>>>>>
>>>>>      // Add multiple line plots, setting the colors etc
>>>>>      vtkSmartPointer<vtkChartXY> chart =
>>>>>        vtkSmartPointer<vtkChartXY>::New();
>>>>>      chart.Get()->GetAxis(vtkAxis::BOTTOM)->SetLogScale(true);
>>>>>      view->GetScene()->AddItem(chart);
>>>>>      vtkPlot *line = chart->AddPlot(vtkChart::LINE);
>>>>> #if VTK_MAJOR_VERSION <= 5
>>>>>      line->SetInput(table, 0, 1);
>>>>> #else
>>>>>      line->SetInputData(table, 0, 1);
>>>>> #endif
>>>>>      line->SetColor(0, 255, 0, 255);
>>>>>      line->SetWidth(1.0);
>>>>>      line = chart->AddPlot(vtkChart::LINE);
>>>>> #if VTK_MAJOR_VERSION <= 5
>>>>>      line->SetInput(table, 0, 2);
>>>>> #else
>>>>>      line->SetInputData(table, 0, 2);
>>>>> #endif
>>>>>      line->SetColor(255, 0, 0, 255);
>>>>>      line->SetWidth(5.0);
>>>>>
>>>>>      // For dotted line, the line type can be from 2 to 5 for different
>>>>> dash/dot
>>>>>      // patterns (see enum in vtkPen containing DASH_LINE, value 2):
>>>>> #ifndef WIN32
>>>>>      line->GetPen()->SetLineType(vtkPen::DASH_LINE);
>>>>> #endif
>>>>>      // (ifdef-ed out on Windows because DASH_LINE does not work on
>>>>> Windows
>>>>>      //  machines with built-in Intel HD graphics card...)
>>>>>
>>>>>      //view->GetRenderWindow()->SetMultiSamples(0);
>>>>>
>>>>>      // Start interactor
>>>>>      view->GetInteractor()->Initialize();
>>>>>      view->GetInteractor()->Start();
>>>>>
>>>>>      return EXIT_SUCCESS;
>>>>> }
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Powered by www.kitware.com
>>>>>
>>>>> Visit other Kitware open-source projects at
>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>
>>>>> Search the list archives at:
>>>>> http://markmail.org/search/?q=vtk-developers
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://public.kitware.com/mailman/listinfo/vtk-developers
>>>>
>>>>
>>>>
>>>> --
>>>> ___________________________________________
>>>> Andrew J. P. Maclean
>>>>
>>>> ___________________________________________
>>>>
>>>>

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers