I too have been considering writing a 3d modeler (/animator in future if time is there and I don’t get distracted). I was writing quite quickly for several days after designing for a while, I need to design some more but something came up and I’ve been busy) Basically I’m telling you all the things that I have done and/or plan to do. My questions are rhetorical by nature so you don’t have to answer them.
I don’t think the basics of them are that complex, OpenGL + widget set + algorithems & data structures + communication methods (I/O and protocols) + more minor things like image handling… are what you need to know. Learn to use OpenGL and you can display models and stuff to the screen without too much difficulty, learn a widget set’s API and you can handle buttons, menus, user generated and other events etc…, there should be libraries of data structures no matter the language (e.g. STL for C++, haven’t used C# yet so I couldn’t help you there), use them at first when appropriate, if you really want to you can replace them with your own latter. Design stuff throughly before getting started, keep things modular and clean for easy improvements after you get the basic structure working you can go back refactor and then improve upon older stuff.
If you usually use a single 3d app I strongly suggest doing all the standard tutorials you can in the various 3d apps that are out there (esp Maya, LW, 3DS, Wings, aside from Wings I believe these all have decent learning editions and are somewhat different in approach), this will give you a broader view of how things can be done, so you aren’t stuck in one pardigm. This may take a few days but should be worth it.
If you are supporting plugins how do you plan to do them, how pervasive will they be? Will you build them into the program each update, DLL style, communicate with whole seperate apps, allow for scripting. This choice will determine what you need to accomplish this aspect. e.g. scripting could use a standard language or you could grab lex and yacc to help out, making each plugin a whole seperate app might require a communication system/protocol, I suggest not using TCP/IP (like LWdoes :rolleyes: ) but that’s up to you of course.
What platform(s) do you plan to support? That will help determine the widgets set and a few other things. (I’m using wxWidgets which seems pretty similar to MFC)
Building in animation from the start or waiting till later? (I’m waiting till later but I have thought about how to include it so as to reduce future work in that area)
Look at file formats to decide which is appropriate to your liking, even if you use your own make sure it can be converted to one of the other big ones easily and prefably losslessly.
Unfortuanatly I have to go, I might come back and finish this and spel chek it later.