A: 

http://www.blender.org/ comes with a game engine

+2  A: 

SlimDX SDK might be option, if your willing to start a bit from the bottom, its basically a way of giving you access to DirectX from .NET. They also have a collection of samples for you to start from.
Ogre - a 3d engine under LGPL or purcache a license
garagegames.com - also has a few engines, depending on your language of choice ( Also "low" price. no 500k $ engines here )

Both Ogre and garagegames.com have "old" 3d engines, so you should be able to find either full games or demos so you can check out the performance. Im not familiar with writing cad applications, so when you say you have 3D objects im not sure if thats static or objects that can change while the application is running.

EKS
Axiom is a .NET version of Ogre, isn't it? Since he's under C#.
Lucas Jones
Axiom: http://axiomengine.sourceforge.net/mediawiki-1.13.2/index.php/Main_PageAnd please - don't start the ExoEngine thing again.
Lucas Jones
+1  A: 

Unity 2.5 now has an IDE that runs on windows. There is also a web viewer so that (using a plugin) you can view immersive environments right on a web page. Indie license is just $200.

BTW GarageGames now licenses a newer tech called Torque3D

Also worth checking is the C4 Engine which gets high praise over at devmaster.net

Scott Evernden
GuysThanks for your asnwers, but what I need to know at this point is that: How should I selecet one of this engine? I can not test them all, and their tests or show cases are different from our application.i.e. We have a very wide area, with high detail.and then how should I choose one of these engines? Unity, C4 Engine, Torque3D, blender, SlimSDK, OpenSceneGraph, CadFaster, and ...????
A Poostchi
A: 

You should look at WPF, Windows Presentation Framework, (see winfx, see avalon) and look deep into the most recent developments. You might find this link of some interest. Also, what is Thriple?

Christopher Morley
I would not recommend WPF for high-performance 3D rendering. The tests I've run on it was never sufficient beyond a few hundred low-polygon objects.
Erich Mirabal
As Erich Said, I saw MSDN articles indicating that WPF did not design for High performance 3D rendering.
A Poostchi
+4  A: 

Regardless of which engine you use, there are some key concepts to understand.

Since you are dealing with so many objects, the main one is that of Level of Detail (LoD). Make sure your objects have realistic LoD associated with them. For example, you won't bother to render the high-detail model of the screw when viewing the whole scene. Also, when closer to it yet still far enough away, a low-detail version of the screw is good enough for rendering.

Also, you can do tricks like Virtual Earth and tile your data (which is related to LoD). Finally, culling is going to be very important, but probably dealt with any of those engines you have already mentioned.

If you are dealing with GIS stuff, check out AGI's Insight3D. Still in early development, but backed by a lot of good technology, and designed to handle large quantities of objects, culling, LoD, etc. They even have ways to embed video as a texture.

EDIT:

If you are dealing in C# as you stated, I really would take a look at Insight3D. It is a 3D GIS engine. Not a game engine. It is scene-graph based, which means you don't have to worry about frame-by-frame rendering as you might have to with other engines.

They have all the constructs you need for

  1. Very fast hit-testing (i.e. which entity you picked).
  2. Scene-Graph classes with easy controls for conditional rendering.
  3. Time is integrated into the engine as part of the Scene-Graph. This means that you can even define what things looked like at a previous point in time and go back and forth on it.

For me, the difference between a 3D engine and a game engine can get pretty blurred. From what I've seen, the key difference is that game engines are more worried about making things look good than accurate. For example, we used the Unreal engine to render our office, but we had to make everything to different scales than real-life. It looked great, but not to real-life dimensions. This might make a difference when dealing with details down to screws as you are doing.

A little disclaimer: I do not work for AGI, but I have personally met the engineers that are creating this engine. They are integrating the latest GPU and rendering techniques, so it is by far one of the best fastest, well-done engines I've used. It leverages knowledge and technology used by their main application (STK) which is used by many people for high-resolution astronomical calculations.

Erich Mirabal
Hi Erich, Very long time from your answer, but I look for the new answer at the bottom of my page ;) By the way, your answer has some interesting point, but my interest is how can I implement 3D? Should I use an engine? Then which one? Creating 3D scene, managing LOD, scene partitioning and etc are very difficult for our team. On the other hand, I can not differentiate between game engines and render engine! I HOPE YOU SEE THIS COMMENT, and thanks for your answer
A Poostchi
the answer is really helpful, I'll continue to work in this issue, and more question in future will arise, thanks for your interest and HOPE to see my future comment and questions.P.S.: I send an email to AGI company ([email protected]) but no answer till now :(, AGI website is under construction.
A Poostchi
I have new question after your answer: Previously I thought GameEng and 3DEng, both do frame by frame rendering to create 3D real-time scene, but you said "It is scene-graph based, which means you don't have to worry about frame-by-frame rendering as you might have to with other engines". how this can be happened?
A Poostchi
Some engines are based on scenes (if you look at Java3D as another example). You don't do frame-by-frame rendering where you execute each OpenGL/DirectX command you need. Instead, you declaratively say "this is my scene. I have a box here, with this rotation, with this texture." WPF3D works in a similar way. You give it the information (3D object, textures, rotations, etc) and the engine does all the 3D culling, and graphics card low-level command issuing. Hope this helps. I'll be happy to clarify some more if needed.
Erich Mirabal
+1  A: 

I have worked with OpenSceneGraph and in my opinion if you are not very good at organizing your graph you could end up with poor performance given the specifics of your models (high detail, high object count, scattered scenes). You will need to be able to partition your scene spatialy (like oct-trees, kd-trees, etc).

If cost is not an issue you could go for vendors that also provide consulting services and sell engines that don't require quite the same 3D graphics expertise as the OSG for instance.

Another issue to think of is how do you import your models into the engine. If you work with documented file formats you could do it yourself, otherwise you'll need to rely on external libraries for reading and/or importing the model into your engine of choice.

If your models are extremely large you'll need something that is capable of paging as your model won't fit into the available memory (relying on the OS for paging in this case is not the best idea IMO).

Here you can find a list of 3D engines, some of them commercial: http://en.wikipedia.org/wiki/List_of_3D_graphics_APIs

grivei
Wow, first of all, thanks for your answer. I'm quite despaired to get answer any more.in recent 2 days I get some test on osg, and it's only a 3d renderer tools, but as you said it's only half of the way.but I dont know this: is there any difference between 3D renderer engine and game engine? C4Engine faqs claimed that:
A Poostchi
The number of polygons rendered is rarely a limiting factor when it comes to an engine's performance. Many factors influence the rendering speed, and these include the complexity of the materials used, the number of shadows drawn and their types, and whether various kinds of special effects are enabled. There aren't any specific numerical limits for any of these that can be stated. Speed will generally be determined by how well levels are designed."
A Poostchi
and I see the snapshot of the sample games based on this engine, which are close to our need.So is there any hope to use this kind of engine instead of above mentioned engines?
A Poostchi
I have absolutely no experience with games but I do know that there are significant differences between the rendering a game and rendering CAD files. The first difference is that CAD apps, especially architectural ones usually produce high object count models with a relative low polygons/object average. Games on the other hand have high polygon count objects. One direct consequence of this is that LODs work a lot better on games than on architectural models.
grivei
Another difference is that games scenes can be highly optimized offline. Of course many engines would allow for dynamic scenes but they still have some degree of control over the content ans structure of the scenes. This difference is very important as you don't have that type of leverage upon the arbitrary CAD models that you might need to render and that's why it is so important to get the partitioning of the scene right in a non-game type of app.
grivei
In my experience the number of polygons does count especially when you go beyond a couple of millions of them (this number will change with time and GPU's). I totally agree that it depends on many other factors but the sheer number of polygons can affect the performance if culling is not reducing the number of them that are sent to the GPU at a level the GPU can render the scene at an interractive frame-rate.
grivei
In conclusion, if your scenes are not predefined (as in you need to be able to load models you can not manually preprocess) I don't recommend to go for a game engine unless you really need some of the other stuff a typical game engine offers (AI logic, advances physics simulation, editors, etc). If you need pure rendering you can go with OSG or any other provider that also has consultancy services (Robert Osfield from OSG would probably be happy to help).
grivei