Commit Graph

27 Commits

Author SHA1 Message Date
Mrio Luzeiro d8eab321f7 3D Viewer: complete refactor of the 3D viewer.
* Split and rewrite the preview window and canvas.
* Create a new class for handling the board information.
* Adds new render targets: openGL, legacy, and ray tracing.
* Render targets take full advantage of the new 3D plugins system and 3D cache
  for a fast 3D model loading.
* Faster board loading.
* New OpenGL render is faster than the old one.
* New ray tracing render target with a post processing shader.
* Use of new 3D plugins (WRL, X3D, STEP and IGES) and 3D model caching.
* Preview of 3D model while browsing the file name.
* 3D preview of the footprint while adding / align 3D shapes.
* Render of 3D models according to attributes: Normal, Normal+Insert, Virtual.
* Pivot rotation centered in one point over the PCB board.
* Shortcuts keys improved for XYZ orientation..
* Animated camera.
2016-07-19 13:35:25 -04:00
Cirilo Bernhardo c11b0cef99 3D Viewer: change 3D model cache path.
* Use platform cache path insted of the KiCad configuration path to write the
  3D model cache.
* OSX: ${HOME}/Library/Caches/kicad/3d
* Linux: ${XDG_CACHE_HOME}/kicad/3d or ${HOME}/.cache/kicad/3d
* Windows: AppData\Local\kicad\3d
2016-06-21 14:02:04 -04:00
Cirilo Bernardo e0a7f0041a Better 3D filename resolution 2016-06-09 07:48:49 +02:00
jean-pierre charras d7f1400e44 Make strings only used in debug mode not translatable. 2016-04-21 09:19:08 +02:00
Cirilo Bernardo 6120472d60 3D file name resolver improvements.
* Paths defined via pcbnew->Preferences->Configure Paths are now included in
  the 3D file browser's drop-down list except for KICAD_PTEMPLATES, KIGITHUB,
  KISYSMOD, any paths resembling a URL, and any non-existent paths. When an
  absolute path is shortened using one of these path aliases, let's say
  'KISYS3DMOD' then the name appears in the pcb file as "${KISYS3DMOD}/blah.wrl".
  If a user defines and actual environment variable with the same name, then
  that user defined variable will have precedence over the internally defined
  variable.

* Paths relative to the current project directory are no longer represented
  as "some/path/to/file.wrl".  For compatibility with previous KiCad versions
  it shall always be stored as ${KIPRJMOD}/some/path/to/file.wrl.

* Various restrictions on alias path values have been removed since the
  imposed restrictions could result in corrupted user data as aliases are
  silently dropped.

* Overall the patch should improve back-compatibility by providing a ${ENV_VAR}
  mechanism for supporting different model root directories and ensuring that
  paths relative to KIPRJMOD are expressed in a way that is compatible with
  earlier KiCad versions. This allows users more flexibility and the ability
  to work in a way that ensures 3D model files can be correctly resolved in
  earlier versions of KiCad. Users who do not care about back-compatibility
  may prefer to use the newer alias system.
2016-04-17 18:35:32 -04:00
Cirilo Bernardo 28d49b6589 fix race condition related to 3D cache and resolver
The attached patch fixes a segfault due to a race condition.
If a user starts eeschema with an empty sheet and clicks
the 'cvpcb' button, memory is corrupted and the program
segfaults. The issue appears to arise from multiple threads
accessing the 3D cache and resolver. This patch makes
relevant code thread-safe by using a wxCriticalSection.
2016-04-10 23:03:39 -04:00
Simon Richter 6a65341599 3D: Make file test more portable 2016-04-06 22:41:24 -04:00
Cirilo Bernardo 80f8e74797 Make changes to GLM header includes as per suggestions by Mario Luzeiro 2016-03-21 18:39:25 +11:00
Cirilo Bernardo 10c8a57c59 Fixed timestamp checking code to use canonical filename 2016-03-21 07:21:54 +11:00
Cirilo Bernardo aa16666d72 Added file modification check to model cache code 2016-03-20 11:45:55 +11:00
Bernhard Stegmaier 5b0a250609 Fix compilation and install for OSX plus general code cleanup 2016-03-01 10:08:19 +11:00
Cirilo Bernardo c98ebdb8f0 Changed 3d_cache log reporting from stderr/stdout to wxLogTrace 2016-02-23 14:33:24 +11:00
Cirilo Bernardo 2f8c55cd99 Fixed segfault on getSHA1 (fopen result was not checked) 2016-02-23 11:38:58 +11:00
Cirilo Bernardo 5776037a70 Flush model data upon exit of Footprint Properties dialogs 2016-02-21 11:54:34 +11:00
Cirilo Bernardo 8dd744f635 Improved 3D cache manager's ability to replace outdated cache models 2016-01-31 13:21:12 +11:00
Cirilo Bernardo dddc3d91e9 Cleaned up 3D SceneGraph API by removing references to wxString 2016-01-29 11:52:42 +11:00
Cirilo Bernardo ab2fff46f1 Added version tag to cache data 2016-01-20 09:07:09 +11:00
Cirilo Bernardo 2ed89c29d2 Work in progress: transition to new 3D name resolution with nicknames 2016-01-15 11:28:28 +11:00
Cirilo Bernardo f4414e8325 Change 3D cache manager to use boost SHA-1 digest rather than in-tree MD5 2016-01-14 13:49:40 +11:00
Cirilo Bernardo 3a5110f74a Work in progress: checking debug output messages, internationalizing user info messages 2016-01-12 17:09:04 +11:00
Cirilo Bernardo eab70be17b Changed cache->Prepare() to cache->GetModel() 2015-12-17 09:21:30 +11:00
Cirilo Bernardo c0fcb15e3a + Rework S3D_CACHE::Prepare() to take only a filename and return
non-transformed S3DMODEL for rendering.
+ S3D_CACHE now caches S3DMODEL and returns a pointer to a single
  instance of the S3DMODEL for repeated calls to Prepare()
+ Beginning the VRML Plugin
2015-12-16 20:01:44 +11:00
Cirilo Bernardo f099ae27c5 Feature implementation complete: save and load cache data 2015-12-14 20:15:44 +11:00
Cirilo Bernardo 4924db7491 Bugfix: create 3d config path if nonexistent 2015-12-14 18:41:15 +11:00
Cirilo Bernardo 86042d86a6 Added partial render ability to IDF plugin 2015-12-11 17:37:42 +11:00
Cirilo Bernardo ac3acb0061 Moving headers to facilitate support for building 3D plugins out-of-tree 2015-12-09 18:30:48 +11:00
Mario Luzeiro 69cc788e8e + Removed glm source from kicad tree (Maciej / Cirilo)
+ Added renderer for 3D model preview (Mario)
+ Added 3d_cache including name resolver and modifications to 3D model dialogs (Cirilo)
2015-12-08 18:31:57 +11:00