← Back to team overview

kicad-developers team mailing list archive

Re: Some new sweet features on the new 3D-Viewer

 

Hi Mário, Maurice,

Yes, there can be a button for that. But naming must be done for ordinary users. They probably do not know what is OpenGL or raytracing. I think that OpenGL mode should be used as default and raytracing should be used for creating images or for one time render. It can be made as button with description like "Give me better quality".

When I see the menu then I can say that Preferences it can be splitted into Preferences and Render. And preferences button from toolbar should be in Preferences menu as an item too. And zoom +-, Top View and others should be too in menu, I suggesting View.

For the "pivot and rotation center" I think that it is an option for future development. But why it can not be as mCAD ?

I think that 3D PCB design coming to light nowadays. So 3D viewer may not remain only a as viewer but can be a editor. Imagine that you have an enclosure model and you need to align the holes. So you going to open PCB design in 3D editor and click add hole tool, click to axis of round support of enclosure and you will get a hole in PCB, ideally with diameter not to collide with enclosure but little bigger.

Or another example. You need to place a LEDs. So you have in enclosure a hole, select align tool, you click to LEDs axis, click to hole axis and you have LED in place. Of course, you can set a lock to enclosure so when you are moving with enclosure then locked parts move with board.

And only dimensioning. It can be like here: https://forum.kicad.info/t/this-is-what-the-footprint-editor-should-look-like/1499 . So you choose s dimensioning tool, click to one edge, click to other edge and you will get a dimension. And if editing is possible then you can edit the dimension to set distance between parts.

Of course it not tend to be an mCAD but a 3D PCB editor. So there can be only a tools for PCB design not tools as in mCAD.

So generally speaking. Features should not be limited by current way or "competitive" eCADs but only by what you can imagine. Current progress is great. But for future there can be communication in both ways between 3D viewer, eeschema and pcbnew. So modifications, highlihgting and other features can be realtime.

For GPU acceleration, I mean both, raytracing and OpenGL. It seems as in OpenGL mode is GPU used - in my system when I rotating the board then I get about 30% utilization of GPU and about same for CPU.

Thank you all for your hard work. KiCad is getting better and better day by day.

Jakub

Dne 7.3.2016 v 14:52 easyw napsal(a):
Hi mario,
anyway maybe it could be useful to just Raytrace a scene as positioned/zoomed in OpenGL render engine... in Blender that is the way is done...

I didnt understood,
Could you better explain this?
I mean in Blender you move your objects in a specific position with the angle and the zoom you desire in an environment (scene) with a fast rendering time, then you press F12 to render your picture/image... In kicad 3d-viewer OpenGL interface you could zoom and position your board as you would like to see it for Raytracing and then invoke the raytracing engine with i.e. Alt+R to get the screenshot of your OpenGL preview with Raytracing features ... and go back to OpenGL with i.e. Alt+R That will avoid the i.e. the recalculation in case of a zoom when in Raytracing engine...
I think Jakub suggested something similar...

Maurice

On 07/03/2016 13.26, Mário Luzeiro wrote:
Hi Maurice,

that was me pointing out of Raytracing in Blender :) ...
Sorry Maurice, I wrote Nick but I was thinking on you :)


anyway maybe it could be useful to just Raytrace a scene as positioned/zoomed in OpenGL render engine... in Blender that is the way is done...

I didnt understood,
Could you better explain this?


Just a feedback on release 5921... in win8-64b-wx3.02 I get the
rendering hanging and the progress status locked to 25%...
also waiting looong time I don't get any rendering out ...

work in progress.. wait :) .. It was working on Linux.. but not on Windows.. some issue with threads (openMP) and wxWidgets... I will fix it latter..

Mario Luzeiro

________________________________________
From: easyw [easyw@xxxxxxxxxxxx]
Sent: 07 March 2016 12:22
To: Mário Luzeiro; kicad-developers@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Kicad-developers] Some new sweet features on the new 3D-Viewer

Hi Mario,

On relation to Raytracing,
As Nick already pointed, similar images rendered in other softwares (eg: Blender) could take minutes to render.
that was me pointing out of Raytracing in Blender :) ...
anyway maybe it could be useful to just Raytrace a scene as
positioned/zoomed in OpenGL render engine... in Blender that is the way
is done...

I can confirm issues found by Nick:
- in opengl Mode building the 3D view roughly takes 3 times the
calculation time of stable or 3d initial merge version for the same board.
I can confirm that slower rendering time also in OpenGL in
win8-64b-wx3.02, but just the first time, after the cache is built the
rendering time is much faster (about 1/10)
Anyway I think it would be useful to fix also the first rendering time

about the improvement for the "pivot and rotation center", I think at
the moment the pivot is just fine; kicad is not a MCAD sw, so for
inspecting the board and parts, the actual implementation is just much
better the previous one with a fixed centered pivot...

Just a feedback on release 5921... in win8-64b-wx3.02 I get the
rendering hanging and the progress status locked to 25%...
also waiting looong time I don't get any rendering out ...

Maurice




On 06/03/2016 17.53, Mário Luzeiro wrote:
Thanks Jakub for testing and your feedback!

@Jakub, @Nick, @JP,

On relation to Raytracing,

"I found that low resolution can be only seen after zooming/rotating
before render is done, but because render takes long time so then it can
be seen as low resolution view for long time. In raytracing mode the
render is made for all board. So when board is zoomed in or rotated then
it can be seen in low resolution until a new render is done. But more
zoomed board needs more details. So all board must be rendered again in
better resolution and it takes more time than zoomed out board."


I think this describes exactly how it was implemented.
There are still room for improvements and suggestions are welcomed to do it in a different way.

The fact is that Raytracing is a natural slow (or not, depends) algorithm. (No, it cannot be accelerated by GPU in this case) As Nick already pointed, similar images rendered in other softwares (eg: Blender) could take minutes to render. So what I implemented was some compromise to get a rendering in some seconds.


So because it is a slow rendering method, there is a preview mode, the way I have it implemented at moment is:

- Camera movements (and after loading or change parameters): "low resolution" preview mode. - You can do more movements during 1s and it will keep the "preview mode". - After 1s idle (after last movement), it will start working on the final render.

A possibility would be to add a button "Click to render as Raytracing" and as Jakub said, there is no need to switch between render mode options.


Can you add into status bar a rendering progress ?

I didn't find a way yet to do it.. but I keep investigate.

I will reply your other questions and feedback latter...

Thanks!
Mario Luzeiro

________________________________________
From: Jakub Kozdon [fldrivers@xxxxxxxxx]
Sent: 06 March 2016 16:27
To: Nick Østergaard; Mário Luzeiro
Cc: kicad-developers@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Kicad-developers] Some new sweet features on the new 3D-Viewer

Hi Mário,

I was testing 5912. New features looks promising.

I can confirm Nick's issues. Low resolution in raytraing mode and long
render time. Long render time leads to "Program is not responding" in
Windows.

I found that low resolution can be only seen after zooming/rotating
before render is done, but because render takes long time so then it can
be seen as low resolution view for long time. In raytracing mode the
render is made for all board. So when board is zoomed in or rotated then
it can be seen in low resolution until a new render is done. But more
zoomed board needs more details. So all board must be rendered again in
better resolution and it takes more time than zoomed out board. So maybe
you can made a raytracing only as option for exporting an image or made
it default for exporting an images and OpenGL mode use only for 3D
viewer. So user do not need to switch renderer engines.

I found one bug. In OpenGL after first open of 3D viewer the traces,
holes and maybe other has square shape.

Can you add into status bar a rendering progress ?

And is possible to do some render in GPU ? I have Nvidia NVS 3100M and
i5 M520 CPU.

I have two improvements for "pivot and rotation center". The first is
that animated arrow can be made persistent and movable by mouse to
getting the center at desired location. And the second improvement is on top of the first. When user moves the arrow so that arrow can be sticked
to models - surface, center, edges - selectable by user, or somehow
intelligent.

Nicks sidenote - for cutting board artworks, it can be shown with some
transparency to better imagine where the board edge is.

Jakub

Dne 5.3.2016 v 10:55 Nick Østergaard napsal(a):
.2016-03-05 0:22 GMT+01:00 Mário Luzeiro <mrluzeiro@xxxxx>:
Hi NickOe,

tanks for testing it!

The issues you describe I didn't experienced it yet, would you like to try a latest version?
I am testing on a linux machine and on a windows machine.
I was testing 5909 Fix an issue on raytracing it was not reset a bbox.
of lp:~mrluzeiro/kicad/kicad_new3d-viewer

This is on archlinux x86_64.

I will retest with 5912.

What CPU do you have?
Intel(R) Core(TM) i5 CPU       M 540  @ 2.53GHz

That is two cores, and I have enabled hyperthreading.

On Raytracing, complex boards will take about 10seconds per CPU core just for rendering, it means if you have more cores it should take less. (depending also on the resolution)

Regarding the load times, I was expecting the same or faster (it should be faster in the future even more).

Currently I am mostly concerned about the time that I open the
3dviewer untill I can see my board (in opengl).

I have also noticed that there are not holes rendered in the solder
paste in the opengl view.
(I believe you mean solder mask ?)
On a second though, I mean solder paste and solder mask actually. :)

Since I received lots of requests (you and Maurice :P)
I implemented that feature (on solder mask) in my latest commit.

I was not very clear on if / how should I implemented the holes of the vias.
The old viewer shows holes in the solder make and paste at least.

Since there is no information to remove solder mask, that in the fab. will be "tented" vias. I leave it as discussion.Maybe I can add an option to remove it or not... but at moment it is by default implemented.

There is an issue with that.. this is only work (at moment?) with THT vias. So it will not remove if it is a "micro via" between B_Cu/F_Cu and a inner layer.
I am not too concerned about the microvias, personally. My concern was
only on though hole pads such and the normal vias.

I see your implementaiton of the holes in the mask now. But it looks
like the plating tube of the hole is smaller than the hole, is that
how it was intended?

In trying to test the render speed, I tried to change an option in the
of the mask, it takes about 19 seconds, measured with a stopwatch
manually. It looks like only one thread is execution when looking at
the CPU usage in top. It is on 100% and the other three are below 15%
as when idling.

A slight bug I noted that, I saw that the pivot point is reset after a
setting change to the viewer.

Hope advanced users that develop multilayer boards dont request it much! :P
On a sidenote; what was your plan on actually cutting board artworks
such as silk and pads and such that was outside of the board edge? If
implemented, I hope this will happen sometime in the future, then it
should be an option that can be enabled or disabled for the viewer.

Let me know when you try the latest updates...

Mario Luzeiro
________________________________________
From: Nick Østergaard [oe.nick@xxxxxxxxx]
Sent: 04 March 2016 18:23
To: Mário Luzeiro
Cc: easyw; kicad-developers@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Kicad-developers] Some new sweet features on the new 3D-Viewer

Hi Mario

I just tried your branch the other day, but there the raytracing did
not seem work properly at all. It was not rendering anything sometimes
and when it did it was one of the very low res views. I don't remeber
the revno, have you see this before? (I have not tried the latest of
today yet, in case you already fixed it).

I have a desing in similar complexity as that board and maybe a bit
less, but it takes 17 seconds to load the board in the 3d view,
whereas in the 3d viewer in 4.0.2 it takes 3 seconds for it to render
in the 3d viewer.

I have also noticed that there are not holes rendered in the solder
paste in the opengl view.
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp



Follow ups

References