← Back to team overview

kicad-developers team mailing list archive

Re: 3D-Viewer Raytraced render

 

2015-10-28 1:00 GMT+01:00 Mário Luzeiro <mrluzeiro@xxxxx>:
> Hi Nick,
>
> Yes, I (probably) thought about that at the time and I did not consider it for some reasons (in no specif order but that makes sense altogether ):
>
> - One of the big hard task on this was to convert the pcb from kicad into a structure of objects to render. (layers, segments, polygons, modules,...) This was so far about 1/3 of the work I had.
> - The current 3d-viewer is a triangle based render. It need to convert every item to multiple triangles (ex a segment is converted in lots of triangles). One thing that is slowing down the pre-computation in the current 3d-viewer is the hole extraction (that will create more and more triangles), other is the polygon tesselation. (please read the next point)
> - Most of top raytracers (i.e.: the ones that use SIMD instructions) are just triangle oriented, so, related with the point before, there was no much improvement to (spend time) convert everything to triangles. (My implementation uses tailored shapes like segments, etc and uses CSG to remove the holes so the pre-calc are very reduced as it removes the objects in run time)
> - Most of the top raytracers (..that using SIMD) are using very recent CPU features (SSEx, AVX), that will not work on all computers.
> - If I think using a good raytracing generic (i.e: not only triangles) library, they are usually huge and I guess it will be an issue to approve it(licences.. etc) to be integrate in kicad. Or in other way I could end with an external software piece to render kicad board.. but.. in that case it would be better to improve the exporters to render in a 3rd part software (eg: blender..etc)

Ok, I was just wondering, thank you for your answer.

> - I have in mind to try to make it as fast / interactive as possible, so it will need some specific implementation.. some hacks .. that will target this specific propose.

I understand. Speed is definitely an issue with big boards. But I am
no export in ray tracing characteristics, but what is the scalability
of your implementation in reagard to board complexity (lots of holes
and lots of other objects) and seperately about the screensize?

> ... and I was a bit bored and need some motivation :) It was an area that I used to have fun so I try do something useful this time...
> and so on.
>
> Mario

As long as you can keep the motication, everything should be good :)

>
> ________________________________________
> From: Nick Østergaard [oe.nick@xxxxxxxxx]
> Sent: 27 October 2015 23:04
> To: Mário Luzeiro
> Cc: kicad-developers@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [Kicad-developers] 3D-Viewer Raytraced render
>
> Hi Mário,
>
> This is some good news. I know this might be a bit late, but I wonder;
> have you considered to use some other ray tracing engine instead of
> writing it yourself? I was thinking about the Cycles rendering engine
> used in Blender. It is Apache 2.0 licensed. They have some tine info
> it as a standalone at [1] and the source repo is a [2].
>
> I will try it out when I get the chance.
>
> Regards
> Nick
>
> [1] http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/Standalone
> [2] https://developer.blender.org/diffusion/C/
>
> 2015-10-27 23:27 GMT+01:00 Mário Luzeiro <mrluzeiro@xxxxx>:
>> Hello all,
>>
>> I would like to show you some screenshots of the progress of a 3d-viewer render based on raytracing (with some vitamins) that I am working on:
>> https://meocloud.pt/link/aaf06e3f-e308-40c8-bddb-f8aa762b4a16/20151027_3d-viewer/
>> (please download the file image if you want see it in full resolution)
>>
>> To keep this email short, I will not add details, please feel free to make any questions.
>>
>> There are (at moment) two modes of rendering: preview (while moving) or quality rendering. In preview mode it render a fast draft  in order to get some interactive framerate while adjusting the view of the board. So the screenshots label as 'preview' shows it to compare draft/quality.
>>
>> The quality rendering time.. depends on how many CPUs you have and (special) how fast your cache is. In my laptop, 8 cpu processor, it can take longer than a eye blink.. ..probably two or three eye blinks.
>>
>> If you would like to try it in your machine, you can try built my branch:
>> https://code.launchpad.net/~mrluzeiro/kicad/kicad_new3d-viewer
>> (probably have issues to build on windows)
>>
>> There are still lot of room for improvements, ideas and things to do ... special, add of 3D models (Cirilo is working on path, plugins and cache of models, I plan to start next working on a parser or adding some support to display the 3D models by the render... )
>>
>> I would welcome anyone interested in this areas to join us to speed up the development or add a little more of improvements.
>>
>> Cheers,
>> Mario Luzeiro
>>
>> _______________________________________________
>> 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