oli_d
04/01/2014, 11h56
Bonjour et bonne année à tous !
J'ai un problème qui me prend la tête depuis quelques heures, je fais un script qui modifie la définition du rendu en fonction d'une échelle et du cube sélectionné et qui zoome sur ce dernier.
Au rendu cela marche, mais impossible de mettre à jour la vue correctement. J'ai tout essayé (enfin sûrement pas vu que ça marche pô) au rendu tout baigne, mais dans la vue il me garde les anciens paramètre de rendu
Un bout de code pour mieux expliquer (mettre une caméra en vue de haut active pour le rendu avant):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import c4d
from random import randint
def main():
#modification aléatoire de la définition du rendu
rd = doc.GetActiveRenderData()
res = rd[c4d.RDATA_PIXELRESOLUTION_VIRTUAL]
xres = randint(800,3000)
yres = randint(800,3000)
rd[c4d.RDATA_XRES] = xres
rd[c4d.RDATA_YRES] = yres
rd.Message(c4d.MSG_UPDATE)
# récupération des données de la fenêtre de rendu
bd = doc.GetRenderBaseDraw()
dimension = bd.GetSafeFrame()
left, top, right, bottom = dimension["cl"], dimension["ct"], dimension["cr"], dimension["cb"]
mini = c4d.Vector(left,top,0)
maxi = c4d.Vector(right,bottom,0)
#spline qui devrait représenter la diagonale de la zone à rendre
res = c4d.SplineObject(2,c4d.SPLINETYPE_LINEAR)
pts = [bd.SW(mini),bd.SW(maxi)]
res.SetAllPoints(pts)
res.Message(c4d.MSG_UPDATE)
doc.InsertObject(res)
c4d.EventAdd()
if __name__=='__main__':
main()
Ce code modifie aléatoirement la définition du rendu et devrait insérer une spline qui représente la diagonale de la partie rendu de la fenêtre.
Si vous modifiez manuellement le réglages de rendus largeur ou hauteur et que vous relancez le code sans la partie du haut cela fonctionne, mais dès que l'on modifie le renderData pas de mise à jour de la vue...
J'ai tenté différents trucs dans Message(), c4d.DrawViews(), c4d.EventAdd() mais sans succès.
Est ce que quelqu'un aurait une idée ?
J'ai un problème qui me prend la tête depuis quelques heures, je fais un script qui modifie la définition du rendu en fonction d'une échelle et du cube sélectionné et qui zoome sur ce dernier.
Au rendu cela marche, mais impossible de mettre à jour la vue correctement. J'ai tout essayé (enfin sûrement pas vu que ça marche pô) au rendu tout baigne, mais dans la vue il me garde les anciens paramètre de rendu
Un bout de code pour mieux expliquer (mettre une caméra en vue de haut active pour le rendu avant):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import c4d
from random import randint
def main():
#modification aléatoire de la définition du rendu
rd = doc.GetActiveRenderData()
res = rd[c4d.RDATA_PIXELRESOLUTION_VIRTUAL]
xres = randint(800,3000)
yres = randint(800,3000)
rd[c4d.RDATA_XRES] = xres
rd[c4d.RDATA_YRES] = yres
rd.Message(c4d.MSG_UPDATE)
# récupération des données de la fenêtre de rendu
bd = doc.GetRenderBaseDraw()
dimension = bd.GetSafeFrame()
left, top, right, bottom = dimension["cl"], dimension["ct"], dimension["cr"], dimension["cb"]
mini = c4d.Vector(left,top,0)
maxi = c4d.Vector(right,bottom,0)
#spline qui devrait représenter la diagonale de la zone à rendre
res = c4d.SplineObject(2,c4d.SPLINETYPE_LINEAR)
pts = [bd.SW(mini),bd.SW(maxi)]
res.SetAllPoints(pts)
res.Message(c4d.MSG_UPDATE)
doc.InsertObject(res)
c4d.EventAdd()
if __name__=='__main__':
main()
Ce code modifie aléatoirement la définition du rendu et devrait insérer une spline qui représente la diagonale de la partie rendu de la fenêtre.
Si vous modifiez manuellement le réglages de rendus largeur ou hauteur et que vous relancez le code sans la partie du haut cela fonctionne, mais dès que l'on modifie le renderData pas de mise à jour de la vue...
J'ai tenté différents trucs dans Message(), c4d.DrawViews(), c4d.EventAdd() mais sans succès.
Est ce que quelqu'un aurait une idée ?