1

If I draw a Arrow3, it does not really look 3D-ish because the line is not shaded like a cylinder. How do I change this? Probably drawing the cylinder and arrow head manually together? How?

Here is a MWE that shows the arrow that does not yet have a cylinder part:

size(700);
import solids;
import texcolors;
import three;

currentprojection=orthographic (
    camera=(8,4,4),
    up=(0,0,1),
    target=(2,2,2),
    zoom=0.8
);

// save predefined 2D orientation vectors
pair NN=N;
pair SS=S;
pair EE=E;
pair WW=W;

draw((1.3094,0,2.26599)--(3.3094,0,4.26599),(7bp)+green,Arrow3(size=30bp));

enter image description here

James
  • 4,587
  • 1
  • 12
  • 27
NOhs
  • 858

1 Answers1

1

Just add the currentlight parameter to the draw function as a quick fix. For a more complete explanation of the shading and material options Asymptote provides, see the following questions:

What does “emissive” in Asymptote do?

Asymptote: when white isn't white

Here is the complete code:

size(700);
import solids;
import texcolors;
import three;

currentprojection=orthographic (
    camera=(8,4,4),
    up=(0,0,1),
    target=(2,2,2),
    zoom=0.8
);

// save predefined 2D orientation vectors
pair NN=N;
pair SS=S;
pair EE=E;
pair WW=W;

draw((1.3094,0,2.26599)--(3.3094,0,4.26599),(7bp)+green,Arrow3(size=30bp),currentlight);
blaze
  • 529
  • If I have a material, let's say: material baseM = material(gray(0.5), black, gray(0.6), black);. How do I apply it to the arrow and keep the thickness (7bp)? I only managed to get one of these two options working. – NOhs Jul 31 '15 at 11:59
  • @MrZ: You can't directly apply a material to a path3. To specify a full-blown material (as opposed to just a color and lighting), you need to get the actual surface (the arrowhead and the tube). I recommend you try to find a satisfactory color/lighting combination before resorting to this. – Charles Staats Jul 31 '15 at 17:02