Search blog.co.uk

  • v3.01

    I've a feeling that I really should update this more often. Ah well, here goes:

    USE (University Sports Engine) v3.01
    Fixed:
    Lop-sided forums
    Standardised folder names
    Email addresses always being hidden

    Added:
    Icons for MSN/AOL/Register etc

    Known bugs:
    Picture association with even/match incorrect
    Profile picture upload not being available to everyone

    Scheduled additions in v3.02
    Tutorials
    "Who is in picture" to be displayed with each picture
    Rotate pictures in the edit picture menu
    Alternate profile picture upload

    The reason for all these new icons is that in the v3.1 update the website will be completely modular, split into Basic, Standard, Full and an additional module known as Fantasy Hockey, available for Standard and Full packages. The website has been renamed 'USE' for University Sports Engine. Therefore, the packages are named: USE-less (basic), USE (standard), USE-Full (Full) with Fantasy appended onto either of the latter two.

    Next week I shall be registering www.uni-sport.org and www.steel-software.com and moving hosts to Dreamhost which gives me a bucketload more space and bandwidth. From then, any uni who wants a sports website, just has to ask! They'll be limited with the choice of template at first, but that's a story for another day.

    v3.02 is scheduled for late next week. However, some of the changelist may be subject to change.

    :wave:
    Steve

    Currently Listening To: Belle & Sebastian
    Currenlty Eating: Very little, on a diet
    Currently Watching: Grey's Anatomy
    Currenty Reading: The Times (sudoku)
    Minutes Left at current job: 68

  • Website Changes

    Well, I've been hard at for for 2 weeks now and I've kinda ignored this blog, so, I thought I'd do a bit of an update. I'm not going to dump the changelog on here cos it's a few miles long, this "update" has become much more of a major change than I thought.

    Last year, there were no real functions for looking through previous years' data, or even separating it from the current year. Therefore, on this new version, users, matches, events and pictures now have an 'archived' field. There are now search facilities all over the site, all of which work on AJAX technology which makes things all nice and pretty. Therefore, the major changes are:
    Integrated PhpBB2 (single login, single database)
    Archive Support
    Added user details
    AJAX search across the site
    Fantasy Hockey online (currently not implemented)
    Added admin features including full user control, security log and information pages and adverts in the db
    Picture enhancements including better gallery, re-arranged directory structure and a "who is in this picture" aka 'facebook' functions.
    Additional squad filters by users' preferred playing position
    More user preferences and attributes.
    More match statistics including cards and a friendly option.
    and so on....

    Most of this is now done and can be seen at www.sheffieldhockey.com/beta

    It's fucking hard work. It'll all be done soon though, nearly there

    :wave:
    Steve

    Currently Watching: Green Wing
    Currently Eating: very little, damn bank manager
    Currently Listening To: Pink Floyd
    Currently Reading: A Scanner Darkly

  • Wrap-Up

    Ok, it's now been 3 weeks since I handed in my dissertation report and now is the time to share what I've found with you lot. First things first:

    Dissertation Report Document (3MB )
    Demonstration Video (HD, Quicktime 7 required, 295MB ) UPDATE: the link now works, sorry guys :D
    Dissertation Poster (20MB PNG file, 10k*7K full resolution )

    I'm now going to shamelessly cut and paste from the report itself giving the conclusion for the project.

    This project set out to create a method of realistically destroying or fracturing 3D polygonal objects in real-time. This technique was targeted for use in computer games to produce better interactive environments for the latest games.

    Research for this system came from variety of sources. The project was most heavily influenced by Fox [2] and Miller [3] yet the base for this entire project was the work by O’Brien [10]. Additional influence came from attempts to simulate this in commercial computer games such as Red Faction [13].

    It became clear early on that in order to maintain the real-time aspect of this system there would have to be an offline process to generate crack patterns. The Fracture generator created patterns in a way that could be directly influenced by an artist with the use of an alpha texture. This gave the artist much more control over how the crack pattern would look so that objects in the real-time environment would fracture in different ways dependent upon their material strength set out by the artist. However, due to difficulty with the implementation of the volumization algorithm, this module of the system was unable to output crack patterns in the desired format. If further work was to be carried out in this area, the modular design of the real-time and offline systems means that the real-time program does not have to be rebuilt as it will accept crack patterns created with any generator.

    With a manually created crack pattern, the real-time aspect of the system, the fracture viewer, was able to successfully crack objects in to the volumes set out in the crack pattern. The performance of this system was good; however, the time to complete the cracking process was noticeable in models with more than 1000 polygons. Using this technique on low-polygon objects such as walls, glass and small to medium sized household objects would be an excellent way to simulate a dynamic environment. That said, improvements to the cracking algorithm could be made. Using a high-performance programming language i.e. C++, would improve the speed of the algorithm so that this polygon limit may be increased; however, the choice of C# as the programming language was the best language for the rapid development of the project at the time. An optimized sealing algorithm would decrease the number of polygons to be rendered in the resultant pieces, thereby increasing rendering speeds. The use of a bounding sphere test with each volume in the crack pattern could also increase performance. With the advent of multiple processor desktop computers this process could be threaded and performed in parallel so that the performance of this process is increased significantly.

    The quality of the resultant pieces was generally good. As described in section 6.4, problems were encountered re-meshing the pieces. Whilst this caused problems with more complex crack patterns, figure 6.7 showed that the re-meshing process could work successfully. The quality of the sealing algorithm was acceptable but further work into this area of the algorithm should be performed.

    If this system was added to a physically based environment (by the inclusion of a physics engine in the computer game) the resultant pieces of a cracked mesh would be animated in a realistic manner. This would make the destruction of each 3D object look realistic and therefore suitable for a commercial product.

    Quite simply, with a bit more work on the re-meshing (using multiple clipping planes to seal the mesh, a better algorithm than the naive one to create continuous meshes that normals could be created from) and getting a bit of shading on it and it'd look much better. But, the potential is there.

    Finally, a bit about MDX. Personally, I've loved working with the API. It's been simple to do even the more complex stuff with it and I've been learning 3D programming for less than 8 months. However, one or two little things bug me, like how much difference having the MeshFlags as Dynamic instead of Managed or SystemMemory makes (gave me a whole week of headaches). I would recommend it to the industry.... but not for commercial games. Use it for concept prototypes where the time you have to build something does matter or for a throw-away part of the game. MDX code takes an awful lot less time to write than UnMDX and is a lot less prone to niggly stupid bugs that pointers tend to introduce. MDX is just not fast enough for commercial development. 20% of your framerate is a lot to lose!

    So, what next for me...
    Back to website development really. I've got 3 on the go. Sheffield Uni Rowing Club want in on the squad system so they're getting a cut n past job of the hockey website, TSC needs an update and the hockey site itself is getting the works, including integrated PHPBB and my own fantasy league online that's integrated into the user database and match reports system. That's gonna take a looooong time to do.

    I'll keep y'all up to date with that over the summer
    :wave:
    Steve

    Currently Listening to: Guillemots - Best live band EVER
    Currently Reading: 1001 Albums you must listen to before you die
    Currently Eating: Birthday Cake - (I was 21 yesterday)
    Currently Drinking: Champagne (see above)
    Days until my one and only exam: 7

  • Done

    Whilst I write this I'm feeling like one very happy bunny. I've finished writing the first draft of my dissertation, it's only a casual 18,100 words long, 69 pages, easy peasy. If you want to have a look: My webspace contains a PDF (2MB) and a DOC (Word 00-03 compatible) file (9MB). Zip file in that folder contains old code but the movie shows a cracking process happening.

    I'm going to bring attention to one very important part of the evaluation, the performance tests. The image below is the performance graph that's in my dissertation

    performance chart

    Look at the polygon count along the bottom and then the time taken up the left. Put simply, for integration into a game, the process must take less than 0.1-0.2 seconds (there are performance improvements to be added, one of them being writing it in C++ and the other being working directly with the Vertex and Index buffers instead of writing to memory first). This limits you to a polygon count of around 600 for a crackable object. Think about it, that's not too much, but it's enough, probably more than enough for most scene objects (look at Unreal Engine 3, most of the detail is in Normal and Relief maps, the actual polygon count hasn't risen much at all). Basically, this can be put in to a game, quite easily too, and it'd look very good and be very effective. Now all that needs to be done is for the right people to listen!

    I've actually had a lot of fun doing this project in the last few days. Seeing it all come together is a fantastic feeling which is almost rivalled by the fact that it WORKS!!! (something I still can't believe really). I've learned so much about graphics, game programming design and how object-oriented languages are simply better than anything else. Visual Studio 2005 has been a pleasure to work with and MDX just makes things simple. Something in C++ like optimizing a mesh would involve a whole lot of pointers and guff, in MDX it's just Mesh.Clean(...). Why can't people see that for prototypes and technique tesiting like a project such as this is it's just perfect. If industry prototyped ideas often they should do it in MDX. No arguements.

    Ah well, I'll let you know how the final version comes out when it's handed in in 12 days time :D Unfortunatley I now have to work on my other projects that I've ignored (1x concurrent systems, 2x programming language semantics and 1x computer games tech which is implementing an edge collapse algorithm... yay)

    :wave:
    Steve

    Currently Listening To: Hot Hot Heat
    Currently Reading: ... through my dissertation
    Currently Watching: Green Wing
    Currently Eating: Bananas
    Days until deadline: 12

  • Don't Let It Get To You

    Well, last week was a lot of fun, the second half especially (the first half of the week was rubbish, as explained in my last post). However, it's over now and I've gotta concentrate on writing up my dissertation.

    This task is unfortunatly being hampered by my body. Yes, that's right, I've got a throat infection and since I went to the doc's on Monday to get some antibiotics I've been feeling rubbish. Constant headache kinda thing, not sleeping well and generally not being able to concentrate. Nor does it help that there's no one in my house but me, or that it's suddenly turned really sunny outside and I don't have a laptop. I've just gotta not let it get to me :)

    However, some really good news:
    The Project WORKS!!
    After discovering my rather mickey-mouse error of giving a 16-bit IndexBuffer a 32-bit integer stream everything suddenly started working. Clipping works very well too and I appear to have gotten Clip3 to work too (Clip3 is a clipping case where all of the vertices of a triangle are considered to have been clipped by different polygons but there is infact still data inside the volume).
    Here's a picture to show you:

    tinyb4

    tinysplit

    This model is the 4000+ polygon model "tiny" supplied with the DirectX SDK. Some things of note. Currently, not all polygons are correctly wound. I need to get it to look at which way the original triangle's normal is facing and then wind it in the correct direction. Also, the mesh does not retain any texture data. This is quite simply because I'm not giving it any. For polygons totally inside a volume this would be easy to implement, however, for clipped polygons this would just be another thing to work out and it's quite tricky. This process also occurs in noticable time i.e. about half a second. With larger models this would be more noticable, with models of around 1000 polygons it may not be noticable.

    To improve the performance of this method, I plan to multi-thread it to make use of my dual-core processor. Am I cheating? Not really. Basically I want it to have the initial intersection in the main thread and then each call to clip is in another thread. To avoid any indexing screwups the main thread will have to wait for the clip to join before it calls another clip or adds to the vertices itself. I'll have to run that past my tutor though, just to make sure it's not going to ruin everything or that there isn't a better way.

    One final thing. It should be noted that I'm not cut out for 3D modelling. Since the generator didn't work and I'm having to manually make each crack pattern, then manually edit the .X file so that each polygon is double-sided and that it is indexed in such a way that each volume goes from one series of indices to another before describing any other part of the model. When you've just finished making a 200 polygon model, you know that's when it's going to get tedious and in my current mental state I'm just not feeling the love. As this entry title says, don't let it get to you.

    :wave:
    Steve

    Currently Listening To: M83, Pure Reason Revolution, The Infadels, The Raconteurs. 4 bands that I've only just started to listen to but all of them are utterly amazing.
    Currently Eating: Amoxicillin
    Currently Drinking: Masses of tea
    Currently Watching: Deal or No Deal (UK version, infinitly better than any other)
    Words in dissertation: 9,200

Recent posts

more posts…

Footer:

The content of this website belongs to a private person, blog.co.uk is not responsible for the content of this website.