← Back to team overview

kicad-developers team mailing list archive

Re: 3D-Viewer new rendering and contributions.

 

Le 28/07/2014 22:45, Mário Luzeiro a écrit :
> Hello all,
> 
> Attached you will find my contribution to 3d-viewer. I hope that it
> can be incorporated in the trunk of KiCad development. This (not so
> simple) additions will give to KiCad a more “pro” look that was
> missing in the 3d-viewer.
> 
> Have a look in the screen-shots attached to get an idea of the new
> look I propose.
> 
> My time is short but, in meanwhile, if you find small issues I will
> try to quickly fix and submit it.
> 
> Have fun!
> 
> 
> New features / changes:
> 
> + It tried to use as much as possible data structures from glm
> library. + I tried to separate the load of the file model from the
> OpenGL render. (still need some work for full detach, see missing
> features) Now there are new class with new data structures that store
> 3d model data and render it later. + x3d now support per face diffuse
> color (== you can use blender exporter to generate this format !). +
> add support for VRML 1 mesh format (== you can now use directly files
> from 3dContentCentral !). + recode and improve VRML 2 support (it now
> supports more complex hierarchical files and materials, == you can
> use FreeCAD export to generate this format !).
> 
> 
> Eye-candy render:
> 
> + Smooth normal calculation. + PCB texture. + Silk screen texture. +
> Diffuse shadow per object Front/Back side. + Diffuse shadow for all
> board. + Background gradient.
> 
> 
> Bug fixes:
> 
> + x3d loader was not setting locales C so files are not loaded in
> some language settings. (Bug #1341231)
> 
> 
> Know issues / missing features:
> 
> - I found some models files to have invalid face index (example face
> is declared using the triangle indexes: 1, 3, 1 and it cannot have
> two index points of the same value). Some easy fix can/should be
> added in future.
> 
> - Model files are loaded twice (this was happen already in older
> kicad version). In complex boards, the 3d-viewer in my (not so fast)
> computer can take 10 to 20 or more seconds. This happen because it
> try first load the opaque objects and then the transparent ones. I
> didn't understand it clear so I didn't change it. I do believe that
> with the changes I did, someone now with more kicad dev knowledge
> should have a look and see how the files are loaded and some how try
> to first load all different files and then just render the object by
> its file name. (first make a list of different models, then render
> each component for same models..etc)

You have to draw transparent items *after* the opaque items.
Otherwise transparent items are not always seen transparent.

Of course, there is room for optimization.

> 
> - Also it would be nice to cache models between sessions? So it will
> not load/reload every time you want to refresh your PCB because you
> did some changes.
> 
> - It could also disk cache information regarding the 3d models, as an
> example, the bounding boxes so it will render the BBox in some fast
> (non realistic) mode. (I miss this information to proper render the
> board shadow, that I am using a fixed Z value now, and it should be
> related with the Z of all board component models)
> 
> - Some selectable options may be added to improve 3d-viewer (colors,
> render options, etc).
> 
> - I added options in the source code to use or not the material
> properties of model files. I disabled emissive, specular color,
> ambient and shininess because some currently well know models (ex:
> walter) have that properties with bad values and it will make the
> render look bad or too exaggerated.
> 
> - Because the way VRML Export is implemented, it will add a “link” to
> other VRML files. If you are using VRML 1 files and if your external
> software don't support VRML 1 format it won't be able to load that
> exporter file. (and I do believe that it will be the case of most of
> free software, blender, freecad, etc). The way to properly implement
> this should be export the VRML 1 file to VRML 2 or embedded the VRML
> 1 file in the exporter file it self.
> 
> - Because now I had implemented a 3d_mesh_model.h for loading all
> model files, it should be easy to port the remaining source code and
> implement a new 3D file exporter (to some mesh format, obj, x3d, …)
> 
> - I notice that some VRML 2 models with transparency may are not
> being correctly rendered.
> 
> 
> Mario Luzeiro

Thanks, Mario.

But where are the attached files?


-- 
Jean-Pierre CHARRAS


Follow ups

References