8 ms·
I agree the quality of the render engine is much better with physical rendering, but I still love constructive solid geometry and the ideal of pure curves to de
by selfsimilar 6y ago
I agree the quality of the render engine is much better with physical rendering, but I still love constructive solid geometry and the ideal of pure curves to define the scene geometry. All these meshes with their triangles! Whatever happened to using NURBS or metaballs or other non-polygonal modeling?
- BubRoss 6y agoPolygons can be smoother and subdivided efficiently at render time without artifacts, which is how they are used now. Nurbs and other curved surface representations end up with huge problems pragmatically when it comes to tools, workflow, visualization, texture coordinates, keeping the surfaces together etc. The list is long. Polygons are very simple in all these areas and can be made smooth at render time so you get the best of both worlds. If you were in a production situation it wouldn't be long before you gave up these ideals.
- TylerE 6y agoThat’s the beauty of CSG though... it’s volumetric, not surface based
- BubRoss 6y agoI'm not sure what you are trying to say here, constructive solid geometry does not solve any of the problems I mentioned and would have to be treated specially to be raytraced (while being likely being much slower). Converting it to polygons at a modeling or effects stage is workable but rendering it directly is unlikely to be widely valuable any more.
- TylerE 6y agoThere is no need to "subdivide" because the exact volume of the object can be calculated exactly to any arbitrary detail.
- BubRoss 6y agoAnd what do you subdivide it to? How do you trace rays against it? How do you map textures on to it? How do you visualize it in real time? How do you work with it in a different program?
- TylerE 6y agoYou don't subdivide. It's a mathematical intersection.
- BubRoss 6y agoRight, but the rest of the questions remain, along with the usefulness of CSG in real scenarios. CSG can be interesting, but it does end up being very impractical for anything except for some specific effects that are then turned into polygons. It is technically possible to create sdfs and trace against those I'm sure, but csg is rarely used and baking it to sdf instead of polygons even more so.
- TylerE 6y agoPOV-Ray disagrees. It renders CSG. It never converts to polygons. So stop saying what a 30 year old program does is "impossible".
- BubRoss 6y agoI didn't say it was impossible, I'm talking about why these other geometry types aren't typically used instead of polygons. I asked 'how do you trace rays against it' because to do it directly is not fast, yet you are left with all the problems I stated that you skipped over. Think about what it would take to directly trace lots of overlapping primitives. What you gain from tracing it directly is minimal and what you give up is substantial.
- TylerE 6y ago
- CyberDildonics 6y agoHow would that make it easier to work with?
- TylerE 6y agoYou can do things like take shape A and then subtract shape B from it and all works, no matter how complex the intersection.
- CyberDildonics 6y agoThat is what it is, but how does it make any of the other parts of 3D easier? How would deforming it be easier than surface geometry for instance?
- TylerE 6y agoOne major problem with surfaces is calculating which side is facing out. This is actually much harder than it sounds. CSG doesn't have this problem because it knows inside vs outside.
- CyberDildonics 6y agoThat is almost never a problem. It has to do with winding order and the only time you need to pay attention to it is when creating polygons from some sort of other data like lidar. Even then any groups of connected polygons can be made to have consistent normals. Why do you think that is difficult? I think your attachment to csg might be wishful thinking, you still have to get arbitrary shapes out of primitives, work with deformations, figure out textures etc.
- selfsimilar 6y agoPragmatically, I think the real issue is editor tooling. Polygons are much simpler to subdivide and edit and are perfect for real-time interaction, at least much better for high-complexity scenes. At render time, though, you need to use a bunch of extra tricks to get the right smoothing - bump/texture mapping, increased subdivision, etc. But some of these other models might actually decrease the scene complexity and increase quality if you could convert the model at render-time.
- BubRoss 6y agoIt isn't just tooling. > At render time, though, you need to use a bunch of extra tricks to get the right smoothing Nurbs or any smooth geometry needs to be subdivided too. You can set levels, max size of polygons, smoothness constraints subdivide based on the pixel size from the camera projection or any combination. In practice this is not a problem for polygons or nurbs. > - bump/texture mapping, This is orthogonal to the geometry type, with the exception that UV coordinates are far easier to deal with with polygons. > increased subdivision, There isn't any increased subdivision, both geometry types need to subdivided. Blue Sky's renderer raytraced nurbs directly but this isn't generally as good as just tracing subdivided polygons. Polygonal geometry, even subdivided, is typically not a big part of memory or time in rendering in all but the most pathological cases. 4k would still mean that one polygon per pixel would be 8 million polygons, which is going to pale in comparison to texture data typically.
- michal_f 6y ago3delight also traces SDS and nurbs analitycally. In offline renderers geometry data constitutes to most of memory usage. Texture RAM usage is kept under a few GB by use of page-based cache.
- BubRoss 6y agoMultiple gigabytes of geometry is a lot. That ends up working out to potentially dozens of hundreds of polygons per pixel. Even so the person I was replying to seemed to wonder why everything converted to polygons, which is because of a more holistic pragmatism.
- Aardwolf 6y agoEvery time I see a pipe, bucket, goblet or round thing in a game with otherwise very realistic rendering, I'm reminded I'm just playing a rendered game, due to seeing polygonal shapes rather than a true round bucket/goblet/pipe, and wonder if a quadratic surface would not look better and be more efficient. Well, that and banding in the gradient of a sky. Those two things break the otherwise so realistic rendering quite commonly.
- klodolph 6y agoI think you may have missed what the parent comment was saying—that the polygons can be made smooth before render time. This is not a question of just faking it with normals. Instead, you can actually just work with a polygonal mesh and then post-process it to make it actually smooth. The classic technique for this is Catmull-Clark subdivision. If you think polygons on screen are offensive, you can just run the algorithm until the individual polygons are under the size of a pixel. The fact that you see polygons on an otherwise circular object in a game just means that the game isn’t giving you a more detailed mesh when objects are close to the screen. There are a lot of reasons for this, and it’s important to consider that you often get the best overall quality in modern real-time graphics with retopologized meshes. It’s easy enough to make these with a given quality and make lower-LODs from them, but just as a matter of consequence you won’t see higher-LODs than the retopologized version. And why bother making super-high-LOD models anyway? If you look closely at an object there’s a finite amount of texture/model/etc. detail that the game can present. Might as well make the LOD for the model complement the amount of detail in the texture. The whole process is rather complicated these days, with different workflows (even different programs) for organic objects (like people, animals, demons, whatever) and hard surfaces like goblets, stone tiles, architecture, etc. The two main things people want to do when modeling are sculpt and create a sensible topology, and surfaces like NURBs (or worse, Bézier curves) turned out to be a bit cumbersome for both sculpting and creating meshes.
- tlb 6y agoYes, but then any edges that should have been sharp get rounded too.
- dahart 6y agoThis seems like a strange way to frame it. Polygons aren’t what get subdivided. Subdivision surfaces & NURBS are what get subdivided, and those are routinely used in production and have tooling. Polygons by themselves don’t get any smoother or provide the advantages you’re talking about, nor do they solve all problems of workflow, tex coords, stitching, etc.
- holoduke 6y agoYou can apply subdivision on any type of geometry. Even voxels. Tesselation is also a form of subdividing.
- dahart 6y agoYou certainly can, that’s true. But without a higher order source model to work from, it doesn’t help you solve any of the problems @BubRoss mentioned above. Tessellation is not just subdividing; it’s linearizing something else. You have to start from that something else for tessellation to be meaningful. The GP comment above was advocating polygons as a replacement for curved surface representations, but without a curved surface representation like a subdivision surface, tessellating polygons doesn’t make a lot of sense.
- BubRoss 6y agoI'm not advocating, I'm explaining why it already happened twenty years ago. Polygons can be trivially subdivided to a rounded surface or converted to a subdivision surface. This is something anyone who has used maya, houdini, lightwave, softimage or 3D studio has seen their entire career. If you think using polygons solves no problems, I'm guessing you haven't tried to make a pipeline with nurbs (not many have in this day and age). Texturing takes specific paint and texturing tools while the resolution difference between patches complicates things even further. Even getting the model detail is difficult. Everything about it is painful. It isn't even a contest, everyone transitioned to polygons and no one looked back.
- zodiac 6y agoYou can have physically based rendering with those non-triangle primitives too!