Asymptote falsche 3D-Überlappung

Asymptote falsche 3D-Überlappung

Ich habe gerade Asymptote installiert, um ein 3D-Modell mit Anmerkungen in LaTeX zu erstellen.

Mein Modell besteht aus mehreren 3D-Objekten und diese überlappen sich nicht gut. Es scheint, dass sie in der gleichen Reihenfolge gezeichnet werden, die in meinem Skript steht.

Hier ist mein Code:

import graph3;
import solids;
import three;

currentlight=White;

render render=render(compression=0,merge=true);

//body
revolution sph=sphere((0,0,0.0),1.0);
draw(surface(sph),green+white+opacity(1.0), render);

//arms
revolution armY=cylinder(O,0.25,5.0,Y);
draw(surface(armY),green+white+opacity(1.0), render);
draw(surface(shift(0,-5,0)*armY),green+white+opacity(1.0), render);

revolution armX=cylinder(O,0.25,5.0,X);
draw(surface(armX),green+white+opacity(1.0), render);
draw(surface(shift(-5,0,0)*armX),green+white+opacity(1.0), render);

//motors
revolution motor=cylinder(O,0.25,0.6,Z);

draw(surface(shift(0,5,-0.25)*motor),green+white+opacity(0.05), render);
draw(surface(shift(5,0,-0.25)*motor),green+white+opacity(0.05), render);
draw(surface(shift(0,-5,-0.25)*motor),green+white+opacity(0.05), render);
draw(surface(shift(-5,0,-0.25)*motor),green+white+opacity(0.05), render);

Und das ist meine Ausgabe Ausgabebild mit falscher Überlappung

Ich denke, es ist ein Problem mit

render render=render(compression=0,merge=true);

Ich habe auch versucht, die Beispiele von der Asymptote-Seite auszuführen3D-Beispiele von der Asymptote-Siteund der Antwortcode für diese Frage3D-Asymptotenbeispiele von StackExchangeaber ich habe die Überlappung immer falsch verstanden.

Ich habe Asymptote Version 2.67 zusammen mit Ghostscript 9.19 installiert, alles in Ubuntu 18.

Fällt Ihnen etwas auf, was ich übersehen habe? Vielen Dank im Voraus.

Antwort1

Für solides 3D-Rendering verwenden Sie Rasterausgabe. Zum Beispiel mit dem Befehl

asy -f png -noprc -render=4  3d-overlap.asy

wir haben

Bildbeschreibung hier eingeben

wobei 3d-overlap.asyder Code aus der Frage mit dem sizeZusatz steht:

size(9cm);

verwandte Informationen