libprimrender Preview

December 19th, 2007

libprimrender
sceneviewer using the new libprimrender engine

Just finished committing an early preview of libprimrender to the libsecondlife source tree. libprimrender takes libsecondlife primitive objects and creates 3D mesh data. The library only uses basic math and libsecondlife data types, so there is no platform or rendering library dependency. The code is released as a GPL v2 library written in C#, based on the official Second Life viewer source code (llvolume.cpp). The screenshot above shows sceneviewer (an old Second Life client written in C# using libsecondlife and XNA) using libprimrender to draw a twisted and sheared cube. The noise in the background is wireframe water left over from the original codebase.

The source code can be browsed at:
http://openmetaverse.org/svn/index.cgi/libsl/libprimrender/

Or checked out through SVN at:
svn://openmetaverse.org/libsl/libprimrender/

This is an early preview, it does not calculate tangents/normals/binormals and there are likely still some bugs. If you spot any please use the libsecondlife Issue Tracker or post a comment here. slotmachine online spielenonline casino slotonline casino texasunbegrenztes freispielgolden palace casino onlineroulette onlinespielonline casino ratgeberjack black downloadcasino pc gamesspiel erlebnisonline casino einzahlungbaccarat spielejack black spieleinternet kasinoslots machineblackjack regelneve online rig slotsroulette im internetonline casino gelddas beste casino onlinevideo poker gamekostenlos roulette spielenroulette regelnroulette im internet,internet casino roulette,roulette im internet spielenstrip poker full game,strip poker online game,strip poker gamespielregel texas holdemomaha poker spielregelnpoker turniereempirepoker bonusbesten online pokeronline poker räumepoker spielen ohne downloadpoker zum online spielenparty poker bonus codepoker strategieall in holdem pokertexas holdem pockertexas holdem poker turnieronline poker startguthabenregeln für poker texasstrip poker online gameunbegrenztes frei spielkostenlose poker spielenonline poker bonus codesinternet poker spieldraw poker onlinetexas holdem strategienpoker gratis online spielengratis online poker ohne anmeldungbeste online poker

Opening Files and Folders With the Enter Key in OSX Finder

July 24th, 2007

Just got my first Apple computer, a Macbook Pro a few days ago. One of the few things that has been annoying me are the keyboard shortcuts in Finder for navigating around. In Firefox I press Apple-Left and Apple-Right to go back in forward, so to make Finder act more like my browser I went to System Preferences -> Keyboard & Mouse -> Keyboard Shortcuts and added two new ones for Finder.app, mapping “Back” and “Forward” to the shortcuts I wanted. Almost there, but pressing Enter on a file or folder and having it want to rename the item instead of open it really annoyed me. I won’t get in to a rant on the contextual meaning of the Enter key in a file navigation program, the fact is that I often open files and folders and rename them only a fraction of the time so I want to press a single key to open things. My friend who is an engineer at Apple gave me these instructions:

  • Create a shortcut for “Open” just like “Back” and “Forward”, and map to something not in use like Ctrl+X
  • Run “open ~/Library/Preferences/com.apple.finder.plist” in Terminal
  • Find the NSUserKeyEquivalents branch, and then find the entry for Open
  • Open TextEdit and press Enter to create a newline, and copy the newline by dragging from the first line to the second line and copying
  • Back in the shortcut for Open, erase the Ctrl+X binding and paste in the newline character
  • Close and save. To make the changes take effect I had to kill Finder at the Terminal, you could also reboot OSX to make the new bindings take effect

Virtual Appraisals: A Hedonic Pricing Model of Property in Second Life

April 26th, 2007

Since January I’ve been working on a final research paper for my undergraduate degree in economics, and it is available to download now. The paper explores property valuation in virtual worlds, and specifically focuses on land prices in Second Life. To collect the data I wrote a libsecondlife bot that periodically logs in, takes a sampling of the land for sale, and compares it against the previous snapshots to detect ownership changes and check if a sale took place. A hedonic regression is constructed to try and make sense of land valuation and a few interesting things were discovered, but nothing an experienced realtor in Second Life wouldn’t already have discovered through experience. In my opinion the most important thing discovered through the research is that the limitations of searching for land in Second life introduced a selectivity bias in the collected data, and does not deliver complete information on the market to land buyers. Maybe one of the third party new search technologies can address these limitations.

Abstract

This paper explores the fast growing market of property in online virtual worlds by researching land prices in the online world of Second Life. As computing power and access to broadband Internet increases, immersive three dimensional worlds are increasing in popularity. In Second Life, a currency system with a floating exchange rate to the US dollar is in place and user-created synthetic goods are bought and sold. The only constrained resource is virtual real estate, and the more you own the larger and more complex structures you can build. A strong correlation between property size and price can be clearly established, but is this the only determinant of cost? A closer look at the parcels being purchased shows that size may not be the only consideration. Some residents may prefer a tropical beachfront location over snowy cliffs, or a more heavily trafficked area as a location for a new business. A background on the methods used to collect research data from Second Life is presented, and a basic hedonic pricing model for property in Second Life is constructed.

Virtual Appraisals: A Hedonic Pricing Model of Property in Second Life
Research paper + Excel data, source code, and MySQL schema

Long Range in Second Life, Or Cleverly Disguised Robots

December 25th, 2006

Last week I found out about the very cool band Long Range (MySpace), and also got the chance to help put on their concert in Second Life. Second Life has a problem with hosting large events as the maximum capacity of people on a private island is 100 people, but performance starts to degrade after about 50-60 people in the same area. The solution that was thought up was to “shard” the concert, with 12 identical islands running the same concert and load balancing people between them. The island setup was cloned, some very fancy LSL scripting kept the show and the lighting in sync, but there was one remaining issue. With five band members and 12 islands how do we get 60 band members playing their instruments at the same time? The answer was to use libsecondlife to log in 60 “actor” bots that would appear, set their appearance, and look for a specially marked object that was their “seat”. Once the bot was attached to this seat (which were really just small out of the way objects) the seat would trigger an animation for that actor to play the appropriate instrument. Using some hidden throttling techniques in Second Life I managed to get all 60 bots running from a single server, which might be a new record for stable connections with libsecondlife. A good show of music and technology, check out Long Range’s music and maybe we can talk them in to another show for Second Life!

And Merry Christmas to everyone, time for me to start wrapping gifts ;-).

sceneviewer Video

October 30th, 2006

Here’s a video of the 3d Second Life client sceneviewer I’ve been working on. At the end of it you can see a moving object, the program actually shows everything in real-time including creating, moving, resizing/rotating, and deleting objects. Support for spheres, rings, and torii is next, along with support for clicking on prims and then a full SL-style camera. Hopefully by then someone makes some progress on a decoder for LayerData packets so we have terrain, and our cloud renderer is ready to go. Texture support is just around the corner as well, we can already download and decode textures from Second Life but some more robust (and asynchronous) downloading methods are needed, along with texture support in the prim library. And maybe by that time either I’ll have a better grasp on shaders, or we’ll have another person helping with the project. For now I’ll have to take a break on this as school and some contract software design will be filling up my schedule.

For the readers outside of the libsecondlife circle, sceneviewer is a C# program using Microsoft’s new XNA library. That means it’s a Windows-only program for now, but hopefully someday we could either abstract out the 3D code to target both XNA and Tao.OpenGL, or maybe Mono.Xna will mature. We are always looking for new coders for libsecondlife, so if you know C# and want to help with sceneviewer or libsecondlife drop in #libsl on EFNet.

Importing Second Life Prims from Google SketchUp

September 29th, 2006

Shortly after I wrote a somewhat harsh post on the libsecondlife-dev mailing list detailing out why it wouldn’t be feasible to export Google SketchUp data in to prim data ready for Second Life import, Andrew Reynolds has written a Ruby plug-in for SketchUp that does exactly that. Well technically my original arguments still hold as it simplifies all surfaces in to a rectangular face, but the fact that any data at all was pulled out of SketchUp, and that it looks like the original data if you are using the basic tools is a big leap forward. Maybe we can convince him to use the .prims XML format that libsecondlife has been cooking up.

Exporting Prim Data From Second Life

September 12th, 2006

Every Second Life player that has aspired to build their own grand project at some point has yearned for more powerful tools. Second Life has made a building and texturing toolset that is incredibly easy for the average user with no familiarity with 3D modeling, but lacking in ability compared to full-scale 3D software. There are also times when you want to build things without being connected to the grid, and import them later. To fill this niche, Jeffrey Gomez has created an excellent plugin for Blender called prim.blender. The plugin is open source Python code, released under the GPL license and reads and writes a simple xml format that stores Second Life “prim” (primitive, a building block object) information. This is a great piece of software that allowed the creation of the wonderful libsecondlife headquarters shown below.

libsecondlife Headquarters

To complete the circle, I’ve been working on an object exporter named primexport to get prim data out of Second Life and in to Blender. This will eventually allow you to build structures in-world, export them and do the texture mapping, then import the finished product to Second Life. For now it’s still in very early beta, once a couple more issues are worked out a public beta will be available from the libsecondlife website. Here’s an example of a motorcycle created in Second Life and exported in to Blender. This is different from just grabbing the raw OpenGL data because it’s stored in an xml format that describes the prim information, so it can be edited and imported back in to Second Life with an existing import script.


primexport example

If you look closely you’ll see a cube on the middle of the seat, which is the invisible prim that avatars sit on when they ride the bike. Transparency isn’t handled so it’s fully visible in prim.blender, and you also might notice a part of the seat is missing, hence why the software is early beta and still being worked on heavily. The rough edges should be smoothed over soon enough, and this could be a fundamental change in how Second Life information is treated. Traditionally, data in the SL metaverse is thought of as being locked up in a black box, and bought and sold between agents. By putting prim information in to an xml format, it can be transferred between grids, stored in versioning systems, downloaded from websites or peer-to-peer software, and integrated in to the rest of the web in general. It also brings the intellectual property of builders to about the same level of security that webpages, where anyone is free to view and copy the html source code. Should security measures be built in to primexport to try and hold on to the SL permissions system? Should such artificial restrictions be thrown to the wind so the virtual wild west can be embraced? What implications will this have for the Second Life building process, the economy, and intellectual property in the metaverse?

Retrieving Restricted Mime-Types and Content Through the Barracuda Web Filter

August 28th, 2006

The Barracuda Web Filter is used by many college campuses and businesses to protect users from spyware, viruses, objectionable content and unauthorized software. There are several port/ip blocking options and packet filters specially tailored for popular applications, along with an extensive web filter. The web filter preys upon unencrypted HTTP headers for banned URLs, mime-types, and file extensions. In the case of the Washington State University setup the application/x-bittorrent mime-type is blocked, which as I mentioned in a previous post blocks access to lots of Internet content such as NASA torrent files, art, software and operating system such as Linux, movies and television, and more available from various legal torrent trackers. Strict policies can also interfere with game update clients such as the World of Warcraft updater, although Student Computing Services tells me an exception has been made so the WoW updater functions. This doesn’t address other game updaters such as the installer/updater found in Gunz.

The packet filtering options in the Barracuda Web Filter are ineffective against encrypted Bittorrent traffic, so forcing encryption on all inbound and outbound connections with a client such as uTorrent or Azureus will ensure the actual download completes safely. Now the only problem is getting the actual .torrent file off the net. If you can get the file through an alternative means such as IRC, FTP, or IM/e-mail from a friend that will work fine, but often times this isn’t feasible. There are many different ways of grabbing the files off the web with various requirements and ease of use for each option. The first option works if you have access to a remote server running SSH, VNC or an equivalent and a web or file server. SSH in to the server and wget the torrent file, making it accessible to download from a web interface that doesn’t send the application/x-bittorrent mime type, or an FTP or alternative server. Requires technical knowledge, access to a remote server, and is very tedious and therefore the least favorable option. The next option requires a remote web server as well, and involves a simple PHP script that passes a remote file through and rewrites the mime-type to avoid the filter.

header("Content-type: application/x-notbittorrent");
readfile( $_GET['url'] );
?>

If you uploaded that script as index.php to http://www.a.com/torrents/ you could fetch a remote torrent file with http://www.a.com/torrents/?url=http://www.b.com/ubuntu.torrent (or whatever torrent file you were seeking). Aside from requiring a server with PHP and url readfile support, the resulting download will have a random name that needs to be renamed to a .torrent file to be recognized by some Bittorrent clients. This also requires technical knowledge and is not the most favorable option by far.

The final option presented here (but not the final option by a long shot) is to use an anonymizing network to fetch the torrent files. The Tor network is a collection of servers scattered across the globe that route traffic over an encrypted, anonymous mesh network to protect Internet privacy. To get up and running quickly you will need Tor, Privoxy (a proxy to connect applications to the Tor network), and the Tor Button for Firefox (a convenience shortcut). Linux and OSX users can grab Tor and Privoxy easily enough, for Windows users there is a Tor+Privocy+Vidalia (a frontend) bundle available at http://tor.eff.org/download.html.en. Install, right-click the Tor icon in the system tray and click Start, and finally download the Tor Button for Firefox which adds a small button in the bottom-right corner of Firefox to quickly enable and disable routing web traffic over Tor. Make sure to enable it before downloading a torrent or visiting any objectionable content, and disable it to increase speed for work or research related browsing. This is considered the best option since it doesn’t require access to an external server, can be installed and running in less than 10 minutes with a moderate level of technical knowledge, and is a generic solution to protect all web traffic. Other applications can even be configured to use Tor, although it’s not recommended to run P2P or bandwidth intensive applications over it. The bandwidth for the network is donated by volunteers and as bandwidth caps are hit on the servers they will temporarily shut down, slowing down the network in general. For example my server has a 700MB daily quota for the Tor service, once that limit is hit it will shut down and wake up the next day. If you make use of the Tor software and find it useful, consider becoming a member of the EFF or making a donation to the Tor project.

Bypassing Cisco Clean Access

August 16th, 2006

It was brought to my attention that the information in this post was putting the Washington State University Information Technology department at an increased risk for malware and viruses. It was my original hope that users tech savvy enough to install this fix would not be contributing to network stability issues, and my only goal was to allow residents Internet access. The defect has already been discovered by another independent team and registered in the NIST National Vulnerability Database, and Cisco Systems has clarified that the design flaw is not a security exploit because it does not bypass authentication in any way.

Patterns in the LindeX

August 7th, 2006

LindeX Regression Analysis

The six top sell offers on the LindeX market right now. A linear regression shows a T-value of -18.889, well outside the significance test at 99.9%. An R-squared value of 98.9%; I wonder if this is temporary or a reoccurring pattern of sell volume in the market? Could it be Linden Labs using the new sell option in the terms of service? I’ll have to keep my eye open for this more often.