From: Chris Hill on
At 06:26 AM 5/13/2010, Tibor wrote:
>Hi,
>I would like to export some pictures from Mathematica into vector
>graphics format. I use Graphics3D container and
>GeometricTransformation command to locate my arrows in 3D space. When
>exporting this into eps or PDF file format the arrowheads get messed
>up in the result file. However, using png everything seems fine. But
>unfortunately I need this in vector format.
>The other interesting thing: using Opacity command in the same
>Graphics3D container results in the same effect but now inside
>Mathematica. Wired!
>
>Sample code demonstrating the problem:
>Graphics3D[{Arrow[{{0, 0, 0}, {1, 0, 0}}],
> Arrow[{{0, 0, 0}, {0, 1, 0}}], Blue, Arrow[{{0, 0, 0}, {0, 0, 1}}],
> Pink, Arrow[{{-1, 1, 0}, {1, 1, 0}}],
> GeometricTransformation[{Opacity[0.2], Black,
> Arrow[{{0, 0, 0}, {1, 0, 1}}]},
> TranslationTransform[{1, 1, 1}].RotationTransform[\[Pi], {0, 0,
> 1}]]}, Boxed -> False]
>
>Export["pic.PDF", %]
>
>I use Mathematica v7.0.0 - 32bit
>
>Thx in advance!
>
>Tibor

This is a bug in v7.x. I can confirm that it has already been fixed
in a development version, the fix will appear in a future release.

As a workaround you can manually transform the arrow's vertices:

Graphics3D[{Arrow[{{0, 0, 0}, {1, 0, 0}}], Arrow[{{0, 0, 0}, {0, 1, 0}}],
Blue, Arrow[{{0, 0, 0}, {0, 0, 1}}], Pink,
Arrow[{{-1, 1, 0}, {1, 1, 0}}], {Opacity[0.2], Black,
Arrow[(TranslationTransform[{1, 1, 1}].RotationTransform[\[Pi], {0, 0,
1}]) /@ {{0, 0, 0}, {1, 0, 1}}]}}, Boxed -> False]

Regarding your discovery that Opacity changes the rendering: The
specification of transparency with the Opacity directive changes the
algorithm used to render the graphic on the screen. The same
algorithm is used to export 3D graphics to PDF in vector form. The
issue is related to the use of that algorithm.

I apologize for any inconvenience.

Chris Hill
Wolfram Research