← Back to team overview

kicad-developers team mailing list archive

Re: 3D-Viewer - Request for merge evaluation

 

Hi Wayne,
Thanks for had time to testing it.

> although I'm not 100% sure what it buys us

For an occasional 3D-Viewer user that was using the stable version of KiCad and will use this version,
if the user is "distracted", he/she shouldn't notice any changes at first.
Everything in general should work similar as before and things are on the same places.

However, from a backstage view point, the 3D-viewer source code was refactored and almost everything is new code: from 3d files parser plugins, wxWidget code to rendering targets..
It has a much more structured design and use new data structures both for the board construction and 3D models.
So, hopefully, it will be easier in future to add new features using this new framework.

One noticeable new feature the 3d rendering of the footprint while assigned new 3D shapes (Footprint 3d properties dialog)
User will be able to align while browsing the 3D footprint.
That was possible because the 3d-viewer canvas was detached from the 3d-viewer window.
In future should be possible to easily add this new canvas to other dialogs.

Although, new features can be listed already:
- Faster loading, special on 3D models (* the board loading still can be more optimized in future)
- OpenGL render is "is noticeably faster than the old one." [1], [2]
- Use of new 3D plugins (WRL, X3D, STEP and IGES [3])
- Preview of 3D model while browsing the file name (already implemented in the main branch, using source from the new 3D-viewer)
- 3D preview of the footprint while adding/align 3D shapes. [4]
- Render of 3D models accordingly the attributes (Normal, Normal+Insert, Virtual) On 3D-Viewer: Preferences->Show 3D models. Shortcuts: [5]
- Pivot rotation and center [6]
- Animated camera [7]


Example of future features that could be easily implemented in future:
- Faster board loading (provide some changed need on pcbnew)
- 3D exporters (using the generated structures of the board)
- Easy access in realtime to point&click 3D information (eg: 3d shape information, track/layers information, etc)
- New render targets (if someone is not happy with the existent ones, a GPU shader render can be implemented for instance)


> povray

To clarify, there is no integration or any kind of relation at moment with POV-ray.
I believe you mean "raytracing" instead of "povray"

> My biggest gripe is that the povray rendering button on the toolbar doesn't
> give any feedback as to whether or not the povray rendering is enabled.
> It would be nice if this was a toggle button rather than having to go
> into the menu to see which mode is being rendered.

As Nick already explained, that is expected to be a "Render current view as Raytracing" single click, while you are on OpenGL mode.
Maybe what could make sense is to disable (grey) that icon if the user switches to "Raytracing target" mode (as it does not make sense to render in raytracing as it is already in that mode and the render will be automatically )

That icon, will make a render using the "Raytracing target" with the current options, but as soon as the user moves the board it will back on "OpenGL target".


> The performance not so much but such is the case with povray

Do you (anyone?) have any comparison / example for benchmarking?

I expect that the results are much more faster than, but the quality will not be as high (or can be improved latter, spending more time rendering) as other proper software renders.
>From my research I found similar results (using POV-ray) that took about minutes up to hours to render.
(eg: Cirilo reported here renders of about 15m on Solidworks)
On comparison, on my CPU, on the most complex renders, I takes not more than 10s (typical about 4s)
There is lot room for visual improvements as well.


> Other than that, the only thing you need to resolve is any outstanding crash/freeze bugs

The only one pending is the one found by JP, I was not able to reproduce yet on any of my systems. I fixed already the other crash because of missing round rect pads.
There is also one little glitch that I experienced, sometimes (randomly) on raytracing the last pixel blocks are not draw for some reason that I am investigate.

Other kind of issues may be expected as soon as more users get access to it, but so, that is why it needs testing.


Did you had any general look on the source code?
Do you have any comments in general? Any vectors for improve on any particular files / modules?
Maybe if someone (the project committers?) could have a quick review and point me on any findings, I could then use it to review all the source with that points.

Regards,
Mario Luzeiro

[1] https://forum.kicad.info/t/testing-needed-new-3d-plugin/2808/38?u=kammutierspule
[2] https://bugs.launchpad.net/kicad/+bug/1511370/comments/9
[3] https://github.com/cbernardo/kicad_oce_3d
[4] https://kicad-info.s3-us-west-2.amazonaws.com/original/2X/3/3bb2529f7be362367b54ba13bbc647cc6b3f3044.png
[5] Normal, shortcut: 'T' (as in THT), Normal+Insert, shortcut: 'S' (as in SMD), Virtual, shortcut: 'V' (as in .. Virtual)
[6] Click with *middle button* or press *spacebar*, it will center the board at the mouse cursor and that will become the center of rotation.
[7] When you press view keys, the camera will be smooth animated, shortcuts: z/Z, x/X, y/Y, r(reset), F1(zoom in), F2(zoom out), cursor(pan)

________________________________________
From: Wayne Stambaugh [stambaughw@xxxxxxxxx]
Sent: 20 June 2016 13:45
To: Mário Luzeiro; kicad-developers@xxxxxxxxxxxxxxxxxxx
Subject: Re: 3D-Viewer - Request for merge evaluation

I had some time over the weekend to look at this and I'm satisfied with
it although I'm not 100% sure what it buys us.  The eye candy is nice.
The performance not so much but such is the case with povray.  My
biggest gripe is that the povray rendering button on the toolbar doesn't
give any feedback as to whether or not the povray rendering is enabled.
It would be nice if this was a toggle button rather than having to go
into the menu to see which mode is being rendered.  Other than that, the
only thing you need to resolve is any outstanding crash/freeze bugs
before I would be willing to merge it into the product branch.


Follow ups

References