summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/three.asy
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/three.asy')
-rw-r--r--graphics/asymptote/base/three.asy11
1 files changed, 7 insertions, 4 deletions
diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy
index cde32f6acb..b93833f666 100644
--- a/graphics/asymptote/base/three.asy
+++ b/graphics/asymptote/base/three.asy
@@ -2681,7 +2681,7 @@ struct scene
if(P.absolute)
this.P=P.copy();
- else if(P.showtarget)
+ else if(P.showtarget && !pic.empty3())
draw(pic,P.target,nullpen);
t=pic.scaling(xsize3,ysize3,zsize3,keepAspect,warn);
@@ -2893,7 +2893,7 @@ object embed(string prefix=outprefix(), string label=prefix,
triple margin=(S.viewportmargin.x,S.viewportmargin.y,0);
M += margin;
m -= margin;
- } else if(M.z >= 0) abort("camera too close");
+ } else if(M.z >= 0 && !S.pic2.empty()) abort("camera too close");
if(primitive())
format=settings.v3d ? "v3d" : settings.outformat;
@@ -3038,12 +3038,15 @@ currentpicture.fitter=new frame(string prefix, picture pic, string format,
light light, projection P) {
frame f;
bool empty3=pic.empty3();
- if(!empty3) f=embedder(new object(string prefix, string format) {
+ if(!empty3 || pic.queueErase3) {
+ f=embedder(new object(string prefix, string format) {
return embed(prefix=prefix,pic,format,xsize,ysize,keepAspect,view,
options,script,light,P);
},prefix,format,view,light);
+ pic.queueErase3=false;
+ }
- if(is3D(format) || empty3)
+ if(is3D(format) || pic.queueErase)
add(f,pic.fit2(xsize,ysize,keepAspect));
return f;
};