PDA

Voir la version complète : Question Forcer une vue pour l'animation



Floc
07/11/2014, 21h56
Salut à tous
Est ce que vous sauriez si il y a un moyen quand, on joue une animation de forcer la prévisualisation dans la fenêtre assignée à la camera, et pas dans la vue Top ou right.

Et par la même occasion est ce qu'il il y a moyen de retrouver le comportement de la R13 concernant les petits rectangle avec lesquels on assigne la camera.
Dans la R13 une vue était assignée à la caméra et quand on switchait avec le petit rectangle, on ne se souciait pas d'aller d'abord sélectionner le bon viewport.
C'est pas bien grave, mais quand on gère une scène avec plein de cameras... a tester... etc..., pour moi ce nouveau comportement c'est plutot une gène. Enfin ça serai bien de pouvoir choisir l'un ou l'autre.

Et peut être même qu'on peut mais j'ai pas trouvé.

valkaari
08/11/2014, 01h58
Tu peux toujours aller dans les options cinema4d, view et sélectionner "full animation redraw"

(mais bon animer toutes les vues en même temps c'est pas vraiment une bonne solution)

Pour le comportement des camera je crois que ça a été signalé du moins t'es pas le premier à "râler"

Floc
09/11/2014, 00h32
Ah ok, merci
Donc on peut supposer que si il y en a d'autre qui râle, l'option choix du comportement n'a pas été offerte.


Tu peux toujours aller dans les options cinema4d, view et sélectionner "full animation redraw"
C'est vrai que ca résoud pas vraiment le probleme, surtout si la scene est lourde, mais c'est quand même bon à savoir.


Du coup j'ai tenté de creer une commande de substition que je pourrai assigner à un raccourci clavier.
La commande est censé être très simple puisque je veux simplement activer la vue Haut gauche avant de faire play.


activeView = doc.GetActiveBaseDraw() #conserver la vue active au cas ou
camView = doc.GetBaseDraw(0) # la vue de la cam
c4d.EventAdd() #update the changes
c4d.CallCommand(12412) # Play Forwards


mais comme en python je suis plutôt niveau bac à sable, évidement ça coince.

dans la doc de GetBaseDraw il écrit : " If there are multiple views (multiple basedraws), this selects the view."
Cela retourne bien la vue demandée mais cela ne l'active pas.
Donc soit ce n'est pas la bonne commande, soit je suis une buse et je ne l'utilise pas comme il faut.
Votre avis docteur ?

valkaari
09/11/2014, 23h58
Je suis pas certain que ça soit possible de rendre actif une vue (genre on a cliqué dessus)

Si quelqu'un trouve je veux bien le code T.T


sinon j'ai trouvé un truc qui semble fonctionner.
Tu peux créer un python générator (menu script, python generator) et y coller le code suivant :



import c4d
#Welcome to the world of Python




def main():
renderDraw = doc.GetRenderBaseDraw()
c4d.DrawViews(c4d.DRAWFLAGS_ONLY_BASEDRAW,renderDr aw)





GetRenderBaseDraw() vas récupérer la vue qui est définie pour le rendu (par défaut la perspective)
et DrawViews ne vas mettre à jour que cette vue.

Sur l'objet tu as deux cases à cocher, une "optimize cache" et l'autre "reset on frame 0" en décochant "optimze cache" je gagne quelques fps.

J'suis pas du tout certain que ça soit parfait. Sur ma scène de test, j'ai plus de FPS avec ce bout de code que la vue simplement active. C'est bien qu'il doit faire moins de calcul.

Tient moi au courant si tu vois un truc qui ne fonctionne pas.


edit : Suivant l'endroit dans la hiérarchie où tu colles l'objet générateur ça fait des trucs bizarre ^^
Faut le mettre au bon endroit pour ne pas avoir de décalage de frame.

Floc
10/11/2014, 00h57
Euh en tous cas chez moi des que j'appuie sur play C4d bloque.
C'est DrawView qui bloque.
J'ai aussi éssayé sur ma vieille R13 sur Mac, et aussi dans un python Tag mais dans tous les cas ça plante direct.
Je joint mon fichier des fois que j'aurais pas compris la manip.

En tout cas merci de te pencher sur la question.

valkaari
10/11/2014, 11h00
ha vi effectivement, 13, 14 ça plante, 15, 16 ça fonctionne

y en a qui ont de la chance ^^

Floc
10/11/2014, 16h34
En fait la première config ou j'ai essayé c'était la R15 mais sous Windows.
Tien je m'en vais modifier mais infos au passage.

valkaari
10/11/2014, 20h14
C'est pas la première fois que je croise un comportement différent entre windows et osx avec du code et cinema4D qui est en lecture.

Floc
11/11/2014, 00h23
En fait dans la doc c'est ecrit "Redraws the editor views. Must be called from the main thread!"
Je sais pas trop ce que ça veut dire mais en tout cas je crois bien comprendre "Pas depuis un python Tag"
Est ce que dans un script ou dans un plugin (c.a.d. ni dans un tag ni dans un effector) on est dans le main Thread ?

valkaari
11/11/2014, 01h08
Laisse tomber, ça marche "très bien" sur osx en R15 ou R16.

Il y a une différence entre osx et windows c'est pas le fait d'appeler depuis le main thread ou pas.

Floc
11/11/2014, 01h15
oui mais c'est bêta, ma machine de travail en R15 elle est sous windows :huh:
Bon c'est pas grave je peux vivre avec. C'était déja comme ça sous maya.
Mais bon on est jamais contre un petit confort en plus :P .

Merci en tout cas.

oli_d
11/11/2014, 05h21
Je confirme que sur r15 et r16 Mac le truc de val fonctionne et que sur la r14 ça plante

J'ai juste testé de mettre les deux lignes de code dans un plugin Tool et ça fonctionne sur r14. Il faudrait améliorer là cela risque de ramer, car il redessine sur tous les messages envoyés par c4d. L'inconvénient c'est qu l'on ne peut pas utiliser un autre outil pendant ce temps, mais en cas de besoin je pense que cela devrait également fonctionner sur un dialogue de type asynchrone

Avant d'améliorer il faudrait déjà voir si ça marche sur PC ...

ATTENTION j'ai pris l'exemple du Py_LiquidPainter de la doc python et je n'ai pas changé le no de plugin, si il est déjà présent il faut le désinstaller avant.



EDIT : avec le fichier c'est mieux

valkaari
11/11/2014, 18h29
J'me suis refait une machine virtuelle sous windows 10, R16 et visual studio express 2013. (quand je cherche la merde, je cherche oui)

Je vais installer la R14 aussi (pour mes besoins)

J'aurais de quoi tester assez facilement. (ma vieille machine virtuelle était devenue trop lente)

Mais c'est vraiment casse co... d'avoir un comportement différent entre windows et mac au niveau des interactions pendant la lecture.

On pourra voir si en c++ y a une différence ou pas.

Floc
11/11/2014, 20h29
Bon alors désolé je vais faire mon chieur, mais j'ai essayé sur le poste d'un collègue sur une R15 OSX mountain lion et voila le résultat en image.

13497

Je n'ai même pas lancé l'animation j'ai juste cliqué sur exécute.

Alors est ce qu'il faut faire une incantation avant d'appuyer sur play ?
Ou alors l'image le dira je fais un truc de traviole !


Sinon Oli_d avec le plugin effectivement ça joue bien dans la fenêtre de la cam et ça ne plante pas sur Windows, mais la vue sélectionnée originellement est aussi animée.

Bon mais ca devient un peu compliqué pour ce qui devait être une simple commande non ?
je suis désolé hein ca paraissait plutôt simple au départ.