http://www.blender.org/ comes with a game engine
views:
1009answers:
6SlimDX 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.
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
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?
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
- Very fast hit-testing (i.e. which entity you picked).
- Scene-Graph classes with easy controls for conditional rendering.
- 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.
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