Python camera posizionata con vista Viewport

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderators: Arkimed, natas, visualtricks, cappellaiomatto

Post Reply
  • Advertising
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Python camera posizionata con vista Viewport

Post by IoAro »

Salve,
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
User avatar
visualtricks
Moderatore
Posts: 3562
Joined: Thu Sep 23, 2004 5:13 pm
Location: Pistoia

Re: Python camera posizionata con vista Viewport

Post by visualtricks »

Ciao, personalmente userei un'altra strada (anche se non so che tipo di impostazioni ha la camera che hai salvato nella libreria) e cioè creare direttamente l'oggetto camera in python e dargli tutte le impostazioni che servono

Code: Select all

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()
 
se vuoi sapere come si chiama un parametro di un oggetto qualsiasi: apri la Console, in basso c'è una finestrella dove puoi trascinare un parametro e conoscere il suo corrispettivo in python; se dai invio nella console appare anche il valore di quel parametro (a te interessa la parte tra parentesi). Puoi fare drag&drop allo stesso modo direttamente nell'editor di python.
Attachments
Schermata 2018-07-12 alle 20.32.14.jpg
Schermata 2018-07-12 alle 20.42.24.jpg
Image
๏_www.visualtricks.it_๏ .:: COMPUTER SAYS NO ::.
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Python camera posizionata con vista Viewport

Post by IoAro »

Ok, dunque...
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!
User avatar
visualtricks
Moderatore
Posts: 3562
Joined: Thu Sep 23, 2004 5:13 pm
Location: Pistoia

Re: Python camera posizionata con vista Viewport

Post by visualtricks »

La creazione e l'inserimento dei tag funziona più o meno uguale al resto ed anche le impostazioni del tag puoi darle in maniera simile ai parametri in generale:

Code: Select all

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()
 
(ho aggiunto l'undo così puoi tornare indietro) Tieni presente che in questa maniera la camera creata sarà sempre e comunque nella stessa posizione dell'editor (anche se stai guardando da un'altra camera)
Image
๏_www.visualtricks.it_๏ .:: COMPUTER SAYS NO ::.
IoAro
Posts: 51
Joined: Fri Jul 30, 2010 1:06 pm

Re: Python camera posizionata con vista Viewport

Post by IoAro »

E' esattamente quello che mi serviva!
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
Post Reply