SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
DAZ Studio
Advanced 3D Graphics Empowered by Qt
DAZ 3D




         1
DAZ 3D


• DAZ 3D – What we’re all about
  – “Unleash the Artist Within”
     • Bring 3D art to the masses.
  – High quality virtual 3D figures and content.
  – Innovative software which enables anyone to create
    artistic images.
  – A synergistic community which learns, shares, and
    grows together.




                                                         2
DAZ 3D


• History of DAZ 3D
  – DAZ 3D began as a division of the Zygote Media
    Group creating realistic virtual figures.
  – In December of 2000 it became an independent
    corporation and shortly after opened an online store
    for 3D figures and content at www.daz3d.com.
  – Since then it has grown to provide software
    applications which help users get the most out of their
    virtual content.



                                                              3
DAZ Studio




             4
DAZ Studio

• In the beginning DAZ 3D had some great 3D
  figures and content, but relied on another
  company’s software to display this content.
• We needed a way to showcase our content and
  remove our reliance on 3rd party applications.
• DAZ Studio was born.




                                                   5
DAZ Studio


• DAZ Studio is a feature rich 3D figure modeling,
  posing, and animation tool.
• It’s a vehicle for getting 3D content into the
  hands of users.
  – Get it into as many hands as possible.
  – It’s free!
• It pushes 3D content to new heights with new
  ideas and innovations.



                                                     6
DAZ Studio


• Designing DAZ Studio
   – We needed an app with a unique and custom look.
   – We needed an application framework that would give
     quick and flexible results.
   – We needed Windows and Mac versions.
   – We needed a scriptable application.
• Qt fit perfectly into our goals.




                                                          7
DAZ Studio


• Why Qt?
  –   Versatility of interface components
  –   Cross platform support
  –   Ease of development
  –   Integrated scripting capability
• Since DAZ Studio’s inception in 2002 we’ve
  relied heavily on Qt, and it has been a huge
  benefit.



                                                 8
UI Versatility




                 9
UI Versatility



• Some applications need to look native to a
  specific platform – Qt does this well.
• With other applications, you often want a unique
  and eye-catching look. – Qt also does this well.
• We want anyone who sees DAZ Studio to be
  drawn in and have to try it.
• Here’s what we came up with:



                                                     10
UI Versatility




                 11
Just Kidding!




                12
UI Versatility




                 13
UI Versatility




                 14
UI Versatility




                 15
UI Versatility


• Familiar widgets can still have unique style
  – Content pane using Model/View architecture
• Completely new widgets are also easy to create
  – Puppeteer – innovative user interface for posing and
    shaping figures
• OpenGL Widgets for real-time 3D displays




                                                           16
UI Versatility




                 17
UI Versatility


• Styles
  – We wanted a way to easily change the whole look of
    the application through “skins” or styles.
  – This was before CSS styles were introduced in Qt4.
  – We created an XML based style system which
    controls how widgets are drawn.
  – The style defines a set of drawing commands for how
    each widget should be drawn depending on its
    current state.
  – Supports images and basic drawing operations.


                                                          18
UI Versatility


• Styles
  – Savvy users are able to create their own styles.
  – We’re able to mimic the look of other applications in
    our lineup, so users can have more familiar and
    consistent experiences.
  – Most of this would have been very difficult without the
    powerful styling framework that Qt already had.
  – We’re currently exploring Qt Style sheets and are
    excited for the possibilities they’ll provide.




                                                              19
UI Versatility


• Layouts
  – Not all users have the same work flow.
  – Qt provides the flexibility to create completely
    customizable window layouts.
  – Layouts can be arranged by the user and saved for
    later use.
  – Users can quickly switch between multiple layouts
    based on the tasks at hand.




                                                        20
Cross Platform Support




                         21
Cross Platform Support


• Whether Windows, Mac OS X, Linux, or any
  other supported system, Qt makes it easy to
  support multiple platforms.
• Design interface elements once, and they just
  work on other platforms.
• No need to deal with often complicated setup for
  native windows, widgets, file IO, etc.
• Spend less time worrying about details and
  more time getting stuff done.


                                                     22
Cross Platform Support


• Porting DAZ Studio to Mac was straightforward.
  –   Initially DAZ Studio was developed on Windows.
  –   Basic functionality was working in about 2 weeks.
  –   It would not have been possible without Qt.
  –   Most development is still done on Windows, without
      having to worry that it won’t work on Mac OS X.




                                                           23
Scripting Support




                    24
Scripting Support


• Scripting support in an application is something
  that may not seem very useful at first, but it
  provides a lot of flexibility and power.
   – Gives the end user the ability to add the functionality
     that they need.
   – Allows for features that may not be fully known at the
     time of release.
   – Gives developers tools for prototyping and testing.
• Qt makes it really easy to have full scripting
  capabilities.

                                                               25
Scripting Support


• A Scripting interface was an important design
  goal for DAZ Studio.
• Originally we used the open-source SWIG toolkit
  to generate Python Bindings.
• When QSA (Qt Script for Applications) was
  introduced for Qt 3, we were early adopters.
• QSA made a scripting interface for DAZ Studio
  much easier to create and maintain.
• The same classes that provide the plug-in SDK
  also provide the scripting interface.

                                                    26
Scripting Support


• In Qt 4, QSA has been replaced by QtScript.
• QtScript is now a part of the core Qt framework and is
  more standards compliant.
• Scripting provides many benefits to our users:
   – Many tasks in DAZ Studio have been automated with scripts
   – Content presets are provided as scripts – figure poses, material
     settings, animation data, etc.
   – Many 3rd party add-ons for DAZ Studio are available as scripts.
   – A Scripting language makes DAZ Studio very easy for the user
     to extend – only basic programming knowledge is required.




                                                                        27
Ease of Development




                      28
Ease of Development

• Qt provides a framework that makes new development
  for DAZ Studio relatively easy.
• New engineers, and even interns, have been able to
  make meaningful contributions in a relatively short time.
• The DAZ Studio plug-in SDK, which is rooted heavily in
  Qt, makes it easy to extend DAZ Studio with new
  functionality.
• A number of 3rd party plug-in developers have expressed
  that DAZ Studio is one of the easiest applications they’ve
  developed for – in part due to Qt.



                                                               29
Ease of Development


• Open Source benefits
  – In Qt 3, DAZ Studio plug-in developers were required
    to license the Qt framework.
  – This was cost-prohibitive to many.
  – In Qt 4.5, the addition of LGPL licensing enabled us
    to make the DAZ Studio SDK freely available, and
    has generated a lot of new interest.
  – There is no barrier to entry except knowledge.
  – This creates a rich and productive add-on community.



                                                           30
Ease of Development


•   Recently, we developed 64-bit versions of DAZ Studio and Carrara
    for Windows and Mac OS X.
•   The move to 64-bit for DAZ Studio was very smooth, thanks in large
    part to Qt.
•   The move to 64-bit for Carrara was more problematic.
•   On Mac OS X, the 64-bit move required us to change from using
    Apple’s Carbon framework to the new Cocoa framework.
•   After researching the required changes, it was decided to move to
    Qt instead, which can handle the Cocoa interface for us.
•   The application event loop and window system were moved onto Qt,
    and a 64-bit version of Carrara for OS X was running in less time
    than if we had made the change to Cocoa ourselves.




                                                                         31
Qt 3 to Qt 4




               32
Qt 3 to Qt 4


• With all of our style customization and heavy use
  of scripting, porting from Qt 3 to Qt 4 was a
  worst-case-scenario.
• The qt3to4 utility gave us a good starting point
• Problem areas
  – Styles
  – Changes in widget and layout behavior
  – Scripting




                                                      33
Qt 3 to Qt 4


• QStyle changes were very problematic, and
  documentation was sometimes incomplete.
   – Access to the source code was very valuable.
   – We could examine exactly how different style aspects are
     handled and adjust accordingly.
• Qt3Support library is very useful, but some widgets and
  layouts still don’t behave quite the same.
   – Switching to Qt 4 counterparts was mostly straightforward.
• Moving from QSA to QtScript was very challenging.
   – Again, having source code was invaluable.
   – We were able to write a syntax translation tool that can
     automatically convert most of our QSA scripts to working
     QtScripts.


                                                                  34
Qt 3 to Qt 4


• What did we get with Qt 4?
  – Improved UI behavior and stability
  – Qt Style Sheets
  – Model-View type item views
  – Mac Cocoa support – important for 64-bit version
  – Script debugger
  – Scripts are now fully ECMAScript compatible
  – WebKit and other networking improvements for
    interactivity with our online store
  – LGPL licensing allowing us to distribute a free SDK

                                                          35
Conclusions

• Qt is an invaluable tool in the development of
  DAZ Studio.
• Qt gives us the flexibility to create an application
  with a flair and style all its own.
• Qt enables us to ignore many technical details
  and focus on building a better app.
• Qt helps us reduce development costs and
  decrease time-to-market.



                                                         36

Mais conteúdo relacionado

Mais procurados

Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
rmitc
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
Qt
 

Mais procurados (20)

Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt Canada
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5
 
Migrating from Photon to Qt
Migrating from Photon to QtMigrating from Photon to Qt
Migrating from Photon to Qt
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qt
 

Destaque

Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with Qt
Ariya Hidayat
 

Destaque (18)

Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with Qt
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
Qt Animation
Qt AnimationQt Animation
Qt Animation
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
 
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Data Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAMLData Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAML
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Semelhante a Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software

AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
Amazon Web Services Korea
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Era
martinlippert
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
Frank Karlitschek
 

Semelhante a Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software (20)

DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 
Success Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded LinuxSuccess Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded Linux
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
 
Qt and the Red Flag Linux Distro
Qt and the Red Flag Linux DistroQt and the Red Flag Linux Distro
Qt and the Red Flag Linux Distro
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Era
 
Project
ProjectProject
Project
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Docker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOpsDocker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOps
 
Docker for developers - The big picture
Docker for developers - The big pictureDocker for developers - The big picture
Docker for developers - The big picture
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
 
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Nuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get StartedNuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get Started
 
Moving microsoft .net applications one container at a time
 Moving microsoft .net applications one container at a time  Moving microsoft .net applications one container at a time
Moving microsoft .net applications one container at a time
 

Mais de account inactive

Mais de account inactive (20)

Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
 
OGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia CreationOGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia Creation
 
HGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak CoffeeHGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak Coffee
 
Discover Qt Learning and Certification
Discover Qt Learning and CertificationDiscover Qt Learning and Certification
Discover Qt Learning and Certification
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software

  • 1. DAZ Studio Advanced 3D Graphics Empowered by Qt
  • 2. DAZ 3D 1
  • 3. DAZ 3D • DAZ 3D – What we’re all about – “Unleash the Artist Within” • Bring 3D art to the masses. – High quality virtual 3D figures and content. – Innovative software which enables anyone to create artistic images. – A synergistic community which learns, shares, and grows together. 2
  • 4. DAZ 3D • History of DAZ 3D – DAZ 3D began as a division of the Zygote Media Group creating realistic virtual figures. – In December of 2000 it became an independent corporation and shortly after opened an online store for 3D figures and content at www.daz3d.com. – Since then it has grown to provide software applications which help users get the most out of their virtual content. 3
  • 6. DAZ Studio • In the beginning DAZ 3D had some great 3D figures and content, but relied on another company’s software to display this content. • We needed a way to showcase our content and remove our reliance on 3rd party applications. • DAZ Studio was born. 5
  • 7. DAZ Studio • DAZ Studio is a feature rich 3D figure modeling, posing, and animation tool. • It’s a vehicle for getting 3D content into the hands of users. – Get it into as many hands as possible. – It’s free! • It pushes 3D content to new heights with new ideas and innovations. 6
  • 8. DAZ Studio • Designing DAZ Studio – We needed an app with a unique and custom look. – We needed an application framework that would give quick and flexible results. – We needed Windows and Mac versions. – We needed a scriptable application. • Qt fit perfectly into our goals. 7
  • 9. DAZ Studio • Why Qt? – Versatility of interface components – Cross platform support – Ease of development – Integrated scripting capability • Since DAZ Studio’s inception in 2002 we’ve relied heavily on Qt, and it has been a huge benefit. 8
  • 11. UI Versatility • Some applications need to look native to a specific platform – Qt does this well. • With other applications, you often want a unique and eye-catching look. – Qt also does this well. • We want anyone who sees DAZ Studio to be drawn in and have to try it. • Here’s what we came up with: 10
  • 17. UI Versatility • Familiar widgets can still have unique style – Content pane using Model/View architecture • Completely new widgets are also easy to create – Puppeteer – innovative user interface for posing and shaping figures • OpenGL Widgets for real-time 3D displays 16
  • 19. UI Versatility • Styles – We wanted a way to easily change the whole look of the application through “skins” or styles. – This was before CSS styles were introduced in Qt4. – We created an XML based style system which controls how widgets are drawn. – The style defines a set of drawing commands for how each widget should be drawn depending on its current state. – Supports images and basic drawing operations. 18
  • 20. UI Versatility • Styles – Savvy users are able to create their own styles. – We’re able to mimic the look of other applications in our lineup, so users can have more familiar and consistent experiences. – Most of this would have been very difficult without the powerful styling framework that Qt already had. – We’re currently exploring Qt Style sheets and are excited for the possibilities they’ll provide. 19
  • 21. UI Versatility • Layouts – Not all users have the same work flow. – Qt provides the flexibility to create completely customizable window layouts. – Layouts can be arranged by the user and saved for later use. – Users can quickly switch between multiple layouts based on the tasks at hand. 20
  • 23. Cross Platform Support • Whether Windows, Mac OS X, Linux, or any other supported system, Qt makes it easy to support multiple platforms. • Design interface elements once, and they just work on other platforms. • No need to deal with often complicated setup for native windows, widgets, file IO, etc. • Spend less time worrying about details and more time getting stuff done. 22
  • 24. Cross Platform Support • Porting DAZ Studio to Mac was straightforward. – Initially DAZ Studio was developed on Windows. – Basic functionality was working in about 2 weeks. – It would not have been possible without Qt. – Most development is still done on Windows, without having to worry that it won’t work on Mac OS X. 23
  • 26. Scripting Support • Scripting support in an application is something that may not seem very useful at first, but it provides a lot of flexibility and power. – Gives the end user the ability to add the functionality that they need. – Allows for features that may not be fully known at the time of release. – Gives developers tools for prototyping and testing. • Qt makes it really easy to have full scripting capabilities. 25
  • 27. Scripting Support • A Scripting interface was an important design goal for DAZ Studio. • Originally we used the open-source SWIG toolkit to generate Python Bindings. • When QSA (Qt Script for Applications) was introduced for Qt 3, we were early adopters. • QSA made a scripting interface for DAZ Studio much easier to create and maintain. • The same classes that provide the plug-in SDK also provide the scripting interface. 26
  • 28. Scripting Support • In Qt 4, QSA has been replaced by QtScript. • QtScript is now a part of the core Qt framework and is more standards compliant. • Scripting provides many benefits to our users: – Many tasks in DAZ Studio have been automated with scripts – Content presets are provided as scripts – figure poses, material settings, animation data, etc. – Many 3rd party add-ons for DAZ Studio are available as scripts. – A Scripting language makes DAZ Studio very easy for the user to extend – only basic programming knowledge is required. 27
  • 30. Ease of Development • Qt provides a framework that makes new development for DAZ Studio relatively easy. • New engineers, and even interns, have been able to make meaningful contributions in a relatively short time. • The DAZ Studio plug-in SDK, which is rooted heavily in Qt, makes it easy to extend DAZ Studio with new functionality. • A number of 3rd party plug-in developers have expressed that DAZ Studio is one of the easiest applications they’ve developed for – in part due to Qt. 29
  • 31. Ease of Development • Open Source benefits – In Qt 3, DAZ Studio plug-in developers were required to license the Qt framework. – This was cost-prohibitive to many. – In Qt 4.5, the addition of LGPL licensing enabled us to make the DAZ Studio SDK freely available, and has generated a lot of new interest. – There is no barrier to entry except knowledge. – This creates a rich and productive add-on community. 30
  • 32. Ease of Development • Recently, we developed 64-bit versions of DAZ Studio and Carrara for Windows and Mac OS X. • The move to 64-bit for DAZ Studio was very smooth, thanks in large part to Qt. • The move to 64-bit for Carrara was more problematic. • On Mac OS X, the 64-bit move required us to change from using Apple’s Carbon framework to the new Cocoa framework. • After researching the required changes, it was decided to move to Qt instead, which can handle the Cocoa interface for us. • The application event loop and window system were moved onto Qt, and a 64-bit version of Carrara for OS X was running in less time than if we had made the change to Cocoa ourselves. 31
  • 33. Qt 3 to Qt 4 32
  • 34. Qt 3 to Qt 4 • With all of our style customization and heavy use of scripting, porting from Qt 3 to Qt 4 was a worst-case-scenario. • The qt3to4 utility gave us a good starting point • Problem areas – Styles – Changes in widget and layout behavior – Scripting 33
  • 35. Qt 3 to Qt 4 • QStyle changes were very problematic, and documentation was sometimes incomplete. – Access to the source code was very valuable. – We could examine exactly how different style aspects are handled and adjust accordingly. • Qt3Support library is very useful, but some widgets and layouts still don’t behave quite the same. – Switching to Qt 4 counterparts was mostly straightforward. • Moving from QSA to QtScript was very challenging. – Again, having source code was invaluable. – We were able to write a syntax translation tool that can automatically convert most of our QSA scripts to working QtScripts. 34
  • 36. Qt 3 to Qt 4 • What did we get with Qt 4? – Improved UI behavior and stability – Qt Style Sheets – Model-View type item views – Mac Cocoa support – important for 64-bit version – Script debugger – Scripts are now fully ECMAScript compatible – WebKit and other networking improvements for interactivity with our online store – LGPL licensing allowing us to distribute a free SDK 35
  • 37. Conclusions • Qt is an invaluable tool in the development of DAZ Studio. • Qt gives us the flexibility to create an application with a flair and style all its own. • Qt enables us to ignore many technical details and focus on building a better app. • Qt helps us reduce development costs and decrease time-to-market. 36