SlideShare a Scribd company logo
Open Source 3D Modeling Software Development with Qt Dave Morris
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work / Commercialization Acknowledgments
Introduction New graphical user interface for interacting with 3d topological meshes. Built upon a Doubly Linked Face List (DLFL) structure that guarantees manifold meshes. Intuitive , familiar interface elements based on paradigms set by other popular 3d modeling applications. Free,  open source , portable, platform independent, localizable. Web  community  with a discussion forum, and image gallery, collaborative documentation, news updates, software downloads, etc...
Introduction Doubly Linked Face List (DLFL) Linked List Data Structure Face list, Edge list, Vertex list Represent Corners as Face-Vertices Output meshes guaranteed to be 2-manifold Rapid prototyping / manufacturing Developable surfaces
OBJ vs. DLFL Cube - Obj Format Cube DLFL Format
Introduction TopMod Topological mesh modeling system Originally created in 2000 C++ implementation Ability to create high-genus 2-manifold meshes Complex operations built on the minimal set Extrusions Subdivision schemes High-Genus operations Planar Modeling Bezier patch rendering/exporting Counter-intuitive, unfamiliar user interface
TopMod v1
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Problems Unfamiliar user interface Disorganized hierarchy of menus and tool options Only runs on  Windows. :( Static interface elements, not customizable No clear system of keyboard shortcuts Minimal viewport/display options Only handles Wavefront OBJ file format and proprietary DLFL format Only available in  English No centralized  web community  for discussion and development No user or developer documentation Closed source code Lack of interest from students  to develop it further Development was slowing almost to a stop
Motivation
Goals Topmod interface should be familiar and intuitive  Needs an organized hierarchy of menus and tool options It should be platform independent and portable Interface elements should be customizable It should have programmable keyboard shortcuts for all tools/options The viewport should be configurable It should be able to export other file formats It should be available in multiple languages It should have a web site that promotes discussion and development  It should have clear documentation for users and developers It should be open source to encourage future development
Solutions TopMod interface needs to be redesigned from scratch Use a more appropriate user interface toolkit Begin redesign process with the problems in mind Use other popular 3d modeling applications as a starting point Interface code should be separated from the DLFL data structure Move DLFL operations into two libraries - Core and Auxiliary (Stuart Tett) Integrate past thesis work that never made it to the final version Build a centralized web community Distribute new software releases and news  Promote discussion and current/future development Share a single, open source code repository Get dugg
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Prior Work - Maya Hierarchy of menus/icons/toolbars Floating tool option windows Highly customizable viewport Heads up display
Prior Work - Blender Open source Localizable interface Platform independent OpenGL viewport/interface Programmed almost entirely By one person
Prior Work - Rhinoceros 3D Command Line Interface Auto-completion
Prior Work - Wings3D Open source Platform independent Context-sensitive right click menus Sub-object selection routines Winged Edge Data Structure
Prior Work - Google Sketchup Value Control Box Ruby Script Engine Localized
Prior Work - Other 3D Modeling Applications
Prior Work - Popup Command Line Interfaces Quicksilver for OS/X Launchy for Windows
Prior Work - GUI Toolkits FLTK Free, open source, platform independent, lightweight, C++ Fast, small footprint Limited choice of interface widgets and features wxWidgets Free, platform independent, native mode drawing, C++ Can create custom widgets. Available in other languages (Perl, Python, LUA, Ruby, Java, etc...) GTK Free, open source, C / C++ Not native to OS/X, requires X11 Steep learning curve Other languages (Python, Perl, Java, Ruby, Pascal, PHP, etc...) Fox, GLUI, Tk, YAAF, Agar, Juce, NovaTK, Quinta, VCF, etc...
Prior Work - Trolltech Qt Created in 1991 by Haavard Nord and Eirik Chambe-Eng Incorporated into Quasar Technologies in 1994, later changed to Trolltech Key Features C++ Platform Independence Open Source (GPL) or Commercial License Meta Object Compiler - Signals and Slots Asynchronous input and output / event driven constructs OpenGL module, XML module, internationalization module Native mode widget drawing Existing Applications/Companies using Qt Google Earth, Skype, KDE Desktop, Adobe Photoshop Album HP, Disney CHIP, Lucasfilm Animation, ILM, etc...
Qt Users
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Blog, Wiki, Forum, Image Gallery, Code Repository Usage Statistics and Visitor Tracking
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
Removing FLTK Dependency FLTK provides very few widgets Not intuitive or user friendly FLTK project is not well supported or updated frequently Difficult to set specific values for various operations such as extrusion length Lack of precision
Removing FLTK Dependency Rewrote OpenGL display class Rewrote all file handling operations Rewrote all code dealing with user interface widgets and menu options Recreated similar interface to original, in Qt
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
Qt Redesign Use a variety of Qt classes to create an intuitive interface QAction  - to drive all menu commands, toolbar icons, etc... QMenu  - can be nested, collapsible, floatable, display custom shortcuts QIcon  - to graphically represent a QAction QToolBar  - for groups of icons QPopupMenu  - for right click context menus QDockWidget  - floatable window for tool options QDoubleSpinBox  - widget that allows a user to choose a specific number QGLWidget  - to display and interact with the 3d mesh QPushButton  - to perform operations Other Qt classes were used for color picking, labeling, 2D drawing, text completion, check boxes, radio buttons, a status bar,  real-time translation , shortcut management.
Qt Redesign New interface
Viewport Customization
Preferences Dialog Camera FOV, near plane, far plane Auto save Incremental save Default Save Directory Viewport Colors Line Weights/Lengths Keyboard Shortcuts Custom Stylesheets
Popup Command Line Interface Invoked by pressing spacebar key and typing Navigate list with mouse or arrow keys Hit enter
Other Features Floatable Tool Bars Fullscreen mode Save Screenshot buttons STL Export Lg3d Export
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
Selection Routines Work on Sub-object elements (Faces, Vertices, Edges, Corners) Global Routines: Select All Select Inverse Select Multiple Select Similar Selection Window Grow Selection Shrink Selection Clear Selected Faces Face Loop By Surface Area Checkerboard Selection Edges Edge Loop Edge Ring Vertices Edit Vertex Selection Conversions Swap edges for verts/faces Swap verts for edges/faces Swap faces for verts/edges
Select Inverse Select Multiple Select Similar Selection Window Global Routines
Edges Vertices Faces Grow/Shrink Selection
Selection Conversions Vertices to Edges or Faces Edges to Faces or Vertices Faces to Edges or Vertices
Face Selection Routines Face Loop Similar Surface Area Checkerboard  2-colorable
Edge Selection Routines Edge Loop Edge Ring
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
Previous TopMod Thesis Work / Research Code separated into many different version on the Viz server Planar (Conical) sculpting work by Ozgur Gonen Advanced extrusion operators by Eric Landreneau Vertex Editing by Brian Barran Bezier Patch Rendering by Vinod and Ergun Rectangular wireframe modeling function hidden in existing code New approach to interactive rind modeling New approach to extrusions New approaches to other basic operators subdivide edges, delete edges  subdivide faces, etc… Scripting Interface by Stuart Tett
Planar Sculpting Cut by Edge Cut by Vertex Cut by Face Convex Hull Local vs. Global
Advanced Extrusions Icosahedral Dodecahedral
currently working on an “edit multiple vertices” feature Vertex Editing
Bezier Patch Display and Export rendering capability by Vinod and Ergun Export feature by Stuart Tett
Asymmetrical Wireframe Modeling Wireframe modeling is simply a modified corner cutting subdivision combined with a call to the rind modeling function each function takes a thickness parameter Users now have the ability to set each thickness to a different value
Interactive Rind Modeling Obtain face selection set, then create the crust
Multiple Extrusions Obtain face selection set first, then extrude provide support for the old way
Multiple Extrusions
Other Basic Operators Subdivide Selected Edges Subdivide Selected Faces Delete Selected Edges Delete Selected Vertices
Scripting Interface Issues Written in Python by Stuart Tett Would not compile in Windows Mingw32 vs. Visual Studio Posted issue to the discussion forum Erik on the forum fixed it and posted a solution
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
Platform Independence and Portability QMake Build System As opposed to GNU Build System or handwritten makefiles Helps streamline the build process on Linux, OS/X, and Windows Project file manages custom include files and libraries per OS Wrote scripts to further automate the build process across all 3 platforms Store all needed libraries within a single local directory or bundle (OS/X) Wrote custom scripts to build independent bundles on OS/X No need to install the application anywhere / Do not need admin privileges Stores a preference file in the local user directory remembers viewport color settings, window size and location, shortcuts
Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Implementation and Results
I18n Qt provides a simple library for interface translation Wrap all displayable text in tr() function -  tr(“text here”); lupdate and lrelease programs generate custom translation files Translation data stored as .xml Users and developers can translate text in Qt’s Linguist GUI application Easy to use; no programming experience necessary Encourage TopMod users in foreign countries to help translate Currently have a working French translation from “Frenchy Pilou” finished in one evening Working on a German translation with user “sjoo” from the TopMod forum I am working on a Spanish translation with a few users from Valencia Waiting for Turkish / Hindi / Catalan / Italian / etc... I extended the functionality to make it happen real-time during execution
I18n Qt Linguist Application
I18n TopMod in French (thanks to Frenchy Pilou)
I18n - Demo Video
Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Implementation and Results
Heads Up Display Provide diagnostic information about the current state of the program Current operating mode Current selection filter/mask Current extrusion mode Current remeshing mode Number of faces, vertices, and edges, and the genus Number of selected faces, vertices, edges, and corners Rendered in OpenGL viewport using QPainter 2D painting widget Also displays a miniature coordinate axis
Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
TopMod Web Community Editable user and developer documentation Discussion forum News blog Image Gallery Open source code repository Quick and easy implementation / styling / updating etc...
TopMod Web Community TopMod Wiki Based on BlenderWiki and Blender Documentation Project Built with open source mediawiki software (wikipedia) editable by anyone Features Embed and synchronize multiple 3d models with LiveGraphics3D plugin Embed Quicktime video tutorials Upload and share rendered images, OBJ, DLFL, and LG3d model files Upload and share Python Scripts
TopMod Web Community TopMod Wiki Screenshots and Demos
TopMod Web Community TopMod Wiki Screenshots and Demos
TopMod Web Community TopMod Wiki LiveGraphics3D demo
TopMod Web Community TopMod Wiki LiveGraphics3D demo
TopMod Web Community Doxygen Source Code Documentation  Automatically generated by reading through source code Detects custom tags and keywords in the source code comments //!< \todo finish internationalization support for extrusion mode widgets /** * \brief this is a description * \@param this is a parameter **/ Generates customizable HTML and PDF documentation. Wrote a script to automate the process of generating and publishing docs runs doxygen with custom HTML header and footer archives results uploads and unpacks the files to the TopMod web server
TopMod Web Community Doxygen Results
TopMod Web Community Discussion forum open source phpBB software easy to style and maintain MySQL database
TopMod Web Community News Blog Open source Wordpress blog engine Easy to install (5 minutes) Easy to style maintain, PHP/MySQL
TopMod Web Community Open source code repository Google Code SVN repository Wiki bug reporting release manager scripted uploads download tracker google analytics lots of storage space
Video Tutorials http://topmod.blip.tv 6431 views in 1.5 months
Website Usage Statistics website began near the beginning of August 2007 first released on Google Code repository on Aug. 6th, 2007
Google Analytics 9 months of statistics to date 312,000 pageviews 44,000 unique visits 2,000 visits on October 1st 52% of traffic from referring sites 20% from search engines 46% of visitors spent less than 10 seconds on the site Average Time on Site - 5:20
Google Analytics - October 1 st  in France
Results - Polyloop Forum Cross posting by Frenchy Pilou
Results - Meminesis
Results - 3dvia.com
Results - Mick
Results - torolf
Results - sjoo
Results - torolf
Results - sjoo
Results - torolf
Results - torolf
Results - sjoo
Results - Frenchy Pilou
Results - torolf
Results - sjoo
Results - torolf
Results - Frenchy Pilou
Results - shadow
Results - Stefan
Results - Python Scripting - Diego
Results - Trefoil Knot Tutorial by erik
Results - User-Created Video Tutorials S. Johansen from Germany
Results - User-Created Video Tutorials S. Johansen from Germany
Results - User-Created Video Tutorials Frenchy Pilou produced a step-by-step interactive tutorial in French
Results - Web Presence
Results - Web Presence
Branding
Advertising Official Banner on ZBrush France web community Mail call spot in 3D World Magazine, CD in magazine packaging Tags on Delicious / Flickr / 3DVia / DeviantArt / PushPullBar etc...
Advertising - 3DWorld Magazine Issue 98
Logo Design Competition
T-Shirt Design Competition
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Conclusion With this new user interface, TopMod users can create high genus 2-manifold meshes much faster and more easily customize the interface to allow for a better and faster workflow interact with other TopMod users in a web-based community environment view video and text-based tutorials online  suggest features and submit bugs and other issues learn from and contribute to the TopMod documentation  download the TopMod source code contribute to the TopMod source code in an open environment share images and videos of work created in topmod
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Future Work Collaboration through the TopMod Web Community GPU Shading/Rendering Wacom Tablet Support Physically Based Camera Multi-threaded support - ability to cancel operations Progress Bar / Cancel Buttons Poly editing features Move, rotate, scale multiple vertices, edges, and faces Scene Graph support  OpenSG or Maya-style DAG Support multiple objects Modifier stack Saved selection sets PyQT custom scripted GUI elements Support for 1-valence vertices - make TopMod crash less More translation languages - Italian, Turkish, Catalan, Spanish, German etc... Non-manifold mesh support / Generic Wireframe/Crust Algorithm AJAX 3d or Flash 3d web interface http://www.topmod3d.org/forum/
Based on requests from user forum Voronoi / Delaunay  Organic Forms Python Scripting Tutorials Basket Weave Algorithm New Features / Remeshing Schemes
TAMU Office of Technology Commercialization Mays Business School Center for New Ventures and Entrepreneurship Marketing Department MBA Ideas Competition Research Valley Innovation Center NSF/SBIR Grants Texas Emerging Technology Fund Commercialization Options
Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
Acknowledgments TopMod Contributors Lead Developer: Vinod Srinivasan Concept/Theory: Ergun Akleman, Jianer Chen Contributors: Esan Mandal, Eric Landreneau, Zeki Melek, Stuart Tett, Michael Stanley, Ozgur Gonen, Paul Edmundson, Fusun Eryoldas, Cansin Evrenosoglu, Xu Bei, Brian Barran Committee Ergun Akleman (Chair) Vinod Srinivasan Dr. Jianer Chen Special Thanks To Stuart Tett - lead designer of the TopMod Python Scripting Engine
Questions?

More Related Content

PPT
Open Source ETL
PPT
Hdr Panoramic Photography
PPTX
Untitled presentation(4)
PPTX
Qt coin3d soqt
ODP
Blendertut
PPT
Qt Programming on TI Processors
PDF
OGRE: Qt & OGRE for Multimedia Creation
PDF
Building the QML Run-time
Open Source ETL
Hdr Panoramic Photography
Untitled presentation(4)
Qt coin3d soqt
Blendertut
Qt Programming on TI Processors
OGRE: Qt & OGRE for Multimedia Creation
Building the QML Run-time

Similar to TopMod3d - Texas Open Source Symposium (20)

PDF
Mentor_Final_report
PPTX
Witekio custom modern qt quick components
PDF
Qt Application Programming with C++ - Part 1
PDF
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
PDF
Web3D - Semantic standards, WebGL, HCI
PDF
OpenSCAD Tutorial
PDF
PPTX
Decima Engine: Visibility in Horizon Zero Dawn
PDF
Rendering Large Models in the Browser in Real-Time
PPT
Qt S60 Technical Presentation Fn Stripped
PDF
Qt Technology Overview for: MedAcuity
 
PDF
PDF
Necessitas - Qt on Android - from FSCONS 2011
PPT
Qt Technical Presentation
PDF
IRJET- Technical Graphic Showcase
PDF
Plasmaquick Workshop - FISL 13
ODP
Cross Platform Qt
PDF
Cadd Centre Green Park
PDF
Build your Own Customizable 3D Objects with Sculpteo
Mentor_Final_report
Witekio custom modern qt quick components
Qt Application Programming with C++ - Part 1
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Web3D - Semantic standards, WebGL, HCI
OpenSCAD Tutorial
Decima Engine: Visibility in Horizon Zero Dawn
Rendering Large Models in the Browser in Real-Time
Qt S60 Technical Presentation Fn Stripped
Qt Technology Overview for: MedAcuity
 
Necessitas - Qt on Android - from FSCONS 2011
Qt Technical Presentation
IRJET- Technical Graphic Showcase
Plasmaquick Workshop - FISL 13
Cross Platform Qt
Cadd Centre Green Park
Build your Own Customizable 3D Objects with Sculpteo
Ad

Recently uploaded (20)

DOCX
Business Management - unit 1 and 2
PDF
Elevate Cleaning Efficiency Using Tallfly Hair Remover Roller Factory Expertise
PDF
A Brief Introduction About Julia Allison
PDF
IFRS Notes in your pocket for study all the time
PPTX
Probability Distribution, binomial distribution, poisson distribution
PDF
20250805_A. Stotz All Weather Strategy - Performance review July 2025.pdf
PDF
Solara Labs: Empowering Health through Innovative Nutraceutical Solutions
PDF
Roadmap Map-digital Banking feature MB,IB,AB
PPTX
HR Introduction Slide (1).pptx on hr intro
PPTX
ICG2025_ICG 6th steering committee 30-8-24.pptx
PDF
Power and position in leadershipDOC-20250808-WA0011..pdf
PPTX
New Microsoft PowerPoint Presentation - Copy.pptx
PDF
Ôn tập tiếng anh trong kinh doanh nâng cao
DOCX
unit 1 COST ACCOUNTING AND COST SHEET
PPTX
5 Stages of group development guide.pptx
PDF
SIMNET Inc – 2023’s Most Trusted IT Services & Solution Provider
PDF
kom-180-proposal-for-a-directive-amending-directive-2014-45-eu-and-directive-...
PDF
pdfcoffee.com-opt-b1plus-sb-answers.pdfvi
PDF
Types of control:Qualitative vs Quantitative
PDF
DOC-20250806-WA0002._20250806_112011_0000.pdf
Business Management - unit 1 and 2
Elevate Cleaning Efficiency Using Tallfly Hair Remover Roller Factory Expertise
A Brief Introduction About Julia Allison
IFRS Notes in your pocket for study all the time
Probability Distribution, binomial distribution, poisson distribution
20250805_A. Stotz All Weather Strategy - Performance review July 2025.pdf
Solara Labs: Empowering Health through Innovative Nutraceutical Solutions
Roadmap Map-digital Banking feature MB,IB,AB
HR Introduction Slide (1).pptx on hr intro
ICG2025_ICG 6th steering committee 30-8-24.pptx
Power and position in leadershipDOC-20250808-WA0011..pdf
New Microsoft PowerPoint Presentation - Copy.pptx
Ôn tập tiếng anh trong kinh doanh nâng cao
unit 1 COST ACCOUNTING AND COST SHEET
5 Stages of group development guide.pptx
SIMNET Inc – 2023’s Most Trusted IT Services & Solution Provider
kom-180-proposal-for-a-directive-amending-directive-2014-45-eu-and-directive-...
pdfcoffee.com-opt-b1plus-sb-answers.pdfvi
Types of control:Qualitative vs Quantitative
DOC-20250806-WA0002._20250806_112011_0000.pdf
Ad

TopMod3d - Texas Open Source Symposium

  • 1. Open Source 3D Modeling Software Development with Qt Dave Morris
  • 2. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work / Commercialization Acknowledgments
  • 3. Introduction New graphical user interface for interacting with 3d topological meshes. Built upon a Doubly Linked Face List (DLFL) structure that guarantees manifold meshes. Intuitive , familiar interface elements based on paradigms set by other popular 3d modeling applications. Free, open source , portable, platform independent, localizable. Web community with a discussion forum, and image gallery, collaborative documentation, news updates, software downloads, etc...
  • 4. Introduction Doubly Linked Face List (DLFL) Linked List Data Structure Face list, Edge list, Vertex list Represent Corners as Face-Vertices Output meshes guaranteed to be 2-manifold Rapid prototyping / manufacturing Developable surfaces
  • 5. OBJ vs. DLFL Cube - Obj Format Cube DLFL Format
  • 6. Introduction TopMod Topological mesh modeling system Originally created in 2000 C++ implementation Ability to create high-genus 2-manifold meshes Complex operations built on the minimal set Extrusions Subdivision schemes High-Genus operations Planar Modeling Bezier patch rendering/exporting Counter-intuitive, unfamiliar user interface
  • 8. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 9. Problems Unfamiliar user interface Disorganized hierarchy of menus and tool options Only runs on Windows. :( Static interface elements, not customizable No clear system of keyboard shortcuts Minimal viewport/display options Only handles Wavefront OBJ file format and proprietary DLFL format Only available in English No centralized web community for discussion and development No user or developer documentation Closed source code Lack of interest from students to develop it further Development was slowing almost to a stop
  • 11. Goals Topmod interface should be familiar and intuitive Needs an organized hierarchy of menus and tool options It should be platform independent and portable Interface elements should be customizable It should have programmable keyboard shortcuts for all tools/options The viewport should be configurable It should be able to export other file formats It should be available in multiple languages It should have a web site that promotes discussion and development It should have clear documentation for users and developers It should be open source to encourage future development
  • 12. Solutions TopMod interface needs to be redesigned from scratch Use a more appropriate user interface toolkit Begin redesign process with the problems in mind Use other popular 3d modeling applications as a starting point Interface code should be separated from the DLFL data structure Move DLFL operations into two libraries - Core and Auxiliary (Stuart Tett) Integrate past thesis work that never made it to the final version Build a centralized web community Distribute new software releases and news Promote discussion and current/future development Share a single, open source code repository Get dugg
  • 13. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 14. Prior Work - Maya Hierarchy of menus/icons/toolbars Floating tool option windows Highly customizable viewport Heads up display
  • 15. Prior Work - Blender Open source Localizable interface Platform independent OpenGL viewport/interface Programmed almost entirely By one person
  • 16. Prior Work - Rhinoceros 3D Command Line Interface Auto-completion
  • 17. Prior Work - Wings3D Open source Platform independent Context-sensitive right click menus Sub-object selection routines Winged Edge Data Structure
  • 18. Prior Work - Google Sketchup Value Control Box Ruby Script Engine Localized
  • 19. Prior Work - Other 3D Modeling Applications
  • 20. Prior Work - Popup Command Line Interfaces Quicksilver for OS/X Launchy for Windows
  • 21. Prior Work - GUI Toolkits FLTK Free, open source, platform independent, lightweight, C++ Fast, small footprint Limited choice of interface widgets and features wxWidgets Free, platform independent, native mode drawing, C++ Can create custom widgets. Available in other languages (Perl, Python, LUA, Ruby, Java, etc...) GTK Free, open source, C / C++ Not native to OS/X, requires X11 Steep learning curve Other languages (Python, Perl, Java, Ruby, Pascal, PHP, etc...) Fox, GLUI, Tk, YAAF, Agar, Juce, NovaTK, Quinta, VCF, etc...
  • 22. Prior Work - Trolltech Qt Created in 1991 by Haavard Nord and Eirik Chambe-Eng Incorporated into Quasar Technologies in 1994, later changed to Trolltech Key Features C++ Platform Independence Open Source (GPL) or Commercial License Meta Object Compiler - Signals and Slots Asynchronous input and output / event driven constructs OpenGL module, XML module, internationalization module Native mode widget drawing Existing Applications/Companies using Qt Google Earth, Skype, KDE Desktop, Adobe Photoshop Album HP, Disney CHIP, Lucasfilm Animation, ILM, etc...
  • 24. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 25. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Blog, Wiki, Forum, Image Gallery, Code Repository Usage Statistics and Visitor Tracking
  • 26. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 27. Removing FLTK Dependency FLTK provides very few widgets Not intuitive or user friendly FLTK project is not well supported or updated frequently Difficult to set specific values for various operations such as extrusion length Lack of precision
  • 28. Removing FLTK Dependency Rewrote OpenGL display class Rewrote all file handling operations Rewrote all code dealing with user interface widgets and menu options Recreated similar interface to original, in Qt
  • 29. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 30. Qt Redesign Use a variety of Qt classes to create an intuitive interface QAction - to drive all menu commands, toolbar icons, etc... QMenu - can be nested, collapsible, floatable, display custom shortcuts QIcon - to graphically represent a QAction QToolBar - for groups of icons QPopupMenu - for right click context menus QDockWidget - floatable window for tool options QDoubleSpinBox - widget that allows a user to choose a specific number QGLWidget - to display and interact with the 3d mesh QPushButton - to perform operations Other Qt classes were used for color picking, labeling, 2D drawing, text completion, check boxes, radio buttons, a status bar, real-time translation , shortcut management.
  • 31. Qt Redesign New interface
  • 33. Preferences Dialog Camera FOV, near plane, far plane Auto save Incremental save Default Save Directory Viewport Colors Line Weights/Lengths Keyboard Shortcuts Custom Stylesheets
  • 34. Popup Command Line Interface Invoked by pressing spacebar key and typing Navigate list with mouse or arrow keys Hit enter
  • 35. Other Features Floatable Tool Bars Fullscreen mode Save Screenshot buttons STL Export Lg3d Export
  • 36. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 37. Selection Routines Work on Sub-object elements (Faces, Vertices, Edges, Corners) Global Routines: Select All Select Inverse Select Multiple Select Similar Selection Window Grow Selection Shrink Selection Clear Selected Faces Face Loop By Surface Area Checkerboard Selection Edges Edge Loop Edge Ring Vertices Edit Vertex Selection Conversions Swap edges for verts/faces Swap verts for edges/faces Swap faces for verts/edges
  • 38. Select Inverse Select Multiple Select Similar Selection Window Global Routines
  • 39. Edges Vertices Faces Grow/Shrink Selection
  • 40. Selection Conversions Vertices to Edges or Faces Edges to Faces or Vertices Faces to Edges or Vertices
  • 41. Face Selection Routines Face Loop Similar Surface Area Checkerboard 2-colorable
  • 42. Edge Selection Routines Edge Loop Edge Ring
  • 43. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 44. Previous TopMod Thesis Work / Research Code separated into many different version on the Viz server Planar (Conical) sculpting work by Ozgur Gonen Advanced extrusion operators by Eric Landreneau Vertex Editing by Brian Barran Bezier Patch Rendering by Vinod and Ergun Rectangular wireframe modeling function hidden in existing code New approach to interactive rind modeling New approach to extrusions New approaches to other basic operators subdivide edges, delete edges subdivide faces, etc… Scripting Interface by Stuart Tett
  • 45. Planar Sculpting Cut by Edge Cut by Vertex Cut by Face Convex Hull Local vs. Global
  • 47. currently working on an “edit multiple vertices” feature Vertex Editing
  • 48. Bezier Patch Display and Export rendering capability by Vinod and Ergun Export feature by Stuart Tett
  • 49. Asymmetrical Wireframe Modeling Wireframe modeling is simply a modified corner cutting subdivision combined with a call to the rind modeling function each function takes a thickness parameter Users now have the ability to set each thickness to a different value
  • 50. Interactive Rind Modeling Obtain face selection set, then create the crust
  • 51. Multiple Extrusions Obtain face selection set first, then extrude provide support for the old way
  • 53. Other Basic Operators Subdivide Selected Edges Subdivide Selected Faces Delete Selected Edges Delete Selected Vertices
  • 54. Scripting Interface Issues Written in Python by Stuart Tett Would not compile in Windows Mingw32 vs. Visual Studio Posted issue to the discussion forum Erik on the forum fixed it and posted a solution
  • 55. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 56. Platform Independence and Portability QMake Build System As opposed to GNU Build System or handwritten makefiles Helps streamline the build process on Linux, OS/X, and Windows Project file manages custom include files and libraries per OS Wrote scripts to further automate the build process across all 3 platforms Store all needed libraries within a single local directory or bundle (OS/X) Wrote custom scripts to build independent bundles on OS/X No need to install the application anywhere / Do not need admin privileges Stores a preference file in the local user directory remembers viewport color settings, window size and location, shortcuts
  • 57. Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Implementation and Results
  • 58. I18n Qt provides a simple library for interface translation Wrap all displayable text in tr() function - tr(“text here”); lupdate and lrelease programs generate custom translation files Translation data stored as .xml Users and developers can translate text in Qt’s Linguist GUI application Easy to use; no programming experience necessary Encourage TopMod users in foreign countries to help translate Currently have a working French translation from “Frenchy Pilou” finished in one evening Working on a German translation with user “sjoo” from the TopMod forum I am working on a Spanish translation with a few users from Valencia Waiting for Turkish / Hindi / Catalan / Italian / etc... I extended the functionality to make it happen real-time during execution
  • 59. I18n Qt Linguist Application
  • 60. I18n TopMod in French (thanks to Frenchy Pilou)
  • 61. I18n - Demo Video
  • 62. Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community Implementation and Results
  • 63. Heads Up Display Provide diagnostic information about the current state of the program Current operating mode Current selection filter/mask Current extrusion mode Current remeshing mode Number of faces, vertices, and edges, and the genus Number of selected faces, vertices, edges, and corners Rendered in OpenGL viewport using QPainter 2D painting widget Also displays a miniature coordinate axis
  • 64. Implementation and Results Overview Removing FLTK dependency Redesigning the interface using Qt New sub-object selection routines for vertices, edges, and faces Consolidate old thesis research projects into the new version Platform independence and portability Internationalization Heads up display Creating an online community
  • 65. TopMod Web Community Editable user and developer documentation Discussion forum News blog Image Gallery Open source code repository Quick and easy implementation / styling / updating etc...
  • 66. TopMod Web Community TopMod Wiki Based on BlenderWiki and Blender Documentation Project Built with open source mediawiki software (wikipedia) editable by anyone Features Embed and synchronize multiple 3d models with LiveGraphics3D plugin Embed Quicktime video tutorials Upload and share rendered images, OBJ, DLFL, and LG3d model files Upload and share Python Scripts
  • 67. TopMod Web Community TopMod Wiki Screenshots and Demos
  • 68. TopMod Web Community TopMod Wiki Screenshots and Demos
  • 69. TopMod Web Community TopMod Wiki LiveGraphics3D demo
  • 70. TopMod Web Community TopMod Wiki LiveGraphics3D demo
  • 71. TopMod Web Community Doxygen Source Code Documentation Automatically generated by reading through source code Detects custom tags and keywords in the source code comments //!< \todo finish internationalization support for extrusion mode widgets /** * \brief this is a description * \@param this is a parameter **/ Generates customizable HTML and PDF documentation. Wrote a script to automate the process of generating and publishing docs runs doxygen with custom HTML header and footer archives results uploads and unpacks the files to the TopMod web server
  • 72. TopMod Web Community Doxygen Results
  • 73. TopMod Web Community Discussion forum open source phpBB software easy to style and maintain MySQL database
  • 74. TopMod Web Community News Blog Open source Wordpress blog engine Easy to install (5 minutes) Easy to style maintain, PHP/MySQL
  • 75. TopMod Web Community Open source code repository Google Code SVN repository Wiki bug reporting release manager scripted uploads download tracker google analytics lots of storage space
  • 77. Website Usage Statistics website began near the beginning of August 2007 first released on Google Code repository on Aug. 6th, 2007
  • 78. Google Analytics 9 months of statistics to date 312,000 pageviews 44,000 unique visits 2,000 visits on October 1st 52% of traffic from referring sites 20% from search engines 46% of visitors spent less than 10 seconds on the site Average Time on Site - 5:20
  • 79. Google Analytics - October 1 st in France
  • 80. Results - Polyloop Forum Cross posting by Frenchy Pilou
  • 98. Results - Python Scripting - Diego
  • 99. Results - Trefoil Knot Tutorial by erik
  • 100. Results - User-Created Video Tutorials S. Johansen from Germany
  • 101. Results - User-Created Video Tutorials S. Johansen from Germany
  • 102. Results - User-Created Video Tutorials Frenchy Pilou produced a step-by-step interactive tutorial in French
  • 103. Results - Web Presence
  • 104. Results - Web Presence
  • 106. Advertising Official Banner on ZBrush France web community Mail call spot in 3D World Magazine, CD in magazine packaging Tags on Delicious / Flickr / 3DVia / DeviantArt / PushPullBar etc...
  • 107. Advertising - 3DWorld Magazine Issue 98
  • 110. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 111. Conclusion With this new user interface, TopMod users can create high genus 2-manifold meshes much faster and more easily customize the interface to allow for a better and faster workflow interact with other TopMod users in a web-based community environment view video and text-based tutorials online suggest features and submit bugs and other issues learn from and contribute to the TopMod documentation download the TopMod source code contribute to the TopMod source code in an open environment share images and videos of work created in topmod
  • 112. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 113. Future Work Collaboration through the TopMod Web Community GPU Shading/Rendering Wacom Tablet Support Physically Based Camera Multi-threaded support - ability to cancel operations Progress Bar / Cancel Buttons Poly editing features Move, rotate, scale multiple vertices, edges, and faces Scene Graph support OpenSG or Maya-style DAG Support multiple objects Modifier stack Saved selection sets PyQT custom scripted GUI elements Support for 1-valence vertices - make TopMod crash less More translation languages - Italian, Turkish, Catalan, Spanish, German etc... Non-manifold mesh support / Generic Wireframe/Crust Algorithm AJAX 3d or Flash 3d web interface http://www.topmod3d.org/forum/
  • 114. Based on requests from user forum Voronoi / Delaunay Organic Forms Python Scripting Tutorials Basket Weave Algorithm New Features / Remeshing Schemes
  • 115. TAMU Office of Technology Commercialization Mays Business School Center for New Ventures and Entrepreneurship Marketing Department MBA Ideas Competition Research Valley Innovation Center NSF/SBIR Grants Texas Emerging Technology Fund Commercialization Options
  • 116. Overview Introduction Motivation Prior Work Implementation and Results Conclusion Future Work Acknowledgments
  • 117. Acknowledgments TopMod Contributors Lead Developer: Vinod Srinivasan Concept/Theory: Ergun Akleman, Jianer Chen Contributors: Esan Mandal, Eric Landreneau, Zeki Melek, Stuart Tett, Michael Stanley, Ozgur Gonen, Paul Edmundson, Fusun Eryoldas, Cansin Evrenosoglu, Xu Bei, Brian Barran Committee Ergun Akleman (Chair) Vinod Srinivasan Dr. Jianer Chen Special Thanks To Stuart Tett - lead designer of the TopMod Python Scripting Engine