Hi,
I'm programming an architectural CAD system for my 3rd year computer science project and I have no idea where to start.
I've been thinking of using Java with Java 3D, to code it in, since I've used Java before. I've used C++ too, but I'm not so proficient at it as I am with Java. I've never done any 3D programming so I'd like some advice on where to start. I don't want to spend too much time learning any graphics languages (i.e. OpenGL and DirectX) as I don't have the time on my hands to learn them. On the other hand I've never used Java 3D either, but I understand its easier to get coding quickly with Java 3D.
Is there anyone here who has actually coded a CAD application or something similar. Any tips on how and where I should start? Good books/tutorial webites etc? Anything would come in handy.
Thanks
A.L.
Comments
Without trying to intimidate you, I must say, that if you don't yet know OpenGL or DirectX or any other such library, you must be prepared to spend a lot of time with your CAD program. I would probably use OpenGL if I had to make a CAD program. If you decide to choose it, then
http://nehe.gamedev.net is a good place to start learning OpenGL. But you probably need to stick with C++ if you use it.
XLoom
GL is ten times easier to pick up on than D3D, and far more advanced, but if a video-card is not GL-compliant (ie: Radeons below the X800 series), the app may crash, not display stuff properly, or have other anomilies. D3D is much harder to learn and slower, but it runs on virtually every graphics card around. I prefer GL for the beauty of it and for the much higher framerate. Then again, I only buy nVidia cards! Still, I suggest you choose one of these two languages and get started.
: OpenGL and DirectX are NOT languages, they are a number of data structures and functions, that are higher level than drawing a polygon pixel by pixel. Neither OpenGL nor DirectX is more difficult to learn than Java 3D, but I am not so sure whether Java supports either OpenGL or DirectX.
:
: Without trying to intimidate you, I must say, that if you don't yet know OpenGL or DirectX or any other such library, you must be prepared to spend a lot of time with your CAD program. I would probably use OpenGL if I had to make a CAD program. If you decide to choose it, then
: http://nehe.gamedev.net is a good place to start learning OpenGL. But you probably need to stick with C++ if you use it.
:
: XLoom
:
XLoom
http://java.sun.com/developer/earlyAccess/java3D/directx/java3d-install.html
http://java.sun.com/developer/earlyAccess/java3D/directx/index.html
I think it would be slower than opengl or regular directX for another language because it would operate through java's virtual machine. I personally use openGL in C++. I have tried directX and I do not like it compared to openGL, and it has a much steeper learning curve, but that is just my opinion. It also take a lot more initialization code to get a DX app running as opposed to an openGL app. OpenGL is also better because it provides more portable code. DirectX, as I understand it, will only ever run on windows. But with a little porting openGL will run on linux, unix, or any other operating system. That is why many programs (especially comercial apps) are written with openGL than directX. I think directX is more widely used for game programing, though openGL also has a foothlod in this area. CAD/CAM and fractal/image editing software is often done with openGL. In any case they both do more or less the same thing, except directX has support for sound, networking, and input/output. OpenGL does not have direct support for these things because they are platform dependent, but there are other ways to acomplish the same things.
I assume that you are looking to make a fairly simple program for your class because in general 3D graphics programming even if not in real time is very complex. It would take a team of programmers, or a whole lot of free time, to make anything close to what commercial apps can do. In this case if speed is not so much an issue you might want to stick with what you know and go the Java directX route, or maybe this Java3D (I have no idea what this is). Otherwise I would recommend openGL.