renderfile with command line

To post any request/idea for new functionalities
Post Reply
jrivest
Posts: 3
Joined: Thu Aug 27, 2015 1:58 am

renderfile with command line

Post by jrivest »

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
daniel
Site Admin
Posts: 7707
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: renderfile with command line

Post by daniel »

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 :
  • 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 ...
Avec un peu de chance ça peut marcher.
Daniel, CloudCompare admin
jrivest
Posts: 3
Joined: Thu Aug 27, 2015 1:58 am

Re: renderfile with command line

Post by jrivest »

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
daniel
Site Admin
Posts: 7707
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: renderfile with command line

Post by daniel »

Vous avez testé ccViewer ?
Daniel, CloudCompare admin
jrivest
Posts: 3
Joined: Thu Aug 27, 2015 1:58 am

Re: renderfile with command line

Post by jrivest »

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
Post Reply