ID:152678
 
I know, I said I'd give up after the last one, but I just had to give BYOND another chance. I made it so that there is a LOT less unused space, and I used Lummox's IconCutter to generate these icons.




Image hosting by Photobucket

NOTE: This time I filled the little circle up with white, rather than red, in case someone comments yet again that he looks sick. :P




Here is with less concentration of black space on the base turfs.

Image hosting by Photobucket


Let the truth be told, I like the top one better
In response to VolksBlade
VolksBlade wrote:
Let the truth be told, I like the top one better

Eh? Any way I can improve the bottom one? I ended up preferring the one with less unused space ( transparent gray, I guess I can call it ), since it ended up looking more...grassy...than the other one. The only reason I started out with the top one is because I was hoping that it'd look like dirt, which did not work out.
In response to Audeuro
I think you could add more Green color's like make it mixed between light green and dark green and some middle-ish color green
In response to VolksBlade
I tried to take your advice and I used lighter greens and darker greens in many places, and filled in even more transparent-gray spots with some green. Here's the result.



Image hosting by Photobucket

To be honest, they all suck badly. The second one is probably better, but there's not much in it.

If you're serious about wanting to make decent auto-generated icons, I suggest you do a web search on procedural textures.
In response to Audeuro
Parts of that tile are starting to look pretty good. Maybe take the darker patches and use those to pattern the rest of the tile and see how it looks from there?
In response to Audeuro
Audeuro wrote:
I tried to take your advice and I used lighter greens and darker greens in many places, and filled in even more transparent-gray spots with some green. Here's the result.

Image hosting by Photobucket

You might want to take out the borders -_- That rather looks like a floor than grass =P

O-matic
For starters, never, never use the neon green shade...lol

Grass is far more dark than that (unless you look through a blade at a light source)... So that bright green is not good at all for it (well, maybe as a very sparse highlight color, but never, never as the base color of the turf)

In fact, darkening what you've got so far would improve it dramatically... However, it would still not be perfect, as there's a definite tile effect (you can tell there are squares tiled together), which a good turf icon will try to eliminate... The goal is to make it look like there is no line between each tile... Like the entire surface is one big pattern, rather than a bunch of squares next to each other...

[Edit:] Also, don't use black as your darker shade... Use shades of green, and use more than just 1 dark and 1 light...
In response to Audeuro
That tiling effect is awful. =(
In response to SuperSaiyanGokuX
[Edit:] Also, don't use black as your darker shade... Use shades of green, and use more than just 1 dark and 1 light...

I used a dark and 2 lights, and I did not use black as my darker shade. O_O

[EDIT]

Well, I'm redoing them as we speak to see how it turns out with a little darker light colors and a few more dark colors.
In response to O-matic

You might want to take out the borders -_- That rather looks like a floor than grass =P

O-matic

I actually am planning on it later on. The walls* belong there, but the grass does not. I'm going to be eventually moveing it.




*: Again, more temp icons. The walls look better than the grass, though, do they not? :P
I've tried my hand at generating grass like that before, and I've never been really satisfied with the results. In the end, I just end up drawing a few grass tiles myself and randomly place them on the map. With a little effort, you can create some really nice grass with a handful of tiles. This one uses 5 tiles randomly placed.



~X
In response to Xooxer
That looks quite a bit better than mine, still.

For the ones I'm doing, I think the main problem is that for the icon cutter, I'm drawing straight lines across the north, south, east, and west ( with the ones that need it ), and I should probably, rather than doing that, draw it then move the tile down once to match 'em, and then left once to match 'em, instead of drawing straight lines across, etc, just to make 'em match perfectly.
I'm really not sure why you'd use IconCutter for this, since there's no apparent autojoining going on.

The main thing you need to do, though, is work on color. Grass is going to have a variety of green colors, from very dark to about midtone. The bright bright green you've got there would never appear in a realistic grass tile.

Lummox JR
In response to Lummox JR
I'm not sure why now, but I had decided to at one point do that. I was really tired when I did the first ones, and I'm still really tired now.

I'm currently redoing the icons, as well, with a little darker light shades of green.

[EDIT]

Bah, I'm giving up on natural objects. Again.
In response to Audeuro
Don't give up, just keep trying and look around at other grass turfs and such. Get a good feel of how they're made and such and keep practicing. Sooner or later you'll get it right.
In response to Lord Solemn
If you produce each grass pixel randomly within the range of 100-150 green, you will obtain nice grass. I learned for a fact that too bright of grass can cause eye strain or other sorts of problems. Heres a sample from my Topic that others have seen:

http://img.photobucket.com/albums/v458/Bandock/Screenshots/ GrassGeneratorPrototype2.png

Even though, I usually don't give out color combinations. 100-150 green range is very good in my opinion. B)
In response to Bandock
Oooo.
Good Advice. I think I'll use it later in life.
Here's a little code I whipped up for a grass icon generator. Now there's probably no escaping a tiled look unless you're willing to play with the output in Photoshop, but this gives you a good place to start:
icon
var/icon/nexti
var/icon/nextj

proc/DrawWrapPixel(overlapdir,color,x,y)
x=round(x,1)
y=round(y,1)
if(x<1 || x>32)
if(nexti)
if(x<1 && (overlapdir&WEST)) return nexti.DrawWrapPixel(overlapdir,color,x+32,y)
if(x>32 && (overlapdir&EAST)) return nexti.DrawWrapPixel(overlapdir,color,x-32,y)
x=(x-1)%32+1
if(y<1 || y>32)
if(nextj)
if(y<1 && (overlapdir&SOUTH)) return nextj.DrawWrapPixel(overlapdir,color,x,y+32)
if(y>32 && (overlapdir&NORTH)) return nextj.DrawWrapPixel(overlapdir,color,x,y-32)
y=(y-1)%32+1
DrawBox(color,x,y)

proc/DrawGrass(grassprob=80,startangle=20,anglevariance=15,avglength=5,lengthvariance=1,nooverlay)
if(startangle<0 || startangle>=360) startangle-=360*round(startangle/360)
var/overlapdir=0
if(startangle<90 || startangle>270) overlapdir=NORTH
else if(startangle>90 && startangle<270) overlapdir=SOUTH
if(startangle<180) overlapdir|=EAST
else if(startangle<180) overlapdir|=WEST
var/icon/I=new('blank.dmi')
if(overlapdir&12) I.nexti=new('blank.dmi')
if(overlapdir&3)
I.nextj=new('blank.dmi')
if(I.nexti)
I.nexti.nextj=new('blank.dmi')
I.nextj.nexti=I.nexti.nextj
var/xs=(overlapdir&EAST)?32:1
var/xinc=(overlapdir&EAST)?-1:1
var/ys=(overlapdir&NORTH)?32:1
var/yinc=(overlapdir&NORTH)?-1:1
var/i,j,x,y
for({j=32;y=ys},j>0,{--j;y+=yinc})
for({i=32;x=xs},i>0,{--i;x+=xinc})
if(!prob(grassprob)) continue
DrawBlade(I,startangle,anglevariance,avglength,lengthvariance,overlapdir,x,y)
if(nooverlay) return I
var/icon/J
if(I.nextj)
for(J=I,J,J=J.nexti) J.Blend(J.nextj, ICON_OVERLAY)
if(I.nexti) I.Blend(I.nexti, ICON_OVERLAY)
return I

proc/GaussRand()
var/x,y,rsq
do
x=2*rand()-1
y=2*rand()-1
rsq=x*x+y*y
while(rsq>1 || !rsq)
return y*sqrt(-2*log(rsq)/rsq)

proc/DrawBlade(icon/I,startangle,anglevariance,avglength,lengthvariance,overlapdir,x,y,grav=0.1)
var/angle=startangle+anglevariance*GaussRand()
var/l=avglength+lengthvariance*GaussRand()
var/ht=1/avglength
if(angle>89 && angle<91) angle=pick(89,90)
while(l-->0)
var/col=max(0,1-abs(angle-45)/90)*min(ht,1)
I.DrawWrapPixel(overlapdir,rgb(0,32+col*96,0),x,y)
var/sa=sin(angle)
var/ca=cos(angle)
x+=sa
y+=ca
ht+=ca/avglength
angle=arccos((ca-2*sa*grav)/sqrt(sa*sa+(ca-2*sa*grav)*(ca-2*sa*grav)))
if(sa<0) angle=-angle

The default settings will probably look fine, though avglength=6 may look even better; I've found anglevariance=20 also looks good with that. Larger values of length, and more length variance or angle variance, can give your grass a wilder look. Feel free to play around with grassprob, too. Chances are you'll need to run this a few times before you find a grass tile that's good.

Lummox JR
Page: 1 2