MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Defective Mesh lines in ContourPlot3D

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121133] Re: Defective Mesh lines in ContourPlot3D
  • From: John Fultz <jfultz at wolfram.com>
  • Date: Wed, 31 Aug 2011 06:03:03 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Reply-to: jfultz at wolfram.com

As I said, the BSPTree method involves a massive amount of subdivision of the polygons.  Yes, when you add a lot more, the memory usage is going to explode.  Although you could, at least, reduce the number of new polygons being used in this case using the "SpherePoints" method option...

Graphics3D[Sphere[], Method -> {"SpherePoints" -> 5}]

That example, of course, looks horrible, but if your Sphere[]s are effectively points, nobody will ever notice.

Upgrading to v8 is, of course, an option as well.  The DepthPeeling method is 
superior for most transparent renderings, and definitely for the example you
included here.

Sincerely,

John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.

On Tue, 30 Aug 2011 10:30:41 +0400, Alexey Popkov wrote:
> John,
>
> The option
>
> MeshStyle -> {{GrayLevel[.7], Tube[0.01]}}
>
> solves the problem with overlapped Mesh lines. Now another problem:
> FrontEnd crashes when I add a set of 200 little non-tranparent spheres to
> the plot. I am forced to use Spheres instead of Points primarily because
> Points are not scaled with distance in 3D. It seems that the crash
> happens because the number of 3D-objects becomes large when Mesh is also
> rendered as 3D. Crash also happens when I increase PlotPoints option:
>
> ContourPlot3D[
> x^4 + y^4 + z^4 - (x^2 + y^2 + z^2)^2 + 3 (x^2 + y^2 + z^2) ==
> 3, {x, -2, 2}, {y, -2, 2}, {z, -2, 2},
> BoundaryStyle -> Directive[Black, Thickness[.003]],
> ContourStyle ->
> Directive[Orange, Opacity[0.5], Specularity[White, 300]],
> Ticks -> None, PlotPoints -> 60,
> MeshStyle -> {{Glow[GrayLevel[.7]], Black, Tube[0.005]}},
> Lighting -> {{"Directional",
> RGBColor[1, 1, 1], {ImageScaled@{1, 0, 1},
> ImageScaled@{0, 0, 0}}}}]
>
> Is there any workaround for this (I need semi-transparent surface)?
>
> (I use Lenove R500 laptop with 32bit Windows XP SP3 installed and
> Mathematica 7.0.1.)
>
> Thank you for your help,
> Alexey
>
>
> ----- Original Message -----
> From: "John Fultz" <jfultz at wolfram.com>
> To: <lehin.p at gmail.com> <mathgroup at smc.vnet.net>
> Sent: Tuesday, August 30, 2011 12:14 AM
> Subject: Re: Defective Mesh lines in ContourPlot3D
>
>
> Version 8 has three rendering methods, controlled by the
> RenderingOptions->{"Graphics3DRenderingEngine"} option:
>
> DepthBuffer
> Advantage - very fast
> Disadvantage - absolutely unusable with transparency
>
> BSPTree
> Advantage - renders everything
> Disadvantage - divvies up the polygons into a bazillion sub-polygons,
> which
> are
> reordered during rotation.  Most of this happens in the CPU, not the GPU.
> By
> far, the slowest rendering method.
>
> DepthPeeling
> Advantage - renders most transparency fine, uses GPU hardware.
> Disadvantage - some older video cards don't support it, a few (but rare)
> outlying transparent cases don't work well.
>
> V7 only had the first two options.  What you're seeing is a complication
> stemming from the facts that:
>
> * There's a great deal of polygonal subdividision
> * The mesh is also highly subdivided
> * The mesh and the polygons are nearly (or sometimes exactly) coplanar
> polygons
>
> In v7, there are two ways out of this.  One is to prevent the BSPTree
> method from being used by removing the transparency from the graphic.
> The second is to prevent the coplanarity by changing how the mesh is
> rendered.  There's an undocumented usage of the MeshStyle option which
> would do this:
>
> MeshStyle -> {{GrayLevel[.7], Tube[0.01]}}
>
> In v8, the DepthPeeling method does a vastly better job with the
> transparent version of the graphic.  And, if your hardware supports it,
> DepthPeeling is what Mathematica will use by default.
>
> Sincerely,
>
> John Fultz
> jfultz at wolfram.com
> User Interface Group
> Wolfram Research, Inc.
>
>
> On Mon, 29 Aug 2011 03:46:57 -0400 (EDT), Alexey Popkov wrote:
>> Hello,
>>
>> I have a problem with rendering of Mesh lines on a 3D surface produced
>> by
>> ContourPlot3D in Mathematica 7.0.1:
>>
>> p=ContourPlot3D[x^4+y^4+z^4-(x^2+y^2+z^2)^2+3(x^2+y^2+z^2)==3,
>> {x, -2,2}, {y, -2, 2}, {z,-2,2},
>> BoundaryStyle->Directive[Black,Thickness[.003]],
>> ContourStyle->Directive[Orange,Opacity[0.5],Specularity[White,300]],
>> PlotPoints->90,Ticks->None,
>> MeshStyle->Directive[GrayLevel[.7],Thickness[.001]],
>> Lighting->{{"Directional",RGBColor[1,1,1],
>> {ImageScaled@{1,0,1},ImageScaled@{0,0,0}}}}];
>> p=Graphics[Inset[p,{0,0},Center,{1,1}],
>> PlotRange->{{-.5,.5},{-.5,.5}},Frame->True]
>>
>> (see screenshot here: http://i.stack.imgur.com/zBtYC.png )
>>
>> Let us to look closer on Mesh lines:
>>
>> Show[p, PlotRange -> {{-.16, -.05}, {0, .1}}]
>>
>> (see screenshot here: http://i.stack.imgur.com/JBkcc.png )
>>
>> You can see that gray Mesh lines are overlapped by surface-forming
>> triangles in many places and even look dashed. Is there a way to avoid
>> this?






  • Prev by Date: Re: Defective Mesh lines in ContourPlot3D
  • Next by Date: Re: Defective Mesh lines in ContourPlot3D
  • Previous by thread: Re: Defective Mesh lines in ContourPlot3D
  • Next by thread: Re: Defective Mesh lines in ContourPlot3D