Archived

This topic is now archived and is closed to further replies.

stereotypical

3d desktop anyone?

Recommended Posts

Hi there im planning to build a 3d desktop gui using directx. Its supposed to be a 3d windows desktop instead of the normal 2d desktop that we have. The desktop will have 3d icons where when clicked on it will launch a specific program maybe paint, solitaire and so on. I wanna wrap few windows browser on a 3d cube so that i can view 4 browsers at a time. The desktop will also make the user be able to move around like in a first person shooter game. Now my problem is, is this all possible and can i make the 3d icons clickable and act like a normal window but only in 3d form. Sorry but im kinda new with directx.......so can anyone tell me where to start and how to go about doing this? im learning the beginners tutorials and just want to get some help. thank you

Share this post


Link to post
Share on other sites
I would imagine it to be possible, but I strongly suggest against taking on a task of this scale if you''re just starting out. But to get you started, for clicking cubes or 3D objects do some searches on ''picking'', and to move like a FPS you''ll need to implement a camera of some sort.

//------------------------------------------------------------------------------------------------------
The great logician Bertrand Russell once claimed that he could prove anything if given that 1+1=1. So one day, some fool asked him, "Ok. Prove that you''re the Pope." He thought for a while and proclaimed, "I am one. The Pope is one. Therefore, the Pope and I are one."

Share this post


Link to post
Share on other sites
well
to tell you the truth , i chose to this for my project in school......yeah i know.....im such a smart ass! i thought it was a cool title at first....and i thought i could do it.....ive done studying c++ so now i have to learn directx......... have a bout early jun to hand this in and im looking for tutorials where i can learn it fast.........

thank you so much for you help

Share this post


Link to post
Share on other sites
Was toying with this idea for a while, with the exception that, instead of clicking on an item, I''d drive the camera at it and, when it hit the item, a new ''room'' would open with the next layer of options. Or an application (like Word) would be launched.

I don''t recommend this as your first project in DirectX.



Stevie

Don''t follow me, I''m lost.

Share this post


Link to post
Share on other sites
I am not an expert in DX by any means but I know enough to be able to say that what you outlined is a huge task if it is even possible to accomplish.

The 3D part with clicking on 3D objects is definitely doable, however...

Being able to represent actual Windows icons inside your 3D app (basically it is going to have to run on top of the Windows OS and desktop just like a game) and pull in everything from Windows to implement it in 3D (icons that correspond to applications etc) is quite a task. It might be possible.

The biggest technical problem is that you can''t run stuff like Notepad, MS Word, Windows Paint inside of another App without reimplementing the whole Windows API with a 3D shell (in short, Windows Longhorn which is not quite out yet). You might possibly be able to run the apps on a desktop (behind your app), do a screen grab and then render it in 3D but I don''t know that this can be done or what benefit it would give. It would be very slow.

Look up Windows Longhorn on the ''net, I think that it will be implementing the Windows GUI with DX or something along those lines.

Since this is for a class project, my guess is that your teacher already recognizes that you have bitten off more than you can chew, even if the project is possible. If he/she doesn''t already know this, then your teacher shouldn''t be teaching.

If I were you, I would pick out something a bit easier (post on the forum what your project''s parameters are and what your skills are and someone on here might tell you what you can accomplish by June(?)) and then go to your teacher with it and say you figured out your previous idea was a bit too ambitious. I am not being down on you or your skills but if you try to do what you described by June, I predict horrible failure. Even a full time professional programmer couldn''t get such a project done inside of a year, I think.

What exactly do you have to do for the project? Might I suggest a Tetris clone or something equally simple? Does the project have to involve DirectX?

Share this post


Link to post
Share on other sites
The notion of a 3D desktop is fascinating, but I haven't seen anyone execute it properly yet. Nearly all of the 3D desktops available are simple eye-candy for organizing your desktop icons --- which is a very minor feature of a fully functional desktop.

The ultimate goal of a 3D desktop is to provide a multi-dimensional workspace in which users can navigate between and, more importantly, interact with running applications. SphereXP comes close: it offers you a high degree of navigation and organization. However, it does not allow you to interact with the applications in real-time; you must first bring them to the front before they will accept any mouse events. (This actually becomes rather clunky when you deal with maximized windows. Also, bear in mind that SphereXP is still in early stages of development, and it may penultimately give us the power we need in a true 3D workspace.)

I, too, think stereotypical has bitten off way more than the average student can chew. This is the type of project that would take a full team of experienced Windows developers several months, or even years, to complete. Addressing such a group of individuals: if you really want to make everyone happy, take the concepts in SphereXP (link provided above by gg83) and expand on them as follows:

First of all, you'll need to trap mouse events and send them directly to the corresponding program, adjusting coordinates properly from your 3D world into the application's 2D workspace, subsequently updating your 3D desktop to reflect how the program behaves/reacts. In other words, you need the desktop to be fully interactive, updating programs in real-time, at least with the currently selected application. (This is extremely important to emphasize for performance reasons.)

Second, you should provide an option to update background applications (i.e., those without focus) in real-time. For example, let's say I have Media Player, 3ds max, Maya, Photoshop, and Word running all at the same time. I'm using Media Player to run a video training module, which I need to see in action regardless of whether or not Media Player has focus. So I would right-click Media Player, enable "Real-time Update" or whatever you want to call it, and then I could move back over to Maya, and Media Player would continue to update my video. (The other applications would, of course, only update when I clicked on them.)

//EDIT
I just realized a problem here with capturing image data from Media Player while it's running, in that it may not even be possible. You may have to build your own media player into the 3D desktop --- which, of course, is wholly possible, but it is a bit of extra work you'd need to consider.

Also, you may want to force an application to update when critical messages are received, e.g., if it crashes, or if a msgbox appears. Just capture the new window and replace the old one. The hard part is determining exactly when automatic updates should occur. This is left to the developer.
//END EDIT

Third --- and this is really nit-picky --- you should be able to use a cube map as your wallpaper. I'm surprised SphereXP does not let you do that. With hardware acceleration, any number of graphical improvements (bump maps, environment maps, translucent windows, etc.) are trivial matters, to be added as the project matures.

Anyway, this is indeed a worthwhile endeavor. I would certainly drop any current projects and do it myself if I knew the first thing about how Windows renders its --- well, its windows. If anyone is willing to help me find suitable information, I'm willing to take the steps necessary to realize the goal of a truly-interactive spherical desktop.

Okay, this is a lofty goal, but I believe it's viable.

[edited by - Tom on April 22, 2004 3:28:27 PM]

Share this post


Link to post
Share on other sites
Hi,
thank you so so much for ur help guys.........well im not actually gonna implement a full system.....its just a prototype.....as for the 3d icon that i wanna click on it will launch one program like paint and another icon to launch somethin else......just to prove the concept im gonna do all the icons but only one or two will be functioning......and the webbrowser is optional actually.....but i would like to know how to map the windows browser from ur favorites folder onto a 3d cube.....and each wall of that cube will hold one browser.......... rite now im trying to build the 3d desktop something like www.3dna.net ......if you guys could take a look at it or try the trial version u will know wat i mean.

thanks again.

Share this post


Link to post
Share on other sites
Well, that''s what I''ve been thinking about today, after I made that post. The problem is achieving an acceptable frame rate. Taking a snapshot of anything on your desktop is time-consuming. I don''t think there''s any way you could do it 30 times a second. Fifteen might be possible; sixty is out of the question. Oh, are you asking how to capture images to the clipboard? Damn, I had source for that somewhere. Do a search at www.pscode.com. You''re bound to find something.

Anyway, there may be some way to intercept Windows draw events and trick it into rendering to a device you specify, like an off-screen surface in system memory. This would be extremely fast and efficient --- you could easily break 60 FPS --- if it were possible. That may require digging into Windows code while it''s running. I have no idea how you''d tackle that. Someone with intimate knowledge of the API may be able to help, which takes this away from the DirectX department and thus out of this forum.

Share this post


Link to post
Share on other sites