4 ms·
This is nerd sniping at its best. I immediately fell into the exact trap described in the article. My first immediate reaction: can we represent it with 3D B-sp
by mynegation 3y ago
This is nerd sniping at its best. I immediately fell into the exact trap described in the article. My first immediate reaction: can we represent it with 3D B-splines and solve analytically for tangent rays? My second reaction: humans are pretty good at contouring but we rely on shading and contrast change information a lot. Can we ray trace a bunch of images shaded from different points and apply convolutional nets to get contours? I am pretty sure the second approach is a bit of a chicken and egg problem and the first one has plenty of gotchas, but it was entertaining to think about it.
- eternityforest 3y agoMy first thought, not being good with math, or spatial thinking, was just to postprocess the rendered depth map somehow, look for sharp dropoffs, and then do some kind of intersection between the lines from the map and the model
- qwery 3y ago> postprocess the rendered depth map somehow, look for sharp dropoffs This is fine, if you want a simple ~solid stroke. A simple edge detection kernel filter (e.g. Sobel) on the depth and/or normal map is the basis of most outline-like things you see (in games at least) today. This is useful, but it's not an accurate representation of the occluding contour, and it's in an unhelpful form for further processing (kind of like a raster vs. vector image).
- dvh 3y agoWhy not simply draw twice, once slightly enlarged with inverted normals, painted black? That's how it was done in the old days.
- kookamamie 3y agoThat gets you the outline, not the internal contours.
- HWR_14 3y agoCan you describe what an internal contour is. As far as I can tell from reading the article and linked pages, it's just an edge with a sharp drop off in depth map?
- cbolton 3y agoConsider the pig picture in the article (the one under "The Occluding Contour Problem"). The method proposed by dvh would give the outline, but not the contour of the pig's left ear for example.
- yorwba 3y agoIt would, if the enlargement is not by linear scaling but instead produces a shell around the object at some distance from the surface. The inverted-normal shell of the ear would then occlude the body behind it, while itself being occluded by the slightly smaller ear, producing a contour line.
- qwery 3y agoThat hack was a common way to render outlines in fixed function pipeline days, yes. It only really works for simple, convex forms and "works" is probably a bit generous. It's far from a general-purpose outline technique and an outline is just one effect you might want an occluding contour for.
- itronitron 3y agoIf you use ray marching then you could basically find the occluded contours for free, or at least it works when ray marching to SDFs. Not sure if meshes would present more of a problem though.