Page 1 of 1

Walk in the park

Posted: Wed Jan 20, 2021 8:15 pm
by Continuum
LuxCoreRender v2.4. Deep FX Studio for scattering and instancing. Objects sourced from third parties.
img_09.jpg.jpg

Re: Walk in the park

Posted: Thu Jan 21, 2021 12:10 am
by TAO
Good looking render, for leaves you need to add translucent material or any equivalent material that supports translucency.
That will make your trees more realistic.

Re: Walk in the park

Posted: Thu Jan 21, 2021 9:32 am
by Continuum
Thanks for the tip.

Re: Walk in the park

Posted: Fri Jan 22, 2021 12:12 am
by TAO
Continuum wrote: Thu Jan 21, 2021 9:32 am Thanks for the tip.
On my way home I take a photo that may help you.
If you look closely you will see the varsity or color for leaves. the younger leaves are brighter because, and it's usually happening on the tip of branches.
take a look.
photo_2021-01-22_01-11-41.jpg

Re: Walk in the park

Posted: Fri Jan 22, 2021 4:06 pm
by Continuum
Thanks for the reference. Noted, I will attempt to emulate the variation in a future piece. I was mainly interested in instancing in this case, and how easily LuxCoreRender handles lots of data. I can get into the billions, it's very fast, but the initial stage seems slow since it's single threaded. I'm assuming LuxCoreRender is building some sort of optimization structures. I will ask if it is possible to make that step multi threaded.

Re: Walk in the park

Posted: Fri Jan 22, 2021 4:28 pm
by TAO
You right about that part I had this issue in 3dsmax too, I decided to add the whole translation part in the background thread and make it multi-thread.
Even with a single thread in the background 3dsmax manages to translate the scene 3 times faster.
For the blender, the case was different as the main part was written in phyton.
If you can do that in multi-thread C++ I can give you a few suggestions.
of course, you need to respect the main software behavior, for example, 3dsmax is not thread-safe, and I need to implement the code considering that.

Re: Walk in the park

Posted: Fri Jan 22, 2021 11:56 pm
by Continuum
The progressive rendering step already uses a background thread, but I don't really want the user messing around with the scene while LuxCoreRender finishes loading, so I will probably just add a modal progress indicator for that step. The bottleneck seems to be creating 400,000+ objects (not shapes) with parse() in C++. I create shapes directly with DefineMesh(), to avoid problems with this step. Maybe there's a better way to do this, I will continue experimenting.

Re: Walk in the park

Posted: Sat Jan 23, 2021 1:46 am
by Dade
Continuum wrote: Fri Jan 22, 2021 11:56 pm Maybe there's a better way to do this, I will continue experimenting.
I assume you are instancing, not defining 400,000 different objects, LuxCore API has several types of Scene::DuplicateObject() (https://github.com/LuxCoreRender/LuxCor ... re.h#L1023) intended to be use to create a very large number of instances. They are very fast.

You define the base item as usually (i.e. a single particle, a single leaf, a single tree, a single tile, etc.) than you duplicate the item as many times as you want with a single call to Scene::DuplicateObject().

Re: Walk in the park

Posted: Sat Jan 23, 2021 1:52 am
by TAO
I did not know that, so I can create proxy objects or scattering tools for 3dsmax too.
Very nice features.

Re: Walk in the park

Posted: Sat Jan 23, 2021 11:24 am
by Continuum
Dade wrote: Sat Jan 23, 2021 1:46 am
I assume you are instancing, not defining 400,000 different objects, LuxCore API has several types of Scene::DuplicateObject() (https://github.com/LuxCoreRender/LuxCor ... re.h#L1023) intended to be use to create a very large number of instances. They are very fast.

You define the base item as usually (i.e. a single particle, a single leaf, a single tree, a single tile, etc.) than you duplicate the item as many times as you want with a single call to Scene::DuplicateObject().
Thank you, I didn't see that, I will try that instead. Yes true instancing (as the wiki says 'use .transformation property and true instancing is enabled.'). I am currently using the properties interface to define each individual object.