I'm behind on my write-ups of great WPF applications, and they're stacking up. Sorry!
The next application I want to feature is one that has real purpose, in that it's being used by medical researchers at the Scripps Institute who are working on potential treatments for cancer. The Collaborative Molecular Environment application is built entirely in WPF by a partner called Interknowlogy, and it provides a way for scientists to analyze the molecular structure of cancer cells and the SARS virus. More important than just analysis though, a clinical researcher can annotate any part of the structure and collaborate with other team members on their findings, since all the annotations are stored on a Sharepoint server that can be accessed over the Internet by any researcher.
Now I'll confess, I know very little at all about this industry - I was never very good at biology or chemistry, and so all the terminology of het atoms, backbones and proteins is as lost on me as observable collections and custom data templates are a mystery to my mother. But even without any medical understanding, it's pretty obvious how WPF allows rich data visualization of these things and combined with a backend collaborative server, there are capabilities here that are applicable in many other industries.
The client interface for this application is written entirely using C# and WPF; it presents data in a Viewport3D using some pretty mind-bending mathematics. The use of Sharepoint as a backend is a nice touch, since it provides great flexibility for storing unstructured data and giving the researchers the power to add additional fields or data without requiring OLTP database expertise.
Although the full application isn't downloadable, Interknowlogy created a community version for the Windows Vista launch that provides instant gratification for those of us who are itching to just play with new WPF applications. You can download it from the Interknowlogy site - it includes a few molecular structures that you can open and spin round using the mouse - use the Shift and Ctrl keys as modifiers to enable additional functionality, and right-click on the canvas to switch between view types.
If that wasn't impressive enough, the Interknowlogy guys figured out that most of what they'd built was applicable to many other 3D modeling environments, so over just one weekend they stripped out the biomedical parts and wrapped a number of unmanaged APIs supplied by Autodesk so that you can use the same tools to manipulate and view an AutoCAD file. That application is also available to download from their site, and offers amazingly high performance given that WPF doesn't aspire in any way to be a platform for high-end 3D CAD/CAM work. These are not simple models by any stretch of the imagination - the models are several megabytes in size and contain many individual elements. I was truly surprised that the performance is as good as it is - on my desktop, I'm getting 20-30fps on even the most complex sample drawings.
There's tons more information on these applications on the Interknowlogy site - I'd encourage you to check it out; I know they'd appreciate me telling you that they're available for consulting and custom development work, if you want the help of a solutions integrator with WPF experience and a solid track record of integration with other parts of the Microsoft platform.
I have to tell you that it is so satisfying to see this application get all this visibility in the world. This is the most exciting project we have ever done at InterKnowlogy - not because it's so technically cool, but, because of how it is helping The Scripps Research Institute fight the war on cancer. Clearly we are not the heroes here. The real hero is Dr. Peter Kuhn from the Scripps Research Institute and his wonderful group of talented and passionate men and women who are making a positive effect on war that has touched us all and will continue to.
Please can you offer some guidance. Have been looking at the various WPF apps and XBAPS listed on your blog. Now I have to say, with a machine running an AMD Athlon XP2000 CPU at 1.68GHz (I know, this is hardly ideal, but I expect a lot of people in the world have less!) The thing is, up until today I ran on only half a gig of RAM, so today, having added an extra 2x1Gb sticks, was sure to see an improvement. However, these apps still run like a dog and this is the worst experience I've had since upgrading from a x286 to a x386 when I got a copy of CorelDraw! Would hardware acceleration/new graphics card help or is the PC a throw away job? Also, I haven't studied the namespaces for WPF - would the experience in WPF work better if the calls to the libraries were limited to 2D calls? I know this is no good for many things listed on this site but at least I could begin developing WPF apps with some confidence/know the limitations for end users. I can't understand how compiled WPF could be this slow. XPS is much better but still not great and not seemingly as fast to render as PDF although matching samples are few and far between (e.g. the AJAX cheat sheets which are about x10 larger and not as good in XPS). Would be grateful for any help and thank you in advance.
Rod, it's hard to know without more information on your machine. WPF offloads a lot of graphical processing onto the GPU, but you need a video card that implements DirectX 9 in hardware for that to happen. If you don't have that, then it renders everything using the CPU - which is bad news if you've got a weak GPU _and_ a very old CPU. How old is the machine?
Tim, many thanks indeed for your response. The magic phrase was 'DirectX9'. I downloaded 9c then a new video driver for the GPU which is a 5 year old(!) GeForce3 Ti200, and voila, I am 'turning the pages' at full speed whereas before the whole thing was a horrible mess. Very, very impressive. I was lucky with this card as it is 128Mb with pixel shading (of sorts), not sure about the WDDM driver side. I have also found the Vista upgrade advisor a very useful piece of kit and it tells me the card will not support Aero, so new card on the way. The moral of the tale for me is to check my video specs, but I think it's good to be aware of a potential 'digital divide' and there might be areas where creeping forward with 2D WPF development is the safer bet because of end user hardware (assuming 2D calls are indeed less demanding on the GPU). So, a big thank you maestro!
I can tell you this, Rod, and you will never hear this from a Microsoft employee (although i doubt Tim minds me saying it here)...and that is that when we did our scalability and stress testing we were shocked at how better performing WPF is on Vista than it is on XP. there was nothing really scientific in our testing and our sample was hadly adequate (our one 3d application and just a handful of machines). but, it was and still is clearly noticible by all of us. i don't understand enough of the internals to justify speculatiing on why, so it's truly a guess when i say that i think it's becuase the wpf plumbing it inherent in the vista os and not a bolted on install to xp. i'd love to here a real expert's view on this, though.
Rod, you make a good point there. Application authors can test the capability of a target machine by querying the System.Windows.Media.RenderCapability.Tier property. If its value is 0x200, then you have full Tier 2 hardware acceleration; if 0x100 or 0 then the machine is running at Tier 1 or Tier 0 respectively. Tier 0 is entirely software rendered, and it wouldn't surprise me if your machine was operating previously at that level; I'm guessing that you now have Tier 2 capability.
Glad you're up and running!
Hi, I'm the developer that wrote all of the molecular rendering code for this app. I can honestly say that this was the most fun I've ever had writing a business application. Besides an intro graphics course in college and a little playing around in my free time, I really didn't have any 3D experience. I found WPF to be intuitive and easy to understand. It's a great way to get introduced to graphics programming since the platform abstracts away a lot of the complicated low-level stuff like memory management and coordinate space transformations.
To the 2 Tims, thank you for your help and comments, it is most appreciated. I will make sure a tier check goes in - bit like browser detection. CHEERS!
this is indeed an awesome application. I just used the WPF app in a presentation and the richness of the graphics will all the features kevin and the IK folks programmed into it worked out great. It really gives a contextual handle on the huge volumes of data that we are collecting in the life sciences. This does truly enable collaboration at a much grander scale than previously possible. again, thanks to the IK teams and MSFT for enabling this.
the links to interknowlogy do not seem to be working. it could be a temporary thing, though
yea, we had a little issue and it took us software folks a bit to convince our network folks that we had a problem - sound familiar? :)
As it turns out it was one of the isa servers in the farm. if you hit that server in the farm you'd see a problem. it's fixed now. sorry about that.
Acropolis is CTP! The WindowsClient.net site says: Acropolis builds on the rich capabilities of Microsoft