I've been wanting to work on this application for about a year now. I want to create a 'Laser Show Simulator/Editor'. I want to be able to place lights in different positions on a stage and I want to be able to script each one of them to do various operations such as turning, go on and off at certain intervals, change color, etc. Being realistic isn't entirely my intention. I have further plans of writing a tool that makes it easy to synchronize and compose a laser show based on an existing audio file (which will usually be a song of course) based on certain information that can be detected such as the beats per minute, etc., for example.
I was originally thinking of working on this in C# with XNA. The editor will of course contain some 3D viewports (Maybe in Ortho Projection), kind of like a 3D Modeling tool I guess, but more like a level design tool for a game, since the amount of things one will be able to do with it will be limited such as light placement and property editing.
The thing is that I have never worked on a 3D programming project before. A few years back, I tried to learn OpenGL (Bought many books and honestly did read them, but back then I was new to programming and things just did not make sense. Also, I didn't understand much of the math that was used). I also did try to learn Managed DirectX, and although it did seem to make more sense, I guess I wasn't as motivated to learn it so I gave up.
Now I actually have a reason to learn it, so I will be motivated, and I am sure that I will understand most of the math now.
But I don't know where to start. This is something that I'm sure will take me a while to complete, so I know to be patient. I would like to know where you guys suggest I begin. The audio part I am sure I will leave to later. I guess the basics are the rendering engine and the editing interface, then the actual simulator to play back the created show.
Since I can't fit everything into one question, I will ask follow up questions later when I get to that area of the project. However, in the meantime the basic general questions I am asking are:
Where should I begin? I have never worked on something of this magnitude, so I am overwhelmed with the amount of things going into this project and I don't understand what I should begin on. I know I will plan things out first, but I would appreciate at least a hint as to what one would begin on. I assume it is the rendering engine.
Is it a good idea, or at least OK to use C# and XNA? I'm pretty familiar with C# and I did try to learn Managed DirectX a couple of years back which I believe is somewhat similar. And I'm familiar with the User Interface creation aspect of .Net with C#.
Should I create my own rendering engine or use an existing one? Which do you recommend? I'm not entirely interested in creating my own engine so that I can learn. I'm sure I will eventually understand what's going on anyways, and I really don't want the rendering aspect to be a roadblock, especially if there's something out there that already exists that will be better than anything I can create in the immediate future. Still, of course, I will try to learn XNA; I'm not going to try to ignore it.
Thanks guys I really appreciate any input you can provide. Sorry if I was very vague. I have ideas for the specifics, but I wanted to ask the general questions for now, to give myself a sense of direction. Thanks again.
EDIT: I want to emphasize that I have never worked on something of this magnitude from scratch. I literally don't know where to begin. I've never worked on 3D programming nor a complicated user interface which an editor would entail. I do have the drive and motivation to learn and do anything programming related, as I have proved to myself in the past, but I would appreciate any details and specifics you guys can provide as to where to begin.
For example, some of you say begin with the rendering engine, but can you provide any specifics? Are there any free and/or open source engines out there that will suffice? Are there any 3D topics in particular that I should look into that might be of interest to me considering what I'm pursuing? For example, I've read that some lasers might just be 3D meshes with shaders, or something, I'm not well versed in 3D programming apparently.
I'm not looking into buying anything such as the rendering engine, at least in the immediate future. If I do, it will be once I have a core/base down which I can work upon.
Thanks guys, I really appreciate any insight you can provide, aside from what some of you have already done.