Commit Graph

221 Commits

Author SHA1 Message Date
jean-pierre charras 3f1a90c8a4 3D viewer; Fix a few incorrect use of ToUTF8() in log and error messages. Only noticeable when messages contain non ASCII7 chars. 2016-08-17 09:37:51 +02:00
jean-pierre charras 7bc8cb56e0 Fix bug: Impossible to rescale 3D models 2016-08-05 21:30:23 +02:00
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
jean-pierre charras 1fbb84fd98 Move call of SetSizeHints in dialogs in a wxInitDialogEvent event, because some widgets sizes are not fully initialized before this event.
It is especially true in some Window Managers like KDE, but can be true in any WM, when initializations are mage by TransferDataToWindow() method.
2016-07-02 14:44:36 +02: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
jean-pierre charras 1c838ba92f Slightly modify a declaration to make compil compatible with gcc 4.8.4, used in Ubuntu 14.04 LTS (the latest LTS currently available), and to avoid many bug reports. 2016-06-13 14:19:47 +02:00
jean-pierre charras 688fb5caaa Minor enhancements in dlg_3d_pathconfig (better look, but not perfect). Also fix an issue: the minimal dialog size was not always calculated. 2016-06-13 12:41:27 +02:00
Cirilo Bernardo b09f079ab4 3D file name resolver improvements.
* Add a Help button and text to the 3D alias configuration dialog
* Display KISYS3DMOD and internally defined KiCad path env vars
* Add a button to bring up the "Configure Paths" (env vars) dialog
* Remove the file name mapping feature from the resolver; this results in
  the resolver always using the current definition rather than a possibly
  outdated cache value.
2016-06-12 18:46:00 -04:00
Mário Luzeiro f25d12f571 Footprint 3D properties dialog panel: fixes a bug on the offset of 3D Settings (Footprint) (the value range of the offset parameters were not set so it was not able to enter values <-10)
Also make some small layout changes on the orientation parameters in order to make it vertical smaller.
2016-06-09 14:27:58 +02:00
Cirilo Bernardo e0a7f0041a Better 3D filename resolution 2016-06-09 07:48:49 +02:00
jean-pierre charras a4658ab6be Fix a few compil warnings (not used vars, shadowed local vars) 2016-06-01 14:22:05 +02:00
Cirilo Bernardo 34f223a707 Fix FP Editor : Invalid Filename Err.msg message wheb trying to edit a 3D filename 2016-05-30 10:22:19 +02:00
jean-pierre charras f1c9f284fd Dialog 3D path config: fix incorrect grid cells sizes when opening the dialog, and incorrect min size dialog. 2016-05-28 11:33:20 +02:00
jean-pierre charras 3c0859686b Gerbview: fix a stupid mistake I made in rev 6829 (crash when reading a gbr file). 3d path config dialog: make it resizable. 2016-05-26 18:58:32 +02:00
Maciej Suminski da312db7a4 Fixed a wxWidgets assertion. Newer wxWidgets (3.1) display a message saying that horizontal alignment flags are ignored with wxEXPAND. 2016-05-02 15:56:12 +02:00
unknown ce331b03e8 3D_cache/cmakelists.txt: Don't clear CMAKE_CXX_FLAGS compiler flags 2016-05-02 11:45:23 +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
jean-pierre charras c146cc09eb Kicad: fix a crash when changing a project, if pcbnew was run and "Update PCB from Schematic" was run and Schematic editor never opened.
(In this case the schematic frame exists, but some members are not initialized as expected, and a crash happens when calling the schematic editor dtor)
Minor other fix: avoid multiple very similar strings to translate in 3d_filename_resolver.cpp
2016-04-08 14:11:05 +02:00
Cirilo Bernardo 973786d75d Fix 3D Coverity issue, other minor fixes
* CID 143740:  Null pointer dereferences  (NULL_RETURNS)
A few minor cut/paste and style issues in the 3D code are also fixed.
2016-04-07 18:54:14 -04:00
Simon Richter 6a65341599 3D: Make file test more portable 2016-04-06 22:41:24 -04:00
Cirilo Bernardo c2a60d14d7 3D: fix issues reported by Coverity scan
*** CID 143752:  Incorrect expression  (USELESS_CALL)
*** CID 143751:  Incorrect expression  (UNUSED_VALUE)
*** CID 143749:  Uninitialized members  (UNINIT_CTOR)
*** CID 143748:  Uninitialized members  (UNINIT_CTOR)
*** CID 143747:  Uninitialized members  (UNINIT_CTOR)
*** CID 143746:  Uninitialized members  (UNINIT_CTOR)
*** CID 143745:  Uninitialized members  (UNINIT_CTOR)
*** CID 143744:  Uninitialized members  (UNINIT_CTOR)
*** CID 143740:  Null pointer dereferences  (NULL_RETURNS)
*** CID 143739:  Memory - corruptions  (MISMATCHED_ITERATOR)
*** CID 143735:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
*** CID 143734:  Error handling issues  (CHECKED_RETURN)
2016-04-06 21:41:52 -04:00
Cirilo Bernardo 20b40aba1c Fixed bad delete/delete [] invocations and other warnings and errors as suggested by cppcheck 2016-04-05 20:32:22 +10: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
Cirilo Bernardo 491e0250c0 Suppress dialog pop-up when 3D file resolver does not find a file 2016-03-15 11:39:28 +11:00
Cirilo Bernardo a30151231f Fix invocation of glm::cross and glm::normalize 2016-03-15 11:38:55 +11:00
Cirilo Bernardo 30f9aba7c9 Work on SG consistency checks: fixed a number of bugs and improved integrity checking when writing cache files 2016-03-14 12:30:59 +11:00
Cirilo Bernardo 0085d1aea7 Fixed unsigned vs signed int comparisons 2016-03-11 09:37:39 +11:00
Mário Luzerio d4655020f9 Fix zoom issue on MSWin (wxCanvas requires focus) 2016-03-02 07:50:32 +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 0b18af3fdb Changed resolver failure message to use wxLogMessage instead of wxMessageBox 2016-02-26 15:18:59 +11:00
Cirilo Bernardo 37c85113ee Changed resolver failure message to use wxLogMessage instead of wxMessageBox 2016-02-26 15:16:55 +11:00
Cirilo Bernardo 097ac3a6b7 Changed resolver failure message to use wxLogMessage instead of wxMessageBox 2016-02-26 15:14:20 +11:00
Cirilo Bernardo e7c32873ea Remove bad default behavior of adding current working dir to default search path 2016-02-25 14:31:59 +11:00
Cirilo Bernardo 5306db0c98 Added missing include to 3d_plugin_manager 2016-02-24 07:26:58 +11:00
Cirilo Bernardo 9195451e12 Switched SG* classes and plugin loader logging code from stderr to wxLogTrace 2016-02-23 17:46:22 +11:00
Cirilo Bernardo d051a8f47e Changed IFSG* log reports from stderr/stdout to wxLogTrace 2016-02-23 16:28:41 +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 4edce46764 Fixed bug: ambient intensity RGB not correctly written/read 2016-02-07 08:52:42 +11:00
Cirilo Bernardo 99aba8f261 Changed handling of ambientIntensity; change of major version in SG* lib 2016-02-07 08:41:27 +11:00
Cirilo Bernardo 68dde1f16f Fixed inappropriate model scale limitation in 3D Footprint Properties dialogs 2016-02-04 12:31:37 +11:00
Cirilo Bernardo bf3d2b252e Fixed VRML normals calculations 2016-02-03 11:44:48 +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 ece1291d93 Fixed SG* CMake control file to handle new sg_version.h file 2016-01-29 12:00:03 +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 cd831d9a8a Removed include directives for wx/wx.h within 3D cache code 2016-01-28 17:12:41 +11:00
Cirilo Bernardo 1028535561 Small improvements to 3D file selector UI 2016-01-26 11:50:01 +11:00
Cirilo Bernardo cb8ccb5882 Small UI improvements 2016-01-25 16:59:45 +11:00
Cirilo Bernardo cc906ec12e Removed deprecated header 2016-01-25 15:58:24 +11:00
Cirilo Bernardo 3eca3fe75d Implemented new 3D file selector with preview 2016-01-25 15:55:36 +11:00
Cirilo Bernardo ff07ad3f05 Fixed bug: 3D model selector sets scale values to zero 2016-01-24 08:37:28 +11:00
Cirilo Bernardo 20f97f34c3 Temporarily disabled some 3D data transfer code due to cross-platform differences in wxFileDialog 2016-01-23 20:36:39 +11:00
Cirilo Bernardo 31af6d7dbc Fixed GUI issues related to setting scale/offset/rotation 2016-01-23 20:07:58 +11:00
Cirilo Bernardo c79cc21396 Fixed syntax problem in MSWin specific code 2016-01-23 16:34:29 +11:00
Cirilo Bernardo fa37f233ef Added 'Change' button to 3D file selector to improve UI usability 2016-01-23 16:24:12 +11:00
Cirilo Bernardo 81f95a8dbc Improve message displayed when resolver encounters a non-existent alias 2016-01-23 16:09:42 +11:00
Cirilo Bernardo 7c829c9e84 Added manual editing of 3D file name with alias tags 2016-01-23 14:52:54 +11:00
Cirilo Bernardo ab2fff46f1 Added version tag to cache data 2016-01-20 09:07:09 +11:00
Cirilo Bernardo 3a80de107d + Improved 3D file resolution behavior with respect to duplicated paths
+ Added versioning to the 3D search path configuration file
2016-01-20 08:36:26 +11:00
Cirilo Bernardo ec9acfd410 + Changed wxT macro from _T() to _()
+ Added hints to 3d_filename_resolver to help transition from
  legacy 3D model resolver behavior.
2016-01-19 11:05:40 +11:00
Cirilo Bernardo d3f68e6482 Fix resolution of paths relative to KISYS3DMOD in legacy support 2016-01-19 10:30:20 +11:00
Cirilo Bernardo 625ce3cb69 Fix accidental application of filters to all cells of 3D search path GUI 2016-01-19 10:11:09 +11:00
Cirilo Bernardo 54940002f9 Implemented 3D search path configuration GUI 2016-01-18 19:53:35 +11:00
Cirilo Bernardo 7848b2a52e Implemented new 3D searchpath configurator 2016-01-18 16:59:06 +11:00
Cirilo Bernardo 7434e673e1 Fixed bug in VRML coordinate conversion 2016-01-18 10:54:24 +11:00
Cirilo Bernardo 9a0b020806 Added VRML conversion of 'translation' and 'center' to mm on read and 0.1 inch on write 2016-01-18 10:39:51 +11:00
Cirilo Bernardo ef62a5f153 Ensure consistent use of mm within SG models and that SG models write VRML files using 0.1 inch units 2016-01-18 08:35:29 +11:00
Cirilo Bernardo 9aeaf4a71b Prevent unresolved path expansions from appearing as blank entries in 3D path list 2016-01-18 08:34:21 +11:00
Cirilo Bernardo 4d5097b41d Work in progress: preparing new resolver scheme 2016-01-15 14:01:21 +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 81977ed6b7 Finished checking debug/info messages and internationalization where appropriate 2016-01-12 18:03:17 +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 f123fab15b Removed unnecessary platform-dependent includes 2016-01-11 16:25:38 +11:00
Cirilo Bernardo e0b50b4002 Ensuring consistent internal kicad file separator character on MSWin 2016-01-11 16:24:51 +11:00
Cirilo Bernardo c81a0d0f2f Moved data transfer from OnOK to TransferDataFromWindow() and removed all instances of OnOK and OnExit 2016-01-11 16:14:35 +11:00
Cirilo Bernardo 14bee875cf Replaced platform-dependent dynamic loading code with wxPluginManager 2016-01-11 15:47:08 +11:00
Cirilo Bernardo 2bdc4d770b Fixed plugin->Load invocation (passed wxString instead of const char*) 2016-01-11 14:04:54 +11:00
Cirilo Bernardo c24c07962b Fixed bug in display of Footprint Properties rotation (text too long) 2016-01-08 18:53:45 +11:00
Cirilo Bernardo 87c62b443d Improved SG* code to avoid spurious warnings when adding child/reference nodes 2016-01-08 17:04:17 +11:00
Cirilo Bernardo 979edc4f9f Improved VRML1 conformance to spec 2016-01-08 16:23:42 +11:00
Cirilo Bernardo e8593d177c Change 'class S3D_INFO' declarations to 'struct S3D_INFO' 2016-01-07 19:54:39 +11:00
Cirilo Bernardo 1b6480e858 Added support for VRML1 transforms (except for MatrixTransform) 2016-01-07 17:01:07 +11:00
Cirilo Bernardo 29d7829909 Fix for MSWin (plugins not found) 2016-01-06 20:05:29 +11:00
Cirilo Bernardo 9d55ad375f Removing redundant sg/ifsg colorindex files and references 2016-01-06 18:19:20 +11:00
Cirilo Bernardo 403cd94edc Fixed color indexing for VRML2 plugin 2016-01-06 16:51:29 +11:00
Cirilo Bernardo 6f309a46c9 Implemented per-vertex colors for VRML2 and SGNODE 2016-01-06 16:15:54 +11:00
Cirilo Bernardo 6b873ed46b Work in progress: implementing SG translation for VRML1 models 2016-01-06 15:34:14 +11:00
Cirilo Bernardo 98f867629b Added debug printouts to help debug plugin search/loading on MSWin 2016-01-06 06:48:27 +11:00
Cirilo Bernardo c798f8b545 Added support for FreeCAD VRML files 2016-01-04 18:10:15 +11:00
Cirilo Bernardo 97d4c33a9f Fixed preview pane resizing 2016-01-04 09:15:53 +11:00
Cirilo Bernardo 59cf4c5ed0 + Fixed calculation of overall transform in SCENEGRAPH
+ Fixed NULL dereference bug in VRML2 nodes
2016-01-03 14:55:30 +11:00
Cirilo Bernardo fad73f0e85 VRML2 3D plugin is now functional 2016-01-02 12:21:02 +11:00
Cirilo Bernardo b426740195 Removed dead code modules 2016-01-01 16:23:21 +11:00
Cirilo Bernardo 70be4e8f7f + Reverted accidental edit of sg_node.cpp
+ Fixed invocation of SHAPE_POLY_SET::Simplify() to match changes in main
2015-12-19 17:53:07 +11:00
Cirilo Bernardo 396825d960 Cleaning up in preparation for merge 2015-12-19 14:57:02 +11:00
Cirilo Bernardo 86c54ce636 Modified IDF plugin to support IDF assemblies (*.emn) in addition to component outlines (*.idf) 2015-12-18 19:43:27 +11:00
Cirilo Bernardo 008d8a540a + Fixed bug in SGSHAPE::Prepare() : bad assignment of color pointer
+ Reworked s3d_plugin_demo2.cpp to use per-vertex-per-face normals
+ Reworked s3d_plugin_idf.cpp to use per-vertex-per-face normals
2015-12-17 13:55:35 +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 580f7aecfc Added model coloring to the IDF 3D model plugin 2015-12-16 15:11:54 +11:00
Cirilo Bernardo c251fbac75 + Improved the normals calculations (however it's still buggy)
+ Reworked 3D plugins to use normals calculations
2015-12-16 14:25:46 +11:00
Cirilo Bernardo 304cd81ebd + Bugfix: changed Plugin Loader to expect 'GetPluginVersion' instead of
'GetVersion'.
+ Introduced normal calculations. This is buggy due to multiple equal
  face normals distorting the vertex normal; this will be fixed by
  removing the redundant face normals from the calculations.
2015-12-15 18:53:03 +11:00
Cirilo Bernardo 1940bd71e4 Resync with main branch + fix MSWin build (accidental inclusion of dlfcn.h) 2015-12-15 10:56:11 +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 a2fe783f53 Finished refactor and introduction of generic Plugin scheme 2015-12-14 14:51:28 +11:00
Cirilo Bernardo 3ff8ca0caf Refactored to use new generic plugin base 2015-12-14 08:45:22 +11:00
Cirilo Bernardo 86042d86a6 Added partial render ability to IDF plugin 2015-12-11 17:37:42 +11:00
Cirilo Bernardo b46451ec81 Introducing the IDF 3D plugin and reorganizing directories 2015-12-11 08:34:52 +11:00
Cirilo Bernardo 210416aca4 Attempting to improve the file selector path list combo box 2015-12-10 15:02:05 +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
Cirilo Bernardo a0597c4614 GUI improvements including interactive update of model orientation/position 2015-12-09 16:43:30 +11:00
Cirilo Bernardo 47f40def0c GUI improvements including control of panel sizes and resizing of GL canvas in preview 2015-12-09 10:38:25 +11:00
Cirilo Bernardo 2ba7c05cbf Resync with main branch and fixed to work with new symbol visibility rules 2015-12-09 09:52:02 +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