27/02/2019
I made this gradient rig for a work project that I’m currently working with. With this Xpresso rig you can blend between two different gradients. You have to use same amount of knots with both gradients, otherwise the script won’t calculate correctly. There is options to restrict mixing to work only with knot position or color. I also added spline user data to remap gradient.
import c4d from c4d import utils as u def main(): global GradOut # Output gradient GradCnt = Grad1.GetKnotCount() # Get start grad knot count knotListA = [] # List for storing knots knotListB = [] # List for storing knots resultList = [] # List for final grad for i in range(GradCnt): # Iterate through knots knotListA.append(Grad1.GetKnot(i)) # Store knot data knotListB.append(Grad2.GetKnot(i)) # Store knot data for i in range(GradCnt): # Loop if MPos: # If 'Mix Position' is enabled mixPos = u.MixNum(knotListA[i]['pos'],knotListB[i]['pos'], Mix) # Mix positions else: # Otherwise mixPos = knotListA[i]['pos'] # Take position from start gradient if MColor: # If 'Mix Color' is enabled mixCol = u.MixVec(knotListA[i]['col'],knotListB[i]['col'], Mix) # Mix colors else: # Otherwise mixCol = knotListA[i]['col'] # Take color from start gradient mixBias = u.MixNum(knotListA[i]['bias'],knotListB[i]['bias'], Mix) # Mix knots bias mixBrightness = u.MixNum(knotListA[i]['brightness'],knotListB[i]['brightness'], Mix) mixPos = u.RangeMap(mixPos, 0, 1, 0, 1, True, Spline) # Remap position with spline resultList.append({ # Collect mixed gradient data 'brightness': mixBrightness, 'index': i+1, 'bias': mixBias, 'pos': mixPos, 'col': mixCol }) MixGrad = c4d.Gradient() # Initialize gradient for i in range(GradCnt): # Loop MixGrad.InsertKnot(resultList[i]['col'], resultList[i]['brightness'], resultList[i]['pos'], resultList[i]['bias'], resultList[i]['index']) GradOut = MixGrad # Output mixed gradient
ar_xpresso_mix_gradients.c4d v1.0.0 (2023.1.2)