JDK-8100694 : Improve rendering quality of tessellated primitives with a scale factor
Type:Enhancement
Component:javafx
Sub-Component:graphics
Affected Version:fx2.0
Priority:P3
Status:Closed
Resolution:Not an Issue
Submitted:2011-07-21
Updated:2015-06-16
Resolved:2013-07-16
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
Run the attached app. It draws ellipse which is zoomed using Z axis translation. The result looks like polygon, not like an ellipse.
Comments
Not an issue after tessellation has been removed. RT-5534
16-07-2013
Fix for RT-5534 will remove tessellation, then this problem will simply go away.
16-07-2013
This is a Lombard feature.
06-03-2012
Since this is being repurposed as a feature, I am changing the synopsis and moving it to Lombard.
24-08-2011
Changed to feature.
24-08-2011
If you want to reopen this issue and convert it to a feature, that would be fine.
24-08-2011
This doesn't seem to be a valid solution. I believe that graphical system should be able to tessellate shape basing on its screen size, not its logical. Scaling can occur in any parent of its shape and it is always expected to be circle.
Another point here is that layoutBounds do not take scaling into account so the solution looks complicated.
It seems that this issue needs to be converted into Feature.
24-08-2011
This is not a bug. The tessellation fineness is dependence on the size of the constructed Shape. The way to avoid too-coarse tessellation is to create a big Shape and then scale it down to the size you want. For examples, in the CircleZBug.java
instead of
Circle node = new Circle(30, Color.RED);
user should do the following to get a smoother Z translated circle
Circle node = new Circle(300, Color.RED);
node.setScaleX(0.1);
node.setScaleY(0.1);
Same principle applied to the Ellipse3DBug.java
instead of
Ellipse ellipse = new Ellipse(250, 250, 50, 25);
user should do the following:
Ellipse ellipse = new Ellipse(250, 250, 500, 250);
ellipse.setScaleX(0.01);
ellipse.setScaleY(0.01);
27-07-2011
In looking at the circle it seems like the problem may be more than just too-coarse tessellation. Needs to be investigated.
23-07-2011
Another sample with circle
23-07-2011
Fixing the image quality in general of shapes under a 3D transform is not likely in scope for this release. In this specific case, it looks like we are under-tessellating the shape. I'll leave it as "Major" for now and set the target to Presidio, but we may end up deferring it.