On effects and particles – How scripters add magic to Second Life

June 30, 2010 at 6:12 pm (Uncategorized)

Starlight particles

So you’re making a Second Life movie and your script calls for: CRAZY WILD SPECIAL EFFECTS. A car explosion perhaps? A building collapsing? Or maybe it’s just something simple, like the progress of a tulip blooming? If you’re a typical machinimatographer like me, you probably can’t really make those things happen out of thin air. And chances are, the typical scripting shop won’t have what you need. So now you have to make an important decision: Do it in post-production or get customized scripting? Either way is correct, and I’ll try to tell you about the benefits of each.

I recently was asked to be machinimatographer on a project that was predicting what a real science laboratory might look like a couple years into the future. The script called for some complex computer programs to be re-created and basically placed into the screens. We decided to shoot green screens and insert the technology at a later time in post. Choosing this option was probably for the best since it required a lot of attention to small details such as menus and commands that would be a challenge to coordinate with prims.

However, what about a tulip blooming, or pyro effects exploding around a car? What would be the benefits of doing these in-world? Well, for one, you’re using content in Second Life so the textures, 3D feel, etc. will be consistant with the rest of your theme. It will feel as if its part of the location. This is just what we did for another project I worked on for IBM, where it was required that a woman shoot a rotating cube out of her hand at her enemy. The scripter made a cube, gave it a rotation effect, and created this great foggy substance that was commanded to travel after the cube. With all this done in Second Life, it gave it a really neat cartoon-y edge that fit with the look and style.

So, in the end it really depends on what you’re trying to do. Overall, it would probably be more time consuming and expensive to achieve special effects in post, but you also have a lot of controls and capabilities that would work great to recreate more of those complex scenarios, such as data visualizations, in your movie scene.

I decided to meet with a Second Life scripter to see just how much you can really do with good old in-world scripting. His name is Arminas and he is a the best of the best of SL scripting and particles. Check out his site here http://www.secondeffects.com

Mr. Arminas himself

How did you learn SL-scripting? Was it a completely different language than anything else you’ve ever had to learn in the computer world?

In RL I have a Master’s degree in Computer Science and have programmed in many languages. It turns out that LSL is a rather simplistic coding environment, although it does have some interesting features that relate to a 3D environment that you don’t see in other situations. It’s quite fun to see visual results of your efforts immediately, though.

How has SL scripting changed from when it first started to now? Do you think these changes helped break down a lot of limitations?

From when I started scripting in 2007 it really hasn’t changed very much. Yes, a few new things were introduced, and yes, it runs slightly faster and differently with the new Mono environment, but basically it’s the same type of coding. What will really change things is when The Lab manage to permit other languages in the Mono environment. In other words, you won’t have to code in LSL forever – you can use more advanced languages that are commonly used outside of SL. This means you can bring in existing code, open source projects, etc, and a lot more function will suddenly be available. Who knows what might happen then?

Could you give me some examples of effects that wouldn’t be possible in-SL? Why wouldn’t they?

There are fairly limited particle capabilities in SL. For example, LSL-based particle effects have many restrictions on the movement and orientation of the particles – the most obvious being each particle texture can only be shown face-on. That said, there are ways to get  around that – to solve the face-on problem, you make several textures with different orientation and then rotate between them with a script. Similarly, I’ve had to build all kinds of wacky gadgets, triggers and moving composite objects that can deploy particles in just the right way to achieve the desired effect. Not everything can be done – but what can be done is often more than you’d expect. It just takes imagination and a bunch of time.

What is your favorite scripting project you’ve ever done?

While I’ve done some larger projects, such as an entire underwater animated coral reef with several teaching stations, the one I am most fond of is quite simple: steam from a teacup. Why is it my favorite? I spent a great many hours working on the appearance of the steam until it looks utterly realistic. It’s very hard to see unless you’re told it’s there, but that’s the essence of effects – they are in the periphery, subtly affecting your perception of the scene in a subconscious way.

What kinds of people in SL most use your services? Is it a whole
variety of people?

I have two types of clients: retail, where people drop by my Electric Pixels Particle Shop to pick up a standard effect of some sort – and many of them are directly useful for various situations; and contract,
where I am asked to build something very unique and unusual, typically for an event. It might be scenery, background, something to wear, something to hand out as a gift, etc. I’ve worked for educators, weddings, machinima, parties, concerts and others. Everyone can use particles!

What kinds of things limit how much you can do? Any other technology issues?

Mostly the limits are personal: there’s only so much time available to make things, and only so much money for people to pay for that time. There are two fundamental issues, however: Some people still have rather crappy PCs with barely usable graphics cards. In those cases they could potentially be overloaded by a lot (and I mean tons, not a small poofer) of particles and they’ll lag. However, most systems purchased in the past two or even three years are invulnerable to almost any amount of particles. The second issue is more profound: I call it Particle Prejudice. There are many people who simply turn off particles, even permanently, as they have some kind of unnatural fear of particles. Perhaps they had a bad experience in the past with a griefer or a newbie blingtard, but to brand all particle makers in that way is actually a bit insulting. There’s nothing I can do for those folks, as they simply miss out on the added experience due to properly installed particle effects.

If you could change one thing in SL that will break down a lot of barriers for your scripting, what would it be?

Consumed by aqua :)

The development tools for LSL are extremely primitive and are missing even the most basic features from tools in the non-LSL coding world. Things like source code control, libraries, object orientation, debugging tools, IDE and many others just aren’t there. In LSL today you get a text editor with minimal syntax checking. a box full of API calls, and that’s it. Again, a full Mono implementation would permit use of all those tools – but on the outside of SL – and we’d supercharge the SL scripting world. Breaking down the barriers? I think if there was one thing I could ask for, it would be for people to take another look at particles; they can be truly beautiful and make your immersive experience that much greater.

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: