![]() |
#1
|
|||
|
|||
![]()
Hallo,
Ik ben aan een projectje aan het werken waar nogal wat verschillende bestanden inzitten van turbosquid, 3d warehouse, .... Probleem is dat ik een melding krijg: "PluginShader "Dirt" (5707) cannot be found. Ik heb op een forum van cgsociety gezien dat Douwe ergens in 2013 daar iets over gepost heeft maar dat heeft te maken met Python en daar ken ik niets van .... Iemand enig idee hoe ik deze "plugin" of "shader" kan zoeken en verwijderen? |
#2
|
|||
|
|||
![]()
De dirt shader is een relikwie uit R8.5 en is niet echt een plug-in, maar een shader. Hij zit altijd in de materialen, meestal in het diffusie kanaal waar je hem ook kunt verwijderen. Om het zelfde effect te krijgen kan je (ook in het diffusie kanaal) de effects > ambient occlusion shader gebruiken.
Als je alle materialen weggooit en nieuwe aanmaakt is het probleem ook opgelost. Oh, en Python zit daar voor niets tussen (bestond nog niet in R8.5 ;-)))
__________________
http://www.roobol.be |
#3
|
|||
|
|||
![]()
PS: nu ik mijn post hierboven nog eens doorlees krijg ik het gevoel dat ik een dinosaurus ben....
__________________
http://www.roobol.be |
#4
|
|||
|
|||
![]()
Het probleem is dat ik tientallen verschillende matetialen heb en ik ze dus niet allemaal kan weggooien maar dat ik ook niet weet in welk materiaal het probleem zit. Zoeken op dirt in de material manager brengt ook niets op.
De python oplossing van douwe kon de shader vinden en verwijderen. Maar daar ken ik dus niets van... |
#5
|
|||
|
|||
![]()
Douweeuuhh!!!
__________________
http://www.roobol.be |
#6
|
|||
|
|||
![]()
zie hier Douwe's post:
https://forums.cgsociety.org/t/how-t...thon/1579765/2 Misschien kan jij het mij ook uitleggen Kees? Ik begrijp er niet veel van... |
#7
|
|||
|
|||
![]()
Ik heb de boosdoener gevonden door elk object afzonderlijk te deleten en te kijken of het de error er dan nog was. Monniken werk maar het is toch gelukt.
|
#8
|
|||
|
|||
![]()
Zegt mij ook niets, maar blij dat je eruit bent geraakt.
Tip: delete een volgende keer de helft van de objecten, dan de helft van de helft, etc.; gaat veel sneller om de schurk vast te pinnen.
__________________
http://www.roobol.be |
#9
|
||||
|
||||
![]()
Je bent er al doorheen, maar voor toekomstige wedervaren :
Plak de code in je Script / Script Manager en klik op Execute. De rest gaat vanzelf. In regel 13 ( if shader.GetName()=="Dirt": ) kan je het woordje Dirt vervangen door de naam van eender welke Shader. Die wordt dan automatisch verwijderd uit de Texture Parameter van alle kanalen van al je materialen. Code:
import c4d, os ############################################################ # recursive function where we do stuff to the shaders ############################################################ def shadertree(shader): # Loop through the BaseList while(shader): # This is where you do stuff print shader.GetName() if shader.GetName()=="Dirt": shader.Remove() # If it's a bitmap, we'll look at the filename if shader.GetType() == c4d.Xbitmap: filename = shader[c4d.BITMAPSHADER_FILENAME] print filename # for instance we can set the filename to just the file part filename = os.path.basename(filename) shader[c4d.BITMAPSHADER_FILENAME] = filename # Check for child shaders & recurse if shader.GetDown(): shadertree(shader.GetDown()) # Get the Next Shader shader = shader.GetNext() ############################################################ # main function ############################################################ def main(): # Get the first material mat = doc.GetFirstMaterial() # Loop through materials while(mat): # Get the first shader # Note - this is a 4D list - you've gotta GetDown shd = mat.GetFirstShader() # Use our recursive function to parse the shader tree shadertree(shd) # Get the Next material mat = mat.GetNext() if __name__=='__main__': main() |
#10
|
|||
|
|||
![]()
Bedankt douwe, ik heb nog een paar hele oude bestanden waar ik dit eens op ga loslaten :-))
__________________
http://www.roobol.be |
![]() |
Thread Tools | |
Display Modes | |
|
|