Dax Pandhi's nAESTHETIC Dax Pandhi's nAESTHETIC Dax Pandhi's nAESTHETIC Subscribe to this Blog's RSS feed Subscribe to my DeviantArt RSS feed

Popular art from my DeviantArt account:


  Tuesday, January 15, 2008


Next product out the door...


Nukeation Machine Teaser by =nukeation on deviantART

 

With reuxables done, we are now gearing up to finish and launch our next product for the new world of UX. Keep watching for more info. The only hint I can give right now is "WPF, WPF, and more WPF" and "Visual Studio" and "Blend". Okay, enough. I'll shut up now. :)









  Friday, October 26, 2007


Common UX/WPF Myths

Even after reaching many mainstream projects, Windows Presentation Foundation (or WPF), is still a long way from completely succeeding Windows Forms as the main form of user interface.

Switching to a completely different method of creating applications is difficult for almost everyone. Even after these years of being available to the public, proper documentation on WPF is still hard to find. Another factor in the adoption delay (or in some cases, refusal) is that the word "UX" (User Experience) is often distorted. The real power of WPF is often buried under the false image of UX.

The following are some of the common myths and the corresponding reality about WPF and UX.

UX is just a fancy word for skinning

WinAMP was one of the earliest applications to champion skinning. Soon after many people created software that skinned your application to look more "cooler", and some that even skinned your entire OS! In many circles, skinning was not considered to be a serious thing. Of course, part of it was the whole Designer vs. Developer thing.

User Experience is much more than how your application looks! UX is just as much about how your application behaves, and how your users interact with it. UX is about lessening the amount of work the end-user has to do (including thinking) to finish a task.

Kai Krause, a pioneer of UX, described UI/UX as: "An interface is about hiding complexity from the user, It's about guiding a process, without cognitive understanding of what goes on beneath. Interface design is the art of enveloping the observer in an enticing, "try this" exploration with ever-new elements and designs as the tools to triumph in new territories."

WPF is only about making your apps look better, or WPF is only about creating UI with tags like ASP.NET

This is only partially correct. While WPF does allow you to customize application interface to the deepest levels, and allows you to create UI using markup, the entire scope of WPF is much larger. For a long time, Windows Forms (and its predecessors) were built on top of the foundation laid out in the era of Windows 1.0 and 3.1. Over the last decade, many of the most basic concepts of UI (mostly the controls) became obsolete or non-productive. Some were updated and some were transitioned out, but most of the common things remain. A good chunk of that (Button, Checkbox, Textbox, List, and so on) is still here because it remains useful.

There have always been ideas for new UI and UX. But more often than not, it has been maddeningly impossible to actually create those as the UI technology had been too strict to allow deep customization and creating them from scratch required superb knowledge of C++ (which is too expensive for most common projects). To customize something as simple as a button you had very few choices. You could build a UserControl. But those weren't always an efficient solution, and often too resource hungry. You could create from scratch or customize with inheritance (or in the case of VB6 and other such old technologies, go subclassing till your nose starts bleeding). But that was too time consuming, limiting, and expensive in every way.

This is where WPF comes in. WPF provides a markup based method of creating UI. It is time saving, flexible, and easy. It takes the best of the web and the best of the desktop and rolls it into a single package. WPF allows you to easily customize just about any control using ControlTemplates (structural customization) and Styles (cosmetic customization) that let you do almost anything to the control without messing with the inherent functionality. A hWnd-less (among other things) model lessens many of the resource requirements that previous frameworks had.

If you've ever had an experience with pre-.NET 3.0 frameworks where you thought that you wanted a very small, simple customization in an existing control but there was no simple way to do it, you should know that you will not have that experience with WPF. Practically anything is doable.

(End of Part 1. Part 2 to be posted shortly.)









  Saturday, July 21, 2007


0.9 Beta Released

WPF Transition Framework or WTF, is a simple (and FREE) set of controls (well, control for now) that help you add slick animated transitions to your WPF apps without having to resort to creating timelines or messing with code.

It's as simple as this:

<WTFX:WTF Duration="250" Transition="BlurOut" Quality="Better">
        <!-- Put your stuff here --> 
</WTFX:WTF>

This is the beta release and only 4 (of 10+) transitions are supported: BlurIn, BlurOut, FadeIn, and FadeOut. Check out our wishlist to see what we hope to add to it (including bitmap based animated effects!).

WTF let's you easily control the quality/performance ratio by using the QUALITY property. If you want to stop animations for a moment, then you just turn on HoldTransitions (bool) and it will deactivate all transitions.

Download WTF and check out the sample application!

WTF works with Microsoft Expression Blend 1.0 or later, and Visual Studio 2008 Beta 1 or later.









  Thursday, May 17, 2007


I'm loving being a Deviant

deviantArt rocks. I'm kicking myself for not using it sooner.

For my fans I present you this ever changing preview of my most popular "deviations"

And for those who'd like to follow my deviations, here's the RSS Feed.






My artwork on DeviantArt


Aesthetic by *nukeation on deviantART

I've finally found a nice corner on the Internet for my artwork (3D, 2D, traditional) and photography (my flickr is still active though). I'll be posting a lot of art and photo related stuff, as well as keeping an art blog of sorts. Prints of my works are available on deviantArt as well.









  Saturday, April 21, 2007


Custom SSS Skin Shader in Vue 6 Infinite with SkinVue

This image (see link at the end for the full image) is part of the Troll Twins series I have been creating the past few days (and will continue working on for a few more weeks). I have been posting these images to www.Cornucopia3D.com.

These images were created in e-onsoftware's Vue 6 Infinite (www.e-onsoftware.com). Here's the information on the SSS shader I used for the troll - which IMHO gives a much better result than the standard Poser imported material.

Take a look at the above image - especially the marked areas and you can see the difference in the normal and SSS skin shaders.

And in low-light/backlit scenes, SSS can be much more powerful. However you don't get native support for the "Troll" model in SkinVue. So how do you create it? Simple. First you need SkinVue 6 (http://www.skinvue.net) - an excellent skin shader utility by Dave Burdick.

Here's how I did it. I loaded Victoria 4 from Daz into Vue and swapped materials using SkinVue. I saved the Torso material provided by SkinVue to my personal folder.

I deleted the V4 model and loaded the Troll. I replaced the BODY material (default Poser material) with the V4 Torso material. I opened that material in the Material Editor.

I edited the Color Production function in the Function Editor. While the function (see below) is scary at first, it is quite simple to manipulate. I selected the bitmap source node (highlighted in the capture below) and replaced it with the Troll Body texture that comes with the Troll package.

Hit OK, save the material, and you're done. Almost. You will have to repeat this process for the Head and other materials as needed. Most of the time head and body will be more than enough. But you may wish to edit the other shaders for extra realism.

You can see the full sized render here: TrollHuntBig.jpg (445.51 KB)









  Tuesday, April 10, 2007


.NET Rocks #227 - Dax Pandhi talks WPF and Expression
Show #227 | 4/9/2007
Dax Pandhi talks WPF and Expression

Graphics guru and WPF wonk Dax Pandhi shares his thoughts on WPF, WPF/e, Expression suite in general, and Blend in particular. You'll hear the story of how Dax came to be the "Pwop graphics guy" as well as his contributions to the WPF community.

Dax PandhiDax Pandhi is the CEO of Nukeation Studios, an award winning UX studio, he is also a very recent MVP, and one of the first people to say that WPF will rock the world! He and his company have been helping clients prepare for and adopt Windows Presentation Foundation for their applications since 2005. Dax is committed to bridging the gap between developers and designers in the new world of User Experience. He spends his time helping UX-impaired developers adopt WPF, writing about WPF, and trying to get a life.

http://www.dotnetrocks.com/default.aspx?showNum=227 









  Thursday, January 25, 2007


revolUXions

This thing started catching attention before it was even announced.

It's hot and it's coming soon.

The ultimate WPF resource. The only hint I can give you so far is - it's powered by Pwop.









  Tuesday, October 31, 2006


Nukeation at IndiMIX'06 - 09 Nov @ Mumbai

If you don't already know, MIX'06 is coming to India in the form of IndiMIX'06 (http://www.indimix06.com). The keynote will be given by Steve Ballmer.

I've been given the honor of being on the same stage as Steve B. I'm going to be doing a piece on .NET Framework 3.0 - essentially about Windows Presentation Foundation and the Designer / Developer work process. I'll be co-presenting the demo with some really cool people.

IndiMIX'06 will be held at the National Center for Performing Arts (NCPA), Nariman Point, Mumbai. It's a free public event and you can register for it at the official website. If you're not able to come to Mumbai, or if the event is sold out you can watch the live webcast. Register for either at the official site.

My presentation will be from 2:00pm to 3:15pm (local time, +5:30GMT).

For more info, visit http://www.indimix06.com









  Saturday, September 23, 2006


How to use Aero Glass in your WPF applications

Aero Glass
Just about everyone making (or thinking of making) an application for Windows Vista wants to try out the cool new Aero User Experience. Software such as Windows Media Player, Windows Calendar, and the Windows Sidebar really show off the Aero glass look.

While overusing the glass bit is a certain possibility (and a probability), using it judiciously can seriously help spice up your app. A few things to keep in mind when using Aero Glass:

  • Avoid a full glass window. This creates performance as well as usability issues.
  • Use full glass windows only for non-resizable, non-maximizing windows.
  • The glass portions of the window should always allow the entire window to be dragged.
  • When designing the window, keep in mind what it will look like in a pre-Vista OS – i.e., without glass. Always have a non-Glass look ready to fall back on if Aero is disabled or if the app is run on an older Windows.

This exercise will require a good GPU (128MB AGP recommended).

Thanks to Adam Nathan for the original code!

The Code

Create a new code file and add the following code:

using System;

using System.IO;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Navigation;

using System.Windows.Interop;

using System.Runtime.InteropServices;

using System.Collections.Generic;

 

namespace AeroGlassExample

{

    public class GlassHelper

    {

        struct MARGINS

        {

            public MARGINS(Thickness t)

            {

                Left = (int)t.Left;

                Right = (int)t.Right;

                Top = (int)t.Top;

                Bottom = (int)t.Bottom;

            }

            public int Left;

            public int Right;

            public int Top;

            public int Bottom;

        }

 

        [DllImport("dwmapi.dll", PreserveSig = false)]

        static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);

 

        [DllImport("dwmapi.dll", PreserveSig = false)]

        static extern bool DwmIsCompositionEnabled();

 

 

        public static bool ExtendGlassFrame(Window window, Thickness margin)

        {

            if (!DwmIsCompositionEnabled())

                return false;

 

            IntPtr hwnd = new WindowInteropHelper(window).Handle;

            if (hwnd == IntPtr.Zero)

                throw new InvalidOperationException("The Window must be shown before extending glass.");

 

            // Set the background to transparent from both the WPF and Win32 perspectives

            SolidColorBrush background = new SolidColorBrush(Colors.Red);

            background.Opacity = 0.5;

            window.Background = Brushes.Transparent;

            HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;

 

            MARGINS margins = new MARGINS(margin);

            DwmExtendFrameIntoClientArea(hwnd, ref margins);

            return true;

        }

    }

} 

 

In your Window.xaml file, make the DocumentRoot object's Background to NULL then just insert the following code (marked in bold) in the codebehind file:

using System;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

 

namespace AeroGlassExample

{

    /// <summary>

    /// Interaction logic for Window1.xaml

    /// </summary>

       

    public partial class Window1 : System.Windows.Window

    {

       

        private bool neverRendered = true;

       

        public Window1()

        {

            InitializeComponent();

            this.SourceInitialized += new EventHandler(Window1_SourceInitialized);

     

        }

       

        void Window1_SourceInitialized(object sender, EventArgs e)

        {

            GlassHelper.ExtendGlassFrame(this, new Thickness(-1));

        }

       

        protected override void OnContentRendered(EventArgs e)

        {

            if (this.neverRendered)

            {

                // The window takes the size of its content because SizeToContent

                // is set to WidthAndHeight in the markup. We then allow

                // it to be set by the user, and have the content take the size

                // of the window.

                this.SizeToContent = SizeToContent.Manual;

       

                FrameworkElement root = this.Content as FrameworkElement;

                if (root != null)

                {

                    root.Width = double.NaN;

                    root.Height = double.NaN;

                }

       

                this.neverRendered = false;

            }

       

            base.OnContentRendered(e);

        }

       

    }

       

}




You will get the following result:



If you replace the thickness(-1) with thickness(5,70,5,42) you get something like this:



You can download the full code below. It requires Windows Vista RC1 or later, .NET Framework 3.0 (RC1), and Microsoft Expression Interactive Designer September CTP.

AeroGlassExample.zip (14.43 KB)









  Thursday, September 21, 2006


Perplex: Coming Soon

I've tried often to keep a personal website. First there was this unmentionable, horrible website (my first actually! back in the day you made a web page - not a web site), then long years later, there was AFTER-IMAGES (art), then PIXELATED FOCUS (photography), then recently DIGITAL EXILE (art + photography).

In this long tradition the newest generation shall soon be unveiled - PERPLEX. The site will no longer be nomadic but be anchored to http://dax.nukeation.com where it shall stay until the end of time.

Perplex? That's a weird name.

Oh, not really. If you personally know me, you may know that I live by the motto: "the purpose of my life is to confuse as many people as possible". And I always do. I'm often confused myself.

This name was also chosen to reflect the look on the viewer's face when seeing my work or words.

Subscribe to the new RSS feed (a category of this very blog) for updates to my photography and art collections. The site will be online soon enough.









  Saturday, June 03, 2006


nAesthetic

June is going to be big for me. More than a few notable events are just around the corner.

The first being the renaming of my blog from Digital Exile to nAesthetic. I’m going to focus more on aesthetic than clowning around on my blog. A strong purpose in life (blogging life). You, in the RSS aggregator, hop on over to www.naesthetic.com (or the old www.nukeation.net). The blog looks hotter than ever! :-)

The second will be the revamp of Nukeation Studios site for our 8th anniversary. The new site is expected to go live on the 9th of June.

The third, which is kind of unfortunate, is my 23rd birthday on June 17th. I find solace in the fact that while I may grow old, I refuse to grow up. And inversely, as a child prodigy, I have more than two decades of programming experience now. Ah, 128BASIC on the Sinclair ZX Spectrum+ in 1987. Those were the (crappy) days.

The fourth, and perhaps most important, will be the release of NukeBall – the first in a series of products we will be releasing! As soon as NukeBall is out the door, we can focus on the WinFX tools we have been prototyping!

Focusing on client projects and NukeBall has taken up most of my time. Now with NukeBall out of the door soon, and the new nukemeister Parvez joining the gang, I will finally have some time to resume my old blog projects.

First of all I will resume the Exploring WPF series of screencasts. Carl Franklin has given me some tips on how to make it better. Secondly, some of the free dev tools like Mapee and NukeControls and all that. I also need to give a major update to Nukeation Labs’ website. I have so much content just lying around.

As the name suggests, I will be focusing a LOT on aesthetics. The new UX revolution is gonna make aesthetics a LOT more important that they have ever been.









Copyright � 2005-2007 Dax Pandhi. All rights reserved.
designed by nukeation
Sign In