C4DLounge.eu - Cinema 4D Gebruikers Forum

C4DLounge.eu - Cinema 4D Gebruikers Forum (http://www.c4dlounge.eu/forum/index.php)
-   Plugins & Scripts/Python/Coffee/Xpresso (http://www.c4dlounge.eu/forum/forumdisplay.php?f=31)
-   -   Oude shader plugin missing (http://www.c4dlounge.eu/forum/showthread.php?t=8097)

eenendertig 26th February 2019 16:30

Oude shader plugin missing
 
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?

roobol 26th February 2019 18:41

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 ;-)))

roobol 26th February 2019 19:54

PS: nu ik mijn post hierboven nog eens doorlees krijg ik het gevoel dat ik een dinosaurus ben....

eenendertig 26th February 2019 20:11

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...

roobol 26th February 2019 20:13

Douweeuuhh!!!

eenendertig 27th February 2019 09:05

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...

eenendertig 27th February 2019 09:30

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.

roobol 27th February 2019 11:25

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.

douwe 27th February 2019 15:38

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()


roobol 27th February 2019 18:14

Bedankt douwe, ik heb nog een paar hele oude bestanden waar ik dit eens op ga loslaten :-))


All times are GMT +2. The time now is 07:57.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
(c) C4DLounge.eu . All documents on this forum are owned by their respective creators and may not be sold or republished in any way.