17

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 :)

Marcelo
  • 3,371
  • 10
  • 45
  • 76
  • 1
    That is quite a nice spinning cube! :) – Lucas Jones May 23 '10 at 16:37
  • @Lucas_Jones haha.. thank you, but it's kinda sluggish, perspective should be smoother.. I've made it with simple geometrics, and system.drawing =) – Marcelo May 23 '10 at 16:39
  • 1
    Hi Marcelo, apologies for the slight tangent, but as a 3d enthusiast you may be interested in the proposed 3D Modelling Stack Exchange site: http://area51.stackexchange.com/proposals/5022/3d-modeling-techniques-and-software Would be great if you could sign up and spread the word further. :) – Peter Boughton Jul 07 '10 at 12:37

7 Answers7

7

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
  • 45,732
  • 10
  • 64
  • 86
  • 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? – Marcelo May 24 '10 at 13:00
  • 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 May 24 '10 at 13:12
  • 1
    if you choose to try out xna, have a look at riemers.net - some of the best tutorials on xna out there – Dave O. Jun 11 '10 at 23:21
4

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
  • 24,862
  • 16
  • 85
  • 145
  • 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") – Marcelo May 24 '10 at 12:07
4

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
  • 24,773
  • 9
  • 57
  • 83
3

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
  • 111
  • 4
  • 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 May 23 '10 at 16:37
  • 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? – Marcelo May 24 '10 at 12:10
  • 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 May 24 '10 at 16:41
2

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
  • 113
  • 7
1

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
  • 3,934
  • 7
  • 37
  • 52
  • 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! – Marcelo May 24 '10 at 13:16
  • No API...I suppose you could build one though. It's true Ray tracing so not quick. – nportelli May 24 '10 at 17:12
  • That would certainly be the one solution I'd learn more in, but i'm looking for something more in-hand right now – Marcelo May 24 '10 at 19:28
1

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.

Agnel Kurian
  • 57,975
  • 43
  • 146
  • 217