Check which Renderengine Used

On 15/01/2018 at 02:28, xxxxxxxx wrote:

Hello, I need to check which Renderengine is use. 
For Physical I can use:

vp = rd.GetFirstVideoPost()
if vp.GetType() == c4d.VPxmbsampler:
	print "is Physical"

But How Can I check if Vray or Redshift is used for example?

On 16/01/2018 at 02:07, xxxxxxxx wrote:

Hi Holgar, thanks for writing us.

With reference to your question, rather than accessing the BaseVideoPost via RenderData::GetFirstVideoPost() I recommend to retrieve the active render engine from the active RenderData instance and querying for the RDATA_RENDERENGINE parameter.
Once you've obtained the value which correspond to the engine ID (which is expected to be unique for any rendering engine) you could loop through the BaseVideoPost instances stored in the active RenderData and check for the same ID

  
import c4d  
  
def main() :  
  # retrieve the active RenderData instance   
  rd = doc.GetActiveRenderData()      
  if rd is None:  
      return  # this should never be the case    
  # retrieve the rendering engine ID currently in use  
  rdEngine = rd[c4d.RDATA_RENDERENGINE]  
  if rdEngine == 0:  
      print "Current render engine is Standard [", rdEngine,"]"  
      return       
  # retrieve the first BaseVideoPost instance  
  bvp = rd.GetFirstVideoPost()  
    
  # loop through the different BaseVideoPost instances inserted in the RenderData instance  
  # and search for the one matching the active rendering engine ID  
  while bvp is not None:  
      # retrieve the engine ID  
      bvpType = bvp.GetType()  
      # compare against the active engine ID  
      if bvpType == rdEngine:  
          bvpName = bvp.GetName()  
          print "Current render engine is", bvpName, "[", rdEngine,"]"  
          return  
      # look for the next   
      bvp = bvp.GetNext()  
    
  
if __name__=='__main__':  
  main()  
  

On 16/01/2018 at 02:15, xxxxxxxx wrote:

That helps me a lot. Thank you.