tag:blogger.com,1999:blog-39564365201603252352009-07-07T10:03:31.927-07:00Nowhere but here...Emma Nowhere's Second LifeEmmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-3956436520160325235.post-55534936185494497622008-07-30T17:10:00.000-07:002008-07-30T19:06:22.374-07:00OpenSim on half a buck a dayI recently decided to see what the big deal was about <a href="http://opensimulator.org/wiki/Main_Page">OpenSim</a>. After initially installing it on my desktop computer and connecting to it with the latest Release Candidate viewer, I decided to try to set it up on an inexpensive hosting account to see how feasible it was to run a real sim live on the Internet. Today's blog post talks a bit about how I did it, it's not a how-to guide, and you'll probably need to be a bit of a Linux geek to follow along, but hopefully you find it interesting.<br /><br />The first step for hosting OpenSim was to find a suitable hosting account. Many people try to simply connect a server to their home DSL or Cable Internet service, but there are many disadvantages to this approach, mostly arising from the inexpensive equipment provided with such services often not being particularly easy to set up for inbound connections and the fact that most Telco and Cable service providers discourage the use of home Internet connections for hosting servers. Generally, if you want to host your own server, your best bet is some form of hosting provider.<br /><br />There are a number of options for server hosting, including some people who are renting pre-configured OpenSim servers. Given that you can get a nice <a href="https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4235">OpenSpace region</a> (interesting to note the similarity between OpenSpace and OpenSim, intentional?) from Linden Lab for $75/month, it's my humble opinion that it defeats the purpose of setting up your own OpenSim server if you have to pay anywhere close to that much. That said, you're not going to be able to host OpenSim on a typical inexpensive <a href="http://en.wikipedia.org/wiki/Shared_web_hosting_service">shared hosting</a> account, because it needs it's own dedicated IP addresses and ports as well as needs to have software installed that most shared hosting accounts don't provide. Luckily, there has been a recent trend to offer what's called <a href="http://en.wikipedia.org/wiki/Virtual_private_server">"virtual private servers"</a>, which uses virtualization software like VMWare or Xen behind the scenes to host multiple virtual servers on a single physical server. To you and the software you install, virtualization makes it looks like you have an entire server to yourself. After some research, I found that <a href="http://www.slicehost.com/">SliceHost</a> offers a $20/month virtual private server hosting plan which appeared to provide enough bandwidth and computing resources to comfortablely host an OpenSim simulator. Following the excellent instructions on the SliceHost website, I was able to start with an Ubuntu Hardy Heron OS image, and install Apache, MySQL, PHP, Perl, Python, Mono, and phpMyAdmin. One key point of divergence from the SliceHost instructions was when <a href="http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-1">configuring the server's firewall</a>, it was necessary to allow access to <a href="http://opensimulator.org/wiki/Network_Settings">all the ports necessary for OpenSim to operate</a>.<br /><br />I initially tried to use the same <a href="http://opensimulator.org/wiki/Download#Official_Builds">pre-built OpenSim binaries</a> that I used on my desktop. After a few mystery crashes, I decided to use svn to get the latest version of the OpenSim code. The <a href="http://opensimulator.org/wiki/OpenSim_Build_Instructions#Ubuntu_8.04">instructions on the OpenSim website</a> were fairly straightforward, and I was pleased that I was able to reasonably easily compile the latest version of OpenSim. <br /><br />By default, OpenSim provides very minimal physics features that don't do things like prevent you from walking through walls. The recommended physics engine is called <a href="http://opensimulator.org/wiki/PhysicsEngines">OpenDynamicsEngine</a>, and a pre-built binary was also included with OpenSim, but this version had problems as well, forcing me to also <a href="http://opensimulator.org/wiki/PhysicsEngines#Compiling_ODE_from_source_.28Linux.29">rebuild the OpenDynamicsEngine from source</a> to get it to work. <br /><br />OpenSim can be run in either <a href="http://opensimulator.org/wiki/OpenSim_Configuration#Standalone_mode">standalone mode</a>, as a <a href="http://opensimulator.org/wiki/OpenSim_Configuration#Grid_mode">private grid</a>, or <a href="http://opensimulator.org/wiki/OpenSim_Configuration#Attaching_your_sim_to_someone_else.27s_grid">connected to another grid</a>. The documentation of standalone mode versus as a grid is somewhat unclear in that standalone mode is technically a simple form of a grid in that you can have as many regions as you want in a standalone simulator. I was initially confused and thought that you needed to run a grid in order to have multiple regions, but this is in fact not the case. Typically, you'll probably only use grid mode to connect a region to an existing grid, such as <a href="http://osgrid.org/index.php?page=home&btn=1">OSGrid</a>. In my case, I wanted to have my own set of regions that were part of my private sandbox grid as well as have one or two regions <a href="http://osgrid.org/index.php?&page=smodul&id=15&btn=7&subbtn=15">connected to OSGrid</a>. This proved simple to do with a couple of caveats. First of all, when I set up the firewall, I needed to make sure that I opened enough ports for all the regions I wanted to serve. The only thing that the documentation didn't explicitly state was that I needed to create two copies of the opensim/bin directory so that I could run two instances of the simulator code, one for my private grid and the other for the regions I intended to connect to OSGrid. I'm still not sure if this is absolutely necessary, but I'm pretty sure that you have to keep these installations in separate directories because they need different <a href="http://opensimulator.org/wiki/OpenSim_Configuration">configuration settings</a> in their respective OpenSim.ini configuration files. One other detail was that it was necessary to change the setting "http_listener_port" in the OpenSim.ini file for my OSGrid simulator to be the first port number in the series of port numbers assigned to the OSGrid regions.<br /><br />There were a few other things that I needed to learn through trial and error and reading between the lines of the documentation. One important tip was that OpenSim isn't yet set up to easily be run and administered in a "headless" fashion. When the OpenSim server starts up, it goes into a command-line mode where you are able to administer it by entering in commands. In order to do this without having to stay connected to your server all the time, a tool called <a href="http://www.redhatmagazine.com/2007/09/27/a-guide-to-gnu-screen/">GNU Screen</a> can be used to allow the server to run in command-line mode while still letting you disconnect and reconnect to your server via SSH. <br /><br />After completing these steps, I had 3 regions in a private grid and another region attached to OSGrid, all on a $20/month hosting account. It's hard to beat that kind of price/performance ratio, although this certainly wasn't a project for the faint of heart. If there is enough interest, I'll put up a page with the start to end steps I took.<br /><br />Of course, once you do this, you'll still have to grapple with the issues of having a Ruthed avatar with bad hair and skin. Using Second Inventory and test LibSL TestClient, it's possible to move some of your SL content into OpenSim (only stuff you made yourself or you bought and paid for, of course), but that's the subject of another blog post.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-5553493618549449762?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com7tag:blogger.com,1999:blog-3956436520160325235.post-54860052814794740762007-11-25T10:45:00.001-08:002007-11-25T18:08:17.586-08:00Painting on the Second Life Map with PrimsIf you look at the Second Life Map, you often can see designs and text on the various regions. In most cases, these are fairly primitive - simple block lettering or geometric shapes. The map is updated on a weekly basis by a program at LindenLab that first creates a picture of the terrain detail using terrain elevation and terrain textures and then looks at the prims that are below approximately 400 meters in altitude. In order to make it harder to put things on the map, though, this program only looks at the color data of the prims as well as reducing the entire texture to a single color value, so, for example, a 10x10 cube will only appear as a single color when it renders on the map. Putting a megaprim up with a photographic texture will only result in large monochromatic shape.<br /><br />So, how do people manage to put more complicated designs onto the map? The answer is that they construct the image out individual colored prims arranged into whatever design they want to repesent. There are some very nice examples of this out there, but they tend to be the result of a lot of work by determined individuals.<br /><br />After some thought, I realized that you could automate the process, and after a lot of hair-pulling, figured out how to do it. Here are some pictures of the results of that effort:<br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/1459705311/" title="Painting with prims 1 by Emma Nowhere, on Flickr"><img src="http://farm2.static.flickr.com/1044/1459705311_6fee5371f6_m.jpg" width="240" height="180" alt="Painting with prims 1" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/1459702423/" title="Painting with prims 2 by Emma Nowhere, on Flickr"><img src="http://farm2.static.flickr.com/1420/1459702423_8f7a92db33_m.jpg" width="240" height="180" alt="Painting with prims 2" /></a><br /><br />And, if you want to see an example of this on the map, look here (click on it to go to the SLurl map page):<br /><br /><a href="http://slurl.com/secondlife/dynamism/210/180/80/" title="Super Calamari on Dynamism region"><img src="http://secondlife.com/apps/mapapi/grid/map_image/903-332-1-0.jpg" width="256" height="256" alt="Super Calamari on Dynamism region" /></a><br /><br />Now, to see how these pictures were actually rezzed in-world, here's a video I made of the process:<br /><br /><center><script type="text/javascript" src="http://blip.tv/scripts/pokkariPlayer.js?ver=2007111701"></script><script type="text/javascript" src="http://blip.tv/syndication/write_player?skin=js&posts_id=448080&source=3&autoplay=true&file_type=flv&player_width=&player_height="></script><div id="blip_movie_content_448080"><a rel="enclosure" href="http://blip.tv/file/get/EmmaNowhere-MapPainterDemo336.flv" onclick="play_blip_movie_448080(); return false;"><img title="Click to play" alt="Video thumbnail. Click to play" src="http://blip.tv/file/get/EmmaNowhere-MapPainterDemo336.flv.jpg" border="0" title="Click To Play" /></a><br /><a rel="enclosure" href="http://blip.tv/file/get/EmmaNowhere-MapPainterDemo336.flv" onclick="play_blip_movie_448080(); return false;">Click To Play</a></div></center><br /><br />Figuring out how this could be done turned out the be the easy part, implementing it was considerably harder. First of all, using a single prim for every color "pixel" would have used too many prims for this to be practical. Luckily, the answer came from the popular XYText script, which uses a technique of flattening prisms to create a rectangular shape with 5 upward facing surfaces, allowing 5 pixels of color to be displayed per prim.<br /><br />The second challenge was how to get the color information into Second Life. The goal was to make this easy enough that anyone with an image in any of the standard file formats (GIF, JPG, PNG, BMP), could turn these into a MapPainting. Writing a Java application to take these images and turn them into textual data that LSL could work with was largely straightforward. Unfortunately, the result was still enough information to fill several notecards. The first version of the project simple wrote out a set of textfiles which the user could copy and past into a notecard within the Second Life viewer. This proved cumbersome for the testers, all of whom were fairly sophisticated SL residents. The solution was to turn the desktop application into a web application, and simply allow people to upload their image onto the NowhereVirtual.com web site. The in-world scripts connect to the web application which feeds them exactly the data they need. The result is a much simpler process, the user simply uploads an image on a web page, clicks "Rez" from an in-world menu and away you go.<br /><br />The final challenge was how to rez this many prims this quickly, given that LSL automatically slows down the scripted creation of new prims to make griefer scripts less effective. We'll keep the solution to that problem a trade secret for now. ;-)<br /><br />The final product, MapPainter, is available in two versions, the full version which can fill a sim, and the lite version, that will fill a 4,096 square meter parcel. You can purchase it in-world or on SLExchange and OnRez:<br /><br /><a href="http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=404980">MapPainter at SLExchange</a><br /><a href="http://shop.onrez.com/item/422754">MapPainter at OnRez</a><br /><a href="http://slurl.com/secondlife/Somewhere/33/209/22">Nowhere Virtual Ministore</a><br /><br />For more information, visit the Nowhere Virtual website:<br /><br /><a href="http://www.nowherevirtual.com/mappainter/">MapPainter Product Page at Nowhere Virtual</a><br /><a href="http://www.nowherevirtual.com/mappainter/help.html">MapPainter Documentation Page at Nowhere Virtual</a><br /><br /><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-5486005281479474076?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com1tag:blogger.com,1999:blog-3956436520160325235.post-45291715305312289892007-09-29T15:10:00.000-07:002007-09-29T15:38:24.475-07:00TerrainTool and more on Sculptie Sim Models<a href="http://www.flickr.com/photos/emma_nowhere/557228687/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1170/557228687_7fb484e121_m.jpg" width="240" height="180" alt="Sculptie Terrain Model 4" /></a><br /><br />In my <a href="http://emmanowhere.blogspot.com/2007/06/making-region-sim-models-using.html">last post from way back in June</a>, I mentioned that I was writing a program to help produced sculpties from sim RAW terrain files. I've been delinquent in following up on that, and to that end, have finally uploaded a copy of the TerrainTool program that will let you do this. You can find it here:<br /><br /><b><a href="http://www.nowhere-sl.com/terraintool/">http://www.nowhere-sl.com/terraintool/</a></b><br /><br />This was part of an effort to make a more full-featured terrain visualization tool in Java, which perhaps at some point will happen. In any case, it's quite useful for producing sculptie textures that can be uploaded into Second Life and used to make scale models of sim terrain.<br /><br />One thing that can be useful when making these types of models, is to texture them with the actual image from the grid map. Here's a short script that will let you get that for the region you're in:<br /><br /><font size="-2"><pre><br />string getSimMapURL() {<br /> string regionName = llGetRegionName();<br /> vector rc = llGetRegionCorner();<br /> integer regionX = (integer)(rc.x / 256);<br /> integer regionY = (integer)(rc.y / 256);<br /> <br /> llSay(0, "Region \"" + regionName + <br /> "\" at: " + (string)regionX + <br /> ", " + (string)regionY);<br /> <br /> integer mapY = 1279 - regionY;<br /> <br /> string mapApiRestEndpoint = <br /> "http://secondlife.com/apps/mapapi/grid/map_image/";<br /> string mapImgUrl = mapApiRestEndpoint + <br /> (string)regionX + "-" + <br /> (string)mapY + "-1-0.jpg";<br /> <br /> llSay(0, "Map Image URL: " + mapImgUrl);<br /> <br /> return mapImgUrl;<br />}<br /><br />default {<br /><br /> state_entry()<br /> {<br /> llSetText("Click me to get the Map URL for the current region",<br /> <1,0,0>, 1.0); <br /> }<br /><br /> touch_start(integer total_number)<br /> {<br /> getSimMapURL();<br /> }<br />}<br /></pre></font><br /><br />Simply drop that script into a prim, click on it, and you'll get an image URL like this:<br /><br /><a href="http://secondlife.com/apps/mapapi/grid/map_image/926-344-1-0.jpg">http://secondlife.com/apps/mapapi/grid/map_image/926-344-1-0.jpg</a><br /><br />Following that URL will take you to the actual image from the grid map, which should look something like this:<br /><br /><img src="http://secondlife.com/apps/mapapi/grid/map_image/926-344-1-0.jpg" width="256" height="256" /><br /><br />Simply save that image and upload it as a texture into SL, and you can apply it to your scupltie sim model.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-4529171530531228989?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com0tag:blogger.com,1999:blog-3956436520160325235.post-32958195411855071262007-06-16T09:18:00.000-07:002007-06-16T09:23:01.676-07:00Making Region Sim Models Using SculptiesCheck out these pictures of the scale model of the Nowhere sim that I made using sculpties. Turns out it's not too difficult to create a sculptie texture using the region RAW file and Photoshop. I'll post detailed instructions for doing this by hand as well as a tool for automatically generating these soon.<br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/557228687/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1170/557228687_7fb484e121_m.jpg" width="240" height="180" alt="Sculptie Terrain Model 4" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/557036766/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1310/557036766_21e7767ac0_m.jpg" width="240" height="180" alt="Sculptie Terrain Model 3" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/557036748/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1264/557036748_05670448fc_m.jpg" width="240" height="180" alt="Sculptie Terrain Model 2" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/557036698/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1342/557036698_8f73a515e4_m.jpg" width="240" height="180" alt="Sculptie Terrain Model 1" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-3295819541185507126?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com1tag:blogger.com,1999:blog-3956436520160325235.post-53605919287559382402007-06-12T13:36:00.000-07:002007-06-16T08:45:19.332-07:00Open-Sourcing my Update Server scriptsI posted the code for the update server I use to update the teleport pads on Nowhere on the <a href="http://wiki.secondlife.com/wiki/Intra-Region_Update_Server">Second Life Wiki</a>. I use <a href="http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=76998">AubreTec Teleport Pads</a> for teleporting between locations in the sim, and I've been quite happy with them. The problem is that the pads are configured with two notecards, one of which contains the locations and the other than contains authorized users. Whenever I add a friend to the list of authorized users or add a new teleport pad, I need to visit each pad and copy new notecards in, which gets pretty tedious. Since necessity is the mother of invention, I wrote up an update server which distributes these new notecards automatically. I later started using this system for updating <a href="http://forums.secondlife.com/showthread.php?t=53495">Freeview</a> screens and anything else that gets configured this way. You can find the code on the Second Life Wiki at the following link:<br /><br /><a href="http://wiki.secondlife.com/wiki/Intra-Region_Update_Server">Intra-Region Update Server</a><br /><br />Hope you find it useful!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-5360591928755938240?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com1tag:blogger.com,1999:blog-3956436520160325235.post-65147461073769695502007-05-17T09:15:00.001-07:002007-05-17T09:21:09.557-07:00Emma vs. the Subway<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/emma_nowhere/502244463/" title="photo sharing"><img src="http://farm1.static.flickr.com/195/502244463_9148998d8e_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/emma_nowhere/502244463/">Emma vs. the Subway</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/emma_nowhere/">Emma Nowhere</a>. </span></div>I meant to post this earlier... I took this picture at <a href="http://slurl.com/secondlife/Downtown/123/92/101">Downtown</a> on the day it opened to the public. I can't say enough how beautifully crafted this place is, or to do justice to the emotions it provokes in <a href="http://vlalonde.blogspot.com/2007/05/city-of-dreams.html">those who visit it</a>. I really wish I'd saved this picture to disk as a high resolution file rather than as a 512x512 texture, but I still love it. I really wasn't sure what would happen when the car hit...<br clear="all" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-6514746107376969550?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com2tag:blogger.com,1999:blog-3956436520160325235.post-15383237176770645872007-05-14T10:49:00.000-07:002007-05-14T12:16:27.578-07:00Twittering from SLI've read a number of blog posts by <a href="http://ordinalmalaprop.com/engine/2007/04/18/twitterbox-04/">Ordinal Malaprop</a>, <a href="http://www.tranniefesto.co.uk/2007/03/06/why-i-hate-twitter.html#2">Kisa Naumova</a> and others about using <a href="http://www.twitter.com">Twitter</a> from SL. Very cool stuff! The great thing about Twitter, from a scripting standpoint, is that if you just want to do updates from within Second Life, you can do it with just a few lines of LSL code and post directly to the Twitter servers. Here's a simple example that I hope you'll find useful:<br /><br /><pre><br />//put your Twitter username and password here<br />string twitter_user = "";<br />string twitter_pass = "";<br /><br />updateTwitter(string update) {<br /> if ((twitter_user != "") && (twitter_pass != "")) {<br /> string url = "http://" + twitter_user + <br /> ":" + twitter_pass + <br /> "@twitter.com/statuses/update.xml";<br /> llHTTPRequest(url, [HTTP_METHOD, "POST", <br /> HTTP_MIMETYPE, <br /> "application/x-www-form-urlencoded"], <br /> "status=" + llEscapeURL(update));<br /> }<br />}<br /><br />default {<br /><br /> state_entry() {<br /> }<br /> <br /> touch_start(integer num_detected) {<br /> updateTwitter("Hello from LSL");<br /> }<br /><br /> http_response(key request_id, <br /> integer status, <br /> list metadata, <br /> string body) {<br /> //always returns a 415 error<br /> //unless it fails, in which case<br /> //a 500 error is returned<br /> }<br /><br />}<br /></pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-1538323717677064587?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com0tag:blogger.com,1999:blog-3956436520160325235.post-61427356706677935292007-05-14T10:23:00.000-07:002007-05-21T15:22:48.035-07:00Construction Time AgainJust a quick update - I'm starting planning on the companion sim to Nowhere. Looking at coastlines in Google Images for inspiration and I've been privileged enough to visit and live in few interesting tropical locales in RL. Thematically it will be very similar to Nowhere, with my signature landscaping techniques, such as gently sloping coastlines, private bays, and natural mountains. I'll post more details as the plan gels.<br /><br />I'm also hoping to make some progress on finishing the <a href="http://www.flickr.com/photos/emma_nowhere/sets/72157594501510559/">Lost Hatch</a> (aka Dharma Initiative Swan Station) skybox build that I started on so long ago. <br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/369473689/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/144/369473689_6af44fbfd1_m.jpg" width="240" height="180" alt="hatch work-in-progress 6" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/501463221/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/229/501463221_af2a5985d0_m.jpg" width="240" height="180" alt="Lost Hatch Test Textures 1" /></a><br /><br />The layout has been done for months, except for a few details, it just needs to be textured, which is unfortunately outside of my skill set. <br /><br />In my quest to better learn texturing, I did read the excellent book <a href="http://www.amazon.com/3D-Game-Textures-Professional-Photoshop/dp/0240807685/">3D Game Textures: Create Professional Game Art Using Photoshop</a> by Luke Ahearn. While it will take more than even a wonderful'y written book such as this to impart graphic design skills on someone like me, it at least helped to explain to me how places such as <a href="http://downtownfalcon.blogspot.com/">Downtown</a> can look so amazing. I recommend it to anyone who's trying their hand at building anything in Second Life since good texturing is so often what makes the difference between good and great in anything in-world. One point that the book makes, but which is even more important in SL, is the size of textures. If you're using textures that are greater than 512x512, and you've got several of them in a build, you <b>ARE</b> going to be making life difficult for people who don't have higher-end graphics cards who will experience <i>render lag</i>, which they'll probably incorrectly attribute to your sim or SL. Many SL users aren't PC gamers with the latest and greatest hardware, so pay attention to texture size and please use smaller textures when possible.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-6142735670667793529?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com0tag:blogger.com,1999:blog-3956436520160325235.post-21376073433796288732007-04-30T10:02:00.001-07:002007-05-17T15:37:10.381-07:00Noteworthy: Sysperia Poppy's work at The King Has Fallen gallery<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/emma_nowhere/478606968/" title="photo sharing"><img src="http://farm1.static.flickr.com/191/478606968_04ce55b0f9_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/emma_nowhere/478606968/">Melancholia at home</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/emma_nowhere/">Emma Nowhere</a>. </span></div>Sysperia Poppy has done an amazing collection of portraits, a few of which feature a close friend of mine, <a href="http://cala-sl.blogspot.com/">Super Calamari</a>, or Cala as she prefers to be called. The title of this one, Melancholia, struck a nerve, since I've been feeling more than a little down lately, and Cala has always been there to cheer me up.<br /><br />Sysperia's work can be seen in-world at her gallery, The King Has Fallen, at <a href="http://slurl.com/secondlife/Sonata/159/235/262/">Sonata (159, 235, 262)</a>.<br clear="all" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-2137607343379628873?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com1tag:blogger.com,1999:blog-3956436520160325235.post-67062035553212804272007-04-22T16:52:00.000-07:002007-04-23T16:40:25.408-07:00Using Flickr photos in Second LifeMy friend <a href="http://www.flickr.com/photos/lanamiranda/">Lana Miranda</a> recently pointed out to me that the QuickTime player in the Second Life client could also play SMIL presentations. For those that don't know, <a href="http://www.w3.org/TR/REC-smil/">SMIL</a> is an XML-based media description format, created by Real Networks back when Philip Rosedale was the Chief Technology Officer there before he founded Linden Labs and became Philip Linden. SMIL was standardized by the W3C and <a href="http://developer.apple.com/documentation/QuickTime/Conceptual/QTScripting_SMIL/QTScripting_SMIL_AIntroduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP40001527-CH202-DontLinkElementID_1">Apple implemented SMIL 1.0</a> as a supported media type in QuickTime 4.1 (we're at version 7.1 of QuickTime now, although sadly it still only supports SMIL 1.0 and not the later versions of SMIL which provide nice features like transitions and animation).<br /><br />Second Life has the ability to play QuickTime movies overlayed on primitive objects. As a consequence, you can play streaming videos on in-world television sets and movie screens. But, since QuickTime can also play SMIL-based presentations, this opens some interesting possibilities for playing other media types as well.<br /><br />One of the more interesting usages that occurred to us was to be able to pull images from Flickr and use them in SL. To that end, we used <a href="http://www.flickr.com/services/api/">Flickr's robust web services API</a> to create a nice little "Web 2.0" web application called PhotoMovr to let you do this easily. You can check it out at <a href="http://www.photomovr.com">http://www.photomovr.com</a>. It's just a beta and not hosted on a particularly fast server, so if it gets a lot of usage it might slow down, but it does work quite nicely at the moment. If you have a Flickr account and you have photos organized into sets, it's very easy to use. Feel free to give it a spin.<br /><br />Here are some snapshots of Flickr photos being viewed in-world using the QuickTime movies generated by PhotoMovr:<br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/469114959/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/178/469114959_9bef2e7a83_m.jpg" width="240" height="180" alt="photomovr_016" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/469101948/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/231/469101948_c65a191fe4_m.jpg" width="240" height="180" alt="photomovr_010" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/469101844/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/187/469101844_cfb27db318_m.jpg" width="240" height="180" alt="photomovr_008" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/469107577/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/217/469107577_56a9d020a0_m.jpg" width="240" height="180" alt="photomovr_002" /></a><br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/469094728/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/208/469094728_f9badaa86a_m.jpg" width="240" height="180" alt="photomovr_001" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-6706203555321280427?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com3tag:blogger.com,1999:blog-3956436520160325235.post-32775007753402462582007-04-07T14:13:00.001-07:002007-04-07T14:18:14.132-07:00Creating parcels<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/emma_nowhere/449843795/" title="photo sharing"><img src="http://farm1.static.flickr.com/190/449843795_6262a18028_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/emma_nowhere/449843795/">Nowhere HQ Land Planning 1</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/emma_nowhere/">Emma Nowhere</a>. </span></div>Most rental sims try to divide up the land into as many rectangular parcels as possible. Nowhere is meant to appeal to people who appreciate the aesthetics of the landscape and want to live in a place that appears to be the result of natural geological processes. This means that parcels are going to be somewhat harder to draw out than in most of the rental flatlands. Here, you can see me reviewing the parcel boundaries which are overlayed on a map of the region that was retrieved using the undocumented SL Map API.<br clear="all" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-3277500775340246258?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com0tag:blogger.com,1999:blog-3956436520160325235.post-4398792839383325502007-04-07T14:07:00.001-07:002007-04-07T14:07:20.410-07:00How to plan a sim<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/emma_nowhere/449837942/" title="photo sharing"><img src="http://farm1.static.flickr.com/219/449837942_cd1f2a268b_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/emma_nowhere/449837942/">Nowhere HQ Land Planning 6</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/emma_nowhere/">Emma Nowhere</a>. </span></div>I haven't posted recently, so I thought I'd share a couple of snapshots of planning out a sim landscape. Here you can see the original landscape of Nowhere and below it the updated version. The images were created using Backhoe and Screenshot Plus on a MacBook Pro and then using Photoshop to crop and save as TGA files to upload into Second Life.<br clear="all" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-439879283938332550?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com2tag:blogger.com,1999:blog-3956436520160325235.post-54543073950051860682007-03-15T12:08:00.000-07:002007-03-20T21:00:06.561-07:00Second Life Terraforming ToolsWhen I first terraformed the Nowhere sim, I used Photoshop to finesse some maps of the island from Lost into a terrain file compatible with Second Life. In the process, I discovered two things. The first is that the Lost island is much too big to properly fit inside in a single SL region, and second, that editing terrain files in Photoshop is a bit of a hassle. As part of my efforts, I used a very nice tool called Backhoe to visualize the terrain before uploading it into Second Life. Here's a screen shot of the island in Backhoe:<br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/422485782/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/153/422485782_c7bc179633_m.jpg" width="240" height="240" alt="Nowhere Isle v1 - South" /></a><br /><br />When I decided to re-landscape the island to make it more amenable for residential rental, I took the opportunity to revisit the process of terrain file editing and take a second look at Backhoe as well as some of the other tools.<br /><br />Just to recap for those who aren't familiar with terrain files in Second Life, the landscape of a SL sim region can be downloaded or uploaded as something called a heightmap. The heightmap is an array (think spreadsheet) of 256 rows by 256 columns, each cell of which can contain a value between 0 and 255, where 0 is the lowest point and 255 the highest. For the purpose of editing this file, it's typically imported and exported from Photoshop as a "raw" file. Photoshop treats this as a 256 x 256 pixel greyscale image, where a black pixel represents a land height of 0 and a white pixel represents a height of 255. There is another part of the file where a scaling factor is stored to translate the height value into meters.<br /><br />Typically, people use a combination of in-world editing tools and Photoshop to create new island terrains. Photoshop makes it easy to create mountains and lakes very quickly, and the different blur filters can produce very nice smooth terrains. However, it still is often necessary to use the in-world tools to tweak the landscape and also because you can get some unattractive results, particularly around coastlines, when you edit the heightmap file in Photoshop because the terrain LOD (level of detail) algorithm of the SL client doesn't like some of the slopes of the land created in PS .<br /><br />By Googling for "heightmap editor" and "terrain editing" I was able to find a number of other interesting tools out there that look very promising for editing heightmaps usable with Second Life. I've detailed my preliminary findings below.<br /><br />Keep in mind, before you expect to have productive results with any editing of terrain files, you really need to fully understand the KB article:<br /><a href="http://secondlife.com/knowledgebase/article.php?id=288">http://secondlife.com/knowledgebase/article.php?id=288</a><br />(by the way, the description of how parcels are encoded does *not* work)<br /><br /><span style="font-weight: bold;">Second Life Specific</span><br /><br />These will directly open an unmodified SL RAW terrain file:<br /><br />Backhoe<br /><a href="http://www.notabene-sl.com/Backhoe/">http://www.notabene-sl.com/Backhoe/</a><br />Mac only, open source, beautiful 3D visualizing, editing tools are ok but somewhat coarse grained, I tend to use this side by side with Photoshop to see what changes I make in 2d effect the 3d view.<br /><br />Here's a screenshot of my redesign for Nowhere island viewed in Backhoe:<br /><br /><a href="http://www.flickr.com/photos/emma_nowhere/422513581/" title="Photo Sharing"><img src="http://farm1.static.flickr.com/160/422513581_688b3be9df_m.jpg" width="240" height="142" alt="Nowhere Isle v2 in Backhoe" /></a><br /><br />Bailiwick<br /><a href="http://www.spinmass.com/bailiwick/">http://www.spinmass.com/bailiwick/</a><br />Windows only, nice for visualizing the coastlines, good for getting the terrain layer in and out of the raw file for editing with something other than Photoshop CS, for example Paintshop Pro, Photoshop Elements<br /><br /><span style="font-weight: bold;">Second Life Compatible </span><br /><br />These should work with an SL RAW file, although some finessing of the file will likely be required - specifically, the SL raw file contains 13 256x256 8-bit interleaved channels, only the first of which contains the terrain heightmap. As a consequence, if the editor wasn't designed with SL files in mind, it sees the extra data and chokes. The workaround is to open the SL raw file in PS, copy the heightmap channel into a new 256x256 8-bit greyscale image and save that as a new single channel raw file. Once you've completed your editing of the single channel raw file, you can use PS to copy it back into the SL terrain file. Alternately, you can use Backhoe or Baliwick to import and export the terrain channel, and I'm working on a simple Java app for doing this as well.<br /><br />Height Map Editor<br /><a href="http://sourceforge.net/projects/hme">http://sourceforge.net/projects/hme</a><br />Windows and Linux, although open source, so maybe a Mac version could be compiled<br /><br />Freeworld3d<br /><a href="http://www.freeworld3d.org/">http://www.freeworld3d.org/</a><br />Windows only, I had high hopes for this one, but couldn't get it to run under Vista. Should work with SL files and I've seen a couple of positive comments about it on various game developer forums.<br /><br />L3DT<br /><a href="http://www.bundysoft.com/L3DT/">http://www.bundysoft.com/L3DT/</a><br />Windows and Linux, looks very powerful, didn't spend too much time with it<br /><br />Terragen<br /><a href="http://www.planetside.co.uk/terragen/">http://www.planetside.co.uk/terragen/</a><br />Windows and Mac, this one wants a 257x257 heightmap file, so I had to extract the heightmap channel in PS, resize the canvas to 257x257, and resave as a new RAW file to get it to open. Looks like it has potential.<br /><br />Leveller<br /><a href="http://www.daylongraphics.com/produ...eller/index.htm">http://www.daylongraphics.com/produ...eller/index.htm</a><br />Windows only, looks interesting, haven't really tried it yet<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3956436520160325235-5454307395005186068?l=emmanowhere.blogspot.com'/></div>Emmahttp://www.blogger.com/profile/09405566924737404924noreply@blogger.com3