Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Second Life Rendering: A Case Study (With Pictures!)

Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-05-2005 03:48
Preface: The following feature suggestion is going to be long enough to rival what Prokofy puts out. Because of this, I'll be outlining where I'm going in bold so more casual folk can get a quick glance.



So for starters, here's the stuff I'm going to be laying out here:

- Curved Edges on Prims (rehashed)
- How to Improve Object Quality through the Client
- Rendering - Second Life versus Standards

And the actual suggestions:

- Prim "Merging" and "Subdivision"
- Rendering Options - What We Want and How to Add Them
- Stuff We Want that Isn't So Easy


I'm also writing this before I crash for the evening... so bear with me, folks. Everyone who doesn't give a care about technical details is excused. See pictures below.





As for all three of you still around, let's begin.

Second Life has progressed in many ways. One place where it's lagged, however, is in its capabilities to render detail. Sure, we have those incredible SL 2.0 renders with draw distances rivalling reality... but sometimes quantity just doesn't make up for quality.

A better draw distance and finer detail need not be mutually exclusive goals, so long as the client makes the right decisions about each. More on that later.

Furthermore, simple things have been requested from the renderer for some time. Things like rounded corners on primitives, a feature that has been requested a couple hundred times; so much, in fact, that I dubbed it the most popular feature request I have ever seen on these boards. That ties in to this as well.

...

So how does it work, McGee?





The Setup:

Scroll down to the attached picture file. Let's suppose Figure 1 is two cube prims that intersect at the center. Now, let's do something interesting. Instead of having those prims function as separate entities, let's have them act as one "object." I use object because this would mesh handily with Linked Sets.

So, first, suppose we have now "connected" those two prims. This can be done fully inside the client with some fancy vector math and existing link behavior, but unless you study this stuff like me, we can leave it at that.

Now, let's Doo-Sabin it. Doo-Sabin is a fancy term for "subdivision," or more simply, smoothing. Only, let's smooth the surfaces outward to form curves.

Confused at the significance of this? Have a look at Figure 2. Here, we perform the same "trick" on a standard surface. Note the more you perform the algorithm, the more "smooth" the object becomes.

As many people know, organic modelling has traditionally been very hard to do well in Second Life, because each "prim" behaves as its own object. So right off the bat, organic modelling would suddenly become more feasible, and look damned good.

In other words, blending multiple prims and smoothing them would add a whole new world of depth to Second Life.

And you know what's really handy? Used with single prims, this method would happy create curved edges! And with Havok 2 forthcoming, physics is less of an issue.

Though to be fair, this stuff need not be physical.






But Wouldn't This Be Laggy?

Yes and no. From the server's point of view, all we'd have to do are add a couple extra settings to something like Bumpiness... meaning no increase to latency at all. Of course, something more advanced would be nice. My example in the upper left of Figure 3 is more geared for the long haul. More on that later.

As for the client, just add this stuff to preferences! Low end systems would choke on this stuff, so an effective distance for subdivision, as we already have with bumpiness, would work nicely.

As I see it, if the client were to render this detail on demand at very close range, it need not conflict with the draw distance improvements planned for SL 2.0. It'd also help to nail both ends of the spectrum, to satisfy power users and general folk alike.






So What Results Should We See From This?

See the last images attached. I've used my two favorite models (which I made myself) for this demonstration. Pictured to the left is how this stuff renders now when imported. The right renders are done in a free program called Blender, which also happens to be open source.

I don't think I need to point out the differences in the two. Almost apples and oranges in how they're done. I feel improving the raw rendering would help on so many levels, though.

Oh, did I mention something like this is fairly lightweight, code-wise? At least, it should be. That means the client download needed would not be huge.

And, for that matter, I'd endorse digging through Blender's code for render improvements. :)







What about the industry?

As for where I feel we're ultimately going, but won't be there for a long, long time, there are several render "tricks" that would ultimately benefit Second Life. Some examples include:

- Shader Technology
- Normal Maps
- More Robust Multitexturing
- Specular Maps

... etc. Obviously, most of this stuff will not be added any time soon. Furthermore, they'd grow the size of patches considerably. It is, regardless, something to think about in the meantime.

With the rise of more "open" applications of Second Life, this kind of stuff might even be added by residents. However, that too is far off.






In closing, I hope someone out there understood my tired rant on this subject. I feel Second Life is in many ways still "behind the eight ball" with what it can do in the renderer. Hopefully, with stuff like this, that'll improve over time.

Because, hell - the technology is out there and ripe for the taking. All it really requires to get in there is perseverance and the want for it. Hopefully there's enough of that left to go around.
_____________________
---
Nekokami Dragonfly
猫神
Join date: 29 Aug 2004
Posts: 638
05-05-2005 14:23
A few lingering questions....

Is Figure 1 two thin flat prims intersecting in an X, or the corners of two cubic prims touching? And what happens with collisions in this sort of situation?

Generally, you know what a fan I am of rounded edges, organic models, etc. so obviously I think this is all very cool. I have no idea how doable it would be, but I hope LL is paying attention to your remarks about Blender source.

How does this sort of technology relate to "metaballs"? Here's an example from Blender.

I still would like to see fractal prims. ;)

neko
Jeffrey Gomez
Cubed™
Join date: 11 Jun 2004
Posts: 3,522
05-05-2005 14:44
From: Nekokami Dragonfly
Is Figure 1 two thin flat prims intersecting in an X, or the corners of two cubic prims touching? And what happens with collisions in this sort of situation?

Generally, you know what a fan I am of rounded edges, organic models, etc. so obviously I think this is all very cool. I have no idea how doable it would be, but I hope LL is paying attention to your remarks about Blender source.

How does this sort of technology relate to "metaballs"? Here's an example from Blender.

That's two flat "planes" (cubes) intersecting at roughly the center. The idea would to have their points "smooth" in a special way, which would cause that effect (and in theory, the others as well).

Metaballs are actually very similar to this concept! Thanks for reminding me of those. The only difference is we would then "smooth" the resulting figure, and it need not be spherical.

From: Nekokami Dragonfly
I still would like to see fractal prims. ;)

As long as we can "turn them off" to save render time. Although I have to admit, prim torture comes damned close to this at times! :D
_____________________
---
Nekokami Dragonfly
猫神
Join date: 29 Aug 2004
Posts: 638
05-05-2005 15:02
I wrote up prop #318 to try to capture this and related ideas.

neko
Huns Valen
Don't PM me here.
Join date: 3 May 2003
Posts: 2,749
05-24-2005 21:58
http://pouet.net/prod.php?which=5569

64KB. 16 of that is the music renderer and soundtrack, so that's 48K. It uses pretty much what you are talking about (parametric deformation... hell, parametric EVERYTHING, even textures) and consumes very little space. The biggest problem would be LOD really, but we already have that with terrible hoochie hair.