• Welcome to the Community Forums at HiveWire 3D! Please note that the user name you choose for our forum will be displayed to the public. Our store was closed as January 4, 2021. You can find HiveWire 3D and Lisa's Botanicals products, as well as many of our Contributing Artists, at Renderosity. This thread lists where many are now selling their products. Renderosity is generously putting products which were purchased at HiveWire 3D and are now sold at their store into customer accounts by gifting them. This is not an overnight process so please be patient, if you have already emailed them about this. If you have NOT emailed them, please see the 2nd post in this thread for instructions on what you need to do

Towards better grass in Poser...


Inspiring title, eh ? :)

I started post #133 on the "Instantiation Via (Poser) Geometry Swapping ?" thread by saying "Getting back to the grass (which is actually rather off-topic)...", so I've decided to start a new thread specifically for that grass.

I'm still basically working on the idea of a geometry-swapping figure, which unfortunately makes it a no-go for DAZ Studio (at least as far as my cursory tests have indicated - I think I mentioned that on the instantiation thread).Hence 'Poser' in this thread title.

A bit of background: The idea of using a single face (4 vertex/1 quad) for a grass blade came about (although I didn't know it at the time) in a November 2009 Renderosity post when I realized that Poser could actually turn that single quad into a beautifully saddle-pointed surface. I also learnt a sort of minimalist approach to modelling between 8th and 27th of September 2010 (also Renderosity) - it's amusing to see how little I knew about modelling on the 8th, and just how much I learnt in 2-3 weeks!

Ten years later and post #20 on that instantiation thread suddenly brought everything together.

Anyway, here's the latest render. Since my last post on the other thread I've created a new flattened grass prop... but this time I remembered to use the UV-mapped grassblade as the basis, not the non-UV-mapped grassblade !

Render 3.jpg
Last edited:


I didn't actually use the geometry-swapping figure for that image because I was just really checking that I'd created the OBJs correctly.

Each OBJ was created so that all its grass is growing from a hexagonal area of ground - after some experimenting, and remembering the hex paper used for wargaming, I decided that hexagons were better than squares or random patches.

There are 3 different grass OBJs, each containing 176 faces (i.e. 176 blades of grass). One is flattened grass, the second is clumps, and the third is stalks. I imported each of the three OBJs, applied my material, then duplicated each a couple of times.

Then it was just a case of roughly positioning each OBJ so they fitted a hexagon grid and giving each a random rotation (not limiting to 60 degree increments). The attached screenshot shows two of the OBJs highlightedjust to give you an idea.



Re the "some advantages"of the sparse grass. With my new more dense grass I found that the preview response became sluggish, even with just one of each of the three OBJs. Until I changed the preview display mode to wireframe. So I reckon that all those grassblades one behind another, partially obscuring each other is slowing down the textured (or even hidden-line-removed-wireframe) preview because of all the calculations going on. Just a guess.


Regarding the use of hexagons - the geometry-swapping figure that started all this (available in the ZIP attached to post #1 of the instantiation thread) has 54 bones, since it was originally intended for a pack of playing cards including two jokers. As explained (sort of) in the first few posts of the instantiation thread, the original idea was that each bone/actor would be a totally independent playing card withit's own X/Y/Z translations/rotations relative to the figure.

When I started thinking about using the geometry-swapping figure for grass I could see two approaches:
1) The clump/patch OBJs are fairly random and are just scattered using the X/Z translations and Y rotations of the individual actors. Good for sparse grass populations.
2) The clump/patch OBJs are basically square turfs and are intended to be positioned in a grid (X/Z translations) with Y rotation in 90 degree increments. This was the approach I adopted - kind of. But the OBJs were rather haphazard, as were my grids and rotations - I just dragged each actor to fill a gap and partially overlap adjacent actors and applied an arbitrary Y rotation (not 90 degree increments)

Squares, even rough ones, don't make or nice Y rotations. So that's where hexagons come in. So I'm now imagining the default translations of the 54 actors of the geometry-swapping grass figure to make a nice big hexagon from a grid of smaller hexagons. That way several figures can be put together in the same way.

But the nearest numbers of hexagons to 54 that can be butted together to make a larger hexagon are 37 or 61, assuming I can count properly.


So I either add another 7 bones to get 61, or delete 17 bones to get 37.

Or I go with 37 hexagons in a grid plus 17 more, with a different geometry selected (e.g. some low poly flowers or shrubs) placed randomly within the big 37hex hexagon.

So I'm still just playing with ideas. And very much open to comments and suggestions.


I'm not very good at thinking ahead and planning, so I just started loading small beige hex OBJs (my Blender template for positioning the grass blades/clumps/stalks) into Poser and manually arranging 37 of them into a larger hexagon. Before I'd got halfway I'd had enough. Having this as a geometry swapping figure with a preset to put 37 individual actors into a larger hexagon grid has a definite appeal !
Note to self: the important number- if x-size (centre of one edge tocentre of oppositeedge) of a small hex is 0.2PNU then z-translations are Nx0.174 (to3dp), by eye)

And then another thought struck me. "I probably only want the more detailed grass patches over a small area at the centre of the scene, so if I had a second geometry-swapping figure appropriately scaled..." and started adding bigger purply hexes. I only needed to add 4 (scaled by eye toaround 616%) to see that this might work.


Of course I'd need a different geometry OBJ or two with more sparse (and smaller, scaled down to 16.2%) grass.

Maybe worth a try ?
Maybe the 0.2PNU-across small hex is too small?


This is a worthy project of what has always been a tough problem in Poser. I think that your idea of a "level-of-detail" approach is a good strategy. A really high goal would be to cover an area with the large hexes, and then depending on which camera is used and where, the near field hex would be 3D mesh grass, and the further hexes would use sprite billboards to conserve system resources.


Thanks. I'm hoping that this'll inspire other people to have a think about Poser grass and to try different ideas/approaches. Everybody's welcome to throw things into the mix here. Please do feel free to post your own ideas and experiments here - it's not intended to be a monologue. The more the merrier !

Regarding high goals, I'm not very good at those. I tend to get easily distracted by tangentially associated ideas, wandering off in a completely different direction - e.g. this grass thing stems from an idea about using geometry-swapping for bookcase contents.

But I like your idea. Something like bagginsbill's callback function from the underwater package (underwater.zip on his random shaders page), mentioned on the CGBytes Distance From Camera To Point Being Rendered ? thread could probably serve to automate the calculations for which hexes use what.


I've been working on a (subconcious) assumption that the terrain is completely flat. Not really a problem for something like my 37 beige hexes arranged into one larger hex, but once I start using larger hexes...


I forgot - yesterday I was trying to make a more complex leaf shape (i.e. more than 4vertex/1face) and accidentally came up with this:


Another thing that I don't think I mentioned, but which is hopefully obvious - I'm trying to avoid using any transparency maps. I'd tried making more-or-less flat flowers out of half a dozen quads and they all looked rubbish, so I gave up. Then this happened when I was trying to make something else.


Next step, I created a PZ2 pose file for the 'Instantiation Via Geometry Swapping Test.cr2' file from the ZIP in post #1 of that instantiation thread to position the first 37 actors/bones into a hex grid andthe other 14 in a circle around them.

I replaced the AltGeom01.obj and AltGeom02.obj files with the 0.2PNU hexagon tile and one of my new hexagon-tile based grass patches, then loaded the figure, selected AltGeom 1, and made the hex tile colour beige.
I then loaded a second figure, did exactly the same - except that I set the hex tile colour purply and then set its scale to 616%.

If you want to play with this you'll need that zip from the other thread, plus a few more files that I've hopefully put in the zip attached to this post.


It was very quick to render - less than a minute.

As mentioned in aprevious post I think I now need to do a scaled down and less dense version of the grass for use with the 616% scaled up figure.

I wonder... maybe try exporting all the grass for the 37 beige hexes from Poser, importing that into Blender, removing say 75% of the mesh andscaling down appropriately ?


  • GeomSwapAlt01,2 for Hex Test.zip
    111.9 KB · Views: 271
Last edited:


If I'd just exported the grass from the first 37 hexes and used that as my new mesh that would have been 37x176=6512 faces. I manually deleted a load of grass to reduce it to 2515 faces (arbitrary figure)


I think this approach shows promise... for a very, very flat landscape ! ;)

With a groundplane and afew tweaks to grass material (Diffuse_Value of both nodes reduced to 0.5) and lights (a distant and an IBL)


I forgot to Y-rotate any of the actors,so the grass in each hex is exactly the same. Here's alittlebit of random rotation. I've also attached a zip with the 6512 face and 2515 face grass patches if anybody wants to try.




  • Grass for 616 scaled up figure.zip
    449.6 KB · Views: 319
Now... what if the ground isn't flat ? :oops:

I'm not sure if this would work with the grass models you've made, but I had an "ah ha" moment when I loaded Esha's Grassy Grounds and realized that all the add-on grass patches can be added to the magnet that shapes the main ground piece, which means everything follows along with whatever shape I apply to the main ground. I had gotten frustrated with trying to put the various parts of Flink's Instant Meadow 3 together into a somewhat organic "hilly valley" shape and was thinking that a morphable solution would work better. After I saw how Esha's Grassy Grounds worked, I loaded a few flat tiles of IM3 flowers and added them also to the grassy ground's magnet... and they followed along too!

At least for me, that feels like a much more natural way to create a terrain that has grasses and flowers (as opposed to trying to assemble the terrain out of "puzzle pieces"). And while Magnets have their limitations, I particularly like being able to reshape the terrain (and all its associated grass and flower patches) within Poser, to accommodate whatever else is in the scene at the moment.

Sorry this is kinda off topic wrt your grass prop, but I just wanted to toss out the idea of magnets as a way of coping with non-flat ground!
(I also had the thought that Ken 1171's Tool Scatter Tool is another approach - no surprise ! :))

That tool looks pretty nifty, but apparently it hasn't been tested on a Mac (and not all Poser Python things work on a Mac, depending on the python library used), so I haven't purchased it. But I look forward to hearing from others how it works!

As for using the Hair Room to grow grass, I've seen that done several times, and I think I downloaded some terrain props from ShareCG that already have the grass/hair groups on them. I'll have to dig those up. I think the concept has a lot of promise, as does using the Hair Room to make things like fuzzy vests and jackets. (Just not actual hair... :)