Oooo yes… This is cool. By the way, I’m calling the app Oasis Animator. Here we go:
That sounds great. I just had a look at that page and actually, it sounds pretty interesting. Id love to have a look at the source. Ive looked at Blenders IK source but to tell you the truth, I cant seem to make heads or tails out of it. Which brings up something I find very confusing: Often times people split up there projects into so many separate files that it become very difficult to cross reference things and keep track of relationships. Im not sure I understand the benefit of this. I guess, if you writing something in flat C, it can provide a sort of encapsulation and privacy. But to me it doesnt make sense in and object oriented design since classes inherently provide this. Anyway, yes I have been looking at other peoples code but again, Blender seems to be the only one thats complete enough and thats hasnt been doing me much good. Does anyone else have any other examples?
RE: representing data, Yep your right, I havent given much thought to how deformers will interact with points. I have to confess that at this point I havent a clue. Perhaps, when you assign a deformer, references (pointers) to the points (maybe even just the point IDs) that are closest to it or enclosed by it, are copied into an array thats stored with the deformer (Basically, a vertex map). When you evaluate the deformer, the new positions of the points are calculated and thus sent back to the model. This is just my first guess off the top of my head so Im sure theres a better way to do it.
RE: Relationship diagram, I need some help on this. Do you know of any examples in books of on line?
RE: Sorting objects, You know, I was kinda thinking about trying to do this without a hierarchy. I know that might seem crazy but Ive been thinking about how, in a lot of cases, hierarchy can actually be restrictive. And, it might actually help to have something like a DAG where hierarchy can be dynamic and implied. It might be an interesting experiment and offer some new possibilities. One of the areas Im thinking that it might come in handy is with what Ive been calling bi-directional IK. This is where you have the option of rotating from ether end of the bone or chain. Again, I havent been able to give real mechanics of this much thought and Im not at all sure that it would work but Id at least like to look into it. I have this book by Robert Sedgewick called Algorithms in C++ thats just a wealth of sorting algorithms. Maybe I can find something in there to support my theories. On the other hand, I might just mess up the very foundations of matrix transforms and Ill have totally screwed myself. Im interested in hearing other peoples opinions on this. Has anyone ever heard of doing something like this?
RE: Culling, (thanks to Stew as well) Oh yes I see what you mean. I guess you can see where this is all still a bit fuzzy to me. So I have to sort the polygons and throw out the ones that the camera cant see and then send them to OGL. Ok, got it. There are so many hidden surface removal algorithms out there. Has anyone ever done a good comparison? This is one of those areas that Im not very interested in because it borders to closely rendering which Im trying to stay away from. Its so subjective and to me the only reason I would want to make a renderer is if I had something new to offer (shadow volume based radiosity anyone?).
Ive done a little wxWindows. Theres a nice Python implementation. I think Im going to need to post my UI mockup so you guys can see what Im thinking of. Basically, my theory has always be that the current standard in windows UI design doesnt have much to do with 3D programs. To me, (and this is where I can get pretty opinionated) the UI to a 3D program needs to be treated like a targeting system of a fighter jet. You dont want panels floating all around while your trying to do fast on-the-fly precision work. So, for the fighter pilot, they came up with the HUD. This is similar to how I want to treat this. Hmm, I dont think I can avoid going into detail here so bare with me: The Main UI looks like this:
Sorry for the long load time
Ok, this just a mockup. A lot of things will probably change once I find out just how difficult this is actually going to be. But the idea as you can see is to be able to show as much of the 3D view as possible. Let me just do a little explaining: The floating menu is my version of marking menus. You can lock them down by hitting the little circle on the left edge of it. Once you do that they become transparent. The Panels to the right and left (Properties and List views) slide in and out of view from there respective edges of the screen. You can of course lock them in place but then things will probably get all cluttered up again like they are here. The timing editor (just above the timeline) will need to be popped with the mouse in order to make it come up by hitting the little arrow. You can have as many timing channels open as you like. I just stuck one in there for the heck of it and also to show how its main function is just to help control ease in and out and let you move key frames around. Modules to the right, selection mode to the left and thats about it. One important thing thats missing is the node view. Just imagine the 3D view darkening and a bunch of inter connected nodes (boxes) overlaid on top.
As you can see, theres a lot of transparency going on there. Also, theres no adhesion to the windows standard. The top of the window will have a title and menu bar with things like File, Edit, View, Options and Help. But thats it as far as thats concerned. So, my question is this: Can wxWindows do this sort of thing? With Python?
RE: Python and C++, Hmm. Well, maybe I will do this
Id certainly feel more comfortable with Python. I guess this issue for me is that I dont have a clear delineation in my head about what can be Python and what has to me C++. Obviously, anything that does matrix math, deformations, IK and physics
Im not really going to be doing that much OS specific UI stuff. A few files requesters, some menus, the main window
Hmm, maybe I can do the OpenGL handling in Python?
RE: Nodes and DAGs, Wow! Thats great, I had no idea that was what was going on in Maya. Im sure its going to be nasty as hell but I think Its going so worth it in the end. If I can pull this off, its going to be like Houdini meets Maya meets the old TDI. I like Houdini for the way it does nodal stuff but its way to complex to be used by average people. Maya on the other hand doesnt give the user enough straight forward control. Im planning on doing all the adding and deleting and connections of nodes auto automatically in the background but still let the user mess with it if they want. By the way, DAGs (directed acyclic graphs; I had to look at my Segewick book to find that out) are pretty intense. Ill have to do a lot of reading up on them. The concept of setting dirty flags for evaluation is exactly what I was thinking of, but I hadnt really thought it out that far. I would imagine that it would wined up being complex whether or not things where represented as nodes or not. Right?
RE: OpenGL UI, Ok so then how would I handle the transparency and anti aliasing efficiently enough with something like a UI kit? I guess Im just asking the same question over and over again. Sorry about that.
RE: Keeping things separate. Oh, I definitely wasnt being very clear there. When I said that some nodes would have UI code in them, I meant that they would just be calling the built in widgets that I had already built. The UI code would be separate from the calculation code within the node. If you think of it as nodes being plugins then it makes more sense. All of the interface stuff is handled with in the core app. The node just tells the app what features it has and the app builds the GUI. One thing Ive really come to hate though are plug in APIs that give the developer enough tools to really make the plug in as useful as it could be. I want to be able to do things like create my own special object or some funky manipulator form within the node and not be restricted by the tools that the app provides. Does this make sense?
Ok, this wraps up another addition of Yes Im a lunatic for trying. See you all soon. And thanks for all the great help you guys have given me. My brain has definitely been on overdrive today and that a good thing!
Bent Image Lab