Sunday, May 24, 2009

org hungry, org want eat

So recently we've got the particles working, which has been an absolute pain to SORT out, excuse the pun.



Our main issues were with gamebryo's depth sorting and lack of support for most of maya's nifty particle features (maya being our 3D package of choice). Then there were the little things, like particle systems syncing themselves to the same play time, particle life span and emitter animations; it will ALWAYS look weird when bullet impacts sync themselves together so they can play at the same time regardless of creation. And finally no animated textures, and when animated textures were implemented no syncing to the particle animation; everyone likes an animated billboard looking out of place in a animation right?



Thanks to some lifesaving shader work from Josh we fixed our depth sorting issues and implemented our sprite sheet animated textures. And thanks to Eli and the discovery of NiPSEmitParticlesCtlr (time controller) hidden way down the .nif hierarchy (close to Atlantis I'm sure) we managed to fix our syncing issues.



As for our limitations with Maya, well... In retrospect the use of Maya for particle system creation probably was not the best choice (as gamebryos particle support for 3DSMax is exceptional in comparison). A large amount of fields and features (especially ramps over particle lifespans) were greatly missed (although ramps are VERY expensive to calculate on the fly), but with a lot of planning we were able to escape with some acceptable results.



Although we will be using 3DSMax to get some effects (streak particles... not supported with Maya, but are in 3DSMax ~strange) and some of the outcomes of our effects are less than desirable in certain situations (billboard explosions fail in nooks and cranny's).




Next was the implementation of a day night sky dome. The approach to this was very similar to layered paper. Clouds can animate around a center pivot following a spherical path, while the sky dome (which in this case is a sky sphere ~fancy) rotates slowly across it's x axis continually; wallah a dynamic sky. The changes from day to night are handled by a interpolating texture, keeping 4 stages for gradual texture change (day -> dusk -> night -> dawn) textures can interpolate to gives an even MOAR dynamic sky (lovely ^_^)

this is roughly demonstrated in my notes above (the images detail a bit of thought process, pretty diagrams and such... and a few doodles)



Tweaking shaders to get desired results is something we got on top of and sat on recently. Characters especially were something quite frustrating to get right. The behaviour of the rim light was much too strong and was awkwardly lighting characters feet (which looks funky in a dark environment as the character literally floats). After a little head scratching with shader sliders the conclusion was to include a height gradient to kill the rim lights influence closer to the feet (this gives the illusion that character slowly emerge from the darkness rather then floating ~huzzah chutzpah).



Finally, Level of Detail meshes. Thankfully this isn't something that causes brainpain (TM), as some earlier prototyping and research cleared up the programmatic implementation and the artist pipeline. Gamebryos support for Maya LOD groups makes LODing assets... well... easy? However connecting LOD meshes for characters to BoneLODs is a little (a lot) less forgiving for pipeline execution and looks like it could eat a little time in the future (oh dear).

And appropriate exit based off of the introduction

"HALT I AM REPTAR"

1 comment: