diff options
Diffstat (limited to 'graphics/asymptote/base/three.asy')
-rw-r--r-- | graphics/asymptote/base/three.asy | 11 |
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; }; |