Building a 3D engine [modified]
-
Good insight, thank you. My problem is that, currently, I have to workaround the limitations and idiosyncrasies of the product we use in order to both achieve the functionalities we need and completely hide all the rest (which is a whole lot - take a look at it Rhino3D[^]). I will have to definitely look into one of the available high-level libraries.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
Dario Solera wrote:
I have to workaround the limitations and idiosyncrasies of the product we use in order to both achieve the functionalities we need and completely hide all the rest
Almost every route has this problem. But more often than not it is working around the knowledge of each as well. OpenSceneGraph has changed over the years, designs built around the original design still work, but are no longer as applicable as changes would allow greater flexability. I would seriously consider the vast array of scenegraphs available. I say scenegraph because boolean operations work well with scenegraphs. If you integrate the boolean logic within the scene graph logic rather than the drawing logic your performance is better than vice versa.
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb) John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
-
What stuff does it support? For example, can you do boolean operation on surfaces and curves?
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
Dario Solera wrote:
For example, can you do boolean operation on surfaces and curves?
From my very limited and brief work with XNA, I'd say no, not directly. You'd have to work with the model itself, then use XNA for the rendering. I could be totally wrong though. Again, I could be totally wrong here, but XNA is really for the final rendering of the model, not for manipulating the model itself. Marc
-
URGENT! Please send me teh codez of a full 3D engine in C#! Just joking. :-D Seriously, we currently use a 3rd-party commercial 3D modeling software. We need to do just a few things: - display/zoom/pan/rotate a solid (or a few solids) - interactively draw and cut slices out of it - draw free-hand curves on the surface - display textures - do basic boolean operations - toggle axes references This product is cool and its plugin architecture is impressive. The point is that we're using it in a way that is quite different from its main purpose, which makes it a nightmare to debug. The result is almost unusable so far, which frequent crashes. What I'm asking here is an opinion, from who is more experienced than me, on how difficult would be to build a custom high-level 3D engine for our purposes. What would be the best technology (OpenGL, Direct3D, WPF 3D)? Is there any decent high-level library on the market? Thank you for any insight.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
modified on Monday, September 22, 2008 9:37 AM
I would recomment http://www.opencascade.org/[^] because it is a full blown Solid Modeling kernel supporting Boolean operations, Nurbs and Viewers with pan/rotate/zoom and best of all it is free! Language is c++ though. Other simpler free one is http://www.geometros.com/sgcore/index.htm[^] Or C# Commercial one http://www.devdept.com/[^]
Arjan
-
I would recomment http://www.opencascade.org/[^] because it is a full blown Solid Modeling kernel supporting Boolean operations, Nurbs and Viewers with pan/rotate/zoom and best of all it is free! Language is c++ though. Other simpler free one is http://www.geometros.com/sgcore/index.htm[^] Or C# Commercial one http://www.devdept.com/[^]
Arjan
Excellent links, thank you!
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
-
URGENT! Please send me teh codez of a full 3D engine in C#! Just joking. :-D Seriously, we currently use a 3rd-party commercial 3D modeling software. We need to do just a few things: - display/zoom/pan/rotate a solid (or a few solids) - interactively draw and cut slices out of it - draw free-hand curves on the surface - display textures - do basic boolean operations - toggle axes references This product is cool and its plugin architecture is impressive. The point is that we're using it in a way that is quite different from its main purpose, which makes it a nightmare to debug. The result is almost unusable so far, which frequent crashes. What I'm asking here is an opinion, from who is more experienced than me, on how difficult would be to build a custom high-level 3D engine for our purposes. What would be the best technology (OpenGL, Direct3D, WPF 3D)? Is there any decent high-level library on the market? Thank you for any insight.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
modified on Monday, September 22, 2008 9:37 AM
Have you checked http://www.opencascade.org/ It is a real CAD/CAM engine for C++ developpers and is relatively mature. Also, I am currently evaluating the following .NET 2.0 framework http://www.vdraw.com/.
___________________________________________________________ On the whole human beings want to be good, but not to good and not quite all the time - George Orwell
-
What stuff does it support? For example, can you do boolean operation on surfaces and curves?
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
Dario Solera wrote:
For example, can you do boolean operation on surfaces and curves?
the short answer to both questions is: yes and no. No XNA does not directly do boolean and curves for you, but neither does it hinder or prevent you from doing so and the capability is there for you to do so. Both XNA and OpenGL can use something called shading language. Chances are you will be using this if you write your own, or use an existing system, if you don't you will not have the performance you desire and you are loosing out on power that is waiting for you to utilize. Although not what you are looking for: OpenGL Terrain[^] and XNA Terrain[^] both utilize shading languages for melding textures together through boolean operations. This is what is called fragment shading. You desire something along the lines of vector or geometry shading languages. Both are available for you to use. Using the proper geometry shading program combined with a fragment shading program, you can do your boolean operations in either product. XNA would be in HLSL and OpenGL/OpenSceneGraph would be in OGSL. You are adding the power of Direct3D shading HLSL to XNA and OpenGL shading to OpenSceneGraph.
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb) John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
-
Dario Solera wrote:
What I'm asking here is an opinion, from who is more experienced than me, on how difficult would be to build a custom high-level 3D engine for our purposes.
As others have mentioned, you should strongly debate this topic before attempting to write your own 3D engine. Consider carefully the pros and cons and your reasons for choosing either direction. What I consider valid reasons may differ from yours, so give your strongest reasons and consider their weight yourself -- carefully. Pros of writing your own engine: - Learning how it is done, understanding the core concepts of 3D processing - Any unique drawing needs can be handled in the core rather than forced into another product. - You don't inherit someone else's bugs Cons of writing your own engine: - You loose time writing the engine over just writing the product - You are reinventing a wheel that has been invented more times that I can count before coffee in the morning - Instead of inheriting bugs, you get all your own and the maintenance headache.
Dario Solera wrote:
What would be the best technology (OpenGL, Direct3D, WPF 3D)? Is there any decent high-level library on the market?
All are valid choices. Again each should be weighed on not just the advantages of each, but also their purpose. Remember that each product tends to follow their purposes in future growth, until the purpose changes over time -- call it software development inertia. OpenGL is designed to run multi-platform, if your intent is to run multi-platform, you should give it serious consideration. If you never wish to look at Linux or other platforms then OpenGL looses "some" of its advantages. If you are not going to write your own engine, and find one you like, that gives weight to one or another 3D method. We use OpenSceneGraph. Our 3D product then builds upon the 3D capability of an existing system. Where our needs are specialized, we adapt additions to the 3D capability through shaders and/or specialized 3D functions in OpenGL. Our capability then become OpenSceneGraph plus more.
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb) John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
El Corazon wrote:
You are reinventing a wheel that has been invented more times that I can count before coffee in the morning
Sorry, there is nothing before coffee in the morning. In fact there is no morning before coffee
Graham Librarians rule, Ook!
-
El Corazon wrote:
You are reinventing a wheel that has been invented more times that I can count before coffee in the morning
Sorry, there is nothing before coffee in the morning. In fact there is no morning before coffee
Graham Librarians rule, Ook!
-
URGENT! Please send me teh codez of a full 3D engine in C#! Just joking. :-D Seriously, we currently use a 3rd-party commercial 3D modeling software. We need to do just a few things: - display/zoom/pan/rotate a solid (or a few solids) - interactively draw and cut slices out of it - draw free-hand curves on the surface - display textures - do basic boolean operations - toggle axes references This product is cool and its plugin architecture is impressive. The point is that we're using it in a way that is quite different from its main purpose, which makes it a nightmare to debug. The result is almost unusable so far, which frequent crashes. What I'm asking here is an opinion, from who is more experienced than me, on how difficult would be to build a custom high-level 3D engine for our purposes. What would be the best technology (OpenGL, Direct3D, WPF 3D)? Is there any decent high-level library on the market? Thank you for any insight.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
modified on Monday, September 22, 2008 9:37 AM
From my experience OpenGL has always been the quickest to get something up and working, however that is C++ so it may not fit your purposes. Though its been several years since i've touched Direct X, and I Know they've made quite a few significant changes so it might be something worth wild to look into.
Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer. -Fred Brooks
-
Tao Framework is a free wrapper of OpenGL for .NET.
Hey i never knew about that, really cool!
Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer. -Fred Brooks
-
So the pre coffee period when you wake up is called.... mourning? *ducks*
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
dan neely wrote:
*ducks*
*quacks up*
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb) John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
-
So the pre coffee period when you wake up is called.... mourning? *ducks*
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
:laugh:
Graham Librarians rule, Ook!
-
URGENT! Please send me teh codez of a full 3D engine in C#! Just joking. :-D Seriously, we currently use a 3rd-party commercial 3D modeling software. We need to do just a few things: - display/zoom/pan/rotate a solid (or a few solids) - interactively draw and cut slices out of it - draw free-hand curves on the surface - display textures - do basic boolean operations - toggle axes references This product is cool and its plugin architecture is impressive. The point is that we're using it in a way that is quite different from its main purpose, which makes it a nightmare to debug. The result is almost unusable so far, which frequent crashes. What I'm asking here is an opinion, from who is more experienced than me, on how difficult would be to build a custom high-level 3D engine for our purposes. What would be the best technology (OpenGL, Direct3D, WPF 3D)? Is there any decent high-level library on the market? Thank you for any insight.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki
modified on Monday, September 22, 2008 9:37 AM
Other software you may want to look at: - Blender game engine (for guts) - GTS : GNU Triangulated Surface Library (for boolean ops) - Wings 3D (for UI)
...cmk The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying. - John Carmack
-
Have you checked http://www.opencascade.org/ It is a real CAD/CAM engine for C++ developpers and is relatively mature. Also, I am currently evaluating the following .NET 2.0 framework http://www.vdraw.com/.
___________________________________________________________ On the whole human beings want to be good, but not to good and not quite all the time - George Orwell
François Gasnier wrote:
That is impressive, thank you for the link.
If you truly believe you need to pick a mobile phone that "says something" about your personality, don't bother. You don't have a personality. A mental illness, maybe - but not a personality. - Charlie Brooker My Photos/CP Flickr Group - ScrewTurn Wiki