Support 3d objects in PDF
It is possible to create 3d navigable objects for PDFs.
For example, the asymptote code "ring-6.asy" as follows:
import three;
defaultrender.merge=true;
size(10cm,0);
currentprojection=orthographic(5, 1, 5, up=Z);
draw(scale3(0.02)*unitsphere, surfacepen=material(diffusepen=red, emissivepen=red, specularpen=red) );
draw(shift(0.50000X+0.00000Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(0.25000X+0.43301Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.25000X+0.43301Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.50000X+0.00000Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.25000X+-0.43301Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(0.25000X+-0.43301Y+0.00000Z)*scale3(0.24997)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(0.64952X+0.37500Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(0.00000X+0.75000Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.64952X+0.37500Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.64952X+-0.37500Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(-0.00000X+-0.75000Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
draw(shift(0.64952X+-0.37500Y+0.00000Z)*scale3(0.12020)*unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
Produces this PDF: ring-6.pdf through command $ asy -f pdf -noprc -o ring-6.pdf ring-6.asy
When prc is enabled $ asy -f pdf -prc -o ring-6-prc.pdf ring-6.asy
, it produces the following file which is not yet supported by evince:
ring-6-prc.pdf
For scientific papers free software support of this PDF feature would be very impactful. For example, simple 3d geometries like molecular structures can be visualized nicely.