Skip to content

Commit ee11182

Browse files
[UPDATE] **Labs Dirt Skirt 1.0 SOP** - Replaced Labs Curve Sweep SOP with Sweep SOP and Labs Voxel Mesh SOP with Remesh to Grid SOP inside the network, made it compilable, cleaned up network and parameters, rewrote help file, added code for internal attributes and groups, and set the version to 1.0.
1 parent 0e21e34 commit ee11182

File tree

11 files changed

+397
-269
lines changed

11 files changed

+397
-269
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
= Labs Dirt Skirt =
2+
3+
#type: node
4+
#context: sop
5+
#internal: labs::dirtskirt::1.0
6+
#icon: dirtskirt
7+
8+
"""Creates a geometry “skirt” where an object intersects a ground surface. The skirt is intended to serve as a soft blend region when imported into a game engine."""
9+
10+
This node generates a blended transition layer between an object and the ground.
11+
12+
It offsets geometry outward along both the object and ground surfaces, applies optional noise for breakup, and relaxes the result to form a smooth, usable blend region.
13+
14+
The output can include vertex colors to drive material blending, alpha fading, or procedural masks in a game engine.
15+
16+
:video:
17+
#src:/movies/dirtskirt.mp4
18+
19+
@parameters
20+
== Object Skirt ==
21+
Distance:
22+
#id: objdistance
23+
Distance the skirt extends along the object surface.
24+
25+
Noise Frequency:
26+
#id: objfrequency
27+
Frequency of the noise applied to the object portion of the skirt. Higher values produce higher-frequency detail.
28+
29+
Noise Intensity:
30+
#id: objintensity
31+
Strength of the noise applied to the object portion of the skirt.
32+
33+
== Ground Skirt ==
34+
Distance:
35+
#id: gnddistance
36+
Distance the skirt extends across the ground surface.
37+
38+
Noise Frequency:
39+
#id: gndfrequency
40+
Frequency of the noise applied to the ground portion of the skirt. Higher values produce tighter noise variation.
41+
42+
Noise Intensity:
43+
#id: gndintensity
44+
Strength of the noise applied to the ground portion of the skirt.
45+
46+
== Tweak Parameters ==
47+
Relaxation Iterations:
48+
#id: iterations
49+
Number of relaxation iterations applied to the inner surface of the skirt. Higher values produce more even topology and a softer blend.
50+
51+
Ground Offset:
52+
#id: groundoffset
53+
Vertical offset applied to the starting position of the ground skirt.
54+
55+
Rotate X:
56+
#id: rotatex
57+
Rotation around X that shifts the skirt higher in the +Z or −Z direction.
58+
59+
Rotate Z:
60+
#id: rotatez
61+
Rotation around Z that shifts the skirt higher in the +X or −X direction.
62+
63+
Add Vertex Color:
64+
#id: addvtxcolor
65+
Adds vertex attribute Cd as a gradient along the edges of the dirt skirt. This gradient can be used as an alpha fade or as a blending mask between object and ground materials in a game engine.
66+
67+
== Clean Up ==
68+
Target Polycount:
69+
#id: finalcount
70+
Target number of polygons for the generated skirt.
71+
72+
Delete Small Area Threshold:
73+
#id: threshold
74+
Area threshold used to identify and delete small triangles.
75+
76+
Z Offset:
77+
#id: zoffset
78+
Offset distance applied along point normals to prevent intersection with the object or ground geometry.
79+
80+
Keep Ground Mesh:
81+
#id: keepgroundmesh
82+
Includes the ground mesh in the output geometry.
83+
84+
Keep Object Mesh:
85+
#id: keepobjectmesh
86+
Includes the object mesh in the output geometry.

otls/dirtskirt.1.0.hda

117 KB
Binary file not shown.

otls/dirtskirt.hda/INDEX__SECTION

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ Path: oplib:/labs::Sop/dirtskirt?labs::Sop/dirtskirt
44
Icon: opdef:/labs::Sop/dirtskirt?IconSVG
55
Table: Sop
66
License:
7-
Extra:
7+
Extra: inputcolors='2 "RGB 0.700195 0.700195 0.700195" "RGB 0.700195 0.700195 0.700195" ' outputcolors='1 "RGB 0.700195 0.700195 0.700195" '
88
User:
99
Inputs: 2 to 2
1010
Subnet: true
1111
Python: false
1212
Empty: false
13-
Modified: Mon Dec 12 12:22:39 2022
13+
Modified: Thu Dec 4 12:49:52 2025
1414

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,54 @@
11
{
2-
"hdaroot/sop_voxelme_sh3.def":1544466176,
3-
"hdaroot/normal6.def":1551817208,
4-
"hdaroot/switch5.def":1551817158,
5-
"hdaroot/normal5.def":1551817208,
2+
"hdaroot/output1.def":1544480898,
3+
"hdaroot/switch2.def":1551809936,
4+
"hdaroot/uvlayout1.def":1548778378,
5+
"hdaroot/object_without_terrain.def":1544465948,
6+
"hdaroot/blast8.def":1544467478,
7+
"hdaroot/color1.def":1549493951,
8+
"hdaroot/attribblur1.def":1544467122,
9+
"hdaroot/sop_voxelme_sh4.def":1544466176,
10+
"hdaroot/sop_sweep2.def":1551747348,
11+
"hdaroot/mountain2.def":1544467427,
612
"hdaroot/transform4.def":1551816966,
13+
"hdaroot/switch3.def":1551809936,
14+
"hdaroot/attribdelete1.def":1544473483,
715
"hdaroot/object_merge1.def":1551810112,
8-
"hdaroot/merge4.def":1551809932,
9-
"hdaroot/sop_voxelme_sh4.def":1544466176,
10-
"hdaroot/switch2.def":1551809936,
1116
"hdaroot/null1.def":1549494125,
12-
"hdaroot/IN_OBJECT.def":1551810090,
13-
"hdaroot/output1.def":1544480898,
14-
"hdaroot/ray1.def":1549494105,
15-
"hdaroot/merge1.def":1551809932,
17+
"hdaroot.def":1764705397,
18+
"hdaroot/color2.def":1549493951,
1619
"hdaroot/normal4.def":1544475658,
17-
"hdaroot/transform2.def":1549493858,
20+
"hdaroot/boolean8.def":1544466218,
21+
"hdaroot/boolean4.def":1544466218,
22+
"hdaroot/merge3.def":1544466899,
1823
"hdaroot/switch4.def":1551817158,
19-
"hdaroot/polyreduce1.def":1544475419,
20-
"hdaroot/normal1.def":1544475372,
2124
"hdaroot/attribdelete2.def":1551809868,
25+
"hdaroot/transform1.def":1548778508,
2226
"hdaroot/object_merge2.def":1551810112,
23-
"hdaroot/IN_GROUND.def":1551810077,
24-
"hdaroot/attribdelete1.def":1544473483,
25-
"hdaroot/sop_delete_small_parts2.def":1544473548,
26-
"hdaroot/blast8.def":1544467478,
27-
"hdaroot/uvlayout1.def":1548778378,
28-
"hdaroot/boolean8.def":1544466218,
29-
"hdaroot/sop_sweep2.def":1551747348,
30-
"hdaroot/color2.def":1549493951,
31-
"hdaroot/peak1.def":1544467303,
3227
"hdaroot/remesh1.def":1544467108,
33-
"hdaroot/group1.def":1549493962,
34-
"hdaroot/transform1.def":1548778508,
35-
"hdaroot/terrain_without_object.def":1544465948,
36-
"hdaroot/get_seams.def":1544465948,
37-
"hdaroot/blast7.def":1544466271,
38-
"hdaroot/merge3.def":1544466899,
39-
"hdaroot/switch3.def":1551809936,
28+
"hdaroot/ray1.def":1549494105,
29+
"hdaroot/sop_voxelme_sh2.def":1544466176,
4030
"hdaroot/sop_voxelmesh4.def":1544466176,
41-
"hdaroot/switch1.def":1551809794,
42-
"hdaroot/attribblur1.def":1544467122,
43-
"hdaroot/fuse3.def":1544467096,
31+
"hdaroot/normal5.def":1551817208,
32+
"hdaroot/normal1.def":1544475372,
33+
"hdaroot/merge4.def":1551809932,
4434
"hdaroot/uvflatten1.def":1548778295,
45-
"hdaroot/color1.def":1549493951,
46-
"hdaroot/sop_voxelme_sh2.def":1544466176,
47-
"hdaroot/object_without_terrain.def":1544465948,
35+
"hdaroot/get_seams.def":1544465948,
36+
"hdaroot/fuse3.def":1544467096,
37+
"hdaroot/group1.def":1549493962,
38+
"hdaroot/switch5.def":1551817158,
39+
"hdaroot/transform2.def":1549493858,
40+
"hdaroot/switch1.def":1551809794,
41+
"hdaroot/blast7.def":1544466271,
42+
"hdaroot/IN_GROUND.def":1551810077,
43+
"hdaroot/peak1.def":1544467303,
44+
"hdaroot/IN_OBJECT.def":1551810090,
45+
"hdaroot/polyreduce1.def":1544475419,
46+
"hdaroot/sop_voxelme_sh3.def":1544466176,
47+
"hdaroot/terrain_without_object.def":1544465948,
48+
"hdaroot/normal6.def":1551817208,
49+
"hdaroot/sop_delete_small_parts2.def":1544473548,
4850
"hdaroot/sop_sweep1.def":1551747370,
51+
"hdaroot/merge1.def":1551809932,
4952
"hdaroot/clean1.def":1548780281,
50-
"hdaroot/boolean4.def":1544466218,
51-
"hdaroot/mountain2.def":1544467427,
52-
"hdaroot/mountain1.def":1544467427,
53-
"hdaroot.def":1670863371
53+
"hdaroot/mountain1.def":1544467427
5454
}
Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,47 @@
11
{
2-
"values":["0.3","1.0","19.0.720","0.2"
2+
"values":["0.3","1.0","21.0.530"
33
],
44
"indexes":{
5+
"hdaroot/sop_voxelmesh4.userdata":0,
6+
"hdaroot/fuse3.userdata":2,
7+
"hdaroot/IN_GROUND.userdata":2,
8+
"hdaroot/merge1.userdata":2,
9+
"hdaroot/merge3.userdata":2,
10+
"hdaroot/blast7.userdata":2,
11+
"hdaroot/transform2.userdata":2,
12+
"hdaroot/attribblur1.userdata":1,
13+
"hdaroot/transform4.userdata":2,
14+
"hdaroot/boolean8.userdata":2,
515
"hdaroot/sop_voxelme_sh3.userdata":0,
6-
"hdaroot/normal6.userdata":2,
7-
"hdaroot/switch5.userdata":2,
16+
"hdaroot/null1.userdata":2,
17+
"hdaroot/uvlayout1.userdata":2,
818
"hdaroot/normal5.userdata":2,
9-
"hdaroot/switch4.userdata":2,
10-
"hdaroot/transform4.userdata":2,
19+
"hdaroot/switch3.userdata":2,
1120
"hdaroot/object_merge2.userdata":2,
12-
"hdaroot/object_merge1.userdata":2,
21+
"hdaroot/switch5.userdata":2,
22+
"hdaroot/boolean4.userdata":2,
23+
"hdaroot/uvflatten1.userdata":2,
1324
"hdaroot/IN_OBJECT.userdata":2,
14-
"hdaroot/merge4.userdata":2,
15-
"hdaroot/switch2.userdata":2,
16-
"hdaroot/group1.userdata":2,
17-
"hdaroot/transform2.userdata":2,
18-
"hdaroot/null1.userdata":2,
1925
"hdaroot/polyreduce1.userdata":2,
20-
"hdaroot/normal4.userdata":2,
21-
"hdaroot/sop_delete_small_parts2.userdata":3,
26+
"hdaroot/peak1.userdata":2,
27+
"hdaroot/merge4.userdata":2,
28+
"hdaroot/blast8.userdata":2,
29+
"hdaroot/output1.userdata":2,
2230
"hdaroot/transform1.userdata":2,
2331
"hdaroot/normal1.userdata":2,
24-
"hdaroot/blast8.userdata":2,
25-
"hdaroot/switch1.userdata":2,
26-
"hdaroot/fuse3.userdata":2,
27-
"hdaroot/object_without_terrain.userdata":2,
28-
"hdaroot/blast7.userdata":2,
29-
"hdaroot/boolean8.userdata":2,
30-
"hdaroot/boolean4.userdata":2,
31-
"hdaroot/get_seams.userdata":2,
32-
"hdaroot/ray1.userdata":2,
33-
"hdaroot/IN_GROUND.userdata":2,
3432
"hdaroot/terrain_without_object.userdata":2,
35-
"hdaroot/sop_voxelme_sh2.userdata":0,
36-
"hdaroot/peak1.userdata":2,
37-
"hdaroot/attribblur1.userdata":1,
38-
"hdaroot/uvlayout1.userdata":2,
33+
"hdaroot/switch1.userdata":2,
3934
"hdaroot/remesh1.userdata":2,
35+
"hdaroot/sop_voxelme_sh2.userdata":0,
36+
"hdaroot/group1.userdata":2,
4037
"hdaroot/sop_voxelme_sh4.userdata":0,
41-
"hdaroot/switch3.userdata":2,
42-
"hdaroot/sop_voxelmesh4.userdata":0,
43-
"hdaroot/merge1.userdata":2,
44-
"hdaroot/merge3.userdata":2,
45-
"hdaroot/output1.userdata":2,
46-
"hdaroot/uvflatten1.userdata":2
38+
"hdaroot/object_without_terrain.userdata":2,
39+
"hdaroot/ray1.userdata":2,
40+
"hdaroot/get_seams.userdata":2,
41+
"hdaroot/switch2.userdata":2,
42+
"hdaroot/normal4.userdata":2,
43+
"hdaroot/object_merge1.userdata":2,
44+
"hdaroot/normal6.userdata":2,
45+
"hdaroot/switch4.userdata":2
4746
}
4847
}

0 commit comments

Comments
 (0)