UModeler X MCPis live — model with an AI agent
UModeler X

Rock

A deterministic procedural rock built from an icosphere with layered noise, asymmetry, facets, ridges and ground flattening.

Rock is a procedural rock generated from an icosphere. Layered noise, asymmetry, stretch, compression, facets, ridges and ground flattening are stacked on top of the sphere, so a single Seed value gives you an endless supply of distinct boulders without sculpting anything by hand.

Generation is deterministic — the same settings always produce the same rock. Nothing is baked into the scene file beyond the settings themselves, so a rock stays editable forever.


Geometry

The base is an icosphere subdivided Subdivision times. Each vertex direction is then pushed through a fixed pipeline:

  1. Asymmetry — scales the radius along Asymmetry Direction, so one side grows and the opposite side shrinks.
  2. Lobes — optional bulges, each with its own direction, radius, strength and sharpness.
  3. Ridge — raises (or cuts) a band around the plane defined by Ridge Normal. Ridge Sharpness controls how tight the band is.
  4. Noise — the Large, Medium and Small layers are added on top of each other. The resulting radius is clamped to 0.2 ~ 2.5.
  5. Stretch → Compression → Facets → Top / Bottom Flatten, in that order.
  6. Ground — the bottom is flattened and the whole rock is shifted down by Ground Embed.

Finally the unit shape is scaled into the Width · Height · Depth box. The pivot sits at the center of the bottom face, so a rock at y = 0 rests on the ground.


Parameters

Size

LabelScript keyDefaultRangeDescription
Widthw30.01 ~ 10000Size along local X (m)
Depthd2.50.01 ~ 10000Size along local Z (m)
Heighth1.80.01 ~ 10000Size along local Y (m)
Subdivisionord20 ~ 4Icosphere subdivision level — the final density after baking

Rock Settings

Everything below lives under the Rock Settings group in the Inspector.

LabelScript keyDefaultRangeDescription
Seedseed1intMaster seed. Changing it reshuffles every noise layer
Asymmetry Directionrockasymmetrydirection(1, 0.25, 0)vectorThe direction the rock leans toward
Asymmetry Amountrockasymmetry0.120 ~ 1How strongly it leans. 0 is perfectly symmetric
Stretch Directionrockstretchdirection(1, 0, 0)vectorAxis to stretch along
Stretch Amountrockstretch0-0.9 ~ 3Positive stretches, negative squashes
Compression Directionrockcompressiondirection(1, 0, 0)vectorDirection of the flat cut
Compression Amountrockcompression00 ~ 1Strength of the cut. 0 disables it
Compression Distance—0.75-1 ~ 1.5Where the cutting plane sits
Compression Blend Distance—0.20.001 ~ 1How softly the cut blends into the body
Flatten Toprockflattentop00 ~ 1Flattens the top face
Flatten Bottomrockflattenbottom00 ~ 1Flattens the bottom face
Ground Flattenrockgroundflatten0.550 ~ 1Flattens the contact area so the rock sits on the ground without a gap
Ground Embedrockgroundembed0.050 ~ 10Sinks the rock below the pivot plane (m)
Angularityrockangularity0.150 ~ 1How sharply facets bite in. High values give a chiselled look
Automatic Facet Countrockfacetcount40 ~ 24Number of facet planes generated automatically
Facet Strengthrockfacetstrength0.250 ~ 1How deep each facet cuts
Facet Size Variation—0.250 ~ 1Spread of facet sizes
Ridge Normalrockridgenormal(0, 0, 1)vectorNormal of the plane the ridge runs along
Ridge Strengthrockridgestrength0-1 ~ 1Positive raises a ridge, negative carves a groove
Ridge Sharpnessrockridgesharpness60.1 ~ 32Higher values make the ridge narrower
Flat Shadingrockflatshadingoffon / offSplits vertices per face for a hard low-poly look
Write Vertex Masksrockmasksoffon / offWrites shader masks into vertex colors

Each Noise layer (Large · Medium · Small) exposes the same fields:

LabelDefault (Large / Medium / Small)RangeDescription
Enabledon / on / offon / offWhether the layer contributes
Frequency0.8 / 2.1 / 5.0above 0Feature size — higher is finer
Amplitude0.16 / 0.07 / 0.0250 ~ 1How far it displaces the surface
Octaves2 / 2 / 11 ~ 6Fractal layer count
Lacunarity2.01 ~ 4Frequency multiplier per octave
Persistence0.50 ~ 1Amplitude falloff per octave
Offset(0, 0, 0)vectorShifts the noise field
Seed11 / 29 / 47intPer-layer seed, combined with the master Seed

Vertex masks

With Write Vertex Masks on, each vertex color carries a mask a shader can read:

ChannelMeaning
RVariation
GMoss
BDirt
AWetness

The masks are derived from slope and height, so moss lands on upward faces and dirt gathers near the base. Leave it off if your material does not use them — the colors are extra vertex data either way.

Collider

LabelDefaultDescription
Collider ModeNoneNone · MeshCollider · SimplifiedMeshCollider
Collider Subdivision1Subdivision used for the collider mesh (0 ~ 4)

Simplified Mesh Collider builds the collider at a lower subdivision than the visible mesh, which is almost always what you want for a rock.


Presets

Pick one in the Preset dropdown and press Apply Preset. This overwrites all Rock Settings, so apply the preset first and fine-tune afterwards.

PresetScript valueCharacter
Rounded River RockriverSmooth and rounded, worn by water. Weak facets, strong ground flattening
Mountain BoulderboulderLarge and angular with deep facets and coarse noise
Flat RockflatFlattened top and bottom — a stepping stone or a slab
Vertical RockverticalStretched upward into a standing stone or pillar
Low Poly RocklowpolyFlat shading with hard facets, for a stylized look

Preview and Bake

A rock is built in Preview Mode by default, which caps the subdivision at Preview Subdivision (default 1) so dragging sliders stays responsive.

  • Generate Preview — returns to the light preview mesh.
  • Bake Rock — rebuilds at the full Subdivision and generates the collider.

Preview Mode is only a display cap; the settings are untouched, so you can switch back and forth freely. Bake before you ship a scene, or the rock will be left at preview density.


How to create

  1. Drag in empty space to set the base rectangle — Width and Depth.

  2. Move the mouse up to set the Height.

  3. Click to finish. Adjust Seed until you like the silhouette, then bake.


Scene view editing

The ±X, ±Y and ±Z handles drive Width, Height and Depth. Everything else is edited in the Inspector.


Tips

Scatter with the Seed, not with new shapes. Duplicate one rock, change only its Seed, and you get an unrelated silhouette at the same size and density.

Non-uniform Width · Depth · Height is the cheapest variety of all — the same seed reads as a different rock once it is flattened or stretched.

For cliff faces, raise Ridge Strength and point Ridge Normal along the wall. For rubble, use Flat Rock with a low Subdivision.

Keep Ground Embed slightly above 0 so the rock never floats on uneven terrain.

Turn on Flat Shading for a stylized scene — it also makes low Subdivision values read as deliberate rather than cheap.


Script

In a script this shape is written as rock (alias boulder).

rock "RiverStone" w=1.2 d=1 h=0.6 preset=river seed=7 @0,0,0
rock "Boulder" w=4 d=3.5 h=3 preset=boulder ord=3 seed=21 @5,0,0
rock "Menhir" w=1 d=1 h=4 preset=vertical seed=3 @10,0,0
rock "Stylized" w=2 d=2 h=1.4 preset=lowpoly rockflatshading=1 @15,0,0

Beyond preset and seed, the individual settings are available as rockasymmetry, rockstretch, rockangularity, rockfacetcount, rockfacetstrength, rockridgestrength, rockgroundflatten and so on. Use preview=0 to bake from a script.


See also — Shape Type List · Creating Shapes and Modes · Scene Script Syntax

Rock | UModeler X Manual