Forse qualcuno di voi si ricorda di Adjust to Bitmap: plug-in gratuita distribuita dallo stesso sito del vecchio Tuile-Gen (atualmente riportato in vita proprio dal teem del c4dZone!).
Ecco, siccome a me dispiaceva troppo di non averla più, ho studiato un po' come poter fare qualcosa di simile con Python!
Si, ma cosa fa?
Imposta rapidamente ad un piano a cui è assegnato un materiale con una texture le dimensioni della texture stessa
E a cosa potrebbe servire?
Per esempio è utile per ridimensionare al volo i piani su cui giacciono delle blueprint.
Il funzionamento è semplice:
- crei i piani e assegni le texture
- selezioni un piano per volta ed esegui lo script (tramite pulsante in una tavolozza o tramite scorciatoia da tastiera)
Installazione:
- scompatta semplicemete il file zip nel percorso C:\...DOVE_HAI_INSTALLATO_C4D...\library\scripts
- ora puoi decidere se inserire il pulsante in una tavolozza e/o assegnargli una scorciatoia da tastiera
per chi volesse dare un'occhiata al codice:
Codice: Seleziona tutto
import c4d
from c4d import gui, bitmaps
def main():
# controlla se hai selezionato qualcosa
if not op:
print "Selezionare un oggetto Piano"
gui.MessageDialog("Selezionare un oggetto Piano")
return
# controlla se hai selezionato un oggetto Piano
elif op.GetType()!=5168:
print "Selezionare un oggetto Piano"
gui.MessageDialog("Selezionare un oggetto Piano")
return
# controlla se l'oggetto selezionatoha una texture
elif not op.GetTag(c4d.Ttexture):
print "All'oggetto Piano non è assegnato alcun materiale"
gui.MessageDialog("All'oggetto Piano non è assegnato alcun materiale")
else:
# leggi path texture
path = op.GetTag(c4d.Ttexture)[c4d.TEXTURETAG_MATERIAL][c4d.MATERIAL_COLOR_SHADER][c4d.BITMAPSHADER_FILENAME]
print "path: "+path
# assegna la texture ad una nuova bitmap
bmp = bitmaps.BaseBitmap(path)
bmp.InitWith(path)
# leggi i valori x y della texture
x, y = bmp.GetSize()
print x
print y
# assegna al Piano i valori letti
op[c4d.PRIM_PLANE_WIDTH] = x
op[c4d.PRIM_PLANE_HEIGHT] = y
op[c4d.PRIM_PLANE_SUBW] = 1
op[c4d.PRIM_PLANE_SUBH] = 1
c4d.EventAdd()
return
if __name__=='__main__':
main()
Spero che qualcuno possa trovare utile questo mio esperimento

FOLLOW US