Asymptote: Wenn Weiß nicht Weiß ist

Asymptote: Wenn Weiß nicht Weiß ist

Ich versuche, eine weiße 3D-Kugel mit Asymptote (3D-PDF) anzuzeigen, aber sie wird immer grau angezeigt:

Bildbeschreibung hier eingeben

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:

Bildbeschreibung hier eingeben

Antwort1

Wie g.kovbereits angedeutet, ist es möglicherweise besser, mit dem materialstatt 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 emissivepenund diffusepennach Bedarf verringern. Ich füge den Code und eine Änderung des Parameters emissivepenvon 1.0nach 0.5mit 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);

mwe

Antwort3

nolightmacht Weiß ist Weiß! nolightmacht Gelb ist Gelb!

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

// 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);

verwandte Informationen