← Back to team overview

kicad-developers team mailing list archive

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

 

Hi Maurice,

Yes, yes, there are many things to be done.

I will look at it. Thanks you for recomendation.

Jakub

Dne 7.3.2016 v 21:47 easyw napsal(a):
Hi Jakub,
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'm not saying it could not be an option in the future, I'm just realistic... It took me three years to see my implementation of Virtual models to enable/disable enclosure included in the (almost) main branch of kicad... https://kicad-info.s3-us-west-2.amazonaws.com/original/2X/0/0b70db5f2bd661b6417bd086cf45035a5fa263ff.gif

and consider that I offered my code and the patch, but it is quite difficult to have something changing in kicad...
Thanks a lot to Wayne and Mario to agree that was useful to all users :)

Also I had to 'insist' (and I'm minimizing) a lot with Mario asking for adding the feature to move the pivot from the center of the board... thanks again a lot to Mario for implementing that! :)

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.
I agree with you ... it would be nice, but there are so many things that the dev are following to improve kicad that I suspect those activities will have a very low priority

If you are interested in MCAD integration for enclosure design, you may consider my kicad StepUp tools https://forum.kicad.info/t/kicad-stepup-new-exporter-for-3d-mcad-feedbacks-are-welcome/1048 For example with my tools you can visually align your enclosure or 3D model to footprint an Altium style https://forum.kicad.info/t/how-to-interactive-align-3d-model-to-pcbnew-footprint-new-tool-for-kicad-in-altium-style/1711
https://youtu.be/O6vr8QFnYGw
And in FreeCAD you can do also collision checks and real MCAD designing... so there is a very ECAD/MCAD collaboration available in kicad :) I moved all my code to FreeCAD APIs because of its power and maturity, and for the immediate usability, without any change to kicad code ...

Cheers from a kicad enthusiastic user :)
Maurice


On 07/03/2016 18.20, Jakub Kozdon wrote:
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




References