Defrag Posted March 3, 2008 Report Share Posted March 3, 2008 I'm going to preface this post with an "it ain't done yet and won't be done for a while yet" message, so this excuses me when it comes to laziness. To learn some C#, .NET & XNA a while back, I started working on a little Bezier patch-based displacement editor (think a simpler Q3/Doom3 patch editor). Its working title is the "Bezier Bongo Displacement Machine Extraordinaire". The idea is simple -- you can build shapes using Bezier patches -- this lets you make really cool curved geometry (e.g a hallway arch that curves in two different ways) without resorting to the tediousness that is nudging potentially hundreds or thousands of vertices. Source obviously doesn't support Bezier patches, so the tool is going to tessellate the patches (already done and using Hammer displacement style triangulation) and spit out all of the vertices into a .vmf so you can load 'em in. What I'd like to know is what you good folks would like to see in such an editor, both in terms of allowing easy manipulation of objects (groups of patches and individual patches) and sub-objects (patch control points). This could also be in terms of prefabs -- pipes, toruses, curved walls, floors etc. I've got plans for a prefab creator amongst other things, so if I get suggestions I should be able to add 'em. Please note that since I'm using Bezier curves, this application isn't really geared towards making anything but smooth geometry. Unfortunately it cannot support things like terrain generation. I could possibly have a bash at that in the future, but right now I'm focussing on curved geometry . I plan to release the source once it's (relatively) finished, so other people can contribute and add their own features if needed, too. Given that I used it as a way to learn new languages and frameworks, it's probably a bit rough around the edges. Current features [*:2os40wm9]Form-based. Has toolbars, resizable elements and all that good stuff. [*:2os40wm9]Patch creation. You can re-tessellate patches via subdivision just like hammer. [*:2os40wm9]Prefab patches. You can create arches, curved walls and a few other things. I plan to re-do the interface and put all of this stuff in a Hammer style "creation" form, complete with dynamic preview. [*:2os40wm9]Patch manipulation. You can select multiple patches, control points etc. and drag them around. You can also nudge using the arrow keys. You also see the control cage of the Bezier patch; this makes it easier to figure out which 'line' or section a point is in. [*:2os40wm9]Multiple views. Same as Hammer -- it has top, front, right and perspective camera views. Currently I can only show one at a time. I will eventually display more than one simultaneously. [*:2os40wm9]Orbiting camera option. This is a 3D package style mode where you focus the camera on the selection and then orbit around a selected object (bit buggy but hey). [*:2os40wm9]Customisable grid, including grid snap. I've got it set up to look almost exactly like hammer minus the highlighted additional grid lines every x units, but I can add them at some point Stuff not yet in [*:2os40wm9]File saving and loading. I plan to allow saving and loading XML files so you can save your application settings & creations in the application's own format rather than just exporting to .vmf (so you could work on some geometry, save the bezier file and come back to it later). [*:2os40wm9]Exporting to .vmf (doesn't look like fun, in fact I'm dreading it ) [*:2os40wm9]Textured mode. Texcoords are generated, but I'm just using wireframe at the moment. [*:2os40wm9]Undo support. Some sort of undo stack would be nice, but I have absolutely no idea how to go about creating this. Maybe I will do a bit of research soon as undo is very useful. [*:2os40wm9]Bug squashing. There's quite a few bugs and inconsistencies which have to be ironed out (e.g. in the perspective camera mode, nudging vertices is a bit dodgy). Moving things around is also a bit dodgy as the top left of the selection will move to the mouse cursor rather than dragging naturally. I will sort this soon I hope. The most annoying thing is that XNA is right handed which has confused my poor left-handed Direct3D addicted brain a lot. I'll have to eliminate all inconsistencies in my code to sort out winding order problems. Left handed forever! D: Drawbacks: Since I'm using 3x3 patches (9 control points per patch) it is not possible to represent curves perfectly. What this means is that curves will 'bulge' very slightly. If you survived it in Q3/D3, then I'm sure it won't be an issue. The reason I went with 3x3 is that it is much easier to actually control the end result. 4x4 allows the creation of curves that are almost indistinguishable from the real thing, but they are trickier to edit (you have to use a formula to get the control point values correct!) I've set the application up to be flexible, so I may be able to allow these to be used in future if people demand it, though. What it does mean is that if you make curved geometry in my editor, anything that must align with it perfectly (e.g. floor curve and the wall going around the curve) will probably have to be made using my editor, too (unless you like nudging vertices by 0.00001 units in hammer ...). Here's a couple of screenshots of what I've got so far: Screenshot one Screenshot two Link to comment Share on other sites More sharing options...
Pampers Posted March 3, 2008 Report Share Posted March 3, 2008 awesome can't think of any other features than making displacements based of a heightmap image although there are some other ways to do that Link to comment Share on other sites More sharing options...
dissonance Posted March 3, 2008 Report Share Posted March 3, 2008 Some sort of extrusion or lathing. Link to comment Share on other sites More sharing options...
Sentura Posted March 3, 2008 Report Share Posted March 3, 2008 interesting. could you perhaps be persuaded into creating a particle effect editor next? Link to comment Share on other sites More sharing options...
Punky Posted March 3, 2008 Report Share Posted March 3, 2008 I think it would be nice to have the ability to auto create basic (random?) Island shapes like cryengine 2 does. Link to comment Share on other sites More sharing options...
Defrag Posted March 3, 2008 Author Report Share Posted March 3, 2008 Can you be more specific? If it's terrain based then it's probably not suitable for the editor I'm making. Link to comment Share on other sites More sharing options...
Punky Posted March 3, 2008 Report Share Posted March 3, 2008 I saw a video of the cryengine where you could create a random basic landscape (a simple displacement like an island or a mountain) by the click of one button, you could also adjust the size and height of the landscape etc... Link to comment Share on other sites More sharing options...
Sindwiller Posted March 3, 2008 Report Share Posted March 3, 2008 I saw a video of the cryengine where you could create a random basic landscape (a simple displacement like an island or a mountain) by the click of one button, you could also adjust the size and height of the landscape etc... CryEngine 2 uses heightmaps for terrain geometry - as for the function you mentioned, it might be some advanced noise stuff That's completely not the thing Defrag is doing or what's even within the possible spectrum, as we're talking about the Source engine here. Link to comment Share on other sites More sharing options...
Punky Posted March 3, 2008 Report Share Posted March 3, 2008 I saw a video of the cryengine where you could create a random basic landscape (a simple displacement like an island or a mountain) by the click of one button, you could also adjust the size and height of the landscape etc... CryEngine 2 uses heightmaps for terrain geometry - as for the function you mentioned, it might be some advanced noise stuff That's completely not the thing Defrag is doing or what's even within the possible spectrum, as we're talking about the Source engine here. It would be cool if he could make something like that though and I have no experience with the CryEngine YET, but if making that for source is so impossible as you say it is than never mind, I have no other ideas for a displacement editor btw.... Link to comment Share on other sites More sharing options...
m8nkey Posted March 4, 2008 Report Share Posted March 4, 2008 Awesome stuff Defrag, I consider the displacement toolset one of the weakest elements of the Hammer interface. Judging by the screenshots your app looks capable of producing some really interesting shapes. I also think you're on the right track, focusing on smooth/curved geometric shapes. This is where the current toolset is really lacking. Everything you've mentioned, I've wanted in the past. One thing I'd love to see is an ability to automatically cap (or sew as it's refered to) any side of a displacement without requiring vertex manipulation to negate texture distortion. Let me know if you want some pics explaining what I mean. I'd also be happy to take this thing through it's paces if you want a beta tester, I love displacements Link to comment Share on other sites More sharing options...
dux Posted March 4, 2008 Report Share Posted March 4, 2008 I'd like to see a feature that magically makes Hammer not 100 years old. Link to comment Share on other sites More sharing options...
-HP- Posted March 4, 2008 Report Share Posted March 4, 2008 I'd like to see a feature that magically makes Hammer not 100 years old. ah ah! So true... I wonder when valve is going to make another editor, or at least improve the current one! Link to comment Share on other sites More sharing options...
m8nkey Posted March 4, 2008 Report Share Posted March 4, 2008 ":2zv84lu3]I'd like to see a feature that magically makes Hammer not 100 years old. ah ah! So true... I wonder when valve is going to make another editor, or at least improve the current one! Off topic but is it really that bad? Why is it so popular? Source has the games I play and hammer has a knowledgebase and familiarity spanning back to the days of Worldcraft. I don't know shit but I'd guess Valve are more likely to build upon what they have rather than start from scratch. As I said, Defrag's displacement editor would take care of my only real gripe with Hammer. Link to comment Share on other sites More sharing options...
Psyshokiller Posted March 4, 2008 Report Share Posted March 4, 2008 I think you should make it similiar to d3's patch/curve system. One important point would be, to be able to manually control the subdivisions horizontally and vertically. How would texturing them work? Link to comment Share on other sites More sharing options...
Defrag Posted March 4, 2008 Author Report Share Posted March 4, 2008 One thing I'd love to see is an ability to automatically cap (or sew as it's refered to) any side of a displacement without requiring vertex manipulation to negate texture distortion. Let me know if you want some pics explaining what I mean. I'd also be happy to take this thing through it's paces if you want a beta tester, I love displacements Yes, I'd like to see some pictures as that sounds like a useful feature Regarding testing it -- as soon as I have a version that has subtle (as opposed to very obvious) bugs, I'll put it up for consumption One important point would be, to be able to manually control the subdivisions horizontally and vertically. Unfortunately I can't do this; Hammer's displacements are equally subdivided. I could probably allow you to split geometry to get the same(ish) effect, but I'm not sure you can get exactly the same shapes if you have to do this. Link to comment Share on other sites More sharing options...
Recommended Posts