Sunday, July 7, 2019

Unoptimized Content is a Huge Problem, But How Can LL Fix it Now?

Like clockwork, whenever the problem of unoptimized content in Second Life is brought up, there will be people saying "There's nothing to be done for it now! Changing the rules will break too much existing content!" If you've never heard any potential solutions it's easy to see why someone would come to this conclusion, but is it an accurate assessment of the situation? Not entirely, and I'll explain why.

 If Linden Lab haphazardly released "new rules" for content tomorrow, such as a hard cap on avatar complexity or a complete change in the way Land Impact is calculated, there would be chaos. Almost all existing SL content would be returned and people would find they could not wear most of their favourite avatar accessories. This is the "Content Apocalypse" most people conclude will happen if LL makes any attempt to reign in unoptimized content so late in the game, but this assumes LL rushes in blinded and with a heavy hand. The fact is, LL could take a more nuanced and long term approach to the problem.

 Up until mesh importing was introduced to Second Life, object complexity for environments was kept in check with "prim limits". Every object was made of prims. Each prim counted towards land's "prim limit" Make a chair out of 10 prims, it counts as 10 prims towards that land's "prim limit". But there were three problems. First, not all prims were created equally. A torus uses far more polygons than a cube, for example. The second problem was that textures were not taken into consideration. Textures play a huge part in rendering performance and prim limits ignored this entirely. The third problem came with the introduction of mesh, because mesh could not be calculated this way. You could create a highly detailed, high poly mesh object and it would only be one object. It wouldn't do to have it count as only one "prim".

 So Linden Lab introduced "new rules", "Land Impact". Now the complexity and size of an object would determine it's land cost. Existing prim content was unaffected. If you build a 10 prim chair today, it will still only cost 10 prims. It is only when you link prim objects to mesh that the "new rules" will be applied to the whole link set. This is why linking prim objects to mesh can result in an increase or decrease in the "Land Impact" cost of said prims.

 To further push the change from "prims" to "land impact" all new features released after mesh would use the "new rules." Keyframe animations were introduced around the same time as mesh, shortly after I believe. You could use this to create much more believable elevators and moving platforms in SL. But, if you built an elevator out of prims and applied a script using keyframe animation features, the prim elevator would use the "new rules", land impact instead of prims. The same was true with materials and pathfinding and any other new feature. If you wanted to enjoy the newest features SL had to offer, you would have to use the "new rules". And over time more and more new features and new content using those features appeared, after only a few years almost the entire grid had adapted to using Land Impact instead of prim limits.

 You probably see where I am going with this. LL could introduce "new rules" to content creation yet again, using the same approach. Let's use animesh as our example starting point. Animesh already calculates LI differently than existing mesh content, and if you link a static mesh object to an animesh object it will change how it's LI is calculated.

Animesh can also be worn, it would not be a stretch to make it so if you want to wear animesh you have to adapt to a hard cap on avatar rendering impact. It could work much like land impact already does. In order to be effective avatar rendering impact would have to take texture use and polygon use into better consideration than ARC currently does. Avatar rendering impact would also need to be universal, not different viewer to viewer like ARC currently is.

Legacy content would be preserved in that to revert back to the "old rules" you would simply need to detach any content using new features like animesh. People could continue using their old, laggy content as much as they liked, but over time the draw to adapt to the "new rules" would get stronger as more and more features were released. In fact, I'd argue that retroactively applying this change to animesh now would still be feasible. Animesh is new enough and rare enough that most content would remain unaffected. There'd be grumbling, sure, but it would be a drop in the bucket and quickly pass.

"But that would just mean people would refuse to adopt new features!" This is the argument some make. It's rubbish. You only need to glance around SL to see how many people have refused to adopt mesh, materials, etc to see the folly of this argument. People like new features. As long as those features add to the SL experience, people are willing to make the compromise. And the more such features add up, the stronger the case for adapting becomes. The fewer the holdouts remain.

To be clear, this approach would not solve SL's performance woes overnight. This approach takes the long view. Preserving legacy content and allowing the userbase to adapt to the "new rules" at their own pace. It would likely be 3-5 years before we finally saw widespread improvement, and that's perfectly fine.

 LL can afford to take the long view. SL isn't going anywhere.

Sunday, June 23, 2019

Just How Much Does Unoptimized Content Affect You?

I often talk about the need to optimize content in Second Life, and frequently I find people underestimate just how much that would improve SL for everyone. People seem to think that because SL is so old it must just have a badly aged engine and optimizing content would only improve things a little.

 They are mistaken.

Here is the reality:

If your computer was made in the last 10 years and includes a videocard, you should be able to run SL at around the max settings, never experience texture thrashing (when textures in SL are constantly going blurry), never experience stuttering (when SL freezes up for a moment), and if you have a reasonably decent net connection then everything in Second Life should load lightning fast.

 Second Life should look this good for you at all times:

And I'm not just talking you, by yourself, in a sim that looks as good as these screenshots, I'm saying you should be able to hang out in a sim with that level of detail, surrounded by about a dozen friends, and still keep your framerate around 30 FPS, if not better.

 That's with deferred rendering, depth of field, shadows, and all the shiny features turned on.

If you have a computer made within the last 10 years that includes a videocard, what would today be a low to mid range videocard it doesn't matter, and that is not what Second Life is like for you, it is 100% the fault of unoptimized content.

 Here are the specs for the computer all of the above screenshots were taken on:

  • Operating System: Windows 7 Ultimate 64-bit
  • Processor: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz (8 CPUs), ~3.4GHz
  • System Memory: 12GB RAM
  • Card name: NVIDIA GeForce GTX 960
  • Video Memory: 2GB RAM

In sims I made myself, or the handful of other locations in SL created by people who put in the same amount of effort to optimize their work, that is my SL experience. In terms of graphics, SL runs like a dream on my 10 year old computer.

If you have a computer with equal or better specs than this, and Second Life does not look like this for you ALL THE TIME, with no "visual lag" whatsoever, no long rez times at all, no blurry textures or any other graphical issues, all with 30-60FPS or better, then compare what you do experience to this because that is how much you, personally, are being affected by unoptimized content.

What about people running on much less powerful computers?

What about people running SL on laptops or other computers with no dedicated graphics card?

For some reason, a lot of people seem to draw the crazy conclusion that optimizing content won't help people running SL on a toaster. I shouldn't have to point this out, it really should be obvious to anyone, that the less powerful your computer, the more you are affected by unoptimized content.

So, I tested each of those sims on a Microsoft Surface Book from 2015. The version without the optional graphics card, so it's running Intel onboard graphics.

At low graphics settings I got a comfortable 30-40fps in all of the pictured sims. No texture thrashing. The only stuttering I noticed was when scenes were still loading, which did not take long even on a wireless connection.

I was able to turn on everything short of deferred rendering (Advanced Lighting Model) and my fps still remained in the 20's. Turning on deferred caused my FPS to tank down to 8fps.But I was still able to run SL with shiny, glow, bump mapping, local lighting, everything short of deferred rendering at a comfortable 20fps. No texture thrashing. No stuttering except during the (very brief) times it took each sim to load.

 I had a Toshiba Portege from 2007 that I used before the Surface Book. I actually kept SL installed on that laptop because it actually ran SL better than the Surface. If I can find the power cord and spare batteries, maybe next I'll dust that off and give SL a go, but I think I've made my point.

 If SL content creators put in the minimal effort to optimize their work, everyone would be enjoying the substantial benefits. That is a hard fact.

Aren't you expecting too much from hobbyist creators?

No. Full stop. If you're asking that question I can only assume you are not a content creator. Optimizing content is easy. Extremely easy. Anyone who has the skills necessary to create content in the first place already knows enough that optimizing their content would be simple for them. It adds a couple extra steps, and may cause a project to take a little bit longer to finish, but it won't be difficult for them at all.

Here's my guide for creating your own LOD models so you can have fantastic looking content with a low Land Impact cost, without telling people to murder their framerates by forcing everything to full LOD by cranking object detail way up.

Here's my guide featuring a few simple optimization tricks anyone can do, regardless of your skill level.

If you're a content creator who already has a basic grasp of Blender, here are a couple of guide series I highly recommend you check out. They will teach you all you need to know to create better, more optimized models.

For Beginnings: The Donut Tutorial!

For Intermediate Blender Users: The Anvil Tutorial!

The Donut Tutorial gives a brief introduction to UV unwrapping, but the Anvil Tutorial goes in-depth on how you can create models with no wasted texture memory. You want to fit all the details you can onto as few texture maps as possible. Always.

Both tutorials are super easy to follow, Blender Guru doesn't skip or gloss over important steps, but he also doesn't drag things out, so the tutorials move along at a quick, but not too quick, pace. I highly recommend them to anyone creating mesh content for Second Life.

Optimization Benefits Everyone

In short, everyone would benefit if content creators optimized their work. You would. I would. All of the content creators would. There is literally no downside. We'd all get higher framerates. Most of us would be able to run SL at higher graphics settings and still get higher framerates than we do now. Stuttering and texture thrashing would be a thing of the past.

 Linden Lab would benefit probably the most, because it would be a lot easier for them to draw many new Second Life users into the fold. And that would mean healthy growth, and LL would be able to afford to put even more resources into making SL even better for everyone.

Monday, June 17, 2019

Why Anticipated Second Life Features Go Unused Once Released

Linden Lab as a usability problem.

They cater Second Life towards a general audience of hobbyists, but then make the tools more difficult to figure out than similar tools found in programs aimed at professionals. For a good example of this, let's compare creating an NPC in Bethesda's creation engine compared to creating an Animesh NPC in Second Life.

 To create an NPC in Skyrim or Fallout 4, you open up the creation kit and you're met with an interface like this:

From this interface you can easily and quickly set up the NPC's skin, bodytype and other physical features. You can assign them to a specific cell in the game, choose the actions they can use, the equipment they're carrying, create dialog trees, their voice type and much more. Once all that is set up, all through the simple interface pictured above, adding the NPC to the world is as simple as click and drag. You've finished setting up an NPC that will wander around, interact with furniture, has all their animations, audio clips, everything.

 This is a tool used by professionals, and serious hobbyists, and yet to do the same thing in Second Life takes substantially more work. To keep things simple, let's focus on just one aspect, creating your NPC's appearance. Now, as of this writing, you are unable to change the appearance of an animesh NPC. Shape support is coming, and apparently soon, but to apply a shape to an NPC you will need to write a script. That's right, no sliders, no preview, just you and a text editor. You need to apply the script. Height, bodyfat, head size, arm length, hand size, each of these is a line of code in the script you'll have to write.

 Imagine for a moment you were making a character for a videogame, the character you're playing, one that gives you a lot of freedom with regards to your character's appearance. You'd get something like one of these interfaces:

Imagine if in any of these games, instead of the appearance editor you were met with this:

No appearance editor. No sliders. No preview so you could see your changes in real time. Just a text window in which you would have to use C++ or some other script language to write a program to determine your character's appearance. How far do you think you'd get?

THAT is what Second Life expects of you, when you want to create an NPC. According to the lead developer on this project, there are no plans to ever provide an interface. They expect it to all be done via script, and they think that's good enough.

 I don't mean to single them out, it's not a decision they should be in a position to make. The problem is that Linden Lab has plenty of programmers, but no designers. At least not when it comes to developing SL and its tool set. That is why it's not just this one feature. Everything in Second Life is this overly complicated. Want to apply an animated texture to the face of an object? You write a script to do that. Want to have a boat sail around in a circle? Get ready to write some code! Want to make a chair people can sit on? You need to write a program that will play the animation, and position the sitting avatar with the correct position and rotation.

 It is because of this complete lack of end user accessibility that many of Second Life's features go entirely ignored. Years ago we got the ability to create paths for objects to move around, as well as behaviour patterns and interactions, but you'll probably never see anyone in SL using these features. If you tried, you'd likely find it easier to boot up Unity and make your own videogame.

 This is Second Life's usability gap, and it has consistently been one of SL's biggest obstacles to success.

 Look, Linden Lab. Ebbe. If on the off chance this blog ever catches your eye, you need to hire some design people. I'm not talking programmers, you have plenty of those and I'm not disparaging their talents, but what you need to compliment those programmers are people who understand what the end users need to actually make use of Second Life's features and tools. People who can communicate those needs to the programmers. People who can write a design doc, then work with the programmers to make it a reality.

 Maybe you already have people like that but don't put them in a position where their expertise makes a difference. Maybe you don't and you need to look elsewhere to bring that kind of experience and talent to the table. Whatever the case, until you recognize your company's blind spots and hire the right people to shine light on SL's real problems, you won't be able to substantially turn around SL's decline, and you won't be able to create a next generation platform that people will actually embrace. You'll just keep tripping over the same problems Linden Lab has been blindly stumbling over for decades.

Thursday, September 20, 2018

Feature: Visual Size Display in Appearance Editor

One of my very first posts was about avatar size. It's an issue that's been around since the beginning of Second Life.

 After a discussion with Vir Linden at today's Content Creation group meeting, I've submitted a Jira requesting a new feature for the SL appearance editor.

(Everything below just recaps everything already in the Jira.)

 I submitted a Jira in 2011 pointing out that the height currently displayed in LL's viewer is incorrect. Like, not even close to your avatar's actual height. Unfortunately, there are some problems to consider here:

  • Deformers and attachments can alter an avatar's size in ways the viewer and server cannot account for.
  • SL's own broken existing system for checking an avatar's size is tied to too many other features to be fixed this late in the game.

So rather than fixing the inaccurate height currently display, why don't we just get rid of it entirely and use a visual scale. An inworld overlay just like the object editor uses.

Put height information right there, next to the avatar.
This completely circumvents the issues that make fixing AgentSize impossible, and it works for all avatars, even those who use attachments and deformers to alter their avatar's size.

But why even worry about this?

It's a visual design issue. 

When creating any content in Second Life, from a house to your own avatar, it helps to have this information in front of you otherwise you end up with visual inconsistencies that negatively impact how good Second Life looks and how you interact with your environment.

It is also a content creation issue.

 Nearly all content creators use their own avatar as their sole point of reference for scale when creating content. This is true whether you're talking animations or houses. This can result in houses where the windows are way above the average avatar's heads, or staircases where each step comes up to their knees. Or animations created for specific avatar sizes but incorrectly labeled when sold due to the existing confusion.

We see problems like the above every day in Second Life. Fixing this now would lead to generally better consistency for new content going forward.

Monday, September 17, 2018

Optimization Tutorial: Creating Your Own LOD Models!

Creating Your Own SL LOD Models


Before we begin, this is not a "how to learn Blender" tutorial. You should already have a basic grasp of Blender to get the most out of this tutorial. If you're looking to learn how to use Blender, there are many of those tutorials online which already cover that topic better than I ever could! If you're a Blender Beginner, or someone who has never even touched Blender before, then I recommend "Blender for Beginners" by Blender Guru. It's a super friendly, super easy to follow tutorial that will have you creating your own mesh content in no time!

A lot of SL users are worried that if Linden Lab ever attempted to reign in unoptimized content, it might push content creators away. So beginning today I want to start showing  you just how easy optimization is. The first thing we're going to look at is creating your own LOD models using this milk can model I created.

What is LOD?

 "LOD" stands for "Level Of Detail", it's a trick game engines use to reduce the rendering load by swapping out your close up, high detail models, with increasingly lower poly models the further away the object is.

Bonus Tip: Smaller items transition to their lower LOD states over shorter distances than larger items, which is why mesh uses less Land Impact when you shrink it! Smaller objects are easier to render!

 Of course, in Second Life LL provides the option to let the mesh uploader automatically generate LOD models Unfortunately it's not very good at this, leading people to try and use their highest detail model for High, Medium and sometimes even Low detail settings, while sacrificing Low and Lowest to offset the LI increase. The results are not pretty, worse yet content creators often tell customers to increase their object detail to compensate for the poor LOD of their creations.

At Medium detail, the uploader generated model is already falling apart!

No Second Life user should ever need to set their Object Detail up higher than 2.5-2.75. When you tell others to increase their object detail to see your work properly, you've done something wrong and you're basically telling them to sacrifice their FPS to cover for it.

 But this does not mean you're stuck with awful pre-generated LOD models, or forced to increase the Land Impact cost of your content! SL also gives you the option to upload your own LOD models!

Nearly half the triangles and it still looks great!
 Done well, no one will even notice the transition between detail levels! Here's my milk can at every Level of Detail!

It more or less holds it's shape until the lowest LOD when it becomes a box. And that's fine because at Low and Lowest levels the milk can will be far enough away that you shouldn't notice that it's beginning to lose it's shape.

 And if you're wondering, the Land Impact cost of the milk can is 0.5, meaning you can link two together and it will still only be 1 LI.

Creating Your Own LOD Models

How much extra work is it to create your own LOD models over letting the mesh uploader generate them for you? Not nearly as much as you might think. Let's hop over to Blender to see how it's done!

1. I started here, with my full detail model.

2. In Edit mode I make sure no vertices are selected to start. Then, holding down the Alt Button I begin selecting vertices down a line, until Blender selects the full line of vertices I want. Blender can be finnicky, and it might take several tries before the row you want is selected. Just keep holding Alt and clicking on vertices along the row you want.

I decided to start vertically, the blue line shows the vertical row of vertices I've selected. This row of vertices is called an "Edge Loop".

3. Now I press the X Key to bring up this menu shown below.

See at the bottom where it says Edge Loop? That's what we want. (Dissolve Edges can also work, but sometimes leaves stray vertices behind.)

4. Selecting Edge Loop removes the entire row of vertices but leaves the model itself intact. (As opposed to deleting triangles or vertices, which would have left an enormous hole down the side of our model.)

5. I did this all the way around the model until I'd deleted half of the edge loops. Then I did the same to the two small side handles. This effectively cut the triangle count of the model in half while retaining the overall shape.

 That gave me my Medium LOD model. As a rule of thumb, you generally want each LOD level to be about half of the one before it. That's not a hard rule, of course. Use your judgement.

 You can do horizontal Edge Loops, too! Which is how I reduced the can further for my Low LOD model.

Hold Alt, select vertices until the row you want is selected, then hit X to bring up the delete menu.
Delete the edge loop to simplify the model.
Again, use your judgement! This is what separates you from the automated LOD generator. Where can you remove details that won't be noticeable at that distance? Again, keep in mind that larger objects will retain their higher LOD levels over greater distances. It may even take a little trial and error before you get the hang of it, but once you do then creating your own LOD models won't take long at all! It only took me minutes to create the LOD models for this milk can.

Physics Bonus!

As an extra benefit to handling LOD this way, when setting up the physics for your mesh object you can use one of your LOD models as the physics box, which can result in a yet lower Land Impact cost than using Mesh Uploader model generator.

 And there you go. That is all there is to creating your own LOD models for Second Life. Now get out there and start creating content that doesn't fall apart the moment someone moves a few feet away from it!

Thursday, August 23, 2018

Simple Performance Tricks Anyone Can Do When Building

Two Three Simple Tips to Increase FPS and Reduce Lag in a Sim.

A lot of the tips I give on building and optimization can get a bit technical but I wanted to share two simple tricks anyone with even the most basic modding skills can do to make a sim where people can enjoy higher framerates and less lag.

1. Turn all alpha textures from "blended" to "masked".

Use ctrl+alt+t to reveal all objects in a scene with alpha textures. As long as you have Advanced Lighting Model (Aka: ALM or Deferred Rendering) enabled, "blended" alpha textures show up red, "masked" alpha textures show up blue. If you have ALM off, all alpha textures just show up red, which makes it harder to tell masked from blended at a glance, but you can still use this trick. (It's just a little more work!)

As you can see in this example, even a lot of the solid building walls with no windows or anything have an unused alpha channel and it was left in blended mode. Blended is a big strain on rendering, simply getting rid of all of the blended alpha, save a few water and light effects, will result in a noticeable FPS increase on most computers. Plus, most of the texture glitches people experience in SL, from weird lighting behaviour to the infamous "alpha sorting bug" are all due to blended alpha. Get rid of the blended alpha and you get rid of the bugs.

How do you do this? Simply edit the object, selecting the appropriate faces if necessary, and in the Texture tab change "Alpha Blending" to "Alpha Masking".

This will turn your texture completely solid, but don't panic, all you need to do is change the "Mask Cutoff" from 0 to 100, then increase or decrease the cutoff value until the texture looks how you like it. For most textures like those in the example, you can usually just leave it at 100, it's only those with feathered edges where you may need to mess with the cutoff value to get the best result.

2. Put building interiors into skyboxes.

Often, most of the detail in a sim is in the building interiors. Whether you're talking castles, office buildings, or people's homes.

Do you really need to see all of that from the sidewalk? Move it to a skybox placed well out of draw distance and you've greatly reduced the amount of content your visitors need to render all at once.

How do people get inside the building?

 Simply put a teleporter inside the door. If you have a premium account you can create a sim experience so that people can open a door and walk right in to instantly, almost seamlessly, transition to the building interior. Don't have access to an experience? The "Anywhere Door" from Curio Obscura is a popular alternative predating experiences.

You can find lots of building facades on the marketplace, too. From fantasy to urban to sci-fi. They're often very light on Land Impact. Otherwise you can use the buildings you have now, simply set the windows from blended to "no alpha" and instead make them shiny and reflective. Using skyboxes for building interiors also makes building a sim a lot easier, as you're no longer constrained by the ground level landscape, or even the exterior size and shape of your building. This allows you to be a lot more creative.

And, of course, there's room for exceptions. The rare foyer or small building that is open to the outside world can remain and you've still managed to move most of the sim's content out of draw distance, making your sim load and render much faster.

Does putting interiors into skyboxes mean I need to rez two copies of every building?

Not necessarily. Here are two ways I approach it:

  • Use a faux exterior building (a building with no insides), these are usually very light on LI. Then I build the skybox independent of the exterior. Either from scratch or using skyboxes I find on the marketplace. Sometimes I use multiple skyboxes and link them via door teleporters.
  • Use a building constructed so that you can basically take it apart. Some buildings will let you remove a significant amount of exterior/interior, allowing you to rez a ground version and a skybox version of the same building at a reduced LI cost.
The first option is easier, I think, so I'd suggest that to most people. But the latter option allows you to utilize buildings you may already have.

Some of us want to be able to see our neighbors, landscape, roads, etc when we look outside our windows!

Fair enough. The reality is nothing is free, you pay not only with your framerates, but the framerates of everyone around you. So keep that in mind. However, this does not mean you can never enjoy a good landscape view from inside your home!

You can have a foyer or even a room with an exterior deck that are at ground level, with the rest of the building interior in skyboxes. And certain types of buildings you may want entirely on ground level (like a small gas station or coffee shop with indoor and outdoor seating). The idea is that the majority of the sim's building interiors are separated to their own skyboxes so that the sim as a whole is easier to load and render.

For those skybox interiors I sometimes just turn the interior windows solid and apply a glow to suggest lighting coming in from outside. (Projected lights from one direction of windows can add a lot of ambience to a room!) Other times I create a tiny window diorama, which can be as simple as a screenshot applied to a curved face (like the inside of half a hollow cylinder) that extends past the window enough that you can't see the edges from inside, or as detailed as a surrounding landscape object around the skybox and set it up to look similar to the actual surroundings, just simplified and often using forced perspective tricks.

 Penny! Bad builder cow! You forgot a super easy tip!

I did, I'm sorry! Here's one more!

3. Set Physics to "None" on objects that don't need physics!

 Ok, so a good build needs physics, otherwise your visitors will fall through the floor! But not everything in a build needs physics!

Here's a great example! A shelf full of decorative beverage bottles in a club/bar scene. The shelf itself is physical, so you can't walk through it, but the bottles on the shelves have physics set to "None" to save sim resources. This means the sim has to do fewer physics calculations. Where it's most helpful is items on the floor/ground. Tiny stones, small plants, a stray pizza box or pile of clothing, set objects like these to have no physics and you'll see less lag in your sim.*

 *If you're sharing a sim with others your mileage may vary. I have a mainland spot, too, and I know how bad things can get if your neighbors aren't aware of how their resource use is affecting everyone else in the sim! But this kind of lag reduction has to start somewhere! Do it with your own builds and share the tips from this article with others!

 Keep in mind, these suggestions aren't hard rules you must follow at all times, just guidelines to help make a sim better for yourself and everyone else who lives in, or visits the sim.

The important thing, as always, is to have fun. Happy building, everyone!

Tuesday, January 30, 2018

Smaller Doors Anyone Can Fit Through

Or How to Enjoy the Benefits of Building to Scale Without Making it Impossible for Others to Explore Your Creation!

A lot of people tell me that they want to scale their builds down, but feel that if they do larger avatars will not be able to fit through doors in their sims. This is a very valid concern, but one with several very simple solutions.

 Before we get into the solutions, first remember that you can only resize a building that is either modifiable or includes a resize script (most no-mod houses do not, at the time of this writing, include a resize script). So your safest bet is to avoid buying no-mod.

If you build mesh houses/buildings yourself I'll say right away that the best solution is to leave the wall over the door phantom. Bam! Done! You've made a building that is more accessible to all sorts of SL users and a bit easier to rescale to better suite for your customers purposes.

 For those of you who have purchased your buildings and need solutions to the small door problem, read on!

The Physics Solution

Here is a mesh house I've shrunk down to about 1=1 scale. For reference, my avatar is 6'1" and the door frame is about a foot and a half or two feet taller.

So how is an 8-9' tall avatar going to fit inside that? EASILY!

 First you need to find out how the physics for your structure are done. Many mesh buildings use a shell of some sort, separate from the mesh model. Not all structures do this.

 If your building has no separate physics box, a quick solution is to see if the wall over the door is a separate mesh item you can simply set phantom. Even if it's connected to the wall on either side of the door you can set it all to phantom and put two invisible prims in its place.

 If the building is a single structure that can't be separated you may have to set the whole thing phantom and build the physics with prims, I'll explain that a bit more later.

In the meantime, let's reveal the physics prims for this house!

The prim physics boxes are blue! Notice how there's no prim covering the wall above the door! That wall is completely phantom so avatars of any size can fit. All of the interior doors for the house are the same! Leave that space blank and you have doors anyone can squeeze through.

 So what if your structure doesn't use prims for the physics? Set the building phantom and build a physics shell out of prims like I did for this house! If you also set the house itself to "no-physics" you can often reduce it's land impact considerably! The root object of a linkset must have physics so you may have to link the house to a prim first, set the whole structure to "no-physics" then set the prim itself to "convex hull" for minimum land impact.

 Remember to set the physics prims to "convex hull" to reduce their own land impact. After you've done all this you can often link the no-physics house to the convex hull prim shell for even more of a land impact reduction. The entire house in this example is 21 land impact.

Teleporter Solution 1

 Another solution to the small doors problem is to place a teleporter above the door! Just rez a prim above the door frame, where the physics for the wall over the door begins, like so.

 And one for the opposite side of the door as well.

Then you simply make the prims invisible and put a teleporter script inside each.

 If you want this to be completely seamless you'll need an Experience Key. This way when an avatar collides with the prim they will automatically be teleported to the other side of the door frame. They may not even notice the teleport.

 If you do not have access to an Experience, you can put a script inside the prim which informs the avatar colliding that they need to click above the door to "duck". Setting the prim to "sit when touched" and an old fashioned sit teleporter script will then be enough to achieve the effect.

 Success! A door anyone can pass through!

Teleporter Solution 2

 There is an alternate way to use teleporters to create doors anyone can pass through. That is to make the entire doorway itself a teleporter!

 I like to put building interiors into skyboxes (reduces lag, increases framerates, and gives me more freedom in building) and the entrances/exits for these skyboxes are teleporters disguised as doors.

 You can script your own or use a an existing door teleporter like Curio Obscura's "Anywhere Door".

 The "Anywhere Door" is a sit teleporter. You click the door to open, then click the open doorway to be teleported to the door's destination.

 My own sims now use an Experience based teleporter for a more seamless experience. You click on the door to open it and then simply walk into the open doorway to be teleported.

 And there you have it! Three solutions to the problem of doors being too small for giant sized avatars! I hope these examples help you out in your own sim building adventures, if you have any questions, leave them in the comments below!