|
| 1 | += GameDev GameRes = |
| 2 | + |
| 3 | +#type: node |
| 4 | +#context: sop |
| 5 | +#internal: gamedev::sop_gameres::2.0 |
| 6 | +#icon: gameres |
| 7 | +#tags: tech, model, gamedev |
| 8 | + |
| 9 | +""" Full Pipeline Node to Take High Res Models to Low Res """ |
| 10 | + |
| 11 | +Single node to polyreduce, automatically UV and Bake Textures. |
| 12 | + |
| 13 | +@parameters |
| 14 | + Preview: |
| 15 | + Choose which step of the pipeline to visualize |
| 16 | + == Reduce == |
| 17 | + Number To Keep: |
| 18 | + Target Output Polygon Count |
| 19 | + Use Instant Meshes: |
| 20 | + Use the Quad Remeshing Option instead of PolyReducing |
| 21 | + Continue Reducing Within Quality Tolerance: |
| 22 | + Use a Quality Threshold instead of a target polycount to reduce |
| 23 | + Tolerance: |
| 24 | + Stop Reducing when this tolerance has been hit |
| 25 | + Use Only Original Point Positions: |
| 26 | + Use the original positions as part of the reduction |
| 27 | + Preserve Quads: |
| 28 | + Use the Quad retaining feature from the [PolyReduce SOP|Node:sop/polyreduce] |
| 29 | + Equalize Lengths: |
| 30 | + Control over if the PolyReduce should be even or more adaptive |
| 31 | + == Voxelize == |
| 32 | + Enable Voxelization: |
| 33 | + Roundtrip the mesh through Voxels and back to polygons |
| 34 | + Resolution Preset: |
| 35 | + Helpful Presets for the Resolution, instead dealing with numbers, use some good presets for Low, Medium and High Quality |
| 36 | + [Image:/images/voxelmesh_presets.png] |
| 37 | + Resolution: |
| 38 | + If Resolution Preset is set to Custom, this will let you explicitly control the Voxel Resolution |
| 39 | + Bounding Box Relative: |
| 40 | + Do the Voxel Calculations as if the mesh was 1 unit large. |
| 41 | + Adaptivity: |
| 42 | + Controls how even the topology of the resulting mesh is. High Adaptivity values mean concentration around areas of high curvature, low curvature means even distribution of polygons |
| 43 | + [Image:/images/voxelmesh_adaptivity.png] |
| 44 | + Dilate/Erode: |
| 45 | + Voxels have an great ability of growing and shrinking, which can be used for better eroding and growing the mesh. It is similar to the Peak SOP but doesn't generate bad geometry when geometry crashed into itself. |
| 46 | + Project to Original: |
| 47 | + Optionally Ray the resulting mesh back onto the original |
| 48 | + Post Smooth Iterations: |
| 49 | + The Projection step can generate some undesirably overlapping polygons, this step can relax some of those polygons |
| 50 | + Sharpen Features: |
| 51 | + Geometry tends to soften when being voxelized, because some features might sit in between voxels. This strengthens the features and is helpful on hard surfaces. |
| 52 | + Edge Tolerance: |
| 53 | + Tolerance for what edges to consider for the Sharpen Features toggle. |
| 54 | + == Auto UV Method == |
| 55 | + Method: |
| 56 | + Algorithm used to generate the UVs |
| 57 | + === Shortest Path === |
| 58 | + The Shortest Path method, will identify areas of high curvature on a mesh and then draw shortest paths between those points. |
| 59 | + |
| 60 | + Collapse Distance: |
| 61 | + Fuse Threshold in case paths are too close together |
| 62 | + Number of Paths: |
| 63 | + Number of high curvature points to use as path points |
| 64 | + Convex Multiplier: |
| 65 | + Attract the seams based on high convexity (helpful for hard surface models) |
| 66 | + Occlusion Multiplier: |
| 67 | + Attract the seams based on Ambient Occlusion (helpful for organic models) |
| 68 | + |
| 69 | + === Cluster === |
| 70 | + Clusters primitives based on position and normal attributes to generate islands |
| 71 | + |
| 72 | + Number of Clusters: |
| 73 | + Number of Islands to be generated |
| 74 | + Normal Blur: |
| 75 | + Blur the Normals a bit when considering which normals are close together (will merge islands together) |
| 76 | + Random Seed: |
| 77 | + Randomly change the clustering |
| 78 | + |
| 79 | + === UV Unwrap === |
| 80 | + Use the build in UV Unwrap node. While usually not the best solution, this combined with Merge Small Islands is generally one of the best solutions. |
| 81 | + |
| 82 | + Planes: |
| 83 | + Number of Projection Planes. |
| 84 | + |
| 85 | + === UV AutoSeam === |
| 86 | + Use the new [UV Autoseam|Node:sop/uvautoseam] node |
| 87 | + |
| 88 | + Grain Tolerance: |
| 89 | + When Splitting is "Curvature based", controls how sensitive grains are to changes in normal direction across surfaces. A value of zero is very sensitive and produces tiny grains. Larger values up to 1 are less sensitive and produce larger grains. |
| 90 | + Merge Threshold: |
| 91 | + Controls how often smaller grains merge to become larger islands. 0 never merges (giving the initial grains as output), 1 merges all connected grains together (giving no seams in the output). You can tweak this control, centering around 0.5, to get more or fewer seams. |
| 92 | + |
| 93 | + |
| 94 | + == Packing Options == |
| 95 | + Merge Small Islands: |
| 96 | + Consolidates Small UV Islands into Larger Neighbors |
| 97 | + Small Island CutOff: |
| 98 | + Size threshold of the islands that will be merged back into larger pieces |
| 99 | + Optimize UV Border: |
| 100 | + Attempts to cleanup triangles that are sticking to the side of the UV island. May cause small islands to reappear |
| 101 | + Flattening Method: |
| 102 | + Defines how to flatten the Islands. |
| 103 | + Orientation Mode: |
| 104 | + How to rotate the islands when packing |
| 105 | + Packing Iterations: |
| 106 | + How many times to attempt fitting the islands together |
| 107 | + Island Padding: |
| 108 | + How many pixels to pad the islands by |
| 109 | + Padding Resolution: |
| 110 | + Reference Resolution for Island Padding |
| 111 | + |
| 112 | + |
| 113 | + == Bake == |
| 114 | + Auto Bake: |
| 115 | + Automatically trigger the bake step |
| 116 | + Render: |
| 117 | + Manually trigger the bake step |
| 118 | + == Baker == |
| 119 | + Resolution: |
| 120 | + Size of the output textures |
| 121 | + Base Path: |
| 122 | + Path for the output textures. $(CHANNEL) is necessary here and will be replaced with the type of texture (basecolor, normal, etc) |
| 123 | + Export FBX: |
| 124 | + Optionally also export the incoming model as an FBX file to this path |
| 125 | + == Channels == |
| 126 | + Vertex Color: |
| 127 | + Enable baking Vertex Colors (and Diffuse Textures) and specify the suffix |
| 128 | + Normal Map: |
| 129 | + Enable baking Tangent Space normal maps and specify the suffix |
| 130 | + Opacity Map: |
| 131 | + Enable baking an Opacity/Transparency/Alpha map and specify the suffix |
| 132 | + Roughness Map: |
| 133 | + Enable baking Roughness that is sampled from the source's material and specify the suffix |
| 134 | + Metallic Map: |
| 135 | + Enable baking Metallic that is sampled from the source's material and specify the suffix |
| 136 | + World Normal Map: |
| 137 | + Enable baking World Space normal maps and specify the suffix |
| 138 | + Ambient Occlusion: |
| 139 | + Enable baking Ambient Occlusion maps and specify the suffix |
| 140 | + Curvature: |
| 141 | + Enable baking Curvature (Substance Style) and specify the suffix |
| 142 | + Thickness: |
| 143 | + Enable baking Thickness maps and specify the suffix |
| 144 | + Position: |
| 145 | + Enable baking Position maps and specify the suffix |
| 146 | + Height: |
| 147 | + Enable baking Height/Displacement maps and specify the suffix |
| 148 | + Custom Channels: |
| 149 | + Number of Custom Maps to be baked |
| 150 | + Attribute Name: |
| 151 | + Point Attribute to be baked |
| 152 | + Suffix: |
| 153 | + `CHANNEL` value for the texture name |
| 154 | + |
| 155 | + |
| 156 | + == Advanced == |
| 157 | + Valid Frame Range: |
| 158 | + Determines if a single frame should be baked or several frames. (Useful for baking oceans and other animated effects) |
| 159 | + |
| 160 | + NOTE: |
| 161 | + If baking a frame range, make sure to remember to add a $F to your filenames, otherwise it will overwrite the same textures every frame. |
| 162 | + |
| 163 | + Start/End/Inc: |
| 164 | + Start and End Frame, and what steps to skip |
| 165 | + |
| 166 | + Use MikkT Tangent Space: |
| 167 | + Use the MikkT calculations to bake out the Tangent Normal Maps. |
| 168 | + |
| 169 | + NOTE: |
| 170 | + The Viewport shader doesn't have MikkT capabilities, so you might see some bruising that won't occur on a game engine. |
| 171 | + You can use the GameDev PBR Shader in combination with the PolyFrame node if you would like to view the correct MikkT values. We understand this isn't optimal. |
| 172 | + |
| 173 | + Output basecolor in Linear Space: |
| 174 | + Gamma correct the BaseColor maps |
| 175 | + |
| 176 | + Tangent Normal Flip Y: |
| 177 | + Invert the Green Channel in the Normal Map. |
| 178 | + Disable Lighting/Emission: |
| 179 | + Ignore any lighting information. Disabling this will allow you to bake light information into your objects (just make them white) |
| 180 | + |
| 181 | + Cage Mesh: |
| 182 | + Optional cage mesh. Must have the same topology and UVs as the UV Object. Typically a dupicate of UV Object whose vertices are slightly pushed outward. Used to determine the projection direction. |
| 183 | + Border Padding: |
| 184 | + Additional pixels at the border of each UV island |
| 185 | + Baking Samples: |
| 186 | + Number of Samples used for raytraced shading |
| 187 | + Ray Bias: |
| 188 | + Determine how much to offset the rays from the surface of the object along the normal vector. |
| 189 | + Ray Distance: |
| 190 | + Maximum Distance to trace for nearby surfaces. -1 means infinite distance. |
| 191 | + |
| 192 | + |
| 193 | + == Material == |
| 194 | + Base Color: |
| 195 | + Basic Tint on the Albedo |
| 196 | + IOR: |
| 197 | + Index of Refraction, similar to the base PBR value of 0.04. High Values refract more light |
| 198 | + Roughness: |
| 199 | + How rough or smooth is the specular highlight |
| 200 | + Diffuse Map: |
| 201 | + Which channel to display as the preview map |
| 202 | + |
| 203 | + |
0 commit comments