Awesome Grass Tutorial

All tutorials and guides related to TES III: Morrowind modding
Post Reply
User avatar
Scamp
Lesser Daedra
Posts: 465
Joined: Sat Jan 03, 2015 2:51 pm
Location: Kilkreath Mountains
Contact:

Awesome Grass Tutorial

Post by Scamp »

This will be an extensive tutorial on how to work with groundcover, as well as how to generate groundcover. This is mainly an extension of my previous Northern Gold Coast Grass Tutorial, which you can still find further down in this post.

First things first, you are going to need Yacoby's Mesh Generator. The latest version should be available for download here.

Once you have installed the Mesh Generator, you should find a small file called Grass.ini inside the installation folder. There's two ways to alter the settings stored in this file... either
use the Settings Editor (next to Output file when you run the generator), or just open the bad boy and do it manually (it's what I do). Keep in mind the settings editor is untested, so it might not work properly after all.

Let's go through all the options we have here. Feel free to use the settings editor to change these lines. I'll just go through the ini itself.
  • [GL_Grass_03]
  • - Basically this is the texture that grass will be generated on top of. For some reason no texture other than [i]GL_grass_03[/i] has ever worked for me. It doesn't really matter what texture you use... I'll base this tutorial on the fact that I am using this texture. But even if you could make it work with custom textures from [i]PC_data[/i], it's incredibly useful to be able to generate grass to certain areas that you can apply [i]GL_Grass_03[/i]/whatever on instead of generating grass all over the damn place.
There's several more options to restrict grass generation to a certain cell/region/certain cells.
  • [GL_Grass_03:Balmora]
  • - Affects only cells with the name [i]Balmora[/i]
  • [GL_Grass_03:ANY_NAMED_CELL]
  • - Affects any cell with a specific name
  • [GL_Grass_03:Bitter Coast]
  • - Affects only the [i]Bitter Coast region[/i]
  • [GL_Grass_03]
  • - Affects all cells
  • bPlaceGrass=1
  • - I don't see a reason to turn this off...
  • bPosRand=1
  • - This will generate random positions for the grass. If you turn this off, it will look as if you had placed grass with gridsnap:
Image
  • bRandClump=0
  • - Generates clumps of grass. Pretty worthless in my opinion.
  • bSclRand=1
  • - Makes the generator randomly scale all generated objects
  • fMinHeight=0
  • - The minimum height a mesh can be generated on. Obviously you might want to leave this at 0. Grass doesn't grow underwater.
  • fMaxHeight=256000000
  • - Can you guess it? The maximum height a mesh can be generated on. For instance, you can achieve such an effect:
Image
  • fPosMax=100/fPosMin=-100
  • - The higher/lower the number, the more grass. You can achieve the same effect by lowering/increasing the gap between individual meshes, so I always leave it on these numbers. Apparently it doesn't matter if the value is unsigned or not.
  • fSclMax=1.5
  • - The maximum scale the mesh may have if generated randomly, range goes from 1.03 - 2
  • fSclMin=1
  • - The minimum scale the mesh may have if generated randomly; Obviously you could set this lower for more variety. Range goes from 0.5 - 1.03
  • iBanOff0=128
  • - This is the number of ingame units that *should* lie between the banned ground texture and the spots you generate grass on. This is quite a broken mechanic though.
  • iGap=200
  • - Defines the gap between each individual grass mesh. 200 is a good number, though your mileage may vary...
  • iWeight=0
  • - Only works when generating containers, which remains untested and probably doesn't work
  • sBan0=GL_Dirtroad
  • - Grass will not be generated on this texture. Seems like it works only with one
  • sChance[n]=5
  • - The chance in percent that mesh [n] will be generated. In case you are generating only one mesh, obviously you should set this to 100. The numbers should add up to 100 (keep that in mind this time, wolli!)
  • sID[n]=
  • - In theory these should automatically set the generated objects' CS IDs to what you put in here. For some reason it only spits out error messages for me.
  • sMesh[n]=grass\[ScampIsAwesome].nif
  • - This is the directory your mesh/es is/are located in. /Captain Obvious
  • sName=
  • - Only relevant when generating containers.
  • sRecType=STAT
  • - The type of object you are generating. The program will make new entries for the generated objects in the appropriate section
  • sScript=
  • - Only relevant when generating containers.

That should be all regarding the ini. The settings editor should be pretty straightforward, though I've never used it. Now let's head over to the actual Grass.exe.

Image
  • Settings Location
  • - Captain Obvious: This is the location of your [i]Grass.ini[/i] that you have edited accordingly.
  • Morrowind Location
  • - This is just so that the game knows where to find the meshes folder and where to put the output file.
  • Output File
  • - Feel free to change the file name to something other than [i]Grass.esp[/i]. This is especially useful if you want to generate multiple files in a row without overwriting the previous output. The settings editor is the [i]GUI[/i] to use if you don't have the balls to edit your ini manually. /pun
  • Data files to search
  • - The program will generate grass only for the plugin or master files listed here. Since I am using [i]GL_grass_03[/i], I need to remove Morrowind.esm via the "remove" button before I generate anything. Don't wanna have grass all over the actual grazelands. It's not good having dirty files.
  • ID Append
  • - Pretty self-explanatory. This will put a prefix in front of your object ID in the [i]CS[/i]. I usually leave it at [i]"GRS_"[/i] because I replace new grass meshes with the [i]PC_[/i] ones after merging, anyway.
  • Z Offset
  • - Decides upon how much grass will be sunk into the ground. SGM claims that this has no effect. See for yourself.
  • Generate
  • - C'mon, are you really reading this? As if this needed any kind of explanation.
Now, there is just about two ways to work with the groundcover. I will talk about each of these in detail in the next parts of this tutorial.


Generating Grass Afterwards


This is probably the most common way of working with groundcover, and what you should be doing in the Southern Gold Coast. Mostly I would do this when having a lot of "solid" objects like rocks scattered around a cell, you should generate grass after placing all the actual statics.

I am going to skip to the part where you have already done the good stuff. Your cell looks somewhat like this now:

Image

Make sure you backup your file now so that you won't have to apply textures twice. Waste of delicious time.
Now, load the backup file and apply GL_Grass_03 to all areas where you'll want to have grass. In this case, it would be restricted to areas with PC_tx_GL_grass applied to them.

Status report:

Image

Now do you want cookies? No cookies for you! We're not done yet. Naturally, you will generate grass next. The ini for the Southern Gold Coast should look as follows:

Code: Select all

[GL_Grass_03]
bPlaceGrass=1
bPosRand=1
bRandClump=0
bSclRand=1
fMinHeight=0
fPosMax=100
fPosMin=-100
fSclMax=1.5
fSclMin=1
iBanOff0=128
iGap=250
iWeight=0
sBan0=GL_Dirtroad
sChance0=5
sChance1=20
sChance2=20
sChance3=55
sID0=
sID1=
sID2=
sID3=
sMesh0=grass\PC_Flora_GC_02_01.nif
sMesh1=grass\PC_Flora_GC_01_01.nif
sMesh2=grass\PC_Flora_GC_01_02.nif
sMesh3=grass\PC_Flora_GC_01_03.nif
sName=
sRecType=STAT
sScript=
Got that? Now you should have a [whatever].esp containing the groundcover in your Data Files directory. If it's something like 1 KB you shouldn't even bother loading it up, it hasn't worked. This could be because you had a wrong texture, wrong file paths or because your ini had typos or invalid values.
It will look like this now: Image Keep in mind you should load the grass file with your first file that does NOT have the GLified spots in it.

Don't forget to delete the dependencies on any esms via Enchanted Editor.

The real fun begins now! You thought this was over, didn't ya? Think again! We will need to fix any placement errors that the generator has produced. Unfortunately, the program is not able to determine whether grass is being placed into other statics or not. Furthermore, it happens ever so often that grass ends up in spots that it's not supposed to end up in.
Decide for yourself which method you like best for this. I can say that this is a very time-consuming part, no matter what. It pays out in the end though.

Before you do anything, though... It is not needed to combine the Grass.esp and the main file into one esp to work on the grass. It's actually a lot easier and safer to just load up both, but set the Grass.esp as the active file. You will have both loaded, but only changes made to the groundcover file will be saved.

In this shot, you see a couple grass meshes stuck on the road. Kill those with fire unless you wish to have an overgrown road for aesthetical reasons.

Image

As you can see, grass on rock textures doesn't make sense either:

Image

There are several ways I usually go on about deleting grass underneath or half in, half out of rocks. Firstly, you can turn the camera upside down, so that you'll be looking at the rocks from underneath. Now you can very clearly see any grass meshes camping beneath rock meshes. Simply select them and delete.

Image

A more convenient way is to leave the camera as is and just make a whole selection of the rock and all the grass beneath it, then deselect the rock. Now your selection will contain just the grass meshes that are bleeding into the rock or that have been generated underneath it.

Image

Well, you do that until you think it's fine. Yes, SGM, this might not be necessary. I am a perfectionist though. At least any bleeding grass should be moved out of the rock. You can simply handpick them and drag them around, make small adjustments to the rotation if necessary.


Generating grass Beforehand

In areas that are supposed to have a lot of groundcover and that don't really have a lot of rocks overall, I would highly recommend generating the grass before placing statics.

(This is, for the most part, the oldish NGC tutorial)

Let's just assume for now that you have a certain patch of land that you want to have groundcover on. Load your file and look straight at it until your eyes burn. Now you're doing it right!

Before you generate anything, make sure all of your terrain is perfectly free of any jagged or rough terrain. You must keep in mind that, with this method, you will not be able to change anything about your terrain layout once the grass has been generated. Smooth away! Given how generally flat the terrain in this region is, any jagged terrain should be fairly easily detectable. Make sure you apply ground textures already as well, as you want to know which areas should have groundcover and which should not. Naturally, if you wish to generate grass next to your roads, sink them first!

It should look somewhat like this:

Image

Once you're done, save your file and close the CS. Now you want to make a copy of your file that you should give an easily recognizable name, such as GENERATEGRASSFORTHISMUM.esp . Now load that as an active file.

What you will be doing (again) now is paint the ground that has the GC_grass texture on it with the texture GL_Grass_03. Only apply this texture to areas that should have grass!

Image

After staring at your screen some more and after the occasional bits of noticing that the texture looks quite cool together with all the GC stuff, you can now move on to generating your grass.

Save the GENERATEGRASSFORTHISMUM.esp and close the CS. Fire up the Mesh Generator. It should use the following Grass.ini for the Northern Gold Coast:

Code: Select all

[GL_Grass_03]
bPlaceGrass=1
bPosRand=1
bRandClump=0
bSclRand=1
fMinHeight=0
fPosMax=100
fPosMin=-100
fSclMax=1.5
fSclMin=1
iBanOff0=128
iGap=200
iWeight=0
sBan0=GL_Dirtroad
sChance0=5
sChance1=20
sChance2=20
sChance3=55
sID0=
sID1=
sID2=
sID3=
sMesh0=grass\PC_Flora_GC_02_01.nif
sMesh1=grass\PC_Flora_GC_01_01.nif
sMesh2=grass\PC_Flora_GC_01_02.nif
sMesh3=grass\PC_Flora_GC_01_03.nif
sName=
sRecType=STAT
sScript=
Have you got that? Neat. Now, shoot up Grass.exe. Set your Morrowind location and make sure you have only the GENERATEGRASSFORTHISMUM.esp in the list of data files to search. In other words, remove Morrowind.esm before you generate as you don't want to have grass all over the actual Grazelands. (As mentioned earlier in the tutorial)

Image

Now click on the 'Generate' button and watch the bar fill up!

If you haven't done anything completely wrong, you should now have a Grass.esp in your Morrowind folder. In theory, you could load just that file in the CS now and see whether your grass is actually there:

Image

But because that looks like rotten scamp skin, we are going to load it together with our original file, not the one we used for generating the grass.

Image

Behold!

Image

Lookin' good, eh? Now click on File -> Combine Loaded Plugins. Save that as a new file (for instance, NEWFILE.esp). It will automatically be set as your active file. It's probably best if you do not replace the GRS_ objects with anything yet, it'll be done when it gets merged with the existing Gold Coast areas so that we have one universal grass object for each of the 4 meshes. There you go! You're ready to work on the area.

[horizontalline][/horizontalline]
How do I split up the grass and the main file? I shall show you.

Make a copy of your NEWFILE.esp . You should name the other file SCAMPISGREAT.esp in order for this to work properly.

Open NEWFILE.esp in TESAME. Look for the four entries of the grass objects as shown in this picture, and delete them.

Image

Now save that file and open it in the CS as your active file. You will receive a couple of warnings that the grass is missing. Save the file once it has loaded. You will not receive any further error messages. This is your file without grass.

The process of creating a file that has only the grass in it is a bit more complicated. In theory, you just delete everything except the grass in TESAME - and the cells it is in. In practice, that can get quite a bit silly.

If your file contains only the cells you have generated grass for, just remove the landscape entries and you're done. In my case, these should be the only cells with objects in them that don't have a region applied to them (You can see the objects located in a cell by double clicking on it in the Advanced Mod Editor). Easy as well. If it's more complicated than that, just name your grass cells to something you will easily recognize, such as FARGOTH. Keep only those and the four grass pieces. No landscape entries.

Depending on how many cells are affected by your groundcover, it should look somewhat like this afterwards:

Image

There you go once more! This is your file that has only the grass. Again, don't forget to remove the .esm dependencies of your grass file with the Enchanted Editor. You have now successfully split the groundcover from your main file!
Last edited by Scamp on Mon Jan 05, 2015 5:27 pm, edited 1 time in total.

User avatar
SGMonkey
Site Admin
Posts: 293
Joined: Thu Dec 25, 2014 1:56 am
Location: Great Britain

Post by SGMonkey »

This is quite possibly the most awesome grass tutorial I have ever seen.

User avatar
roerich
Cruel Warlord
Posts: 2166
Joined: Sat Jan 03, 2015 3:10 pm
Location: Denmark

Post by roerich »

Woah, this is one awesome grass tutorial!
"I don't know if you are kidding but I 100% support a Big Mouth Billy Bass in PC"
- Taniquetil

Post Reply

Return to “Tutorials and Guides”