This is a migrated thread and some comments may be shown as answers.

RadCartesianChart3D - Remote access

9 Answers 69 Views
ChartView3D
This is a migrated thread and some comments may be shown as answers.
chethan
Top achievements
Rank 1
chethan asked on 24 Jul 2018, 03:27 PM

Hi all,

We are currently evaluating different charting libraries for 3D rendering. One of them being Telerik, in trial mode. 

Everything till now looked perfect but we ran into a weird issue while using RadCartesianChart3D. This happens when we are running the application on Machine1 which is Windows 7 and access this machine using remote desktop from Machine 2. When we run the application on Machine 1 we can see all the surface series being rendered correctly. But if I try to access the solution from machine 2(different PC)  using remote desktop session, Visual studio crashes. No Exceptions are caught. 

I have attached the Event Viewer of the machine 1 where the applications is running.
Development environment on machine 1: VS 2017 , .Net framework 4.7.1. 
Telerik Version: See file attached.
We found that,the other parts of the application which renders a RadHeatMap works perfectly fine even in a remote desktop mode. 
Upon further Investigation, it seems that Data Binding could be problematic. I have attached the code below:

The series with no-binding, all data points defined in the Xaml , statically defined, works fine. But the one with the binding to a "test1" object fails during remote desktop session.

<telerik:RadCartesianChart3D x:Name="radView">           
 
           <!--Axis definitions-->
           <telerik:RadCartesianChart3D.XAxis>
               <telerik:LinearAxis3D LabelStyle="{StaticResource LabelStyle}" />
           </telerik:RadCartesianChart3D.XAxis>
           <telerik:RadCartesianChart3D.YAxis>
               <telerik:LinearAxis3D LabelStyle="{StaticResource LabelStyle}"/>
           </telerik:RadCartesianChart3D.YAxis>
           <telerik:RadCartesianChart3D.ZAxis>
               <telerik:LinearAxis3D LabelStyle="{StaticResource LabelStyle}"/>
           </telerik:RadCartesianChart3D.ZAxis>
 
           <telerik:RadCartesianChart3D.Series>
 
               <telerik:SurfaceSeries3D>
                   <telerik:SurfaceSeries3D.DataPoints>
                       <telerik:SurfaceDataPoint3D XValue="10.1" YValue="14.11" ZValue="9.5" />
                       <telerik:SurfaceDataPoint3D XValue="20.2" YValue="21.4" ZValue="7.5" />
                       <telerik:SurfaceDataPoint3D XValue="30.3" YValue="441.4" ZValue="6" />
                       <telerik:SurfaceDataPoint3D XValue="40.4" YValue="22.4" ZValue="6" />
                       <telerik:SurfaceDataPoint3D XValue="50.5" YValue="111.332" ZValue="6.55" />
                       <telerik:SurfaceDataPoint3D XValue="60.6" YValue="221.4" ZValue="6.555" />
                       <telerik:SurfaceDataPoint3D XValue="70.7" YValue="221.2" ZValue="5.55" />
                       <telerik:SurfaceDataPoint3D XValue="80.7" YValue="31.22222" ZValue="5.5" />
                       <telerik:SurfaceDataPoint3D XValue="90.7" YValue="221" ZValue="5" />
                   </telerik:SurfaceSeries3D.DataPoints>
                    
               </telerik:SurfaceSeries3D>
               <telerik:SurfaceSeries3D x:Name="test"
                                    XValueBinding="X"
                                    YValueBinding="Y"                                     
                                    ZValueBinding="Z"
                                    ItemsSource="{Binding test1}">
                   <telerik:SurfaceSeries3D.Colorizer>
                       <telerik:SurfaceSeries3DDataPointColorizer ColorBinding="ColorValue"/>
                   </telerik:SurfaceSeries3D.Colorizer>
 
               </telerik:SurfaceSeries3D>           
           </telerik:RadCartesianChart3D.Series>
       </telerik:RadCartesianChart3D>

Test1 object look like this:

public class test
    {
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }
        public Color ColorValue { get; set; }
 
        public PlotInfo(double x, double y, double z)
        {
            X = x;
            Y = y;
            Z = z;
            ColorValue = Color.FromArgb(128, 255, 255, 0);
        }
    }

Further, as soon as I change the types for X, Y and Z to int from doubles, everything is fine and 3D charts are rendered properly.
So In short, the problem is with the RadCartesianChart3D in a remote desktop mode, binding to an object with double values. Any suggestions please?
We are currently in evaluation mode and we would like to wrap it up as soon as possible. If you need more details please let me know.

9 Answers, 1 is accepted

Sort by
0
Martin Ivanov
Telerik team
answered on 27 Jul 2018, 07:27 AM
Hello Chethan,

This exception is quite unusual. I've tested this but I wasn't able to reproduce the issue. In any case this sounds as a Visual Studio issue, so I could suggest you to repair or update it and see if the crash still appears. Also, you can try to reproduce the reported behavior with a simple 3D scene using the WPF API - for example you can use the code from the MSDN docs. This could tell us if there is something wrong with the 3D engine. Also, you can try to reproduce this with the 2D RadChartView and let me know how it goes.

Additionally, you can check the following Visual Studio bug report and see if there is something related to the issue.

Regards,
Martin Ivanov
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
chethan
Top achievements
Rank 1
answered on 28 Jul 2018, 10:35 PM

Hi Martin, 
Thank you very much for the reply. I am trying out the different options you suggested.

One thing I did try and it's worth mentioning here is, I changed the Project platform in VS 2017 from "Any CPU" to "x64" . Now VS 2017 does not crash when I access the machine remotely. But still there is some problem rendering one of the surfaces. I have attached a screenshot of the same.  Two of the surfaces are kind of smudged.

My concern is only a subset of the surfaces rendered have this problem, while others are rendered correctly. 

I have attached 2 files.
Expected.png is what is seen on the Machine 1 running Visual Studio (correct rendering)
Telerik-Error.png: Is the actual rendering as seen on Machine 2 , that accesses the Machine 1 using remote session.

Please suggest.

Thanks
Chethan

 

0
Martin Ivanov
Telerik team
answered on 30 Jul 2018, 08:23 AM
Hello Chethan,

This seems as an issue that we recently fixed. Here is a link to the feedback portal where you can find more about this and also when the fix was available. Can you check if the version of the Telerik dlls you are using contains the fix? Basically, you will need to have referenced a version 2018.2.521 or higher. If this is not your case I would ask you to test the chart directly on the remote machine instead of connecting to it and let me know if the issue is reproducible. Additionally, can you send me the dataset used to draw the surface so I can test it on my device and see if I can reproduce this?

Regards,
Martin Ivanov
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
chethan
Top achievements
Rank 1
answered on 30 Jul 2018, 04:55 PM
Hi Martin,

Can you please provide me the link to the portal that describes the issue? The one in the previous reply to feedback portal does not seem to have any data.

Also, I am using Telerik version "2018.2.620.45". 

Thanks
Chethan
0
Martin Ivanov
Telerik team
answered on 31 Jul 2018, 06:41 AM
Hi,

It turns out I messed up the link. Excuse me for this. Here is the correct one - https://feedback.telerik.com/Project/143/Feedback/Details/238546-chartview3d-null-values-on-the-z-axis-are-rendered-wrongly-in-some-cases-when-us.

Regards,
Martin Ivanov
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
chethan
Top achievements
Rank 1
answered on 31 Jul 2018, 05:15 PM

Hi Martin,

Thank you for the link. I think I found out what the problem is, and it looks like the problem is somewhat related to the link you sent. Our datatype contains doubles for X Y and Z. And sometime "Z" is Not defined. It is Double.Nan.
As soon as I remove them, the chart works fine.

But my concern is it is not consistent. When we render 2 surface series , both containing null values for Z, one of them is rendered correctly and the other has that glitch I showed you in the attachment. And this happens when we access the Machine in a remote desktop session only.


Thanks
Chethan

 

0
Martin Ivanov
Telerik team
answered on 03 Aug 2018, 11:51 AM
Hello Chethan,

The issue in the feedback portal was reproduced only on particular machines, but we couldn't tell what exactly is the condition to appear. The core of the issue was that the framework threaded the null values differently on the different machines. After the fix the empty data points should not be drawn at all and therefore the glitch there should not appear. What I could suggest you is to filter the data before passing it to the chart so that there are no NaN values. Or you can send me the data you are using to populate the chart so I can test it on few machine and see if I can reproduce this.

Regards,
Martin Ivanov
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
chethan
Top achievements
Rank 1
answered on 03 Aug 2018, 05:08 PM

Hi, Thanks for the suggestion. I am currently filtering null values from the Data set. It is looking good till now. There is nothing special about the data set. The class looks like this:

public class PlotInfo
    {
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }
        public Color ColorValue { get; set; }
 
        public PlotInfo(double x, double y, double z)
        {
            X = x;
            Y = y;
            Z = z;
            ColorValue = Color.FromArgb(128, 255, 255, 0);
        }
    }

We plot 256 * 256 array, with X ranging from -3 to 3 and Y from -3 to 3 and Z Value from 0 to 20.You should be able to reproduce this problem with such a simple data set. If it is dependent on how the machine treats null values you might not be able to reproduce at all?

Thanks
Chethan

 

 

0
Vladimir Stoyanov
Telerik team
answered on 08 Aug 2018, 01:10 PM
Hello Chethan,

Indeed the provided data set looks simple. Since we were not able to reproduce the described issue, I suppose that, as my colleague Martin suggested, reproducing this depends on how the framework handles null values on different machines. 

That said I hope that filtering the null values out will be a suitable solution for your particular scenario.  

Regards,
Vladimir Stoyanov
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Tags
ChartView3D
Asked by
chethan
Top achievements
Rank 1
Answers by
Martin Ivanov
Telerik team
chethan
Top achievements
Rank 1
Vladimir Stoyanov
Telerik team
Share this question
or