Python camera posizionata con vista Viewport
Moderatori: Arkimed, natas, visualtricks, cappellaiomatto
-
- Advertising
Python camera posizionata con vista Viewport
ho creato un piccolo script in cui semplicemente carico una camera nella scena:
import c4d
from c4d import documents
def main():
c4d.documents.MergeDocument(doc,"preset://Tools.lib4d/Camera 2.2.c4d",3)
c4d.EventAdd()
if __name__=='__main__':
main()
La creo così anziché crearla nella maniera tradizionale perché ha dei parametri preimpostati che sono più adattati alle mie esigenze.
Ovviamente quando viene creata si posiziona al centro della scena e mi piacerebbe, invece, che si creasse utilizzando le coordinate della vista del viewport in quel momento (quindi come quando creo una camera normale). E' possibile aggiungere allo script Python questa istruzione?
Grazie
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python camera posizionata con vista Viewport
Codice: Seleziona tutto
import c4d
from c4d import gui
#Welcome to the world of Python
def main():
doc = c4d.documents.GetActiveDocument()
bd = doc.GetActiveBaseDraw()
cam = bd.GetEditorCamera().GetClone() # 'cloniamo' la camera editor
#impostare qui sotto tutti i parametri necessari
cam[c4d.CAMERAOBJECT_STEREO_MODE]= 0
cam[c4d.CAMERA_FOCUS] = 50
cam[c4d.CAMERAOBJECT_APERTURE] = 36
cam[c4d.CAMERAOBJECT_FILM_OFFSET_X]
cam[c4d.ID_BASELIST_NAME] = "new_camera" #diamole un nome
doc.InsertObject(cam) #aggiungiamola alla scena
c4d.EventAdd()
if __name__=='__main__':
main()
Re: Python camera posizionata con vista Viewport
Grazie per la risposta e si, trovo assolutamente sensato l'approccio che mi hai proposto.
Il fatto è che ho omesso un particolare (ritenendolo erroneamente superfluo) che credo renda tutto un po' più difficile... la camera modificata che vorrei caricare è una camera V-Ray! E le modifiche, nel particolare, riguardano il white balance, iso, f-stop e shutter speed... cambiare quei parametri mi servirebbe per creare delle camere impostate, anche se genericamente, per alcune situazioni tipo: ad esempio interno giorno, interno notte, esterno giorno, esterno notte, ecc...
Ora, provando a trascinare questi valori direttamente in Python come hai detto tu li ritrovo e credo di poterli impostare senza troppi problemi, ma la questione è che non so in Python come caricare una camera che abbia già il tag V-Ray!
Per questo tu sai come fare?
P.s. e comunque 'sta cosa del trascinamento dei parametri è una roba clamorosa... come nelle altre risposte che m'hai dato, mi hai aperto un mondo! So che possono sembrare cose basilari, ma per me sono fondamentali per colmare, almeno parzialmente, la mia totale ignoranza di Python... grazie davvero!
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Python camera posizionata con vista Viewport
Codice: Seleziona tutto
import c4d
from c4d import gui
#Welcome to the world of Python
def main():
doc = c4d.documents.GetActiveDocument()
bd = doc.GetActiveBaseDraw()
c4d.StopAllThreads()
doc.StartUndo()
cam = bd.GetEditorCamera().GetClone() # 'cloniamo' la camera editor
#proprietà della camera
cam[c4d.CAMERAOBJECT_STEREO_MODE]= 0
cam[c4d.CAMERA_FOCUS] = 50
cam[c4d.CAMERAOBJECT_APERTURE] = 36
cam[c4d.CAMERAOBJECT_FILM_OFFSET_X]
cam[c4d.ID_BASELIST_NAME] = "new_camera" #diamole un nome
#creazione del vray tag
camtag = c4d.BaseTag(1020898) #VrayPhisicalCam tag ID
#proprietà del tag:
camtag[c4d.VRAYPHYSICALCAMERATAG_VIGNETTING] = 1.0 #Intensità Vignetting
camtag[c4d.VRAYPHYSICALCAMERATAG_WB_PRESETS] = 1 # Whitebalance preset 0 (Custom)
camtag[c4d.VRAYPHYSICALCAMERATAG_WHITEBALANCE] = c4d.Vector(1,1,1) #WB Color RGB
camtag[c4d.VRAYPHYSICALCAMERATAG_ISO] = 100.0 #iso
camtag[c4d.VRAYPHYSICALCAMERATAG_FSTOP] = 8.0 #fstop
camtag[c4d.VRAYPHYSICALCAMERATAG_SHUTTERSPEED] = 200.0 #shutterspeed
camtag[c4d.VRAYPHYSICALCAMERATAG_DOFON] = 1 #Dof ON
camtag[c4d.VRAYPHYSICALCAMERATAG_SUBDIVS] = 6 #Dof subdv
cam.InsertTag(camtag) #assegna la tag 'camtag' alla camera
doc.InsertObject(cam) #aggiunge la camera alla scena
doc.AddUndo(c4d.UNDOTYPE_NEW, cam)
doc.EndUndo()
c4d.EventAdd()
if __name__=='__main__':
main()
Re: Python camera posizionata con vista Viewport
Oltre ad aver risposto alle mie domande mi hai anche dato degli input per poter risolvere altre questioni che da tempo mi sarebbe piaciuto affrontare: il drag&drop dei parametri risulta fondamentale per tantissimi aspetti che volevo personalizzare ed altre cosette (come l'undo) permettono di regolare tutto al meglio!
Grazie davvero Visualtricks, sei preparatissimo e gentilissimo!
-
- Advertising
FOLLOW US