MathGroup Archive 2011

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

Search the Archive

Re: Transparent textures from images

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123457] Re: Transparent textures from images
  • From: Barrie Stokes <Barrie.Stokes at newcastle.edu.au>
  • Date: Thu, 8 Dec 2011 05:22:59 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201112060812.DAA18391@smc.vnet.net>

Hi Patrick, hi John

Intrigued by the results of John's fix, I played around a little with features I've never used.

Using some code form the Help for Texture[], I was delighted to come up with:

rose = Import[ "ExampleData/rose.gif" ];

roses = GraphicsGrid[ Table[ rose, {15}, {15} ] ];

ParametricPlot3D[ {1.16^v Cos[ v ] (1 + Cos[ u ]), -1.16^v Sin[ 
    v ] (1 + Cos[ u ]), -2 1.16^v (1 + Sin[ u ])}, {u, 0, 
  2 Pi}, {v, -15, 6}, 
 PlotStyle -> 
  Directive[ Specularity[ White, 30 ], 
   Texture[ ImageData[ roses ] ] ], 
 TextureCoordinateFunction -> ({#4, 2 #5} &), Lighting -> "Neutral", 
 Mesh -> None, PlotRange -> All, Boxed -> False, Axes -> False, 
 PlotPoints -> 50 ]

Beautiful, I think.

Barrie

>>> On 06/12/2011 at 7:12 pm, in message <201112060812.DAA18391 at smc.vnet.net>, John
Fultz <jfultz at wolfram.com> wrote:
> Patrick,
> 
> This is a bug in Mathematica.  But, fortunately, it's a very easy bug to 
> work 
> around.  Replace:
> 
> Texture[img]
> 
> with
> 
> Texture[ImageData[img]]
> 
> Sincerely,
> 
> John Fultz
> jfultz at wolfram.com 
> User Interface Group
> Wolfram Research, Inc.
> 
> 
> On Sat, 3 Dec 2011 04:14:01 -0500 (EST), Patrick Scheibe wrote:
>> Hi,
>>
>> I sent this already to Wolfram, but maybe someone wants to try this on a
>> windows machine.
>> Starting from an image with alpha-channel
>>
>> data = Table[{Sin[x], Sin[y], 1, Sin[x y]}, {y, 0, 2 Pi,
>> 2 Pi/127.}, {x, 0, 2 Pi, 2 Pi/127.}];
>> img = Image[data, ColorSpace -> "RGB"]
>> AlphaChannel[img]
>>
>> When I use this now as texture on a cube, I expect the walls to be
>> transparent according to the alpha-channel
>>
>> vtc = {{0, 0}, {1, 0}, {1, 1}, {0, 1}};
>> coords = {{{0, 0, 0}, {0, 1, 0}, {1, 1, 0}, {1, 0, 0}}, {{0, 0,
>> 0}, {1, 0, 0}, {1, 0, 1}, {0, 0, 1}}, {{1, 0, 0}, {1, 1, 0}, {1,
>> 1, 1}, {1, 0, 1}}, {{1, 1, 0}, {0, 1, 0}, {0, 1, 1}, {1, 1,
>> 1}}, {{0, 1, 0}, {0, 0, 0}, {0, 0, 1}, {0, 1, 1}}, {{0, 0,
>> 1}, {1, 0, 1}, {1, 1, 1}, {0, 1, 1}}};
>> Graphics3D[{Texture[img],
>> Polygon[coords, VertexTextureCoordinates -> Table[vtc, {6}]]},
>> Boxed -> False]
>>
>> This does not work here. I get a cube with a white painting where it
>> should be transparent. Using the pure {r,g,b,a} data I get the right
>> result:
>>
>> Graphics3D[{Texture[data],
>> Polygon[coords, VertexTextureCoordinates -> Table[vtc, {6}]]},
>> Boxed -> False]
>>
>> Can someone check this or give me a hint which part I understood wrong?
>>
>> Cheers
>> Patrick




  • Prev by Date: Re: 100 rows and 100 columns random matrix
  • Next by Date: Re: How to get elements satisfying specific condition froma
  • Previous by thread: Re: Transparent textures from images
  • Next by thread: Re: Transparent textures from images