As the examples in the documentation show, a list of Graphics3D primitives is OK. However, this list seems to require 'literal' primitives or directives such as 'Red' or 'Green'. Expressions that evaluate to primitives or directives such as If[x > 0, Red, Green]
seem not to work.
My code which shows malfunctions here is quite complicated and it would be not easy to bring it in a demonstrable form. So, at least to start the discussion, I would like ask whether somebody in our community came across the problem and has an answer off hand.