Setting Gradient Interpolation for Sketch and Toon
-
On 02/05/2014 at 22:35, xxxxxxxx wrote:
I am building a plugin that renders using Sketch and Toon, I am writing a bit that checks is S&T is enabled, if not turns it on and sets the settings to what I need them to be.
My problem is I want to set the Gradient Interpolation on the Shading tab to 'Smooth Knot'
I have absolutely no idea how to get/set this value..
I don't suppose anyone here knows do they?
-
On 03/05/2014 at 01:24, xxxxxxxx wrote:
Hi Anadin,
it´s written in the SDK like:
Gradient.SetData
( id , data )
Sets a data item from the gradient container.
GRADIENT_INTERPOLATION_SMOOTHKNOT Smooth knot.
To be more specific, with:gradient.GetData(c4d.GRADIENT_INTERPOLATION),"ID"
You can get the interpolation idI´m not sure if this helps?
martin
-
On 04/05/2014 at 00:49, xxxxxxxx wrote:
Ooh that looks interesting, didn't think to search for a generic gradient - I think you are on to something but I can't figure out how to use it..
import c4d
from c4d import gui
#Welcome to the world of PythonXRes = 1024
YRes = 768
OutputPath = '/Users/user/Desktop/test.png'def main() :
print "Setting RenderData"
#Get the current documents render settings
RenderData = doc.GetActiveRenderData()
print "RenderData : " + str(RenderData)
#Store a copy of those settings
RenderDataBackup = RenderData.GetClone()
#Access the basedraw of the render view (filters etc.)
BaseDraw = doc.GetActiveBaseDraw()
#Basic Settings
RenderData[c4d.RDATA_AUTOLIGHT] = False
RenderData[c4d.RDATA_SAVEIMAGE] = True
RenderData[c4d.RDATA_ALPHACHANNEL] = True
RenderData[c4d.RDATA_STRAIGHTALPHA] = True
RenderData[c4d.RDATA_XRES] = float(XRes)
RenderData[c4d.RDATA_YRES] = float(YRes)
RenderData[c4d.RDATA_FORMAT] = 1023671
RenderData[c4d.RDATA_MULTIPASS_SAVEIMAGE] = False
#Actual Output
RenderData[c4d.RDATA_PATH] = OutputPath#Add Sketch And Toon if it's not there and required and set up the defaults
if c4d.modules.CheckSketch() : #if Sketch and Toon is installed && it is wanted. set it up and use it (Do the check)
rd = doc.GetActiveRenderData() # Get the current renderdata
vp = rd.GetFirstVideoPost() # Get the first Video Post in the Renderdata object
if vp == None:
SketchEffect = c4d.BaseList2D(1011015) # set a baseList2D with the ID of Sketch and Toon
rd.InsertVideoPost(SketchEffect) #insert the S&T video post
vp = rd.GetFirstVideoPost()BrowseRD(vp, True) #Run the Function
if vp.GetName() == "Sketch and Toon": #if S&T was found, the rdata name var should be "Sketch and Toon"...
SketchEffect = vp #Set the "SketchEffect" variable to the current S&Telse: #if not, set the "SketchEffect" to a NEW S&T videopost
SketchEffect = c4d.BaseList2D(1011015) # set a baseList2D with the ID of Sketch and Toon
rd.InsertVideoPost(SketchEffect) #insert the S&T video postSketchEffect[c4d.OUTLINEMAT_SHADING_BACK] = 0
SketchEffect[c4d.OUTLINEMAT_SHADING_OBJECT_MODEL] = 1
c4d.Gradient.SetData(c4d.GRADIENT_INTERPOLATION)#Remove Sketch Tags and Replace?
#Make Sketch Mat?
c4d.EventAdd()
def BrowseRD(rd, children) : #function that scrolls through the video post effects to find S&T
if not rd: return
if rd.GetName() == "Sketch and Toon":
print("S&T Vido Post is Present...")
return
BrowseRD(rd.GetNext(), children)
if children:
BrowseRD(rd.GetDown(), children)if __name__=='__main__':
main() -
On 04/05/2014 at 08:45, xxxxxxxx wrote:
get it,set it and write it back to your effect
gradient=SketchEffect[c4d.OUTLINEMAT_SHADING_GRADQUANT] print gradient.GetData(c4d.GRADIENT_INTERPOLATION),"ID" gradient.SetData(c4d.GRADIENT_INTERPOLATION,2) print gradient.GetData(c4d.GRADIENT_INTERPOLATION),"ID2" SketchEffect[c4d.OUTLINEMAT_SHADING_GRADQUANT]=gradient
cheers martin
-
On 08/05/2014 at 05:08, xxxxxxxx wrote:
aha! thanks so much Martin