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: [mg121134] Re: Defective Mesh lines in ContourPlot3D
  • From: John Fultz <jfultz at wolfram.com>
  • Date: Wed, 31 Aug 2011 06:03:14 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Reply-to: jfultz at wolfram.com

I forgot to mention that you could reduce the number of polygons in the tubes, too.

Graphics3D[{Tube[{{0, 0, 0}, {1, 1, 1}}, .25]}, 
 Method -> {"TubePoints" -> {3, 2}}]

Adding both "TubePoints" and "SpherePoints" would, I imagine, make the result considerably more manageable.  Furthermore, I don't know how you're adding the Sphere[]s, but I strongly recommend that you use multi-Sphere[]s.  I.e.,

(* not this *) {Sphere[p1, r], Sphere[p2, r], ...}

(* but this *) Sphere[{p1, p2, ...}, r]

Sincerely,

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


On Tue, 30 Aug 2011 09:37:00 -0500, John Fultz wrote:
> 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: Difference table via DifferenceDelta[ ]. Why do I need two Table[ ] calls?
  • Previous by thread: Re: Defective Mesh lines in ContourPlot3D
  • Next by thread: CDF file works at home, not when posted on WordPress