Bonjour,
J'utilise présentement des lignes de commandes mises dans un fichier .bat pour combiner différentes prises de vue et faire les rotations-translations requises. Je dois visualiser rapidement les fichiers résultants (quelques milliers) pour faire un trie initial. Pour faciliter le trie, j'aimerais extraire une image (bmp ou autre) de chaque fichier en ajoutant une option aux lignes commandes. J'ai réussi à compiler votre programme et j'essai de me retrouver dans le code pour implémenter la fonctionalité désirée. Comme je suis nouveau en programmation C++ et objet en général, je me demandais si vous prévoyer implémenter une telle fonctionalité, ou sinon, si vous pensez que cela peut se faire relativement facilement, auquel cas je m'y attarderai.
En passant, merci grandement pour cet utilitaire qu'est Cloudcompare, il m'est très utile en ce moment.
Cordialement
Joël Rivest
renderfile with command line
Re: renderfile with command line
Techniquement je comprends ce que vous dites mais je précise que c'est quand même un forum anglophone ;)
Sinon faire ce que vous voulez n'est pas impossible mais va être compliqué : dans le mode "Command line" (class "ccCommandLineParser") aucune fenêtre d'application (MainWindow) n'est créée et il n'y a donc pas non plus de vue OpenGL (c'est d'ailleurs un des intérêts de ce mode, donc ça restera sans doute comme ça dans la version officielle).
Dans votre cas il faudrait en créer une pour afficher les entités 3D et enfin faire une capture (voir ccGLWindow::renderToFile).
En détail, il faut :
Sinon faire ce que vous voulez n'est pas impossible mais va être compliqué : dans le mode "Command line" (class "ccCommandLineParser") aucune fenêtre d'application (MainWindow) n'est créée et il n'y a donc pas non plus de vue OpenGL (c'est d'ailleurs un des intérêts de ce mode, donc ça restera sans doute comme ça dans la version officielle).
Dans votre cas il faudrait en créer une pour afficher les entités 3D et enfin faire une capture (voir ccGLWindow::renderToFile).
En détail, il faut :
- créer une instance de QMainWindow (la "MainWindow" officielle devrait faire l'affaire)
- récupérer un pointeur vers la vue 3D courante (MainWindow::getActiveGLWindow)
- ajouter les entités 3D à cette vue (ccGLWindow::addToOwnDB)
- régler le zoom (ccGLWindow::updateConstellationCenterAndZoom)
- régler la caméra si besoin (ccGLWindow::setView ou ccGLWindow::rotateBaseViewMat)
- et abuser des appels à QApplication::porcessEvents car vous utiliserez des widgets Qt sans "main loop" active (Cf. le fonctionnement de Qt) ... sinon vous ne verrez rien s'afficher ...
Daniel, CloudCompare admin
Re: renderfile with command line
Bonjour,
Merci d'avoir pris le temps de me répondre (je viens juste de voir la réponse). Je suspectais un peu la difficulté occasionnée par l'absence de fenêtre d'application. Finalement, je vais utiliser une approche différente, soit me créer un viewer avec webgl pour visualiser rapidement les fichiers produits par Cloudcompare.
Et désolé pour l'anglais. Si vous le voulez, je peux traduire ma question et la réponse pour le bénéfice des utilisateurs du forum.
Encore merci.
Joël
Merci d'avoir pris le temps de me répondre (je viens juste de voir la réponse). Je suspectais un peu la difficulté occasionnée par l'absence de fenêtre d'application. Finalement, je vais utiliser une approche différente, soit me créer un viewer avec webgl pour visualiser rapidement les fichiers produits par Cloudcompare.
Et désolé pour l'anglais. Si vous le voulez, je peux traduire ma question et la réponse pour le bénéfice des utilisateurs du forum.
Encore merci.
Joël
Re: renderfile with command line
Bonjour
Je viens de le tester, il charge très rapidement et fonctionne très bien. Pour mon besoin, j'aimerais afficher simultanément plusieurs images dans des cadres différents. À moins que CCviewer ne le permette (je n'ai pas vu comment), j'utiliserais des frames et webgl (j'ai un prototype qui semble bien fonctioner pour le moment).
Cordialement,
Joël
Je viens de le tester, il charge très rapidement et fonctionne très bien. Pour mon besoin, j'aimerais afficher simultanément plusieurs images dans des cadres différents. À moins que CCviewer ne le permette (je n'ai pas vu comment), j'utiliserais des frames et webgl (j'ai un prototype qui semble bien fonctioner pour le moment).
Cordialement,
Joël