@staticmethod<EOL><INDENT>def plot3d(points, color=(<NUM_LIT:0.5>, <NUM_LIT:0.5>, <NUM_LIT:0.5>), tube_radius=<NUM_LIT>, n_components=<NUM_LIT:30>, name=None):<DEDENT>
points = np.asanyarray(points)<EOL>mp = MaterialProperties(<EOL>color = np.array(color),<EOL>k_a = <NUM_LIT:0.5>,<EOL>k_d = <NUM_LIT>,<EOL>k_s = <NUM_LIT:0.0>,<EOL>alpha = <NUM_LIT>,<EOL>smooth=True<EOL>)<EOL>vec = np.array([<NUM_LIT:0>,<NUM_LIT:1>]) * tube_radius<EOL>angle = np.pi * <NUM_LIT> / n_components<EOL>rotmat = np.array([<EOL>[np.cos(angle), -np.sin(angle)],<EOL>[np.sin(angle), np.cos(angle)]<EOL>])<EOL>perim = []<EOL>for i in range(n_components):<EOL><INDENT>perim.append(vec)<EOL>vec = np.dot(rotmat, vec)<EOL><DEDENT>poly = Polygon(perim)<EOL>mesh = trimesh.creation.sweep_polygon(poly, points)<EOL>obj = SceneObject(mesh, material=mp)<EOL>if name is None:<EOL><INDENT>name = str(uuid.uuid4())<EOL><DEDENT>Visualizer3D._scene.add_object(name, obj)<EOL>
Plot a 3d curve through a set of points using tubes.

        Parameters
        ----------
        points : (n,3) float
            A series of 3D points that define a curve in space.
        color : (3,) float
            The color of the tube.
        tube_radius : float
            Radius of tube representing curve.
        n_components : int
            The number of edges in each polygon representing the tube.
        name : str
            A name for the object to be added.