mitsuba-renderer / mitsuba2

Mitsuba 2: A Retargetable Forward and Inverse Renderer
Other
2.05k stars 266 forks source link

Spectral rendering #211

Open SergeyShlyaev opened 4 years ago

SergeyShlyaev commented 4 years ago

Hello,

In case you'd like to keep track on how Mitsuba is used online. This isn't an issue but rather the opposite. Wanted to thank you for making such interesting and feature-rich renderer.

Made a short video on spectral rendering utilizing some of awesome Mitsuba features: stopframe_halfres https://vimeo.com/437885264

Wondering if you'd be interested to hear about some of badly missed features to see if they align with your development plan?

Speierers commented 4 years ago

Hi @SergeyShlyaev ,

Great work! Thanks for sharing this video, some of those clips look really nice!

We would be happy to hear about user requests and badly missed features. Please go ahead 😉

SergeyShlyaev commented 4 years ago

Hi @Speierers,

Sure, here is the wishlist. It is mostly about getting data into Mitsuba.

Curves support

Smooth curves support, with option to render curves as cylinders or oriented ribbons. To render hair, fur, ropes, strings, grass. Usually if there is “normal” attribute on curve, it is rendered as ribbon oriented according to normals, so we can make twisted ribbons. If there is no “normal” it’s rendered as cylinder. Would be super cool to have uv parametrization for curve, so u runs across the curve, and v is 0 at root and 1.0 at tip of the hair. So we can modify width along ‘v’, to achieve tapered cylinders or ribbons, like grass blades.

Alembic support

Alembics to transfer cameras and assets. https://www.alembic.io/ With support for arbitrary face and vertex attributes. It’s kind of standard format for interchange now. Would be great to have option to read arbitrary face and vertex attributes for rendering. So we can write out balloons color or transmittance and use it in bsdf.

Usd support

This is Universal scene description. https://graphics.pixar.com/usd/docs/index.html While alembics are for individual assets, usd is to transfer entire complex scenes. It’s also considered a standard now. Project is open source: https://github.com/PixarAnimationStudios/USD Apart from many other use cases, It is a base for Nvidia’s Omniverse platform. https://developer.nvidia.com/nvidia-omniverse-platform

Subdiv support

Subdiv support, so poly meshes can be subdivided on the fly during rendering. Without having to output massive, high poly ply or obj files. There is an opensource project from Pixar on it: http://graphics.pixar.com/opensubdiv/docs/intro.html https://github.com/PixarAnimationStudios/OpenSubdiv We should be able to specify if particular object should be rendered as subdiv or not. Maybe, something like

<shape type=“abc”>
        <string name="filename" value="meshes/bunny.abc”/>
        <boolean name=“subdiv” value="true"/>
</shape>

Multi-segment motion blur support

So motion blur can be computed, as it is very important part in achieving realism. Motion Blur

If you would like to have any images or datasets from the video, just let me know.

Cheers!