Commit Graph

349 Commits

Author SHA1 Message Date
markus-bonk be58ab679b Fix coding style policy violations and CMake version.
Fix violations of 4.2.2 Function Definitions and 4.2.3 Control
Statements.
Set the minimum CMake version required to build to 3.1.
Removed the Visual Studio solution and project files.
2022-01-28 12:21:42 +00:00
markus-bonk aec7802fcf EDA_3D_VIEWER_FRAME: Implement SpaceMouse navigation and command export for 3D-viewer.
Full support for using a 3Dconnexion device in the 3D viewer has been added. Full 3D navigation is available for both the orthographic and perspective projections. Commands are exported and can be assigned to 3D mouse buttons. Any limitations to the functionality are limitations of the installed 3Dconnexion driver for the device and OS.

ADDED: A build option KICAD_USE_3DCONNEXION (default = ON) has been added to the main CMakeLists.txt. The option controls whether the SpaceMouse support is compiled into the solution.
2022-01-28 12:21:42 +00:00
markus-bonk f61c798295 Fix compilation errors in Fedora pipeline. 2022-01-28 12:21:42 +00:00
markus-bonk cd82a927c2 TRACK_BALL: Allow two input devices to simultaneously pan & rotate
Instead of the mouse pan and drag algorithms calculating the new
position or rotation values relative to a starting value, the new values
are calculated relative to the current values. This allows the user to
use a second input device to move or rotate the view at the same time
without its change being undone by the mouse.
2022-01-28 12:21:42 +00:00
markus-bonk 27063688b3 CAMERA: Fix spelling of method MakeRayAtCurrrentMousePosition.
EDA_3D_CANVAS: Fix spelling of method getRayAtCurrrentMousePosition.
2022-01-28 12:21:42 +00:00
markus-bonk 5b9f56613e CAMERA: Make the CAMERA_FRUSTUM structure values for nw, nh, fw and fh consistent.
The CAMERA_FRUSTUM structure values for nw, nh, fw and fh to always mean width and height for both perspective and orthographic views instead of half-width and half-height in perspective.

The orthographic / perspective view toggle has been modified to keep the viewed plane at m_camera_pos_init * m_zoom the same dimensions in both projections.
2022-01-28 12:21:42 +00:00
Jeff Young b828355206 A bit more angle cleanup. 2022-01-18 09:48:24 +00:00
Jeff Young abd3f5bc2b Move footprints to EDA_ANGLE. 2022-01-14 16:08:18 +00:00
Marek Roszko e4dbfcd92d Swap out some wxSize for VECTOR2I 2022-01-04 20:42:27 -05:00
Ian McInerney 9e6446a8dc Use enums for 3d Viewer settings instead of ints 2021-12-30 23:03:13 +00:00
Marek Roszko 2d1357dc54 Swap some of the 3d viewer to VECTOR2I 2021-12-29 14:20:40 -05:00
Mikolaj Wielgus e9c29a4c1f 3D Viewer: Only highlight what is under the cursor
Fixes https://gitlab.com/kicad/code/kicad/issues/10136
2021-12-28 00:50:15 +01:00
Jeff Young b84a85f648 Cleanup dead code and stale TODOs. 2021-12-24 21:10:28 +00:00
Jeff Young dabc75bee8 Source 3D dimensions from board stackup.
Also includes a performance improvemnt by caching the 3D model matrices.
2021-12-24 21:10:28 +00:00
Jeff Young 68d2630d08 Flatten a layer of indirection out of 3D config settings. 2021-12-24 13:08:54 +00:00
Mario Luzeiro f81539cd41 3D-Viewer: do not change the z component of the normal on silkscreen material
Fixes https://gitlab.com/kicad/code/kicad/issues/9823
2021-12-13 12:49:18 +00:00
Seth Hillbrand 4814614d6d Prevent OpenGL from re-using buffer vals
Skip GAL buffer numbers (presumed) when allocating 3d viewer buffers

Fixes https://gitlab.com/kicad/code/kicad/issues/8915
2021-12-01 13:37:24 -08:00
Mikolaj Wielgus c3b792592b Remove uncommented dead code in 3D viewer 2021-11-20 02:45:57 +01:00
Seth Hillbrand ccd3a1e6a9 3d-viewer: Don't special-case Paste
Paste layers should be clipped in Realistic mode.  Verifying that paste
doesn't extend beyond the board area should be left to DRC, or
non-realistic mode if you need a 3d view of it.

Fixes https://gitlab.com/kicad/code/kicad/issues/9460
2021-10-25 11:18:13 -07:00
Mikolaj Wielgus cf3a979711 3D Viewer: Fix zoom limit calculations
Fixes https://gitlab.com/kicad/code/kicad/issues/9407

Fixes https://gitlab.com/kicad/code/kicad/issues/8805
2021-10-24 18:14:49 +00:00
Mikolaj Wielgus 363214d252 Fix incorrect behavior of BBOX_3D::GetMaxDimension() 2021-10-24 18:14:49 +00:00
Mikolaj Wielgus afccea34a5 Remove default zoom level from camera constructor
Initial distance should be sufficient to determine default zoom.
2021-10-24 18:14:49 +00:00
Jeff Young 6c0110ecd3 Naming conventions.
There's nothing "legacy" about the OpenGL 3D renderer.
2021-10-21 14:30:03 +01:00
Jeff Young 7e8f2cdb94 Simplify highlighting logic.
Fixes https://gitlab.com/kicad/code/kicad/issues/8410
2021-10-14 00:31:52 +01:00
Seth Hillbrand 548e5f49bd Clean up unused variable usage
Unused variables in function calls can be commented out.  Unused
return variables get a new routine `ignore_unused()` that silences the
warnings with zero overhead.
2021-10-05 10:00:30 -07:00
Mikolaj Wielgus 996835826e Do not change FOV when zooming in/out, only move the camera
It's odd to both move the camera and change FOV when one wishes to
enlarge or smallen the models. Let's only move the camera.
2021-09-15 17:58:47 +00:00
jean-pierre charras 5e8b23af64 3D viewer: add missing initialization of the line width of the grid.
Fixes #9082
https://gitlab.com/kicad/code/kicad/issues/9082
2021-09-02 18:33:59 +02:00
jean-pierre charras d98e93de7e 3D viewer: fix color issues when using the colors stackup:
- Add missing Yellow (.gbrjob predefined color) in list
- silkscreen colors: add .gbrjob predefined colors in list
- Use a default body color (FR4) for dielectric material not in known list
2021-08-25 18:33:49 +02:00
Jeff Young 9f8f81cae2 Fix null-ptr dereference when layer doesn't exist.
Also removes a whole slew of extraneous type-casts, and makes better
use of for( x : listOfX ) for readability.

Fixes https://gitlab.com/kicad/code/kicad/issues/8996
2021-08-19 11:52:24 +01:00
jean-pierre charras e1bbb717f6 3D viewer: ensure 3D shapes are loaded when switching 3D shapes visibility option to ON.
Fixes #8959
https://gitlab.com/kicad/code/kicad/issues/8959
2021-08-16 16:28:59 +02:00
Jeff Young 46338403e7 Unwrap some std::library typedefs. 2021-07-28 22:16:38 +01:00
jean-pierre charras e00f609bdd 3D viewer: add a bit more activity messages during 3D scene building. 2021-07-22 16:13:38 +02:00
jean-pierre charras a43ca978df 3D viewer: do not build the board 3D data during 3D frame creation, but after.
Building the 3D data is time consuming, so creating the data after the 3D
frame is shown is better, and the build activity is visible, especially on Linux.
2021-07-18 17:55:40 +02:00
Marek Roszko eff75b630f Get rid of anonymous struct typedefs
We are using C++14 where there is no reason for this and is banned in C++20 under P1766R1. MSVC generates a warning under C++14 as a reminder.
2021-07-01 18:28:41 -04:00
Maurice d9a11c30ef 3d viewer fix for 3d single material object Diffuse Only opacity 2021-06-28 20:32:03 +00:00
Jeff Young 73b91a1a92 More sensible zoom defaults for 3D viewers.
Also fixes a bug where the model viewer in the file picker was using
only 1/4 of the screen on HIDPI displays.
2021-06-28 19:08:23 +01:00
Jeff Young 5c21f93803 Consistency in progress and error messages. 2021-06-26 13:23:43 +01:00
Jeff Young 16047b7419 3D preferences bug fixes.
1) Make sure prefs get saved when closing parent frame.
2) Add camera projection mode to settings.

Fixes https://gitlab.com/kicad/code/kicad/issues/8110

Fixes https://gitlab.com/kicad/code/kicad/issues/8626
2021-06-17 12:22:18 +01:00
Seth Hillbrand 3269ca3201 Fix compile error on BSD
The cast here should actually be from '0' and not 'NULL' as we are
getting an integer value of 0 for the bbox_idx_count

Fixes https://gitlab.com/kicad/code/kicad/issues/8580
2021-06-16 09:19:39 -07:00
Jeff Young 5d9c1dd75a Better names for 3D material properties rendering modes.
(Also restores the legacy behaviour of ignoring transparency in
diffuse mode.)

Fixes https://gitlab.com/kicad/code/kicad/issues/8437
2021-06-12 23:01:41 +01:00
Jeff Young 096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
jean-pierre charras 1c3df973d6 Coverity warnings fixes. 2021-06-10 13:45:02 +02:00
luz paz 5f1e9bc8a7 Fix typos in source code 2021-06-10 01:24:15 +00:00
luz paz f968fc8719 Fix source comment / documentation typos 2021-06-09 19:32:58 +00:00
Marek Roszko 8377ebb0e1 Fix msvc warnings 2021-06-06 15:30:31 -04:00
david-beinder 86add3bb85 Fix MSVC C4312 warnings when casting 32bit ints to pointer types on 64bit builds 2021-06-05 02:57:51 +00:00
Marek Roszko 25678ee00d Fix msvc 16.10 build error 2021-06-03 23:13:39 -04:00
Marek Roszko 4df3cb912d Remove another leaky wx/log.h header 2021-06-03 08:11:15 -04:00
Ian McInerney d56251fdac Remove universal include of wx.h in 3d viewer OpenGL file 2021-06-03 02:29:09 +01:00
jean-pierre charras a06f965ffa 3Dviewer: fix incorrect drawing of a 3d model hovered by the mouse pointer.
Was due to a recent change in 3D code.
2021-05-22 20:23:43 +02:00
Jeff Young ac58a3f9f0 Add preference for 3d-model-highlight-on-rollover.
Fixes https://gitlab.com/kicad/code/kicad/issues/8349
2021-05-11 20:53:53 +01:00
Wayne Stambaugh d2a7f81b10 Debugging improvements and clean up.
* Remove unused wxLogDebug calls.
* Add add application level character tracing to detect unhandled key
  events.
* Catch unhandled exceptions in KiCad main event loop like single top
  applications.
2021-05-03 18:08:15 -04:00
Marek Roszko 03cf2b517f Enum class PAD_ATTR_T
Renamed such that python stays the same
2021-05-01 10:51:54 -04:00
Marek Roszko a69256e15b Remove extraneous #include 2021-04-30 21:55:48 -04:00
Ian McInerney ecd9bf696e Be consistent about using nullptr instead of 0
0 can be too easily overloaded into an int, so ensure we use nullptr
when we mean pointers.
2021-04-22 22:20:34 +01:00
Mario Luzeiro e92dc96767 3D-Viewer: fix issue with solder mask
Fixes https://gitlab.com/kicad/code/kicad/issues/8272
2021-04-22 06:26:04 +00:00
Mario Luzeiro cdc8fd3804 3D-Viewer: improve edge texture clamping of end segments
Fixes https://gitlab.com/kicad/code/kicad/issues/8245
2021-04-21 06:34:19 +00:00
david-beinder e0f69ad28b 3D viewer: Fix gap between plating and annulus copper
Hide transition by ending layer copper withing the annulus of the cylinder. Also always use hole wall thickness and set more realistic solder mask thickness
2021-04-19 13:19:32 +00:00
Mikolaj Wielgus 744e70df36 3D Viewer: Fix mouse panning in orthographic projection mode
Fixes https://gitlab.com/kicad/code/kicad/issues/5561
2021-04-10 17:58:50 +00:00
Dominik Wernberger e2aa7be4b3 Added a lot of consts and refactored a few lines 2021-03-08 12:49:48 -08:00
kamp 0a9a9d625e Fix BBOX_3D documentation 2021-02-24 17:45:53 +00:00
Marek Roszko 907e282347 Silence some msvc warnings
- exception variables that were unused
- RAYSEG2D improperly foward declared with class instead of struct
- unused vars
2021-02-20 11:58:55 -05:00
Wayne Stambaugh 2d64613bbb Coverity fixes.
Reports 314745, 316271, and 316269.
2021-01-13 11:23:09 -05:00
Wayne Stambaugh 926cc3a00d 3D Viewer: more code cleaning and naming improvements. 2021-01-07 14:33:43 -05:00
jean-pierre charras 86be755c83 Fix compil warning: do not use class instead of struct in forward declarations 2021-01-06 09:29:03 +01:00
Wayne Stambaugh 1c7a5c46e5 3D Viewer: member variable and method naming improvements.
A few build improvements thrown in for a good measure.
2021-01-05 17:24:29 -05:00
Wayne Stambaugh 710e621c6a 3D Viewer: remove all instances of "c" prefix from file names. 2021-01-03 17:44:49 -05:00
Wayne Stambaugh 8416c1fc37 3D Viewer: remove all instances of "C" prefix from object names. 2021-01-02 17:45:36 -05:00
Dominik Wernberger caf300aa33 Fix memory leak 2020-12-24 17:33:33 +00:00
Wayne Stambaugh f311831c27 Coverity fixes.
280252, 314742, 314745, 314747, 314755, 314756, 314757, 314758,
314935, 314936
2020-12-20 13:24:47 -05:00
Ian McInerney 048900dda7 Fixup the 3d Viewer code after the last fixup 2020-12-17 00:30:22 +00:00
Wayne Stambaugh 4d128b819a 3D viewer code cleaning round 3. 2020-12-13 18:02:57 -05:00
Wayne Stambaugh 9e22499350 3D viewer code cleaning round 2.1. 2020-12-12 12:35:31 -05:00
Wayne Stambaugh 1eba0c435b 3D viewer code cleaning round 2. 2020-12-12 12:35:31 -05:00
Wayne Stambaugh d1fe4a0c98 3D viewer code cleaning round 1. 2020-12-11 08:51:42 -05:00
jean-pierre charras e6550fb92e 3D viewer: fix a draw issue: missing holes.
Fixes #6608
https://gitlab.com/kicad/code/kicad/issues/6608
2020-12-04 16:35:57 +01:00
Jeff Young 7f360a7188 Some renaming in 3D code for better SNR. Also formatting fixes. 2020-11-30 14:38:06 +00:00
Jeff Young 3ca06700fc Formatting. 2020-11-29 20:00:16 +00:00
Jeff Young 9c7c05c161 Mostly formatting cleanup but a few type-casting cleanups too. 2020-11-24 22:16:41 +00:00
Mario Luzeiro 8b9be2e129 3D-Viewer: fixes generations of layer lists
Fixes https://gitlab.com/kicad/code/kicad/issues/6385
2020-11-15 16:55:16 +00:00
Jeff Young 7bd31d5237 Naming conventions. 2020-11-14 18:26:03 +00:00
Jeff Young bdbb68f813 MODULE -> FOOTPRINT. 2020-11-13 16:04:03 +00:00
Jeff Young 63a54d003e More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 522d64968e Yet more module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 9106cc19bf Yet another tranche of module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young fc9cf1d827 More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 52a46341db More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young f5443de7f9 D_PAD -> PAD. 2020-11-13 15:16:24 +00:00
Jeff Young 84dd5108ba Remove some "class_" prefixes from files. 2020-11-13 15:16:23 +00:00
Mario Luzeiro 8ec0cef572 3D-Viewer: Fixes correct copper plated color in Raytracing mode 2020-11-11 20:09:12 +00:00
Mario Luzeiro 5841ea3cd2 3D-Viewer: Raytracing, add silkscreen texture
improves other textures
2020-11-11 16:22:34 +00:00
jean-pierre charras 6570cd5850 minor compil warning fix 2020-11-11 12:28:37 +01:00
Mario Luzeiro c08f9ac9f6 3D-Viewer: properly clears the container
Fixes https://gitlab.com/kicad/code/kicad/issues/6346
2020-11-11 09:42:14 +00:00
Ian McInerney 11e6cac42b Introduce EGL backend support for the OpenGL canvas
wxWidgets 3.1.5+ on Linux will compile with the Wayland EGL
canvas as the backend instead of the X11 backend. This requires a
version of GLEW compiled with the proper EGL defines and a different
header/code for certain parts that are X11 GLEW specific.

This introduces an in-tree version of GLEW that will be built with the
GLEW_EGL flag then statically linked into the KiCad executables when
EGL support is needed.
2020-11-11 00:41:02 +00:00
Mario Luzeiro e105451f44 3D-Viewer: when possible, uses only the board edges to calculate boundings
Add Report messages to Raytracing

Fixes https://gitlab.com/kicad/code/kicad/issues/6316
2020-11-10 17:32:24 +00:00
Mario Luzeiro 753383d6ec 3D-Viewer: disable layer subtraction operations on non realistic mode 2020-11-10 14:40:42 +00:00
Mario Luzeiro a9be08e1ce 3D-Viewer: skip layers not created
Fixes https://gitlab.com/kicad/code/kicad/issues/6324
2020-11-10 13:57:52 +00:00
Wayne Stambaugh 4ea3914d4e Coverity fixes.
CIDs: 312996, 305508, 305509, 305510, 312992, 312997, 312994, 312995,
312968, and 306650.
2020-11-10 08:50:16 -05:00
Mario Luzeiro 82bd232737 3D-Viewer: mark flag as initialized
Fixes https://gitlab.com/kicad/code/kicad/issues/6331
2020-11-09 13:19:28 +00:00
Roberto Fernandez Bautista 1bbc569151 Fix DoRePaint routine in EDA_3D_CANVAS
- Check that we aren't already painting (return if we are)
 - Check that GLEW functions exist before calling them in 3D canvas and throw exception if they are no longer available
 - Catch above exceptions in paint routine and show an infobar message to the user
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6246
2020-11-07 15:39:57 +00:00