The story of Xenki, an in your browser viewer for OpenSim and Second Life (you can download the source on Forge.OpenSimulator), began with a stream of tweets from Dr_Manhattan (Kyle Gomboy, avatar G2 Proto) – power house of the Microsoft Developer Community in OpenSim (see Project Manhattan), and Second Life (see here) – announcing the merging of DirectX and WPF in the .NET 3.51 SP1 release.
I was not the only one to notice these tweets, and the links were soon in the OpenSim IRC channels, and my friend Peter Quirk, EMC, quickly circulated them in the realXtend developers’ Google discussion group. And most importantly, perhaps, almost immediately the phenom developer of OpenSim, Adam Frisby, started coding up an in your browser viewer for OpenSim and Second Life, called Xenki (see Adam’s blog for a series of posts) that show just how fast Xenki is progressing. The picture above is of Wright’s Plaza, OSGrid. As I have been there many times, I can testify it is beginning to become recognizable as Wright’s Plaza in Xenki.
Now Zain Naboulsi, Microsoft’s Virtual Worlds Evangelist, has introduced Adam to David and Gerhard, the Project Manager and Lead Programmer respectively on the WPF Graphics Team, who Adam writes: “have graciously offered me their time to help answer some performance related questions with regards to the Xenki viewer I have been developing.”
Here are some quotes from Dr Manhattan’s first tweets:
“Why is SP1 for Visual Studio 2008 and .NET 3.5 a potential virtual
world shocker? WPF + Direct 3D love! Can you say powerhouse 3D
“You will be able to treat Direct3D content just like an image within
“A little bit of grid math translation from OpenSim, some MSSQL 2008
database coding, mix in a little .NET 3.5SP1 WPF goodness=Virtual
“.NET 3.5 SP1 in WPF=new shader effects architecture/API that allows
visual effects to be created & applied to any control/element in WPF.
Read about SP1 here.”
Avi Bar-Zeev, Reality Prime, comments on Xenki
Avi Bar-Zeev was one of the first people to pick up on what Adam is doing with his in your browser viewer – see this post (also see Avi’s blog Reality Prime for a lot of important posts for virtual worlds). Avi is a key virtual world thinker who has put time and energy “into trying to figure out where the real value is with 3D.” He was co-founder of Keyhole, maker of Earthviewer (which later became Google Earth ). Also, Avi developed technologies for Second Life, including the procedural 3D object rendering code.” In this post, “Volumes of Reading,” Avi begins with pointing out some of the confusions about browser based virtual worlds in this TechCrunch post, notably an elision of the difference between “in-browser-window” and truly “hosted in a browser.” Anyway Avi goes on to point out some of the weaknesses of the current crop of browser based worlds that:
still suffer from other in-browser-window issues, like what happens if I hit the back button or refresh the page, or simply scroll the window down so I don’t see my nice virtual world anymore. Or worse yet, what happens to my mouse wheel, for which, for example, the GE plugin steals control. Philip is right that it’s simply not as immersive as a full-screen stand-alone client, and web integration of 3D worlds is a much more complex issue than just placing windows on pages.
Avi reports he followed an interesting chain of progression to Adam Frisby’s blog about his work on Xenki. Now here I take some credit for being an actor in my own story as it was my comment on the Tech Crunch post that led Avi to Adam’s work on Xenki!
I was very excited when I read Avi’s post because I realized one of the best minds in Virtual Worlds was looking at Xenki with interest! So I began to formulate some questions for Avi. See my next post for some fascinating answers to a wide range of questions on the future of browser based 3D, OpenSim and the future of virtual worlds.
Interview with Adam Frisby, on Xenki
Adam Frisby: I’d like to set it up as a viable alternative viewer project – and my goal is to get a revised v 0.1.0 out by the end of the week. Functionally it will be about the same as where I am now (perhaps with some minor additional features), but the interior will be a lot cleaner leaving room for expansion down the track.
Tish Shute: What is the difference between what you have done and what Darren Guard did in some recent late night hacking? (see screen shot below from the post of Stefan Andersson, Tribal Media AB – “Using XABP to embed the Second Life Browser in a Web Page”).
Adam Frisby: He took the same base API that I’m using, but used it to embed the SL Client’s OpenGL rendering surface on it. It’s clever – but I don’t think it’s more than a clever trick because the SL viewer still has all the warts we face. Which means it’s not fantastic in the longer term.
Tish Shute: Have you decided on what rendering engine and physics you will use?
Adam Frisby: Well, physics remains serverside, but at this stage rendering will have to be done mostly in-house I’m thinking, although Francis Chung has expressed interest in helping and has made the suggestion that we look seriously at the Irrlicht engine.
Tish Shute: Is Francis Chung part of the lrrlicht engine team? And when you say rendering in house do you mean little dynamic rendering?
Adam Frisby: No, he’s a SL developer – worked on a lot of high profile projects.
Tish Shute: How does the Xenki viewer project relate to the Open Viewer project?
Adam Frisby: I’ve still got people working for me doing work on OpenViewer and that’s still making it’s own way – but I think there’s two different niches here. OpenViewer is general purpose alternate viewer – much like the mainline SL viewer. Xenki I’m aiming at something possibly a bit more lightweight and embeddable.
Tish Shute: How does using XAPB compare to using Active X?
Adam Frisby: Well, first – it runs on Firefox without anything more than .NET installed. Second – it’s sandboxed. The XBAP has a very tight cage – whereas ActiveX is unconstrained and has fully access to your system. ActiveX is pretty much universally decried these days as a really bad idea.
XBAP addresses a lot of those concerns by at least paying some attention to security.
Tish Shute: So what are the possibilities do you think for a browser hosted viewer for OpenSim/SL?
Adam Frisby: I think it makes some sense to go after the same market as Lively – to grab the instant gratification instant presence that Lively gets right. There’s no reason it should be mutually exclusive. A point I think Philip missed in his recent interview on the subject.
Tish Shute: XBAP is what enabled your sudden progress on Xenki. Can you say, in lay persons terms, what were the key factors that came together to allow you to make Xenki take off at lightening speed?
Adam Frisby: Sure – Programming libraries are basically bits of prebuilt code you can use as shortcuts. For example, Instead of having to program common infrastructure – such as communicating with your 3D hardware to display a simple scene – a library called WPF allows you to do all of that with just a handful of lines of code. The more detailed and well written the library, the faster you can develop your applications. The downside can be that sometimes they also box you into a specific way of doing things.
In this case, the WPF API (which XBAP employs) is very rich in terms of 3D functionality and allows us to create complex scenes fairly simply. It does have some drawbacks (which I wrote about), but it does lend itself to very rapid development.
Adam Frisby: Lively uses a standard 3D engine wrapped up to render on an ActiveX control. It’s certainly a lot of work – but for what I’m doing, we don’t need to start with that level of complexity on the table.
For one, it would slow us down tremendously when it comes to simple tasks such as debugging – and mandate a large team in doing so.
Tish Shute: So do you think you will be able to get some of the same distributed functionality that is the most appealing bit about Lively for me at least!
Adam Frisby: Well, distributed infrastructure is a matter for the backend servers I think. So a modular OpenSim enables this potentially hehe!
Yeah, that’s one of the goals OpenSim is aiming for.
Tish Shute: Yes the mantra is “distributed and open will win” right!
Adam Frisby: Yep!
Here are some screen shots from Adam’s blog “of things sort of almost rendering correctly.”
and one more from Adam, “showing the detail of one of Cubey’s planes (in this case his Ornithopter – and it renders correctly!)”