Jump to content

Breaking up/Uploading a huge model


Extrude Ragu
 Share

You are about to reply to a thread that has been inactive for 1480 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Screenshot_1.thumb.png.4f61d8db31b9799085f85caf9925a961.png

So you're me, and you make a model that's big, really big. 238meters, by 69 meters by 155 meters big.

The maximum size a mesh can be in SL is 64m in any direction.

How would you go about breaking up the model into chunks that fit into the bounding box, is there a non-destructive way to do that?

Link to comment
Share on other sites

I don't think that you can escape from cutting the model in Blender, while you can achieve aspects of the slicing using booleans, there is typically too much cleanup and other rework required to get away with that alone. It will largely depend on you overall objective. Here is my war story along this subject.

I built Hugh the troll for last year's Fantasy Faire. He's the good looking one in the background here.

Hugh was "sim-scale", coming in at around 240x240x150 if I recall correctly.

cc864ac4b02399474f1c8ac773431f22.jpg

In order to upload him I had a number of challenges to deal with. Fantasy Faire is an extremely high volume event in terms of visitors. It is also high-volume in terms of photography and videography, people expect things to look good, and to behave well at a distance, it should minimise load on both the server and the viewer. This means proper LOD behaviour, efficient use of texturing, and proper physics are imperative.

Firstly, texturing, with a build of this scale and a need to bake textures the slicing was also going to dictate the number of texture maps required. Keep in mind that with a build like Hugh where normal and specular detail were important, and where people would be literally walking on him so right up close, it was not good enough to assume tiling texture.

The second aspect to consider is LOD decay. Depending on the scale of blocks they will LOD switch at different times. so you ideally want the blocks to be equally sized. This needs to be juggled with land impact (if that is a concern), fixing everything at 64m is going to raise the LI.

The third aspect is assembly and reassembly. Once in world you will have to assemble and reassemble which can be a pain.

My solution to slicing was to write a custom Addon for Blender. I accept this is not an option for most people, and I do plan to make it available (free) as part of a larger SL toolset for Blender.

Here is a quick animation of how the Addon worked. It worked out the smallest number of blocks required to encapsulate the model, then shrunk those to give the optimal resolution while retaining common scale to all the blocks. (I think this is an early version in fact as the vertical scale seems a little off).

What do I mean by "smallest number of blocks"? Consider a model that is 130m square and 65m high (and for some unfortunate reason you can't reduce it)

The minimum number of blocks is going to be 18. This is inescapable. you need two layers because it is more than 64m high, and you need 3x3 on each layer because it is more than 2x64 wide. Slicing it as 18 64x64x64 however would be remarkably wasteful. So instead, we divide 130 by 3 and 65 by 2. We create our slices from 18 equal cubes of 44x44x33 (rounded up for simplicity here). This will dramatically reduce the land impact of the model. It also has the real benefit of ensuring sensible LOD decay. If we had cut at 64m then SL would have actually decided to upload some of the chunks as 2m wide and 1m high, with the unwanted result that they would collapse into lower LOD models far far sooner than the rest.

You will note too that it tries to optimise use of space. There were still a number of problems with LOD decay, no amount of cutting helped and while I did not use it in this case I could and perhaps should, have padded each High LOD with a tiny boundary box vertex to enforce the upload size.

086a875dc96373ae0e672093dd0e6d92.gif

Texturing was a challenge because we wanted to keep the number of texture sheets used to a minimum, Texture load is a real issue in events such as fantasy faire where merchants expect to be able to load vendors with 1024 images of every one of their products (if you are ever tempted to do this please think twice and consider the impact that this has on viewer performance. I know I have walked away form stores because their vendors don't rez quickly enough, I am sure others do the same). We wanted to do our part to keep the underlying texture load of the region as low as we could.

IIRC the entire troll was baked on to just 3 sets of 1024s, I've seen people selling a pair of boots with more than that. (to be clear that was for Hugh himself, we allowed extra textures for the book, and the houses (but the houses all shared a single set of materials in spite of their varied appearances). 

But to get to that point was a severe headache. I was working in a very early Blender 2.8 beta. Now, at Blender 2.82 we have full UDIM support which would have been a massive help. My partner Liz did the texturing in Substance. One of the problems we had was a limited UV layout capability. Blender has no shortage of UV unwrapping options, but when you are working over many objects and you want to maximise the scale, it is a real pain. 

In the animation below you can see a sliced up Hugh and the UV layout for his left foot. The original unwrap was done before slicing. This ensures a common scale to all components, but results in a poor use of UV space on a per object basis. With UDIM support in Substance painter Liz was able to consolidate UV maps and with the latest blender you can do that too.

c1330c7c9a7d03e57c18948474786244.gif

 

 

 

 

 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

On 4/3/2020 at 2:17 AM, Extrude Ragu said:

How would you go about breaking up the model into chunks that fit into the bounding box, is there a non-destructive way to do that?

Sure. Look at this for example:

bilde.png.23dec1807adc174781ee1df8b2d19c20.png

Well, it probably doesn't look too good with a placeholder texture and no objects on it but it's a full sim mesh ground with no visible seams anywhere.

There are two challenges to this. One is to avoid visible gaps between the elements. The solution is precise positioning of the vertices along the joints and precise overall sizes for each element to avoid rounding errors and ther inaccuracies both in Blender (or whatever 3D software you use) and in SL.

The other challenge is to avoid misaligned normals along the joints. There are two solutions to this. The simple one that I prefer is to add the joints in places where you don't get any angles over them. The more complex solution - the one I used for this landscape but usually try to avoid - is to use custom normals.

Edit: I probably shuld have mentioned, the uploader will scale any 64 m mesh down to 63.9 m - and all other dimensions porportionally. That's not a problem at all, just remember to scale it up after uploading.

Edited by ChinRey
  • Like 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 1480 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...