← Back to team overview

kicad-developers team mailing list archive

3d-viewer redesign proposal

 

Hello all,

I am brainstorming some ideas to work on a rewrite of all 3d-viewer and I would like to know from you if it is welcomed and could be integrated in the future in the KiCad project.
Since it would be a major change in the current trunk, I plan to work separately in a branch (Launchpad) until it is stable, so it can be tested and future integrated.

My idea is to design having in mind a modular approach of all code blocks for an easier development, support and module reuse.
As an example, when I start working in the 3d-viewer, the rendering functionality (openGL) was mixed “inline” with VRML/X3D parser code, so I plan to slip/decouple all this modules into a better logical way so it will help the future development and can be reused by other external functionalities (example possibilities: VRML / IGES exporters..).

I plan to split the “3d-viewer” in three major groups:
-	3D module file management
-	3D Rendering
-	The viewer (widget)

The result of this work will be a more robust framework for future features implementation and (compared with actually implementation) expected speed improvements.
All the modules/groups can be used by other external projects and will not be dependent on the viewer itself, the 3D rendering will be implemented as a canvas (?) so it could be integrated in a form directly in pcbnew (as example).

I am planning this work in phases:
-	Design and plan the future structures/classes.
-	Work in the 3D module file management (parser files to intermediate formats, “cache” management, pre-processing... )
-	Work in the 3D Render (capable of openGL compatible (noshaders) and openGL with shaders..).
-	Integrate the Viewer with the 3D render (so it will work as the actual 3d-viewer).

After these phases, it is not expected any new user functionalities or visible features, also, no changes in any modules other than the 3d-viewer part, then in another future, I will plan a better integration and communication with other modules like pcbnew/etc… so other functionalities and user features can be discussed and implemented.


Do you give me freedom to start working based on these ideas and hope that it could be integrated in future in the project?
Do you have any other additional ideas or suggestions?
What concerns should I have in mind related with design / development? (code policies .. design considerations.. project integration, etc)
Anyone interested to particular discuss / work on this with me?

Regards,
Mario Luzeiro

Follow ups