Hello fellow developers, this is my first post so I hope I've accurately tagged and formatted. I'll try to be as clear as possible, but this is one of my first large scale projects so I may miss some very obvious issues, refer to things incorrectly, or build things out in a overly-verbose way. I'm more than happy to clarify anything.
The Goal
Allow an artist to define render setting and project setting guidelines in a scene file as well as mark the critical settings. This data would then be used as a sanity check before a job could be submitted to a web based or local render farm.
Current approach
Currently I am only focused on properly generating the guidelines as it will teach me about properly accessing the data I need. Here is the current basic flow:
- Get the current doc
- Get the Active Render Data
- Get the name of the render data
- For the data and ids in the renderdata.GetDescription(c4d.DESCFLAGS_DESC_NONE), get the name and the identity.
- GetDataInstance of the renderdata, then use GetData(each id) to get the value of each setting
ex: Parameter Name: Anti-Aliasing, ID: (5002, 15, 110304), Type: RDATA_ANTIALIASING
First question: This does not allow me to find the name, or description, or container id of the selected option, so I can get the value and look up the representation of that value, but it requires me to reference the drsettings.h file or keep a lookup table in my script. Is there a way I can find the strings I'm looking for? I want to retrieve "RDATA_ANTIALIASING_GEOMETRY", "Geometry"
It is important that I retrieve detailed information about the redshift AOV settings, so I have split that into a separate process. I wrote this first, so the method is different and I will likely refactor to work more similarly to above.
- get redshift videopost redshift.FindAddVideoPost(renderdata, redshift.VPrsrenderer)
- iterate through a dictionary of hard-coded container ids with corresponding nested dictionaries describing their selections.
ex:
"REDSHIFT_AOV_FILE_COMPRESSION" : {
"Display Name" : "File Compression Type",
"Values" : {
1: {
"Display Name" : "File Compression Default",
"Attribute Identifer" : "REDHIFT_AOV_FILE_COMPRESSION_DEFAULT"
},
100: {
"Display Name" : "File Compression TIFF LZW",
"Attribute Identifer" : "REDHIFT_AOV_FILE_COMPRESSION_TIFF_LZW"
},
Second question: Am I making this way harder on myself than I need it to be? Is there a more elegant solution that simply 'zips' two render settings and flags any crashes?
I am still struggling to understand how this data is represented through the sdk and how to debug. I am trying to figure out how I can 'browse' the data that is retrieved when I call GetActiveRenderData() for example, as that would help me decide how to store and access it later.
Anyway I hope this isn't too basic of a question and I am already very thankful for the insight shared on other posts. I will be continuing to work on this for a while, so if I make any significant changes I will update here.
Thanks in advance.