def METHOD_NAME(self, vcount, vgrids, vcount_limits):
    vx, vy, vz = vgrids[:3]
    if vx is not None and vy is not None and vz is not None and vcount is not None:
        vcount = vcount[-1]  # no multivolume render, just take the last selection
        vx = vx[-1]
        vy = vy[-1]
        vz = vz[-1]
        ok = np.isfinite(vx) & np.isfinite(vy) & np.isfinite(vz)
        vcount_min = None
        vcount_max = None
        if vcount_limits is not None:
            try:
                vcount_min, vcount_max = vcount_limits
            except:
                vcount_min = self.vcount_limits
        if vcount_min is not None:
            ok &= (vcount > vcount_min)
        if vcount_max is not None:
            ok &= (vcount < vcount_max)
        # TODO: we assume all dimensions are equal length
        x, y, z = xyz(vx.shape[0], limits=self.limits, sparse=False, centers=True)
        v1d = [k[ok] for k in [x, y, z, vx, vy, vz]]
        vsize = 5
        vcolor = "grey"
        if self._first_time_vector:
            self._first_time_vector = False
            self.quiver = p3.quiver(*v1d, size=vsize, color=vcolor)
        else:
            with self.quiver.hold_trait_notifications():
                self.quiver.x = x[ok]
                self.quiver.y = y[ok]
                self.quiver.z = z[ok]
                self.quiver.vx = vx[ok]
                self.quiver.vy = vy[ok]
                self.quiver.vz = vz[ok]