views:

514

answers:

7

I'm a developer for just about 6 months now, and since I enjoy programming I've started little programs such as encripters, calculators, tools, stuff to play with DropBox (hehe), stuff that play with bitmaps, drawing graphics, and even a program to update the MSN display image according to the artwork of the music you're listening yo on iTunes.

One of my other hobbies is 3d modelling (completely amateur) and I'd like to mix these hobbies together! So I've read a little about it and figured I'd have to have good notions on geometry, math, point spacial position (which I do, from my 3d modelling experience), but I don't know how to use API's for it, so I've 'simulated' simple 3d with a simple program I've made (a spinning cube).

Here are some questions:
1) What would be a nice 3d development tool for a .NET programmer like me?
2) Is there a way of using 3d models made in 3DS Max ? (I intend on modelling characters)
3) What knowledge should I have in order to render it, and move it around ?
4) Which API should I use ?

NOTE: Not a dupe, I'm asking for directions specific for .NET development possibly using 3ds MAX, and there were no questions about it so far


EDIT:

I've got three answers that seem quite nice, so let me specify a little and maybe you can tell me what's the more appropriate tool.
What I'd like to build soon would be like:

  • portable (click'n'run, no need to install, and (hopefully) no need to send DLL's along)
  • "3D embedding" in winforms application, like a picturebox you could render in.
  • Real winforms application-like (having all System api's like IO, Drawing and etc)

The development enviroment would be nice if it:

  • Had the possibility to import existant 3D models (not a must, but a plus)
  • Had the ability to create 3d models programatically (a must)
  • Possibly has a tool for materials and textures (that would be a huge plus)
  • Is Well known (high availability of tutorials, questions in S.O., forums..)

And it would be really nice if I could use C# all the way :)

+3  A: 

Since you are using C#.Net, the XNA library will be excellent for you. It is free off the Microsoft website and integrates into the VS IDE. A lot of available tutorials around to help get started.

Also, if I remember correctly. to use a 3d model in XNA, simply export the completed model as (.X). It can then be loaded into your work.

khai_khai
XNA also supports the FBX format and there are plenty of community-built content importers for other formats. The ability to run your games on the 360 is a huge plus, as well.
David Brown
Ok, so for what people have been telling me, it's really designed almost exclusively for games. So if I want to make a simple winforms application with simple user interaction, say, a cube that spins (in more than an axis) when the user clicks a button (like my example, but with real 3D), would I be able to do that easily?
MarceloRamires
There are numerous tutorials for rendering XNA to a WinForms control. The framework doesn't come with a pre-built control, but it's definitely possible. In fact, the Creators Club websites has a sample: http://creators.xna.com/en-US/sample/winforms_series1
David Brown
+4  A: 

Personally, I found XNA a little too "Game Centric" for my tastes. I was more interested in design/architecture type uses.

You may find SlimDX more to your liking.

Neil N
My initial idea (to start with, for learning) would be to make an "image coverflow". would it be suitable, and easy for a starter like me ? could I make an EXE with it (along or not with extra DLL's) and handle it over to people ? (not a setup, a portable "click-n-run")
MarceloRamires
+6  A: 

I'm going to provide another vote for XNA. The comment that it's too "game centric" is a non-starter - it provides a rendering loop with feedback on how fast everything is running so you can adjust your rendering to try to maintain a specific framerate (if you want). This isn't particularly game-centric as it's something that most 3D applications should worry about. The only thing that's really unusually game-centric about it is that it provides easy access to game controllers. Feel free to ignore that bit if you don't want to use it.

The only downside for you using XNA is your requirement that it be click'n'run, XNA has a redistributable that you have to worry about. Note that Win7 has this installed by default, but Vista and earlier don't.

EDIT: XNA is made for applications that are strictly 3D. As such it doesn't natively support using typical windowing controls inside of an XNA project. But, there are ways around this... A few useful links. Embedding XNA in a winform : http://forums.xna.com/forums/p/6471/34180.aspx#34180 WPF controls directly inside an XNA project : http://www.c-sharpcorner.com/UploadFile/iersoy/256/Default.aspx

Donnie
If people just have to run this just once before running anything I do, it does not go against my requirement, I just hate the idea of having a setup for a simple example program, if running this framework will make the user experience just as simple as it would be for a winforms application, it's ok. Is that right?
MarceloRamires
Yes, the redist only has to be installed once. After that point windows update will take care of making sure it stays up to date if anything in changes. Also, see my edit above.
Donnie
Whoa.. that really is a point in favor of XNA
MarceloRamires
if you choose to try out xna, have a look at riemers.net - some of the best tutorials on xna out there
Dave
+1  A: 

My vote goes for Povray. It is a 3d renderer with a c-like syntax language. It doesn't satisfy your .net needs, but if cool non the less for 3d rendering. If you any kind of interactivity XNA is probably your best best. But I'm interested in your finds.

nportelli
Does it have some kind of API or something for me to handle it programatically? It seems to me that it's just for rendering images and animations.. thank you anyway!
MarceloRamires
No API...I suppose you could build one though. It's true Ray tracing so not quick.
nportelli
That would certainly be the one solution I'd learn more in, but i'm looking for something more in-hand right now
MarceloRamires
+1  A: 

Re: "Has the ability to create 3d models programatically (a must)"

A few pointers:

There are no .NET libraries I am aware of that allow you use the above mentioned libraries/techniques. You will have to use PInvoke or C++/CLI in order to make calls to these libraries from the managed world.

Vulcan Eager
Hey! How do I unwikify this? It took months to gather what I've listed here. :|
Vulcan Eager
Thank you very much! Isn't someone else's gratefulness enough? Sharing is the whole point of this website :)
MarceloRamires
+3  A: 

Even though there are great suggestions in this post already(such as SlimDX and XNA), I'd just like to mention OpenTK.

OpenTK is closer to OpenGL than Direct3D, but it might be the best solution for cross-platform 3D .NET applications.

luiscubal
OpenTK is fantastic and works on Mono.
Ron Warholic
+1  A: 

I vote you try Blender. www.blender.org

It's free, open source, and has a great community both on forums and IRC. Progress on the app is pushed forward by major community projects every year, some of which are movies and games and have won some awards. It is gaining industry acceptance as a way to model extremely fast.

Downsides: It's not considered as "pro" as Maya or ZBrush, and it has a very different brain about interface. Learning curve can be interesting, depending on how you learn and how much help you receive.

Upsides: It's free, great community, updated regularly, many tutorials and community projects to work on.

Community:

Previous community Projects:

evantravers