Tube with variable color, opacity, and radius

The following code is based on the Reap-Sow approach, and uses for the ColorFunction a pure function, as in your first approach. The pure function is rewritten with Sow and uses the slot #4 for the color variation, rather than #3, to take the values given by u.

rr = Reap[
       ParametricPlot3D[
         {Sin[u], Cos[u], u/10}, {u, 0, 25}, 
          ColorFunction -> (Directive[Opacity[0.5 #3], Hue[Sow[1/2 - #4/50]]] &), 
          ColorFunctionScaling -> False,
          PlotRange -> All,
          MaxRecursion -> 0, PlotPoints -> 300, 
          Method -> {"TubePoints" -> 300}
       ]
];

rr[[1]] /. Line[pts_, rest___] :> Tube[pts, 0.1 - .15 rr[[2]], rest]

enter image description here

Note that since here $z = u /10$, it is equivalent to use instead:

Hue[Sow[1/2 - #3/5]]

which is what you have for the ColorFunction of your first approach (Sow apart).


This approach is equivalent to Xavier's, except that I use EvaluationMonitor to catch the parameter values being used to plot the curve.

{plot, vals} = Reap[ParametricPlot3D[{Sin[u], Cos[u], u/10}, {u, 0, 25}, 
                                     ColorFunction -> (Hue[1/2 - #4/50, 1, 1, 0.5 #3] &), 
                                     ColorFunctionScaling -> False,
                                     EvaluationMonitor :> Sow[u], 
                                     MaxRecursion -> 0, Method -> {"TubePoints" -> 300},
                                     PlotPoints -> 300]];

Show[plot /. Line[pts_, rest___] :> Tube[pts, 0.1 - .15 (1/2 - Sort[vals[[1]]]/50), rest],
     PlotRange -> All]

some weirdly-colored tube