Estoy intentando mostrar una bola 3D blanca con asíntota (PDF 3D), pero siempre aparece gris:
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));
Entiendo que es un problema de iluminación y he intentado jugar con su configuración (las líneas comentadas en mi fuente son algunos de mis intentos), peronuncalogra que el blanco sea blanco. Si entiendo correctamente,Necesito un componente difuso más blanco en mi lámpara., pero no veo cómo lograrlo. Y la documentación no es muy clara…
Esto será parte de un modelo molecular, y el renderizado que voy a realizar será algo como este:
Respuesta1
Como g.kov
sugiere, puede que sea mejor jugar con la material
iluminación que con la iluminación. En particular, la luz ambiental tiende a ser bastante sutil; es mejor que uses emissivepen
, que esencialmente agrega exactamente ese color a toda la esfera, independientemente de la iluminación.
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) );
El resultado:
Respuesta2
Probablemente le resulte demasiado blanco, pero puede disminuirlo emissivepen
según diffusepen
sea necesario. Adjunto el código y un cambio de parámetro emissivepen
de 1.0
a 0.5
con paso de 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);
Respuesta3
nolight
hace que el blanco sea blanco!
nolight
hace que el amarillo sea amarillo!
// 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);