maximeraafat / BlenderNeRF

Easy NeRF synthetic dataset creation within Blender
MIT License
722 stars 43 forks source link

Render from surface of arbitrary geometry: #9

Closed avclubvids closed 1 year ago

avclubvids commented 1 year ago

In order to capture an oddly-shaped object (or an environment) it might be easiest to generate a "bounding volume" object that is basically a scaled-up (or down) low-detail version of the object/scene, and scatter camera positions on its surface (pointing into the center or out along its surface normals). This would provide a more flexible solution for scenes that either don't have an animated camera or don't conform neatly to the center of a sphere.

maximeraafat commented 1 year ago

Hi @avclubvids, thanks for the suggestion.

I see the idea behind your recommendation, however I am a bit concerned about how many use cases such a function might have. In most cases, a sphere or an ellipsoid (which you can obtain by scaling the sphere in the COS method along a single axis), will be capable of capturing most of the geometry and appearance details in your scene. Nevertheless, if I see a rising interest for such a property, I will consider implementing it in future releases :)

Keep in mind nonetheless that by deforming the BlenderNeRF Sphere from the COS method, the randomly sampled views won't be perfectly uniformly sampled anymore.

avclubvids commented 1 year ago

yeah, the challenge of photographing or rendering a non-spherical volume :)

I think you might be able to maintain uniform coverage across the surface of arbitrary geometry using GeoNodes, but it's been a while since I cracked them open so I'm not sure if that's the right approach or not.

maximeraafat commented 1 year ago

Yes I'm sure there is a way to get this done, probably even in an elegant way without GeoNodes. But again, I am not fully convinced about the usefulness of such a method. I might be wrong though :)