Ich versuche, eine weiße 3D-Kugel mit Asymptote (3D-PDF) anzuzeigen, aber sie wird immer grau angezeigt:
import graph3;
import solids;
defaultrender.merge=true;
size(10cm,0);
currentprojection=orthographic(-Z);
//currentlight=Headlamp;
//currentlight=light(-10,1,1);
//currentlight=White;
currentlight=Viewport;
draw(unitsphere,rgb(1,1,1));
Ich verstehe, dass es ein Beleuchtungsproblem ist, und ich habe versucht, mit den Einstellungen zu spielen (die auskommentierten Zeilen in meiner Quelle sind einige meiner Versuche), aber ichniemalsweiß weiß sein zu lassen. Wenn ich das richtig verstehe,Ich brauche einen weißeren diffusen Anteil in meinem Licht, aber ich weiß nicht, wie ich das erreichen soll. Und die Dokumentation ist nicht sehr klar …
Dies wird Teil eines Molekülmodells sein und ich strebe eine Darstellung in etwa wie folgt an:
Antwort1
Wie g.kov
bereits angedeutet, ist es möglicherweise besser, mit dem material
statt mit der Beleuchtung zu spielen. Insbesondere Umgebungslicht ist eher subtil; Sie verwenden besser emissivepen
, wodurch der gesamten Kugel unabhängig von der Beleuchtung im Wesentlichen genau diese Farbe hinzugefügt wird.
import three;
defaultrender.merge=true;
size(10cm,0);
currentprojection=orthographic(-Z);
draw(unitsphere, surfacepen=material(diffusepen=gray(0.5), emissivepen=gray(0.6), specularpen=black) );
Das Ergebnis:
Antwort2
Das wird Ihnen wahrscheinlich zu weiß sein, aber Sie können emissivepen
und diffusepen
nach Bedarf verringern. Ich füge den Code und eine Änderung des Parameters emissivepen
von 1.0
nach 0.5
mit einem Schritt von bei 0.1
.
import settings;
outformat="eps";
// interactiveView=false;
// batchView=false;
import three;
size(200);
//currentprojection=orthographic(5,4,3);
//defaultrender=render(compression=Zero,merge=true);
currentlight.background=blue;
material White=material(diffusepen=gray(1.0),emissivepen=gray(1.0));
draw(unitsphere,White);
Antwort3
nolight
macht Weiß ist Weiß!
nolight
macht Gelb ist Gelb!
// http://asymptote.ualberta.ca/
import three;
size(8cm,0);
draw(Label("$x$",EndPoint),O--1.5X,Arrow3);
draw(Label("$y$",EndPoint),O--1.5Y,Arrow3);
draw(Label("$z$",EndPoint),O--1.3Z,Arrow3);
//pen p=yellow+opacity(.9)+5pt;
pen p=white;
//draw(unitsphere,p);
draw(unitsphere,p,nolight);