TTLG|Thief|Bioshock|System Shock|Deus Ex|Mobile
Page 1 of 3 123 LastLast
Results 1 to 25 of 66

Thread: Snow - material and weather effects.

  1. #1

    Snow - material and weather effects.

    A 4mb movie to download:
    Or to view in a player:

    A falling snow - the movie (3.6 mb).
    A snowstorm (5 mb)


    Beta version of a tutorial in a .doc file, with better formatting.


    In this tutorial you’ll learn how to create your own material category and how to assign a set of sound schemas to a new surface type. You’ll need 3dsmax 5.1 (properly set up to work with T3ed) to create a new material, and you should know how to do it in a first place. You might also need a Gimp or Photoshop for making textures, and some sound processing software, if you don’t want to rely on my little package.

    Advice: you’ll be working with schema browser for most of the time. As you know, it takes forever to load and you’ll need to restart it several times... Fortunately, you can vastly shorten its loading time! Go to your “\...\CONTENT\T3\Sounds\schemas” folder and select all items you have there. There should be “conversations” folder here, unselect it. You probably have some archiving software already installed on your system (e.g. WinRar or 7zip), so right-click the rest of the files and choose to rar/zip them from the Windows context menu. After you create the archive, DELETE all the content except “conversations” folder. You have it all backed up in the archive, so there’s nothing to worry about. When you restart T3ed and launch the schema browser, you’ll see that there are about 1 700 schemas loading, instead of 16 000. Those schemas you deleted are the all the one-liners for the AI while patrolling, searching, alarming others, etc. They’re already in .csc file so the only consequence of that action might be the absence of the subtitles while you’re in a test mode, nothing more than that.

    1) Preparing the sounds

    First of all you’ll need the sounds. You can use free sound repositories, like Soundsnap to download and prepare the files (with software like Audacity or CoolEdit Pro). In our example you’ll need 4 different footstep sounds in the snow and a jump sound. Use following guidelines as a rule of thumb:

    - All the sounds should start at more or less the same point in time (e.g. 0,02 sec.).
    - All sounds should have a similar, short length (e.g. 0,3-0,5 sec.).
    - Remember to normalize all your sounds at the same high level before saving, making them as loud as possible without being distorted.

    If you don’t have a sound processing software or don’t know how to prepare such sounds, you can use my package:

    Put those files in “\...\CONTENT\T3\Sounds\schemas_sfx” folder.

    2) Creating a new material category for 3dsmax

    This is a pretty easy task. Go to your “\...\CONTENT\T3\MatLib” folder and open categories.txt file. Add a snow category at the very end of the list. Now open the DynamicallyLoaded folder and do the same in txt file you see there.

    If you start 3dsmax and try to create a new material via Ion Shader, you’ll see a new category in the dropdown list. First of all, you’ll need to create a snow diffuse and normalmap. You can use your own textures or try out mine, if you don’t have that much time. After you finish, put those .dds files in your “Textures” and “PCTextures” folder.

    I use a small, plain white (128 x 128) texture plus a tiling normalmap based on the photo of the snow (1024). I think it looks more “pure“ than a photo of snow + normalmap (and it takes up less space ;)). Anyway, the choice is yours. There are more complicated things to do after you save the material library and export it to .mlb file.

    3) Creating new tag values

    Sounds a bit exotic, does it? For now you have a new material category, recognized by 3dsmax. T3ed also recognizes it as new thing, but you’ll need to assign new sounds to it somehow.

    If you open the schema browser and look at some files in schemas_sfx, you’ll notice those with “ft_materialtype_pc_movementtype” name pattern. “Ft” refers to footsteps, material type is an obvious thing, “pc” stands for player character (notice that there’s also the “ai”) and movement type is pretty self-explanatory as well. Now if you select for example ft_veg_pc_walk and take a look at “Tags” field, you’ll see four of them:

    +footstep: - a tag without any value, probably indicating that this is a surface on which characters can walk.

    +charactertype:player - this, in connection with AI noise type field is probably the information for AI that this sound is generated by Garrett and it should pay attention to it. Notice that ft_veg_ai_walk sound doesn’t use this tag and “AI noise type” is set to “unassigned”.

    +movementstate:walk - this is pretty self-explanatory, it defines the movement type needed to hear this schema.

    +groundmaterial:vegetation - this tag is the most important thing here. I guess that it is responsible for associating the sound schema set up here with material category defined in “categories.txt” and in 3dsmax via Ion Shader. If you click “Modify tags” button, a new window will appear. On the right there is a list of tags currently assigned to this schema. If you select groundmaterial:vegetation and press “Edit value” button you’ll see that you cannot choose the new “snow” value here. That’s because it wasn’t defined yet.

    The next logical step would be to open the Tag Database (View -> Tag Database -> Sounds), but after the new window appears you’ll see that it’s completely useless, you cannot add new values here at all...

    Fortunately, there’s a workaround for that. If you ever tried nosing around in your editor install, you probably saw a “\...\CONTENT\T3\TagDatabase” folder. There are three subfolders there. You cannot do much about first two, but “Vocabularies” folder is what you need. Use Notepad to open “PhysicsSounds.vcb” file. You’ll notice 2 particular tags in there one starting with “+PO1Material” and the second with “+PO2Material”. You’ll see some familiar material categories in each. Put colons at the end of both and add snow category there. Both tags should look like this:

    +PO1Material|bitfield|unassigned:carpet:ceramic:earth:flesh:glass:gravel:metal:moss:puddle:stone:til e:vegetation:wood:stoneclimb:ShallowWater:DeathWater:snow

    +PO2Material|bitfield|unassigned:carpet:ceramic:earth:flesh:glass:gravel:metal:moss:puddle:stone:til e:vegetation:wood:stoneclimb:snow

    Save the file, close it and open “sounds.vcb”. You'll see sound tags here, sorted by categories. Scroll down to “SFX TAGS”, find the +groundmaterial tag along with its values. Again, put a colon right after “stoneclimb” value and add snow category. The tag should look like this:

    +groundmaterial|bitfield|unassigned:carpet:ceramic:earth:flesh:glass:gravel:metal:moss:puddle:stone: tile:vegetation:wood:stoneclimb:snow

    Save and close the file. Now after restarting T3Ed and schema browser you should see a new value that can be assigned to +groundmaterial: - a snow category.

    4) Creating a set of schemas for new material category

    Now comes the most tedious part. Actually it would be much faster, if you did by copying and editing .sch files in Notepad, than using schema browser, but I’ll use schema browser for a first time.

    First, put all the four sounds in your “\...\CONTENT\T3\Sounds\schemas_sfx” folder. You could make a separate folder for it too, or use any naming convention you want, but you’ll be comparing a lot of things with what developers did.

    Ok, (re)start T3ed, open schema browser and right-click “schemas_sfx”, choose “add schema to this folder”. Name it according to the convention, so you won’t have to scroll the list down too much while comparing it to other surface schemas, i.e. ft_snow_pc_walk.

    Add 4 more metasounds to it, name those with numbers, from 1 to 4 and delete the “meta1” entry. Select the first metasound go to the “WAV” field on the right, click “Change” button. Choose the first file from the package you put in “schemas_sfx” folder, i.e. ftsnow_p1.wav. repeat the process for metasounds 2-4, assigning the rest of the files (except the ftsnow_pj.wav, which is a sound of jumping).

    Now you’ll have to set values in “Parameter ranges” field. In order to do that properly, I looked for the values for the similar sound set, i.e. sounds assigned to “vegetation” category. Click the ft_veg_pc_walk schema to see it’s parameters. You’ll see that the volume range is set to -27, -27; pitch range is set to 0 in both boxes; pan range is also 0, while inner & outer radius is 5 and 75 respectively. Put those values in your ft_snow_pc_walk schema.

    Ok, now it’s time to tell the game that you want those sounds to be assigned to a surface and recognized by AI. Click the AI noise type rollout menu and choose footstep_normal. This should be enough for the AI, as walking on a snow isn't as loud as walking on metal or tile, while it's louder than walking on carpets, for example. Then set metafile storage to memory and move onto Tags field.

    Click “Modify tags” button. You have to select four tags and assign them to the schema using “Add” button. You can select them one by one, or all at once, using LCtrl-click. Those tags are: +footstep, +charactertype, +groundmaterial and +movementstate. You already know what they do, so let’s just choose the proper values. +footstep doesn’t require anything, for +charactertype choose player (obviously), for +groundmaterial select snow, and for +movementstate pick walk. Now use “Save this schema” or “Save all” button to finish making the first set of sounds needed for the snow to “work”.

    Whew, not bad but you’ll have to repeat this process a few times. The good thing is, you can copy this .sch file in your folder and just rename it and change some values with a Notepad. So duplicate your ft_snow_pc_walk schema and rename it to ft_snow_pc_run. When you compare it to ft_veg_pc_run, you’ll see that only a few things changed: the sound is obviously louder (volume range set to -21, -21); there’s a slight change in a pitch range (2 to 2); and the tag +movementstate has run value (self-explanatory). After you finish making changes, save this schema and prepare for the next set to be done.

    So, you got sounds for walking and running Garrett, now it’s time for sneaking Garrett. This is where I was stunned by a brutal truth: the game doesn’t actually play any footstep sounds when Garret’s crouching! How come I haven’t noticed that before! Yes that’s quite embarrassing, really, but it doesn’t mean that game can do without crouching sounds schema. On higher difficulty levels AI with better “sensory model” can hear Garrett if he’s sneaking too close to them, so the next schema will serve as a guideline for our little guards and some other adversaries.

    Again, duplicate one of your .sch files (ft_snow_pc_walk preferably), rename it to ft_snow_pc_crouch. Compare it with ft_veg_pc_crouch and change “parameter ranges” to those values (volume range to -33,-33, pitch range to -2,-2, etc). In “tags” field there’s only one thing to change: +movementstate to crouch. Good, now it’s time for the last sound schema for the player.

    You won’t be duplicating anything, so create a new schema with your browser. Set its name to ft_snow_pc_jump. Create a metasound and name it 1, delete “meta1” entry. Press “change” button in “WAV file” section, choose ftsnow_pj.wav. Select ft_veg_pc_jump schema and put its values in your schema. Notice that this time AI noise type changes to landing_normal. Also remember about setting metafile storage to memory and +movementstate to jump.

    Ok, I guess you have enough of it and finally you’d like to see some results! I assume you already have some test map for such things. If not, just make a simple cube, add a Light, PlayerStart and paint the “ground” surface with your new snow texture. Also, make a separate room, far away from your test area and put four empty AmbientSound markers there (Actor browser -> Marker -> Keypoint -> AmbientSound).

    Select all of them and open their properties window. Add Sound -> SoundAmbient property. Now add the four schemas you created (ft_snow_pc_walk, ft_snow_pc_run, ft_snow_pc_crouch and ft_snow_pc_jump). Rebuild your level and use “send to xbox” command to launch the test mode with sounds playing (if you don’t have your xbreboot.bat file, search the Fleshworks Wiki). Notice how the sounds change when you run, walk or jump!

    4a) Creating a set of schemas for walking AI

    You already achieved a lot, but you’d want to hear AI’s footsteps too, right? Fortunately, you can still copy your .sch files to make your task easier. As you see in the other examples there are only 3 schemas for the AI per material. Thus you’ll need to create ft_snow_ai_walk, ft_snow_ai_run and ft_snow_ai_jump. I won’t go on about that in detail, because you already know the drill: you need the same 4 sounds for walking and running schemas and one file for jumps. The sound volume will be different, however. Search for the values in ft_veg_ai_walk, ft_veg_ai_run and ft_veg_ai_jump schemas, then use them in yours.

    You should also notice and remember about a few things. First of all, set AI noise type to unassigned. Second thing, delete the +charactertype:player tag. This way you make sure that AI won't alarm itself with its own footsteps (that would be silly, right?). Also, there’s no separate schema for crouching. Most AI’s are poor at sneaking so they make the same sounds while

    When you finish adjusting/saving your schemas, remember about putting them in your level as well (place another three AmbientSound markers in that room, or maybe make a separate one for the AI to keep things in order).

    Finally, put some (preferably friendly or neutral) AI in your test map, make patrol points and connect it. Change its MovementType in a few spots to see whether you can hear running sounds too. If you were careful enough, you should have a fully working (or rather sounding) snow material! Good job!

    5) Sticking arrows

    This is really simple. You want your arrows to stick in the snow? No problem, just open Actor browser, select MetaData -> Materials. You'll see Earth, Stone and WoodMaterial there. Right-click the Materials, choose “New”, name it SnowMaterial. Go to it’s properties on the right, again right-click and “Add property”. Select MaterialArch from the list on the left, then choose both bObjectsStickIn and MaterialCategory. The first must be set to True and the second to snow, of course. Save the Gamesys, add some broadhead arrows to your map, rebuild it and test it. Now you should be able to take out your arrows both from brushes and static meshes. Have fun!
    Last edited by Judith; 10th Dec 2008 at 18:30.

  2. #2
    Registered: Nov 2005
    Location: Europe
    It works! Incredible!!!

    Thank you, Judith.

  3. #3
    Registered: Aug 2006
    Location: Deutschland
    Very compacted snow. Can we have kind of emitter (whatever) footprints vanishing after some time?

  4. #4
    Ha, I knew you'd find something that will turn this small victory into a bitter taste in the mouth

  5. #5
    Registered: Aug 2006
    Location: Deutschland
    And I knew you wanted to hear something like that.

    Hey, honestly it looks and sounds really cool. How did you manage the csc (or not-csc) thing?

  6. #6

    I didn't hack the csc thingy. I used the trick with assigning sounds to and putting them as ambient sounds in the isolated room in my map. Somehow this works as if you put it in .csc file. You can use such sounds as streaming schemas in your zones too. More details later

  7. #7

  8. #8
    Raindrops, snowflakes, falling leaves...

    Ashes from chimneys, or ashes and sparks from burning structures or forests.

  9. #9
    Keeper of FMs
    Registered: Oct 2004
    Location: Meraux, LA
    That's fantastic, Judith! It's the perfect time of year for it, too.

  10. #10
    Thanks, all. I'll try to finish the tutorial first, but there are some effects that could be added here, like snow particles at your feet when you're moving or jumping (something similar to the way ShallowWaterVolume works). Footprints in the snow, being an inspiring idea nonetheless, may be a bit too hard

    Also I've been studying emitters a bit, and I hope that making a believable rain, snow or blizzard is possible, without using 10 000 emitters for each drop/snowflake (so performance-wise too). I'll try to think of something after I finish the basic tutorial.

  11. #11
    Registered: Aug 2002
    Location: Siberia, Russia
    Cool, Judith

  12. #12
    Registered: Aug 2002
    Location: Siberia, Russia

  13. #13
    Added the tutorial, also in a .doc file.

  14. #14

    A falling snow - the movie.

    I had an ambitious plan, I wanted the snowflakes actually fall on the ground and stay on it for a second or two, but when I turned collision on the performance dropped so awfully that I decided I'll live without it This is one emitter really, filling the space of 2048 x 2048 uu with 4000 particles. Fortunately, performance drop is none so far

  15. #15
    Pretty cool, man!

  16. #16
    Registered: Jan 2001
    Location: Exiled in sassenachland
    Awesome! A breath steam emitter for NPCs should be fairly easy to do as well. Wonder if you could put one just below the camera as well - it would either be brilliant or annoying beyond belief.

  17. #17
    Moderator and Priest
    Registered: Mar 2002
    Location: Dinosaur Ladies of the Night
    That might be a better idea for 3rd person or for NPCs only. It'd be too distracting in FP.

    Also, I have to comment on that sky. It looks absolutely amazing, and I'd love to know how you did it. Though to nitpick, I think it'd fit better as a spring storm rather than a heavy winter sky.

  18. #18
    Registered: Aug 2002
    Location: Siberia, Russia

  19. #19
    Registered: Aug 2006
    Location: Deutschland
    Yes, low thick clouds would be a better sky, but that was just a demo anyway. And it looked great. Just the cynical girl had no real winter's clothing. You should give her a hood or a chapka. The latter is one of the hats from the AI_parts section. (OK, not a real furry one, but better than nothing)

  20. #20

    That's right guys, that's just the demo, I simply used the skybox I had in this map already

    As it goes for the sky, this is the texture:

    As you see those are generated clouds, with some bluish tinting. This is a normalmap for it:

    That's right, those clouds are not transparent. Yet somehow the stars look as if they were behind the clouds Actually, this is a texture put into a spotlight:

    Breath emitter shouldn't be that hard, we could attach it through the actor browser, both for Garrett and all the AI characters. Initially, its bOutOfWorld property could be set to true, so nobody don't uses it in the interior locations. Setting up the flag or global variable like ColdBreatVisible plus a script and a volume could make AI use this emitter only while walking outside, for example

  21. #21
    Breath won't look right when an AI is speaking or while jogging, though, but just fine when they're not. Makes me wish there was a breeze.

  22. #22
    Quote Originally Posted by ShadowSneaker View Post
    That is so amazing. It's beautiful. How did you make the snowflakes? Did you just alter an existing emitter or make an entirely new one? I tried making a new fountain emitter; I wanted to change the colour of the water and it crashed T3Ed.
    Well done .

    It was a new emitter created in the actor browser from scratch. Actually I forgot how to do the textures "the old unreal way", so I used one of the stock T3Particles. Of course in the you can use snowflake textures, such as these.

    Quote Originally Posted by jtr7 View Post
    Breath won't look right when an AI is speaking or while jogging, though, but just fine when they're not. Makes me wish there was a breeze.
    Nah, it should be fine, you can do some particle trails, remember ghost of Lauryl?
    Last edited by Judith; 9th Dec 2008 at 05:53.

  23. #23
    Registered: Aug 2002
    Location: Siberia, Russia

  24. #24
    Whoa, Judith! You mean to tell me you can control when the emitter emits through the lip-synching and alertness levels?

  25. #25
    Nah, I was thinking about something simple: the trail of steam, like you have a trail of smoke, coming out of a character's mouth, taking movement into account and dispersing after a while Can it be synched with AI's barks? I don't think so. But you could set a script resetting the emitter when AI goes to alert, or calms down, so it will be at least a bit more realistic. I believe the player won't pay that much attention to it
    Last edited by Judith; 9th Dec 2008 at 06:54.

Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts