Асимптота: когда белое не белое

Асимптота: когда белое не белое

Я пытаюсь отобразить белый 3D-шар с помощью Asymptote (3D PDF), но он всегда получается серым:

введите описание изображения здесь

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

Я понимаю, что это проблема с освещением, и я пробовал играть с его настройками (строки, закомментированные в моем исходнике, являются некоторыми из моих попыток), но яникогдаумудриться сделать так, чтобы белое было белым. Если я правильно понял,Мне нужен более белый диффузный компонент в моем свете, но я не вижу, как этого добиться. И документация не очень понятна…


Это будет частью молекулярной модели, и я собираюсь визуализировать ее примерно так:

введите описание изображения здесь

решение1

Как g.kovпредполагается, вам может быть лучше играть с , materialа не с освещением. В частности, окружающий свет, как правило, довольно тонкий; вам лучше использовать emissivepen, который по сути добавляет именно этот цвет ко всей сфере независимо от освещения.

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

Результат:

решение2

Это, вероятно, будет слишком белым для вас, но вы можете уменьшить emissivepenи diffusepenпо мере необходимости. Я прилагаю код и изменение параметра emissivepenс 1.0на 0.5с шагом 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);

мве

решение3

nolightделает белый белым! nolightделает желтый желтым!

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

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

Связанный контент