From cf9126c2df1c5512f23f6b5dca71d0b7e668fec0 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 11 Sep 2026 00:23:56 +0200 Subject: [PATCH 001/130] Add experimental remesh and material baking workflow --- .github/workflows/build-native.yml | 5 +- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 106 +++++++++++++ Editor/RemeshAssemblyInfo.cs | 2 + Editor/RemeshAssemblyInfo.cs.meta | 11 ++ Editor/RemeshBaker.cs | 158 +++++++++++++++++++ Editor/RemeshBaker.cs.meta | 11 ++ Editor/RemeshNative.cs | 84 ++++++++++ Editor/RemeshNative.cs.meta | 11 ++ Editor/RemeshSettings.cs | 32 ++++ Editor/RemeshSettings.cs.meta | 11 ++ Editor/RemeshSource.cs | 210 +++++++++++++++++++++++++ Editor/RemeshSource.cs.meta | 11 ++ Editor/Tools/RemeshBakeTool.cs | 224 +++++++++++++++++++++++++++ Editor/Tools/RemeshBakeTool.cs.meta | 11 ++ Native~/CMakeLists.txt | 13 +- Native~/src/remesh.cpp | 129 +++++++++++++++ Native~/tests/remesh_test.cpp | 45 ++++++ README.md | 10 +- Shaders/RemeshReadback.shader | 29 ++++ Shaders/RemeshReadback.shader.meta | 7 + Tests/Editor/RemeshBakeTests.cs | 91 +++++++++++ Tests/Editor/RemeshBakeTests.cs.meta | 11 ++ 23 files changed, 1219 insertions(+), 4 deletions(-) create mode 100644 Documentation~/REMESH_AND_BAKE.md create mode 100644 Editor/RemeshAssemblyInfo.cs create mode 100644 Editor/RemeshAssemblyInfo.cs.meta create mode 100644 Editor/RemeshBaker.cs create mode 100644 Editor/RemeshBaker.cs.meta create mode 100644 Editor/RemeshNative.cs create mode 100644 Editor/RemeshNative.cs.meta create mode 100644 Editor/RemeshSettings.cs create mode 100644 Editor/RemeshSettings.cs.meta create mode 100644 Editor/RemeshSource.cs create mode 100644 Editor/RemeshSource.cs.meta create mode 100644 Editor/Tools/RemeshBakeTool.cs create mode 100644 Editor/Tools/RemeshBakeTool.cs.meta create mode 100644 Native~/src/remesh.cpp create mode 100644 Native~/tests/remesh_test.cpp create mode 100644 Shaders/RemeshReadback.shader create mode 100644 Shaders/RemeshReadback.shader.meta create mode 100644 Tests/Editor/RemeshBakeTests.cs create mode 100644 Tests/Editor/RemeshBakeTests.cs.meta diff --git a/.github/workflows/build-native.yml b/.github/workflows/build-native.yml index 20054b88..7cdf3d8c 100644 --- a/.github/workflows/build-native.yml +++ b/.github/workflows/build-native.yml @@ -44,11 +44,14 @@ jobs: persist-credentials: false - name: Configure CMake - run: cmake -S 'Native~' -B build ${{ matrix.cmake_args }} -DCMAKE_BUILD_TYPE=Release + run: cmake -S 'Native~' -B build ${{ matrix.cmake_args }} -DCMAKE_BUILD_TYPE=Release -DMESHLAB_BUILD_TESTS=ON - name: Build run: cmake --build build --config Release + - name: Test remesh bridge + run: ctest --test-dir build -C Release --output-on-failure + - name: Upload artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index c6205747..2e5f69a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Added +- Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. - **Per-target Transfer diagnostic summary** — `GroupedShellTransfer.TransferCore` emits a single Info line at the end of every transfer when `UvtLog.Category.TransferDiag` is enabled in the Log filters panel. Reports source/target shell counts, `shellsMatched` / `shellsRejected`, `ShellStatus` histogram (Accepted/Degraded/Poor/Rejected/Unmatched), method histogram (interp/xform/merged), `fragmentsMerged`, `dedupConflicts`, `shellsOverlapFixed`, `consistencyCorrected`, mean/max 3D match distance, and topology iterations/fixed/capHit. Lets the identity-sanity and per-LOD ratio sweep checklists in `Documentation~/TRANSFER_LOD_QUALITY_PLAN.md` be run without trawling verbose per-shell output. New category bit slots into the existing Log filters UI automatically. - **`UvProgress` service** (`Editor/Framework/UvProgress.cs`) — central non-modal progress reporting. Routes status to `UnityEditor.Progress` (Background Tasks panel) plus an inline strip drawn at the bottom of the hub window. Supports nested scopes, phase labels, indeterminate/determinate fractions, cooperative cancellation via `UvProgress.CancelRequested` (`Volatile.Read`-backed `_cancelFlag` so background `Task.Run` work observes user-cancel reliably across the memory barrier), a thread-safe `ReportFromBackground` for `Task.Run` callers (with `Interlocked.Exchange`-guarded snapshot/clear so a racing writer can't lose an update; the `EditorApplication.update` pump is hooked once on assembly load from the main thread via `[InitializeOnLoadMethod]`), and a `Last` outcome shown while idle. - **Inline progress strip in `UvToolHub`** — sits at the bottom of the window as a status bar. Reserves fixed height unconditionally so toggling active state doesn't displace any layout. Shows title · phase · detail · elapsed in distinct columns with a Cancel button pinned to the right; while idle displays `✓ / ✗ Last-operation · 12.3s`. Marquee animation for indeterminate fractions; orange tint while cancelling. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md new file mode 100644 index 00000000..e4ab6c5e --- /dev/null +++ b/Documentation~/REMESH_AND_BAKE.md @@ -0,0 +1,106 @@ +# Remesh & Bake (experimental) + +Build a new static low-poly mesh, new UV0 atlas, and reproject source materials in +**Tools → Mesh Lab → Remesh & Bake**. The original meshes, materials, importers, +scene objects and LODGroups are not replaced. + +## Workflow + +1. Select a static model root. Active/enabled MeshRenderers under it are combined + in root-local coordinates; LODGroups contribute LOD0 only, collision nodes are + excluded. Skinned renderers are rejected. Every contributing submesh needs UV0 + and an opaque Standard (metallic) or URP/Lit material. +2. Set voxel resolution (4–256), target triangles and maximum geometric error. + The triangle count is a target: the error limit can stop reduction earlier. + Higher voxel resolution preserves smaller gaps but increases intermediate cost. +3. Choose atlas resolution, padding and projection distance (fraction of the + source bounds diagonal). Generate & Bake runs native geometry processing and + CPU BVH projection off the main thread. Texture snapshots and Unity mesh/asset + APIs stay on the main thread. +4. Inspect the triangle count, color atlas and projection-miss report. Missed + covered texels are magenta, not silently patched with unrelated material data. + Increase projection distance or adjust remesh settings if needed. +5. Save to a folder under Assets. A unique output folder contains the mesh asset, + material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a + linear floating-point Emission EXR. Source files are never overwritten. + Instantiate the saved prefab to inspect the actual lighting and silhouette. + +## Geometry implementation + +`Native~/src/remesh.cpp` uses meshoptimizer snapshot +`ff4a519a65a555229a202efc7b5409b338ef4b40` (2026-09-10), pinned by full commit SHA. +The sequence is voxel remesh, position weld, simplifyWithUpdate with PreserveFolds +and RegularizeLight, crease-aware normal generation, then xatlas full unwrap. +There is no Thicken switch: upstream currently treats it as a no-op. + +Each job owns its own xatlas instance and result handle, independently of the +legacy global repack bridge. C# always destroys the handle, including cancellation +and failure. Native exports use a version probe and capacity-checked copies. +The intermediate mesh is limited to five million triangles. + +Native binaries must be rebuilt by **Build Native Libraries**. Its push job +publishes Windows x64, Linux x64 and universal macOS binaries into the branch; +its PR jobs compile/test without publishing. An old binary fails the capability +probe with an actionable message instead of invoking a missing entry point. +Existing bridge signatures and existing UV2 transfer behavior are unchanged. + +## Material transfer + +For every covered destination texel, the CPU traces from the destination surface +plus its normal offset back toward the source. A miss falls back to a bounded +nearest-point query. Barycentric source UV0 selects the original submesh material. +Normal maps are decoded on the GPU before readback and transformed from source +TBN to destination TBN. Metallic/smoothness, occlusion and emission stay separate +from base color. The output normal map is imported as a Unity normal map. + +Material textures are read at their imported dimensions, without the web demo's +1K rescaling. The readback cache has a 512 MiB limit (HDR emission costs 16 bytes +per pixel). Source color maps retain sRGB byte precision and are interpolated in +linear space; normal/data maps use linear bytes. Emission readback/export uses +floating point. This does not recover detail already lost to source import +compression or max-size settings. + +## Boundaries and current limitations + +- Experimental triangle remeshing, not animation-ready quad retopology. Thin + sheets, tiny gaps and adjacent disconnected parts can collapse or merge. +- No skinning, blend-shape, custom shader, HDRP, alpha cutout/transparency, + parallax or detail-layer transfer. Unsupported material modes fail explicitly. +- CPU projection is slower than a dedicated GPU baker, particularly at 4K. + Source snapshot/readback and export are synchronous editor operations. +- Cancellation is observed after the current native remesh/unwrap completes, + and throughout CPU projection. Assembly reload is deferred while the job owns + native resources. Switching tabs requests cancellation and disposes previews. +- UV0 is newly generated; this feature does not generate/transfer lightmap UV2. +- Output color/normal/material maps use 8-bit PNG; emission is float EXR. +- Save creates assets, not a scene replacement. Asset export is not scene Undo; + use the generated folder as the unit of deletion. A failed export rolls it back. +- Unity visual QA remains required before release: native and static checks alone + do not establish shader, material or imported-normal-map correctness. + +## Validation + +Native tests require no Unity license: + +```sh +cmake -S Native~ -B build -DCMAKE_BUILD_TYPE=Release -DMESHLAB_BUILD_TESTS=ON +cmake --build build --config Release +ctest --test-dir build -C Release --output-on-failure +``` + +The native test runs the complete cube → remesh → simplify → normal → UV pipeline, +checks finite data, normalized normals/UVs and valid indices, verifies the target +budget under relaxed error, repeated owned-handle cleanup and invalid input/copy +capacity rejection. CI runs it on all three native platforms. + +Unity Test Runner: `RemeshBakeTests` covers UV raster barycentrics, separate material +channels/HDR emission, source-normal to destination-tangent projection, image +sampling/wrapping, coincident-surface projection and cancellation. Run these in +Unity 6000.0+ after the native binaries are updated. The repository's Unity CI is +license-gated; a skipped job is not a passed compilation/test run. + +Manual gate: textured multi-submesh prop, nested transforms including negative +scale, normal-mapped high-poly with bevels, thin sheet, LODGroup, 4K source texture, +missed projection, cancel/tab switch, and export/reimport in Built-in and URP. +Compare actual rendered output against the source and confirm the source assets +remain byte-for-byte unchanged. diff --git a/Editor/RemeshAssemblyInfo.cs b/Editor/RemeshAssemblyInfo.cs new file mode 100644 index 00000000..655a7a17 --- /dev/null +++ b/Editor/RemeshAssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("SashaRX.UnityMeshLab.Tests.Editor")] diff --git a/Editor/RemeshAssemblyInfo.cs.meta b/Editor/RemeshAssemblyInfo.cs.meta new file mode 100644 index 00000000..8ddf87d9 --- /dev/null +++ b/Editor/RemeshAssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e72e80fe1f94732b0cb4b89f84a49e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs new file mode 100644 index 00000000..19e22cce --- /dev/null +++ b/Editor/RemeshBaker.cs @@ -0,0 +1,158 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class RemeshBaker + { + internal sealed class Maps + { + public Color32[] color, normal, metal, ao; + public Color[] emission; + public int size, misses, covered; + } + + // Thread-safe: no UnityEngine.Object access in this method or the BVH. + public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, + RemeshSettings settings, CancellationToken token) + { + int size = settings.textureResolution; + int count = checked(size * size); + var result = new Maps { size = size, color = new Color32[count], normal = new Color32[count], + metal = new Color32[count], ao = new Color32[count], emission = new Color[count] }; + var owners = new int[count]; + for (int i = 0; i < count; ++i) owners[i] = -1; + for (int face = 0; face < target.indices.Length / 3; ++face) { + token.ThrowIfCancellationRequested(); + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Vector2 ua = target.uv[a], ub = target.uv[b], uc = target.uv[c]; + int x0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.x, Mathf.Min(ub.x, uc.x)) * size), 0, size - 1); + int x1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.x, Mathf.Max(ub.x, uc.x)) * size), 0, size - 1); + int y0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.y, Mathf.Min(ub.y, uc.y)) * size), 0, size - 1); + int y1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.y, Mathf.Max(ub.y, uc.y)) * size), 0, size - 1); + for (int y = y0; y <= y1; ++y) + for (int x = x0; x <= x1; ++x) + if (Barycentric(new Vector2((x + 0.5f) / size, (y + 0.5f) / size), ua, ub, uc, out var bary) && + bary.x >= -1e-6f && bary.y >= -1e-6f && bary.z >= -1e-6f) + owners[y * size + x] = face; + } + var bvh = new TriangleBvh(source.positions, source.indices); + float distance = source.diagonal * settings.projectionDistance; + Parallel.For(0, size, new ParallelOptions { CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { + for (int x = 0; x < size; ++x) { + if ((x & 63) == 0) token.ThrowIfCancellationRequested(); + int pixel = y * size + x, face = owners[pixel]; + if (face < 0) continue; + Interlocked.Increment(ref result.covered); + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Barycentric(new Vector2((x + 0.5f) / size, (y + 0.5f) / size), target.uv[a], target.uv[b], target.uv[c], out var w); + Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; + Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; + Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; + var hit = bvh.Raycast(p + n * distance, -n, distance * 2); + int sourceFace = hit.triangleIndex; + Vector3 sw = hit.barycentric; + if (sourceFace < 0) { + var nearest = bvh.FindNearest(p, distance); + sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + } + if (sourceFace < 0) { + Interlocked.Increment(ref result.misses); + result.color[pixel] = new Color32(255, 0, 255, 255); + result.normal[pixel] = new Color32(128, 128, 255, 255); + result.ao[pixel] = new Color32(255, 255, 255, 255); + continue; + } + Evaluate(source, sourceFace, sw, n, tangent, out var color, out var normal, + out var metal, out var ao, out var emission); + result.color[pixel] = color; result.normal[pixel] = normal; + result.metal[pixel] = metal; result.ao[pixel] = ao; result.emission[pixel] = emission; + } + }); + if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); + Dilate(result, owners, settings.padding, token); + return result; + } + + internal static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 weights) + { + Vector2 ab = b - a, ac = c - a, ap = p - a; + float det = ab.x * ac.y - ab.y * ac.x; + if (Mathf.Abs(det) < 1e-15f) { weights = Vector3.zero; return false; } + float v = (ap.x * ac.y - ap.y * ac.x) / det; + float w = (ab.x * ap.y - ab.y * ap.x) / det; + weights = new Vector3(1 - v - w, v, w); return true; + } + + internal static void Evaluate(RemeshSource source, int face, Vector3 w, Vector3 targetNormal, Vector4 targetTangent, + out Color color, out Color normal, out Color metal, out Color ao, out Color emission) + { + int a = source.indices[face * 3], b = source.indices[face * 3 + 1], c = source.indices[face * 3 + 2]; + Vector2 uv = source.uv[a] * w.x + source.uv[b] * w.y + source.uv[c] * w.z; + var surface = source.materials[source.faceMaterials[face]]; + Color albedo = surface.color.Sample(uv, Color.white); + color = (albedo * surface.tint).gamma; color.a = 1; + var n = (source.normals[a] * w.x + source.normals[b] * w.y + source.normals[c] * w.z).normalized; + var t = source.tangents[a] * w.x + source.tangents[b] * w.y + source.tangents[c] * w.z; + if (surface.normal.image != null) { + var sample = surface.normal.Sample(uv, new Color(0.5f, 0.5f, 1)); + float nx = (sample.r * 2 - 1) * surface.normalScale, ny = (sample.g * 2 - 1) * surface.normalScale; + Basis(n, t, out var st, out var sb); + n = (st * nx + sb * ny + n * Mathf.Sqrt(Mathf.Max(0, 1 - nx * nx - ny * ny))).normalized; + } + Basis(targetNormal, targetTangent, out var tt, out var tb); + normal = new Color(Vector3.Dot(n, tt) * 0.5f + 0.5f, Vector3.Dot(n, tb) * 0.5f + 0.5f, + Vector3.Dot(n, targetNormal) * 0.5f + 0.5f, 1); + var mr = surface.metal.Sample(uv, Color.white); + float smooth = surface.smoothness * (surface.smoothnessFromAlbedo ? albedo.a : mr.a); + metal = new Color(surface.metal.image != null ? mr.r : surface.metallic, 0, 0, smooth); + float occlusion = Mathf.Lerp(1, surface.ao.Sample(uv, Color.white).g, surface.aoStrength); + ao = new Color(occlusion, occlusion, occlusion, 1); + emission = surface.emission.Sample(uv, Color.white) * surface.emissionTint; + emission.a = 1; + } + + static void Basis(Vector3 n, Vector4 tangent, out Vector3 t, out Vector3 b) + { + t = new Vector3(tangent.x, tangent.y, tangent.z); + t = (t - n * Vector3.Dot(t, n)).normalized; + if (t.sqrMagnitude < 1e-10f) t = Vector3.Cross(n, Mathf.Abs(n.y) < 0.9f ? Vector3.up : Vector3.right).normalized; + b = Vector3.Cross(n, t) * (tangent.w < 0 ? -1 : 1); + } + + static void Dilate(Maps maps, int[] owners, int padding, CancellationToken token) + { + int size = maps.size, count = owners.Length; + var nearest = new int[count]; var next = new int[count]; + for (int i = 0; i < count; ++i) nearest[i] = owners[i] < 0 ? -1 : i; + for (int iteration = 0; iteration < padding; ++iteration) { + token.ThrowIfCancellationRequested(); + Array.Copy(nearest, next, count); + for (int y = 0; y < size; ++y) { + token.ThrowIfCancellationRequested(); + for (int x = 0; x < size; ++x) { + int i = y * size + x; + if (nearest[i] >= 0) continue; + for (int dy = -1; dy <= 1 && next[i] < 0; ++dy) + for (int dx = -1; dx <= 1; ++dx) { + int xx = x + dx, yy = y + dy; + if (xx >= 0 && yy >= 0 && xx < size && yy < size && nearest[yy * size + xx] >= 0) { + next[i] = nearest[yy * size + xx]; break; + } + } + } + } + var swap = nearest; nearest = next; next = swap; + } + for (int i = 0; i < count; ++i) { + int from = nearest[i]; + if (owners[i] >= 0 || from < 0) continue; + maps.color[i] = maps.color[from]; maps.normal[i] = maps.normal[from]; + maps.metal[i] = maps.metal[from]; maps.ao[i] = maps.ao[from]; maps.emission[i] = maps.emission[from]; + } + } + } +} diff --git a/Editor/RemeshBaker.cs.meta b/Editor/RemeshBaker.cs.meta new file mode 100644 index 00000000..ff4c7007 --- /dev/null +++ b/Editor/RemeshBaker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8264482d1304d3297318c4dfe6f2c62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs new file mode 100644 index 00000000..9b3c039c --- /dev/null +++ b/Editor/RemeshNative.cs @@ -0,0 +1,84 @@ +using System; +using System.Runtime.InteropServices; +using System.Threading; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class RemeshNative + { + const string Library = "xatlas-unity"; + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabRemeshVersion(); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabRemeshBuild(float[] positions, uint vertexCount, int[] indices, uint indexCount, + int resolution, uint targetTriangles, float error, float crease, float smoothing, + uint textureSize, uint padding, uint flags, out IntPtr handle, out uint vertices, out uint outputIndices); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabRemeshCopy(IntPtr handle, [Out] float[] vertices, uint vertexCapacity, + [Out] int[] indices, uint indexCapacity); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern void meshLabRemeshDestroy(IntPtr handle); + + internal sealed class Geometry + { + public Vector3[] positions, normals; + public Vector2[] uv; + public int[] indices; + } + + public static void CheckAvailable() + { + try { + if (meshLabRemeshVersion() != 1) throw new InvalidOperationException("Unsupported remesh native ABI."); + } + catch (Exception e) when (e is DllNotFoundException || e is EntryPointNotFoundException || e is BadImageFormatException) { + throw new InvalidOperationException("Remesh requires rebuilt native plugins. Install the binaries from Build Native Libraries for this commit, then restart Unity.", e); + } + } + + public static Geometry Build(Vector3[] positions, int[] indices, RemeshSettings settings, CancellationToken token) + { + settings.Validate(); + token.ThrowIfCancellationRequested(); + var packed = new float[checked(positions.Length * 3)]; + for (int i = 0; i < positions.Length; ++i) { + packed[i * 3] = positions[i].x; packed[i * 3 + 1] = positions[i].y; packed[i * 3 + 2] = positions[i].z; + } + IntPtr handle = IntPtr.Zero; + try { + int code = meshLabRemeshBuild(packed, (uint)positions.Length, indices, (uint)indices.Length, + settings.voxelResolution, (uint)settings.targetTriangles, settings.maximumError, + settings.normalCrease * Mathf.Deg2Rad, settings.normalSmoothing, (uint)settings.textureResolution, + (uint)settings.padding, (settings.solve ? 1u : 0u) | (settings.shell ? 2u : 0u), + out handle, out uint vertexCount, out uint indexCount); + token.ThrowIfCancellationRequested(); + if (code != 0) throw new InvalidOperationException("Remesh failed: " + Error(code)); + var data = new float[checked((int)vertexCount * 8)]; + var result = new Geometry { positions = new Vector3[vertexCount], normals = new Vector3[vertexCount], + uv = new Vector2[vertexCount], indices = new int[indexCount] }; + if (meshLabRemeshCopy(handle, data, vertexCount, result.indices, indexCount) != 0) + throw new InvalidOperationException("Remesh output copy failed."); + for (int i = 0; i < vertexCount; ++i) { + result.positions[i] = new Vector3(data[i * 8], data[i * 8 + 1], data[i * 8 + 2]); + result.normals[i] = new Vector3(data[i * 8 + 3], data[i * 8 + 4], data[i * 8 + 5]); + result.uv[i] = new Vector2(data[i * 8 + 6], data[i * 8 + 7]); + } + return result; + } + finally { if (handle != IntPtr.Zero) meshLabRemeshDestroy(handle); } + } + + static string Error(int code) + { + switch (code) { + case 1: return "invalid geometry or settings"; + case 2: return "intermediate mesh exceeds five million triangles; reduce voxel resolution"; + case 3: return "empty output; increase voxel resolution or reduce simplification"; + case 4: return "UV unwrap failed"; + case 5: return "UV unwrap needs multiple atlases; reduce padding or increase texture resolution"; + default: return "native allocation or processing error"; + } + } + } +} diff --git a/Editor/RemeshNative.cs.meta b/Editor/RemeshNative.cs.meta new file mode 100644 index 00000000..39bbefad --- /dev/null +++ b/Editor/RemeshNative.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2024588de570493f8b1f6714c2a1f4ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs new file mode 100644 index 00000000..20f79f55 --- /dev/null +++ b/Editor/RemeshSettings.cs @@ -0,0 +1,32 @@ +using System; + +namespace SashaRX.UnityMeshLab +{ + [Serializable] + public sealed class RemeshSettings + { + public int voxelResolution = 128; + public int targetTriangles = 10000; + public float maximumError = 0.01f; + public float normalCrease = 60; + public float normalSmoothing = 1; + public int textureResolution = 2048; + public int padding = 8; + public float projectionDistance = 0.02f; // fraction of source bounds diagonal + public bool solve = true; + public bool shell; + + public void Validate() + { + if (voxelResolution < 4 || voxelResolution > 256 || targetTriangles < 1 || targetTriangles > 5000000 || + !Finite(maximumError) || maximumError < 0 || maximumError > 1 || + !Finite(normalCrease) || normalCrease < 0 || normalCrease > 180 || + !Finite(normalSmoothing) || normalSmoothing < 0 || normalSmoothing > 10 || + textureResolution < 64 || textureResolution > 8192 || (textureResolution & (textureResolution - 1)) != 0 || + padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1) + throw new ArgumentException("Invalid remesh settings."); + } + + static bool Finite(float value) => !float.IsNaN(value) && !float.IsInfinity(value); + } +} diff --git a/Editor/RemeshSettings.cs.meta b/Editor/RemeshSettings.cs.meta new file mode 100644 index 00000000..4e824112 --- /dev/null +++ b/Editor/RemeshSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c01fa02dbf064dfc83886cc7cb9d4145 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs new file mode 100644 index 00000000..e65df70c --- /dev/null +++ b/Editor/RemeshSource.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + // All Unity objects are read on the main thread. Workers only see these snapshots. + internal sealed class RemeshSource + { + public Vector3[] positions, normals; + public Vector4[] tangents; + public Vector2[] uv; + public int[] indices, faceMaterials; + public Surface[] materials; + public float diagonal; + + internal sealed class Image + { + public Color32[] pixels; + public bool srgb; + public Color[] hdrPixels; + public int width, height; + public TextureWrapMode wrapU, wrapV; + public Color Sample(Vector2 uv) + { + float x = uv.x * width - 0.5f, y = uv.y * height - 0.5f; + int ix = Mathf.FloorToInt(x), iy = Mathf.FloorToInt(y); + float fx = x - ix, fy = y - iy; + return Color.LerpUnclamped(Color.LerpUnclamped(At(ix, iy), At(ix + 1, iy), fx), + Color.LerpUnclamped(At(ix, iy + 1), At(ix + 1, iy + 1), fx), fy); + } + Color At(int x, int y) + { + int index = Wrap(y, height, wrapV) * width + Wrap(x, width, wrapU); + Color c = hdrPixels != null ? hdrPixels[index] : (Color)pixels[index]; + return srgb ? c.linear : c; + } + static int Wrap(int x, int size, TextureWrapMode mode) + { + if (mode == TextureWrapMode.Clamp) return Mathf.Clamp(x, 0, size - 1); + if (mode == TextureWrapMode.MirrorOnce) return Mathf.Clamp(x < 0 ? -x - 1 : x, 0, size - 1); + int period = mode == TextureWrapMode.Mirror ? size * 2 : size; + int v = ((x % period) + period) % period; + return v < size ? v : period - 1 - v; + } + } + internal sealed class Map + { + public Image image; + public Vector2 scale = Vector2.one, offset; + public Color Sample(Vector2 uv, Color fallback) => image == null ? fallback : image.Sample(Vector2.Scale(uv, scale) + offset); + } + internal sealed class Surface + { + public Map color, normal, metal, ao, emission; + public Color tint, emissionTint; + public float metallic, smoothness, normalScale, aoStrength; + public bool smoothnessFromAlbedo; + } + + public static RemeshSource Capture(GameObject root) + { + if (!root) throw new ArgumentException("Select a source root."); + if (root.GetComponentInChildren() != null) + throw new InvalidOperationException("Remesh & Bake currently accepts static MeshRenderers. Bake skinned geometry to a static mesh first."); + var excluded = new HashSet(); + foreach (var group in root.GetComponentsInChildren()) { + var lods = group.GetLODs(); + var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); + for (int l = 1; l < lods.Length; ++l) + foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); + } + var positions = new List(); var normals = new List(); + var tangents = new List(); var uv = new List(); + var indices = new List(); var faces = new List(); var materials = new List(); + var materialIds = new Dictionary(); + using (var reader = new Reader()) { + foreach (var renderer in root.GetComponentsInChildren()) { + if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; + var filter = renderer.GetComponent(); + if (!filter || !filter.sharedMesh) continue; + var mesh = Object.Instantiate(filter.sharedMesh); + try { + if (mesh.uv.Length != mesh.vertexCount) + throw new InvalidOperationException(renderer.name + " needs source UV0 for material transfer."); + if (mesh.normals.Length != mesh.vertexCount) mesh.RecalculateNormals(); + if (mesh.tangents.Length != mesh.vertexCount) mesh.RecalculateTangents(); + var p = mesh.vertices; var n = mesh.normals; var t = mesh.tangents; + if (t.Length != p.Length) throw new InvalidOperationException(renderer.name + " has no valid tangent frame."); + var transform = root.transform.worldToLocalMatrix * renderer.localToWorldMatrix; + if (Mathf.Abs(transform.determinant) < 1e-12f) throw new InvalidOperationException("Zero-scale source transform."); + var normalTransform = transform.inverse.transpose; + float sign = transform.determinant < 0 ? -1 : 1; + int first = positions.Count; + for (int i = 0; i < p.Length; ++i) { + positions.Add(transform.MultiplyPoint3x4(p[i])); + Vector3 nn = normalTransform.MultiplyVector(n[i]).normalized; + normals.Add(nn); + Vector3 tt = transform.MultiplyVector(new Vector3(t[i].x, t[i].y, t[i].z)); + tt = (tt - nn * Vector3.Dot(nn, tt)).normalized; + tangents.Add(new Vector4(tt.x, tt.y, tt.z, t[i].w * sign)); + } + uv.AddRange(mesh.uv); + var shared = renderer.sharedMaterials; + for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException("Only triangle meshes are supported."); + if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); + if (!materialIds.TryGetValue(shared[sub], out int material)) { + material = materials.Count; + materials.Add(reader.Capture(shared[sub])); materialIds.Add(shared[sub], material); + } + var tri = mesh.GetTriangles(sub); + for (int i = 0; i < tri.Length; i += 3) { + indices.Add(first + tri[i]); + indices.Add(first + tri[i + (sign < 0 ? 2 : 1)]); + indices.Add(first + tri[i + (sign < 0 ? 1 : 2)]); + faces.Add(material); + } + } + } + finally { Object.DestroyImmediate(mesh); } + } + } + if (indices.Count == 0) throw new InvalidOperationException("No static source triangles found."); + var bounds = new Bounds(positions[0], Vector3.zero); + foreach (var p in positions) bounds.Encapsulate(p); + if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); + return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), + uv = uv.ToArray(), indices = indices.ToArray(), faceMaterials = faces.ToArray(), materials = materials.ToArray(), + diagonal = bounds.size.magnitude }; + } + + sealed class Reader : IDisposable + { + readonly Dictionary<(Texture, bool, bool, bool), Image> cache = new Dictionary<(Texture, bool, bool, bool), Image>(); + readonly Material blit; + long bytes; + public Reader() + { + var shader = Shader.Find("Hidden/MeshLab/RemeshReadback"); + if (!shader || !shader.isSupported) throw new InvalidOperationException("Remesh readback shader is unavailable."); + blit = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + } + public void Dispose() { Object.DestroyImmediate(blit); } + public Surface Capture(Material m) + { + bool urp = m.shader.name == "Universal Render Pipeline/Lit"; + if (!urp && m.shader.name != "Standard") throw new InvalidOperationException(m.name + ": supported shaders are Standard (metallic) and URP/Lit."); + if ((urp && m.GetFloat("_Surface") != 0) || (!urp && m.GetFloat("_Mode") != 0) || + m.IsKeywordEnabled("_ALPHATEST_ON") || m.IsKeywordEnabled("_DETAIL_MULX2") || + m.IsKeywordEnabled("_DETAIL_SCALED") || m.IsKeywordEnabled("_PARALLAXMAP") || + (urp && m.HasProperty("_WorkflowMode") && m.GetFloat("_WorkflowMode") == 0)) + throw new InvalidOperationException(m.name + ": use an opaque metallic material without alpha clipping, detail or parallax layers."); + string color = urp ? "_BaseMap" : "_MainTex"; + bool metal = m.IsKeywordEnabled(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + var surface = new Surface { + color = Read(m, color, true), normal = Read(m, "_BumpMap", false, true, m.IsKeywordEnabled("_NORMALMAP")), + metal = Read(m, "_MetallicGlossMap", false, false, metal), ao = Read(m, "_OcclusionMap", false), + emission = Read(m, "_EmissionMap", true, false, m.IsKeywordEnabled("_EMISSION"), true), + tint = m.GetColor(urp ? "_BaseColor" : "_Color").linear, + emissionTint = m.IsKeywordEnabled("_EMISSION") ? m.GetColor("_EmissionColor").linear : Color.black, + metallic = m.GetFloat("_Metallic"), smoothness = m.GetFloat(urp ? "_Smoothness" : (metal || m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") ? "_GlossMapScale" : "_Glossiness")), + normalScale = m.GetFloat("_BumpScale"), aoStrength = m.GetFloat("_OcclusionStrength"), + smoothnessFromAlbedo = m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") + }; + // Standard and URP/Lit sample these maps with the base UV transform. + foreach (var map in new[] { surface.normal, surface.metal, surface.ao, surface.emission }) { + map.scale = surface.color.scale; map.offset = surface.color.offset; + } + return surface; + } + Map Read(Material material, string property, bool color, bool normal = false, bool enabled = true, bool hdr = false) + { + var map = new Map(); + var texture = enabled && material.HasProperty(property) ? material.GetTexture(property) : null; + if (material.HasProperty(property)) { map.scale = material.GetTextureScale(property); map.offset = material.GetTextureOffset(property); } + if (!texture) return map; + if (!(texture is Texture2D)) throw new InvalidOperationException("Only 2D material textures are supported."); + map.scale = material.GetTextureScale(property); map.offset = material.GetTextureOffset(property); + var key = (texture, color, normal, hdr); + if (!cache.TryGetValue(key, out var image)) { + bytes += (long)texture.width * texture.height * (hdr ? 16 : 4); + if (bytes > 512L * 1024 * 1024) throw new InvalidOperationException("Source texture readback exceeds 512 MiB. Process the model in smaller groups."); + var previous = RenderTexture.active; + var rt = RenderTexture.GetTemporary(texture.width, texture.height, 0, hdr ? RenderTextureFormat.ARGBFloat : RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); + Texture2D copy = null; + try { + blit.SetFloat("_HDR", hdr ? 1 : 0); + blit.SetFloat("_DecodeNormal", normal ? 1 : 0); blit.SetFloat("_ColorMap", color ? 1 : 0); + Graphics.Blit(texture, rt, blit); + RenderTexture.active = rt; + copy = new Texture2D(texture.width, texture.height, hdr ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); + copy.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0); copy.Apply(); + image = new Image { pixels = hdr ? null : copy.GetPixels32(), hdrPixels = hdr ? copy.GetPixels() : null, srgb = color && !hdr, width = texture.width, height = texture.height, + wrapU = texture.wrapModeU, wrapV = texture.wrapModeV }; + cache.Add(key, image); + } + finally { + RenderTexture.active = previous; RenderTexture.ReleaseTemporary(rt); + if (copy) Object.DestroyImmediate(copy); + } + } + map.image = image; + return map; + } + } + } +} diff --git a/Editor/RemeshSource.cs.meta b/Editor/RemeshSource.cs.meta new file mode 100644 index 00000000..2419e560 --- /dev/null +++ b/Editor/RemeshSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 734a842792ed4db89c2e0b9b34ed494c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs new file mode 100644 index 00000000..4553f75a --- /dev/null +++ b/Editor/Tools/RemeshBakeTool.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + public sealed class RemeshBakeTool : IUvTool + { + public string ToolName => "Remesh & Bake"; + public string ToolId => "remesh_bake"; + public int ToolOrder => 35; + public Action RequestRepaint { private get; set; } + GameObject source; + RemeshSettings settings = new RemeshSettings(); + CancellationTokenSource cancellation; + static int running; + Mesh result; + RemeshBaker.Maps maps; + Texture2D preview; + string status = "Select a static model root. LODGroups contribute only LOD0."; + string resultName; + + public void OnActivate(UvToolContext context, UvCanvasView canvas) { if (!source) source = Selection.activeGameObject; } + public void OnDeactivate() { cancellation?.Cancel(); Clear(); } + public void OnRefresh() { cancellation?.Cancel(); } + public void OnDrawToolbarExtra() { } + public void OnDrawStatusBar() { GUILayout.Label(status, EditorStyles.miniLabel); } + public IEnumerable GetFillModes() => null; + public void OnSceneGUI(SceneView sceneView) { } + public void OnDrawCanvasOverlay(UvCanvasView canvas, float cx, float cy, float size) { } + + public void OnDrawSidebar() + { + EditorGUILayout.LabelField("High-poly → Low-poly", EditorStyles.boldLabel); + using (new EditorGUI.DisabledScope(Volatile.Read(ref running) != 0)) { + source = (GameObject)EditorGUILayout.ObjectField("Source root", source, typeof(GameObject), true); + settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); + settings.targetTriangles = Mathf.Clamp(EditorGUILayout.IntField("Target triangles", settings.targetTriangles), 1, 5000000); + settings.maximumError = EditorGUILayout.Slider("Maximum error", settings.maximumError, 0, 1); + settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); + settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); + settings.normalCrease = EditorGUILayout.Slider("Normal crease", settings.normalCrease, 0, 180); + settings.normalSmoothing = EditorGUILayout.Slider("Normal smoothing", settings.normalSmoothing, 0, 10); + settings.textureResolution = EditorGUILayout.IntPopup("Texture size", settings.textureResolution, + new[] { "512", "1024", "2048", "4096" }, new[] { 512, 1024, 2048, 4096 }); + settings.padding = EditorGUILayout.IntSlider("Atlas padding", settings.padding, 1, 32); + settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); + EditorGUILayout.HelpBox("Experimental voxel remesh. Thin details and small gaps may disappear. Supports opaque Standard and URP/Lit metallic materials.", MessageType.Info); + using (new EditorGUI.DisabledScope(!source || UvProgress.IsActive)) + if (GUILayout.Button("Generate & Bake", GUILayout.Height(28))) Run(); + } + if (cancellation != null && GUILayout.Button("Cancel (after current native phase)")) cancellation.Cancel(); + EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); + if (result && maps != null) { + EditorGUILayout.LabelField($"{result.vertexCount:N0} vertices · {result.triangles.Length / 3:N0} triangles"); + if (preview) { + Rect rect = GUILayoutUtility.GetAspectRect(1); + EditorGUI.DrawPreviewTexture(rect, preview); + } + using (new EditorGUI.DisabledScope(cancellation != null)) + if (GUILayout.Button("Save mesh, maps & prefab…")) Save(); + } + } + + async void Run() + { + if (Interlocked.CompareExchange(ref running, 1, 0) != 0) return; + cancellation = new CancellationTokenSource(); + var token = cancellation.Token; + Mesh temporary = null; + bool locked = false; + try { + settings.Validate(); RemeshNative.CheckAvailable(); + var options = JsonUtility.FromJson(JsonUtility.ToJson(settings)); + var root = source; + string name = root.name; + Clear(); + EditorApplication.LockReloadAssemblies(); locked = true; + status = "Reading source geometry and textures…"; RequestRepaint?.Invoke(); + await Task.Yield(); token.ThrowIfCancellationRequested(); + var snapshot = RemeshSource.Capture(root); + status = "Remeshing, simplifying and unwrapping…"; RequestRepaint?.Invoke(); + var geometry = await Task.Run(() => RemeshNative.Build(snapshot.positions, snapshot.indices, options, token)); + token.ThrowIfCancellationRequested(); + temporary = new Mesh { name = name + "_LOD0", indexFormat = IndexFormat.UInt32 }; + temporary.vertices = geometry.positions; temporary.normals = geometry.normals; + temporary.uv = geometry.uv; temporary.triangles = geometry.indices; + temporary.RecalculateBounds(); temporary.RecalculateTangents(); + Vector4[] tangents = temporary.tangents; + status = "Projecting source materials into the new UV atlas…"; RequestRepaint?.Invoke(); + var baked = await Task.Run(() => RemeshBaker.Bake(snapshot, geometry, tangents, options, token)); + token.ThrowIfCancellationRequested(); + preview = new Texture2D(baked.size, baked.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; + preview.SetPixels32(baked.color); preview.Apply(); + result = temporary; temporary = null; maps = baked; resultName = name; + status = $"{snapshot.indices.Length / 3:N0} → {geometry.indices.Length / 3:N0} triangles. " + + (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake."); + UvtLog.Info("[Remesh] " + status); + } + catch (OperationCanceledException) { status = "Cancelled. Source assets were preserved."; } + catch (Exception e) { status = e.Message; UvtLog.Error("[Remesh] " + e); } + finally { + if (temporary) Object.DestroyImmediate(temporary); + cancellation.Dispose(); cancellation = null; + if (locked) EditorApplication.UnlockReloadAssemblies(); + Interlocked.Exchange(ref running, 0); RequestRepaint?.Invoke(); + } + } + + void Clear() + { + if (result) Object.DestroyImmediate(result); + if (preview) Object.DestroyImmediate(preview); + result = null; preview = null; maps = null; + } + + void Save() + { + string parent = EditorUtility.OpenFolderPanel("Save Remesh Result", Application.dataPath, ""); + if (string.IsNullOrEmpty(parent)) return; + parent = parent.Replace('\\', '/'); + string assets = Application.dataPath.Replace('\\', '/'); + if (parent != assets && !parent.StartsWith(assets + "/", StringComparison.Ordinal)) { + status = "Choose a folder inside Assets."; return; + } + string relative = "Assets" + parent.Substring(assets.Length); + string clean = resultName; + foreach (char c in Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); + clean = clean.Replace('/', '_').Replace('\\', '_'); + if (string.IsNullOrWhiteSpace(clean)) clean = "Remesh"; + string folder = AssetDatabase.GenerateUniqueAssetPath(relative + "/" + clean + "_Remesh"); + GameObject temporary = null; + Mesh mesh = null; Material material = null; + bool createdFolder = false; + try { + string shaderName = GraphicsSettings.currentRenderPipeline == null ? "Standard" : "Universal Render Pipeline/Lit"; + if (GraphicsSettings.currentRenderPipeline != null && + !GraphicsSettings.currentRenderPipeline.GetType().Name.Contains("Universal")) + throw new InvalidOperationException("Result materials support Built-in and URP; HDRP export is not implemented."); + var shader = Shader.Find(shaderName); + if (!shader) throw new InvalidOperationException("Result shader is unavailable: " + shaderName); + string guid = AssetDatabase.CreateFolder(relative, Path.GetFileName(folder)); + if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create result folder."); + createdFolder = true; + folder = AssetDatabase.GUIDToAssetPath(guid); + string[] names = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; + var paths = new string[names.Length]; + using (new AssetDatabase.AssetEditingScope()) { + for (int i = 0; i < paths.Length; ++i) { + paths[i] = folder + "/" + names[i] + (i == 4 ? ".exr" : ".png"); + // These are new exports in a uniquely created folder, never source-asset writes. + File.WriteAllBytes(paths[i], Encode(i)); + AssetDatabase.ImportAsset(paths[i]); + } + } + using (new AssetDatabase.AssetEditingScope()) { + for (int i = 0; i < paths.Length; ++i) { + var importer = (TextureImporter)AssetImporter.GetAtPath(paths[i]); + if (importer == null) throw new IOException("Texture import failed: " + paths[i]); + importer.textureType = i == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; + importer.sRGBTexture = i == 0; importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = maps.size; importer.textureCompression = TextureImporterCompression.Uncompressed; + importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; + importer.SaveAndReimport(); + } + } + mesh = Object.Instantiate(result); mesh.name = clean + "_LOD0"; + material = new Material(shader) { name = clean + "_Remesh" }; + bool urp = shaderName != "Standard"; + material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); + material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); + material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); + material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); + material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); + material.SetColor("_EmissionColor", Color.white); + material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); + material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); + material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); + material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + using (new AssetDatabase.AssetEditingScope()) { + AssetDatabase.CreateAsset(mesh, folder + "/" + clean + "_LOD0.asset"); + AssetDatabase.CreateAsset(material, folder + "/" + clean + ".mat"); + } + temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.HideAndDontSave }; + temporary.AddComponent().sharedMesh = mesh; + temporary.AddComponent().sharedMaterial = material; + temporary.hideFlags = HideFlags.None; + PrefabUtility.SaveAsPrefabAsset(temporary, folder + "/" + clean + ".prefab", out bool success); + if (!success) throw new IOException("Prefab save failed."); + AssetDatabase.SaveAssets(); status = "Saved: " + folder; + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folder + "/" + clean + ".prefab")); + } + catch (Exception e) { + if (createdFolder && AssetDatabase.IsValidFolder(folder)) AssetDatabase.DeleteAsset(folder); + status = e.Message; UvtLog.Error("[Remesh export] " + e); + } + finally { + if (temporary) Object.DestroyImmediate(temporary); + if (mesh && !AssetDatabase.Contains(mesh)) Object.DestroyImmediate(mesh); + if (material && !AssetDatabase.Contains(material)) Object.DestroyImmediate(material); + } + } + + byte[] Encode(int index) + { + var texture = new Texture2D(maps.size, maps.size, + index == 4 ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); + try { + if (index == 4) { texture.SetPixels(maps.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } + texture.SetPixels32(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao); + texture.Apply(); return texture.EncodeToPNG(); + } + finally { Object.DestroyImmediate(texture); } + } + } +} diff --git a/Editor/Tools/RemeshBakeTool.cs.meta b/Editor/Tools/RemeshBakeTool.cs.meta new file mode 100644 index 00000000..d66b3acb --- /dev/null +++ b/Editor/Tools/RemeshBakeTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86e67de5cf7e4d948bb528adbc6ff1cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Native~/CMakeLists.txt b/Native~/CMakeLists.txt index fb07f386..185b63d4 100644 --- a/Native~/CMakeLists.txt +++ b/Native~/CMakeLists.txt @@ -9,8 +9,7 @@ include(FetchContent) FetchContent_Declare( meshoptimizer GIT_REPOSITORY https://github.com/zeux/meshoptimizer.git - GIT_TAG v1.1 - GIT_SHALLOW TRUE + GIT_TAG ff4a519a65a555229a202efc7b5409b338ef4b40 # reviewed remesh snapshot (2026-09-10) ) set(MESHOPT_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) # meshoptimizer static lib must be PIC when linked into our shared lib (Linux/GCC) @@ -25,6 +24,7 @@ set(XATLAS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/xatlas") add_library(xatlas-unity SHARED xatlas-unity-bridge.cpp src/collision.cpp + src/remesh.cpp ${XATLAS_SOURCE_DIR}/xatlas.cpp ) @@ -65,3 +65,12 @@ add_custom_command(TARGET xatlas-unity POST_BUILD "${UNITY_PLUGINS_DIR}/$" COMMENT "Copying library to ${UNITY_PLUGINS_DIR}" ) + +# Opt-in headless tests; no Unity license needed. +option(MESHLAB_BUILD_TESTS "Build native remesh tests" OFF) +if(MESHLAB_BUILD_TESTS) + enable_testing() + add_executable(meshlab-remesh-test tests/remesh_test.cpp) + target_link_libraries(meshlab-remesh-test PRIVATE xatlas-unity) + add_test(NAME remesh COMMAND meshlab-remesh-test) +endif() diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp new file mode 100644 index 00000000..71fafa48 --- /dev/null +++ b/Native~/src/remesh.cpp @@ -0,0 +1,129 @@ +// Isolated, owned remesh job. Does not touch the legacy bridge's global xatlas. +#include "meshoptimizer.h" +#include "xatlas.h" +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#define EXPORT extern "C" __declspec(dllexport) +#else +#define EXPORT extern "C" __attribute__((visibility("default"))) +#endif + +namespace { +struct Vertex { float p[3], n[3], uv[2]; }; +struct Result { std::vector vertices; std::vector indices; }; +struct AtlasDelete { void operator()(xatlas::Atlas* a) const { xatlas::Destroy(a); } }; +constexpr size_t MaxTriangles = 5000000; +} + +EXPORT int meshLabRemeshVersion() { return 1; } +EXPORT void meshLabRemeshDestroy(void* handle) { delete static_cast(handle); } + +// Returns 0 on success; 1 invalid input, 2 output budget, 3 empty result, +// 4 unwrap failed, 5 multiple atlases, 6 allocation/internal failure. +// Output vertex layout is eight float32 values: position, normal, UV0. +EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, + const uint32_t* indices, uint32_t indexCount, int resolution, + uint32_t targetTriangles, float error, float crease, float smoothing, + uint32_t textureSize, uint32_t padding, uint32_t flags, + void** handle, uint32_t* outVertices, uint32_t* outIndices) +{ + if (!handle || !outVertices || !outIndices) return 1; + *handle = nullptr; *outVertices = 0; *outIndices = 0; + if (!positions || !indices || vertexCount < 3 || indexCount < 3 || indexCount % 3 || + resolution < 4 || resolution > 256 || targetTriangles < 1 || targetTriangles > MaxTriangles || + !std::isfinite(error) || error < 0 || error > 1 || + !std::isfinite(crease) || crease < 0 || crease > 3.141593f || + !std::isfinite(smoothing) || smoothing < 0 || smoothing > 10 || + textureSize < 64 || textureSize > 8192 || padding > 32 || (flags & ~3u)) return 1; + for (size_t i = 0; i < size_t(vertexCount) * 3; ++i) + if (!std::isfinite(positions[i])) return 1; + for (size_t i = 0; i < indexCount; ++i) + if (indices[i] >= vertexCount) return 1; + float lo[3] = {positions[0], positions[1], positions[2]}; + float hi[3] = {positions[0], positions[1], positions[2]}; + for (size_t i = 0; i < vertexCount; ++i) + for (int k = 0; k < 3; ++k) { + lo[k] = std::min(lo[k], positions[i * 3 + k]); + hi[k] = std::max(hi[k], positions[i * 3 + k]); + } + float extent = std::max(hi[0]-lo[0], std::max(hi[1]-lo[1], hi[2]-lo[2])); + if (!std::isfinite(extent) || extent <= 0) return 1; + try { + unsigned int opts = (flags & 1 ? meshopt_RemeshSolve : 0) | (flags & 2 ? meshopt_RemeshShell : 0); + size_t count = meshopt_remesh(nullptr, 0, indices, indexCount, positions, vertexCount, 12, resolution, opts); + if (!count) return 3; + if (count > MaxTriangles) return 2; + std::vector corners(count * 9); + count = meshopt_remesh(corners.data(), count, indices, indexCount, positions, vertexCount, 12, resolution, opts); + if (!count) return 3; + corners.resize(count * 9); + std::vector remap(count * 3), idx(count * 3); + size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, count * 3, corners.data(), count * 3, 12); + std::vector pos(unique * 3); + meshopt_remapVertexBuffer(pos.data(), corners.data(), count * 3, 12, remap.data()); + meshopt_remapIndexBuffer(idx.data(), nullptr, count * 3, remap.data()); + size_t simplified = meshopt_simplifyWithUpdate(idx.data(), idx.size(), pos.data(), unique, 12, + nullptr, 0, nullptr, 0, nullptr, std::min(idx.size(), size_t(targetTriangles) * 3), error, + meshopt_SimplifyPreserveFolds | meshopt_SimplifyRegularizeLight, nullptr); + if (!simplified) return 3; + idx.resize(simplified); + std::vector normals(simplified * 3); + meshopt_generateNormals(normals.data(), idx.data(), idx.size(), pos.data(), unique, 12, crease, smoothing); + std::vector split(simplified); + for (size_t i = 0; i < simplified; ++i) { + std::memcpy(split[i].p, &pos[size_t(idx[i]) * 3], 12); + std::memcpy(split[i].n, &normals[i * 3], 12); + split[i].uv[0] = split[i].uv[1] = 0; + } + remap.resize(simplified); + unique = meshopt_generateVertexRemap(remap.data(), nullptr, simplified, split.data(), simplified, sizeof(Vertex)); + std::vector verts(unique); + meshopt_remapVertexBuffer(verts.data(), split.data(), simplified, sizeof(Vertex), remap.data()); + meshopt_remapIndexBuffer(idx.data(), nullptr, simplified, remap.data()); + std::unique_ptr atlas(xatlas::Create()); + if (!atlas) return 6; + xatlas::MeshDecl decl; + decl.vertexPositionData = verts.data(); decl.vertexPositionStride = sizeof(Vertex); + decl.vertexNormalData = verts[0].n; decl.vertexNormalStride = sizeof(Vertex); + decl.vertexCount = uint32_t(unique); + decl.indexData = idx.data(); decl.indexCount = uint32_t(idx.size()); + decl.indexFormat = xatlas::IndexFormat::UInt32; + if (xatlas::AddMesh(atlas.get(), decl) != xatlas::AddMeshError::Success) return 4; + xatlas::ChartOptions charts; + xatlas::PackOptions pack; + pack.resolution = textureSize; pack.padding = padding; pack.bilinear = true; + xatlas::Generate(atlas.get(), charts, pack); + if (!atlas->meshCount || !atlas->width || !atlas->height) return 4; + if (atlas->atlasCount != 1) return 5; + const xatlas::Mesh& mesh = atlas->meshes[0]; + auto result = std::make_unique(); + result->vertices.resize(mesh.vertexCount); + for (uint32_t i = 0; i < mesh.vertexCount; ++i) { + const auto& v = mesh.vertexArray[i]; + if (v.atlasIndex != 0 || v.xref >= verts.size()) return 4; + result->vertices[i] = verts[v.xref]; + result->vertices[i].uv[0] = v.uv[0] / atlas->width; + result->vertices[i].uv[1] = v.uv[1] / atlas->height; + } + result->indices.assign(mesh.indexArray, mesh.indexArray + mesh.indexCount); + *outVertices = mesh.vertexCount; *outIndices = mesh.indexCount; + *handle = result.release(); + return 0; + } catch (...) { return 6; } +} + +EXPORT int meshLabRemeshCopy(void* handle, float* vertices, uint32_t vertexCapacity, + uint32_t* indices, uint32_t indexCapacity) +{ + const auto* r = static_cast(handle); + if (!r || !vertices || !indices || vertexCapacity < r->vertices.size() || indexCapacity < r->indices.size()) return 1; + std::memcpy(vertices, r->vertices.data(), r->vertices.size() * sizeof(Vertex)); + std::memcpy(indices, r->indices.data(), r->indices.size() * sizeof(uint32_t)); + return 0; +} diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp new file mode 100644 index 00000000..ab756661 --- /dev/null +++ b/Native~/tests/remesh_test.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include +extern "C" int meshLabRemeshVersion(); +extern "C" int meshLabRemeshBuild(const float*, uint32_t, const uint32_t*, uint32_t, + int, uint32_t, float, float, float, uint32_t, uint32_t, uint32_t, void**, uint32_t*, uint32_t*); +extern "C" int meshLabRemeshCopy(void*, float*, uint32_t, uint32_t*, uint32_t); +extern "C" void meshLabRemeshDestroy(void*); +static void check(bool condition, const char* message) { + if (!condition) { std::cerr << message << '\n'; std::exit(1); } +} +int main() { + float p[] = {-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1, -1,-1,1, 1,-1,1, 1,1,1, -1,1,1}; + uint32_t t[] = {0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5}; + check(meshLabRemeshVersion() == 1, "ABI version"); + void* h = nullptr; uint32_t v = 0, n = 0; + check(meshLabRemeshBuild(p,8,t,36,3,100,0.01f,1,0,256,4,1,&h,&v,&n)==1 && !h, "reject grid resolution"); + t[0]=99; + check(meshLabRemeshBuild(p,8,t,36,16,100,0.01f,1,0,256,4,1,&h,&v,&n)==1 && !h, "reject bad index"); + t[0]=0; + p[0]=std::numeric_limits::quiet_NaN(); + check(meshLabRemeshBuild(p,8,t,36,16,100,0.01f,1,0,256,4,1,&h,&v,&n)==1 && !h, "reject NaN"); + p[0]=-1; + for (int pass=0; pass<2; ++pass) { + check(meshLabRemeshBuild(p,8,t,36,16,100,pass ? 1.0f : 0.01f,1,0,256,4,1,&h,&v,&n)==0 && h, "cube pipeline"); + check(v>0 && n>0 && n%3==0, "valid counts"); + if (pass) check(n/3 <= 100, "target budget with relaxed error"); + std::vector vertices(v*8); std::vector indices(n); + check(meshLabRemeshCopy(h,vertices.data(),0,indices.data(),n)==1, "copy capacity guard"); + check(meshLabRemeshCopy(h,vertices.data(),v,indices.data(),n)==0, "copy result"); + for (auto i:indices) check(i=0 && vertices[i*8+k]<=1, "normalized UV"); + } + meshLabRemeshDestroy(h); h=nullptr; + std::cout << "cube: " << v << " vertices, " << n/3 << " triangles\n"; + } + meshLabRemeshDestroy(nullptr); +} diff --git a/README.md b/README.md index b62bcadc..ca485688 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,14 @@ Unity Editor tool suite for lightmap UV management, LOD generation, and collisio ## Overview -Mesh Lab provides six integrated tools accessible via **Tools → Mesh Lab**: +Mesh Lab provides integrated tools accessible via **Tools → Mesh Lab**: | Tab | Purpose | |-----|---------| | **UV2 Transfer** | Generate UV2 lightmap layouts by repacking UV0 shells, then transfer across LODs | | **Atlas Pack** | Multi-model atlas packing | | **UV0 Optimize** | UV0 analysis and optimization | +| **Remesh & Bake** | Experimental voxel remesh, new UV0, high-to-low material transfer and prefab export | | **LOD Gen** | Generate LOD meshes via meshoptimizer simplification with UV2 preservation | | **Collision** | Generate collision meshes — simplified (non-convex) or V-HACD convex decomposition | | **Vertex Color Baking** | Vertex AO (GPU hemisphere depth sampling) and Solid Color batch export with FBX + Prefab variants | @@ -43,6 +44,13 @@ After a run, each stage row shows the outcome with an icon: `…` running, `✓` Diagnostic and benchmarking blocks (Parameter Sweep, Log Filters, UV0 Analysis & Fix, FBX Metrics menus, Sweep Test Suite asset) are hidden by default. Enable them via **Edit → Project Settings → Mesh Lab → Developer → Show Debug UI** when iterating on the pipeline or debugging. +## Remesh & Bake + +Create a new low-poly static model with fresh UV0 and reprojected base color, normal, +metallic/smoothness, occlusion and emission maps. Available in the **Remesh & Bake** +tab for opaque Standard and URP/Lit materials. Requires rebuilt native libraries +from this branch. See [workflow, limitations and validation](Documentation~/REMESH_AND_BAKE.md). + ## LOD Generation * Generate LOD meshes from LOD0 using meshoptimizer simplification diff --git a/Shaders/RemeshReadback.shader b/Shaders/RemeshReadback.shader new file mode 100644 index 00000000..e08c001e --- /dev/null +++ b/Shaders/RemeshReadback.shader @@ -0,0 +1,29 @@ +Shader "Hidden/MeshLab/RemeshReadback" +{ + Properties { _MainTex ("Source", 2D) = "white" {} } + SubShader + { + Cull Off ZWrite Off ZTest Always + Pass + { + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag + #include "UnityCG.cginc" + sampler2D _MainTex; + float _DecodeNormal, _ColorMap, _HDR; + float4 frag(v2f_img i) : SV_Target + { + float4 c = tex2D(_MainTex, i.uv); + if (_DecodeNormal > 0.5) return float4(UnpackNormal(c) * 0.5 + 0.5, 1); + #ifdef UNITY_COLORSPACE_GAMMA + if (_ColorMap > 0.5) c.rgb = GammaToLinearSpace(c.rgb); + #endif + // Store color in sRGB bytes; the CPU converts each tap before interpolation. + if (_ColorMap > 0.5 && _HDR < 0.5) c.rgb = LinearToGammaSpace(c.rgb); + return c; + } + ENDCG + } + } +} diff --git a/Shaders/RemeshReadback.shader.meta b/Shaders/RemeshReadback.shader.meta new file mode 100644 index 00000000..e230711f --- /dev/null +++ b/Shaders/RemeshReadback.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b3abe6bc10184d3b9fb654a8ca3c2385 +ShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs new file mode 100644 index 00000000..e3369535 --- /dev/null +++ b/Tests/Editor/RemeshBakeTests.cs @@ -0,0 +1,91 @@ +using System; +using System.Threading; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class RemeshBakeTests + { + static RemeshSource.Map Map() => new RemeshSource.Map(); + static RemeshSource Source() + { + return new RemeshSource { + positions = new[] { Vector3.zero, Vector3.right, Vector3.up }, + normals = new[] { Vector3.forward, Vector3.forward, Vector3.forward }, + tangents = new[] { new Vector4(1,0,0,1), new Vector4(1,0,0,1), new Vector4(1,0,0,1) }, + uv = new[] { Vector2.zero, Vector2.right, Vector2.up }, indices = new[] { 0,1,2 }, + faceMaterials = new[] { 0 }, diagonal = Mathf.Sqrt(2), + materials = new[] { new RemeshSource.Surface { color = Map(), normal = Map(), metal = Map(), ao = Map(), emission = Map(), + tint = new Color(0.25f,0.5f,0.75f), emissionTint = new Color(4,2,1), metallic = 0.8f, + smoothness = 0.6f, aoStrength = 1, normalScale = 1 } } + }; + } + [Test] + public void SettingsRejectNaNAndInvalidResolution() + { + Assert.Throws(() => new RemeshSettings { maximumError = float.NaN }.Validate()); + Assert.Throws(() => new RemeshSettings { textureResolution = 1000 }.Validate()); + Assert.Throws(() => new RemeshSettings { projectionDistance = 0 }.Validate()); + } + [Test] + public void BarycentricSupportsBothWindings() + { + Assert.IsTrue(RemeshBaker.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.right, Vector2.up, out var a)); + Assert.IsTrue(RemeshBaker.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.up, Vector2.right, out var b)); + Assert.That(a.x, Is.EqualTo(0.5f).Within(1e-5f)); + Assert.That(a.y, Is.EqualTo(b.z).Within(1e-5f)); + Assert.IsFalse(RemeshBaker.Barycentric(Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero, out _)); + } + [Test] + public void MaterialChannelsRemainSeparateAndEmissionRetainsHdr() + { + var source = Source(); + RemeshBaker.Evaluate(source,0,new Vector3(1,0,0),Vector3.forward,new Vector4(1,0,0,1), + out var color, out var normal, out var metal, out var ao, out var emission); + Assert.That(color.r, Is.EqualTo(new Color(0.25f,0.5f,0.75f).gamma.r).Within(1e-5f)); + Assert.That(normal.r, Is.EqualTo(0.5f).Within(1e-5f)); + Assert.That(normal.b, Is.EqualTo(1).Within(1e-5f)); + Assert.That(metal.r, Is.EqualTo(0.8f).Within(1e-5f)); + Assert.That(metal.a, Is.EqualTo(0.6f).Within(1e-5f)); + Assert.That(ao.g, Is.EqualTo(1)); + Assert.That(emission.r, Is.EqualTo(4)); + } + [Test] + public void SourceNormalMapIsReprojectedIntoNewTangentFrame() + { + var source = Source(); + source.materials[0].normal.image = new RemeshSource.Image { + width=1,height=1,pixels=new[] { new Color32(204,128,230,255) }, wrapU=TextureWrapMode.Clamp,wrapV=TextureWrapMode.Clamp }; + RemeshBaker.Evaluate(source,0,new Vector3(1,0,0),Vector3.forward,new Vector4(0,1,0,1), + out _,out var normal,out _,out _,out _); + Assert.That(normal.r, Is.EqualTo(0.5f).Within(0.01f)); + Assert.That(normal.g, Is.EqualTo(0.2f).Within(0.01f)); + Assert.That(normal.b, Is.EqualTo(0.9f).Within(0.01f)); + } + [Test] + public void CoincidentSurfaceBakesWithoutMissesAndHonorsCancellation() + { + var source=Source(); + var target=new RemeshNative.Geometry { positions=source.positions, normals=source.normals, uv=source.uv, indices=source.indices }; + var settings=new RemeshSettings { textureResolution=64,padding=2 }; + var maps=RemeshBaker.Bake(source,target,source.tangents,settings,CancellationToken.None); + Assert.That(maps.covered, Is.GreaterThan(1000)); + Assert.That(maps.misses, Is.Zero); + using (var cancellation=new CancellationTokenSource()) { + cancellation.Cancel(); + Assert.Throws(() => RemeshBaker.Bake(source,target,source.tangents,settings,cancellation.Token)); + } + } + [Test] + public void ImageSamplingUsesLinearInterpolationAndWrapModes() + { + var image=new RemeshSource.Image { width=2,height=1,pixels=new[] { new Color32(0,0,0,255),new Color32(255,255,255,255) }, + srgb=true,wrapU=TextureWrapMode.Repeat,wrapV=TextureWrapMode.Clamp }; + Assert.That(image.Sample(new Vector2(0.5f,0.5f)).r,Is.EqualTo(0.5f).Within(1e-5f)); + Assert.That(image.Sample(new Vector2(1.25f,0.5f)).r,Is.EqualTo(0).Within(1e-5f)); + image.wrapU=TextureWrapMode.Clamp; + Assert.That(image.Sample(new Vector2(1.25f,0.5f)).r,Is.EqualTo(1).Within(1e-5f)); + } + } +} diff --git a/Tests/Editor/RemeshBakeTests.cs.meta b/Tests/Editor/RemeshBakeTests.cs.meta new file mode 100644 index 00000000..d2393149 --- /dev/null +++ b/Tests/Editor/RemeshBakeTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1d10487605d41d6b2263553b1df3ded +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 2c5cc2b01ac8ff55fb10fcd03105b00a6e3ac1f6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 10 Sep 2026 22:25:05 +0000 Subject: [PATCH 002/130] Build native libraries (auto) [skip ci] --- Plugins/macOS/libxatlas-unity.dylib | Bin 979624 -> 1031624 bytes Plugins/x86_64/libxatlas-unity.so | Bin 572320 -> 616608 bytes Plugins/x86_64/xatlas-unity.dll | Bin 371712 -> 407040 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/macOS/libxatlas-unity.dylib b/Plugins/macOS/libxatlas-unity.dylib index 7734645efc1fa079946b06c8a29a7c16d3fcb6e1..e4538469b332538fc518c41cec698354ad763e5b 100644 GIT binary patch delta 223836 zcmb4s30%$D`~N-Xb3aMsMoJ{glCnoAM5(xOv+raXWZ%o4qQZ4u;)7!t%V36?!7$;5 z!A(^5?CaQTC8cj)p|Bz}l_Q4uWu{aJZW$|;e%h4@y3Mn(rj-$T(8)qkVaS9SDma>y1r*P*P zUMhYKxbS}{OL@EI4X$xk5xlHj?B_0RF74@3zp+}WT4fs& zWy+E7f$Z8%MOqwHq*9g^mn|oSm8s@Za*&GMtae4i%SzP*XRY)@8JEI-IN1b3KQhX+ zC;)G!U%<}JEy_+%xfOJNGs*%4VL2JaDmbY)O?_LH1nF1jmSq!EsE-Y(L0PFW>~OIv zrB$4p4d;_!$5tIK)>4{Zw!KS7TSd<*1vNDqt@Na9Gdga)RMVwR`R%sm5^NeyQOnsA zrTH#B3@D{QAq_Q}1m3fh)pnZtDDdv^=H8#T(-hNcG&$vpY2N2)G$jD*i2wM%b|B*a z4FcnBf=1H|9TbPT6w|C+?B^^EaJ6?T6XjL;MU_U!mIpnmq21@}Crxo(=VHyV)3|}9 zFIeyqgm0zg2Y?<{&*t zk(Q5t8M?}x(=Q{{R(oH{L!~;aMLNrsz%L(Gi@PHKsUcW(xL+%J8$IodU7NU%tk>eTz4Kjj#AE ze)!k;YR=yfI7W=HlkB{MgyKkBBRx9YPMYH#;+9+zUGd2dPd*z{`c;Ik=Gj*|C&zIm z?WCLD6@)G&?NUE^PbR{Zp?1W^;2l19_)6g(tK!`v(}v1HGwRjvNBw zl$xQ!$6|KU#hRYoC;hC|L>M#m$=3{~(Vj8(dgD#mznIcUn%)%WhSt{^j34yIEAsR` zTC^SKWH548*?LptiU{Ln`QACyXwWK~K$9nMkSQ)r zjzh^{d?)`d+DRvBT@ik>vy(R0UP=e7m0HxPOK+`_#?)~wA%74xP_>v1szr5N=!z?; zKi5eYgg3-a8sV4b)|A+3qIFKC@LzYgXkE`U(YjtP-KgD$rVWTtMPnxgH5}?-%@;MW z!A9HjrELwj3LyaZ^KVbHKTF&EH_>vRr5=siQHT80jg1ZvrwX4$O`bMd*W+k3OxW;` zG@(f&2bYf`n&~S3^GVv#q*B>kC>l$=)azJ&7G@7EazI~p$ zqE!n*gY2Zsp`LW%)6@^45^dh{sVY+&CH-2ayvLAfnpQ52G$gU5O{jmKD0+4L>9KUQ zb@e8v^3>LM1I+d3XNA(cB}D7$p3yBqzLyw->c;TxMTHsuSgPKpsSpK!@Lijm!t@b# zsbTs%#Q*0zpl6*6?lu;4~n+9Q%-d- zI1!)q_j%2(;(SnX{qzRazsJk)Kx!4)ksi1wEsbp7<`HOkYcG}b>(-WopJ}F6{_~!Q zxfN>-No-+L&PGsUNM7nXWpi&FeqZu!U%lxV(DC-WE4&IuEXOutMuE#z20RM}OrQRD zOK$CU_oaF5+X_tw+esJNcM<*^WS3g2LpkEt`>v>wWACU;qrjXqr~_bDvL{xIZw=A? zt~9Y@_2&MH6n!0=E9uugx&>yYxSg^c(!{v!w%)u1O9&~hyd$0O=t-yCk=}L;_Ft|* z`#P>s(y#fnvhf*q+s0=BpH*G&ZWz&t)aiUnmAEO0vceM-F(J4B+HZUQ?v}(lccIZY zrN^B&H3sme4-er9nL}P#-&~X|H(t>Z-J_*F#FL zNE>_4c36H%ZD8gVseT_H*V>o=&Dry^G^S5o2TvQN{T1owK6PAop!lr}KV6b?`vf?w zx~TF@ye!q~TgSEbe^7c}lE(CH=HP6j{CG)9?d#>b9mQ{XZoDWx>Kp2?=z_{~@+GNB zlvkPBMJTzgRl6vSh-z8G*+%sdXg@1=FL2Mxwtwb2E%YzDFGx92Zgk@X=}}ZO2XT_O-?%&M8-G&q{NWb;>DwBp{Q5M_JNjLhpbXa>RAYcwndaY6 z`Ja<|4`}I7)kam~ytH9}m#Y=U0$v5PaOc_7s{^Re>Uj=l*w^vBl74N4Kb(dY?l)la z$p=rt^!MxeJXF_|&7eojwb;W>sx;VxwmT&S4bG%{PD|pDn$B^co>V)N5V(wMa2eHW zpORV)8SnWE_612+L>Ojqc}+V_h7vy>J|=3S07{zPT@Lx!om@Ei_Afh)SVjdE#$&{{-m`87AO3@=L z(G!`eb4GR`6^9>Ds0@K0W1k^{Na3MwalJ8ah1}tY^kP(f2M?7%?r>PDHM%W5dRUq~ zIAJG|QQf$w)0ZW-ux9xHj*IE~!0YdcE24f~TD{du)5xM1ZMo!BIGYeLU(n zn1hT!JsA6axu6V;fv(q87~Jv6P4xL0`azEAwd|zjPF;eq1r$w>h1U|P6{prv5Oum_IPNOZccEcN7ALgCoFKP!Rr;` z{H&?VCXOerku|Vs(=B-QDL;Q7U)dpFqPv|`F?LMZDhCTHU}{{2q#iy8q&2aw<=1)J zX(AG{-1LFRbqo4J54lZIT~6OCos11F|HA=AzBc-3oo})g6Y5|9_{tuCO1_iY(VTtK zq)B=@XP;!96zR}pA2&50@zQ>&+~i5rvR7I(+1p{!UasN{gK?PTG^K1w-u;7o2P6;O zE8U#zOy8AoZ|5D?A5CO}O6^gK-FA?GDWz;t5ZsH?4eyemkNl$BRmC7ei@z}bBQ#|3~KaQfsdCvZ7F{n9D!*o85p&O-ZDHq+{*TZ4MS=YU;V~B72Uq?2N zTl@MSQ%@|ONSwvB-!!CIo7!1wL7R*Mf;SYSrj2GOX%B0(u5@U9y>VhN;{8UG6=2Wm z@oHLU?pi5p+3KJ9uk=E30!zLfd7wow$A(|YOfpph|J3{ zom0?&#i?`FFC?_*qEy$7l?Zh*r#Ak{h0s?fDe~tk9*&FD3U!he+G?&sMyc7`EG_tX znENo4jW5!3>8#tBvX%Aew?)6R(YmoN{THU{HiZlH`P|g*zxt5+);TaD;~j(PC*DBdTc*)eWEAcJ^Q3LRndpYOQnM`~biiC`=9Y(a@*HXC)?nIbj`Yjc1>~I6 zcw5sFu1V;nF-z7YiqiCL9)NzoZ76-5luCauMoEt3u%nXDZ+i2k-S13*T;}QZ z_2!A#PhXWgj_2X{J6StHlqMgH7KS3db+DF@fwYvhx=;dXW2?V#b-XBzwhj?SA-!Oo zAZ!J^ZF(Ky9L$n)}(YU-J(hqw;?}MwI3rx+<&!-QbL6f`If>#!O-M zSZM#ShcFQ7>cb)A&(xcT*ASt}Xi-YYGzia;p3baOdfX^Ls=r1Ek315n4TdO`xy zmRXeq-6&BSkmXULA2Xj(V4G zJOXB^bJ9EEPe-4E?Rv+NVrt8yc2uwo6D9p|pAx5{)&68g!}5;zY(5_4f};}S4S9@G zM7V$yW|0_|P*%4j{31U{0k$K@;<$n5!@xjyqJnU3s3_GwQB~MAR7~xBLQ4c!AbOq5 zDd93$ZK=&5QSv`k&)s(@7tqJW4=D!K@%tf4>M?7GD9t>z+MP?n@l%lk?{Nn8Io*}P z7{Sw9gzvr+rTeG-gJA0SGWGlPVy1I1L2vm=O5 z9R%~w1-icI&*R#>=HS-ZZ9Aear|LKQi_(>IJ<2Ajs35>bc;Zi^i9m#%|4}&IPfV51 z&$AN@y+mo^wZlTA9-`FrdbDt&yC`kAK3v$|Lrm5E6-k5v0QA3+BJA%53%c=>P#x*Y zo4*N@yF%l)l7(koL@DRicA+`a#M?84eVs)~duN2u9_jcyOxW2;luF#4A_O9xb9bO{ zp(7^X-FCuUqyhKZ34uuG+-oVk>mW+m_q;t$bx`yqX7V&d*CP{3i%LM$?y(aTCGID6 z`9ZOkXuWO>)`ssK>naucIyOd%p~e>UOC0-3H`B3ud+aPdBDuDEiM}X&8w_ua6gS+t zPf9%kjWIL;@vzIYNKtzJpt>;GAWCizdzR=66yP3%0iXV`zHqypC~bS#M@U3kQXWuZ zfI-2F!$3b-ZslT%;Id@2H#f&>lVvczm6Ibx>6Bbc2uJ!!juIN8X5ZXCC4T}Xcdp_I zATn~pOLi>)Opg##%RaIbg_@zFNR-&}*+2V+w!+E1)9k(gzB<|on z{!n4n_o``~Lu%USn3@Ki=-Vlj(u)diB1&RVCKx)q5!QUP69fpicCB6F((X(No{2&;RNv%Yd3cJdRtZikoN+^en%rjG+MK;G1 znQLW4R?Ul~3ZtDwcGZhCbK2v?CAr7rpNDcqK&w|Ft%OTDk&UQAS~@J#aVrr&^#kuJ zq>-=&h`cJqy+i;<@W8Q@XenKlI1-MscvU0Ah_J7u$QD#54QuEedF^gF2IF^d!@WKA zrsM%wN%h87K9Sfvlr$Lg0YVQ4XteXdCiC0^U9{r9#L zS+`oGN`)*AFg4?3I=ykaJshxopQzmJcA{l*Es{)xx}s<)Ux(Bp!ZAT)ZR(O>!Gg^E zx};~-8e$zY>uRtxuW=>yY`e zKIu`(m0%cY)VekR_~;HryB{&-f5MU zfabon^k_yd5?cBVs~1GN(Y>$PoFLMkj(E*329YjhU0!nmitcNL*DR<7sZ{CiD`3oV zoAu_{6uo(wVi@L^fT3OTicM`n#?#)f*y9%DJNM^+N0?gjE)4g#PYa9iPI9bdd+CxeMc*{&~?))hnJyXrK#)eH7Hm`rcj1+8;;+DA!!u>Ezx z=CUW>U|vCl)MpBUrVM_H=l}xlo+rFyTS7=py8aov971Z-rq7vOD^iJ8c+R|A5wF_s zp7Ev-9&s6AtO4?U72;N4zMeMoJ^74HY(@Mjd&YigMVfl`QRoya=N0Ycwj5x*X(Mm` zjA=uOftGyEI){=DC8V+H=$pohY)dF19b|pvyA9aEv`4$! zkP?&zip(*BSm|V$osNJu&dKbb2vUuD$d;;YNgkz*?=z=Jw7K9u3yUP4^y)oJbR@Y= z%N}{6)wDI0ysbBy`Hq%5VE zZnI0BNlzMg+v3*+ZrthSb<{V-t>gL@Calr6a)?ZRz}~-% z34%iylb|=XTi%DbvA4ZQlj1Xh1@Y|5tZ{Er&!Hu#u<``g5ZTz?#Djjg#1{4@eT#3w z0stmQF0og=;bHlPoQa@bUyJLW7o?;^|ULs|%ni;K*@F9_ycWcB-! zUP2WB7W9SIid|$o`jW}T$Ji?z=U!lbQ6yR@ixpvI6sbYqoM#zPSYlV7XT|%Gx(;=) z67YFE{yYomM?y;8hsQS9;ACM#4)YvJDziTal1SPthn4t_{6+hoW{em!}B=r#weP0j4d2WuG6bW*{EUYLAhhvFQ-M* zj(*dF&Q2u(`Xc=2Y%Y8`)@wLvTH=0|g36ZHXRAG!ldTGrmSs6KoWv9QPbLc;NkZt} zOg3jEsqMcYlY8Qss+)^2&J2*JsSw4@{SJtyJPeS$jX2F$?6`L(doYrCIX6-0TJYI< z5@hzWcP6Vaid3KunXK_B5Ij7>Sr;L=c!Z4@1;_U55w?63sYA_2*pX30q7M$U-lH+& zcOPc+N0TaEOAhm16mg)lIH1shPCU#`jwb7<<%nhM7_x;>-$Tq}963+Bq_bD!NG-ZO zoq3Lj!+dLHZO0QYdd|v5kB49uD>DLK-)sdtzVkKS&?japo8Ku1(M2&&-N5gEj@_l4 zyhlB#`u-rhJs$2IQC+zSB${R&WbqS7)rvo$N(8^Ph5{<;O~o+PJ>PJ~F125=0~1Kg z3jH(qn&cBS6e)H@F8OE|DNayXxrtWllaR*NOeZx;_fXN3ZRi1M?BaAXl|I|WI?W)Bsbv>4&LA!6q+RUT4APJK z?`AdQNO<|Jpa<8xvdVQggy1S#zMIX9Ba^E%RMEq2=(<4j+nD^0PU@;qeJAspNk*3c zIagux=Ap{w$6YF$sk_)uGl`GG_*C9E@iHRHOEY0vNvTX5k5re+{Njmg*t84>WiOqf~sU>n9FJZ*lIaq!YfA?RK!o3Bc6M?WmZ<3M?C~rT zOA*x%noYb**ZLjK&iFJUF%!G1eA)0jTREF_DpeX_Xf1{JLj0ZmJ)3N!tGBUV5;2_- zsGmqA)oG(`>{TME;*!6WyU1NrKpSbEspo8VZ)G);h><#PWxJAKMJ2Xco+M#gQQ_Wi zXinV#?C*#Q2IKyoyp2*@Sc5r4-{&y!c{v8tey&t7-OiB%0mPMn+>2MnF@9*I?VH$UzpO2c%_V!t2TP}U#Ev+KzjAo5>Q8=U1C3-K_1VlS%_og?(>J49!8&qd6Z>vH zF_gFbrSR&Akcf}N+Fz8^vBxhgYd#rOI#ES;v7sCM!oo~MsyOs##f^cT5{t*#%iRFs zC;gE>vsWfEkUsi}dC!Gc$@qyaT0lI@7vnLP*+oPk#oO7vNo}Y5CYHT`w4(k$v65!e zh2G!D2AWBo)+?`o+?dR@EqC9@^Q#ANLSvf&~rbsi78|WeYcJkTa4J_^E%dQF@m7$>)43Jq&j)SQc$clZk-}?fFkp* zV3iX$OuS8!Lx7Al4~5Y^l=IiJ+l$E@+J7w@zJxTVoz_}5Ey3(7|LZv}kjwP5YG-2B zstT*NmVH=CD%a@`I26PikdObMG^XdRsA9`$3MiR3EN}UNwO&R-$ul;88RoGYN7YJR z0aVd>+-;3Ik9j&FQhvE=`Et_8sR>G$mqU1KW|u~1EaA&Zh(IT;VDr8w6KLBN?9=zy zZERz#<4O`re`9RfO45KlWZ5gpdh(c!Tm_X^S58T-asaL3NA_#;39bWTbg4)c8#9w2UqK z0czZ_l$BeJebV9o@xoC}KY@l9;KPW@4Z-7^EdjhhKeWtadgDzT z)Nx)73wiZKJ-ONO$U|cM*X%V)I}#>v$b3 zEH?ng(q!dDOl?sxbLdBsV;QjdC#BTpY>d|2)R_147 ztT79+aHsn>@QI&`PcChIjyh+XH4bpCiduO(u|fju^O9* zg+|Y3w>FU=x??`8ycrRpIN#E2GjY^X|9O_STSyS0)#ozfR#Mq#c@k$>BnD0903`-> z>!Y3+O#~!`S?iO4O0N@PzyE!%Z2PVk?qZ6R(M zdzQ8QomB9z!*Rx}A&>^xhmk=M`06^v$L0VAZk2oz`wvz-1iOA&a zBsGPr$o#XDR98^dcab{9Ud~YXv+;XKm}T`YQi?e20En+~-^cMa&XpbCO`25?n2tW0 zhOFbqt~df6vY9*BssI+=L%UAbvRW3>qQr%1ymL3@V$-xN#zOwCcxEcvD0;YL1%O8d zX;Zb#m`17y5;EJ;$e+U1DO$_uJ)}8tNS&fev1%%p!kK06C2d^%CUc#tClLI&X|r5; zvX)iZhaUM&(z3SuNK0WNG7I*RO2SfPw(cW01&PfZ+cmJ=f%zhH!{2>Nlv!mjVjCjoA_#)F1wV!ws;cv(>=K$GP zBLfsh>^;N}O0Erm@>2OQ2exrSwz-;hWA)GA3?bnl>1G%{L8}RQ+a`y^+=?*8-;#Tw zoOeNQ+Lwcu8U|zPWh8PKfO_-36rR5~9(mKgj>y{r{Czz++;f7Kd0B~zV2@0o6+QPJ zuVwD(nEmt=&9;>x{e~6SI!n!e9wkd;j5zZsC@Ho2Wa+s76%Ar*A zFzHt5$Y{mP4CEF#rbLoA@LmeXJF-7$Rv#uo!r;+b_Sa$ZRv14@%Pt-v24M>_2TzhZ z!sC%z_Ut4!)uS@Ws^UQ-xh@=Ar!%K4GKK7A#w=1#I5k4c_GJ-ofeqKPds(Ck*~5xu zlX1mQ4p+!89%KpGWMXA(chn2V%dxuc1ZRN31#>?`o{XvrkKkci*6b+kFpX=ZG23>O zRH+g(tcY6XeWR8Y@=ervc@%1KAEvcjo*k`(+PT#$-D053UVQ z*7`Kj34ViY-T5$3%VwP>bA(ICIOLGl!eF4fUyMxfIaptA zKP~Hd4$dhNkd$*cmYD#^g>$5G#jE|euu%!2nPJs6nz!Kz1V_0zyq5hy;dGwV_u3ex z1$>1H-z+~_gyr0AHtP#g_7TqLc7UIP(fJOXRY(I*}! zdSjFoUN0L_ip^}Jz+UYJI<%sQ$UFOJnfW5|_o@mOMc`wUVqsVMgY3>lQd=0&Tgysc zBK6|6AmHn-dTDrLA!fJnGM2We3@iZLq5jodUAlEh@fC%#T6FIcVSIbgo-Y-L0sc~d z&A;ofw$(q~tFXSZ(&!OMwCi0FwXuV7FNtO^duqaoq7OQcGr5*%DWqy37;8#L~h z$vA;vBo|&Lqgu8_E10FJ*!AcYUm1wKlisN3ZnK}7g+p|lu4dhkU8iO}k#+ga5_pBw zCPKNsTFbDjH~@Fu-i=r1uDdQaIC`Ui+{R6oU$1lbyQQbra_%q8d7(oWt>yg<@`zUM z+Yw}@{kL#-1UIQmYRV%o<9?Z+B?WiXGIEE62@N}F86J-RBN%z+E*UAfBeVN1=@<~u zp2xsLvm;E+t8qVj1s5YZauq=HPQjQEHcYgaol%6w3S3C8&|b@0+#?l)2a#IV=N^u! zevedL@5Xz$JnIeU!+XTHb=^qV*H_1U6;+6`>Dr+j^Em*L_p@^391v+7s@~4wjf(o6 zL~foz%evnu^-J)5gtFx9U&9vPCsl>{z*z1RFCiM4YxhaD_?8B)i+$U17GAJqr18V} z8Y*001m2Oubt=4m5qJQHziX%P;RpEzd^|b)rV8h0?FDdq4$o5I@mAak79g^bmw#6g zn~T7=b2wAsDMjEbI6Pj3+ZTcJSCjHk75Ukbnm<38njF1@XmB|Ieh8k20;=~IA8;1vf00v9rXH^Z-yhRK~l z{Olodi@%(J5Dqk7rsU^?PP|TIUZ-$M*9Ay#YSdvRXXKL2IPRuGW1HaRLC(W^uLwRt z!&H8Jihh*K0)zna_zEP6Rwr)$%3Ur0M2pRliEFjJoI+_!zN_cNjb?IUlgm(BL;EAN z%qo)&Ubhu=Y)+o99)~C8_30192y?~85k_nT-^r)-T9%Xx$FvTa)LarTltiY{BZO)5 zW@=gQN5mpDY@=mm^GI_+gG`q^tS6S%aL9RNkkAqt`j}L&nl=MUxrKWz?x*zTpv}CT z^QF9E1_HLnWQkyHqqW?8OnxLn#nxI&;#0EGPKa%(wbXn=0*VPu1GJVQpGX-hRBx{~?LQo?u`!1h66%78`U0rBBB2;LowImZ-g9y+4wCs0E`{GMJt)-MezoSC!dRogw zk;YTu*VP#R&~O5zv;Uuc*-6Lu(mS zj{YPFOUr9n33pmg_^!Ox668)x6QRAE*3zjW9YTZ$u3F0;4~jtkq>I*awi3OG=MrVK zmYrVox}8w6q?SoO^pMb|gx1p2mo5~9-Nm$)+}d<7T%VoR(y=bBONB~Wtz}kyswcuZ zs%0nqXbWKp)mj`I(BcA}lW%crL^CK&|HS@kLR-S@{DK>EGsi+2Jnt*AxW6|tzB@7TnqQ1kY8Y<*L@f@ z8_|rW(i(4B<>s_Gee;GzHK!4ke|;lp+ME5~xM9LXlBYcSG>yjEi`)mf#9MZxIrX8P z-mqs#h3r~dRw0OXre|NXF+p@7jeX6|1koz=+H3YEh}LSf^RnQ zUdpQhjwG)Q#zFRZ9+AGEV@gLDKdDi!JnJ><)`Cu^6JD`XEx^*{mCADZE7q+gSayB& zpDcp_{-0QSy|V0TNm~-y_62(zOxx2B&spmb+Jf$V&gO(rFCn0Ymi-z+>s4&@oGWv> zQv~*}j|#TDJPych_nf^6q1D`LfkHWI&XT7*gCxedTdKb)^PKs&qCVYIK#**WEdd{4 z+Z^*vc#OAJgG*-zOY zt*Ce37Tl=-g22f3+C=8nObzww_b9mWmfv!zOcU)RaQusHT1qA&I{Bo+Jt`s6{4?L$ z8qA|p^!w7S>OU;zZkTrdp)`Qsw~q;>$Ee*?)-;T|(?w5Mk1*;-yFX#`!)PN~{RvAC zqvgZ0AM?JyllwkV#qY{flen+BDj|QV-0ELn7owr3RpI&h7EP?CWtGBd#o}wgNmoJ+ zf5Jk;X$#juDB>_oc`>2mP8;37o5xr^CG1zs|_d=5l{F{${N4QP#-yFHJkw5G0fMIPJS znpULK@>phTTBU7w&e^n2Uu5~~$d|tsD!hIXcmRict8lj>a8C{|mB$*iq1EZbN30i5 zt&dnj8|v!5`H{kZGw-Zz8C9OKq&yPXnbyRGPI<(#+t3=7JAlx3hlqzFxMXYr00u$P zLxV@Gl%C$Bopaf1JqB<|F0)3^n)K&~>~RE*rO#wGs4Wer@&op3TYB2z$OA=R^1J&i zu^nw*CK+WM6ht7Hfe^Liu@BgpcC;Mr{(wDdM?Gl716JHXpE}F#@Iy|k3jNe&cdY4= zbUEF4kFAfS{uSQe<3d$c_XH!I_`5A^4)W!W_t^7DT0_XL0H4twlW*f)*1J8eL^JQQ zY3-?ppa)`Qdm0j-cSq1D=P@voA&vRS@kO^-RPJRU3O+67E1R-BgDCh5k-QT$U+lo` zu7F#dg5?~iJ6O*RX51wuW_6TvIjL!Sup#hWOvyA)RsXTYSnm$BHch+3=5?U`%Ju}& z7Y=A_7goRz9pEwT@34T5^hY}KHoMjlPR0E;tJR5Cqi=4pPMt7S4%}k%I#G{GYj3F@ zBhd;y#BIlaX_&!ywS*&-xLYiv6E%B1y$Mmid4cP*oX5;?5)b9mH`(~kw1LAaPKF6_ z@&?=5nU13SZZh{Sv=_~}!6tPpFAkj?u@W zv7kR~TJ9QGWCD6z5H_J>BY^y?KdoQ;>KCi(t`G(*REoCMuSCKD#!jIWY83B5Ytg#c z_YJ@*c9pH}L7UR>+w4jYTA71C^q@^Vx?F*8PJSC(S=|O^)W^A8en%hPlk-%*)=2)5glwHUJ$DeO5;aPK>EWg4@jC=y6yq&6-l;v9-v`3|tvryoZxyzN$`Cs;D zA;!-KJ<&;djzX3p=O|=1!;EkB#zXRUUNSYR=cD!F4k5S(cL+D-nIN`Bg#(f0A`QRH zO826-Y3IxAbuT`aRMeh2K+EPhTDh2y7QaZKtIR5Qq;Ae& z`;~Y@P)nH+@>$liKg2^>5s#ex5Ai-=tyRR^d*+LH-U{Wv#B%`{;;liIzyS~ssUqIT z9CmU5#LK$IiVuXL)j-5LkZvWyQadfX`W;m0|jVGC9 zFsckY$u1A3wcVNmpNC5bzVdFC=fhaI3G_R`Dh{D->5UU?*bw;YHYeGlA+&v&fhQDh zIH$R+oELUF!JZ9)mkc<;?4xOAAq^p4&1mZ7{`YZiLx;IZwni4`7nctPb4$E+oJB{| zE*%?!6T$>X%zCGS9V`zNT&NN#Xi!NB6u9*jyUFi~-pQQ+%&P`jZPCL+xg{W6-tos+ z@uAecVb^0^9Jw-GJSM{Z5&Pq(X4Z-x2OcwjiA5K@mcJ`2!tGMvzYxz+JXL^$$E{Xt*frhR8}ay zJYB%@mm@C(AnzFbXc~u!^2|(jXe9OJPidZvq>r439x1Hwm-4W(`w{kN6kS&9;9-tX zPZrKACktBv$vbKb_#6wyBX{{>Woe>rAKB5-bfxF*40Tj_xb4L^aL$qD=DV?pqkMQy zXRyREw0hOeoGSf3jr4t7G<<$3JE9e3X`IeZHm9DnO9p!~hSn^W{Wm<>^C|4qXu8aE z@uB~%jrc=q8$CJIf3>k6h@x!>hgi@!S~Gsid$h4`vd!nfCh!Eritn<-Pa*JnSt4nr z#bCku&2gVNO0EV*{EcWy2yF`gWE8VN$RCTI144PrpCxVqNU3B@FZjfjx6iRTdaq;p z;)nD`7YRhs@wV11YHNSmD)KAEQK-RNl~dEz7FR)kN{cf=l_icVr0pg0ZYyo$M;r=T zH2kZ@wy06iy)nq6d+`$sxj2c=Xh3PPm952^1uZrLRhC$zkQTq~0FrN8yk>)a=_5gn zf)=YIj}~hdGI0`Tr^nk`JY!Y+xCcTjeS93uTfBk4{2$lvr2lAf#J^fhLydwKuOp8Z zZx=Fg5{sjP(!~L4gLOrHL5mwemL)DLB<>}OMOx%vPXA+Nizm>so?|&*_@}50B>+f6 z6ss%)VQQq>lntmw%EfQwAFYfB#Ua|ktY5v zOo&YUEKJaIPY|ldZ@#n$8=n5#ufP5pGV6W!Zr!?t=p<{nd0{>dAVX&TE#Pr(h;B)G zm{~fwGZl~zR-WjV916ET7H)qihJR(rW#pc~_R}c%C}yTLJlPteTag|z>lQe~hnsPJ z6`#QCLx^~#zUQ%Ub5B5U*b=V+BqQAOIAqXh5`agqbZgVmm2mqj;r3@@SK@(DL+EGn zV$L1ERr4?I|99r`{}Xpzav+4%)pa}s2dtZ08wK9Vx$xv`Y9H>ZeMp3C5Evrbx?m3F zMVtIqbj2oo287Q_jPn$9b8kYAiE(b8y15tPkqt+$J+s5@KZe_9gxjCfDIX>4>bgWK zEvJGa%oOevGRvBOlk5L|OQ=sbdlldz#^;g7toCMYGMd+PFqaGt_d6Ss#wBZQs#q@E zD??Rfyl&AbkVhmQ(nbcJiM?w)8t!Lp73e=(7oXUbBl4|=!1UOsukZn24*o>W!=G+e z_?I?X{2Gle%=r1tQ#fitZ}y*rsyd%DI-kq0TIrms71Q}Vex-}beWmMv=Oq9!#k4w~ z&$_6Oy8h2OLDym>bw0;HaS{~gIYn48Csfu&-PHBZjEKh*qtG7vq(&x|0_$K z&qidRMokj&tu&${FYoV1%_J%g>8TH|x8OpWh?6COGRTOZP3`z&NT z25a(zHE)9x9s~#5e-5@j6@zuVGmYU3jA7NB!i+K1?Dd#j{CC0p^8FAcFS`uw>WyZ8 zlyAVt7LmrkhzOT|KKG86lxey_Hl%BoCAryWSNxspGv&9$F{=wj;d^d#O#^O@)JS5_E(CZYX z8b7(}I}BaN&JDk>l;X$P$nnQU6@X&5>wQ1#(?3(aX&Gl=*7nf{X6kjVGO_yUN<+cA z(ptoCVbwhKSz*=cLuneMK31e5XzE?nX0|K3Bu?z`Mjhk*uI} z&%X~O_CzD`GQQ>KBJ%(Hs4sAkX}G-fD9@y>V(u zQ;eOxaeP^QRtP^m)adgM;m`$pZEHz=;5jG<Ou3&r9=xaw1h0Z=lLP6p`Iow<;-d@H&qsuVnvcY{?@jRIZCrb}L{~KU z7$&NWLh@#?!lTeMHJPU-E0E~3lCzPZ0sQ(+j+*nw2Sz!1WAYRfvyyk>uOa~Nk})}f z1LGA=92$n#sDPjbH;?TgNa00aL@K$|Xtr|dPl*%->$)?)Os~9Jp_?21CgMrhic6&sv>O&PtAVL&7;mXC+remJ1)Cq#8sR zZpP&13R!R=$jO)-rhxSLYpckAZiEngZpUHVK!bHo3Kwp*^>scrNz7aX{D=#0Sy#Gi zHBVh>Lwtc%-;{U%f~9!6k4Bd?7km?^yCD~+_y8S^u z599_GZtdY#bR6>wv!xA~x50!d#@`V`48ULK5RW!EPsNLEvG0{n6LLAf>+- z_c#IQch>K%s!W3kH^=y#5L-2;#2LEh8Z1m82s3GQhCr)sPAUo!>9@p4Q;ATWla}I- zfjWhtQ>FP|ZRs#ms2c?0KObksv@z%~gZgDhnuJ%J$jL3t)UG0rY&k)?Lhy+bsMw17 z{LBzjJnTQctUmFOr#|qrZuSJOU;eE#e%vF%G}%7H)S;r@Ty~*sz^o22webuwYO5i| zBl^eyBY{cszC%v*HQX9u49AafaL>n~@|4Wa`FZhPFb9n$x9_|Bd^NWKMJ1OP5^@03 zhkK3$`7w7PCQKY-|2EQCp- zlxG8Jyo~yr^~v%1F*wkU+b)kO0H*LJIBbR7+Xhp-KES%9-EX;p?eB>;j2UuM1)uvP zfc&TD;EC0qtviCADW4z!1mWvL_&lGys(H96%gPJle**G4=XK0$9}$oIU=HZd|BT9; ziA0|mm!naB!!Ad@ypwP6Igoev7)t1q;wvGgb3u3i;8bE>KZQ>9{x)rle`8A9`YLxWK=QNDK`6+B@h6QBPwvJym`?bjMA@+` zZ_xPkhvjFr;RcOk;kPk3nT2!1HvYLjU2YNE4Bt5K;y6P*_Aj7X80^W296)bDktN%-&k1s91WJ>3u@80eY-;WPQLSpy02Gv@_Lg_Z|Y&M_dTYp zC}`g|XA&-9Gox}HpXKLIjK`w_?G8M#vX9Cr@`~>NqX+0f^Z%s-wg007UH2AtAil`E z#OIKl@5HP8zxKckR}0nrzjdHV(IIFS+b{x`w+3T}cX9%ngZg1Rkpxex@a|B3M-rom zWBat%rux2^tp8ShfKBibI|SCLEk5T;=}PV5%jr$=_7TR<5xy7sJLB|xF~azozqg;0 z$*sZ^iiXnlzJFsUEE)oD>kT(HQNo|9UyT8p?sQa48@_hdJ7N;%ZCx-QmkN4mFok_iC+8?Tu)x= zja}^X%JP=CIRMedMoBY7;gUx@LnLA7gx@39Euxrp?SVr1aC$>HHftQb8! z4Yhi>MIeBR3_LX1&vuZ8fxwY9#upkrE??gc4VWguiFfzp(H73kjsoOo900#6!rt#kEz5Y+R3FraLMF7#1E;04{>O{mb;+=XvA_710N3Ngc`Jm)< z-&`F}1o(ft=k39(;KCZezKR~I4zIx0GUOLKv5?xv@&JFp;+LQA(zS$EV>vv53Pgx> zz`^818tSiez_AB@(pHQ{@Y zVu=vAIAZF27b_t6yib{SHNZcun3nbUS*TQAfzMe1c5O|~Z}C}~0Q4-N*G$5d-aupy zOrqXGePkZ;j1C#6$+WD)b2~-S7dWu5JDIu(7mFbR9dK1U+kwkSiYP>ca#~f z<&7WJCGikVZw`8YlkJ*{Q}#xi*tMxNq@f0Qo3#|mcTYf_tWagMsQ4D%|4ToqdN}

o5%uGQ!`msne)O(@7u>`4hIyn~Cv86NbMq;mYFRy2s3Or?KF*+igv$A>?o2w2&dg^kX5voAeLXuelLpdC`OD++Q03ug zRxchmFB?9y>G60;GWoM*Z9JVx%RKuC@5gm#hc!DPs12;O-fUWx4!p>^&ZbQ&&nm#L zK=%`ZuD~>5<0cf))w{Ttn@!)ikN#j|k^~hc1Ra5`X=0{>An5|zn@GJn_^AXjhJ+xq zf(!++>;+X(d5ulU**MtCw}x1VQOPF0Z-ComljGkw!sjY4n-J7ZsmB%k_j!DIhZ~Fy zf3xXHG=%p2n;l5P4an_PEI)~Mt$Fl4uVmFNJLGvR;RA`OmhZBSgAm7hC}y_};$d`t ze9z*NX)yI##SSLZ&NWN?yWVsD3aGFi3cTLkcdXeQv^RJqn=ywzc6h!~;6Kgm_;@3m zFqeMv-uC9}_ABPQNE`${F5H+~fyeweZ0S7e@9erl(BxL;W}lyTiu;6SZ`ieY)a1SU z^}m>`;-CU1Ex=^SYqr2h>pNFrVA4!wf?Zm^OPkm1w2^w2@lcpxa2MhDDj_IVgD0Z% zsT*y3nz_%X9;L6p!U*K&MnL(z+R0ZeVm{{0@2}X{`E-16bD)bVvT44H7YE^{tfAsd z@?A=!9P%ejN0Xa`zlwT$t7`iEl6jhNIX-n68)~9mYJT_fYi<~pHXHaeWl3`}Cv zm+T&|w`(b@wE)Ai_Qk*IC2>$;z1!RvP2%JiY|{c*{AY>XSwJ)TOva0$uhx@(9AMh7 zM{f&!N|$eGnyNJQi_p~jmd5q@@`co;TQM8FSbk3K&yQ6N<~_qme2+rnes0kXbaM4?(KLr)h9c+6Tq@c!3sZPz9DYT!bW6_H5AAeKv+2g{Bryeu?V!Yhz zx`-`UOs7+q$ISCjTmiq%V^#3;zI5P17Qck9r7adRPl<-q&d0=gg)fBh8)O5%$2m^d zLpb8ak#8?C7Z_dFW4gNOxSTLx*?h#z5-sO7j9=>F$(WM3T*Tefo@a0be%6qD{6@b^ z@$cCYiPm)+Zbo(AWWGPm8=$LuXp){E4xL-UN-V|Hc#_NfmZE#&T@r->$ZZ5ci7IpJXuEk>aLE&3H|vFk%s8Kv`G z8a`xqms5Y5Wn|?Uo##27zbYzFe>4iHShKKV)B|3z9Bux9U1fMDaCROmwF18W@O@Q< z8}74-E1=p`iCI?AXS%&hxay+BZF3RK=FVZezQ?ujge6S=o<`6nOIX8|X!^}!%kY&n znRwQ{Q>5+kD4^{+g>5_CQH6HQcX@W3)%XEVd`wBK+YfYvXVmQ?74;~fV(r3;EpICo zOP0)csl*A5S$GFg?+2)OUm~l%nhy0$!2_SdPESVx_3IVZpKwcUSeNh8=@vV(8ZXWA zX0tb|@qA&|Z05HH4rI)1Hf0Uf(`vKXp*6HVt#XsSUPJqOp14tju>}P%{$kAAZm5i5 z%;p=+xE4L~oy9C`@f4}t4OVO&Z69n*;0*F(s>Am8VYP>pG1W1*eDhs4@*)mJj5qSU z;91KkP8nOadCG3Zg-@SZf3aoj=qArw*Ncd89EGpMICQ;Gj32MF*dH+&Tg9_AKhjQ~ zb&6JW`?jL)OU0+xn9q7tTr`t)T2G@q$ME+>1!mL>1+@5OC_7$LTf|V-yT%@_r}b!d z9CO=1cTi~_JHCOorlIqg^G2FgwH4m)a7MnoKXp(5quLS1^M#}1b)`^x%@yYQ6Gms{ zbk_PO%$SgAEcquI9N*)z!sAOg*Mb8~)0M9Uc)Zv6TLKS-KslG-c-L?7|6BqC^$9tK zKz=(_4d$NO(g#StJh1W6tDo<2PA7TAqC1bB0H{0QKc=!#Khq|3>QwgA&$LdXrobpa zhpaerm*QA?%t4=U%#eqpMaPO?Vc+2!7GN{}V8u4kDo%GV3iyACc*w)PCJ8~!@3O#6 za1`hMVBI&tuT{Rt-fg0Bo|_RA6^@a_Bc!6nIsZbTUWZ>`TQ}pq->b>&$!6NHa@u76 z@{*sEiHec?xgJ>=Qw*r1V)?~Cj>cQT45cUfdVAG z@jIGB4-Z9KLeE_!mPGP3$eZ!0&^yzn~Tq%|v z`VA_tdX~FVH_;*ABPfSm*-9%3!zT#r!&X|o zLEudIai5@{k-Xx+NLU9M{L(VcdGid2)*6*p@pB6Bj+i9d=>5=(r}(QnXvhO|HzBAl zrU^8}HzTify{*tv#Bclv_vv;Ll7B|w{CbAcQdFE01~$4qgH8RNR_YiFMvAH#4wVyv zPU8I^7|rMB>gJ%szv8I(qM~emUlEe{xxplC0Ud+YN-^#UK|k;cF=ay3(BQ{k*u&rH zsQ9BNIag~;eGCU~Q5=6!$`H4eYKw!x7*|cR4)cevU(ST`Z}UM(;>2He+;KKug`1+m z9Do4gbtXFfi&|mEOunX{L5;_FRt54% zRi+q^%>>_un1gz3W`U`+VmS+cb%hRo!^D z?VhLh zESlZjg9rafLj+5)y%aw#z5Ni2-iJwyhgEC$(Q>uBtcYf%zV$&8npB`DO^#a)24XC|Kz?qLCMYZq8xaBEILhbS+i7YWcfWqmGSr#1*&wzvuJ$>}Ipy-|zST{r`Ervh$f|p1J3F z=9y<^o-ywhTZm4aQl2;ucM2TEqN14a?g&4sC=-4|!5NOp81nr9XDWN$kp#|T5sAQ?eQ_vdSKpp0L0kn|{5)hdc| zSmq^{moLvH4I4b!A(u{*{w4Ybi>t+AY?^(K$Y2cIUghPnN|y7Uxuiv-IZn7nfmc`# zLWPdscdRp@5ZgT%XW7g6FS#H?{SJOSmsG0QS`K$pNLJs$U*?i$WCZ0850Uev+jeX2 zVNy;a9k%iFf0HY;QE$q393gcn#m7HKNblO4dx1^u7d+kUd+ZmbDj=E$dz?h`$Ctd% zQ8KjpU=b)L%0YSN*ieipabzY{C{%5WdQyJoD49e4$l?Q!;iToFEI#)bsYga-@vX;5 zRo~bwnWrYVOpRW>i=R6NA$f2ne|wDlNF#etzVSGjP44~7!%mPd=+6Tw|M3JlKsIdQ zm?%=gD}Q)Qj@R=Sj;d zFV@SwmkbjTcQHqmfg=Xbh4sAs1(Hez$Mft9q(Q^goq%Tc3RAFCd{s1m`0b~as7D2B zDHG2tUc~zE=XI{B-m;FHE<)+qG@kNbFG8fOyUzOfB55NL`**z2Wdcd{JDztLy4RC& zl>1#FfwV0?8eAcn^@gvNOXt!JK{ulpAg5X-4rS`FmS4L+yhKF7yx-#~zm}zi`pl>(Ir(Q+Ff6|rm=T}LC(g=V#(F^d_{|B5I?pObiZT0fL z{g0e~6Ch{KU6J!o-|~sqNK~a}S~X`cCFcVo=MTQ+2dE49^j-<>JfgrSYryhU=ty#ePa6MbdYNRs8&QQrl-?dpRjv)efB9Ahqa6 z?a^{K$Q?@YQQ;<(qL;q0M%^T^iP!RLbq@NP(_2_~Ui-@0`W6``(aG&7|K>J?zxWmW z{B2Nv$O>!WZBkaMQI*SO7lXs03=UcG^adnrd)9{Xns-U8aVLB(?j&lyS^(0Dzo_N| zT^feRf;NH|?X$NN9;4#HHua$rDZX}WtL550RbghYVM?-MzdFT7B&!F&P8@l*=r%IL zZzLv!g6sU>yQF#8q}IsO>{UXEq(rbULxh_s_dg=#+pQHgc(pax+Q^8?qYx^D`?{&o z`!J+Rz+#^zy51CO-EG6zEHkB}EFRV!(wZ*6N4l1&uK2x5wx+!QJ<=p7V~MEt;pEDx z(Kl9$_!?E=UWkLq=9z%JWolK!0MNt0E zPC8V}`%;;5m*(J%XEl`NuZhUO60vs@<$dqt^nDEFGw*{RzyR{f`y^iS=^!?!FMIXq zK>33QWCgt(P5Hcsq)V738e_W2V;rVCH>I?AWoXWM@Z_`^`%5GbgNCK*BBkcNQ==zC z2m26P6h0Fuukna%rx{U{pL;|mls{mRtEWjfK;4xZ9sD)#SAe7acg9ivMFH-5)U{Y2 z7m(hB9G}niPl=Y=+feI*rzA=uy-Y6JZ(-v9J|hij&qko^=VU1PX`U<0Jdc~7BW!a+ z%6C2|6UmdguCSAHxvmglj~h@vu@GTxioz<*%Nzy zwM1G_{`M7VKwHrCh4!lo&@I7)2}=`Lp?nH_-oVegoxD zyzGgfm+DYn>MgYHd={VkmW-=bZ`OYk-D?&v{|@&CkE9AWkPmx@rW#zETGQT5RG0==hY=@Ae*N1 zF%oS?_gAMJRs+hBp@)=F}z1jv=VxS%geHJz6uqF9I+4{@R4v}yklai{>fA`Veh zzdfh%BZRi47lWzQo6=Azm@@Q0+foWjO0c~>=pb9D7Z>MX@IRWMkQwCklgYIa z|DPUm{BDp85Z};+@(yKbbMnmuKB+A2LYLQ|Jf|#OTY1xXASg0+Ni?>yoEijK;0s^c zy7s4XXwk?jhmnVjp7EtVQn@DM2}j+B ztL=&7qu_|MQ%)SmSdVn>2!MGvn6V4zvM0{ou|^qbjT@5H6X{zep=NI4?h;R&FBBYa zH=J>vIDHfxVV}}j=q_W&c$B)if;8R@slI1I5I;d|Y|@qIE6b;zxsU_(yH*m7jVPDGdNcH8snZuc|%I9zpd3!Fg|Roj zi>$%90crG>3Kom>Nf?B!E7H1}EEV_!z{vo9T9F3%SOm}%vG5bhzpO|DOOJ# z$vmqftr=4lp~KlMy>v*nGF2N{;E`I_8@giaKg~g>R4~27b)<71*zY=1Uf!QhqM4&9 zpX(3e9)gc-e_Dq&!^d5J8bSl`;S)e>84Eu4sO)(F)T_B-*^=iOZWVwceMXjNI0wLa z>qzd8g+5Au%u(H$sykV@UYOKB^Wj+mv?XnZb@bf;l(IZN$_3Iu|AJApL>Ke)ma=}b z9!hg}6y-3j#~0Iq%PGu}$ZM^$$}T<1wR<#w;x z7^=_U<0?^q<5!+Zr3yf9Y$(_|^89m+aMWzadgAsH0JHpbffFae6Q`MsGi|&RA+#8R z5&T%AVDxihlq!Y+goh*L>c=<{?g+no^^XZak?!|kDWw7SsO}Ec{aJN4sP4C=-t$?N zY4zY4o(YZsK%ujbO7UHlY1_u_0dZ7P4ocZHrD%zq>qKknR0q?4`dqY;DO>+(K^rj< zKEndCb`?6i;@Fbd9sLV)6jViIVj0_@l8{WQ&5G?Bo599GG}yh$}$w({$bMBXM?7n%u$%Zx(@b$OC)HKV*oHCmVU#K#xa=yrOL zQXU>et4G5m2T1ywEgY`vp0=CDd&@A7_FD>oQr*RrF9@QIf>y~%$W(KWh|~t<{UwHk zEghMh4#I5v2p@jIw36{eB$S!Cwm*O-pTV=&Q1AJcLmJ}XU<^V8$b!d@`vrpITJSEw zYJ7;m+9F!@)XN?r>@1XMj8u52m+ z_ds!UOl*yc8_!1qkUfGSnDG0-v`yuLAxgY;h~LE$)f7jFvu!yDjjB#-hrxV_p!(>Y zdhytAY1@zR<0#Qi+XnSRjL7dn^h<|81glOP(4qLSR;M+Losh5?qbEV!uzly+w`iim zU9=q_0B#3ed_57K4F-Z3+^!>ja<|+rp$zh?s(V&-kHLiro!&KQQ{xH|)tyj`0$~2L zz>TPrJ#ju%aO87qD&cqc#A&VI2rZ|RD8oE)Dh@WvnXPd{^7ce}G)Tso=Z14jfZPjx zM8+xNAp1NKHYo@$2J)SXV01OINx_J57Iv0r5+5rFV2jFeqoJM%@d|=`qDjm~9Xt{0 z2|y7Ks(~%~ZV**%mGB{4jp~+CUB`O`{z7#hsqS6Xy{5Y7RrkdEcf5N|TBGZhfgbI% z6abZafvZ^Ebffkep7v&d zKyb`lo3C16FV%hbMycTQH}9+s>(E|=F7HeEta`K?G4xfYw?+WmuSeUF=Y15wnLd=q z)~6lF*DBz10KTnHqew>;P!oVc0l3#&iEBwasiQUqt(D1IE!9vO6=e+ww z+Ks=DqNPHnibbX~`fzxPMIX?^6r>q+k4UBwPXFxg)Vi!Or4mW+=1OrmG@jd=&?dwi2eq1@bKiA!gK@=nd@lF-;hx!6#@rk_lKa-xy&yH@i;wgMxmo=7=tjy5Gf zKjO{9={GdqK&^S*(Nmrjf%5jT^W_n!OBcN>gN6uuAi_@E{tV47aO4b{+P0_rWG-hlc)=YO=OgX^{Xesj68X7U45M%JgxX?>j#|^((0GY_5a%jp zvpB3&B59bhbeu;!6vP6cnsE>e+9v$&lyX8wa9yeqIQuYI}_uJOc~D*!dj zGv+xljGh=tv6TOUx8-Uj-d31~PIaSIH$rtA-{z0og8DzaWo_CH$6G^AYUM(!C(qz1 zHqf_eUG1<~tI|pMEjK!; zqa(?r_6m{o06^E6wj{Mx08G*GfEe1$cs|;rf%gc2+Z?*X6JeEt;F?31c_K^~fFhY9 z<(krbV^wz~+@d*je+&(xSDH}kzcI8Ssi$eDG+me&JFnZyb#H1~Cay}l&T-h=x?14x zwv;Evf;acL$`{5Wr3zt`Z;7SB9!!8>J(LLqWVjJ;5r`O4iud5g}pUHJ`| zJ)w3C5lxIov+7cA?2HC{eU^XQnbwUwaE3s`?tZ1D=nzsgq84k4Ishn5QR^&!+nL7G zi_IzT)P-uP1t0Uf&=}eSAIG}T+O!Tno_3*qq#L}mfzFq%ThAIO%r!S}M)~bTdV+l1 zRB5#Mrj+M(Mel~<<55@oEuD)2li7`Km&k=M1;>hxANm2kK+YZKZF|sa#@t38W&2qG z%)5uWafRWb z&|}K@2~pk3$9Tz}v{vZQqvGa#uI>I&NWX3umgH+Gs`dFdw*5zW_nx$4`}qw$YBNCq zY+Nge z4W0-VXJShK&pD!0d*%_9YzBEohyy^u?RbP==|w9yNjici!K3F|)42p(lz|Xq_S#-m z9Tw`ydmx9JL!=1az7f)jI5?dlh{K<27jiy$)?u@ z$i3NeWt<`*{x4624GMxwhX2+RAwx!Jr%zDVcr!f_MhZX?yB)k&Y4|>>+f{Wtsc!qd z{Q4joYV`L^=S_|Os7`?ZxmV}Bj8jyd6P^e=6a-gwe)dFIrXaL2I_F)BCq}Y@5#mG` z(kMr1k=m+TO}N1zn2IW(jOtR=eUr^=4}os?e07iN?-2ku zmFEsmgjEWHtL)1>5vD5$uCgb4B77(SO4+LmqV9#4N`z}r-8j{a%H}tR(0WFH&jj8C zi!v5leijH&v2Ijw+(+(FPn>NsPEl8H_C#1L0Pf4r`JNaPlq6is&(WR;-36eiqZ0m7 z>Z(=UNYxEj-3F>#6Rvu{*hf6mf$Nwy_80dXMuX|yAZl$kjGiJ=RX*W4Zj-&LLV5KO zkgPZE;&CIej#ykpnK33HV8aM{x6z`?a`U)Pu*m}Cnqc=T8<3+aLlZiZwju?8@Pd)Z zs}ul!Npw9ORS6+ULIsbHM@h6sU`a3^TmrUN!QnqB423lFG>}^BjH1&eIz0fJ;~&!| zvxX`{jqa5nvSVD-oIFxH0dkBWpJJX;Ri?4Mv)J85SVn>j^}Z8 z+tXf(E3VkqD~U*nLQ=>H$w_@B!N{T|`pGl!R7*r8M11V*4SfK^YP2CeR1y2>pU|+@ z*gO%Fe;akraklKWdIll#AD_?~ak0ON{@RBN$>M^(_{wmkK-YWC zwro4HGkeuiqKcC;@*buS{Pt_gIf@HnR7=0{;7{q*kXjYwJQRu97oK7gGppbd`2H`V*e+;^}f(m%-N3He7(!o;w6`EpgnT!R@3;{y-$O{-P zN}8;peDi0txxe%)7BKge1HKD|Kaf zij`VZ)>Z0K9TrpcCrYz!L+`>yuq9gIlhAiO^ z_faK$>Z8>EW@%Nz-&R@yECxW9@JE%F^D0_vb`=0O3BQvkLSqHNCE?fgL?|l&MRe=6 zS)to^n-upsT$dceTc$whTjNdnloX8g>G=3Qh5kT%c5uUF`cb9Nuq%Ok=EX)>k5ZH$ zm`o?qt0k$m?G(C-5FJyhRR{Y9Pd}%l=pU3?2YrF9dopqz-#i_{c3}y$@(kK;P*w>L zpCcEK=XFnryf!IV-HyADeqMzjk<|q#xUYyubE*S4PX*$H&m+Kb{OghE`OyMg^sM(} zU=BtWIWy=Oau-{nGie|>;o$KzY5ywI9T@OPS3M+jTpjR(9M<0vELHbeqcjbHYp-Az zW&v!4s}a|EQm<;!P*NUE&nxwB{^QtPet*(?f!?7#oO*Qe9w6?Lza z;<{ALVXyeTbXvb+8P9+xFL|8|#5nlUBgU4Od~^n_-y!TC0wAEtVwSKVkhXuSo6_HQ z=WA$}n4QQB0wUbUkiTu`9}4~4HQS$G@e>&|ocO=wWDZmrFJABtbLbc3!x#L|IdpAE zHuPs`R;9+9;X#dy?$dl%sMHwuX=WAjWplB<4fu*5nM>P}ZtHlddGzDpErRd4Pkl=P zP^8YqoG+M1`_tCX)n*QSzT8BE$iVM;brWq(bDyd34bS*^6YWF#JQLYfA`#E{4HFit zy_a*}`Lr6@yWHAvKJ6-ntb5{C+C}gbqv|8Ayy?bKfDYz zC~H%zWWUQBEvGZ-q`NAh$6f3G<@Aw6N8eT<`rG{Y3T)>2I{{B`@!DU}FDfq~IAWhI z76TFU#bRLcDSQVXUV`gl^c*q$%Pn8iTyp3p@AD09L6+R)=5Nq8LvC{GH#E1#%|(#< zLj&S7;ovTwd^^wUFs_J-8+tbu@l`9Si4t(HPrmpOGOZ4b=J#uS zv%`KwFr`t~_||WsYzn`|AAC#e)sm17m`Q?ZMt7ZQ(w19`Lq20+dGoQHz17xL{pIbu@)t-69Swv_zF*7C!zjJ0B zh>{G#-K@1Vo}8P>eZHerNx@}a?>pK(Y{O-@h;}r~if}U6hk9nz0fEAZ>p?H@;$* zrQ@h+{N_3uT4&}LKrnliQ6efQ9}6#_XIv*A3%=k@)?*O(UEn1*po<=#=e~ioQpLRU zFf(SJAvauoBys3G;iF)%pyC=OKrdQU1gua4s*Xnh46f)^GY6XVZbGAA_8NMg@7aJ& z@bc%C5ngbP*ZYBfNWVF!4%;uz@s&T&5VA6z@A-i)CoG-!*+>^xXgNih2f|dh&J_N7 zBW$3j$rKq;5w4~$Zu0EC>m}daAycgbf23cN+Bgv{Q<{9Gtvozv*f3M?qAP7)r{to9 z-Z}|H7@{!`!rjx6YqUF2Vwi#xzt~=wnW|(|GL`rHi8l7{pR8u+7je`mNTP8>D*x&y zswdNu`M*EWP2|KRzGw@rNq(AS{dEidkd&P+Nah9@OXHE#d6g{MCFt!mk!U}dRtz2_ zhaSQ91xy7XN^jR-U4<_qH*7zN=nDg*&s0_XvdpxJ=E z9FOYlZPP!;Gno{B$4PrFL~AbxWhdjvoV|ibwk`m6`N(gz9R6k(wS+9q7O~a2&MfO1zRS1Oco;zBx?8Xr;b{|9zOg4e7JZt(aPPibZR)O^H@%8+ZJTV(#osc!MLD zF^#{vMf(IEL@Sc(hW)DaEabYFU-`KsIHh`_7vZIk(r<8<*t+2;oh{LpJ&Co^aoSp< zuRkExktgU>i7xq&@auVW2CayXp(pXNWB?#1=>a-rv&xhDZ06agu;+DS6OTR(*)waC zHR&`RL+PB}#CrA|-64g1x!$dG)8Rqsnz_c^r1eVa{2T#2*7N-raOD0Ojet>5G7zI6+|-v9)vwx418Angn0&MtIg0+Ad&iH&S9^HBH}B;@)~i3h_%~Q+E!}&VMnZXWBt){6CH<4vHtc?MMq6QM}5B9t#BjYDc0g2u2xzclJ%8; zXgzvGOSsoHx{a>W66>GWXfK%hi6PbsH|URe5r**HH|fpN38JW8qY?<;_%EGPS}(l5 zhxCNEzD0-QYBpbai+)Bce5JPF;}yK_Z90UmSfK)@tgx=WO{1g`Eq5zh7(B%qt~Pfy z9O2ymF4O@lBMH~trGrAgSnd{cBs|4xHE_97t9Hxz<-4>Iz0ihOOWSBADdg=^w|IBq zLA*w;uKH)Gl4BW1!0x5Ie?Hc-iLD7=nom#C7p(~Y_#PdHEBE~3J-W?bi)#0}i46+h zB=Om#?zI@OX*-Q78zVwa!lW+;#Ae4Pm-(nh@(hPiO^JHiDGMlEmQoG=lKAg_xV*)_6gy2)FGE z%(`#~zM$bnn8#ZZ{uM&%Ag(wWJ^Ocs8FdsppjzyJdcAHbPmI3vfqC@>9TRdo!>xVy zz*DSWe#=lQvowRxehKk3G?ehaUgE6V>-vP>eM!yq9zIfD(J;-4=0Z}vWuGWmeNsBl zdWBhaZyF!?n${xUrt#F*IO(05W?lZ8PLyEjfcw0~1UYFI-~1NSFz)t0e~XjQS5kS$ zcZiUc%9Gw<+olpGa;I%3p}En(FW8-Hl~;)AT(-q#cIo8o0_2W!O2+XzEgYPua1XKq zmL=tjmk}HRo8U<>#p`vZas9+|v?+Q%{XI2Rs8mytW;Ci>swS`GpyTT;gY+l*zp3c| zRCv&K5m1rAjvb~}*|vw*gqeJc1M_|7nf$1OhSM7%WIMyVH=P?17|?DqCl5JK3>4iQ z)reR>l-N^3uqus8RlVnowP43I>Ir*DZi; zH3A7w^zuVp;bZ%?_8FJ;8_4ZrYx&1+%L_zek*x6bC~4 zjOW?DtSc!wp8J(!HE4JR!kd?4(KHyEwF(spyr)lI7)@e?@~x62-5h7QbK&;q}WiJ^e~UtP{(# z6jCVyqMv8Yt9(NE`-<#njn1P*LHCPP-#Y@LWZwbR*JL!Y=KHgg60PHdNg|NVq~Dh& z*7lWfG=l2AiFIyOmPY7AMy$TUY$!2q9V~LXTda+j0EYdf-iJ&u_dPNTx+mNxj={Kq zZ7#Fd3^_(|E!Z&67%+Rhw3`ES*QktBRgePPEVw&^b@fOQ04s_x zJ5f2V-L_O@KV@rNyGh-rRIv{Mxgdd)by)-r#D~xp(&vyyYt>^hV+V=1IwPq}uAJY621ViTu#Po+ zV(rMJ=X`7<)+=~x39xBl$rMl8vxzfI2h;An4L>EA<+2il|I>(_CYzsGw}r7FiJ0D7 zPc~*Pq&k(mDS63v#Bs1s8H*yV3;2)C*cy7;K)4~C^`qnQ@k2OkL3|$ZE8%Pq{kIEd zm*xmb#fKbH^`Z4>bJkx9c>zHaJ+8FLO?Zm6$;AYvj5{HR4r$3ckeK^?O-ojZdbI=B zZOMX2ww+&S$wKL_w!}&!7!FP_2&WZWvHE1)Js#DHHKJS4L7%i@@374>>oD|ndAo=g zUD}E8wAO5k^o)nMVHHW`eBP-ItLOAyu~}!gVLhZkJ!E#b5t$qYvpI2u--`stuZ)jU zZCNX__73mRmUU~iFt#`{&dE&@ASi^COMF4fA(f<9!hdgzrpv$0U$kZaR%i>+9ve{2 z)U{Y6$e;JyvC(u?3&Q(FVbIpR#ivAJt-0|gzZu0c=x;HoQ#6_uk~{x9nk@?1*TJnJ ze})GQ+1%CH>pO^s^ecUO{+`Sr4l+#-@|h16BVS( za73ITcK#-YEu`is!WU?9ShC?YzC+8_*UxDu=k8<$V!vvG06DdCV!vt?M#1cktckG+ zPXEN2XPn7zfvE(=ly6LT13JF{az9BItE5^a3^o*iwEb<|m1?qOj4D^(ifuhyJ=ke$ zJY1aD$E#9TP(kr{o-Ap^`@tS{h@eZ}G?ulmYPX>f(4h3qm#Y?V4Ss{AG4sdN7|Zk$ zv0Sm9jAQ+z3Qg|_jQ)7npg-uif57lNyj>^ODhS{>%?JC0^ksvjXPX?X!@C+HP3;|S z>BK^$JN#!j@e41B1cu-dj{d&i-A19B98yle)@@B(Ct#DsIx=9m2o6om!nZElJ^`Dd zQe{-x64Adh;Q{e1z8Vk^SoirY*^R9XPnRGO^)3coJcc(E%Uk2wWt`+C+@fcbf`*=# zuo6wyY>gd{iMKlLhu|R*Auhea8X+iwRV5A2^EL@=Sy((459l)Ur15qZUKoy6oaSen zc@EJhjmO}GkOtvL#H@~(uM$`t5_^u<=*()-(-``3o!O{>(O5#k&U+}5femCljgx2l z?kvyl%$Cu=nu9#Lu&|&jXXFAw*?X{ffu;asO&3lFV! zk=1P8T?x{gC&f8~Os6Cv`RHu+?wHc5;2%M-P9oMmHIZatB5O(?VZ9gHm3=|KXiBW> zyRy0x?a_qrW8GNiz;}&BJ9L7D{K?FjXha@w+?@r{BaMmG(48HJ;-eAa!97?N|2tSM z6q5^%A*6E;)|sZ_gZE&K8~0ODWJA2z3k`J&1RXr%)eW$35fro``i7L?Mnt-k64IND=Gw1IcUutfFVmyRv^}g1K9(KuC~!MZik_WXC6{Be`E*smYP@ zkY&cO27#lu<8-5Cx4fRMhI`3Kz9l8xJO-2U!)<)i81`YQv|rKgHBx!l5L(6f!cQ(> z(G2sC0Jt5OI_HV7TR{kM4%y#45mqV)uH#ZmJrSk}fZK7YWr{0mbTe$FacIqq^q-5W*^;JnD5u0L*_5bsO@BJ#n%W9Op~d zV!6HE6K6pgaD#~;ixkh0fpYAkvxB`n5!xvTa%Du?Ej$sbDhRGwuYxDSD<4q_`8={w zR(L%Y0Qb>)0f1uNcj70d*K$?&FV(fG?pD?PL3LNFE?3<}sykP8jjBtg{KS8l#Iopa zEcXW_vzq>EOM8@M9zqr+vqn9RZvs=r$QiKtEuPB2?PBE>oy#yF2vv=3D}vQGi`}n_ zc_!x%fO3eX!e(AJg$<=y&^XBad=Wn8rLZMLw}}T&W{b)C-}o<+8MN0W3Ew=0{S$U?#zOx*i`?6mog2^@q*HEDzpf`8?C3OvL~cnU*b`z_5zT$4`-R2*Y5lUk3;Rk z)(L_xI$X`OYtjH?DbEBRN=U#>w7Dbv?p=6HL6E6i43h(%2(akn&XCrBuk`RL)m;X+ z=pfqC>FjjKZ%`>952f~N;3-ynUP7t;WT+R!1vVP+y~ID5NV_UG*xulgELY?^@Dz)D z)xothu|nVFkmNIabntf)9~Dg-^Q@U{PRO12Zjn#IQ!MhK_i|+N!+So?$ihhMTE5E2 z7KS{2=N9VekWr2dtvwO*LQqGDl|(S*YIys*wl}2IbGMdy^30=s^Peg0d*~VOYGTo(C+8LuTNU!;save8 z@D%HnGf$OR+n(~_^I2;Wx16t>&l-|GPx+zwtR`vnl-uXCk3$YWaZ6=8JjGJk{6tA* z{u92y%o_MNSSFRwrp+8kHM8%53FCmpvbFrMnav{Q)^NiDD8QCMA+>;24@r3}r<+_J zb5(#?FAWp`NPP0ifNqa@?gBO@B)`Bd_cQPm%l$}!lKZ9tKE?uNopuRdjpqnMYPrYq z^^C>TSpPoaEf%r{m1i%O%be^gvo2H9*X!Q5Jb59TLk6$nZx=%By!DW`UBrSz4m|WI z_fG=gEcfb%e99s=Dx|%FrO;vncu?*l+s+{mMY;XGVB6X8fLF>y(U)iP&Y8^6ZVnVS zf)4A81uOOpK7-%QxcDd~*eNNe;4B6Z?YNk#d%#a-vUnpFEX6sE9hw`=i5uO7wCe)o z&W&;voK!cQU7k4K%Q!_d-#4BJvjxEY)chBo7{in#+K7o>Funes2r&vmh!dfWCqfMY zC=$~uFI2dqpXz!q3{e0jRKQD%;xABLn}xSp%-U5PyAVWc9vQl49;z(XGmGs!eKGsG zbla~4hY0xLD_(yIn?ZK2;2V~(R*ht+Z&f%rg=ZfICh;EM`NGhMHtoh+_{%9MFIMnU zOIfnCf=^!x)#fVBcQ0kH$V?mGxs3f7^5MozPoK+&z@A9vg zvnC{PKL2|;`;Dx+0~2MeH)(%|U*J%J4x7iN6>xXV;|*6Z6KOP$|F!~ZHfbKewt}^( z=mqUhvHrb(i#Pm=RVPPp@y=giaa=fukNJxAC;Kw2xnHp^Qi#vLZsmG@(}T|L-&E-A z$W7km8?2~?XYd){u<0SSf#{kv%6Z1}Qe)k^!JDsSP05UOK71t`5cJI=(Ztvo?B}~e zd^WI%i)&)Zn~`q4xRPa%daoA<6ucqO&+CQwY@l1C30)=7k~D2=?!&RDegT(eS<_du zD5*}bt0;vq@~&HB8k8mKUEQ4W6ZBBcaZGSy0&cU-H1b<(*l<$CXiZql<`QDKq*SQU zC2s$owGI7!Iy&=-IHYKvvBo+0ZeH|g#lshQ;yM;mz1lQ6L)#D2#NZOz#7x^aLga)t z(eVX0uVZ~l^Nak}I_wklna0bm2P>aFjSpVWbQM3p;F0Li3w+0V*3$Ux=a^pPs~>LS zQLraA13(dv$QKYqRQ#fiqx(?e73=xa04Nboe*RXuTH==eZWnq*^%bafF8uF4=hHW^ zaA_|8c>{L-I%jadAJ|AKgHQf}eb(Smy6B3#Jlo2n0~<t<8U8HdY!#Kthza>`#ap?SBNdq zyZ1=24mC)5PF_BXiMQZwm?;cc=Z9Zry^V=^22iCq(8>e2zXozExo2;l}*-T`gg| z(j0q@oK32qKsa(S0A2jFv)L7Lw%2@6U>(BXx@&dvf_o~JkudZj^31rx0vNjGfj90 z)Ql{Uzd?C<8gX`tlp`-_(%%T%nV5SjnWN@tO|LtqMSbZ=xoP)zwvZ`TYl>6BM@_p$ zMtT#X%N6i8n8*9UV)~jy%~m|Nn7ATAIv#!)CeIVnUa^V8VPGF`U5`f;fcVrLHpyr( z_0H7Qd?!lX(abic;l5n@F=#}U=h0L?;AuUncxmoTXn8eWW&=5yDVIH!L)Yd;7RI%oKD6+9WON zcSnj{t@0r=EU}^fGcuEtkP5mm++dy{w}3&j71yLw&;o_p-C~U4Oqpw#xhiCI)u`1V zQ6o*dXq`mqeqznHYMZRV>l@Bm9kNp-BLYN0JDOUqL9WF*IKPAF5a+NcgwbL&0a_Ma z-W#I<^Z*MUCic5L0vreNPUJtD^lwo-(+jy~AV-0NF{IXPXYvrWW_ojfjPgOEAFhd- z>7}Qxnq|VWz38I^&DQs#kHiDwBL^xqn)W}`s7*?)dzG^O%PMt20^)sd_uETc6D8H; z-S@LnWc_B|e?KIZcLVsW{j5^8p5Ru(xRKZnZJ^7;zi_jJ49266vF1iJ&vk@@P%}bA zYvCBR8P|0%uII9@2V1H|3`=0TGc1uqF@_}&Y;VON1H)R=Utw5b1Bz=~garYk zJHx_uULuHBcSvv^yl`rIj#pZpJWJtM)&YVGy;S(sONC##7+?b4ITZ}+pv&>;vwTp~Dh_?=7Y;wZY=l>+ai^^XvH)8$V65OJ?n9dNgWv-4 zt0mYzE0Jh=n&3E+VCjhN*QGiWgE2hQAQ0ooH3rj+c?Q$ijRw=8OnXEzhL4TWHCi)E z$8cK#+vgia>aivU>7ahO4_8_^U)@;Zqp*06CmZ_r4Ob75jM5@7bq*%EU%&qZA zEJo|Q1ao{rg1PTYy_5@Yp>xFxG80z$*!z-97#C^t&UkvEkQa89;0`_Q1773 z#F|%-^gJbBBMyKiW~ax`MA%g3{XoVk&6R&8Yk!$j+ zBV62m?Br}{`9?_iVS6>L3C|GB$ipExtQBVDX-zGcqA2>vBgw_(GX1T@ex$@sxu!MYMd_m4?57kG{Mb!j?l!eA z+1kg8uRFvR({+6$9(fptRyOdVhjAt`8vZqh+4aE?JlUjrF4R9p879b*iurFO3T_8ufufMo&NB)sC^k8f(Sy#<&&F^_nuoc{_RC z^pAM6cI^ieZ+4tbrlI)w@iZ?XC+?Hl9dcZJ|IfG>5WU*W}TnHQ)E68Uj;2Ic9+065_bwR#^A(b zB+9+mg5SEDodRWi+GYq#hoW9LX`TJuF)w;2`rl));UCr-cL|!IkmG;zov`gyB;)m z3Q?g7Kf(jbdE#|H2u}Ln#kDc<2f-vy|Kf&t5cnisq`pVxnNU(5ZFUwAYgsAVm=Jkh zW=adcmhk*=Sw(#Mqqp)GfKa_9C_$f_3o3Qs1?)FUw}L_F&9k#nEFnkfP4mU4!Bl52 z4sFW(5ba_!bw(}ldOV#}Ube{@>NY4LO@(Je=rEd64uLD-S)-&(ovED8)Q9PCP{Cl< zWou3TsajKVD$|;#r$Xk+rf6Pt-Pk-qPwf(SCjX?jL?vj=y>^36l6NzmIcT}g%y#G^ z_a$G^ny2r^d554q+Q`ev$F-3ck`L=5FHEY2uStPA!LTmrOc(6NdTv_wxX87F6vB|?4@Fz_OVEdjmX<3~j+JR|94XbIv}BHyN^ra(LX~wm+80yv$3-4V z`BN9!ho$_ci|pi`vK5gu8Kuzl`8O~=GNFW%A~f+VGBl z>)`s+jFSh;`Hj=83w_v0;!V%6h>(w$V`+qGFk>g0NFMs8TvfP#ZTqT|WKBQA21&HO zPU5%DvMqEpTc-DEQr43>w{_H&a zi0m}-=mAG_?Z7my=DKDqwxt||B$J$h=d`n4fS9>KjeFt9hGTTV1FXCC3 zaVjFbgJivbnbnraZVNAemBm)rc|(aYFiMGGi{eRF*&=d&fnZv7c(s4n1QN4=FZ_pn zSUDU>kmkXSUMQqz?ww@|iju6-HMWJ3>T`M4zbw8&z-1-P-(kLAtkQI?c>_{&P1!6yv2@@CK-IqZMK=rN*B4C$+I+m=?<$+gIh{F z?y?h%yqn2S+F4wM7pIggzGaEq@FoI&O>g$PI79T1*uOJn z$QIj$V(lN>oW_#X_W{m{lZVsz^@nUhg*7LXB;y(?N#-@=Gas=)ze3@Mr6VC(nY}uH z!Ph-vN64Tr_=Ex$Px~~K_@4#XJ-Pomzgd7H5BZ#rd(4_ueH;osMVf<7s;SS-*mw<( zmT?9M}WdrE|0 zZJQM$X1Fao0m#P*HT2$1ecH{pLi6*Lj1TS5%P@(TdW|aqEAcV>HH!;9fY!sV(s9|T zdtP=LUx$Ovim<`OlpS4wj8D8~J*ypWBm(>b1}kpx0OSdO-FiTXe#5#`T0^pCzG0gr zdL|g4cPyUh$MQMvpe^b&hHrew?ipJKVOPM%?rksWZhs*4AIwxkvXy?J)kMGS%Q&T& zEqPW|?qOSMwYLtZ9WG_UnstAkT+@sTGEG_((pcXn>AjS zK0$J3WPk-i-)w%7do?uTnO0cvalpw^92kTUzD&hQRUFxRe{M!IBq+LAe&a}Ccm%6l zDMb(M`-=K$s z&OG;&d(HFKgv!?l5f`uE9ufC=La%5-&*FBWrtbql?NE=R5JT?c3|bCco2G9ej+Qno zcxuEL>eE29RKGhoPlo^gx1VY%+}8}WYx*~~fxa|-FKhbU(=^x;gT~iX9Gk5P#pTt3 zdE&I{{kn3@lbQz0x+4@fgnA#+T4LU7n*5tWrjYR(ylUd7S4qSa8tG^XO<8Fj7C{S;Mf~ph(!F5j~Hp#-f1DMrDQ?>rB~+ z5=1f?pm*dNq?`J7vgJ=r`ZGimq^1i$tWA3-Kx(P(W7KFRMlV*ppmyZKZ zkdIEY^d@=xNpD^y#<UH3fqJ!zN?Mh@DO84@Bc3f}&TEXWrKVI0db%Y|%TA9MZunm(JGHELe?!YL@Ti z87#)`j)b(=-kLNlQSb!HxwJba6D+;zNLZGi0o&fFm;T1;BeR=@)k(CBsYB4uSj`;! z1K3be{A;h9sW&ehDoX0WW8@aOno?pWP!gqo^^tou={Qu4-V@qY8BbQFq{*i!(Y3Qh z{~Jtp^n{Rxl|{0LwnYq2jW+d-^oMA?DyQPSFLj*fuStMHAo5Vk4XuJ+bhxIYW`}>7 z)Yp>sPl2zia#`zr8pF1X8sWO&t}ulJJv1oDxGy2HFvX%R+$%x7kcvk-Q5S=B5%oW+ zr->V}I{;0!{O3~tApJ;@{_jfqhqc}(*Qecm znP4%Nk=Sa?F(f$|1R+3*CTBL|9qp*MSA4|T2$_2%D{CWU%WZc;R7f^-=A z1x@-LAnQ$XxWRNd(PaNqM7LLUr)#}qA6nla-Oyv{^lNw_dN^d_fT9)x>mO%mQ6LGWxyh@CHdo?Ual-0Fk zuZSBb<;IC2D3(bwSM(NKaT50Hw5C_$vysNAMut&?(M zQ;kt&N@y~=Ap|LvK?&rP^4kL->&+W$1YhsH(=1aAwnfakje1LWu!Chn(*~s_uBa?i zlrl1_Fj%x0d^!5G8`r@oVg!!ZiLeNQWcOFsnJt6`;>={C6-Oy|VAx#`o(fxEntQ zwW-s~I7+0H4nL)8Jhb!t%c!{a0MV!O3>8r+h;OeY&BB?Y&ow&$N`2)>`By7CH026p z_Y2{tL`;PBDkG&DUptaxT?qn`VDX1_l)Xfj!9+^wV^L&RF}#&xB>(A_#%o8)exzTf zM9S{)Q}*9ogV12<;|M>6n!b1pO?}#HqOk~;Vd*GEzSLND;eBphhOtnya2vj~k?%E@ zP55v&%(wVP&t}W5-g_sWH8lOU1|FU1xx#}F7)&-a@P5Ii4Hkb%W+Mq{FTE$WK&vQ& zqbz|4k=of3!682#EUwhIds_4S=dUnizs$ud>}IB7|nv3__lO(xQZKRdMvY2NsK{J z8QF(H3@+#m)&>5LGQ&z-@12vIL-tb29VIkIsa-8CF&JcxV}g`zh|JZbt&)qKlMs1a zllG;1sgKH~zNl|EC{vU18lL>gW#j?Cnw$0(p3?gGw=nJf3-A(}xbx_{=BCrl_IV#M z7%g2T(?wTh#RTpwg}HYso_F;#9kGWMu}*EXmvP?vOn*1q>wP+Qp20^_gdv&qH0d)D zJyx?L%E$DwFfaUYN1wQI4z0}LlBw48GJYQOL2#UpB+As$$G=>%ajPlEz8OsrqDi}i z(m{U1V&xmmnHX}@gTbg?Y76spJ`9TJmvTxF#jmG{ z(`SjD2DKfbgNM4WjlG2%nd+JyjPri11NWBW8sq2n@|7!r6bzASJ))5aB)K?WaNXRP z!t=UtlosTt+&xXE$U1&rvahJ?bYDqSwxbU#le`Xlm-f|iW6Bk}<*Lw7@vymB<|!Dj zsd@=I=trl*3zLkRN7w<8`IM7)Kh=yI5nh1bu<#_UCi#Z=$rp1~a&v5cX~s=&UOp*K zGwvXMl5_BLc|T^JyO?=yK+%00fNKYnG}rDT+M@!@Mdy&yTe#Pr>NLhUISJ#4=HanDQmUE+uKkpMHps)A+d5TY-#&XW}V81v(BW6Ha?8Au}%~icN*PsGjLazD0~l zv$7j6T3mVs<1Oe%tbRasf&+WZ1y4JohNTOH1B?G|b&N$FeWj;xru+Wy>!|4?S5edF z+S7Q{P)@)&!nZs|W{4s3M9P<%KL36FjQ>pqA<1YmR^o~|c7pPody5+WCZ-T@<;t4$ zi!imI*?~U%3<`Q#jaXblLe*vll@T?&h}z5?;Ul4o?xTzH(M5Lj4!$1=LF0@uDOPiC zj7&z}LYza_{jWLz#Ss&i>4-iO2QM=cP#|{+DE)GBOdM=4Dicns(7P$3f-;X{#ECf! z8)L?u2D8jpQ_5gkk~*2fmS74LQ=7fEM-)tbu4v9!;Ix9NiFwcG6ui5)P z3{An_1$VdNTjlO46%tJ+1$`z6v8XY)jM3f_!Wat_3@O&fzhV)Sgp3`iFv&zqXO&0F z(O$^oUE$Q=k(he~kF4d+89UB1lq=2|_aYK9iYljY##o;?ADJ_P|I4fqvR^rb$CZ;= zBTC|v?Ba}*d=#!&AS(4AOax&VOdz!kh16VPx;vS=p6%@$;dv2Id<9*`Fy9*kirV3a# zBd*SLL|b?oTQ$H53QS%bXF6tB<3(dS!fzT zS+42XZT9jcD<6fdeE#>77sj943@yk?PQy6DM<%O8s6hXJ$m*gY@;s>Oc)nOrfNcws ziYd&+)P)DXK~kvLXJCZ83yko}vsIunTM06%@IRB0+#w*N^Z)C~3I&j<=(s*|1|}<5 z33tS#7bdsFGR_UZHq)P@%f#0P~2DLz&42^H^EHJ$lD1C8lvaMO= z5@M%8Rw<)?LK|sLLE;ZI=|-fDplAyfit@oP!9rL{l@|vwDq~V26Vl!pnIYe7Gi+F1GgM|)kcg!5GYwSS z4{#ISum2TsCO^jy^xwAT-VphKelt0hAA7kH9KAF|28}+`4Aw8+;{Sl`|3wIIN}dz` z4{PrNA60cVd}qQOm|);cLP8Lu1Pg7j$P0*-K&%;7qz3{kH<$0M~QuH*d=%su-xmRVjiM=qxwJj)ljLFAw8+8U_9IsXl+RD@(jJ;8x@>;MDlumgq7Fx{?@!Ez7NbE z$!g+v0%DA`Knz*V*r|-_pSx1kI`?rtK!=o9*) z&aF?~NMAI_K~!b~Z(GUWu$~F9dOhX}nBm(9KL#}Cu2b2k6>jqAMa{gQ;;&Mldc>no z-A|g0fKl%U4WVqPoy~gTSHSMpt5@6f{B<;O15KlO znV<38sTc0Xb&Fo`F#&t@qCN6mK*R6)9zeZ-+Dl4fMeH`GhLY}5<3s27gylAc#HSWhx!0^>ZwoPR#OSEX}fjpn(*N1$l_NmOTf}IeGk9nKAA?!u*?ZJl9 zeJyOc@H^B<=v58;6z*VHe8)?m@Y+R*ltj8G_A>GcIHXPHn6z->Aa62llhrG z75VtXhbKs%rSP+@J8kcI_&EF7tFy_#t>5_t*)EfY0KY@e-!4Wg^RQ2$8O{j@kz5pP z=j`^0uk_4s`I!1GWhSpx_@D5dle7%4qI#;u>05q{TOYDUpZAEQhI~BS!~rh7vsn^u zCZu;Yg;cVlVC__Rnt-B{{IGT~Z;lXkLC@z9_MAS?W|n{bJInxq_*`K7kWKF|xDC1L(1vm?@+Bf8`|D z#B9MD569RH{3go23#zh?rgwMZGMVvMTCjky!>*+(fsEdp_72_xu`3rceD?pUUoRRDYLO0hG>f z1t_gG0l;h$6-k;v^A+&Esb!Sc@i131qskMxBCo>7!U9b1zEy*h? ze==Las2qt~7!A;add)g2_)w3J9YPaQr^}gXo!Qp^jfLrdQ zJE(NheH)u7x+LxH35poLR!*Qo z;cN9$8*gc~NfN6diDO$)DE-@+90tIOV6Dd-4n>#*o2hf^cijXLmtT!>nY5w}#bNJv zAYq?TS9Lh0bidFvrQUJXVH&wr2-21NY~;bzENG^J_aXM&y}z}!2lQSUtzGbe+BGAe zDhwbc=ad-Xyv#3AM({;$wXrb?hsxn}vFFl*F90I|eCwHua(FPE<(MdgV2HFpi|;<@M>RmsB6Nen<9yqnulk?UWqIrH)3c0 ztCM+=4j876P*~}_ad1Q{7OkYcfNsr=B%+IAZWnBgM2L8SK%1GP>_Q~RfR*JDzRfIU z-;^712}bI91p|V3)c%nyb4Qd~3_(qrb!a8ojkd)00&g5czE^@I&0!mMB2+1j;iMC^ zWzYr=uUKzg;A2c=#5@US|0#6PjL3`RcZWAxRO!MUnJeMQuoIkjwjsowP~(o+f8k1~ z_lI4jr&<`x{<*$LYHYSm4hvG8E{@CmKjD{yJlqW^MF=|pb=Y6&p(BK_S-G0c4u|c2 zgfNq+W+0_|=^2$(f26T!yG&U*KAiH3+t$cIUe*4tR4mONr_WzT>gyF;rrW44+aK@G zkPR7WR*ng$ykM(uLHl)YSJw%5H+zmAdJJ$x)lzyMrTec1jlwD->U5adAl;SZfhE$n zWbsO;EHd=at%8;ll@675Cz$<@v_G8GsfW_cq)wGoHjMw7RECL^8t7E41NMmsip@}I zWz76|+D=LBdgza4(j1jk2GoBhm0{PZu>nCC{WU|7ZcNbn_n z4A3%w^a}S}bX-IR@W66c*u4a(w?7ri#!Wy+(d+emp#@25cg{T#q$A>;y*j-wQxyOacS_4-4=EO>1GwWOFox8-1@miJ{K+J6FMVUIX0d;r#YnRzHaJKl;&WkCrjw| zwzB(wmF{N!Jq!m&vj?b}<@Xz)IGv+D3H5awtU`VL2AkXc1C)fKB2h)%oGPlQAB=_| zCCxcwJlXSvnJ(BZFmt+%P%v})jevu^Hg+Ce3cc_f{tl6(_g2`{KqLI0U<&x&pMey@ zzSRo|WlLHpye;n43peQn!g`Zox|LzN6TmZi0lUA=h$i&Hvw8utz07Y2X6MzS7o67% zw@8|zZrN5vvz_e3h_BNN*zH}=3t+DUdh!MeT2GaggohN#Qt}zLBJ25+Vv~0hfC^qg zNIF2zd`l3o7d8`JN$6U=aKBz~FFjbu!haBU_zw`NfG!=FZj$1%CLfB^j=$FHl!q42vw*#*kr}C zpB15kY?FBax=YXBqZfQC$Zl;1uNSpLg1oms2|1`5 zVg*V=WJlMbAz$bPUzi~s+Cic(NW0OD$d(3ls{8>xP_UnV&yddu2&g_} zgT+r-9G4!gG;J+zilmg}8C&uqDKGe-tm7f6V`g~d05blRa0{ph*=jwuO4yNdpKX_@ zvY@2c5A0Ao~I?qx9Jh zpre=XL_qP2>jPZWOM6>*2e=tA0t zQWH0R!727Ys;-!Kdjd@F*NU5$WUi_&y1Ej+N8zuXYsTv$c-q7Sf|lLl)3jjGr2tFO}U;o4v*AX8HWQ>6XK1TcTBcY#9Nzah|QFonu}( zyNLS)O~zB4t$OC;KTHp1bXAH4^p6t@WX5sc;z(kgk+%Vni1VqftaAk|?#Q(B-g{1= zIXAf_*1yB-XM={4Q(1Kv@90VMiPXy);Mhd_0sCS8e1UR2BTOpsgx%$whfG?G9YQsK zbr{;CB#~DsgssSM$ir9akl~(R>Nv*3UWzzguQ|qkv}lX)CnF5`O(_MmsK%q$obV`4 z;yCMQ<}R0Bv&+L7#8P1pK4JYXqTZQ@j*o>snqF!LdZ%8qd%C2ZZrF(>k&=V&NoNJ% zV-rhk>Lxw2Su*(M_j)087HQ}nwes%qsb%6beIn)vg$Mbogwm|xi6E*#Oi_;O6A`5K z-hycah7@=0Bx(x6s)F6%fAAJ+d#I6JjZ#z8eGTEf4Ow-19#^^5=ruLT6u+GYY@d$M zLbxR1CRlV?gp2kQw}u5^4U!P*+?zbjG9{dVLMowzR}-7`A?v6JRuest2565n5Qv`| zSc^U&es~vGxltQ*M{bNqbF@|jnOJX#Aam+rB!x)f|GUz~(T^vi%H>$EhXyICLib32 z*jW@ZkjL~<2yYbZA_$+fl%AR3&<9OgD%t5*iEPxVwKT=Wg&LKjnSM*P5%7qp6)7W? z-!4`jw2gq?dz5nO5=f6;Qz=Z*1=0)?NkW(s$iLkx;|N}9($Ugj)2L{rfXiWtd3XaNsv z9#sdgVwPFWVA2RMtzkPZn?34()%q3@l@``YIhY z4%}Hs{PUFv*`r^zT@u$z;zoJf!cRd1Ble_x9ph*4CJx#gPP?=Ax%9Cc+-&Fb?%Bzt z`CKpDt{3c3pcJJ*F97{uuSXxd zChwlgTOxz|JzT`jqS5FrfX!n5#Q)Md&_?>)OY{x7=B=CQ?Cg{uyvB(SCV(k9!Q zv5~~dvMfWk3{xq>wPhbBx>wlQ^>=qCtR7>eUvX><6Z#4V;@SO5RJL!7-fQ|54k{^Y zI1J4gy});clSh*I06K-30*N6gC7hReqROrZ*Dw-uZE_e_xI#Lc39v{8fxs#(ZWT;7 zy77c<9AnR}X9}}ah$z;1TOYk3u!Wae74NG_rXd#gkue45B!KOWn>AfP7FS!Yy^?sDW?dz#`PBl=<~r>MWb3mMW>n zPQ;UNW`+CsfKkhgNgxMh1@NMU%BF+&DN9*TV}tYVX>_4?f6s2|kUZNiQ6tme-holf z%Dj8lkF9Yh*=(+sN_SS3KPcB%GJ#J?b{uih^WdjWFtI^K&}JDy>s<|}J(IHbJ&LyF zzE&6+9pJbXroq*4#*?*QKxE1ko~1fxN*O(lJX`gqo509IpJ=fd21y*v}jrgp`sN<{@Fz0z#(p;xd znrqbNg&lc@?_I2kDsmh%Jcj$-WIS8W{*^5*XMXnZnqX=@9b!Yby0^Eb);~!9VB&XZ zx4ocOJb7UTcH!@`$UJ!h2R`rWA3XVePOzo;Z|Jk1h`lZh%e8MZKw^RPc0P&eFFT@^ zN>M!y-ikaF`Iv8s>JP3nf^%qP8LglhTn8G$9s)pOD7JdjWt-iX#42#A}=l-Lf; zpAl;GKLlr#`C5P-D#~xSZmzu|M(p7n|o5yj^Rry61kK+rE zW1HI%(?8f!@}U~GjP~pQeq%snnYAo0f_sK}`T}-LyZyh8*cY`TIQxh4e$D$;>;s_HQ{95qacx*- zTUq>0^V)Mzjfl1)SL|rLfk^6`Q`IPHJC;C=yVIbWQI`EMBknO<@%K3wHs#D8fjP-0 zZ`mf>zmfgpu8{aAh!047$-3{M482Wji^@!|Is1y=gc^mgfo{7V@>`=C_`yD1mhc8A>hp$BQYmr}bCJse^PBMUiS45{Z z+EW%S)Ors*Er&(n6{;d-hb~B=jZ8WLY(L9e^l$B!E_q4YqDeNbSCYWm{8!U5feI&b zYo<->6UZ&w7N`GhGs6S)+22y=`zO?1{@sw9wXMyDa@;Aw3tLdB496vc66MAOOi4&Y zMHs(ZD@c-aN9BaBNwM>tN3M9V6UR<#9{v92=!Z7kG+msT@q3jEn>5P<#j&Pq@NI?- zv9yAgFOoK31x0mpTQ(@CC>*g67Rv-*@?wlwU?jeX=P4E)6Wqw2E1uv+ha?ZbJ3M0U z{o5BcH{9v&AJ`wxezAb0$|u+h&x|M^ZU3y@GLouQuf(Ci+RdmU!7kNbnhNTBv;M ziI=)){Q}%v^8zB2&?9-qg}lg9>{3Ef0Y;NrvE(i} zV?{Y&O@lCu$-_Hd0CY(cjQX;@jO#P@*>)E9G2Q^q7UXbGjmA!tC_G|;tHoXs_Ajto zPlxqPlqXcjE=Kk{#cd_GPOH8{kH@6QwC>x(K;e#L2J_KO>jN zspsFKfaV;>?T7*jZc}qSyv(f9ms0ots7pXXr_ijZY2AZY$dK@%(N}8;6kcEkG>;n#L>-NwIQ~p(F*(0uj<0=noJj zqWm6ugMnUl27CLZytr!YTnYP5t0Go-#7o|+BdmlQi6bjBEm>`{CJ2#1QFmc#O69`Y z&j=}d3fm(86I58>S$)be&291j+LcxBzuRi9heg0ucDlts(UsNU_feaQv7=KK6pz7y z+P|}o`A3Z%J>r?-5mKLcj<8kJoBJ?&%PzF|{}=W3Uq#LQ1J%UH%C0EBOo29wqa}IM zEOa#=BtRfBimdl{mnd7aaNP>1xrR4csWXZv=7o0a!I#-q(6ur)p#fZzOv@r81AMZ| zatzvqMSED~35974N4f7$00caoSn4`~eXkxGNMN%#_>+yvH8~|UUGxtkLjlRrKd1>d z>KC#$EIJ?v=<;z(A4*9f?cQUl{gOHwp zYdgXyi4A}r2dR}HRJCOc)n%|qBtFkD#aJP|W}F%uMlRg4PTYmX4O-_H{~tnSv9(9) z-5Bf56*wqEs9Blgs9}$eVY>g#@!|9aH}1nOMYGE)AZ%ak&e~~#`hN*O;R#QV#2KsA zk+f^j8vk}H?*P6+s>X&BpW)a>BnzJK;F_^niEsN~V&1_^6n_(YbGfapwBi?)Z99q8 z>Y)bC9Hjwn4IF(^7kgW@?#Qs7S~oq!xBP(mAwG$g;f9Gs`@ z>fQ;|s{18vpb93j6HKC+U5^eh0W#{@38<$Dq${8_THV}-A0a92$O(R-NGB#dCa^+L z=yL)Uj6zNuOcxVIp{N~3At(5S9E&lux@#to!cjYrLQY#o-AovTqIMXCoHm#QxyQUS zirPUHa@s&Ik?aB~yA+PvffRPyfO?o^DipQD2y*;grQSO6VlwPU2hoq(gBTV+-KY@S z&l)jKl|`dDsxBo^aMWmys(wfr7Z;Y+N@2lG zugb0i5pIs`%Cm$Q)5pQbX?NnDPdUNIhcVIx9PQyFll=xMF50qtWwRE2v6t3Auu51& zxb;4gr?Csp!rXEx@k!IFLK!nphki$FUg)46{5_*3x9l7%pF_CY-ALjwZgZVjWAmd; zgWoztW$RJbf2_L^T#_SMqh(;gIH}DsXZYOdmT1bLmGCBdO^TM9^*CffYL3sS|E%gl zwXbByk9@0^dgwvCS&6G`jO?SOB#+;f9bKHFrDw=lc89%^cwn*}!zY@_E&nqvx-muT z-}9zUK+z*9nkz{UJ_#OiT*es<=CMm^qrXhW8=;&sB8HPvh1nd2S-E1@q(wCG2-l61`z3gdVSvv!dunij3I+O?L#$R~g= zu#Z?=@$?0}FtHZ?_l0FiA13{IRbG;N^|M5E@1s~NmhMt`Lm?3t-I{!gPQ@;fh&Hjv0f zfp`ptf}l#F*iyZ$Np1gDh+rq2I4_((&mQ*A6K|5aC~n=#j^r`UB!))2_R;DpcJ$E< zTX%(6oZAH-i2he!?cVrq=c5gMwcdeVlm^13U*n4VH|K!r`L!H(yuDS`!d}`MsRswh zbd8LI8mLXB5Pebmz_!MjI&w9beg|}$_A42jVSY;ZAe=!$Srd=jIC;;(LTM*fP`dNs zCb52Uo$~0>2QJf=1%A$OH@0&LIX<9=vi-eGzLDKLHS~o2Iy>QdP}KI(=4h4!-qr!4 z2Pd0@BGTi@EvmYyJ&+e*-q3v$kI4raz=9%Qc$pBUSbD2oyP&eHCb1Qry~~{B!~7Cp zkT@4fN%OT`qJK}01~*ov!_~2ZzbN zg?6PBlDM$qs>`(jHjU_63!}GPp*>+c8{Ke)_7szFk&I~~61#KUx_-Q#l-OO0@O97N zd-Hg`7jG)x?wN8RyNUNCU-wKDToRKdg@+Wp6jpK+dzho+CaGC>)IZmb)suLk9`0oM zEnTVQ_Gj@MpcjVFYu96GqA9uRsySvByzVPT@qRtG4SUCY$ z0bH;>p2T=QCC$%Dd{qz0&R-Ish=0aj+^ggaHTV@_eDXG#H`Lkqh)4Z|L-xbG>A^l! z(KCO$H^r80?^wa2YVm+d$1@5fvkK<=z#p{5D-Sy~7 zh3a|zHxMnjbI9nl@KBz}OvZ#ql#7H+gl5R%5hrl{LclmSKI~r<=N@##zjHjBdhy|T zgJ;<8*KteumdFtO!rh4|0}1^R^4RIgN~|b;6M>qsxp>)_@SL6Y*sD@r`(78HV}~w? z;wPzYi3~VSc4$Ae$LE%atvdb)D%h+)C zr?HJ=!*f18)fVYL5c^k$46`=t3+4PFM_*Wjyu+$6Vj6`_h#eJSbP2Zf(A&a(MeMm$ zaN72OQqyqW#`%9lFbK~8P3A1%F=U5A7tmj_KO^(x5=d2l_cM+RD|e>&0L(`Bf+9@a zd0iyw1*k3qXSbvqj01^L{bwz3WT1>R0HZ{qYxWAI4dt$IWC)cA3_vRi&$zwOz0RyB zDz#qex}cSTMI@Rd=b7idQNGC(3r8%h0LN6f781Idz+DpfnFM}9GSTD3_80qN6sD+* zM2con5%$rUdqwqWuK++-{ceX}RLXj99 zi8(L@N|Bd{d5GW}LyHPQ^1Zvaq018YoVhg@i z%3u@Ggqz5kQJ9+dvC!;743dW&*2`L$!xU@Q9YhhspHh9Qlf0D*OC4HLyZM^<3F=s? z{nTcw)KL_!Of6vWq14~?!tYd@0%p`EsW?hJ1^Z}|XjLU2kV=UkEt!`rR<{UIEclpV zB2$=FIPbTkBY8_^?#xYt^%~@|g+lh%qXtmejD0%qjiNkGIK5X`3xd(CUaOXXD)a)O z(3uE~0;BqGM3oS2{#pVWq>q%b!ZuV1(O<`CwKoca6Dt`iEL~Uw?_^EYtLto-Q0p~S zcnlkvg1+H-z2^LMNQXI@ z)17G)sV8yPYcf~Pl%6Uer6)r-c`efbRegT8QH*K{MxTW!QJMx8+eBr3nVJw{7;peA zic%i3tx^3y`#o`LhL}3;I{ICc2aaA7P?iw~C9}kRER%&?n>4EbwsNqC23yU!JNQ|H zR!_}ARFTLv6Xh#Wz$y~B#Qi;(W|LXJw(7kmXOQ}o*c=qBqq|t-YUv&)i)T;sohQ)l zo`A1mwd*N9BMJgVJ!K_L;?ewvGt7UBy+p1ntAeopZ}NhtJ2@s&Tw)_$)q`*}7O|Ga zqV3ScRB2U*g+NUON-vuw8JXv7;p}oZ8m)GBczU@5|5bsTE@5+ZQ)I++sMFABWrjAv zwl|v8Uo+xwt&0A>zZM#^87IV`eCpX;W4G5>RnFiOJuhgR>=jT~ewh<0)S!j7vFSOL z7vZ`mgF8}|2{|ICSAYXwaspUwab874488 z3}hK~g*+I_qCbe5Y3BDbgGGO^;3R`nY2}H=dI3tX)zB-9$TQCh$SFbZY4rB=nz{kZ zP>1lZ#xgZQ=#;6uy|;>`@= z+cJnZGl*}`Abu)}h2+4Gl>_{id=`MEB!U!QX67J_895L)og9efVJ&Rx%BG?4-L92R z)^s@q2=a`Ji!L3YP3|KtRv=>T-42oy?Ke=nJsKl*Potu-Q|zZIdgLo-wu%uCNA^nlI94)NW$@PIbjv=J z8+_JztG?t=Uwa#MI<+yDXqE4eWlI)Afnnom?p^}qd!(skoSgn2^#2r%IS$#8Mc8Lw z%SzDW=O2P>j{R4tjA0W<8!MKWBx2N+ZJnZ?b{qT6YZ-bR!8P>7Njq{*WMW@%JUZ@Y z+C<%~(z0?i72xzTqJRFGHg*Jd*RlZM8hE8jtSFkEA>zc^T$Gw$;%;3R~Y=inKDUcA5(IVgZe*4`Y}T8W~e|n&^zo zmu|xeGY|P*6qM}3E2QrJ?jTc%lVT3uw5@MKNTD-u7fGQxR1vPAl0;K$g>68HH4-V= zUP*5(k~LqSch}{zFIXil?-BqqNfkHy4sT@D6RNt_{&9t*lCybJBEXnz@?Oh85N@Qk zQdT8_k|32)uE8Z+Ob$JiNI}h+8ETnOlb~!b!#eaZh2$E$a^+Tt05>U0-6Ag8rU3kpe3h$+aVfkmR`pWsIy)MPyiY`X%M|TUr>KoOZi$Sz z(-#?dKT{7QGe6r;JBDY8xAN!XBk>aSUOkRA{wuOh>hl6Zdm`7)0+=iF9^;5{I2*wG z2^BwEin4_B=bn?}`_6?0(j8Ko(<<#8^Z5T<+8@o*S^(})TG%ShR66sOV(FF6hK`#V zx695Xyh_^Vrm!@A5_L*MW)m3rEVjjuwH{-Q%W+N*E*24U*73)B z)571impKf*(WfMejkdTxe>~L_T<=F>s8md{5?|6oQ;EihHuB*MxG*?vdt72=FP@e1 zoF2*{7IQ6E@RS%ip&V`O(A}qXcb&BkVHwC~DkPK6Wn^yDtNgccUwwhdRR^<+&hn?^QtE48LVC9e0B-$`kOAVNt zX=bG?7}h{q(A=FYexw4@*xP@k0xb$rBQGw0v+h2lyBpdtk=TxjK=yo>kw0HhG2bD| z6rJmnU&=5W5p8Zlm)2Zvy<$vx;4)ds$xqM;k97IG_n48;jDh{Fm#gisx6PE;uR3sY zt`CJYTS>j)#6^3VSeRozU$$ym^owEI;GbCYFsohiMeoM8{7sPWu}}k!`qnKjMs|1nY#yze8tx{ljTPrQilPN1K@4= zU;!H|Wa}(^(}3sXx9B;$35p6!+`unC3`MpH?1AWsaXii@& z7;*hW(44+V4GT{2*CGt7y)P)ih)Ebq`S$gd^+5UlVN&S<^UiM}=!qn8VIwBvPnXS{9`ZneQIA70fwbkN^E>g%E;Ffd4+#YKY6?Ei@# z8lmL{xNsBgW2Z0cK=B{xnJsb%0LAcwo+;ZI$22w09OnqDiSW(b!?3lmk%A1et>eM zkyRa0StouF;jjIb=udy4P_r7(+Ms5)Le243)TDu$ld+`EIF);rWNcA63b9tq!~{=d z;(6sKrEIq#&s3&DSZTOK!1yJCZZzO3V*ScV$W^LKL~e*Di5H0uw4%LQpbXKi&QP)G zFXm+(@OMRK_Xq!_genQ+pMXJ(1e3g_<@Rjlx`7Qbj9o9Ca zXQ?3_lMV~aGRO4vznHU44Q;b4)zJQ$Dt8##XC%#>i-)%O>nd0)-F5NMcFs~G`zvx0 zAzNX!>hBIC`xinozLKHcEcNscZynkgA0O*5wA*9>*0An6@;`@l%<4NmIDrL){`;nR zJTI-PZ)K-(jM5u^$kLyqPv-L~=yqj|nD5iwN`-NJ*gjuW7>h4ygR?KslLJGTM*Zyu zu5AM2Inay%b==tj>vH~M5$N>Sq@L4X>o`sFuajxARWO);ojFZjGm(B>J3YCsGd;OZ z=*d}y^y}K`$#sIt)yD&h&I#79Qt+QQigWJ2gm^Ko9R z@!5f(41-(jg8pjBY1{z)^LzAQO%kmK-{PZt$fPQ&i`uD*;zdlVqIi)Gd`JhXaxot=OLfvkROKQ* zkzakT_jNF~CsPWaQLAX+ zm)f+U0;}4ThLEZXA=ZmTHn07WdXuW(4ce@Lg$%j*@H$R{a%k8DG79^ibyPL?D&41Q zdD^Pw$Kiz$DLL|}&3IqExeWUYNP5+t_~*zItmD2mI}|ZOvBX^Hn3xAn{+Xby?1E!9 zmsJLo2rPDsTFTq!i>Op(E>o+4hy=>{#=Gc+y5oAlUdoTJ)Cs0=tayPt#VU*U`Z#zr zi}7(Wcw)K1$)hOZ*A#Qz{Px_2Z<;nm$qgeIx>z(1xZ9cY!)+}AcAw@636d~EHfNYQh!i4@5+;Ajadk#3M&baW1$ZV5ukTQ~$@FtV8}97J$cKbfyz2WeL3>uvC8Ym#V$nh~@GzYdL#}BJLS2+9scK zmO6wDbT4Z$`)8MT7@;%p1^Al{Re!ex)RFLAeG3qz4&xkAkBniL@#(p0X2Th57mV+=QST-neX zMt7(IM2>>i8oR@W&14^&IHjTI7c$$;;W!9maxQSiG>Ocpxy)74$}ppSInvU*aOZ_4 zjY-$68P=T0=_wI&yH4&kSo?zmuuwptn!$je^gOJo%4JTKPIYJY169Tg?^ zGIEe|%oS6YFHwl#EdLoK4i#Lf75XEEd1p2Z&YM{~n7l*{0%pk`ecz+q8W40);Bu-S z=O5xlkc1N)xh<}0pB-Qc7hsNU(0oycrzpNyHBzT`q9x?xXf_wQ2H{7@PtIJDNtM{0 z1U%7);W#Hz^6-gL3}Nd0hwt0biji|5)NNF_(z_wtjc&|Xw&SSZm?uHrva{$>$~gX& z3mIzL+PwviWDoODWUh)nE)!vEbo)3h>nC|x8;UoaSdD^(qGIM~@?V2{o8w+o$*Aqa z(ZS=jK>MfWhPR9yhd7S<<*!i0{=3}FrChR=BNoO`YO?7^L zj*sbSxAyA`z#SKcqGq%a3B*KO$;bp9sKpNPXS-C)3 z{8ysEB)NRmn#Sz&H@L5M^j3-z%NOboI%2G&`v=KW)tP$4m~ zXg(k$(L6tBJH80^m(_3dBu)>~c=M=g_TY_fC}+?s6IJ7A*}ik{;*`m$U9(iS6wV%( zu!>PV!G?%!sAU@sI*xnB!g`7pcSBPe;AL_9T7sJ^bX{sa>J8&F) z_3AK&%qvm-nUs_Mk#eO{y}v6?5|8WEF-^byD^8Q2Zo=ECtr%5?NhiEfOZ| zojM8JGp*M z?A_#f(b1l?p!!Ufm6zTZVrN4MaObc(>Sf=6qA?W|8b$WwJ&`-;80q9+bOP!~!nP-%PU|)ItAX zMDMZ-UHtaYiQ;X{?WkOf`#0~*GlP*?lUAvD%SiB#6e)sp&d5wswsJ%%uc8!IDV%^X zKd;*LL8~TE1tki56?WM=PcJi(bx_^kd@MJ@Yhb zM{(C*{@*Z4gRppxrrx6cEFfGq{V&c%%~MuW-%b?BiawE}YLw+D5n_T{Et44!D(wXd zM9XJ0H~!UA;UmD9Xpw8j;SHq1(|el74EwFMZU<`}dLYgL+}-B%qu^6`G>@Xc(F^zK z1#)0O3Q?Mn%LNL!k$%5kvmfn%_3Wx^b8S_es>)cW)sKi5q#D%j_{-em)@$}mM=K@y zk!be`Xyuc^FxoE5;2x2^=C;%o|Cu@p-!?96XCZ--sv7GdQB&qaI1?dO*W?=Yxtz}m zg44UI8g(@fLAv7mOz9d*psy>-a+2D8U<4}a(&mQ(Nv6{$ACz-sA@?}RP2Cp#=LF4# z(j2!aa0LQ4KV+`wMd`m4p*)g#0^F)|A89=GRvzobd1xW3WJNR$?KaN5cZkQ`#ML&G zg1As5a|^{Sm(ifW3b-s~kkVivUGg5%?lkZ8`K#z$EvuJ(icK%VF&J84gzO?4xjbU> zTGA0sKBU`#?2SuPD6O|p%&8Ds@sv9CQ>pJRX(}D2)C8*uDOgQz8zr|5@zmk~kwt6x zDZKva7Z_zVn_Wr)sCKBH-(zurAXJB1@c&kQ+UC(GtP_9PGOC7BcyTJ#QM#u*@eZ%H zWicQ53#nCyJkJF)Bty=A!;1NBAw6P!TvS&i8%A87g-c90P3XT2Y`&rvx(^1nfR{!PJb8Ptw?kpi(mtlV?tVw3osR@HbgLr5?&x^xJ!BJ zO?*uRhVIu$8XztAeTbA*JQ|w1oV5}?2RSh@rzOTB2HY)k4p*;v*yM-A9~hlFbqCFn zt|IfPavjK2wa1mtkwA!zbpLTMXbmQ-N4PzOdhge7%2cCOpUnB5Qe`bdWpz=8nPK5} zVB}l+mUu~0*EYV3HqjGOwCK3f{;knV^R*#?w?xy~>NyMogg8U_rF*D}QwdM?XFfWu zW_T+z{>uR}S=I2!Qd@aCcZF0~56%){Y335T3Q{(z|B~f|3Sr%+2Js;$-8g|DiBpWv zubohirG(rV$)+pUw|3>2uz&Npap9EBvO?SvNrB2QQ3PFfF)ynAc+oDsmi-rbx7e8PZf)4IDYjMWYy%&rJSm4p``=FOY0*1q5a% zle?8NL1*S$f{x=?F+{$nUL20`1KrBJzzb(^Y6*dA)KGG*Dk&PeUF$zkjSWE6Ju#wp zsC-n5GI7CaW{d1lA|=sHw`+ZJ1i6xug{weO0&6ld9F#{rVfM_$kP=0QxNApKW5y`H719ubpkPC?BOeNQ6 zLMPNHt+lRZz6oxKkW&yd*oaD}(p zq<2vYOKgf`zmC38pcUPfvd|}r2jigua%$xCeKgBYbeuZgwb&8lY{Z z2fHdM$leRNksIyYfwjywC!p>5d;uPC9-^;|5G1j+3{ROqQ1}q=+;LoG!cW76R z7SzJ!4b}X&W1EFtmT42IzrESqZ!qLOWq4uLs65pWn3VpkL>0}8mQK}D)8@&(TR?V6 zT+y=*x^)%pSayeY*Nsvw+)RQ*It76Q7XzqXMK$W#ap8rb9O6|urFh;IE!C;%>fe^$ZoBmpuGC7`K9OZ)m;$615n2}DDjV(m6Iqeg@vPc{H^E+s^=*X4*Xn$E`e#yw_Q$^aSyA`Vp8{O6?#g`i` zu}5$JFT^2CAY(G@^|81B3S+?ju-sm43q$%d6x1}cfld0NI zE*_QK>&f6Tk*#*Yt;qhr9+huR)qZU?@&D_nL^GEem#K!|5*avHu>QRkA{^unqqx## z;#!aCnWG0!@=y|tZ)Cbw2Jq?9F59U(l%8-V;h4+FFH=$&U)El|4C7OzmWgGqu)oay zZ$3)Y&AKHFt_(^N&u6K~VE8=66wiVtA%w+=Z9gRRWh}Yv`WCLLed#Wv&XZ8>!GpJv zQpUwE);WI4a(~J&8B&r5lJjzmm)2E%*{?mheHeMBCtTqE8$?BAb~OJ+B&q6U=Na@TLqQ)r)pq+q~#dfjs3S(fUZ_j1F1E_Tn`%c{5m4Uc@tFD-RRS zeit}AtEz?NXz{FXMRt>BTB#tjbVe*?Tu6SB1MBl?!Zmg1B5zsD_GnLU_`}b{#g?n( zc1P?h)VsgnFt621W2#skm#z{2iyb`DH~s#xXvwd%K7%D))9SuL4?b`DbusDMJ)ak- z&(E6<7N1pqilUXj(k8}lF0SZxw{~ZI{NGncAD*t=692c^6;;!_gh0ZSlu{T@ia2CtdNY=S44jRJ$zx&-0=qAJy)N zzj0o4;iKA$_$}{8Z85aE)AXp*uT4w1kHXPC z9QbhbNx!x*{@;&8^Yeye4~?|d^l?zh_2&U^2Z^w(Z_zdWwLX=b$Sx7wiihu@6;{kK~9 zw*M&-f#AST{|2J=I7CYFt@3q<|M%La6e4lH<6Y-rl7o6?&cJsC@&qWw2M}WOfv@pB zyB8(~tAXJAg}+t&ZjN@9E&lyGqAQ=$8Zsv1WB@DT*P#->W{t;U0+u5)HG2lZksgtm z6>mJPZH$lq?)K;trP@!s|NU--l^(yC9DTi18)usl{k9YyLkYu&$htE}iOz)~EtsQZ z=PhuHPB+4HcCNBLDsUq`=TRx)iD?qNA?ls0Wn_G>I7t;C0CIl_k)}g$=|zWz>lv_n8(X|1d7i{9V0ZvS51f+LoHK z3%b{6&_id5ZLW|0>UY|e@ws+abDXgBjr7uUHZgLS3>lYh}Q3Rci8@(a{IPg!F1%Mq4@~tFZ0?i`1+p^I7FdJ zy{akplG#Rt%+GVrL9K8kcfs{cQv_Dq_Hs1)Ic@9>zDcTj3DmOrJQesCd=6vwMDxC` z(rVLFpWvtI{aiJeiIZ{MWAe+SI2!%vIW4XGVK8AXPti}G)0QUq^36;qMMDd;M|w{8 zO3F&vB=qRMIBGA~>f+hw;~it8HH)-+l7Di@96#%F%<*%ZD?0im?XpXI-z-(`(T@kk zq@J9ho|n(gi$3&{)_cSbD?D%;tzJ(la@dJ`Fi7TxJe6`A4@vo!m2yyC^dB#2JEA3* z+3bNlW3$)z*o&;tC@z;9Da2`mxWyGO@A4EU0P;KnBP7qg)>GW;$#*R@T;5hqQ*L#B$K$rY+Sp$-Y|?KNLkl; zapTD)YpYa~!;_rhlz*BIzjc?<;5zw&#mV)Y5AElDuiRA02;%$Etx3FmfoMBtAN%qz zhn*B@O>ge$8Fu#m;~IBsx`*v?_df)K^Z~Z!dN7%O0pvlTA3n_eoev)4<*Zz0_Fy%p zR}a>@0xPBKaDb~&8CIxdIJ_=*p|qWM`fN2mGgs4zt{zkdd&X(pd4tIYksznMh#mCS z;;p}Fl&}03?R+*CulrYY-1<|fVsGPDC7N$17$QAJ1!wacyRt)r z+S(hCu_Fz}i|7Z;TN&Y8{DP5)_#hsgw^R?+%aO3SeAQk;gwis>(P2ik&g>j=;bcZ0 zzKFUG6jwmy-td%Kr%)lrlIzpkH2 zs=N@bIYX0?bks9t@D}XQ%YMZhUPIoKfG|biYyvC5Na|IPLYh*~{!%a%8zt*e+rWTB zNJgYyxYNze(}C~!EaYsS+g14)il&FyPdUBVzXq?DW`v(A7Z2QhS-KXu!@dP}Ie^A{ zVta<}NUkmNWW39$MQXx%7Q>{Psh7u4LpWfZ71zi5+h_UM#@}a5z0Z`4@j1uw@mz?L zKTj+?ny5$7VSb!*KH^wWu0bwB@!?)&+Hg}W)*C8^SX zFTBunKsXkXP<4UCYNC{Ob)k~LeMcla!MdsY((xcU)l#%$H{HD(%ac|f+ zv5`L@XDRj<$fWxFIDHb*^Gq>Ou08@kI*Bs?x$~yFN|@6NOwW-i7vw6ML6b^25OI#+ zfSB8iiDoj7OgRZ?Z|>FMjvcO#<}BzeU2sYq6(q|o-_<)LOJvN|`z5sD6Od8 z!@9Rxn}a<0=Iqx42YqBB)Ai_^C+I=frUgB6nK%uH;?Js?lFY z0R_ha0hmH=v@XDKf5_V6u6p=@VxJ~fQi*TKeQHy410k|5Vm&BiI)0pxXWn|;mo4kZ zL#c6u@WeIXg-^&kV1G`2i=IP$uu9YiaW-9ByeD>9^X5xfn(O3et^8E-6F|AqRHUdb z{!U6^nY%fX{gy02?XxUbA0v$U%K7FDfX##8ClH`rt)CFZF zbK(U*ll7LRr?v|txn7_9Q#E^@svZ8ggF(<7m;ouxvwexx{79zva&P3xL}P1QL(0FQ6W{m0w>L&Oly3l3B06fPioZAM41*6GTcW9;0$Hj$+uXUe2iULS6X~ z$MxO*!PX@it9~e~tST@^aQY4$l=$d=s7KmpSe420dU+9iD9?d^BGU9r z`4CIYg=U4~h4MRVA?h^F`^))x1b3gK`rp4)d}j8)e|d&_R1THLBYRcgBS%!=u%U7< zR`q$?41K2XE%%6_FTGt|V`IS0tmNmOO1=89#D6_QzlXowtZwIcp88g=J|^Mp!tdd4 zH@C%~JHe!?PKPTaH5#)&D!jr=`$MCF*q!* z-2YZql`iT_9K1@7qO$ma&CjLC2W7rRv$(g%UCoWNbnJ!1i^0fcQ-1-_PNG-v@O+urVi#6uimUPv;QKx zypsS3%r!i(1C;VCJ|A$huP)c4B2ucV01K+@bNqZ`pf}&c%`dQiV`H%6RPKoaIyNpmcrjnHMvuu#neR{X7-$}ND&65JuaC=056mxK z!eL=V_2l#*_*j#+rlXc#IEmiZdT!o)1 z!6~)9-`MVUJsYo3XP_YCjlsWfk8s#w`r7)~v)F_8X6~cv;_k9aI)TzZlG6K9`bTXA z&NC}G&nz!I7$ci6x&*));D4vq{&c|qKBK)w?Fnd+C+k~1_y{#|8%-V~dtURsLf681 zwFt-bV7A%{)^Z7vj1vE&recffpB-u2ODyTQM6UJUX{;;z@&YO?9~m`S)&8{HKqUJk zW4p_!AB(z+k%lGkJS1*kc?fw-Q2hT%r?J|y{xci*T7)ro% zStpCXioGI&%PFpQw*M4)2gcR4Zl*f{xe@WBM3F{|} zOV%d;Y#R8SH>;r-%|WO49PU{-8WpcWyErT5A?k{9K`B827z0t|n0yd-I0y70T$#I* zGonw6wcm6RLwnIS$lO;9N3xHA%)Pjq*^N9!@8t|n8hWBS-XA2Uc@CWpl~^372j|%2`g{N=}#BSTJa0hLT%u3izjajU%Yte1I-%aUbNL^Ed-~*yhDfd{?YJ zfl}b~tR#M@!}!gq-0+B@UgJ>`c7Xq@c&I?en#IjHV;s5R>@2S_ikmZ}@4;2hi5d(R zjv_s1PLfKl^Hj3_@)GGW#4Q`-)ado*mbxF92Xh0v5zO=IF6Q&vma*#l`m;QhV*+No zA=k0Tn2y|4k3M9X$8vL5R-K6HKkVuSXdWBa*F|fEepO1-?ryDgKES!$8ebQf*YH!X zqvRgAIg&D89DCh*(V#(I{EF#;W6DZ8)IOR8FnJT~P%~$!O|Y_qN5fTd5i+0CM>}{V z@!&qWTp2>aDbhnwrasW4S8u#0{bi=?D>vR#6nGf{bowi?K9E{ZDKU2PUyowlMD39mjYizD}AaC{jLB zR*HkJ0gGY1s#z>Y^ErI@Zc{VPSoK`tFGTFnwXs{ekUd~bt)+piRQ zRhD|ZklUe?;rEKfLsf6NrH`v7IjbY|C`=pPq6+0!=#x z1U;Al_;Dhp3U}Q5D}fciV!f5s+$lbt)1-NvvFp97m{V1BUV*Uqg@GClW%c|zGKi64 zN;6n8)i2~;H~_@)m}Fh_y)e~iUSi-!4aDnL;ZeD1jwXr9N%d+Qo8yrw;%*E#gcMH9&2{<27Qe5crQox?Rh1!9Cb7{>_h-Ryh%23 zFvmvU{tm~#ITk;J0P1OX@4@OfUHvAiGkKX)r_Z4OS`F1$h$YUyI5l5r>4$PDY1qEd zZFG|`cUFzts40%cULIB{lV9$Sz|SJfK)Q1AA*zJq!^JDZ`8^#*epe1j5_@`$#IDvh zl#{QioJOd5*iMMrPEBN6YMq*tu6ZK*%?5k#fP^&_V&EY1-}65gO1Q4c7GE@UF2?JK*Vm{c&Z*!QJc%{m$DJK5l_2NDkY#lxl@j);=Gr(coW$1YwvO1 zgeWTfy8)FF9GPg#H3AFON3LPtptkCUP0WzYj8>@BCwJyu`gLx?Mm7rM@$e7i(J_nS zdap6g(Jq*i+)lFf*y;^;Wu2|`Mec*7d2n57-tjY*Y@7DdY<&Id;>(K{9LD69U9c5n zFcurg)}NDWt*3!=q-0^0|Ru{eWE-XwwJkDaHtr&L+Gu#7pOcu zB23tdxUfIWT{z|o*8rI>+ylf5EUdZ+XseLCerRTd)eS&F!9kq51W1732)QNY2$UBl z0>M*=NaK`T{L`zf#m>z?>p8=_NnNhRTeRyv+D*2~=&ko?R|YO{-A{4->^`~SuIp5$ zT*KI>!x>p_!&kYH@vK2N_u~ci6@o zMUglZ$e-tGSd5+WSE*2sQM4*LC+32tCwe<_!2Uh{-koPC9BgT*hFV9>F z%?{KkhKXXUs8ma37m1da(|p94k0T6o0{5Dadh=0fK9-x0rRJmDe3Y1vhj}1}8cHta z%G*)oyV4Z-mN!itr0Nw?Ohq{L7f;GG68Y0FIe1x2XD$(pw|YTlHnb$mVC*CSF1L!I ziNZNm!q}_A!$_+v0dVx@>DuMo^)Xmw=gr#E?r8WtbK~_VOrg{oZ`A|KMZ7DuW+|sG zA@Qcd%(iX}JKR*4NwBa#2&hVMYAx(q%g1tt61zev#2Sh3izeT6xT~IWpC#c=tskIe-DGN6 z$Duf5@c5hL#WQ&ly$5d6A^ApSE?z<_iu4lP}aB`jlS}Ni|6q2D4T-z7d=T*kjRla-fEk zmuVU-G^gRC*m(JqsfJvBz8boG*_)9XGM^^E_w*yAfyC#eu3_PoKL2D+Fx3b3C^2Y5 za!e<6E!2=-QxfQda0^d#=k>uV=+trOX=Mkw8FEDUARS)HWqvaa_r*Nu|9$lBslABY zjA~I5>0T)EKJ(xCTE1R~hPha6cdnt98#4QIlo825Pl+!rlAf}N+6Bgmbic}Byxm=& zScCAv_P)gzT@Osupb9%nhHU3%ozw8NK11)^3{8Uuk91e~7XAGDbd}iO*8yqLyN06h z0DK9<;+HV4%YBK{6i9Y^i>7Ofo{&mPFVv8`=F?jY-M;x(;rvB!#v8aDy2FU$<`512 zjrqPkynh$GpT?wM>^1sD=A>7b4nIlK6Fw%NE2ebr$K-RFMiLCQvOw)XY2%J2__cAJaT7vagl__qOWP`d?&;(fVvyq=zOaH$&RzF` zZ@DAx^Vjg9QF?r@tOI4+e9LSMI?xuNoRjmLI_Lw`Y#a^1RE8)W#e7p4VroHJw1E~R z97F1*ZE;zo`U7|TFJ=Q+M1iFGqph1x@2NjXn{rqEfo~i6N8atQPj@1kYTy02A0X9C zi2b*k5E^=G-{38Uxk2;2c#gh6TTJn3S-g-AK9nEz<#{)BAuIj55K@+ez0?!xD177? zBlt!1AVF_%pQ@WWFH(olEFa%Rf`a2h624Lobx2Q|&0|yP`Xud#ZVQI5hdSg0Y5D0v z1a-(&?ArCD&Od>TyKe%)$D7hF%;V0j1SalvAj_(0Z%Gr!zH4!@oH`wPksa>Pp5{>_ zMmi_PL$J>qfjSDq@6g0kG(>EQ`h;` zz}f^q(oS3mnN6SifX1i${Git_d`Hc60X`K?FP|z!XV-Jq4a`2vF`P3M1#6Q?2iO2B ziMTMEOjSV?R0W%07ALg>+ekama+^{P%tpU~ZP+bc7_5|>KUIrH(StT4PVAC>bbrX) zrdUUVNC~oqvkNOULM3PhmK|S&IncNZ36)g1Y3OHt#Y1jYZ zKCN(@o(O4n1`~iaxLbc#3WJNwAIM?{l||DY$=UZE(l*Zd(J<%FsqbJa7vRN<1e>^z z&bk?pv^@Y7)HS5f#l9E@lltRsFWjRYiY>cg^#OpIPsryo-e>9WiJ|RQJ@K}$X{7NY z8q}c8Aum6H~9>eANhV368}^5u5}aHt@cwUBBQ3s+Ge829J;m+u0p6G;AyS z0=;YdT4!Uatqea2ISTNtokVw1uIer@^R^f-*fuw?M*JSqfSz5Ks0hz4pxgHfPTkH4 zw91O*E=*@X!(qriGC9X|woId`Bc_)Fv0wyC+~I#Be`nw`6pH|qGES@DO}3X{%%@Z0 z=aAdeNWbn*q!2cjgsxzh@qv)xN67nt9frI?b18W&>{5LW|A>dU8=RqhHo=C@L7S;g zTYiM3P&K!qML@o2B20S~hSEwCX6$52gsD3Q$54&!KCWu?Tg=W;qjxcaJwSzi#7zHDYlU5#Pw?i13B-4&I==+@5E79!GlX#6c zMkyoko{K8SX!)xL7CwhKaOY=Tr`!KBsrT^a=l^_I|5GP`6*E$eQ%8X7gN*?rPF@%V zhS~3(g;rMfd$n+eef8+`LS8Jw`Go^GU>(El-+}n(+KZKw=696JIx;-}g{JsQS-Z_t z*4DwCo^;uF=i+|7?QBzTJ6q{(XFs5~oo(uE*Fa4>`>x)0q14+hgx=Qu+r^i9%-RFv zYgpFY#s~tn6#im$)2%+Sx#`v$C*7vm(ruLm7mG-A2Vb~=p6lLyy$iP!6hJ>w(>1qf z?WeZ0AJE(dgm;dk{n7!?E}ZSbe%uE8(Zs(%QzOOFqomHFm#(9qMth@IHOY6dlNRVW z&~WIwqza0(QuG@42Iih2T+H2{(*jo8uy3G4NheQitZ=4Wr*yoSdX(TITO!c=)4`c? z%j92j!;~%p1G&m{M6w1Y+ckp20n0SqMfG4c96I)O*r$VUQs!2}975Xgns&JlY!HU# zc2Sx>|8p|nPA$gB^13;`ESrA_=Ov`U!X$?rY|cV^@w&}hWLFIGi}5ETXE=tTa7J%8 z6@rJL-r8*{1oxW?L2PaqPW9=;yvSq^Tq-q!d*M-n+S`Sa??ScsHF?nHHP}tHfonkP z&Jm?J(7WUDI(PKH40v$!n9AoWC3XOi~k>2Zo9g2A9GmJKui07cj^9%D@Ruik^T>_81}={ zn>+r0y9bfJ7dPgAcMsB4;dJey>AKOY59G~<`|fT}h)byB)|>zN|Mu#+>4N>=U%vn6 ztB2+1Gh}t~HG2EIH{XSw=3E~u+xWOCUg$IkhCF>sDojM^{Z+K3>Y#rCX_J2eY4&{! zNKO5-U)t%1E(u?GdA1k}NYKo+EbcKs5$`{K_MZIvcyp^8wY-HEkixKlgjfF02$CyE z=6IbH$g`ya8LvcwDyk>-tP2Ld4E-@a1%+2$K!1#dyf;k6z=BqD$B^kl9-a}<5BbgQ zN&Vng9M{-OTDbcZhZkP?i}V$rpZ_`>T4RwbU>MpVTf8l-8}zZ+V(@a9tbaIKgsiX* z(ua%|V^&xbqU(*u=yIe|q+&H{D@S^L7KB$C?b)!x+QX*rc~snd6V}fAhKr~|Yb)c! z4R=IZp*2P?2@;bEVTNBmTC}X zu`bi|hlpltVEW#2i07p>)=q|gWuW+Ctu?vIUu)&8c`1g>l>J&3PxW=yM>M_b05PM; z>eBTAVq1~*1ASn+82`StgX>{zsG({0O{yCNn5)r7fjl5aI`STiI(_yyW9JW{dZ5Ft z3jD7OVAl2qltrD^Juc3^Z~ek;gDGoyy{BRCRbFqVd7Nz?Up9~V=J7T2__}#qWggd> z$0GCifq7hS9*fQ6M)SDIJbq#xH=D<;=5d>O++iNQZqwOq9`~BZedck$c|2eqzcP;p z&0~pqJY*gZo5v&OG0iMSx_Ru_p9<62Jf1gwe>IQ4na4lOW0`sUyB}6B%j;b>L4+9~ z$~@LKk9EysoOx_u9vhj*Cg!o3d5kxYiRQ7Td2DSS+nUGr=JEavxlB&7dF)5Tb9lE~a*&7l@+lBZ;gwM0j` z*iQ8~+2v?f_y1qneWm05|Ltw&w7UQAmo)?90HfCOfbZ*=VK9X3q8m0l(=1jCv*}ii z-jV(Q6}aq+uZKAcT(-p>!-EPs257c|gz%wu7K`RskwRF!7F#g}7NOPElK(?GlF^I0 zD^e69cURR?m;v>`gH%mxsl_X<(-NvYt7|E`OC=d=)K%OXNHEcoWbza5CR0A)L_2n`;X9nd)udC@r?a0UnOa@lT;=wy1D9RDG2r;MFa z$lE#fczUNb1JZXKWM6bSjvIkOt82tGQEO4qQO~Iz)-BwfuW2u8E9{AXhijMZL9d2u zbNNHxg=;5y(05_lc^*^}rj_&1FT=DIj-Y*En#WOdNw{{^(ROc`wlyGVcbIk{Ajli0 zT?&Z$G)!9%h}Yk1zQFpwg=vLBRW^lb+k@(VAEx~rWZf91%?_^oPM9V_QdWm)3!TBQ zAU3D_lvWU?Eva%HS5lUc?j_CHl22kCvC#LJbrPFUEx+t*oS3 zBCOR_bx~YFERwOvz_zS5)_uxXrfMD7F;vAdJ!qL-^Stx9b#O?hs+x03=w}*RuUSrN z+C~lP5|tY>!bX-3cOzU0*+-pgH1@J)*`{f)YKfx%_tuPrs#@i>TCa6Fds(-5b?sFh zjZnr>jv$o_wE-3UJnwyPovS7H)sp5}tuKsZi>z-#{sUX3StHpN+c&6?mjZO0FATs# z{_lW*@+`JI&~`hEtqLr}7K|MujMqk5ca11BMAx|j5KEQ=bl^|l>| z?l-#~=b!N8c@5chUW|KeZKa?)4cIr8M$Br+J`4`^HDG6ggDy8<3q!1bHedxIUq>_c zLqo?0-)L-i#=RY@p9jWFeI@W*FNn`U9 z-)h8I(eRwL@Op1_;Ja{cjJCW3=gsWE)o{Md4laaqEPE-Qzkifyme0P?tbdni=S=pEq!&X;biW$BqGI(|jJ05AD z8N+^x+<-cJ6`!7r(L}XnD7>tGwEXgweYNC+TAucH2s@~+Mn6$zuY~g@JZ@D8JHZ22 zgs}Av$C42CjXNapd>p$HVm%kfZiF0;VC-O=r94hM6xZs32+_^HdHRE@>9 zv#~PRnoWS~8VG;5IfFFjh3g!F%4-k*ERD5n??ytCH8u|n?5yLIqtFh~Fy|}%doe&PoW^Li-!0iDy^Gl5l zf$PN8%Z1AlbvE0L6E98*;l{Sr*;jDmyXfp^xcP7|!_9Q*%+eVFdg!bPTrb=qaASMw zY%JW;bRCZagd420*U5cYXI^rL>Fg+6HcDr|!F5i8To+V5+$C`HC+p0;7AKic=xiI@ z(rG$7370*iv$`%^L+l~#0k`lyopnt@glly+9BwAu32@m)ojptLHiU>aq7VFrszg+E?h-T-cKq~T_1ILVJPSPtAYe9Lwr+`MRmZ6*P@ z`{6pP8|*y!*D%;E@`oGL4H4EvL~u*twuGC8H_Z(pw~oQyftv?+6Wn6Bd*Qn38tf$b z*E1OJjts`R5dlt08X2r3+`{Gt>jT%@%3y^gkZdq#58zbD!Hw?*Ik=f{`w+j6!E)gi z_BYsU@*iZd61c^1O9|sO;br6x*U}ShXN1AR;Fe|}9=NgYER>uWaP#37V!*Hsu5+Tn zVtb)xo-~*XZtPPi8Qip)s2Or!LIQAIuOR{Qe-H8WMuu(~Y&qPL))w{^xh@N<+Xwt? z3mXoXO}4Pjgy9~A>&}0|!eaWOL{luRBiz`j7M2FLaGHg!g)dW-hts>FN=mG({vN0MG2C)NLOS@;^A9!nyH6XT{7AWG& ztj*zMmSN5qAhwlR>xT!hH#8&d4UH9&yGqmY-+{z+c)^MN%laM!_y1-694P;9YfU)C ze_LbRnf-O6u)nSq57Pr&kLWDt5j}tn*IE26W~ay5<_A>xGZ$jPFeCy3Msjx0fu@Ia{jRT}vUeO4kb4>RRl_ko#QM zy#Lm<(jz*?gNB>OYlfvnGgz^11g2Sxz<8_SD6<;&Si8Z~?1onCFtoA&gU1FM8VfQU zc|pLH40~A!cuvST4SOm6Wt9!Pw~C?VL>jy>(lA(6LobOoEUp+s%dBl^B@GQdzKOxo zni>{wGsB+N+|V-<-G;p+(cr8FgxVQAznx)qb%bz|5s;Q_1e7Ejc2|nQb5aaFtvl|X z-iAG|4-)DNx1V9p?+^KOWOAsXdGY?`*b#=!n`KzyM?q#3GCBzv$~E+|Cz08w483#? z@?h; z4VHJ#u;u@P++RS#zZ4OQ36{ zB_L;%g%^&p=&tb=dp`cLk6ZM#$rg(@$D-%EE%uT;i(dSqMazUmvv;0FFMHXd#V$r> zmRNW({-yXkmm)(eEf&|?7Tx*2C4jBBxS4Z3PCi7AKe7aP@z39cL^dPgZ5GXi`?qX2 z+`Se(b013dIU@YhqUHSCqLq9D_ozjWJ#NwROD$UI8H*Nw3B0;iy{x%aD_L&U*_&3D zx7uoPtpRVXl@+hEYMAwC@jIn z1=_UuO6a&M*(?PK=^xu{@9TQ5O?;%=UM4riur(uhs$q*GccsE#8n)*N_qN!Y8ijE- z@r=bb$T*3UZ!NYX`ZSw(-)ie*6xO$ii&g}E(k4P}kVtA^6OY?$^+IDCqK{y)cLzmB zA@R1&)~TA;^l-8I4f0O>@_Z&g)-TVB5#Sj+ zVqDQ!2B;Wg?9<4t9WjPC`R5o9nf!Y(79zj^ZX5LYl&1eh0L4G{u=KyG+@K*6$11nA za?_MMPPwlrca3tl4zX=W_}%u2)0X6{nnQ6&qLDI2kSH~Hd7fdhw)U0um&S-?O>MLI zoN#7gCCj5cwVK%;53INRvuI#1j!d6CDLa+jh|GOzaw^Mr57Ed%e$58i{?FT(INTkC{$Sy9rNE060f{lDOybFX^U{=Zw1e? zyfjJ_^t25K@Or8srwMFkTj83I(BZvo59x*9c*gd!tqL*@9gGr=hixhLstB|BLRB%~ zVOyktF9`tST~w+Nz7% zLu@l0C%=vYZ_n3J;$K5-HA9vhBzVPSZa|VJhS)lUegsH4`)Y71qp#iR}KOY*dF6GpQSMx;#6na(zj=$bt>cgp1HZ1af0*;A&Dn>>l8ldL2GPtTGz z6!fD|97{e3)%s4GkUNfD8i9xo5U=pBNb>oN&dYwm%tW6&bzClDNY9?wJu8PT&X_X! z$;pq8oAg-ENu#r$PM$VqO!gGEA_JFiJB7*r#2@EA@bdOjYFg;tn4Wi zY<=eBoZN8}$IZxQ`?IEGPh_u*oH}k|&V+Gern4I(nbF_xdtt-?KmU&r8SIr&Oz)F5 z5*0{A+dBfWu&+iLtgr!Ep|?KNCwgDQo~3bA_K7*je#+RaDX4Pfl&al;R|1x^qC=~TK#E{nnG2}Hx3@MYRP0D4n zv%6;HX0iF%=G9<-jaHZHFvpxMAc2Wk&% z(&*7_&gc}jdbIxz`*d{o>|7@+&Q8l3^|;FI$!u{k!xkOH&X0OJ%S_^@Y)@3CZIT}0 zbmd3nYw_mKtHdsgV&7H^Mp-vzgVlwXGjTP`Eh0~yv zBueZ-5#+Hah4c1Ed{ANbg~XM6O8L?VdNMKAgs__;fck-`pAzunaTV}Ph2v{V z`5g*-VJOsMeW5`&BUFr`c#8+&v_dK1@#FU;zN2t) zvBZ(k*pWQxLx?6SoCCcG(L9A+hb4YX;Y@{h(qa%rkfRu<{1GY~j`bMwFIISk!a3i` z2sbKhs>zUG1XiO+o)j-c-4xDLc!I+D3cv1Fj1t8-uW;IN8A19(GQv!Sg~G8XrT=Ax z;}xEqF6CVc?^ifY;g$nbe80=^?l%;p>~G1qt#Hm|iKpP5KV}tQk@$|nIk>He#t)MI z@uqb;RM38m*#=SSVC8R@_)~?;=o>M#p`q==QovPN3hY)mEmGokL!^Hu?q8w}3bUFL zcg4__GFVbq;*$z{<0PH{ts(j6HI(>ch4W2}>wiZv3YEa{M`VCvg|{i}RoF6IWvH=? zaJa%b3csPSv#IpIu5hfvBhcTN8EOW9q|f##Mrm^yAb5lnC`^!el)}XdzYR>cC294D z8fN%!Q;By2o0qJW#8Wb*f1$#bEa_hcOzE@7?_&_&rEq*}8Np?Ra}=&LQbs^pM51w{ zB+l<3@uQ<3#4WQ`f*qy*R)tw7-Atb)jgbP*PEufrACnCz=ud@X6(0APN%aJ<5!CP{yn!e@ag1EjDeYBgEn;$(@JR=`&k z&g&}uhvrCmx1X^U49am@H!1Mk6A~9H?3yBRnZf~6C61@p6M)VtoT>17X!gxZpzy3| z5_=Wy_N0lSlv9kDr=&oc!WV(5grtfl3VB*$Qb`l_RhU%MMEj;o|NK4@H<=-Ep~7>4 zDMQ5yJDwqo_UBcM1ttU6OyQQ#$^fjdjBuO6PKDE+lm4*^A5z$*@Y3g{f4;&)kQQa2 zRN>lrz-};N`^f}u6N4^+!uwuO5h%QJro_bxkC-K~SK*ekB`#Iicv0dqg!| zfc}RP%vX%$g(?DtBNs_rrtoov*+VkI;+Lg=titYB3 zz%`*p7CT5X_7|u|qj2R{l|R-yh$bsc>mNj${21#XL@A4Un$J6AVZWYq<^f!9$+dkE!YsbeTq>A ztuN8z%cX$pQHhHc_9`5(Li(2|+(BVyhLoSJaIC@~E1a1r{qF!%jgXBC$jxG2lM&LA z5z#{m7b={mFfAn!eXMZiWQl(UHrtTG2`g2JbEN;%3e(CH(O1A!1I{Ugas6*AfwZYo zV8rWEAXDLuz?4AYbm@Ou`8x|FZt#YbFI+6~N`<|vCEf#UhF>G`Ipv@BE-=z(39D2D z?@56n3ey@G(F}!YEsW@Og=sB}DB?|3BCLfGjZm1@#E6O&rnNC5XQ3(}*2pM*mZ%uC zSVr`)!dNsj@d|}$?Tl!z!nB4)bU|TSOCySWOC~^TYD8TWrZqL9XB5WTnwdWPMKNfR zjcC*)Y4DV*e!=ylG$uQR~DL}Tu zw0=pnMB!L0UlM)p_gDCDfB2Eozg3aUAT4tejaHbJJBhXeo6rB)CnV#R63A1y&igWg zoT<`(io&teB;KVkt(y`BeIVs&{gmjE!nBS`)ZkyTMoZ>OJQ3KO|I-31(RN~Jn5igy zQDNuH(m!Us%Ft4Y2PsSovqUc`ObfI`yA>`gk~sK78NO`2#E%1;^Z)#flCeh#q94&r!JSFNseo?7Sjz%a5ge+Et11c_#U=AzLue0fkF_5?^yGM%fL? zaD5^J(BeAL0)?HL#l%|`X1c^xJW{?aPU19$;~Po5Kw(;>C*qr>d}(Ki-QyI4R_}?n zE9^{__%<;018Kb^Zn;I`{C*NoRX8n8;}D$!BTX{c zb%pb>ctF(YQyCz0h{UrME*vWHW?;I6#R}WDsTz4i`ll#d40S)z9ED3q6UOyFrWj==mtr7)Q@5dEz%nKckK-66x1c>_@fu-TKs%z@}ldR* zDh63@5LMbEBg|2Fpu+j85pT>eyqfnFQmU8cTw2wRRSL> zh9B2FAOo;kGJ^gJyA+;B7=_2;wV9yfONp^|ZQ?H#mP^23co|xjmt+i zjzk_}0F$jF(E)|Y=8@=>!eskMRHiW5KoS|>%J5_hNfev|c375(j4p|y6(-|LqGk${5hhWx!eop|G}s?r;qeNSaVF98hjINW17xL1 z^r{kQsqniBlhG#8R)tODP2htHlMyG;X@$v{ljy3#WYkF%@SRMLj5~>HxD|t}Jc$w& zCTmZkZVHptC($s4$@-IMlEP#KN;FepvIZqurZ8EB5)~;-)}ci19g1O^iGp!R;n_;y zoWf)^N_0bEvK}Q0J|as*R-{C=6((y^qSgwVR;9qb6ejCZkeiKA3^Fq%nxZh7n-a}Y zn9NRzUQ?LNPl?tmOlGJ=yA?LgQGt&rOlGM>=M^UNRP*_JLovusl_=ZoeVKQqa8mlmww-U`zn9N+w=kFrLAbVG$LWNDcSKyBnHtk=5 z_bE(vutdicCVN<--xMahSfX-;$v&2-%28QBvXeERzx5P@3}%ViDolp6M7fz(Gv=jJuT5}g~_g#NGMG9wM0br& zk>i*w5gFtX#VAaMxkSwsCIelfWQF&3b4$h`#UP7aqOl5-xAurKe z3X?%E(I$n-u$Sm_g~`B|=(xfS+=}tLVvxnJl#nGN%U`0<;}VkvFj1VsWC={vPGPbL zChDUwSq2kjC`=Z@L{k)Ylc_M#i;6)e!$iv!CevY}_Z21!Vxk=ilO-|HHwu$QG11Qo zlVvf{HHFE-m?+?cSs=G*YD|pkl3|)06OLDyOpl3D6ebg7qQMH2DKgPGg~=qD=sAVS zG?}PCVKPxBT4Q3gKhstjj4eulY?g_>R+wy;iGEU;OqhwTC`_izM2?g45|K$WQFVpM zw3#SDVKQ+hN+nFsf3kHZ8ma`y=9y@s!eskQ^n$`<15LD4VX}oLTBk7CL=$aSm~5ko zzEPNLq>0V~o6mnTmL~Ek0Wz83uZcD)Oh(v5pD9en*hEJaCZlYkiwcu*Hqjl0 z$w-^X`Gb1?&sL1uKgbf3^)^vUg@0DKo5Ez(O*BN|z3CE&P&|Z#BK~S zFGxlYCGfbyFl03YlqkGe;m}_p9{{gB>7S@DS9pNJPKBQ!90>iN!fOZzVZuTf>9fe!E&XpQoTL21ol^e%YR~Egwn-Mf z?c1VCzU`o!HtrD3uO%}<8-R$``|(DJe^IzN+%WyaYfJf3g}W;pukaFu3v*@obqdqQ zBBEmwyUm?P#PBJBe5`^Hb*dv1$WalFQaE4XnI^`%5jF@BeNNbt$D-n84O~_J-jz}% zkWg2~hb<4Le71=_KNQ$rwYt;m%RtYxgb?nw{kamaFmWE+tguJncy;$3Q#e-P+X}lB zuG5O*%VTR*__ij->|5b9>F;JwtGn$f72vvx;4OvcDSU}A3IwBdvlNwE6V79M6mG6? zm@3di3SUwF(-cln{wq!F&SM`bfnt+^{zl>bD!`ovGQmF;j#0R38<~LtD#FJJqXySb zk@E8u_D+@fEyC2;cgf50Jz??ta@$_Fy1lIJr3CF=BdV%!zFIJBqOf ztn*BTX&V#K3kv5e{I-eF_0j$&BCirCt1j_rg$rS;NpwqL+Nebo*-2)IHd+zYS2%5( z#O?h4*k?ubkixY8ifAlhGQIGYN`_kr&`vEPdZ|6N8f+6Wu}9%zg}+reHq7*9rxo^w zN_@#5UitIRGQLdZ9|7#91o9Q5o)Yke%LqCsT&QrG!leplE1akBbcJ0JGW-&Sb5x`J zKw+l*_jkslhcb|-7-y7#Q$=_M7~ZnUBTj1<6N4qGYXv-_0)DCjE~tPvc4_`#gx^*W z_@e@j77kyfn(l{P4+eXx0$y4Hdn(|cE8xmW55_mJ0)Fa2>}Km8WU#L*;6E$i@Z<** zXj%bxuYiYFz%w7fZtNR>fB`LA1zcJI`zqj&lm|1^q5>XY0WZ8C4`htJdp`r%TLB-h zfG<|S_O1_Rpn<6RrmeZ#U4i{>1zb`A->iURQXh;qu>x*i0VheUqXa~5hHWqpH2L8b z0z6p(&#!=AtAL9u;Lj@H;}75f#(q%@k@l7?${pP8!R*9Vz%44^lnS_41)N?152=7h zJc!+F%!3Rzp#q*-0Y6&-&#ZvwSHSrd@bU*RT6*CF3`}q<;0+b*`@m#)JVENcu8y(u(JZDh4y0nX?^`8{6EJ36Z|*hzXkuT_|w|?cKmnXzY~8i z{=4uOv+q=@E8bactLy#&kXEou@u!vR)A*mk|7ZMZ;rbl@zu|A~JY z{56L@uxNC+xXwXzZ`#NL2)gtiusBi3xE}W8~(+j z=W1K?@PEv@c;OBnc7WYv^bP|7BlK<~AegXbeU;aY+3qmXJ{||*}U$Hd* zQJ9Ecwn%#r@TRcq$1h>}2q~5_V ziSj$PdY+@bgKKM^V^?hbx{Gcd?X@bUBqX<+^h9=ILVQAeYw=dOEnE!jXb%-Xrv%4{ zw64LS|0F?tlBgd1U9xjDhhP6Fjv$*;5;IX+w30 zjahvX+WGf;$?Z|*wzr=B24o~8N=A>YsbjOJq^71$OdFrpd;G+S>AeSLh|(RwRmI!$ zD}{;~+4j&5|79d?WhB^Omz_27zl^F*Oq>7MiIysp8<3bGe%ujUS1ii5ck0&m$;nS= zPr#0})U>f_$YiU*gj12P0WC8oru7~(apJf!16pT{XBl@}#MEgcGkRvoR+BxY*{GZx z&$euP6Rk!3NZLD@GIgj1x@W{V`#4+sHfAJp zuiL<^krT3~raqb4Zp!4`EZRFc75Ny}?_OocKc1X5H9H0Wsi`92KyZQRkz*g)<$e(e zPkAg`w*T%^CQr+mdaou>8EL(dzt++_bxdl@N!d^5iX8`n4|*Pd!oI^0A>W~{GM=?p z5hI?#A!C|7OstrOmVD=MaAi-2Y4$Iy_sNuzOpX$4FAAqa`n74`?VM(>Cw?H0+lPaz z$TLK3p1mLt&3!x%l3Nfo?7@<@e0<=Pakz0OWSg~;TA?Bm?|LUq$gSvkFRZy8FV*wc zJbULR%e?la%6V3L0^OrLk?ys3uC&Q1`O7hr&==4?guH*RSIp4Zc*=R;5p5t(># zL0IJCu2t%W_sNpJIZ$p95vHJG`EGk`74IbJi?tk+ypzO%-S#%(!XA75#Yd|&^cT3; zKSIkBBlp<5gw2$}ifuAjF|a}T$qTJo*(?2+OZqXdxIsY_yMf{|U^7TmSgk6`PtB89 z1Fv;)@377~oCRV19LhJk_TtlF-SyMf#f`(eRb?vaJWWL?@&4x)zZCv(ANZDFFxLWe zD=5Kmju(i;%b64y9;Y-K@0 z=;F)>?#y+a>$K;MPVsMa=vh56vj4=zPe&BS6?ecpNFd%2(NL0<1W|ST31?2Sv#}u? z5(0w6@^9@yQQzvUEHlpKb77&X;7PV*1pb+E%qQa4@Thuz-%R+v2p>0mZa?sEU# zYrRIs5sWg5z7W1|?H#J0dx0&v{Y=WbaziU1FBG}TJ&}hF+ecOX<0%s9wyu27gChII z*N5%ZI?dBrF+01fQ>i^qo_~{ayEK&HtIlE#sJ)BfPSHepoTI7;I%Y2p4oK0KVDwbNw?{`@y2+G3GyTsP)rzvah+mJ}Yv_+!MZgJrbeNH(Em^6v zEfil7;==_<7tXmnN~E2z$JAU27TQJF6?kLtS5%7Vmr=4tXi-A4Cf=Ops4mu?uwU0- zYa&*kw0Dc1(L`H^pDYXlQH2^xy1l^f{e98-GIy;Q!4Z z_7?iLojkTb?Gd^@sgtPjm%W*u(Mk0C%ii981Q+he=>X3wf7!R_`r92vugmr)^%pye z-Q+&jQMA7Tw`WJs#w+$@752u7jZZ3 zKj<6Udu+Gt$taDdXSqF8(^s}zI)caP1?`s3fit(=()GNxKE2)2b39R>&`v~ayqTWa zPV~}vd;OtyVvYvyly+i=2LIOW#NXsLY$xJ$-bk;}PNeI=mD_pd=-j63ueKF0TX+Pj zYK?`b=)>BIUoHGj9GY}KPtpqbuAOb?VS&U8%rfQeb^Do}>o9~bc%+Rd*v6CfHuKwP zOSm&HeXJg|h2Qz*(3{We>l}Bk9eT62wr-uf_0Wqil$Q@Ijdb~_Ln*Dse4|>6enGr*zyKBbAFaePU_Gg|I1utu_?H;&WxX7x`!$d+DuNjgJ8O(`_Oqr%#MMfBJ6+RG5 zx+6?xf(#f&fkMT$Fdh}s75=dHmHt$XfV}UiW%X&wqB*BSQXA+*8gZBnnm#F=wDjML?c+lJ7NS>GK2x`~5C_SxGyJBTepQRECJH^8Pts2% ziYd|X3%}3r>qPNxG@qldPZZ6n!S7t+y>P1%#mH)Wygn;Y9IVFE^(PWV?HI_cgUnPj z?$DyFL@_vq-_YwNiuCGeb76^MS#`czznCD}*Wk5->q2&hDH~mMGC_>5!FT8%B#1^e z`567x1o3K3J~DcG!abQMaqiFe)C3V6i+f^Bf=G_#caq}ZSNgVIaQFtbjnJZ<@zg*g ziekaXCwI}YMi*7b`IbB7A73pmkGwT`$GY3kXzOmLumXoZJ3U{#P>Y9Z^E^vyalC

l+T-sVfFbK%j3A)#NPV6 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�bxA6{XCJ{x8#8gofA;q_2s(i2?J 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

>y0iPe$UL5LUb||`p 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 z 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 delta 159463 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 z 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 Yc^T$MqsaD&HM$^k%x^riWsSb;|7ZVhBLDyZ diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index 9f2fdb6afeadeb3cee9b65bb2da84a979bd9b7f8..07ed709869f76b6d2dff5b43c2304658f6b05130 100755 GIT binary patch delta 115076 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%0D8w5AND)D8|IPm@boL<8K1~a`BgszghUx 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

g8(@@Dl;Q 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℘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 From 7ed571d77238b74acecacc070fce39f3842c328a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 11 Sep 2026 19:38:56 +0000 Subject: [PATCH 003/130] Remesh & Bake: keep bake alive on refresh, guard result lifecycle - OnRefresh no longer cancels a running bake. The hub fires it on selection changes, Undo and LOD-count changes, none of which feed this tool: the source snapshot is captured at Run() start. - Result mesh gets HideAndDontSave like the preview, so scene loads do not reap it; the exported copy resets hideFlags before CreateAsset. Clear() is hooked to beforeAssemblyReload so neither object leaks across a domain reload once the tool instance is discarded. - RemeshBaker counts covered texels once after rasterization instead of an Interlocked increment per texel in the parallel projection loop, and fails on an empty atlas before building the BVH. - README: native binaries come from the Build Native Libraries workflow, not "this branch". Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_0136aKuMZBMqbdq7Voh1qJrn --- Editor/RemeshBaker.cs | 4 ++-- Editor/Tools/RemeshBakeTool.cs | 19 ++++++++++++++----- README.md | 4 ++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 19e22cce..52eef0f1 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -38,6 +38,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto bary.x >= -1e-6f && bary.y >= -1e-6f && bary.z >= -1e-6f) owners[y * size + x] = face; } + for (int i = 0; i < count; ++i) if (owners[i] >= 0) ++result.covered; + if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); var bvh = new TriangleBvh(source.positions, source.indices); float distance = source.diagonal * settings.projectionDistance; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, @@ -46,7 +48,6 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto if ((x & 63) == 0) token.ThrowIfCancellationRequested(); int pixel = y * size + x, face = owners[pixel]; if (face < 0) continue; - Interlocked.Increment(ref result.covered); int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; Barycentric(new Vector2((x + 0.5f) / size, (y + 0.5f) / size), target.uv[a], target.uv[b], target.uv[c], out var w); Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; @@ -72,7 +73,6 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto result.metal[pixel] = metal; result.ao[pixel] = ao; result.emission[pixel] = emission; } }); - if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); Dilate(result, owners, settings.padding, token); return result; } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 4553f75a..33ca2588 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -26,9 +26,18 @@ public sealed class RemeshBakeTool : IUvTool string status = "Select a static model root. LODGroups contribute only LOD0."; string resultName; - public void OnActivate(UvToolContext context, UvCanvasView canvas) { if (!source) source = Selection.activeGameObject; } - public void OnDeactivate() { cancellation?.Cancel(); Clear(); } - public void OnRefresh() { cancellation?.Cancel(); } + public void OnActivate(UvToolContext context, UvCanvasView canvas) + { + if (!source) source = Selection.activeGameObject; + // Result/preview carry HideAndDontSave, so they survive scene loads but + // would leak across a domain reload once this instance is discarded. + AssemblyReloadEvents.beforeAssemblyReload -= Clear; + AssemblyReloadEvents.beforeAssemblyReload += Clear; + } + public void OnDeactivate() { AssemblyReloadEvents.beforeAssemblyReload -= Clear; cancellation?.Cancel(); Clear(); } + // Hub context (LODGroup selection, Undo) does not feed this tool: the source + // snapshot is captured at Run() start, so a running bake must not be cancelled here. + public void OnRefresh() { } public void OnDrawToolbarExtra() { } public void OnDrawStatusBar() { GUILayout.Label(status, EditorStyles.miniLabel); } public IEnumerable GetFillModes() => null; @@ -88,7 +97,7 @@ async void Run() status = "Remeshing, simplifying and unwrapping…"; RequestRepaint?.Invoke(); var geometry = await Task.Run(() => RemeshNative.Build(snapshot.positions, snapshot.indices, options, token)); token.ThrowIfCancellationRequested(); - temporary = new Mesh { name = name + "_LOD0", indexFormat = IndexFormat.UInt32 }; + temporary = new Mesh { name = name + "_LOD0", indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; temporary.vertices = geometry.positions; temporary.normals = geometry.normals; temporary.uv = geometry.uv; temporary.triangles = geometry.indices; temporary.RecalculateBounds(); temporary.RecalculateTangents(); @@ -170,7 +179,7 @@ void Save() importer.SaveAndReimport(); } } - mesh = Object.Instantiate(result); mesh.name = clean + "_LOD0"; + mesh = Object.Instantiate(result); mesh.name = clean + "_LOD0"; mesh.hideFlags = HideFlags.None; material = new Material(shader) { name = clean + "_Remesh" }; bool urp = shaderName != "Standard"; material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); diff --git a/README.md b/README.md index ca485688..f044b285 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,8 @@ Diagnostic and benchmarking blocks (Parameter Sweep, Log Filters, UV0 Analysis & Create a new low-poly static model with fresh UV0 and reprojected base color, normal, metallic/smoothness, occlusion and emission maps. Available in the **Remesh & Bake** -tab for opaque Standard and URP/Lit materials. Requires rebuilt native libraries -from this branch. See [workflow, limitations and validation](Documentation~/REMESH_AND_BAKE.md). +tab for opaque Standard and URP/Lit materials. Native binaries are produced by the +**Build Native Libraries** workflow. See [workflow, limitations and validation](Documentation~/REMESH_AND_BAKE.md). ## LOD Generation From a60e3142e0a3a2ac0c7418a7d680b2814424087b Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 11 Sep 2026 19:50:21 +0000 Subject: [PATCH 004/130] RemeshBaker: observe cancellation before empty-atlas check and BVH build The coverage count and TriangleBvh construction ran with no cancellation check between rasterization and the parallel projection loop, so a cancel requested during that window surfaced as the empty-atlas error or waited for the BVH build. Check the token after the count and after the build. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_0136aKuMZBMqbdq7Voh1qJrn --- Editor/RemeshBaker.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 52eef0f1..b551bd6b 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -39,8 +39,10 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto owners[y * size + x] = face; } for (int i = 0; i < count; ++i) if (owners[i] >= 0) ++result.covered; + token.ThrowIfCancellationRequested(); if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); var bvh = new TriangleBvh(source.positions, source.indices); + token.ThrowIfCancellationRequested(); float distance = source.diagonal * settings.projectionDistance; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { From fe826893efda82240c78fc179130dcd1dcd4ab05 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 16:50:19 +0000 Subject: [PATCH 005/130] native: bump meshoptimizer to v1.3 Pin FetchContent to the v1.3 release (9e1f07b1, 2026-09-25) instead of the 2026-09-10 remesh snapshot (ff4a519a). Between the two, upstream sped up the remesher (empty-row skipping, cheaper voxelization, a more selective quadric decider), skips degenerate triangles before sampling, and made generateVertexRemap hash unaligned strides safely. v1.3 also drops the no-op meshopt_RemeshThicken and renumbers meshopt_RemeshShell (1<<1 -> 1<<0) and meshopt_RemeshSolve (1<<2 -> 1<<1). remesh.cpp already maps its own ABI bits (1 = solve, 2 = shell) through the named constants, so meshLabRemeshBuild and the C# wrapper are unchanged. The native test now runs all four flag combinations and requires the two-sided shell of the closed cube to be larger than the solid remesh; passing the raw pre-1.3 values fails it. Checked on Linux: configure fetches 9e1f07b1, the build is clean and ctest passes; RemeshNative.Build driven from .NET against the new .so returns valid geometry for every solve/shell combination. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 14 ++++++++++---- Native~/CMakeLists.txt | 2 +- Native~/src/remesh.cpp | 2 ++ Native~/tests/remesh_test.cpp | 11 +++++++++++ 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e5f69a6..61ce78d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **`LightmapTransferTool.ExportVertexColorsToFbxAs(sourceFbxPath, outputFbxPath, entries, uvChannelOverride)`** — public entry point that writes a new FBX next to (or anywhere relative to) the source without mutating the source importer, scene mesh bindings, or working copies. ### Changed +- **meshoptimizer v1.3** — `Native~/CMakeLists.txt` now pins the v1.3 release (`9e1f07b1`, 2026-09-25) instead of the 2026-09-10 remesh snapshot (`ff4a519a`). v1.3 drops the no-op `meshopt_RemeshThicken` and renumbers `meshopt_RemeshShell` / `meshopt_RemeshSolve`; the remesh bridge maps its own flag bits by name, so the C# ABI (`meshLabRemeshVersion() == 1`) is unchanged, and the native test now fails if the shell flag stops reaching meshoptimizer. The plugin binaries are rebuilt by **Build Native Libraries**. - **Vertex AO tab renamed to Vertex Color Baking.** `VertexAOTool` → `VertexColorBakingTool`, `ToolId` `vertex_ao` → `vertex_color_baking`. Asset GUID preserved so existing references stay intact. AO functionality is unchanged and reachable via the new toolbar at the top of the tab. Note: `UvToolHub.SelectToolById` is fed from persisted state, so a stored deep-link to the old `vertex_ao` id now falls back to the first tool. - **Mesh Lab window menu path** moved from `Tools ▸ Mesh Lab` to `Tools ▸ Mesh Lab ▸ Open Mesh Lab`, making room for `Tools ▸ Mesh Lab ▸ Validators/*`. Existing keyboard shortcuts bound to the old path need rebinding. - **Log prefix** `[LightmapUV]` → `[MeshLab]`, and the `UvtLog` EditorPrefs keys `LightmapUvTool_LogLevel` / `LightmapUvTool_LogCategoryMask` → `UnityMeshLab_*`. Stored log-filter preferences reset once. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index e4ab6c5e..8e1cf13a 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -27,11 +27,14 @@ scene objects and LODGroups are not replaced. ## Geometry implementation -`Native~/src/remesh.cpp` uses meshoptimizer snapshot -`ff4a519a65a555229a202efc7b5409b338ef4b40` (2026-09-10), pinned by full commit SHA. +`Native~/src/remesh.cpp` uses meshoptimizer v1.3 +(`9e1f07b159d3cb777f1c67ed31fc11fd117986f4`, 2026-09-25), pinned by full commit SHA. The sequence is voxel remesh, position weld, simplifyWithUpdate with PreserveFolds and RegularizeLight, crease-aware normal generation, then xatlas full unwrap. -There is no Thicken switch: upstream currently treats it as a no-op. +v1.3 removed the non-functional Thicken flag and renumbered `meshopt_RemeshShell` +and `meshopt_RemeshSolve`. The bridge keeps its own flag bits (1 = fit source +surface, 2 = two-sided shell) and maps them by name, so the C# ABI is unchanged; +the native test pins that mapping. Each job owns its own xatlas instance and result handle, independently of the legacy global repack bridge. C# always destroys the handle, including cancellation @@ -91,7 +94,10 @@ ctest --test-dir build -C Release --output-on-failure The native test runs the complete cube → remesh → simplify → normal → UV pipeline, checks finite data, normalized normals/UVs and valid indices, verifies the target budget under relaxed error, repeated owned-handle cleanup and invalid input/copy -capacity rejection. CI runs it on all three native platforms. +capacity rejection. It also runs every solve/shell flag combination and requires +the two-sided shell of the closed cube to be larger than the solid remesh, so a +flag that stops reaching meshoptimizer fails the build. CI runs it on all three +native platforms. Unity Test Runner: `RemeshBakeTests` covers UV raster barycentrics, separate material channels/HDR emission, source-normal to destination-tangent projection, image diff --git a/Native~/CMakeLists.txt b/Native~/CMakeLists.txt index 185b63d4..755afafa 100644 --- a/Native~/CMakeLists.txt +++ b/Native~/CMakeLists.txt @@ -9,7 +9,7 @@ include(FetchContent) FetchContent_Declare( meshoptimizer GIT_REPOSITORY https://github.com/zeux/meshoptimizer.git - GIT_TAG ff4a519a65a555229a202efc7b5409b338ef4b40 # reviewed remesh snapshot (2026-09-10) + GIT_TAG 9e1f07b159d3cb777f1c67ed31fc11fd117986f4 # v1.3 (2026-09-25) ) set(MESHOPT_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) # meshoptimizer static lib must be PIC when linked into our shared lib (Linux/GCC) diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp index 71fafa48..c28cdae7 100644 --- a/Native~/src/remesh.cpp +++ b/Native~/src/remesh.cpp @@ -27,6 +27,8 @@ EXPORT void meshLabRemeshDestroy(void* handle) { delete static_cast(han // Returns 0 on success; 1 invalid input, 2 output budget, 3 empty result, // 4 unwrap failed, 5 multiple atlases, 6 allocation/internal failure. // Output vertex layout is eight float32 values: position, normal, UV0. +// flags: 1 = meshopt_RemeshSolve, 2 = meshopt_RemeshShell. These bits are this +// bridge's ABI and are mapped by name; meshoptimizer renumbered its enum in v1.3. EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, const uint32_t* indices, uint32_t indexCount, int resolution, uint32_t targetTriangles, float error, float crease, float smoothing, diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp index ab756661..e95beb28 100644 --- a/Native~/tests/remesh_test.cpp +++ b/Native~/tests/remesh_test.cpp @@ -41,5 +41,16 @@ int main() { meshLabRemeshDestroy(h); h=nullptr; std::cout << "cube: " << v << " vertices, " << n/3 << " triangles\n"; } + // Bridge flags: bit 0 = meshopt_RemeshSolve, bit 1 = meshopt_RemeshShell. meshoptimizer + // v1.3 renumbered that enum, so pin the mapping: a closed cube remeshed as a two-sided + // shell keeps its inner surface as well and must come out larger than the solid remesh. + uint32_t tris[4] = {}; + for (uint32_t flags = 0; flags < 4; ++flags) { + check(meshLabRemeshBuild(p,8,t,36,16,100000,0.001f,1,0,256,4,flags,&h,&v,&n)==0 && h, "flag combination"); + tris[flags] = n/3; + meshLabRemeshDestroy(h); h=nullptr; + } + check(tris[2] > tris[0] && tris[3] > tris[1], "shell flag reaches meshopt"); + std::cout << "cube solid/shell: " << tris[1] << " / " << tris[3] << " triangles\n"; meshLabRemeshDestroy(nullptr); } From 049f9307127ca37a53315f018e79f38765694649 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 16:50:30 +0000 Subject: [PATCH 006/130] fix(meshopt): align SimplifySparse/ErrorAbsolute with meshoptimizer.h MeshoptNative mirrors the simplify option enum ("match meshoptimizer.h enum") and meshoptSimplify passes the value straight through, but the two middle flags were swapped: meshoptimizer has had Sparse = 1<<1 and ErrorAbsolute = 1<<2 since v0.21, v1.3 included. A caller asking for absolute error would have enabled sparse mode instead. No code passes either flag today (MeshSimplifier only sets LockBorder), so behaviour is unchanged. The bridge comment listed the same wrong order and is corrected with it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Editor/MeshoptNative.cs | 4 ++-- Native~/xatlas-unity-bridge.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ce78d2..183da372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **`MeshoptNative` simplify flags** — `SimplifySparse` / `SimplifyErrorAbsolute` were swapped relative to `meshoptimizer.h` (`Sparse = 2`, `ErrorAbsolute = 4`). No caller passed either flag, so behaviour is unchanged. - **UV transfer / repack correctness** — Repack normalizes UV0 shell winding at its own API boundary instead of assuming the optional Weld stage ran; source meshes with incomplete (non-empty but short) UV0/UV2 channels are rejected before indexing; cancelled transfers drop their partial UV2 output; post-pack density correction stays inside each packed chart; `RepackUv` forwards its rotate flag to xatlas; the UV2 clamp toggle is independently editable; `Apply UV2` is reachable after a source-only repack; cross-LOD hints are isolated per mesh group (#128, #156, #170–#173, #180–#181, #183). - **Undo and preview handling** — undo/redo restores preview-swapped meshes before rebuilding `MeshEntries` so a preview mesh can't become the cached baseline; Vertex AO no longer takes duplicate preview backups and clears stale results before loading new mesh data; the shell colour hash survives `int.MinValue`; Inverted triangles are rendered in the validation overlay instead of drawing clean or vanishing under the filter (#145, #168, #174, #176–#177). - **LOD parsing and generation** — LOD indices parsed from object names are bounded, and LOD0's transition height is normalized before generating the remaining levels (#142, #179). diff --git a/Editor/MeshoptNative.cs b/Editor/MeshoptNative.cs index 1fe770ea..2ec3f3a4 100644 --- a/Editor/MeshoptNative.cs +++ b/Editor/MeshoptNative.cs @@ -52,8 +52,8 @@ public static extern int meshoptSimplify( // meshopt simplify option flags (match meshoptimizer.h enum) public const uint SimplifyLockBorder = 1; - public const uint SimplifyErrorAbsolute = 2; - public const uint SimplifySparse = 4; + public const uint SimplifySparse = 2; + public const uint SimplifyErrorAbsolute = 4; public const uint SimplifyPrune = 8; } } diff --git a/Native~/xatlas-unity-bridge.cpp b/Native~/xatlas-unity-bridge.cpp index 3bdddd43..19791e0a 100644 --- a/Native~/xatlas-unity-bridge.cpp +++ b/Native~/xatlas-unity-bridge.cpp @@ -301,7 +301,7 @@ EXPORT int meshoptOptimize( // attributeCount: number of scalar attributes (max 16) // targetRatio: fraction of triangles to keep (0.0–1.0) // targetError: maximum allowed simplification error -// options: meshopt simplify flags (LockBorder=1, ErrorAbsolute=2, Sparse=4, Prune=8) +// options: meshopt simplify flags (LockBorder=1, Sparse=2, ErrorAbsolute=4, Prune=8) // outIndices: caller-allocated buffer, indexCount uint32s (only outIndexCount used) // outIndexCount: receives actual output index count // outResultError: receives achieved error (can be NULL) From 43fbc2ff9eb0a36381557fd81129cdf42ee2f8a8 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 16:50:40 +0000 Subject: [PATCH 007/130] fix(remesh): make the Remesh & Bake tab usable from the hub UI - Source root follows the selection. It was read once, on the first activation, so selecting a model as the status text asks left the field empty and Generate & Bake disabled. A LOD child now resolves to its LODGroup (the bake is LOD0-only), selections without a MeshRenderer are ignored, a pick dragged into the field holds until the selection changes, and selections made during a bake are ignored. - Generate & Bake ends the IMGUI event after Run(). Run() clears the result section and adds the Cancel button before the event finishes, so on a first run the status HelpBox asked for a layout entry the Layout pass never registered ("Getting control N's position in a group with only N controls when doing mouseUp"). - Save ends the event after the modal folder panel and asset imports. - Cancel disables itself and says it is waiting for the current phase; the native phase cannot be interrupted, so the click had no feedback. - The result line reads Mesh.GetIndexCount(0) instead of copying Mesh.triangles on every GUI event. - Docs name the real entry point (Tools > Mesh Lab > Open Mesh Lab, Remesh & Bake tab); there is no Tools > Mesh Lab > Remesh & Bake item. Compiled Editor and Tests against Unity reference assemblies; the new EditMode test covers LOD-child resolution and ignored non-mesh picks. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 9 ++++-- Editor/Tools/RemeshBakeTool.cs | 54 +++++++++++++++++++++++++++---- Tests/Editor/RemeshBakeTests.cs | 22 +++++++++++++ 4 files changed, 76 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 183da372..0b46c9f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **Remesh & Bake tab** — Source root now follows the selection (a LOD child resolves to its LODGroup) instead of being read once when the tab first opened, which left Generate & Bake disabled after selecting a model as the status text asks. Generate & Bake and Save end the IMGUI event after they change the sidebar or open the modal folder panel, so the first run no longer logs a `Getting control N's position` layout error. Cancel reports that it is waiting for the current phase, and the result line reads the index count instead of copying `Mesh.triangles` on every GUI event. - **`MeshoptNative` simplify flags** — `SimplifySparse` / `SimplifyErrorAbsolute` were swapped relative to `meshoptimizer.h` (`Sparse = 2`, `ErrorAbsolute = 4`). No caller passed either flag, so behaviour is unchanged. - **UV transfer / repack correctness** — Repack normalizes UV0 shell winding at its own API boundary instead of assuming the optional Weld stage ran; source meshes with incomplete (non-empty but short) UV0/UV2 channels are rejected before indexing; cancelled transfers drop their partial UV2 output; post-pack density correction stays inside each packed chart; `RepackUv` forwards its rotate flag to xatlas; the UV2 clamp toggle is independently editable; `Apply UV2` is reachable after a source-only repack; cross-LOD hints are isolated per mesh group (#128, #156, #170–#173, #180–#181, #183). - **Undo and preview handling** — undo/redo restores preview-swapped meshes before rebuilding `MeshEntries` so a preview mesh can't become the cached baseline; Vertex AO no longer takes duplicate preview backups and clears stale results before loading new mesh data; the shell colour hash survives `int.MinValue`; Inverted triangles are rendered in the validation overlay instead of drawing clean or vanishing under the filter (#145, #168, #174, #176–#177). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 8e1cf13a..cf87619f 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -1,12 +1,15 @@ # Remesh & Bake (experimental) Build a new static low-poly mesh, new UV0 atlas, and reproject source materials in -**Tools → Mesh Lab → Remesh & Bake**. The original meshes, materials, importers, -scene objects and LODGroups are not replaced. +the **Remesh & Bake** tab of **Tools → Mesh Lab → Open Mesh Lab**. The original +meshes, materials, importers, scene objects and LODGroups are not replaced. ## Workflow -1. Select a static model root. Active/enabled MeshRenderers under it are combined +1. Select a static model root. **Source root** follows the selection: a LOD child + resolves to its LODGroup, and selections without a MeshRenderer (lights, + cameras) are ignored. An object dragged into the field holds until the + selection changes. Active/enabled MeshRenderers under it are combined in root-local coordinates; LODGroups contribute LOD0 only, collision nodes are excluded. Skinned renderers are rejected. Every contributing submesh needs UV0 and an opaque Standard (metallic) or URP/Lit material. diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 33ca2588..08ecbf44 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -16,7 +16,7 @@ public sealed class RemeshBakeTool : IUvTool public string ToolId => "remesh_bake"; public int ToolOrder => 35; public Action RequestRepaint { private get; set; } - GameObject source; + GameObject source, lastSelection; RemeshSettings settings = new RemeshSettings(); CancellationTokenSource cancellation; static int running; @@ -25,16 +25,41 @@ public sealed class RemeshBakeTool : IUvTool Texture2D preview; string status = "Select a static model root. LODGroups contribute only LOD0."; string resultName; + internal GameObject Source => source; public void OnActivate(UvToolContext context, UvCanvasView canvas) { - if (!source) source = Selection.activeGameObject; + FollowSelection(); + Selection.selectionChanged -= FollowSelection; + Selection.selectionChanged += FollowSelection; // Result/preview carry HideAndDontSave, so they survive scene loads but // would leak across a domain reload once this instance is discarded. AssemblyReloadEvents.beforeAssemblyReload -= Clear; AssemblyReloadEvents.beforeAssemblyReload += Clear; } - public void OnDeactivate() { AssemblyReloadEvents.beforeAssemblyReload -= Clear; cancellation?.Cancel(); Clear(); } + public void OnDeactivate() + { + Selection.selectionChanged -= FollowSelection; + AssemblyReloadEvents.beforeAssemblyReload -= Clear; cancellation?.Cancel(); Clear(); + } + + // Source root follows the hierarchy selection, as the status text asks. A pick + // made in the field holds until the selection changes, also across tab + // switches. A LOD child resolves to its LODGroup so the bake keeps the + // LOD0-only contract. Selections without MeshRenderers (lights, cameras) and + // selections made during a bake leave the source as is. + internal void FollowSelection() + { + var selected = Selection.activeGameObject; + if (selected == lastSelection) return; + lastSelection = selected; + if (!selected || Volatile.Read(ref running) != 0) return; + var group = selected.GetComponentInParent(); + var root = group ? group.gameObject : selected; + if (!root.GetComponentInChildren()) return; + source = root; + RequestRepaint?.Invoke(); + } // Hub context (LODGroup selection, Undo) does not feed this tool: the source // snapshot is captured at Run() start, so a running bake must not be cancelled here. public void OnRefresh() { } @@ -62,18 +87,33 @@ public void OnDrawSidebar() settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); EditorGUILayout.HelpBox("Experimental voxel remesh. Thin details and small gaps may disappear. Supports opaque Standard and URP/Lit metallic materials.", MessageType.Info); using (new EditorGUI.DisabledScope(!source || UvProgress.IsActive)) - if (GUILayout.Button("Generate & Bake", GUILayout.Height(28))) Run(); + if (GUILayout.Button("Generate & Bake", GUILayout.Height(28))) { + Run(); + // Run() has already swapped the result section for the Cancel + // button; end this event before IMGUI asks for controls the + // layout pass never registered. + GUIUtility.ExitGUI(); + } } - if (cancellation != null && GUILayout.Button("Cancel (after current native phase)")) cancellation.Cancel(); + if (cancellation != null) + using (new EditorGUI.DisabledScope(cancellation.IsCancellationRequested)) + if (GUILayout.Button("Cancel (after current native phase)")) { + cancellation.Cancel(); status = "Cancelling after the current phase…"; + } EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); if (result && maps != null) { - EditorGUILayout.LabelField($"{result.vertexCount:N0} vertices · {result.triangles.Length / 3:N0} triangles"); + EditorGUILayout.LabelField($"{result.vertexCount:N0} vertices · {result.GetIndexCount(0) / 3:N0} triangles"); if (preview) { Rect rect = GUILayoutUtility.GetAspectRect(1); EditorGUI.DrawPreviewTexture(rect, preview); } using (new EditorGUI.DisabledScope(cancellation != null)) - if (GUILayout.Button("Save mesh, maps & prefab…")) Save(); + if (GUILayout.Button("Save mesh, maps & prefab…")) { + Save(); + // The folder panel is modal and the export imports assets; both + // leave this event's layout state stale. + GUIUtility.ExitGUI(); + } } } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index e3369535..0c03ddef 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using NUnit.Framework; +using UnityEditor; using UnityEngine; namespace SashaRX.UnityMeshLab.Tests @@ -78,6 +79,27 @@ public void CoincidentSurfaceBakesWithoutMissesAndHonorsCancellation() } } [Test] + public void SourceRootFollowsSelectionAndResolvesLodChildren() + { + var root=new GameObject("RemeshSelectionRoot"); + var child=GameObject.CreatePrimitive(PrimitiveType.Cube); + child.transform.SetParent(root.transform); + root.AddComponent().SetLODs(new[] { new LOD(0.5f,new Renderer[] { child.GetComponent() }) }); + var light=new GameObject("RemeshSelectionLight",typeof(Light)); + var previous=Selection.objects; + try { + var tool=new RemeshBakeTool(); + Selection.activeGameObject=child; tool.FollowSelection(); + Assert.AreSame(root,tool.Source); + Selection.activeGameObject=light; tool.FollowSelection(); + Assert.AreSame(root,tool.Source); + } + finally { + Selection.objects=previous; + UnityEngine.Object.DestroyImmediate(root); UnityEngine.Object.DestroyImmediate(light); + } + } + [Test] public void ImageSamplingUsesLinearInterpolationAndWrapModes() { var image=new RemeshSource.Image { width=2,height=1,pixels=new[] { new Color32(0,0,0,255),new Color32(255,255,255,255) }, From 5655f941ff0965f374f94b51b073383a08716e16 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 25 Sep 2026 16:52:21 +0000 Subject: [PATCH 008/130] Build native libraries (auto) [skip ci] --- Plugins/macOS/libxatlas-unity.dylib | Bin 1031624 -> 1031720 bytes Plugins/x86_64/libxatlas-unity.so | Bin 616608 -> 616760 bytes Plugins/x86_64/xatlas-unity.dll | Bin 407040 -> 406528 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/macOS/libxatlas-unity.dylib b/Plugins/macOS/libxatlas-unity.dylib index e4538469b332538fc518c41cec698354ad763e5b..7bd5d35100f13aada4216cf48ce4fb0fa3fb0dbd 100644 GIT binary patch delta 119175 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 delta 121951 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

@WS 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

(AZ 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

;c9*j^{O$~7zZ>+ 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 GobbQ7bS|L) delta 35643 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 From 854203c3795baaf2e1fcfbc62d274eb643a803c3 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Sat, 26 Sep 2026 03:11:43 +0200 Subject: [PATCH 009/130] fix(remesh): sanitize simplified mesh before xatlas --- Native~/src/remesh.cpp | 108 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 5 deletions(-) diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp index c28cdae7..cbc837af 100644 --- a/Native~/src/remesh.cpp +++ b/Native~/src/remesh.cpp @@ -2,6 +2,7 @@ #include "meshoptimizer.h" #include "xatlas.h" #include +#include #include #include #include @@ -25,7 +26,8 @@ EXPORT int meshLabRemeshVersion() { return 1; } EXPORT void meshLabRemeshDestroy(void* handle) { delete static_cast(handle); } // Returns 0 on success; 1 invalid input, 2 output budget, 3 empty result, -// 4 unwrap failed, 5 multiple atlases, 6 allocation/internal failure. +// 4 xatlas rejected the mesh, 5 multiple atlases, 6 allocation/internal failure, +// 7 xatlas produced no usable atlas, 8 xatlas returned an invalid vertex mapping. // Output vertex layout is eight float32 values: position, normal, UV0. // flags: 1 = meshopt_RemeshSolve, 2 = meshopt_RemeshShell. These bits are this // bridge's ABI and are mapped by name; meshoptimizer renumbered its enum in v1.3. @@ -75,8 +77,80 @@ EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, meshopt_SimplifyPreserveFolds | meshopt_SimplifyRegularizeLight, nullptr); if (!simplified) return 3; idx.resize(simplified); + + // simplifyWithUpdate is allowed to collapse/move vertices. On real meshes this can + // leave duplicate-index, zero-edge or near-zero-area triangles. xatlas keeps such + // faces as "invalid geometry" vertices with atlasIndex == -1; treating that as a + // generic unwrap failure makes one collapsed triangle abort the whole remesh. + // Filter them before normal generation/unwrap using the same relative area scale + // that xatlas sees after the normalization below. + float remeshLo[3] = {0, 0, 0}, remeshHi[3] = {0, 0, 0}; + bool haveRemeshBounds = false; + for (size_t i = 0; i < idx.size(); ++i) { + const unsigned int v = idx[i]; + if (v >= unique) return 6; + const float* p = &pos[size_t(v) * 3]; + if (!std::isfinite(p[0]) || !std::isfinite(p[1]) || !std::isfinite(p[2])) return 6; + if (!haveRemeshBounds) { + for (int k = 0; k < 3; ++k) remeshLo[k] = remeshHi[k] = p[k]; + haveRemeshBounds = true; + } else { + for (int k = 0; k < 3; ++k) { + remeshLo[k] = std::min(remeshLo[k], p[k]); + remeshHi[k] = std::max(remeshHi[k], p[k]); + } + } + } + if (!haveRemeshBounds) return 3; + const double remeshExtent = std::max(double(remeshHi[0] - remeshLo[0]), + std::max(double(remeshHi[1] - remeshLo[1]), double(remeshHi[2] - remeshLo[2]))); + if (!std::isfinite(remeshExtent) || remeshExtent <= 0.0) return 3; + const double minTriangleArea = remeshExtent * remeshExtent * double(FLT_EPSILON); + + std::vector cleaned; + cleaned.reserve(idx.size()); + for (size_t i = 0; i < idx.size(); i += 3) { + const unsigned int ia = idx[i + 0], ib = idx[i + 1], ic = idx[i + 2]; + if (ia == ib || ib == ic || ic == ia) continue; + const float* a = &pos[size_t(ia) * 3]; + const float* b = &pos[size_t(ib) * 3]; + const float* c = &pos[size_t(ic) * 3]; + const double abx = double(b[0]) - a[0], aby = double(b[1]) - a[1], abz = double(b[2]) - a[2]; + const double acx = double(c[0]) - a[0], acy = double(c[1]) - a[1], acz = double(c[2]) - a[2]; + const double cx = aby * acz - abz * acy; + const double cy = abz * acx - abx * acz; + const double cz = abx * acy - aby * acx; + const double area = 0.5 * std::sqrt(cx * cx + cy * cy + cz * cz); + if (!std::isfinite(area)) return 6; + if (area <= minTriangleArea) continue; + cleaned.push_back(ia); cleaned.push_back(ib); cleaned.push_back(ic); + } + if (cleaned.empty()) return 3; + idx.swap(cleaned); + simplified = idx.size(); + + // Drop vertices no surviving triangle references. Besides shrinking the xatlas + // input this guarantees every output xref points at geometry that can own UVs. + std::vector compactRemap(unique, ~0u); + std::vector compactPos; + compactPos.reserve(std::min(unique, simplified) * size_t(3)); + for (size_t i = 0; i < idx.size(); ++i) { + const unsigned int old = idx[i]; + unsigned int mapped = compactRemap[old]; + if (mapped == ~0u) { + mapped = unsigned(compactPos.size() / 3); + compactRemap[old] = mapped; + const float* p = &pos[size_t(old) * 3]; + compactPos.push_back(p[0]); compactPos.push_back(p[1]); compactPos.push_back(p[2]); + } + idx[i] = mapped; + } + pos.swap(compactPos); + unique = pos.size() / 3; + std::vector normals(simplified * 3); meshopt_generateNormals(normals.data(), idx.data(), idx.size(), pos.data(), unique, 12, crease, smoothing); + for (float n : normals) if (!std::isfinite(n)) return 6; std::vector split(simplified); for (size_t i = 0; i < simplified; ++i) { std::memcpy(split[i].p, &pos[size_t(idx[i]) * 3], 12); @@ -90,9 +164,33 @@ EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, meshopt_remapIndexBuffer(idx.data(), nullptr, simplified, remap.data()); std::unique_ptr atlas(xatlas::Create()); if (!atlas) return 6; + + // xatlas uses absolute float epsilons for colocal and zero-area checks. Feed it a + // uniformly normalized copy so those tests are scale-relative; the real output + // positions remain in verts and are restored through xref after packing. + std::vector atlasVerts = verts; + float atlasLo[3] = {atlasVerts[0].p[0], atlasVerts[0].p[1], atlasVerts[0].p[2]}; + float atlasHi[3] = {atlasLo[0], atlasLo[1], atlasLo[2]}; + for (const Vertex& v : atlasVerts) + for (int k = 0; k < 3; ++k) { + atlasLo[k] = std::min(atlasLo[k], v.p[k]); + atlasHi[k] = std::max(atlasHi[k], v.p[k]); + } + const float atlasExtent = std::max(atlasHi[0] - atlasLo[0], + std::max(atlasHi[1] - atlasLo[1], atlasHi[2] - atlasLo[2])); + if (!std::isfinite(atlasExtent) || atlasExtent <= 0) return 3; + const float atlasCenter[3] = { + (atlasLo[0] + atlasHi[0]) * 0.5f, + (atlasLo[1] + atlasHi[1]) * 0.5f, + (atlasLo[2] + atlasHi[2]) * 0.5f + }; + for (Vertex& v : atlasVerts) + for (int k = 0; k < 3; ++k) + v.p[k] = (v.p[k] - atlasCenter[k]) / atlasExtent; + xatlas::MeshDecl decl; - decl.vertexPositionData = verts.data(); decl.vertexPositionStride = sizeof(Vertex); - decl.vertexNormalData = verts[0].n; decl.vertexNormalStride = sizeof(Vertex); + decl.vertexPositionData = atlasVerts.data(); decl.vertexPositionStride = sizeof(Vertex); + decl.vertexNormalData = atlasVerts[0].n; decl.vertexNormalStride = sizeof(Vertex); decl.vertexCount = uint32_t(unique); decl.indexData = idx.data(); decl.indexCount = uint32_t(idx.size()); decl.indexFormat = xatlas::IndexFormat::UInt32; @@ -101,14 +199,14 @@ EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, xatlas::PackOptions pack; pack.resolution = textureSize; pack.padding = padding; pack.bilinear = true; xatlas::Generate(atlas.get(), charts, pack); - if (!atlas->meshCount || !atlas->width || !atlas->height) return 4; + if (!atlas->meshCount || !atlas->width || !atlas->height || !atlas->atlasCount) return 7; if (atlas->atlasCount != 1) return 5; const xatlas::Mesh& mesh = atlas->meshes[0]; auto result = std::make_unique(); result->vertices.resize(mesh.vertexCount); for (uint32_t i = 0; i < mesh.vertexCount; ++i) { const auto& v = mesh.vertexArray[i]; - if (v.atlasIndex != 0 || v.xref >= verts.size()) return 4; + if (v.atlasIndex != 0 || v.xref >= verts.size()) return 8; result->vertices[i] = verts[v.xref]; result->vertices[i].uv[0] = v.uv[0] / atlas->width; result->vertices[i].uv[1] = v.uv[1] / atlas->height; From 494bedb3106d21b6beb7c5f0263131dbf7474be7 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Sat, 26 Sep 2026 03:11:53 +0200 Subject: [PATCH 010/130] fix(remesh): report xatlas failure stage --- Editor/RemeshNative.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index 9b3c039c..01a20b60 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -75,8 +75,10 @@ static string Error(int code) case 1: return "invalid geometry or settings"; case 2: return "intermediate mesh exceeds five million triangles; reduce voxel resolution"; case 3: return "empty output; increase voxel resolution or reduce simplification"; - case 4: return "UV unwrap failed"; + case 4: return "UV unwrap rejected the remeshed geometry"; case 5: return "UV unwrap needs multiple atlases; reduce padding or increase texture resolution"; + case 7: return "UV unwrap produced no usable atlas"; + case 8: return "UV unwrap returned invalid or unmapped vertices"; default: return "native allocation or processing error"; } } From 1db8a527f3c088779b001158e80be9194666c6ab Mon Sep 17 00:00:00 2001 From: SashaRX Date: Sat, 26 Sep 2026 03:12:22 +0200 Subject: [PATCH 011/130] test(remesh): cover scale-independent xatlas unwrap --- Native~/tests/remesh_test.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp index e95beb28..176fd050 100644 --- a/Native~/tests/remesh_test.cpp +++ b/Native~/tests/remesh_test.cpp @@ -41,6 +41,24 @@ int main() { meshLabRemeshDestroy(h); h=nullptr; std::cout << "cube: " << v << " vertices, " << n/3 << " triangles\n"; } + // xatlas uses absolute float epsilons internally. Before the bridge normalized + // unwrap input, a physically small but otherwise valid mesh had every face marked + // zero-area and came back as the generic "UV unwrap failed". + float tiny[24]; + for (size_t i = 0; i < 24; ++i) tiny[i] = p[i] * 1e-5f; + check(meshLabRemeshBuild(tiny,8,t,36,16,100,0.01f,1,0,256,4,1,&h,&v,&n)==0 && h, "tiny cube unwrap"); + check(v>0 && n>0 && n%3==0, "tiny cube counts"); + { + std::vector vertices(v*8); + std::vector indices(n); + check(meshLabRemeshCopy(h,vertices.data(),v,indices.data(),n)==0, "tiny cube copy"); + for (uint32_t i=0;i=0 && vertices[i*8+k]<=1, "tiny cube normalized UV"); + } + } + meshLabRemeshDestroy(h); h=nullptr; + // Bridge flags: bit 0 = meshopt_RemeshSolve, bit 1 = meshopt_RemeshShell. meshoptimizer // v1.3 renumbered that enum, so pin the mapping: a closed cube remeshed as a two-sided // shell keeps its inner surface as well and must come out larger than the solid remesh. From 9f5afdbca7162e3f452172bbfa3064d7d3615443 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Sep 2026 01:12:53 +0000 Subject: [PATCH 012/130] Build native libraries (auto) [skip ci] --- Plugins/macOS/libxatlas-unity.dylib | Bin 1031720 -> 1032200 bytes Plugins/x86_64/libxatlas-unity.so | Bin 616760 -> 625200 bytes Plugins/x86_64/xatlas-unity.dll | Bin 406528 -> 415232 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/macOS/libxatlas-unity.dylib b/Plugins/macOS/libxatlas-unity.dylib index 7bd5d35100f13aada4216cf48ce4fb0fa3fb0dbd..84e1f00fde33f06275bb0d753d33430d6dfacecc 100644 GIT binary patch delta 104226 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 z%0A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 F{SQ~MK$idj diff --git a/Plugins/x86_64/libxatlas-unity.so b/Plugins/x86_64/libxatlas-unity.so index 7924d4b5330c0d2e3ec3743d8fcc9a3f10840069..217cbcfcb8954ba866d18120340cbb1930a869f1 100755 GIT binary patch delta 141870 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 diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index 9a9d28bb0ccb33cd16a405963f446d4719c5f1a7..68ed727dc65b3995100449a60f9c6d72607d5c60 100755 GIT binary patch delta 82167 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≥PSxu%z^aPm&5vgIQAuG{KEYBx=oLv@{ocX#kH= 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 Date: Sat, 26 Sep 2026 01:13:18 +0000 Subject: [PATCH 013/130] Build native libraries (auto) [skip ci] --- Plugins/x86_64/xatlas-unity.dll | Bin 415232 -> 415232 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index 68ed727dc65b3995100449a60f9c6d72607d5c60..e0c22feb4715b9a4d6b78ae723d38c2009d44ec2 100755 GIT binary patch delta 43 scmZozBiXP8X1J0ln~0cmC+X4%fj$Z9-=kz>2*RMyi60O3grhX4Qo From ad25ae6f1eacce97f6530983ec675a9990bdbb9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Sep 2026 01:57:15 +0000 Subject: [PATCH 014/130] Build native libraries (auto) [skip ci] --- Plugins/x86_64/xatlas-unity.dll | Bin 415232 -> 415232 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index e0c22feb4715b9a4d6b78ae723d38c2009d44ec2..e72c114393cff2761aebbf8bddbfc1afa21109b9 100755 GIT binary patch delta 45 ucmZozBiXP=Tg2r~gOGZ3?EXJTYEngW#DZZ?(m)ByklPz$60 delta 45 ucmZozBiXP=Tg2r~gOGZ3?EXJTYEngW#DZZ?(m)BynXH45|q From 1e8a57729d92e2b2d433f70444f3de566d37b579 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 26 Sep 2026 02:26:13 +0000 Subject: [PATCH 015/130] fix(remesh): capture Read/Write-disabled meshes and non-standard materials Reported from Unity 6: - Capture read UV0 from an Object.Instantiate clone. A clone of a Read/Write-disabled import has no CPU data ("Not allowed to access uv on mesh '...(Clone)'"), which then surfaced as "needs source UV0". Copy from the imported asset with UvCanvasView.MakeReadableCopy, which the transfer tools already use, and check topology on the source. - Any shader other than Standard or URP/Lit aborted the whole bake. Such materials now bake base colour, tangent-space normal, occlusion, emission and scalar metallic/smoothness from the common property names, and transparency, detail/parallax, specular workflow and non-2D textures downgrade to warnings. Warnings are logged and counted in the status line. - Save failed with "Could not create result folder" when the folder panel created a directory the AssetDatabase had not imported yet. Refresh first and report a folder that is still not imported. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Editor/RemeshSource.cs | 88 ++++++++++++++++++++++++++++------ Editor/Tools/RemeshBakeTool.cs | 12 ++++- 2 files changed, 83 insertions(+), 17 deletions(-) diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index e65df70c..260d19ae 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -15,6 +15,7 @@ internal sealed class RemeshSource public int[] indices, faceMaterials; public Surface[] materials; public float diagonal; + public string[] warnings = Array.Empty(); internal sealed class Image { @@ -76,12 +77,18 @@ public static RemeshSource Capture(GameObject root) var tangents = new List(); var uv = new List(); var indices = new List(); var faces = new List(); var materials = new List(); var materialIds = new Dictionary(); + string[] warnings; using (var reader = new Reader()) { foreach (var renderer in root.GetComponentsInChildren()) { if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; var filter = renderer.GetComponent(); if (!filter || !filter.sharedMesh) continue; - var mesh = Object.Instantiate(filter.sharedMesh); + var sourceMesh = filter.sharedMesh; + for (int sub = 0; sub < sourceMesh.subMeshCount; ++sub) + if (sourceMesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); + // An Instantiate clone of a Read/Write-disabled import carries no CPU data, + // but editor code can still read the imported asset; copy from that. + var mesh = UvCanvasView.MakeReadableCopy(sourceMesh); try { if (mesh.uv.Length != mesh.vertexCount) throw new InvalidOperationException(renderer.name + " needs source UV0 for material transfer."); @@ -105,7 +112,6 @@ public static RemeshSource Capture(GameObject root) uv.AddRange(mesh.uv); var shared = renderer.sharedMaterials; for (int sub = 0; sub < mesh.subMeshCount; ++sub) { - if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException("Only triangle meshes are supported."); if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); if (!materialIds.TryGetValue(shared[sub], out int material)) { material = materials.Count; @@ -122,6 +128,7 @@ public static RemeshSource Capture(GameObject root) } finally { Object.DestroyImmediate(mesh); } } + warnings = reader.warnings.ToArray(); } if (indices.Count == 0) throw new InvalidOperationException("No static source triangles found."); var bounds = new Bounds(positions[0], Vector3.zero); @@ -129,7 +136,7 @@ public static RemeshSource Capture(GameObject root) if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), uv = uv.ToArray(), indices = indices.ToArray(), faceMaterials = faces.ToArray(), materials = materials.ToArray(), - diagonal = bounds.size.magnitude }; + diagonal = bounds.size.magnitude, warnings = warnings }; } sealed class Reader : IDisposable @@ -144,32 +151,80 @@ public Reader() blit = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; } public void Dispose() { Object.DestroyImmediate(blit); } + public readonly List warnings = new List(); public Surface Capture(Material m) { - bool urp = m.shader.name == "Universal Render Pipeline/Lit"; - if (!urp && m.shader.name != "Standard") throw new InvalidOperationException(m.name + ": supported shaders are Standard (metallic) and URP/Lit."); - if ((urp && m.GetFloat("_Surface") != 0) || (!urp && m.GetFloat("_Mode") != 0) || - m.IsKeywordEnabled("_ALPHATEST_ON") || m.IsKeywordEnabled("_DETAIL_MULX2") || - m.IsKeywordEnabled("_DETAIL_SCALED") || m.IsKeywordEnabled("_PARALLAXMAP") || - (urp && m.HasProperty("_WorkflowMode") && m.GetFloat("_WorkflowMode") == 0)) - throw new InvalidOperationException(m.name + ": use an opaque metallic material without alpha clipping, detail or parallax layers."); + string shaderName = m.shader ? m.shader.name : ""; + bool urp = shaderName == "Universal Render Pipeline/Lit"; + if (!urp && shaderName != "Standard") return CaptureGeneric(m, shaderName); + if ((urp && m.GetFloat("_Surface") != 0) || (!urp && m.GetFloat("_Mode") != 0) || m.IsKeywordEnabled("_ALPHATEST_ON")) + warnings.Add(m.name + ": transparency/alpha clipping is ignored; the result is opaque."); + if (m.IsKeywordEnabled("_DETAIL_MULX2") || m.IsKeywordEnabled("_DETAIL_SCALED") || m.IsKeywordEnabled("_PARALLAXMAP")) + warnings.Add(m.name + ": detail and parallax layers are not baked."); + bool specular = urp && m.HasProperty("_WorkflowMode") && m.GetFloat("_WorkflowMode") == 0; + if (specular) warnings.Add(m.name + ": specular workflow is baked as non-metallic."); string color = urp ? "_BaseMap" : "_MainTex"; - bool metal = m.IsKeywordEnabled(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + bool metal = !specular && m.IsKeywordEnabled(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); var surface = new Surface { color = Read(m, color, true), normal = Read(m, "_BumpMap", false, true, m.IsKeywordEnabled("_NORMALMAP")), metal = Read(m, "_MetallicGlossMap", false, false, metal), ao = Read(m, "_OcclusionMap", false), emission = Read(m, "_EmissionMap", true, false, m.IsKeywordEnabled("_EMISSION"), true), tint = m.GetColor(urp ? "_BaseColor" : "_Color").linear, emissionTint = m.IsKeywordEnabled("_EMISSION") ? m.GetColor("_EmissionColor").linear : Color.black, - metallic = m.GetFloat("_Metallic"), smoothness = m.GetFloat(urp ? "_Smoothness" : (metal || m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") ? "_GlossMapScale" : "_Glossiness")), + metallic = specular ? 0 : m.GetFloat("_Metallic"), + smoothness = m.GetFloat(urp ? "_Smoothness" : (metal || m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") ? "_GlossMapScale" : "_Glossiness")), normalScale = m.GetFloat("_BumpScale"), aoStrength = m.GetFloat("_OcclusionStrength"), smoothnessFromAlbedo = m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") }; - // Standard and URP/Lit sample these maps with the base UV transform. + ShareBaseTransform(surface); + return surface; + } + + // Any other shader: bake what the common property names expose (base colour, + // tangent-space normal, scalar metallic/smoothness, occlusion, emission) and + // say so, instead of refusing the whole model. + Surface CaptureGeneric(Material m, string shaderName) + { + warnings.Add(m.name + ": shader '" + shaderName + "' is not Standard or URP/Lit; baking base colour, normal, occlusion and emission from common property names."); + string color = First(m, "_BaseMap", "_MainTex", "_BaseColorMap", "_AlbedoMap", "_Albedo"); + string normal = First(m, "_BumpMap", "_NormalMap"); + bool emissive = m.HasProperty("_EmissionColor") && (m.IsKeywordEnabled("_EMISSION") || m.HasProperty("_EmissionMap") && m.GetTexture("_EmissionMap")); + var surface = new Surface { + color = color != null ? Read(m, color, true) : new Map(), + normal = normal != null ? Read(m, normal, false, true) : new Map(), + metal = new Map(), ao = Read(m, "_OcclusionMap", false), + emission = emissive ? Read(m, "_EmissionMap", true, false, true, true) : new Map(), + tint = ColorOr(m, Color.white, "_BaseColor", "_Color").linear, + emissionTint = emissive ? m.GetColor("_EmissionColor").linear : Color.black, + metallic = FloatOr(m, 0, "_Metallic"), smoothness = FloatOr(m, 0.5f, "_Smoothness", "_Glossiness"), + normalScale = FloatOr(m, 1, "_BumpScale", "_NormalScale"), aoStrength = FloatOr(m, 1, "_OcclusionStrength") + }; + ShareBaseTransform(surface); + return surface; + } + + // Standard and URP/Lit sample these maps with the base UV transform. + static void ShareBaseTransform(Surface surface) + { foreach (var map in new[] { surface.normal, surface.metal, surface.ao, surface.emission }) { map.scale = surface.color.scale; map.offset = surface.color.offset; } - return surface; + } + static string First(Material m, params string[] names) + { + foreach (var name in names) if (m.HasProperty(name) && m.GetTexture(name)) return name; + foreach (var name in names) if (m.HasProperty(name)) return name; + return null; + } + static Color ColorOr(Material m, Color fallback, params string[] names) + { + foreach (var name in names) if (m.HasProperty(name)) return m.GetColor(name); + return fallback; + } + static float FloatOr(Material m, float fallback, params string[] names) + { + foreach (var name in names) if (m.HasProperty(name)) return m.GetFloat(name); + return fallback; } Map Read(Material material, string property, bool color, bool normal = false, bool enabled = true, bool hdr = false) { @@ -177,7 +232,10 @@ Map Read(Material material, string property, bool color, bool normal = false, bo var texture = enabled && material.HasProperty(property) ? material.GetTexture(property) : null; if (material.HasProperty(property)) { map.scale = material.GetTextureScale(property); map.offset = material.GetTextureOffset(property); } if (!texture) return map; - if (!(texture is Texture2D)) throw new InvalidOperationException("Only 2D material textures are supported."); + if (!(texture is Texture2D)) { + warnings.Add(material.name + "." + property + ": only 2D textures are baked; '" + texture.name + "' is skipped."); + return map; + } map.scale = material.GetTextureScale(property); map.offset = material.GetTextureOffset(property); var key = (texture, color, normal, hdr); if (!cache.TryGetValue(key, out var image)) { diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 08ecbf44..9f9cc157 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -134,6 +134,7 @@ async void Run() status = "Reading source geometry and textures…"; RequestRepaint?.Invoke(); await Task.Yield(); token.ThrowIfCancellationRequested(); var snapshot = RemeshSource.Capture(root); + foreach (var warning in snapshot.warnings) UvtLog.Warn("[Remesh] " + warning); status = "Remeshing, simplifying and unwrapping…"; RequestRepaint?.Invoke(); var geometry = await Task.Run(() => RemeshNative.Build(snapshot.positions, snapshot.indices, options, token)); token.ThrowIfCancellationRequested(); @@ -149,7 +150,8 @@ async void Run() preview.SetPixels32(baked.color); preview.Apply(); result = temporary; temporary = null; maps = baked; resultName = name; status = $"{snapshot.indices.Length / 3:N0} → {geometry.indices.Length / 3:N0} triangles. " + - (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake."); + (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + + (snapshot.warnings.Length > 0 ? $" {snapshot.warnings.Length} material warning(s), see Console." : ""); UvtLog.Info("[Remesh] " + status); } catch (OperationCanceledException) { status = "Cancelled. Source assets were preserved."; } @@ -179,6 +181,12 @@ void Save() status = "Choose a folder inside Assets."; return; } string relative = "Assets" + parent.Substring(assets.Length); + // The folder panel can create a directory the AssetDatabase has not imported + // yet; GenerateUniqueAssetPath/CreateFolder then fail on the unknown parent. + if (!AssetDatabase.IsValidFolder(relative)) AssetDatabase.Refresh(); + if (!AssetDatabase.IsValidFolder(relative)) { + status = relative + " is not an imported asset folder. Refresh the Project window and save again."; return; + } string clean = resultName; foreach (char c in Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); clean = clean.Replace('/', '_').Replace('\\', '_'); @@ -195,7 +203,7 @@ void Save() var shader = Shader.Find(shaderName); if (!shader) throw new InvalidOperationException("Result shader is unavailable: " + shaderName); string guid = AssetDatabase.CreateFolder(relative, Path.GetFileName(folder)); - if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create result folder."); + if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create " + folder + "."); createdFolder = true; folder = AssetDatabase.GUIDToAssetPath(guid); string[] names = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; From f1a861cb9f7f8bdbf25f5db6bdf82886d5b2270e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 26 Sep 2026 02:39:21 +0000 Subject: [PATCH 016/130] feat(remesh): staged pipeline with previews, adaptive simplify, UV and bake controls Remesh & Bake ran remesh -> simplify -> unwrap -> bake as one opaque step with a uniform result and no way to see or tune the intermediate meshes. Native (ABI 2, remesh.cpp refactored into shared helpers; the one-shot meshLabRemeshBuild and its tests are unchanged): - meshLabVoxelRemesh: voxel remesh + weld to an indexed mesh. - meshLabSimplify: simplifyWithUpdate with RegularizeLight/Regularize, PreserveFolds, LockBorder, Prune bits; target 0 = error-limited only; degenerate cleanup and compaction; returns the achieved error. - meshLabUnwrap: crease-aware normals + xatlas with explicit chart and pack options (flat float array), chart limits given in source units, per-vertex island ids via meshLabUnwrapCopy. - Tests cover the staged path: copy guards, error-limited simplification of the voxel cube (10092 -> 12 triangles), option validation, index, island-id and UV ranges. Editor: - The tab has four stages (Voxel remesh, Simplify, Normals & UV, Bake), each with its own settings and button. A stage first refreshes any earlier stage that is missing or whose settings changed, and clears the later ones. Run all stages re-runs the chain. - Simplify defaults to error-driven, unregularized collapse, so flat areas reduce to a few triangles while detail keeps its density. "Stop at triangles" is labelled as what meshoptimizer does: a stopping point, not a cap. - Hard edges: Smooth, Angle, UV islands, UV islands + angle. Island borders come from averaging face normals per xatlas output vertex, which xatlas already splits along every island border. - Islands & packing: max cost, normal deviation, hard-edge seam weight, straightness, roundness, iterations, max island area/border, rotate, block align, brute-force packing. - Right panel (IUvToolRightSidebar): orbitable 3D preview of source, voxel, simplified and result meshes (PreviewRenderUtility + new Hidden/MeshLab/RemeshPreview shader, wireframe, shading, baked base color, vertex colors), UV layout with tinted islands over the baked base color, and a viewer for every baked map. - Bake supersamples 1/4/9/16 stratified samples per texel. Texels only partly inside an island are owned too, and each sample resolves to the neighbouring face that contains it, so chart edges stay clean. - Source vertex colors are captured; Vertex color (RGB) and Vertex alpha transfer them to the result mesh independently via the nearest source surface point. Checked here: native build/ctest on Linux; the C# stage wrappers driven from .NET against the new library for every hard-edge mode (split-normal positions: smooth 0, angle 22, UV islands 30 on a box+cylinder); Bake tests run outside Unity with the colour-space calls stubbed; Editor and Tests compile against Unity reference assemblies. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Editor/RemeshBaker.cs | 173 ++++++++-- Editor/RemeshNative.cs | 137 ++++++-- Editor/RemeshPreview.cs | 303 +++++++++++++++++ Editor/RemeshPreview.cs.meta | 11 + Editor/RemeshSettings.cs | 63 +++- Editor/RemeshSource.cs | 10 +- Editor/Tools/RemeshBakeTool.cs | 332 ++++++++++++++---- Native~/src/remesh.cpp | 544 ++++++++++++++++++++---------- Native~/tests/remesh_test.cpp | 49 ++- Shaders/RemeshPreview.shader | 52 +++ Shaders/RemeshPreview.shader.meta | 7 + Tests/Editor/RemeshBakeTests.cs | 47 +++ 12 files changed, 1424 insertions(+), 304 deletions(-) create mode 100644 Editor/RemeshPreview.cs create mode 100644 Editor/RemeshPreview.cs.meta create mode 100644 Shaders/RemeshPreview.shader create mode 100644 Shaders/RemeshPreview.shader.meta diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index b551bd6b..9492efde 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -11,6 +11,7 @@ internal sealed class Maps { public Color32[] color, normal, metal, ao; public Color[] emission; + public Color[] vertexColors; // per result vertex, null unless a transfer was requested public int size, misses, covered; } @@ -22,63 +23,165 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto int count = checked(size * size); var result = new Maps { size = size, color = new Color32[count], normal = new Color32[count], metal = new Color32[count], ao = new Color32[count], emission = new Color[count] }; - var owners = new int[count]; - for (int i = 0; i < count; ++i) owners[i] = -1; - for (int face = 0; face < target.indices.Length / 3; ++face) { - token.ThrowIfCancellationRequested(); - int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; - Vector2 ua = target.uv[a], ub = target.uv[b], uc = target.uv[c]; - int x0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.x, Mathf.Min(ub.x, uc.x)) * size), 0, size - 1); - int x1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.x, Mathf.Max(ub.x, uc.x)) * size), 0, size - 1); - int y0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.y, Mathf.Min(ub.y, uc.y)) * size), 0, size - 1); - int y1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.y, Mathf.Max(ub.y, uc.y)) * size), 0, size - 1); - for (int y = y0; y <= y1; ++y) - for (int x = x0; x <= x1; ++x) - if (Barycentric(new Vector2((x + 0.5f) / size, (y + 0.5f) / size), ua, ub, uc, out var bary) && - bary.x >= -1e-6f && bary.y >= -1e-6f && bary.z >= -1e-6f) - owners[y * size + x] = face; - } + int grid = Mathf.RoundToInt(Mathf.Sqrt(settings.bakeSamples)); + var offsets = SampleOffsets(grid); + var owners = Rasterize(target, size, offsets, token); for (int i = 0; i < count; ++i) if (owners[i] >= 0) ++result.covered; token.ThrowIfCancellationRequested(); if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); var bvh = new TriangleBvh(source.positions, source.indices); token.ThrowIfCancellationRequested(); float distance = source.diagonal * settings.projectionDistance; + int misses = 0; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { + var candidates = new int[9]; for (int x = 0; x < size; ++x) { if ((x & 63) == 0) token.ThrowIfCancellationRequested(); - int pixel = y * size + x, face = owners[pixel]; - if (face < 0) continue; - int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; - Barycentric(new Vector2((x + 0.5f) / size, (y + 0.5f) / size), target.uv[a], target.uv[b], target.uv[c], out var w); - Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; - Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; - Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; - var hit = bvh.Raycast(p + n * distance, -n, distance * 2); - int sourceFace = hit.triangleIndex; - Vector3 sw = hit.barycentric; - if (sourceFace < 0) { - var nearest = bvh.FindNearest(p, distance); - sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + int pixel = y * size + x; + if (owners[pixel] < 0) continue; + // A sample belongs to whichever nearby face contains it, so texels on + // chart edges average only the surfaces that actually cover them. + int candidateCount = 0; + for (int dy = -1; dy <= 1; ++dy) + for (int dx = -1; dx <= 1; ++dx) { + int xx = x + dx, yy = y + dy; + if (xx < 0 || yy < 0 || xx >= size || yy >= size) continue; + int f = owners[yy * size + xx]; + if (f >= 0 && Array.IndexOf(candidates, f, 0, candidateCount) < 0) candidates[candidateCount++] = f; + } + Color color = default, metal = default, ao = default, emission = default; + Vector3 normal = Vector3.zero; + int hits = 0; + foreach (var offset in offsets) { + var uv = new Vector2((x + offset.x) / size, (y + offset.y) / size); + int face = -1; Vector3 w = default; + for (int c = 0; c < candidateCount && face < 0; ++c) + if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; + if (face < 0) continue; + if (!Project(source, target, tangents, bvh, face, w, distance, + out var sc, out var sn, out var sm, out var sa, out var se)) continue; + color += sc.linear; metal += sm; ao += sa; emission += se; + normal += new Vector3(sn.r * 2 - 1, sn.g * 2 - 1, sn.b * 2 - 1); + ++hits; } - if (sourceFace < 0) { - Interlocked.Increment(ref result.misses); + if (hits == 0) { + Interlocked.Increment(ref misses); result.color[pixel] = new Color32(255, 0, 255, 255); result.normal[pixel] = new Color32(128, 128, 255, 255); result.ao[pixel] = new Color32(255, 255, 255, 255); continue; } - Evaluate(source, sourceFace, sw, n, tangent, out var color, out var normal, - out var metal, out var ao, out var emission); - result.color[pixel] = color; result.normal[pixel] = normal; - result.metal[pixel] = metal; result.ao[pixel] = ao; result.emission[pixel] = emission; + float inv = 1f / hits; + Color averaged = (color * inv).gamma; averaged.a = 1; + normal = normal.sqrMagnitude > 1e-12f ? normal.normalized : Vector3.forward; + result.color[pixel] = averaged; + result.normal[pixel] = new Color(normal.x * 0.5f + 0.5f, normal.y * 0.5f + 0.5f, normal.z * 0.5f + 0.5f, 1); + result.metal[pixel] = metal * inv; result.ao[pixel] = ao * inv; + var e = emission * inv; e.a = 1; result.emission[pixel] = e; } }); + result.misses = misses; Dilate(result, owners, settings.padding, token); + if (settings.transferVertexColor || settings.transferVertexAlpha) + result.vertexColors = TransferVertexColors(source, target, bvh, settings, token); return result; } + // Stratified sample positions inside one texel, in texel units. + internal static Vector2[] SampleOffsets(int grid) + { + var offsets = new Vector2[grid * grid]; + for (int y = 0; y < grid; ++y) + for (int x = 0; x < grid; ++x) + offsets[y * grid + x] = new Vector2((x + 0.5f) / grid, (y + 0.5f) / grid); + return offsets; + } + + // A texel is owned by the face under its centre. With multisampling, texels whose + // centre misses every face but that some sample hits are owned too (conservative + // coverage), so thin charts and chart edges are not lost. + static int[] Rasterize(RemeshNative.Geometry target, int size, Vector2[] offsets, CancellationToken token) + { + var owners = new int[size * size]; + var centred = new bool[owners.Length]; + for (int i = 0; i < owners.Length; ++i) owners[i] = -1; + for (int face = 0; face < target.indices.Length / 3; ++face) { + token.ThrowIfCancellationRequested(); + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Vector2 ua = target.uv[a], ub = target.uv[b], uc = target.uv[c]; + int x0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.x, Mathf.Min(ub.x, uc.x)) * size), 0, size - 1); + int x1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.x, Mathf.Max(ub.x, uc.x)) * size), 0, size - 1); + int y0 = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(ua.y, Mathf.Min(ub.y, uc.y)) * size), 0, size - 1); + int y1 = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(ua.y, Mathf.Max(ub.y, uc.y)) * size), 0, size - 1); + for (int y = y0; y <= y1; ++y) + for (int x = x0; x <= x1; ++x) { + int pixel = y * size + x; + if (Inside(target, face, new Vector2((x + 0.5f) / size, (y + 0.5f) / size), out _)) { + owners[pixel] = face; centred[pixel] = true; + } + else if (offsets.Length > 1 && !centred[pixel] && owners[pixel] < 0) + foreach (var offset in offsets) + if (Inside(target, face, new Vector2((x + offset.x) / size, (y + offset.y) / size), out _)) { + owners[pixel] = face; break; + } + } + } + return owners; + } + + static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vector3 w) + { + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + return Barycentric(uv, target.uv[a], target.uv[b], target.uv[c], out w) && + w.x >= -1e-6f && w.y >= -1e-6f && w.z >= -1e-6f; + } + + // Trace from the destination surface point back to the source and evaluate its + // material there. False when neither the ray nor the bounded nearest query hits. + static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, TriangleBvh bvh, + int face, Vector3 w, float distance, + out Color color, out Color normal, out Color metal, out Color ao, out Color emission) + { + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; + Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; + Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; + var hit = bvh.Raycast(p + n * distance, -n, distance * 2); + int sourceFace = hit.triangleIndex; + Vector3 sw = hit.barycentric; + if (sourceFace < 0) { + var nearest = bvh.FindNearest(p, distance); + sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + } + if (sourceFace < 0) { + color = normal = metal = ao = emission = default; + return false; + } + Evaluate(source, sourceFace, sw, n, tangent, out color, out normal, out metal, out ao, out emission); + return true; + } + + // Nearest source surface point per result vertex, interpolating its vertex colours. + internal static Color[] TransferVertexColors(RemeshSource source, RemeshNative.Geometry target, TriangleBvh bvh, + RemeshSettings settings, CancellationToken token) + { + var colors = new Color[target.positions.Length]; + Parallel.For(0, colors.Length, new ParallelOptions { CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, i => { + var hit = bvh.FindNearest(target.positions[i]); + Color c = Color.white; + if (hit.triangleIndex >= 0) { + int f = hit.triangleIndex, a = source.indices[f * 3], b = source.indices[f * 3 + 1], d = source.indices[f * 3 + 2]; + Vector3 w = hit.barycentric; + c = source.colors[a] * w.x + source.colors[b] * w.y + source.colors[d] * w.z; + } + colors[i] = new Color(settings.transferVertexColor ? c.r : 1, settings.transferVertexColor ? c.g : 1, + settings.transferVertexColor ? c.b : 1, settings.transferVertexAlpha ? c.a : 1); + }); + return colors; + } + internal static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 weights) { Vector2 ab = b - a, ac = c - a, ap = p - a; diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index 01a20b60..68cdd949 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -8,67 +8,164 @@ namespace SashaRX.UnityMeshLab internal static class RemeshNative { const string Library = "xatlas-unity"; + const int AbiVersion = 2; [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] static extern int meshLabRemeshVersion(); [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] - static extern int meshLabRemeshBuild(float[] positions, uint vertexCount, int[] indices, uint indexCount, - int resolution, uint targetTriangles, float error, float crease, float smoothing, - uint textureSize, uint padding, uint flags, out IntPtr handle, out uint vertices, out uint outputIndices); + static extern void meshLabRemeshDestroy(IntPtr handle); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabVoxelRemesh(float[] positions, uint vertexCount, int[] indices, uint indexCount, + int resolution, uint flags, out IntPtr handle, out uint vertices, out uint outputIndices); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabSimplify(float[] positions, uint vertexCount, int[] indices, uint indexCount, + uint targetTriangles, float error, uint flags, out IntPtr handle, out uint vertices, out uint outputIndices, + out float resultError); [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] - static extern int meshLabRemeshCopy(IntPtr handle, [Out] float[] vertices, uint vertexCapacity, + static extern int meshLabMeshCopy(IntPtr handle, [Out] float[] positions, uint vertexCapacity, [Out] int[] indices, uint indexCapacity); [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] - static extern void meshLabRemeshDestroy(IntPtr handle); + static extern void meshLabMeshDestroy(IntPtr handle); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabUnwrap(float[] positions, uint vertexCount, int[] indices, uint indexCount, + float crease, float smoothing, float[] options, uint optionCount, + out IntPtr handle, out uint vertices, out uint outputIndices, out uint charts); + [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] + static extern int meshLabUnwrapCopy(IntPtr handle, [Out] float[] vertices, uint vertexCapacity, + [Out] int[] indices, uint indexCapacity, [Out] int[] charts); + ///

Indexed positions produced by the voxel and simplify stages. + internal sealed class IndexedMesh + { + public Vector3[] positions; + public int[] indices; + public int TriangleCount => indices.Length / 3; + } + + /// Unwrapped result: split vertices with normals, UV0 and xatlas chart ids. internal sealed class Geometry { public Vector3[] positions, normals; public Vector2[] uv; - public int[] indices; + public int[] indices, charts; + public int chartCount; } public static void CheckAvailable() { try { - if (meshLabRemeshVersion() != 1) throw new InvalidOperationException("Unsupported remesh native ABI."); + if (meshLabRemeshVersion() != AbiVersion) throw new InvalidOperationException("Unsupported remesh native ABI."); } catch (Exception e) when (e is DllNotFoundException || e is EntryPointNotFoundException || e is BadImageFormatException) { throw new InvalidOperationException("Remesh requires rebuilt native plugins. Install the binaries from Build Native Libraries for this commit, then restart Unity.", e); } } - public static Geometry Build(Vector3[] positions, int[] indices, RemeshSettings settings, CancellationToken token) + public static IndexedMesh Voxelize(Vector3[] positions, int[] indices, RemeshSettings settings, CancellationToken token) { settings.Validate(); token.ThrowIfCancellationRequested(); - var packed = new float[checked(positions.Length * 3)]; - for (int i = 0; i < positions.Length; ++i) { - packed[i * 3] = positions[i].x; packed[i * 3 + 1] = positions[i].y; packed[i * 3 + 2] = positions[i].z; - } IntPtr handle = IntPtr.Zero; try { - int code = meshLabRemeshBuild(packed, (uint)positions.Length, indices, (uint)indices.Length, - settings.voxelResolution, (uint)settings.targetTriangles, settings.maximumError, - settings.normalCrease * Mathf.Deg2Rad, settings.normalSmoothing, (uint)settings.textureResolution, - (uint)settings.padding, (settings.solve ? 1u : 0u) | (settings.shell ? 2u : 0u), + int code = meshLabVoxelRemesh(Pack(positions), (uint)positions.Length, indices, (uint)indices.Length, + settings.voxelResolution, (settings.solve ? 1u : 0u) | (settings.shell ? 2u : 0u), out handle, out uint vertexCount, out uint indexCount); token.ThrowIfCancellationRequested(); - if (code != 0) throw new InvalidOperationException("Remesh failed: " + Error(code)); + if (code != 0) throw new InvalidOperationException("Voxel remesh failed: " + Error(code)); + return CopyMesh(handle, vertexCount, indexCount); + } + finally { if (handle != IntPtr.Zero) meshLabMeshDestroy(handle); } + } + + public static IndexedMesh Simplify(IndexedMesh input, RemeshSettings settings, CancellationToken token, out float error) + { + settings.Validate(); + token.ThrowIfCancellationRequested(); + uint flags = (settings.regularize == RemeshRegularize.Light ? 1u : 0u) | + (settings.regularize == RemeshRegularize.Strong ? 2u : 0u) | + (settings.preserveFolds ? 4u : 0u) | (settings.pruneSmallParts ? 16u : 0u); + IntPtr handle = IntPtr.Zero; + try { + int code = meshLabSimplify(Pack(input.positions), (uint)input.positions.Length, input.indices, + (uint)input.indices.Length, (uint)settings.targetTriangles, settings.maximumError, flags, + out handle, out uint vertexCount, out uint indexCount, out error); + token.ThrowIfCancellationRequested(); + if (code != 0) throw new InvalidOperationException("Simplification failed: " + Error(code)); + return CopyMesh(handle, vertexCount, indexCount); + } + finally { if (handle != IntPtr.Zero) meshLabMeshDestroy(handle); } + } + + public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, CancellationToken token) + { + settings.Validate(); + token.ThrowIfCancellationRequested(); + bool angle = settings.hardEdges == RemeshHardEdges.Angle || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle; + // Matches ParseUnwrapOptions in Native~/src/remesh.cpp. + float[] options = { + settings.maxChartArea, settings.maxChartBoundary, settings.chartNormalDeviation, settings.chartRoundness, + settings.chartStraightness, settings.chartNormalSeam, 0.5f, settings.chartMaxCost, settings.chartIterations, + settings.textureResolution, settings.padding, 0, 1, + settings.packBlockAlign ? 1 : 0, settings.packBruteForce ? 1 : 0, settings.packRotate ? 1 : 0, settings.packRotate ? 1 : 0, + }; + IntPtr handle = IntPtr.Zero; + try { + int code = meshLabUnwrap(Pack(input.positions), (uint)input.positions.Length, input.indices, (uint)input.indices.Length, + angle ? settings.normalCrease * Mathf.Deg2Rad : Mathf.PI, settings.normalSmoothing, + options, (uint)options.Length, out handle, out uint vertexCount, out uint indexCount, out uint charts); + token.ThrowIfCancellationRequested(); + if (code != 0) throw new InvalidOperationException("UV unwrap failed: " + Error(code)); var data = new float[checked((int)vertexCount * 8)]; var result = new Geometry { positions = new Vector3[vertexCount], normals = new Vector3[vertexCount], - uv = new Vector2[vertexCount], indices = new int[indexCount] }; - if (meshLabRemeshCopy(handle, data, vertexCount, result.indices, indexCount) != 0) - throw new InvalidOperationException("Remesh output copy failed."); + uv = new Vector2[vertexCount], indices = new int[indexCount], charts = new int[vertexCount], chartCount = (int)charts }; + if (meshLabUnwrapCopy(handle, data, vertexCount, result.indices, indexCount, result.charts) != 0) + throw new InvalidOperationException("UV unwrap output copy failed."); for (int i = 0; i < vertexCount; ++i) { result.positions[i] = new Vector3(data[i * 8], data[i * 8 + 1], data[i * 8 + 2]); result.normals[i] = new Vector3(data[i * 8 + 3], data[i * 8 + 4], data[i * 8 + 5]); result.uv[i] = new Vector2(data[i * 8 + 6], data[i * 8 + 7]); } + if (settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle) + SmoothWithinSplitVertices(result); return result; } finally { if (handle != IntPtr.Zero) meshLabRemeshDestroy(handle); } } + // xatlas splits vertices along every chart border (and the native normals split + // them along crease edges). Averaging face normals per output vertex therefore + // smooths inside each island and leaves its border hard. + internal static void SmoothWithinSplitVertices(Geometry geometry) + { + var sum = new Vector3[geometry.positions.Length]; + var p = geometry.positions; + for (int i = 0; i < geometry.indices.Length; i += 3) { + int a = geometry.indices[i], b = geometry.indices[i + 1], c = geometry.indices[i + 2]; + Vector3 n = Vector3.Cross(p[b] - p[a], p[c] - p[a]); // area weighted + sum[a] += n; sum[b] += n; sum[c] += n; + } + for (int i = 0; i < sum.Length; ++i) + if (sum[i].sqrMagnitude > 1e-30f) geometry.normals[i] = sum[i].normalized; + } + + static float[] Pack(Vector3[] positions) + { + var packed = new float[checked(positions.Length * 3)]; + for (int i = 0; i < positions.Length; ++i) { + packed[i * 3] = positions[i].x; packed[i * 3 + 1] = positions[i].y; packed[i * 3 + 2] = positions[i].z; + } + return packed; + } + + static IndexedMesh CopyMesh(IntPtr handle, uint vertexCount, uint indexCount) + { + var data = new float[checked((int)vertexCount * 3)]; + var result = new IndexedMesh { positions = new Vector3[vertexCount], indices = new int[indexCount] }; + if (meshLabMeshCopy(handle, data, vertexCount, result.indices, indexCount) != 0) + throw new InvalidOperationException("Remesh output copy failed."); + for (int i = 0; i < vertexCount; ++i) result.positions[i] = new Vector3(data[i * 3], data[i * 3 + 1], data[i * 3 + 2]); + return result; + } + static string Error(int code) { switch (code) { diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs new file mode 100644 index 00000000..47f4b423 --- /dev/null +++ b/Editor/RemeshPreview.cs @@ -0,0 +1,303 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Right-sidebar previews for Remesh & Bake: an orbitable 3D view of any pipeline + /// stage, the result UV layout and the baked maps. Owns every Unity object it creates. + /// + internal sealed class RemeshPreview : IDisposable + { + internal enum View { Mesh, Uv, Maps } + internal enum Stage { Source, Remesh, Simplified, Result } + internal enum Channel { BaseColor, Normal, MetallicSmoothness, Occlusion, Emission } + + internal sealed class Data + { + public readonly Mesh[] meshes = new Mesh[4]; // indexed by Stage + public RemeshNative.Geometry geometry; + public RemeshBaker.Maps maps; + public Texture2D baseColor; + } + + static readonly string[] ViewNames = { "3D", "UV", "Maps" }; + public Action RequestRepaint; + View view; + Stage stage = Stage.Result; + Channel channel; + bool wireframe = true, shaded = true, textured = true, vertexColors, uvTexture = true, uvTint = true; + Vector2 orbit = new Vector2(-135, 20); + float zoom = 1; + PreviewRenderUtility utility; + Material surface, wire, lines; + readonly Dictionary wireCache = new Dictionary(); + RemeshBaker.Maps mapSource; + readonly Texture2D[] mapTextures = new Texture2D[5]; + + public void Show(Stage value) { stage = value; } + + public void Draw(Data data) + { + view = (View)GUILayout.Toolbar((int)view, ViewNames, EditorStyles.toolbarButton); + EditorGUILayout.Space(2); + switch (view) { + case View.Mesh: DrawMesh(data); break; + case View.Uv: DrawUv(data); break; + default: DrawMaps(data); break; + } + } + + /// Drop cached per-mesh wireframes; call before destroying preview meshes. + public void Invalidate() + { + foreach (var mesh in wireCache.Values) if (mesh) Object.DestroyImmediate(mesh); + wireCache.Clear(); + foreach (var texture in mapTextures) if (texture) Object.DestroyImmediate(texture); + Array.Clear(mapTextures, 0, mapTextures.Length); + mapSource = null; + } + + public void Dispose() + { + Invalidate(); + utility?.Cleanup(); utility = null; + if (surface) Object.DestroyImmediate(surface); + if (wire) Object.DestroyImmediate(wire); + if (lines) Object.DestroyImmediate(lines); + } + + // ── 3D ── + + void DrawMesh(Data data) + { + using (new EditorGUILayout.HorizontalScope()) { + stage = (Stage)EditorGUILayout.EnumPopup(stage, GUILayout.Width(90)); + wireframe = GUILayout.Toggle(wireframe, "Wire", EditorStyles.miniButtonLeft); + shaded = GUILayout.Toggle(shaded, "Shaded", EditorStyles.miniButtonMid); + textured = GUILayout.Toggle(textured, "Texture", EditorStyles.miniButtonMid); + vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonRight); + } + var mesh = data.meshes[(int)stage]; + Rect rect = GUILayoutUtility.GetAspectRect(1); + HandleOrbit(rect); + EditorGUILayout.LabelField(mesh ? $"{mesh.vertexCount:N0} vertices · {Triangles(mesh):N0} triangles" : "Run this stage to preview it.", + EditorStyles.miniLabel); + EditorGUILayout.LabelField("Drag to orbit, scroll to zoom.", EditorStyles.centeredGreyMiniLabel); + if (Event.current.type != EventType.Repaint) return; + EditorGUI.DrawRect(rect, new Color(0.16f, 0.16f, 0.16f)); + if (!mesh || !EnsureResources()) return; + + var bounds = mesh.bounds; + float radius = Mathf.Max(bounds.extents.magnitude, 1e-4f); + float distance = radius / Mathf.Sin(15 * Mathf.Deg2Rad) * zoom; + var rotation = Quaternion.Euler(orbit.y, orbit.x, 0); + utility.BeginPreview(rect, GUIStyle.none); + var camera = utility.camera; + camera.clearFlags = CameraClearFlags.SolidColor; + camera.backgroundColor = new Color(0.16f, 0.16f, 0.16f, 1); + camera.transform.rotation = rotation; + camera.transform.position = bounds.center - rotation * Vector3.forward * distance; + camera.nearClipPlane = Mathf.Max(distance - radius * 2, distance * 0.001f); + camera.farClipPlane = distance + radius * 2; + if (shaded) { + bool useTexture = textured && stage == Stage.Result && data.baseColor; + surface.SetTexture("_MainTex", useTexture ? data.baseColor : null); + surface.SetFloat("_UseTexture", useTexture ? 1 : 0); + surface.SetFloat("_UseVertexColor", vertexColors && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); + for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, Matrix4x4.identity, surface, sub); + } + if (wireframe) { + var edges = Wire(mesh); + wire.SetColor("_Color", shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); + if (edges) utility.DrawMesh(edges, Matrix4x4.identity, wire, 0); + } + utility.Render(); + GUI.DrawTexture(rect, utility.EndPreview(), ScaleMode.StretchToFill, false); + } + + void HandleOrbit(Rect rect) + { + int id = GUIUtility.GetControlID("RemeshPreviewOrbit".GetHashCode(), FocusType.Passive, rect); + var e = Event.current; + switch (e.GetTypeForControl(id)) { + case EventType.MouseDown: + if (rect.Contains(e.mousePosition)) { GUIUtility.hotControl = id; e.Use(); } + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl != id) break; + orbit += e.delta * 0.5f; + orbit.y = Mathf.Clamp(orbit.y, -89, 89); + e.Use(); RequestRepaint?.Invoke(); + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == id) { GUIUtility.hotControl = 0; e.Use(); } + break; + case EventType.ScrollWheel: + if (!rect.Contains(e.mousePosition)) break; + zoom = Mathf.Clamp(zoom * (1 + e.delta.y * 0.05f), 0.05f, 20); + e.Use(); RequestRepaint?.Invoke(); + break; + } + } + + bool EnsureResources() + { + if (utility == null) utility = new PreviewRenderUtility { cameraFieldOfView = 30 }; + if (!surface || !wire) { + var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); + if (!shader) return false; + surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + wire = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + wire.SetFloat("_Lit", 0); wire.SetFloat("_DepthOffset", -1); + } + return true; + } + + // One line per unique triangle edge, cached per mesh instance. + Mesh Wire(Mesh mesh) + { + int key = mesh.GetInstanceID(); + if (wireCache.TryGetValue(key, out var cached) && cached) return cached; + var tris = mesh.triangles; + if (tris.Length / 3 > 1000000) return null; + var seen = new HashSet(); + var indices = new List(tris.Length); + long stride = mesh.vertexCount; + for (int i = 0; i < tris.Length; i += 3) + for (int k = 0; k < 3; ++k) { + int a = tris[i + k], b = tris[i + (k + 1) % 3]; + if (seen.Add(Math.Min(a, b) * stride + Math.Max(a, b))) { indices.Add(a); indices.Add(b); } + } + var edges = new Mesh { name = mesh.name + "_Wire", hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + edges.vertices = mesh.vertices; + edges.SetIndices(indices, MeshTopology.Lines, 0); + wireCache[key] = edges; + return edges; + } + + static long Triangles(Mesh mesh) + { + long total = 0; + for (int sub = 0; sub < mesh.subMeshCount; ++sub) total += mesh.GetIndexCount(sub) / 3; + return total; + } + + // ── UV ── + + void DrawUv(Data data) + { + using (new EditorGUILayout.HorizontalScope()) { + uvTexture = GUILayout.Toggle(uvTexture, "Base color", EditorStyles.miniButtonLeft); + uvTint = GUILayout.Toggle(uvTint, "Tint islands", EditorStyles.miniButtonRight); + } + var g = data.geometry; + Rect rect = GUILayoutUtility.GetAspectRect(1); + if (g == null) EditorGUILayout.LabelField("Run Normals & UV to preview the layout.", EditorStyles.miniLabel); + else { + string coverage = data.maps != null ? $" · {100.0 * data.maps.covered / ((double)data.maps.size * data.maps.size):0.#}% texels used" : ""; + EditorGUILayout.LabelField($"{g.chartCount:N0} islands · {g.indices.Length / 3:N0} triangles{coverage}", EditorStyles.miniLabel); + } + if (Event.current.type != EventType.Repaint) return; + EditorGUI.DrawRect(rect, new Color(0.12f, 0.12f, 0.12f)); + if (uvTexture && data.baseColor) GUI.DrawTexture(rect, data.baseColor, ScaleMode.StretchToFill, false); + if (g == null || !EnsureLines()) return; + GUI.BeginClip(rect); + GL.PushMatrix(); + lines.SetPass(0); + float w = rect.width, h = rect.height; + int triangles = g.indices.Length / 3; + if (uvTint && triangles <= 500000) { + GL.Begin(GL.TRIANGLES); + for (int f = 0; f < triangles; ++f) { + GL.Color(ChartColor(g.charts[g.indices[f * 3]])); + for (int k = 0; k < 3; ++k) { + var uv = g.uv[g.indices[f * 3 + k]]; + GL.Vertex3(uv.x * w, (1 - uv.y) * h, 0); + } + } + GL.End(); + } + if (triangles <= 500000) { + GL.Begin(GL.LINES); + GL.Color(new Color(1, 1, 1, 0.55f)); + for (int f = 0; f < triangles; ++f) + for (int k = 0; k < 3; ++k) { + var a = g.uv[g.indices[f * 3 + k]]; var b = g.uv[g.indices[f * 3 + (k + 1) % 3]]; + GL.Vertex3(a.x * w, (1 - a.y) * h, 0); GL.Vertex3(b.x * w, (1 - b.y) * h, 0); + } + GL.End(); + } + GL.PopMatrix(); + GUI.EndClip(); + } + + bool EnsureLines() + { + if (lines) return true; + var shader = Shader.Find("Hidden/Internal-Colored"); + if (!shader) return false; + lines = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + lines.SetInt("_SrcBlend", (int)BlendMode.SrcAlpha); + lines.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + lines.SetInt("_Cull", (int)CullMode.Off); + lines.SetInt("_ZWrite", 0); + lines.SetInt("_ZTest", (int)CompareFunction.Always); + return true; + } + + static Color ChartColor(int chart) + { + uint h = unchecked((uint)chart * 2654435761u); + var color = Color.HSVToRGB((h & 0xffff) / 65535f, 0.55f, 0.95f); + color.a = 0.35f; + return color; + } + + // ── Maps ── + + void DrawMaps(Data data) + { + channel = (Channel)EditorGUILayout.EnumPopup("Map", channel); + Rect rect = GUILayoutUtility.GetAspectRect(1); + if (data.maps == null) { EditorGUILayout.LabelField("Bake to preview the maps.", EditorStyles.miniLabel); return; } + EditorGUILayout.LabelField($"{data.maps.size} × {data.maps.size}", EditorStyles.miniLabel); + if (Event.current.type != EventType.Repaint) return; + var texture = MapTexture(data.maps, channel); + if (texture) EditorGUI.DrawPreviewTexture(rect, texture); + } + + Texture2D MapTexture(RemeshBaker.Maps maps, Channel which) + { + if (!ReferenceEquals(maps, mapSource)) { + foreach (var t in mapTextures) if (t) Object.DestroyImmediate(t); + Array.Clear(mapTextures, 0, mapTextures.Length); + mapSource = maps; + } + int index = (int)which; + if (mapTextures[index]) return mapTextures[index]; + var texture = new Texture2D(maps.size, maps.size, TextureFormat.RGBA32, false, which != Channel.BaseColor) { + hideFlags = HideFlags.HideAndDontSave }; + switch (which) { + case Channel.BaseColor: texture.SetPixels32(maps.color); break; + case Channel.Normal: texture.SetPixels32(maps.normal); break; + case Channel.MetallicSmoothness: texture.SetPixels32(maps.metal); break; + case Channel.Occlusion: texture.SetPixels32(maps.ao); break; + default: + var pixels = new Color32[maps.emission.Length]; + for (int i = 0; i < pixels.Length; ++i) { + var e = maps.emission[i]; + pixels[i] = new Color(Mathf.Clamp01(e.r), Mathf.Clamp01(e.g), Mathf.Clamp01(e.b), 1).gamma; + } + texture.SetPixels32(pixels); + break; + } + texture.Apply(); + return mapTextures[index] = texture; + } + } +} diff --git a/Editor/RemeshPreview.cs.meta b/Editor/RemeshPreview.cs.meta new file mode 100644 index 00000000..7eeb8457 --- /dev/null +++ b/Editor/RemeshPreview.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22fd5769c3a8491499ad7d65043eee7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 20f79f55..a3f5d7d3 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -2,31 +2,84 @@ namespace SashaRX.UnityMeshLab { + /// Where the result mesh gets hard (split) normals. + public enum RemeshHardEdges + { + /// Everything smooth. + Smooth, + /// Edges sharper than the crease angle. + Angle, + /// Only along UV island borders; smooth inside every island. + UvIslands, + /// UV island borders plus edges sharper than the crease angle. + UvIslandsAndAngle, + } + + /// How strongly simplification evens out triangle sizes. + public enum RemeshRegularize + { + /// Adaptive: flat areas collapse first, detail keeps its density. + None, + Light, + Strong, + } + [Serializable] public sealed class RemeshSettings { + // 1 · Voxel remesh public int voxelResolution = 128; - public int targetTriangles = 10000; + public bool solve = true; + public bool shell; + + // 2 · Simplify + public bool simplify = true; + public int targetTriangles; // stop at this count; 0 = limited by maximumError only public float maximumError = 0.01f; + public RemeshRegularize regularize = RemeshRegularize.None; + public bool preserveFolds = true; + public bool pruneSmallParts; + + // 3 · Normals & UV + public RemeshHardEdges hardEdges = RemeshHardEdges.Angle; public float normalCrease = 60; public float normalSmoothing = 1; + public float chartMaxCost = 2; + public float chartNormalDeviation = 2; + public float chartRoundness = 0.01f; + public float chartStraightness = 6; + public float chartNormalSeam = 4; + public int chartIterations = 1; + public float maxChartArea; // source units², 0 = no limit + public float maxChartBoundary; // source units, 0 = no limit + public bool packBruteForce; + public bool packRotate = true; + public bool packBlockAlign; public int textureResolution = 2048; public int padding = 8; + + // 4 · Bake public float projectionDistance = 0.02f; // fraction of source bounds diagonal - public bool solve = true; - public bool shell; + public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 + public bool transferVertexColor; + public bool transferVertexAlpha; public void Validate() { - if (voxelResolution < 4 || voxelResolution > 256 || targetTriangles < 1 || targetTriangles > 5000000 || + if (voxelResolution < 4 || voxelResolution > 256 || targetTriangles < 0 || targetTriangles > 5000000 || !Finite(maximumError) || maximumError < 0 || maximumError > 1 || !Finite(normalCrease) || normalCrease < 0 || normalCrease > 180 || !Finite(normalSmoothing) || normalSmoothing < 0 || normalSmoothing > 10 || + !NonNegative(chartMaxCost) || chartMaxCost <= 0 || !NonNegative(chartNormalDeviation) || + !NonNegative(chartRoundness) || !NonNegative(chartStraightness) || !NonNegative(chartNormalSeam) || + chartIterations < 1 || chartIterations > 16 || !NonNegative(maxChartArea) || !NonNegative(maxChartBoundary) || textureResolution < 64 || textureResolution > 8192 || (textureResolution & (textureResolution - 1)) != 0 || - padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1) + padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1 || + (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16)) throw new ArgumentException("Invalid remesh settings."); } static bool Finite(float value) => !float.IsNaN(value) && !float.IsInfinity(value); + static bool NonNegative(float value) => Finite(value) && value >= 0; } } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 260d19ae..ae8b117c 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -12,6 +12,8 @@ internal sealed class RemeshSource public Vector3[] positions, normals; public Vector4[] tangents; public Vector2[] uv; + public Color[] colors; // per vertex; white where the source mesh has none + public bool hasColors; // any contributing mesh carried vertex colours public int[] indices, faceMaterials; public Surface[] materials; public float diagonal; @@ -74,7 +76,8 @@ public static RemeshSource Capture(GameObject root) foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); } var positions = new List(); var normals = new List(); - var tangents = new List(); var uv = new List(); + var tangents = new List(); var uv = new List(); var colors = new List(); + bool hasColors = false; var indices = new List(); var faces = new List(); var materials = new List(); var materialIds = new Dictionary(); string[] warnings; @@ -110,6 +113,9 @@ public static RemeshSource Capture(GameObject root) tangents.Add(new Vector4(tt.x, tt.y, tt.z, t[i].w * sign)); } uv.AddRange(mesh.uv); + var c = mesh.colors; + if (c.Length == p.Length) { colors.AddRange(c); hasColors = true; } + else for (int i = 0; i < p.Length; ++i) colors.Add(Color.white); var shared = renderer.sharedMaterials; for (int sub = 0; sub < mesh.subMeshCount; ++sub) { if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); @@ -135,7 +141,7 @@ public static RemeshSource Capture(GameObject root) foreach (var p in positions) bounds.Encapsulate(p); if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), - uv = uv.ToArray(), indices = indices.ToArray(), faceMaterials = faces.ToArray(), materials = materials.ToArray(), + uv = uv.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), materials = materials.ToArray(), diagonal = bounds.size.magnitude, warnings = warnings }; } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 9f9cc157..d2de7f2a 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -10,29 +10,49 @@ namespace SashaRX.UnityMeshLab { - public sealed class RemeshBakeTool : IUvTool + public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar { public string ToolName => "Remesh & Bake"; public string ToolId => "remesh_bake"; public int ToolOrder => 35; public Action RequestRepaint { private get; set; } + + enum Stage { Remesh, Simplify, Unwrap, Bake } + static readonly string[] StageTitles = { "1 · Voxel remesh", "2 · Simplify", "3 · Normals & UV", "4 · Bake" }; + static readonly string[] SampleNames = { "1 (off)", "4 (2×2)", "9 (3×3)", "16 (4×4)" }; + static readonly int[] SampleCounts = { 1, 4, 9, 16 }; + GameObject source, lastSelection; RemeshSettings settings = new RemeshSettings(); CancellationTokenSource cancellation; static int running; - Mesh result; - RemeshBaker.Maps maps; - Texture2D preview; string status = "Select a static model root. LODGroups contribute only LOD0."; string resultName; internal GameObject Source => source; + // Stage outputs. Each stage consumes the previous one; re-running a stage clears + // everything after it. keys[] remember the settings each output was built with. + RemeshSource snapshot; + RemeshNative.IndexedMesh voxel, simplified; + float simplifyError; + RemeshNative.Geometry geometry; + Vector4[] tangents; + RemeshBaker.Maps maps; + Mesh sourceMesh, voxelMesh, simplifiedMesh, resultMesh; + Texture2D preview; + readonly string[] keys = new string[4]; + readonly bool[] folds = { true, true, true, true }; + bool chartFold; + readonly RemeshPreview previews = new RemeshPreview(); + readonly RemeshPreview.Data previewData = new RemeshPreview.Data(); + public void OnActivate(UvToolContext context, UvCanvasView canvas) { FollowSelection(); Selection.selectionChanged -= FollowSelection; Selection.selectionChanged += FollowSelection; - // Result/preview carry HideAndDontSave, so they survive scene loads but + previews.RequestRepaint = () => RequestRepaint?.Invoke(); + // Result/preview objects carry HideAndDontSave, so they survive scene loads but // would leak across a domain reload once this instance is discarded. AssemblyReloadEvents.beforeAssemblyReload -= Clear; AssemblyReloadEvents.beforeAssemblyReload += Clear; @@ -61,7 +81,7 @@ internal void FollowSelection() RequestRepaint?.Invoke(); } // Hub context (LODGroup selection, Undo) does not feed this tool: the source - // snapshot is captured at Run() start, so a running bake must not be cancelled here. + // snapshot is captured when the remesh stage runs, so a running bake must not be cancelled here. public void OnRefresh() { } public void OnDrawToolbarExtra() { } public void OnDrawStatusBar() { GUILayout.Label(status, EditorStyles.miniLabel); } @@ -69,31 +89,87 @@ public void OnDrawToolbarExtra() { } public void OnSceneGUI(SceneView sceneView) { } public void OnDrawCanvasOverlay(UvCanvasView canvas, float cx, float cy, float size) { } + public void OnDrawRightSidebar() + { + previewData.meshes[(int)RemeshPreview.Stage.Source] = sourceMesh; + previewData.meshes[(int)RemeshPreview.Stage.Remesh] = voxelMesh; + previewData.meshes[(int)RemeshPreview.Stage.Simplified] = simplifiedMesh; + previewData.meshes[(int)RemeshPreview.Stage.Result] = resultMesh; + previewData.geometry = geometry; previewData.maps = maps; previewData.baseColor = preview; + previews.Draw(previewData); + } + public void OnDrawSidebar() { EditorGUILayout.LabelField("High-poly → Low-poly", EditorStyles.boldLabel); - using (new EditorGUI.DisabledScope(Volatile.Read(ref running) != 0)) { + bool busy = Volatile.Read(ref running) != 0; + using (new EditorGUI.DisabledScope(busy)) { source = (GameObject)EditorGUILayout.ObjectField("Source root", source, typeof(GameObject), true); - settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); - settings.targetTriangles = Mathf.Clamp(EditorGUILayout.IntField("Target triangles", settings.targetTriangles), 1, 5000000); - settings.maximumError = EditorGUILayout.Slider("Maximum error", settings.maximumError, 0, 1); - settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); - settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); - settings.normalCrease = EditorGUILayout.Slider("Normal crease", settings.normalCrease, 0, 180); - settings.normalSmoothing = EditorGUILayout.Slider("Normal smoothing", settings.normalSmoothing, 0, 10); - settings.textureResolution = EditorGUILayout.IntPopup("Texture size", settings.textureResolution, - new[] { "512", "1024", "2048", "4096" }, new[] { 512, 1024, 2048, 4096 }); - settings.padding = EditorGUILayout.IntSlider("Atlas padding", settings.padding, 1, 32); - settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); - EditorGUILayout.HelpBox("Experimental voxel remesh. Thin details and small gaps may disappear. Supports opaque Standard and URP/Lit metallic materials.", MessageType.Info); using (new EditorGUI.DisabledScope(!source || UvProgress.IsActive)) - if (GUILayout.Button("Generate & Bake", GUILayout.Height(28))) { - Run(); - // Run() has already swapped the result section for the Cancel - // button; end this event before IMGUI asks for controls the - // layout pass never registered. - GUIUtility.ExitGUI(); + if (GUILayout.Button("Run all stages", GUILayout.Height(26))) Start(Stage.Bake, true); + + if (StageHeader(Stage.Remesh, voxel != null ? $"{voxel.TriangleCount:N0} tris" : null)) { + settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); + settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); + settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); + StageButton(Stage.Remesh, "Remesh"); + } + if (StageHeader(Stage.Simplify, simplified != null ? $"{simplified.TriangleCount:N0} tris" : null)) { + settings.simplify = EditorGUILayout.Toggle("Simplify", settings.simplify); + using (new EditorGUI.DisabledScope(!settings.simplify)) { + settings.maximumError = EditorGUILayout.Slider(new GUIContent("Maximum error", + "Relative to the mesh size. Flat areas collapse first; raise it for fewer triangles."), settings.maximumError, 0, 0.2f); + settings.targetTriangles = Mathf.Clamp(EditorGUILayout.IntField(new GUIContent("Stop at triangles", + "Simplification stops at this count or at Maximum error, whichever comes first. 0 = go as far as the error allows."), + settings.targetTriangles), 0, 5000000); + settings.regularize = (RemeshRegularize)EditorGUILayout.EnumPopup(new GUIContent("Regularize", + "None keeps density where the shape needs it; Light/Strong even out triangle sizes."), settings.regularize); + settings.preserveFolds = EditorGUILayout.Toggle("Preserve folds", settings.preserveFolds); + settings.pruneSmallParts = EditorGUILayout.Toggle("Remove small parts", settings.pruneSmallParts); + } + if (simplified != null && settings.simplify) EditorGUILayout.LabelField($"Achieved error {simplifyError:0.#####}", EditorStyles.miniLabel); + StageButton(Stage.Simplify, "Simplify"); + } + if (StageHeader(Stage.Unwrap, geometry != null ? $"{geometry.chartCount:N0} islands" : null)) { + settings.hardEdges = (RemeshHardEdges)EditorGUILayout.EnumPopup(new GUIContent("Hard edges", + "Angle: crease angle. UV islands: hard along island borders, smooth inside."), settings.hardEdges); + bool angle = settings.hardEdges == RemeshHardEdges.Angle || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle; + using (new EditorGUI.DisabledScope(!angle)) + settings.normalCrease = EditorGUILayout.Slider("Crease angle", settings.normalCrease, 0, 180); + using (new EditorGUI.DisabledScope(settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle)) + settings.normalSmoothing = EditorGUILayout.Slider("Normal smoothing", settings.normalSmoothing, 0, 10); + settings.textureResolution = EditorGUILayout.IntPopup("Texture size", settings.textureResolution, + new[] { "512", "1024", "2048", "4096" }, new[] { 512, 1024, 2048, 4096 }); + settings.padding = EditorGUILayout.IntSlider("Atlas padding", settings.padding, 1, 32); + chartFold = EditorGUILayout.Foldout(chartFold, "Islands & packing", true); + if (chartFold) { + using (new EditorGUI.IndentLevelScope()) { + settings.chartMaxCost = EditorGUILayout.Slider(new GUIContent("Max cost", "Lower = more, smaller islands."), settings.chartMaxCost, 0.1f, 10); + settings.chartNormalDeviation = EditorGUILayout.Slider(new GUIContent("Normal deviation", "Penalty for bending inside one island."), settings.chartNormalDeviation, 0, 10); + settings.chartNormalSeam = EditorGUILayout.Slider(new GUIContent("Hard edge seam", "Prefer island borders on hard edges (>1000 always)."), settings.chartNormalSeam, 0, 1000); + settings.chartStraightness = EditorGUILayout.Slider(new GUIContent("Straightness", "Prefer straight island borders."), settings.chartStraightness, 0, 20); + settings.chartRoundness = EditorGUILayout.Slider(new GUIContent("Roundness", "Prefer compact islands."), settings.chartRoundness, 0, 1); + settings.chartIterations = EditorGUILayout.IntSlider("Iterations", settings.chartIterations, 1, 16); + settings.maxChartArea = Mathf.Max(0, EditorGUILayout.FloatField(new GUIContent("Max island area", "Source units², 0 = no limit."), settings.maxChartArea)); + settings.maxChartBoundary = Mathf.Max(0, EditorGUILayout.FloatField(new GUIContent("Max island border", "Source units, 0 = no limit."), settings.maxChartBoundary)); + settings.packRotate = EditorGUILayout.Toggle("Rotate islands", settings.packRotate); + settings.packBlockAlign = EditorGUILayout.Toggle("Align to 4×4 blocks", settings.packBlockAlign); + settings.packBruteForce = EditorGUILayout.Toggle(new GUIContent("Best packing (slow)"), settings.packBruteForce); + } } + StageButton(Stage.Unwrap, "Unwrap"); + } + if (StageHeader(Stage.Bake, maps != null ? (maps.misses > 0 ? $"{maps.misses:N0} missed" : "done") : null)) { + settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); + settings.bakeSamples = EditorGUILayout.IntPopup(new GUIContent("Samples per texel", "Supersampling for smoother edges and detail."), + settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); + settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); + settings.transferVertexAlpha = EditorGUILayout.Toggle("Vertex alpha", settings.transferVertexAlpha); + if (snapshot != null && !snapshot.hasColors && (settings.transferVertexColor || settings.transferVertexAlpha)) + EditorGUILayout.HelpBox("The source has no vertex colors; the transfer writes white.", MessageType.None); + StageButton(Stage.Bake, "Bake"); + } + EditorGUILayout.HelpBox("Experimental voxel remesh. Thin details and small gaps may disappear.", MessageType.Info); } if (cancellation != null) using (new EditorGUI.DisabledScope(cancellation.IsCancellationRequested)) @@ -101,12 +177,8 @@ public void OnDrawSidebar() cancellation.Cancel(); status = "Cancelling after the current phase…"; } EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); - if (result && maps != null) { - EditorGUILayout.LabelField($"{result.vertexCount:N0} vertices · {result.GetIndexCount(0) / 3:N0} triangles"); - if (preview) { - Rect rect = GUILayoutUtility.GetAspectRect(1); - EditorGUI.DrawPreviewTexture(rect, preview); - } + if (resultMesh && maps != null) { + EditorGUILayout.LabelField($"{resultMesh.vertexCount:N0} vertices · {resultMesh.GetIndexCount(0) / 3:N0} triangles"); using (new EditorGUI.DisabledScope(cancellation != null)) if (GUILayout.Button("Save mesh, maps & prefab…")) { Save(); @@ -117,58 +189,192 @@ public void OnDrawSidebar() } } - async void Run() + bool StageHeader(Stage stage, string summary) + { + int i = (int)stage; + bool stale = keys[i] != null && keys[i] != Key(stage); + string label = StageTitles[i] + (summary == null ? "" : " — " + summary + (stale ? " (settings changed)" : "")); + EditorGUILayout.Space(3); + folds[i] = EditorGUILayout.Foldout(folds[i], label, true, EditorStyles.foldoutHeader); + return folds[i]; + } + + void StageButton(Stage stage, string label) + { + using (new EditorGUI.DisabledScope(!source && snapshot == null || UvProgress.IsActive)) + if (GUILayout.Button(label)) Start(stage, false); + } + + // Runs the clicked stage, first bringing every earlier stage up to date (missing + // output or changed settings). "Run all" re-runs everything. + void Start(Stage target, bool all) + { + Stage from = Stage.Remesh; + if (!all) { + from = target; + // An emptied Source field does not invalidate a remesh already captured. + for (var s = Stage.Remesh; s < target; ++s) + if (keys[(int)s] == null || keys[(int)s] != Key(s) && (s != Stage.Remesh || source)) { from = s; break; } + } + Run(from, target); + // Run() has already changed the sidebar (Cancel button, cleared results); + // end this event before IMGUI asks for controls the layout pass never registered. + GUIUtility.ExitGUI(); + } + + string Key(Stage stage) + { + var s = settings; + switch (stage) { + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}"; + case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; + case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; + default: return $"{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; + } + } + + async void Run(Stage from, Stage to) { if (Interlocked.CompareExchange(ref running, 1, 0) != 0) return; cancellation = new CancellationTokenSource(); var token = cancellation.Token; - Mesh temporary = null; bool locked = false; try { settings.Validate(); RemeshNative.CheckAvailable(); var options = JsonUtility.FromJson(JsonUtility.ToJson(settings)); - var root = source; - string name = root.name; - Clear(); + ClearFrom(from); EditorApplication.LockReloadAssemblies(); locked = true; - status = "Reading source geometry and textures…"; RequestRepaint?.Invoke(); - await Task.Yield(); token.ThrowIfCancellationRequested(); - var snapshot = RemeshSource.Capture(root); - foreach (var warning in snapshot.warnings) UvtLog.Warn("[Remesh] " + warning); - status = "Remeshing, simplifying and unwrapping…"; RequestRepaint?.Invoke(); - var geometry = await Task.Run(() => RemeshNative.Build(snapshot.positions, snapshot.indices, options, token)); - token.ThrowIfCancellationRequested(); - temporary = new Mesh { name = name + "_LOD0", indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; - temporary.vertices = geometry.positions; temporary.normals = geometry.normals; - temporary.uv = geometry.uv; temporary.triangles = geometry.indices; - temporary.RecalculateBounds(); temporary.RecalculateTangents(); - Vector4[] tangents = temporary.tangents; - status = "Projecting source materials into the new UV atlas…"; RequestRepaint?.Invoke(); - var baked = await Task.Run(() => RemeshBaker.Bake(snapshot, geometry, tangents, options, token)); - token.ThrowIfCancellationRequested(); - preview = new Texture2D(baked.size, baked.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; - preview.SetPixels32(baked.color); preview.Apply(); - result = temporary; temporary = null; maps = baked; resultName = name; - status = $"{snapshot.indices.Length / 3:N0} → {geometry.indices.Length / 3:N0} triangles. " + - (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + - (snapshot.warnings.Length > 0 ? $" {snapshot.warnings.Length} material warning(s), see Console." : ""); - UvtLog.Info("[Remesh] " + status); + for (var stage = from; stage <= to; ++stage) { + string key = Key(stage); + switch (stage) { + case Stage.Remesh: await RunRemesh(options, token); break; + case Stage.Simplify: await RunSimplify(options, token); break; + case Stage.Unwrap: await RunUnwrap(options, token); break; + default: await RunBake(options, token); break; + } + keys[(int)stage] = key; + } + previews.Show(to == Stage.Remesh ? RemeshPreview.Stage.Remesh : + to == Stage.Simplify ? RemeshPreview.Stage.Simplified : RemeshPreview.Stage.Result); } catch (OperationCanceledException) { status = "Cancelled. Source assets were preserved."; } catch (Exception e) { status = e.Message; UvtLog.Error("[Remesh] " + e); } finally { - if (temporary) Object.DestroyImmediate(temporary); cancellation.Dispose(); cancellation = null; if (locked) EditorApplication.UnlockReloadAssemblies(); Interlocked.Exchange(ref running, 0); RequestRepaint?.Invoke(); } } + async Task RunRemesh(RemeshSettings options, CancellationToken token) + { + var root = source; + if (!root) throw new InvalidOperationException("Select a source root."); + Report("Reading source geometry and textures…"); + await Task.Yield(); token.ThrowIfCancellationRequested(); + var captured = RemeshSource.Capture(root); + foreach (var warning in captured.warnings) UvtLog.Warn("[Remesh] " + warning); + Report("Voxel remeshing…"); + var mesh = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token)); + token.ThrowIfCancellationRequested(); + snapshot = captured; resultName = root.name; voxel = mesh; + sourceMesh = BuildMesh(root.name + "_Source", captured.positions, captured.indices, captured.normals, captured.hasColors ? captured.colors : null); + voxelMesh = BuildMesh(root.name + "_Voxel", mesh.positions, mesh.indices); + status = $"Remesh: {captured.indices.Length / 3:N0} → {mesh.TriangleCount:N0} triangles." + + (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); + } + + async Task RunSimplify(RemeshSettings options, CancellationToken token) + { + if (voxel == null) throw new InvalidOperationException("Run the remesh stage first."); + var input = voxel; + if (options.simplify) { + Report("Simplifying…"); + float error = 0; + simplified = await Task.Run(() => RemeshNative.Simplify(input, options, token, out error)); + simplifyError = error; + } + else { simplified = input; simplifyError = 0; } + token.ThrowIfCancellationRequested(); + simplifiedMesh = BuildMesh(resultName + "_Simplified", simplified.positions, simplified.indices); + status = $"Simplify: {input.TriangleCount:N0} → {simplified.TriangleCount:N0} triangles."; + } + + async Task RunUnwrap(RemeshSettings options, CancellationToken token) + { + if (simplified == null) throw new InvalidOperationException("Run the simplify stage first."); + var input = simplified; + Report("Generating normals and unwrapping UVs…"); + var unwrapped = await Task.Run(() => RemeshNative.Unwrap(input, options, token)); + token.ThrowIfCancellationRequested(); + geometry = unwrapped; + resultMesh = new Mesh { name = resultName + "_LOD0", indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; + resultMesh.vertices = unwrapped.positions; resultMesh.normals = unwrapped.normals; + resultMesh.uv = unwrapped.uv; resultMesh.triangles = unwrapped.indices; + resultMesh.RecalculateBounds(); resultMesh.RecalculateTangents(); + tangents = resultMesh.tangents; + status = $"Unwrap: {unwrapped.chartCount:N0} islands, {unwrapped.positions.Length:N0} vertices."; + } + + async Task RunBake(RemeshSettings options, CancellationToken token) + { + if (geometry == null || snapshot == null) throw new InvalidOperationException("Run the UV stage first."); + var captured = snapshot; var target = geometry; var frame = tangents; + Report("Projecting source materials into the new UV atlas…"); + var baked = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token)); + token.ThrowIfCancellationRequested(); + preview = new Texture2D(baked.size, baked.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; + preview.SetPixels32(baked.color); preview.Apply(); + maps = baked; + if (baked.vertexColors != null) resultMesh.colors = baked.vertexColors; + status = $"{captured.indices.Length / 3:N0} → {target.indices.Length / 3:N0} triangles. " + + (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + + (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); + UvtLog.Info("[Remesh] " + status); + } + + void Report(string message) { status = message; RequestRepaint?.Invoke(); } + + static Mesh BuildMesh(string name, Vector3[] positions, int[] indices, Vector3[] normals = null, Color[] colors = null) + { + var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; + mesh.vertices = positions; mesh.triangles = indices; + if (normals != null) mesh.normals = normals; else mesh.RecalculateNormals(); + if (colors != null) mesh.colors = colors; + mesh.RecalculateBounds(); + return mesh; + } + + // Drops the output of `stage` and every stage after it. + void ClearFrom(Stage stage) + { + previews.Invalidate(); + if (stage <= Stage.Bake) { + if (preview) Object.DestroyImmediate(preview); + preview = null; maps = null; keys[(int)Stage.Bake] = null; + if (resultMesh && stage == Stage.Bake) resultMesh.colors = null; + } + if (stage <= Stage.Unwrap) { + if (resultMesh) Object.DestroyImmediate(resultMesh); + resultMesh = null; geometry = null; tangents = null; keys[(int)Stage.Unwrap] = null; + } + if (stage <= Stage.Simplify) { + if (simplifiedMesh) Object.DestroyImmediate(simplifiedMesh); + simplifiedMesh = null; simplified = null; keys[(int)Stage.Simplify] = null; + } + if (stage <= Stage.Remesh) { + if (voxelMesh) Object.DestroyImmediate(voxelMesh); + if (sourceMesh) Object.DestroyImmediate(sourceMesh); + voxelMesh = null; sourceMesh = null; voxel = null; snapshot = null; keys[(int)Stage.Remesh] = null; + } + } + void Clear() { - if (result) Object.DestroyImmediate(result); - if (preview) Object.DestroyImmediate(preview); - result = null; preview = null; maps = null; + ClearFrom(Stage.Remesh); + previews.Dispose(); } void Save() @@ -227,7 +433,7 @@ void Save() importer.SaveAndReimport(); } } - mesh = Object.Instantiate(result); mesh.name = clean + "_LOD0"; mesh.hideFlags = HideFlags.None; + mesh = Object.Instantiate(resultMesh); mesh.name = clean + "_LOD0"; mesh.hideFlags = HideFlags.None; material = new Material(shader) { name = clean + "_Remesh" }; bool urp = shaderName != "Standard"; material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp index cbc837af..38419ee1 100644 --- a/Native~/src/remesh.cpp +++ b/Native~/src/remesh.cpp @@ -1,4 +1,9 @@ -// Isolated, owned remesh job. Does not touch the legacy bridge's global xatlas. +// Isolated, owned remesh jobs. Do not touch the legacy bridge's global xatlas. +// +// Two entry styles share the helpers below: +// * meshLabRemeshBuild: the original one-shot voxel remesh -> simplify -> unwrap. +// * staged (ABI 2): meshLabVoxelRemesh, meshLabSimplify, meshLabUnwrap, so the +// editor can preview and re-run each stage without repeating the earlier ones. #include "meshoptimizer.h" #include "xatlas.h" #include @@ -17,13 +22,259 @@ namespace { struct Vertex { float p[3], n[3], uv[2]; }; -struct Result { std::vector vertices; std::vector indices; }; +struct Result { std::vector vertices; std::vector indices; std::vector charts; }; +struct PosMesh { std::vector pos; std::vector idx; }; struct AtlasDelete { void operator()(xatlas::Atlas* a) const { xatlas::Destroy(a); } }; constexpr size_t MaxTriangles = 5000000; + +// Return codes shared by every entry point. +enum : int { Ok = 0, Invalid = 1, Budget = 2, Empty = 3, AtlasRejected = 4, MultipleAtlases = 5, + Internal = 6, NoAtlas = 7, BadMapping = 8 }; + +int ValidateMesh(const float* positions, uint32_t vertexCount, const uint32_t* indices, uint32_t indexCount) +{ + if (!positions || !indices || vertexCount < 3 || indexCount < 3 || indexCount % 3 || + indexCount / 3 > MaxTriangles) return Invalid; + for (size_t i = 0; i < size_t(vertexCount) * 3; ++i) + if (!std::isfinite(positions[i])) return Invalid; + for (size_t i = 0; i < indexCount; ++i) + if (indices[i] >= vertexCount) return Invalid; + float lo[3] = {positions[0], positions[1], positions[2]}; + float hi[3] = {positions[0], positions[1], positions[2]}; + for (size_t i = 0; i < vertexCount; ++i) + for (int k = 0; k < 3; ++k) { + lo[k] = std::min(lo[k], positions[i * 3 + k]); + hi[k] = std::max(hi[k], positions[i * 3 + k]); + } + float extent = std::max(hi[0]-lo[0], std::max(hi[1]-lo[1], hi[2]-lo[2])); + return std::isfinite(extent) && extent > 0 ? Ok : Invalid; +} + +// Voxel remesh, then weld the per-corner output into an indexed mesh. +int Voxelize(const float* positions, uint32_t vertexCount, const uint32_t* indices, uint32_t indexCount, + int resolution, unsigned int opts, PosMesh& out) +{ + size_t count = meshopt_remesh(nullptr, 0, indices, indexCount, positions, vertexCount, 12, resolution, opts); + if (!count) return Empty; + if (count > MaxTriangles) return Budget; + std::vector corners(count * 9); + count = meshopt_remesh(corners.data(), count, indices, indexCount, positions, vertexCount, 12, resolution, opts); + if (!count) return Empty; + corners.resize(count * 9); + std::vector remap(count * 3); + size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, count * 3, corners.data(), count * 3, 12); + out.pos.resize(unique * 3); + out.idx.resize(count * 3); + meshopt_remapVertexBuffer(out.pos.data(), corners.data(), count * 3, 12, remap.data()); + meshopt_remapIndexBuffer(out.idx.data(), nullptr, count * 3, remap.data()); + return Ok; +} + +// simplifyWithUpdate is allowed to collapse/move vertices. On real meshes this can +// leave duplicate-index, zero-edge or near-zero-area triangles. xatlas keeps such +// faces as "invalid geometry" vertices with atlasIndex == -1; treating that as a +// generic unwrap failure makes one collapsed triangle abort the whole remesh. +// Filter them using a relative area scale, then drop unreferenced vertices so every +// later xref points at geometry that can own UVs. +int Clean(PosMesh& m) +{ + const size_t unique = m.pos.size() / 3; + float lo[3] = {0, 0, 0}, hi[3] = {0, 0, 0}; + bool haveBounds = false; + for (unsigned int v : m.idx) { + if (v >= unique) return Internal; + const float* p = &m.pos[size_t(v) * 3]; + if (!std::isfinite(p[0]) || !std::isfinite(p[1]) || !std::isfinite(p[2])) return Internal; + for (int k = 0; k < 3; ++k) { + lo[k] = haveBounds ? std::min(lo[k], p[k]) : p[k]; + hi[k] = haveBounds ? std::max(hi[k], p[k]) : p[k]; + } + haveBounds = true; + } + if (!haveBounds) return Empty; + const double extent = std::max(double(hi[0] - lo[0]), std::max(double(hi[1] - lo[1]), double(hi[2] - lo[2]))); + if (!std::isfinite(extent) || extent <= 0.0) return Empty; + const double minTriangleArea = extent * extent * double(FLT_EPSILON); + + std::vector cleaned; + cleaned.reserve(m.idx.size()); + for (size_t i = 0; i < m.idx.size(); i += 3) { + const unsigned int ia = m.idx[i + 0], ib = m.idx[i + 1], ic = m.idx[i + 2]; + if (ia == ib || ib == ic || ic == ia) continue; + const float* a = &m.pos[size_t(ia) * 3]; + const float* b = &m.pos[size_t(ib) * 3]; + const float* c = &m.pos[size_t(ic) * 3]; + const double abx = double(b[0]) - a[0], aby = double(b[1]) - a[1], abz = double(b[2]) - a[2]; + const double acx = double(c[0]) - a[0], acy = double(c[1]) - a[1], acz = double(c[2]) - a[2]; + const double cx = aby * acz - abz * acy; + const double cy = abz * acx - abx * acz; + const double cz = abx * acy - aby * acx; + const double area = 0.5 * std::sqrt(cx * cx + cy * cy + cz * cz); + if (!std::isfinite(area)) return Internal; + if (area <= minTriangleArea) continue; + cleaned.push_back(ia); cleaned.push_back(ib); cleaned.push_back(ic); + } + if (cleaned.empty()) return Empty; + m.idx.swap(cleaned); + + std::vector compactRemap(unique, ~0u); + std::vector compactPos; + compactPos.reserve(std::min(unique, m.idx.size()) * size_t(3)); + for (unsigned int& v : m.idx) { + unsigned int mapped = compactRemap[v]; + if (mapped == ~0u) { + mapped = unsigned(compactPos.size() / 3); + compactRemap[v] = mapped; + const float* p = &m.pos[size_t(v) * 3]; + compactPos.push_back(p[0]); compactPos.push_back(p[1]); compactPos.push_back(p[2]); + } + v = mapped; + } + m.pos.swap(compactPos); + return Ok; +} + +// targetTriangles == 0 simplifies until the error limit alone stops it. +int Simplify(PosMesh& m, uint32_t targetTriangles, float error, unsigned int opts, float* resultError) +{ + const size_t target = std::min(m.idx.size(), size_t(targetTriangles) * 3); + float achieved = 0; + size_t simplified = meshopt_simplifyWithUpdate(m.idx.data(), m.idx.size(), m.pos.data(), m.pos.size() / 3, 12, + nullptr, 0, nullptr, 0, nullptr, target, error, opts, &achieved); + if (!simplified) return Empty; + m.idx.resize(simplified); + if (resultError) *resultError = achieved; + return Clean(m); +} + +struct UnwrapOptions { + xatlas::ChartOptions charts; + xatlas::PackOptions pack; +}; + +// options layout (missing trailing entries keep xatlas defaults): +// 0 maxChartArea 1 maxBoundaryLength 2 normalDeviationWeight 3 roundnessWeight +// 4 straightnessWeight 5 normalSeamWeight 6 textureSeamWeight 7 maxCost +// 8 maxIterations 9 resolution 10 padding 11 texelsPerUnit 12 bilinear +// 13 blockAlign 14 bruteForce 15 rotateCharts 16 rotateChartsToAxis +int ParseUnwrapOptions(const float* options, uint32_t optionCount, UnwrapOptions& o) +{ + if (optionCount > 17 || (optionCount && !options)) return Invalid; + for (uint32_t i = 0; i < optionCount; ++i) + if (!std::isfinite(options[i]) || options[i] < 0) return Invalid; + auto get = [&](uint32_t i, float fallback) { return i < optionCount ? options[i] : fallback; }; + o.charts.maxChartArea = get(0, o.charts.maxChartArea); + o.charts.maxBoundaryLength = get(1, o.charts.maxBoundaryLength); + o.charts.normalDeviationWeight = get(2, o.charts.normalDeviationWeight); + o.charts.roundnessWeight = get(3, o.charts.roundnessWeight); + o.charts.straightnessWeight = get(4, o.charts.straightnessWeight); + o.charts.normalSeamWeight = get(5, o.charts.normalSeamWeight); + o.charts.textureSeamWeight = get(6, o.charts.textureSeamWeight); + o.charts.maxCost = get(7, o.charts.maxCost); + float iterations = get(8, float(o.charts.maxIterations)); + float resolution = get(9, 1024), padding = get(10, 4); + if (iterations < 1 || iterations > 16 || resolution < 64 || resolution > 8192 || padding > 32 || o.charts.maxCost <= 0) return Invalid; + o.charts.maxIterations = uint32_t(iterations); + o.pack.resolution = uint32_t(resolution); + o.pack.padding = uint32_t(padding); + o.pack.texelsPerUnit = get(11, 0); + o.pack.bilinear = get(12, 1) != 0; + o.pack.blockAlign = get(13, 0) != 0; + o.pack.bruteForce = get(14, 0) != 0; + o.pack.rotateCharts = get(15, 1) != 0; + o.pack.rotateChartsToAxis = get(16, 1) != 0; + return Ok; +} + +// Crease-aware normals, then an xatlas full unwrap of an indexed, cleaned mesh. +int Unwrap(const PosMesh& m, float crease, float smoothing, const UnwrapOptions& o, Result& out) +{ + const size_t corners = m.idx.size(); + const size_t positions = m.pos.size() / 3; + std::vector normals(corners * 3); + meshopt_generateNormals(normals.data(), m.idx.data(), corners, m.pos.data(), positions, 12, crease, smoothing); + for (float n : normals) if (!std::isfinite(n)) return Internal; + std::vector split(corners); + for (size_t i = 0; i < corners; ++i) { + std::memcpy(split[i].p, &m.pos[size_t(m.idx[i]) * 3], 12); + std::memcpy(split[i].n, &normals[i * 3], 12); + split[i].uv[0] = split[i].uv[1] = 0; + } + std::vector remap(corners), idx(corners); + size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, corners, split.data(), corners, sizeof(Vertex)); + std::vector verts(unique); + meshopt_remapVertexBuffer(verts.data(), split.data(), corners, sizeof(Vertex), remap.data()); + meshopt_remapIndexBuffer(idx.data(), nullptr, corners, remap.data()); + std::unique_ptr atlas(xatlas::Create()); + if (!atlas) return Internal; + + // xatlas uses absolute float epsilons for colocal and zero-area checks. Feed it a + // uniformly normalized copy so those tests are scale-relative; the real output + // positions remain in verts and are restored through xref after packing. + std::vector atlasVerts = verts; + float lo[3] = {atlasVerts[0].p[0], atlasVerts[0].p[1], atlasVerts[0].p[2]}; + float hi[3] = {lo[0], lo[1], lo[2]}; + for (const Vertex& v : atlasVerts) + for (int k = 0; k < 3; ++k) { + lo[k] = std::min(lo[k], v.p[k]); + hi[k] = std::max(hi[k], v.p[k]); + } + const float extent = std::max(hi[0] - lo[0], std::max(hi[1] - lo[1], hi[2] - lo[2])); + if (!std::isfinite(extent) || extent <= 0) return Empty; + const float center[3] = {(lo[0] + hi[0]) * 0.5f, (lo[1] + hi[1]) * 0.5f, (lo[2] + hi[2]) * 0.5f}; + for (Vertex& v : atlasVerts) + for (int k = 0; k < 3; ++k) + v.p[k] = (v.p[k] - center[k]) / extent; + UnwrapOptions scaled = o; + // Chart limits are given in source units; the atlas input is normalized by extent. + scaled.charts.maxChartArea = o.charts.maxChartArea / (extent * extent); + scaled.charts.maxBoundaryLength = o.charts.maxBoundaryLength / extent; + scaled.pack.texelsPerUnit = o.pack.texelsPerUnit * extent; + + xatlas::MeshDecl decl; + decl.vertexPositionData = atlasVerts.data(); decl.vertexPositionStride = sizeof(Vertex); + decl.vertexNormalData = atlasVerts[0].n; decl.vertexNormalStride = sizeof(Vertex); + decl.vertexCount = uint32_t(unique); + decl.indexData = idx.data(); decl.indexCount = uint32_t(idx.size()); + decl.indexFormat = xatlas::IndexFormat::UInt32; + if (xatlas::AddMesh(atlas.get(), decl) != xatlas::AddMeshError::Success) return AtlasRejected; + xatlas::Generate(atlas.get(), scaled.charts, scaled.pack); + if (!atlas->meshCount || !atlas->width || !atlas->height || !atlas->atlasCount) return NoAtlas; + if (atlas->atlasCount != 1) return MultipleAtlases; + const xatlas::Mesh& mesh = atlas->meshes[0]; + out.vertices.resize(mesh.vertexCount); + out.charts.resize(mesh.vertexCount); + for (uint32_t i = 0; i < mesh.vertexCount; ++i) { + const auto& v = mesh.vertexArray[i]; + if (v.atlasIndex != 0 || v.xref >= verts.size()) return BadMapping; + out.vertices[i] = verts[v.xref]; + out.vertices[i].uv[0] = v.uv[0] / atlas->width; + out.vertices[i].uv[1] = v.uv[1] / atlas->height; + out.charts[i] = v.chartIndex; + } + out.indices.assign(mesh.indexArray, mesh.indexArray + mesh.indexCount); + return Ok; +} + +unsigned int RemeshOptions(uint32_t flags) +{ + return (flags & 1 ? meshopt_RemeshSolve : 0) | (flags & 2 ? meshopt_RemeshShell : 0); +} + +// Bridge simplify bits: 1 RegularizeLight, 2 Regularize, 4 PreserveFolds, 8 LockBorder, 16 Prune. +unsigned int SimplifyOptions(uint32_t flags) +{ + return (flags & 1 ? meshopt_SimplifyRegularizeLight : 0) | (flags & 2 ? meshopt_SimplifyRegularize : 0) | + (flags & 4 ? meshopt_SimplifyPreserveFolds : 0) | (flags & 8 ? meshopt_SimplifyLockBorder : 0) | + (flags & 16 ? meshopt_SimplifyPrune : 0); } -EXPORT int meshLabRemeshVersion() { return 1; } +template void Publish(std::unique_ptr& result, void** handle) { *handle = result.release(); } +} + +EXPORT int meshLabRemeshVersion() { return 2; } EXPORT void meshLabRemeshDestroy(void* handle) { delete static_cast(handle); } +EXPORT void meshLabMeshDestroy(void* handle) { delete static_cast(handle); } // Returns 0 on success; 1 invalid input, 2 output budget, 3 empty result, // 4 xatlas rejected the mesh, 5 multiple atlases, 6 allocation/internal failure, @@ -37,193 +288,130 @@ EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, uint32_t textureSize, uint32_t padding, uint32_t flags, void** handle, uint32_t* outVertices, uint32_t* outIndices) { - if (!handle || !outVertices || !outIndices) return 1; + if (!handle || !outVertices || !outIndices) return Invalid; *handle = nullptr; *outVertices = 0; *outIndices = 0; - if (!positions || !indices || vertexCount < 3 || indexCount < 3 || indexCount % 3 || - resolution < 4 || resolution > 256 || targetTriangles < 1 || targetTriangles > MaxTriangles || + if (resolution < 4 || resolution > 256 || targetTriangles < 1 || targetTriangles > MaxTriangles || !std::isfinite(error) || error < 0 || error > 1 || !std::isfinite(crease) || crease < 0 || crease > 3.141593f || !std::isfinite(smoothing) || smoothing < 0 || smoothing > 10 || - textureSize < 64 || textureSize > 8192 || padding > 32 || (flags & ~3u)) return 1; - for (size_t i = 0; i < size_t(vertexCount) * 3; ++i) - if (!std::isfinite(positions[i])) return 1; - for (size_t i = 0; i < indexCount; ++i) - if (indices[i] >= vertexCount) return 1; - float lo[3] = {positions[0], positions[1], positions[2]}; - float hi[3] = {positions[0], positions[1], positions[2]}; - for (size_t i = 0; i < vertexCount; ++i) - for (int k = 0; k < 3; ++k) { - lo[k] = std::min(lo[k], positions[i * 3 + k]); - hi[k] = std::max(hi[k], positions[i * 3 + k]); - } - float extent = std::max(hi[0]-lo[0], std::max(hi[1]-lo[1], hi[2]-lo[2])); - if (!std::isfinite(extent) || extent <= 0) return 1; + textureSize < 64 || textureSize > 8192 || padding > 32 || (flags & ~3u)) return Invalid; + if (int code = ValidateMesh(positions, vertexCount, indices, indexCount)) return code; try { - unsigned int opts = (flags & 1 ? meshopt_RemeshSolve : 0) | (flags & 2 ? meshopt_RemeshShell : 0); - size_t count = meshopt_remesh(nullptr, 0, indices, indexCount, positions, vertexCount, 12, resolution, opts); - if (!count) return 3; - if (count > MaxTriangles) return 2; - std::vector corners(count * 9); - count = meshopt_remesh(corners.data(), count, indices, indexCount, positions, vertexCount, 12, resolution, opts); - if (!count) return 3; - corners.resize(count * 9); - std::vector remap(count * 3), idx(count * 3); - size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, count * 3, corners.data(), count * 3, 12); - std::vector pos(unique * 3); - meshopt_remapVertexBuffer(pos.data(), corners.data(), count * 3, 12, remap.data()); - meshopt_remapIndexBuffer(idx.data(), nullptr, count * 3, remap.data()); - size_t simplified = meshopt_simplifyWithUpdate(idx.data(), idx.size(), pos.data(), unique, 12, - nullptr, 0, nullptr, 0, nullptr, std::min(idx.size(), size_t(targetTriangles) * 3), error, - meshopt_SimplifyPreserveFolds | meshopt_SimplifyRegularizeLight, nullptr); - if (!simplified) return 3; - idx.resize(simplified); - - // simplifyWithUpdate is allowed to collapse/move vertices. On real meshes this can - // leave duplicate-index, zero-edge or near-zero-area triangles. xatlas keeps such - // faces as "invalid geometry" vertices with atlasIndex == -1; treating that as a - // generic unwrap failure makes one collapsed triangle abort the whole remesh. - // Filter them before normal generation/unwrap using the same relative area scale - // that xatlas sees after the normalization below. - float remeshLo[3] = {0, 0, 0}, remeshHi[3] = {0, 0, 0}; - bool haveRemeshBounds = false; - for (size_t i = 0; i < idx.size(); ++i) { - const unsigned int v = idx[i]; - if (v >= unique) return 6; - const float* p = &pos[size_t(v) * 3]; - if (!std::isfinite(p[0]) || !std::isfinite(p[1]) || !std::isfinite(p[2])) return 6; - if (!haveRemeshBounds) { - for (int k = 0; k < 3; ++k) remeshLo[k] = remeshHi[k] = p[k]; - haveRemeshBounds = true; - } else { - for (int k = 0; k < 3; ++k) { - remeshLo[k] = std::min(remeshLo[k], p[k]); - remeshHi[k] = std::max(remeshHi[k], p[k]); - } - } - } - if (!haveRemeshBounds) return 3; - const double remeshExtent = std::max(double(remeshHi[0] - remeshLo[0]), - std::max(double(remeshHi[1] - remeshLo[1]), double(remeshHi[2] - remeshLo[2]))); - if (!std::isfinite(remeshExtent) || remeshExtent <= 0.0) return 3; - const double minTriangleArea = remeshExtent * remeshExtent * double(FLT_EPSILON); - - std::vector cleaned; - cleaned.reserve(idx.size()); - for (size_t i = 0; i < idx.size(); i += 3) { - const unsigned int ia = idx[i + 0], ib = idx[i + 1], ic = idx[i + 2]; - if (ia == ib || ib == ic || ic == ia) continue; - const float* a = &pos[size_t(ia) * 3]; - const float* b = &pos[size_t(ib) * 3]; - const float* c = &pos[size_t(ic) * 3]; - const double abx = double(b[0]) - a[0], aby = double(b[1]) - a[1], abz = double(b[2]) - a[2]; - const double acx = double(c[0]) - a[0], acy = double(c[1]) - a[1], acz = double(c[2]) - a[2]; - const double cx = aby * acz - abz * acy; - const double cy = abz * acx - abx * acz; - const double cz = abx * acy - aby * acx; - const double area = 0.5 * std::sqrt(cx * cx + cy * cy + cz * cz); - if (!std::isfinite(area)) return 6; - if (area <= minTriangleArea) continue; - cleaned.push_back(ia); cleaned.push_back(ib); cleaned.push_back(ic); - } - if (cleaned.empty()) return 3; - idx.swap(cleaned); - simplified = idx.size(); - - // Drop vertices no surviving triangle references. Besides shrinking the xatlas - // input this guarantees every output xref points at geometry that can own UVs. - std::vector compactRemap(unique, ~0u); - std::vector compactPos; - compactPos.reserve(std::min(unique, simplified) * size_t(3)); - for (size_t i = 0; i < idx.size(); ++i) { - const unsigned int old = idx[i]; - unsigned int mapped = compactRemap[old]; - if (mapped == ~0u) { - mapped = unsigned(compactPos.size() / 3); - compactRemap[old] = mapped; - const float* p = &pos[size_t(old) * 3]; - compactPos.push_back(p[0]); compactPos.push_back(p[1]); compactPos.push_back(p[2]); - } - idx[i] = mapped; - } - pos.swap(compactPos); - unique = pos.size() / 3; - - std::vector normals(simplified * 3); - meshopt_generateNormals(normals.data(), idx.data(), idx.size(), pos.data(), unique, 12, crease, smoothing); - for (float n : normals) if (!std::isfinite(n)) return 6; - std::vector split(simplified); - for (size_t i = 0; i < simplified; ++i) { - std::memcpy(split[i].p, &pos[size_t(idx[i]) * 3], 12); - std::memcpy(split[i].n, &normals[i * 3], 12); - split[i].uv[0] = split[i].uv[1] = 0; - } - remap.resize(simplified); - unique = meshopt_generateVertexRemap(remap.data(), nullptr, simplified, split.data(), simplified, sizeof(Vertex)); - std::vector verts(unique); - meshopt_remapVertexBuffer(verts.data(), split.data(), simplified, sizeof(Vertex), remap.data()); - meshopt_remapIndexBuffer(idx.data(), nullptr, simplified, remap.data()); - std::unique_ptr atlas(xatlas::Create()); - if (!atlas) return 6; - - // xatlas uses absolute float epsilons for colocal and zero-area checks. Feed it a - // uniformly normalized copy so those tests are scale-relative; the real output - // positions remain in verts and are restored through xref after packing. - std::vector atlasVerts = verts; - float atlasLo[3] = {atlasVerts[0].p[0], atlasVerts[0].p[1], atlasVerts[0].p[2]}; - float atlasHi[3] = {atlasLo[0], atlasLo[1], atlasLo[2]}; - for (const Vertex& v : atlasVerts) - for (int k = 0; k < 3; ++k) { - atlasLo[k] = std::min(atlasLo[k], v.p[k]); - atlasHi[k] = std::max(atlasHi[k], v.p[k]); - } - const float atlasExtent = std::max(atlasHi[0] - atlasLo[0], - std::max(atlasHi[1] - atlasLo[1], atlasHi[2] - atlasLo[2])); - if (!std::isfinite(atlasExtent) || atlasExtent <= 0) return 3; - const float atlasCenter[3] = { - (atlasLo[0] + atlasHi[0]) * 0.5f, - (atlasLo[1] + atlasHi[1]) * 0.5f, - (atlasLo[2] + atlasHi[2]) * 0.5f - }; - for (Vertex& v : atlasVerts) - for (int k = 0; k < 3; ++k) - v.p[k] = (v.p[k] - atlasCenter[k]) / atlasExtent; - - xatlas::MeshDecl decl; - decl.vertexPositionData = atlasVerts.data(); decl.vertexPositionStride = sizeof(Vertex); - decl.vertexNormalData = atlasVerts[0].n; decl.vertexNormalStride = sizeof(Vertex); - decl.vertexCount = uint32_t(unique); - decl.indexData = idx.data(); decl.indexCount = uint32_t(idx.size()); - decl.indexFormat = xatlas::IndexFormat::UInt32; - if (xatlas::AddMesh(atlas.get(), decl) != xatlas::AddMeshError::Success) return 4; - xatlas::ChartOptions charts; - xatlas::PackOptions pack; - pack.resolution = textureSize; pack.padding = padding; pack.bilinear = true; - xatlas::Generate(atlas.get(), charts, pack); - if (!atlas->meshCount || !atlas->width || !atlas->height || !atlas->atlasCount) return 7; - if (atlas->atlasCount != 1) return 5; - const xatlas::Mesh& mesh = atlas->meshes[0]; + PosMesh mesh; + if (int code = Voxelize(positions, vertexCount, indices, indexCount, resolution, RemeshOptions(flags), mesh)) return code; + if (int code = Simplify(mesh, targetTriangles, error, meshopt_SimplifyPreserveFolds | meshopt_SimplifyRegularizeLight, nullptr)) return code; + UnwrapOptions options; + options.pack.resolution = textureSize; options.pack.padding = padding; options.pack.bilinear = true; auto result = std::make_unique(); - result->vertices.resize(mesh.vertexCount); - for (uint32_t i = 0; i < mesh.vertexCount; ++i) { - const auto& v = mesh.vertexArray[i]; - if (v.atlasIndex != 0 || v.xref >= verts.size()) return 8; - result->vertices[i] = verts[v.xref]; - result->vertices[i].uv[0] = v.uv[0] / atlas->width; - result->vertices[i].uv[1] = v.uv[1] / atlas->height; - } - result->indices.assign(mesh.indexArray, mesh.indexArray + mesh.indexCount); - *outVertices = mesh.vertexCount; *outIndices = mesh.indexCount; - *handle = result.release(); - return 0; - } catch (...) { return 6; } + if (int code = Unwrap(mesh, crease, smoothing, options, *result)) return code; + *outVertices = uint32_t(result->vertices.size()); *outIndices = uint32_t(result->indices.size()); + Publish(result, handle); + return Ok; + } catch (...) { return Internal; } } EXPORT int meshLabRemeshCopy(void* handle, float* vertices, uint32_t vertexCapacity, uint32_t* indices, uint32_t indexCapacity) { const auto* r = static_cast(handle); - if (!r || !vertices || !indices || vertexCapacity < r->vertices.size() || indexCapacity < r->indices.size()) return 1; + if (!r || !vertices || !indices || vertexCapacity < r->vertices.size() || indexCapacity < r->indices.size()) return Invalid; std::memcpy(vertices, r->vertices.data(), r->vertices.size() * sizeof(Vertex)); std::memcpy(indices, r->indices.data(), r->indices.size() * sizeof(uint32_t)); - return 0; + return Ok; +} + +// ── Staged API (ABI 2) ── + +// Stage 1: voxel remesh + weld. Output: indexed positions (float3) in a mesh handle. +EXPORT int meshLabVoxelRemesh(const float* positions, uint32_t vertexCount, + const uint32_t* indices, uint32_t indexCount, int resolution, uint32_t flags, + void** handle, uint32_t* outVertices, uint32_t* outIndices) +{ + if (!handle || !outVertices || !outIndices) return Invalid; + *handle = nullptr; *outVertices = 0; *outIndices = 0; + if (resolution < 4 || resolution > 256 || (flags & ~3u)) return Invalid; + if (int code = ValidateMesh(positions, vertexCount, indices, indexCount)) return code; + try { + auto mesh = std::make_unique(); + if (int code = Voxelize(positions, vertexCount, indices, indexCount, resolution, RemeshOptions(flags), *mesh)) return code; + if (int code = Clean(*mesh)) return code; + *outVertices = uint32_t(mesh->pos.size() / 3); *outIndices = uint32_t(mesh->idx.size()); + Publish(mesh, handle); + return Ok; + } catch (...) { return Internal; } +} + +// Stage 2: quadric simplification of an indexed mesh (moved vertex positions are kept), +// degenerate cleanup and compaction. targetTriangles == 0 means error-limited only. +// error is relative to the mesh extent, as in meshoptimizer. +EXPORT int meshLabSimplify(const float* positions, uint32_t vertexCount, + const uint32_t* indices, uint32_t indexCount, uint32_t targetTriangles, float error, uint32_t flags, + void** handle, uint32_t* outVertices, uint32_t* outIndices, float* outError) +{ + if (!handle || !outVertices || !outIndices) return Invalid; + *handle = nullptr; *outVertices = 0; *outIndices = 0; + if (outError) *outError = 0; + if (targetTriangles > MaxTriangles || !std::isfinite(error) || error < 0 || error > 1 || (flags & ~31u)) return Invalid; + if (int code = ValidateMesh(positions, vertexCount, indices, indexCount)) return code; + try { + auto mesh = std::make_unique(); + mesh->pos.assign(positions, positions + size_t(vertexCount) * 3); + mesh->idx.assign(indices, indices + indexCount); + if (int code = Simplify(*mesh, targetTriangles, error, SimplifyOptions(flags), outError)) return code; + *outVertices = uint32_t(mesh->pos.size() / 3); *outIndices = uint32_t(mesh->idx.size()); + Publish(mesh, handle); + return Ok; + } catch (...) { return Internal; } +} + +EXPORT int meshLabMeshCopy(void* handle, float* positions, uint32_t vertexCapacity, + uint32_t* indices, uint32_t indexCapacity) +{ + const auto* m = static_cast(handle); + if (!m || !positions || !indices || vertexCapacity < m->pos.size() / 3 || indexCapacity < m->idx.size()) return Invalid; + std::memcpy(positions, m->pos.data(), m->pos.size() * sizeof(float)); + std::memcpy(indices, m->idx.data(), m->idx.size() * sizeof(uint32_t)); + return Ok; +} + +// Stage 3: crease-aware normals + xatlas unwrap with explicit chart/pack options (see +// ParseUnwrapOptions for the layout). Output is a Result handle: copy with +// meshLabUnwrapCopy, free with meshLabRemeshDestroy. +EXPORT int meshLabUnwrap(const float* positions, uint32_t vertexCount, + const uint32_t* indices, uint32_t indexCount, float crease, float smoothing, + const float* options, uint32_t optionCount, + void** handle, uint32_t* outVertices, uint32_t* outIndices, uint32_t* outCharts) +{ + if (!handle || !outVertices || !outIndices) return Invalid; + *handle = nullptr; *outVertices = 0; *outIndices = 0; + if (outCharts) *outCharts = 0; + if (!std::isfinite(crease) || crease < 0 || crease > 3.141593f || + !std::isfinite(smoothing) || smoothing < 0 || smoothing > 10) return Invalid; + if (int code = ValidateMesh(positions, vertexCount, indices, indexCount)) return code; + UnwrapOptions parsed; + if (int code = ParseUnwrapOptions(options, optionCount, parsed)) return code; + try { + PosMesh mesh; + mesh.pos.assign(positions, positions + size_t(vertexCount) * 3); + mesh.idx.assign(indices, indices + indexCount); + if (int code = Clean(mesh)) return code; + auto result = std::make_unique(); + if (int code = Unwrap(mesh, crease, smoothing, parsed, *result)) return code; + int32_t charts = 0; + for (int32_t c : result->charts) charts = std::max(charts, c + 1); + if (outCharts) *outCharts = uint32_t(charts); + *outVertices = uint32_t(result->vertices.size()); *outIndices = uint32_t(result->indices.size()); + Publish(result, handle); + return Ok; + } catch (...) { return Internal; } +} + +// charts may be null; otherwise it receives the xatlas chart index of every vertex. +EXPORT int meshLabUnwrapCopy(void* handle, float* vertices, uint32_t vertexCapacity, + uint32_t* indices, uint32_t indexCapacity, int32_t* charts) +{ + const auto* r = static_cast(handle); + if (int code = meshLabRemeshCopy(handle, vertices, vertexCapacity, indices, indexCapacity)) return code; + if (charts) std::memcpy(charts, r->charts.data(), r->charts.size() * sizeof(int32_t)); + return Ok; } diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp index 176fd050..cb98b7ec 100644 --- a/Native~/tests/remesh_test.cpp +++ b/Native~/tests/remesh_test.cpp @@ -9,13 +9,21 @@ extern "C" int meshLabRemeshBuild(const float*, uint32_t, const uint32_t*, uint3 int, uint32_t, float, float, float, uint32_t, uint32_t, uint32_t, void**, uint32_t*, uint32_t*); extern "C" int meshLabRemeshCopy(void*, float*, uint32_t, uint32_t*, uint32_t); extern "C" void meshLabRemeshDestroy(void*); +extern "C" int meshLabVoxelRemesh(const float*, uint32_t, const uint32_t*, uint32_t, int, uint32_t, void**, uint32_t*, uint32_t*); +extern "C" int meshLabSimplify(const float*, uint32_t, const uint32_t*, uint32_t, uint32_t, float, uint32_t, + void**, uint32_t*, uint32_t*, float*); +extern "C" int meshLabMeshCopy(void*, float*, uint32_t, uint32_t*, uint32_t); +extern "C" void meshLabMeshDestroy(void*); +extern "C" int meshLabUnwrap(const float*, uint32_t, const uint32_t*, uint32_t, float, float, + const float*, uint32_t, void**, uint32_t*, uint32_t*, uint32_t*); +extern "C" int meshLabUnwrapCopy(void*, float*, uint32_t, uint32_t*, uint32_t, int32_t*); static void check(bool condition, const char* message) { if (!condition) { std::cerr << message << '\n'; std::exit(1); } } int main() { float p[] = {-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1, -1,-1,1, 1,-1,1, 1,1,1, -1,1,1}; uint32_t t[] = {0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5}; - check(meshLabRemeshVersion() == 1, "ABI version"); + check(meshLabRemeshVersion() == 2, "ABI version"); void* h = nullptr; uint32_t v = 0, n = 0; check(meshLabRemeshBuild(p,8,t,36,3,100,0.01f,1,0,256,4,1,&h,&v,&n)==1 && !h, "reject grid resolution"); t[0]=99; @@ -70,5 +78,44 @@ int main() { } check(tris[2] > tris[0] && tris[3] > tris[1], "shell flag reaches meshopt"); std::cout << "cube solid/shell: " << tris[1] << " / " << tris[3] << " triangles\n"; + // Staged API: voxel -> simplify -> unwrap, each on plain indexed buffers. + { + uint32_t vc = 0, ic = 0; + check(meshLabVoxelRemesh(p,8,t,36,3,1,&h,&vc,&ic)==1 && !h, "staged: reject grid resolution"); + check(meshLabVoxelRemesh(p,8,t,36,32,1,&h,&vc,&ic)==0 && h && vc>0 && ic%3==0, "staged: voxel remesh"); + std::vector vp(vc*3); std::vector vi(ic); + check(meshLabMeshCopy(h,vp.data(),vc-1,vi.data(),ic)==1, "staged: mesh copy capacity guard"); + check(meshLabMeshCopy(h,vp.data(),vc,vi.data(),ic)==0, "staged: mesh copy"); + meshLabMeshDestroy(h); h=nullptr; + + // Error-limited simplification (no triangle budget, no regularization) must collapse + // the flat cube faces far below the uniform voxel density. + uint32_t sc = 0, si = 0; float achieved = -1; + check(meshLabSimplify(vp.data(),vc,vi.data(),ic,0,0.01f,4,&h,&sc,&si,&achieved)==0 && h, "staged: adaptive simplify"); + check(si>0 && si%3==0 && si*4 < ic && achieved>=0, "staged: flat faces collapse"); + std::vector sp(sc*3); std::vector sidx(si); + check(meshLabMeshCopy(h,sp.data(),sc,sidx.data(),si)==0, "staged: simplified copy"); + for (auto i:sidx) check(i0 && n>0 && n%3==0 && charts>0, "staged: unwrap counts"); + std::vector uv(v*8); std::vector ui(n); std::vector uc(v); + check(meshLabUnwrapCopy(h,uv.data(),v,ui.data(),n,uc.data())==0, "staged: unwrap copy"); + for (auto i:ui) check(i=0 && uint32_t(c)=0 && uv[i*8+k]<=1, "staged: normalized UV"); + meshLabRemeshDestroy(h); h=nullptr; + std::cout << "staged: " << ic/3 << " voxel -> " << si/3 << " simplified triangles, " << charts << " charts\n"; + } + meshLabMeshDestroy(nullptr); meshLabRemeshDestroy(nullptr); } diff --git a/Shaders/RemeshPreview.shader b/Shaders/RemeshPreview.shader new file mode 100644 index 00000000..1f34122c --- /dev/null +++ b/Shaders/RemeshPreview.shader @@ -0,0 +1,52 @@ +// Remesh & Bake preview: headlight shading, optional base map, vertex colour or +// flat colour; also draws wireframe line meshes. No LightMode tag, so Built-in, +// URP and PreviewRenderUtility all render it. +Shader "Hidden/MeshLab/RemeshPreview" +{ + Properties + { + _MainTex ("Base", 2D) = "white" {} + _Color ("Color", Color) = (1,1,1,1) + _UseTexture ("Use texture", Float) = 0 + _UseVertexColor ("Use vertex colour", Float) = 0 + _Lit ("Lit", Float) = 1 + _DepthOffset ("Depth offset", Float) = 0 + } + SubShader + { + Tags { "Queue" = "Geometry" } + Cull Off + Offset [_DepthOffset], [_DepthOffset] + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + sampler2D _MainTex; + float4 _Color; + float _UseTexture, _UseVertexColor, _Lit; + struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float2 uv : TEXCOORD0; float4 color : COLOR; }; + struct v2f { float4 pos : SV_POSITION; float3 normal : TEXCOORD0; float2 uv : TEXCOORD1; float4 color : COLOR; float3 view : TEXCOORD2; }; + v2f vert(appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.normal = UnityObjectToWorldNormal(v.normal); + o.view = normalize(WorldSpaceViewDir(v.vertex)); + o.uv = v.uv; + o.color = v.color; + return o; + } + float4 frag(v2f i) : SV_Target + { + float4 c = _Color; + if (_UseTexture > 0.5) c *= tex2D(_MainTex, i.uv); + if (_UseVertexColor > 0.5) c *= i.color; + if (_Lit > 0.5) c.rgb *= 0.25 + 0.75 * abs(dot(normalize(i.normal), i.view)); + return c; + } + ENDCG + } + } +} diff --git a/Shaders/RemeshPreview.shader.meta b/Shaders/RemeshPreview.shader.meta new file mode 100644 index 00000000..1d7f6531 --- /dev/null +++ b/Shaders/RemeshPreview.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1080735149b842fab0b7ecaf10e04fb7 +ShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 0c03ddef..427ebf6b 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -16,6 +16,7 @@ static RemeshSource Source() normals = new[] { Vector3.forward, Vector3.forward, Vector3.forward }, tangents = new[] { new Vector4(1,0,0,1), new Vector4(1,0,0,1), new Vector4(1,0,0,1) }, uv = new[] { Vector2.zero, Vector2.right, Vector2.up }, indices = new[] { 0,1,2 }, + colors = new[] { new Color(1,0,0,0.25f), new Color(0,1,0,0.5f), new Color(0,0,1,1) }, hasColors = true, faceMaterials = new[] { 0 }, diagonal = Mathf.Sqrt(2), materials = new[] { new RemeshSource.Surface { color = Map(), normal = Map(), metal = Map(), ao = Map(), emission = Map(), tint = new Color(0.25f,0.5f,0.75f), emissionTint = new Color(4,2,1), metallic = 0.8f, @@ -28,6 +29,9 @@ public void SettingsRejectNaNAndInvalidResolution() Assert.Throws(() => new RemeshSettings { maximumError = float.NaN }.Validate()); Assert.Throws(() => new RemeshSettings { textureResolution = 1000 }.Validate()); Assert.Throws(() => new RemeshSettings { projectionDistance = 0 }.Validate()); + Assert.Throws(() => new RemeshSettings { bakeSamples = 3 }.Validate()); + Assert.Throws(() => new RemeshSettings { chartIterations = 0 }.Validate()); + Assert.DoesNotThrow(() => new RemeshSettings { targetTriangles = 0 }.Validate()); } [Test] public void BarycentricSupportsBothWindings() @@ -100,6 +104,49 @@ public void SourceRootFollowsSelectionAndResolvesLodChildren() } } [Test] + public void MultisamplingCoversThinChartEdges() + { + var source=Source(); + // A band between texel centres at 64² (row 6 centre is v=0.1016): centre-only + // sampling sees no texel at all, 4×4 samples at v=0.1035 do. + var sliver=new RemeshNative.Geometry { positions=source.positions, normals=source.normals, + uv=new[] { new Vector2(0.1f,0.103f), new Vector2(0.9f,0.103f), new Vector2(0.9f,0.104f) }, indices=source.indices }; + Assert.Throws(() => RemeshBaker.Bake(source,sliver,source.tangents, + new RemeshSettings { textureResolution=64,padding=1,bakeSamples=1 },CancellationToken.None)); + var super=RemeshBaker.Bake(source,sliver,source.tangents,new RemeshSettings { textureResolution=64,padding=1,bakeSamples=16 },CancellationToken.None); + Assert.That(super.covered, Is.GreaterThan(0)); + Assert.That(super.misses, Is.Zero); + } + [Test] + public void VertexColorAndAlphaTransferIndependently() + { + var source=Source(); + var target=new RemeshNative.Geometry { positions=source.positions, normals=source.normals, uv=source.uv, indices=source.indices }; + var bvh=new TriangleBvh(source.positions,source.indices); + var both=RemeshBaker.TransferVertexColors(source,target,bvh,new RemeshSettings { transferVertexColor=true,transferVertexAlpha=true },CancellationToken.None); + Assert.That(both[0].r, Is.EqualTo(1).Within(1e-4f)); + Assert.That(both[1].g, Is.EqualTo(1).Within(1e-4f)); + Assert.That(both[0].a, Is.EqualTo(0.25f).Within(1e-4f)); + var alpha=RemeshBaker.TransferVertexColors(source,target,bvh,new RemeshSettings { transferVertexAlpha=true },CancellationToken.None); + Assert.That(alpha[2].a, Is.EqualTo(1).Within(1e-4f)); + Assert.That(alpha[2].b, Is.EqualTo(1)); + Assert.That(alpha[1].a, Is.EqualTo(0.5f).Within(1e-4f)); + Assert.That(alpha[1].g, Is.EqualTo(1).Within(1e-4f)); + Assert.That(alpha[1].r, Is.EqualTo(1).Within(1e-4f)); + } + [Test] + public void UvIslandNormalsAreHardOnlyAtSplitVertices() + { + // Two faces folded 90° along x. Shared vertices smooth; split vertices stay hard. + var p=new[] { Vector3.zero, Vector3.right, Vector3.forward, Vector3.up, Vector3.zero, Vector3.right }; + var shared=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=new[] { 0,1,2, 1,0,3 } }; + RemeshNative.SmoothWithinSplitVertices(shared); + Assert.That(Vector3.Angle(shared.normals[0], Vector3.Normalize(new Vector3(0,-1,-1))), Is.LessThan(0.01f)); + var split=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=new[] { 0,1,2, 5,4,3 } }; + RemeshNative.SmoothWithinSplitVertices(split); + Assert.That(Vector3.Angle(split.normals[0], split.normals[4]), Is.EqualTo(90).Within(0.01f)); + } + [Test] public void ImageSamplingUsesLinearInterpolationAndWrapModes() { var image=new RemeshSource.Image { width=2,height=1,pixels=new[] { new Color32(0,0,0,255),new Color32(255,255,255,255) }, From 646481d09bba81198fd638bef85553112792ad24 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 26 Sep 2026 02:39:21 +0000 Subject: [PATCH 017/130] docs(remesh): describe stages, previews, hard edges and bake options Workflow section rewritten around the four stages and the preview panel, geometry section names the ABI 2 exports, limitations reflect the non-Standard shader fallback, validation lists the new native and EditMode coverage. README and CHANGELOG updated to match. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 + Documentation~/REMESH_AND_BAKE.md | 110 ++++++++++++++++++++++-------- README.md | 7 +- 3 files changed, 88 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b46c9f4..d4559dba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ### Added - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. +- **Remesh & Bake stages and previews** — the tab runs Voxel remesh → Simplify → Normals & UV → Bake as separate stages with their own settings, each re-runnable without repeating earlier ones (stale stages are marked and refreshed first). A right-hand preview shows an orbitable 3D view of any stage (wireframe, shading, baked base color, vertex colors), the UV layout with tinted islands over the baked base color, and every baked map. Simplification is error-driven and adaptive by default (flat areas collapse, detail keeps density) with optional light/strong regularization, fold preservation and small-part pruning; the triangle count is now a stopping point, not required. Hard edges: smooth, crease angle, UV island borders, or both. xatlas island and packing options are exposed. Baking supersamples 1/4/9/16 samples per texel with conservative edge coverage and can transfer source vertex color and vertex alpha to the result mesh. Native remesh ABI is now 2 (`meshLabVoxelRemesh`, `meshLabSimplify`, `meshLabUnwrap`); rebuild the plugins. - **Per-target Transfer diagnostic summary** — `GroupedShellTransfer.TransferCore` emits a single Info line at the end of every transfer when `UvtLog.Category.TransferDiag` is enabled in the Log filters panel. Reports source/target shell counts, `shellsMatched` / `shellsRejected`, `ShellStatus` histogram (Accepted/Degraded/Poor/Rejected/Unmatched), method histogram (interp/xform/merged), `fragmentsMerged`, `dedupConflicts`, `shellsOverlapFixed`, `consistencyCorrected`, mean/max 3D match distance, and topology iterations/fixed/capHit. Lets the identity-sanity and per-LOD ratio sweep checklists in `Documentation~/TRANSFER_LOD_QUALITY_PLAN.md` be run without trawling verbose per-shell output. New category bit slots into the existing Log filters UI automatically. - **`UvProgress` service** (`Editor/Framework/UvProgress.cs`) — central non-modal progress reporting. Routes status to `UnityEditor.Progress` (Background Tasks panel) plus an inline strip drawn at the bottom of the hub window. Supports nested scopes, phase labels, indeterminate/determinate fractions, cooperative cancellation via `UvProgress.CancelRequested` (`Volatile.Read`-backed `_cancelFlag` so background `Task.Run` work observes user-cancel reliably across the memory barrier), a thread-safe `ReportFromBackground` for `Task.Run` callers (with `Interlocked.Exchange`-guarded snapshot/clear so a racing writer can't lose an update; the `EditorApplication.update` pump is hooked once on assembly load from the main thread via `[InitializeOnLoadMethod]`), and a `Last` outcome shown while idle. - **Inline progress strip in `UvToolHub`** — sits at the bottom of the window as a status bar. Reserves fixed height unconditionally so toggling active state doesn't displace any layout. Shows title · phase · detail · elapsed in distinct columns with a Cancel button pinned to the right; while idle displays `✓ / ✗ Last-operation · 12.3s`. Marquee animation for indeterminate fractions; orange tint while cancelling. @@ -67,6 +68,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **Remesh & Bake capture and save** — Read/Write-disabled source meshes are read from the imported asset instead of an empty `Instantiate` clone ("Not allowed to access uv"), shaders other than Standard/URP Lit bake from common property names with a warning instead of aborting, and Save refreshes a folder the panel just created instead of failing with "Could not create result folder". - **Remesh & Bake tab** — Source root now follows the selection (a LOD child resolves to its LODGroup) instead of being read once when the tab first opened, which left Generate & Bake disabled after selecting a model as the status text asks. Generate & Bake and Save end the IMGUI event after they change the sidebar or open the modal folder panel, so the first run no longer logs a `Getting control N's position` layout error. Cancel reports that it is waiting for the current phase, and the result line reads the index count instead of copying `Mesh.triangles` on every GUI event. - **`MeshoptNative` simplify flags** — `SimplifySparse` / `SimplifyErrorAbsolute` were swapped relative to `meshoptimizer.h` (`Sparse = 2`, `ErrorAbsolute = 4`). No caller passed either flag, so behaviour is unchanged. - **UV transfer / repack correctness** — Repack normalizes UV0 shell winding at its own API boundary instead of assuming the optional Weld stage ran; source meshes with incomplete (non-empty but short) UV0/UV2 channels are rejected before indexing; cancelled transfers drop their partial UV2 output; post-pack density correction stays inside each packed chart; `RepackUv` forwards its rotate flag to xatlas; the UV2 clamp toggle is independently editable; `Apply UV2` is reachable after a source-only repack; cross-LOD hints are isolated per mesh group (#128, #156, #170–#173, #180–#181, #183). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index cf87619f..7ea13a66 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -6,34 +6,76 @@ meshes, materials, importers, scene objects and LODGroups are not replaced. ## Workflow -1. Select a static model root. **Source root** follows the selection: a LOD child - resolves to its LODGroup, and selections without a MeshRenderer (lights, - cameras) are ignored. An object dragged into the field holds until the - selection changes. Active/enabled MeshRenderers under it are combined - in root-local coordinates; LODGroups contribute LOD0 only, collision nodes are - excluded. Skinned renderers are rejected. Every contributing submesh needs UV0 - and an opaque Standard (metallic) or URP/Lit material. -2. Set voxel resolution (4–256), target triangles and maximum geometric error. - The triangle count is a target: the error limit can stop reduction earlier. - Higher voxel resolution preserves smaller gaps but increases intermediate cost. -3. Choose atlas resolution, padding and projection distance (fraction of the - source bounds diagonal). Generate & Bake runs native geometry processing and - CPU BVH projection off the main thread. Texture snapshots and Unity mesh/asset - APIs stay on the main thread. -4. Inspect the triangle count, color atlas and projection-miss report. Missed - covered texels are magenta, not silently patched with unrelated material data. - Increase projection distance or adjust remesh settings if needed. -5. Save to a folder under Assets. A unique output folder contains the mesh asset, - material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a - linear floating-point Emission EXR. Source files are never overwritten. - Instantiate the saved prefab to inspect the actual lighting and silhouette. +The tab runs four stages. Each stage has its own settings and button; running a +stage first brings every earlier stage up to date (missing output or changed +settings, marked "settings changed" in its header) and clears everything after it. +**Run all stages** re-runs the whole chain. The right panel previews the result: + +- **3D** — orbitable view (drag to orbit, scroll to zoom) of the source, voxel + remesh, simplified mesh or final result, with wireframe, shading, baked base + color and vertex color toggles. +- **UV** — the final UV layout with islands tinted and the baked base color under + it; island count, triangle count and texel usage. +- **Maps** — each baked map (base color, normal, metallic/smoothness, occlusion, + emission). + +1. **Source.** Select a static model root. **Source root** follows the + selection: a LOD child resolves to its LODGroup, and selections without a + MeshRenderer (lights, cameras) are ignored. An object dragged into the field + holds until the selection changes. Active/enabled MeshRenderers under it are + combined in root-local coordinates; LODGroups contribute LOD0 only, collision + nodes are excluded. Skinned renderers are rejected. Every contributing submesh + needs UV0. Read/Write-disabled imports are read from the imported asset. +2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided + shell. Higher resolution preserves smaller gaps but produces a denser, + uniform intermediate mesh. +3. **Simplify** — quadric simplification of the voxel mesh. It collapses the + cheapest edges first, so with *Regularize = None* flat areas reduce to a few + large triangles while curved or detailed areas keep their density. *Maximum + error* is relative to the mesh size. *Stop at triangles* ends simplification + at that count or at the error limit, whichever comes first; 0 lets the error + alone decide. *Light/Strong* regularization evens out triangle sizes instead. + *Preserve folds* keeps sharp creases; *Remove small parts* drops tiny + disconnected pieces. Turn *Simplify* off to unwrap the voxel mesh as is. +4. **Normals & UV** — *Hard edges*: + - *Smooth* — no hard edges. + - *Angle* — edges sharper than *Crease angle*. + - *UV islands* — hard exactly along UV island borders, smooth inside each + island (the usual choice for baked normal maps). + - *UV islands + angle* — both. + + *Islands & packing* exposes the xatlas chart options: max cost (lower = more, + smaller islands), normal deviation, hard-edge seam weight (islands prefer to + break on hard edges), straightness, roundness, iterations, max island area and + border length (source units, 0 = unlimited), rotation, 4×4 block alignment and + brute-force packing. Texture size and padding set the atlas. +5. **Bake** — projection distance (fraction of the source bounds diagonal), + *Samples per texel* (1, 4, 9 or 16; stratified supersampling that also covers + texels only partly inside an island, for clean chart edges and less aliasing) + and vertex color transfer: *Vertex color (RGB)* and *Vertex alpha* copy the + source vertex colors, interpolated at the nearest source surface point, onto + the result mesh independently. Missed covered texels are magenta, not silently + patched with unrelated material data. +6. **Save** to a folder under Assets. A unique output folder contains the mesh + asset (with transferred vertex colors), material, prefab and + BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a linear + floating-point Emission EXR. Source files are never overwritten. + +Native work (remesh, simplify, unwrap) and CPU projection run off the main thread. +Texture snapshots and Unity mesh/asset APIs stay on the main thread. ## Geometry implementation `Native~/src/remesh.cpp` uses meshoptimizer v1.3 (`9e1f07b159d3cb777f1c67ed31fc11fd117986f4`, 2026-09-25), pinned by full commit SHA. -The sequence is voxel remesh, position weld, simplifyWithUpdate with PreserveFolds -and RegularizeLight, crease-aware normal generation, then xatlas full unwrap. +Staged exports (ABI 2) run voxel remesh + position weld (`meshLabVoxelRemesh`), +simplifyWithUpdate with the selected regularize/fold/prune options plus degenerate +cleanup (`meshLabSimplify`), and crease-aware normal generation + xatlas unwrap +with explicit chart/pack options (`meshLabUnwrap`, which also returns each +vertex's island). The original one-shot `meshLabRemeshBuild` remains for the +native tests. "UV islands" hard edges are computed in C#: xatlas splits vertices +along island borders, so averaging face normals per output vertex smooths inside +islands and leaves their borders hard. v1.3 removed the non-functional Thicken flag and renumbered `meshopt_RemeshShell` and `meshopt_RemeshSolve`. The bridge keeps its own flag bits (1 = fit source surface, 2 = two-sided shell) and maps them by name, so the C# ABI is unchanged; @@ -70,8 +112,11 @@ compression or max-size settings. - Experimental triangle remeshing, not animation-ready quad retopology. Thin sheets, tiny gaps and adjacent disconnected parts can collapse or merge. -- No skinning, blend-shape, custom shader, HDRP, alpha cutout/transparency, - parallax or detail-layer transfer. Unsupported material modes fail explicitly. +- No skinning, blend-shape, alpha cutout/transparency, parallax or detail-layer + transfer. Shaders other than Standard and URP/Lit bake base color, normal, + occlusion, emission and scalar metallic/smoothness from common property names; + every such downgrade is logged as a warning. Result materials target Built-in + and URP; HDRP export is not implemented. - CPU projection is slower than a dedicated GPU baker, particularly at 4K. Source snapshot/readback and export are synchronous editor operations. - Cancellation is observed after the current native remesh/unwrap completes, @@ -99,17 +144,24 @@ checks finite data, normalized normals/UVs and valid indices, verifies the targe budget under relaxed error, repeated owned-handle cleanup and invalid input/copy capacity rejection. It also runs every solve/shell flag combination and requires the two-sided shell of the closed cube to be larger than the solid remesh, so a -flag that stops reaching meshoptimizer fails the build. CI runs it on all three -native platforms. +flag that stops reaching meshoptimizer fails the build. The staged exports are +tested separately: voxel output copy and capacity guard, error-limited +simplification collapsing the flat cube faces far below the voxel density, +rejection of unknown flags and malformed unwrap options, and an unwrap whose +indices, island ids and UVs are all in range. CI runs it on all three native +platforms. Unity Test Runner: `RemeshBakeTests` covers UV raster barycentrics, separate material channels/HDR emission, source-normal to destination-tangent projection, image -sampling/wrapping, coincident-surface projection and cancellation. Run these in +sampling/wrapping, coincident-surface projection and cancellation, multisampled +coverage of a chart thinner than a texel, independent vertex color/alpha transfer, +UV-island hard edges and source-root selection following. Run these in Unity 6000.0+ after the native binaries are updated. The repository's Unity CI is license-gated; a skipped job is not a passed compilation/test run. Manual gate: textured multi-submesh prop, nested transforms including negative scale, normal-mapped high-poly with bevels, thin sheet, LODGroup, 4K source texture, -missed projection, cancel/tab switch, and export/reimport in Built-in and URP. +missed projection, cancel/tab switch, each hard-edge mode, every preview view, a +Read/Write-disabled FBX, a non-Standard shader, and export/reimport in Built-in and URP. Compare actual rendered output against the source and confirm the source assets remain byte-for-byte unchanged. diff --git a/README.md b/README.md index f044b285..6e3aa143 100644 --- a/README.md +++ b/README.md @@ -47,8 +47,11 @@ Diagnostic and benchmarking blocks (Parameter Sweep, Log Filters, UV0 Analysis & ## Remesh & Bake Create a new low-poly static model with fresh UV0 and reprojected base color, normal, -metallic/smoothness, occlusion and emission maps. Available in the **Remesh & Bake** -tab for opaque Standard and URP/Lit materials. Native binaries are produced by the +metallic/smoothness, occlusion and emission maps. The **Remesh & Bake** tab runs voxel +remesh → adaptive simplification → hard edges & UV unwrap → multisampled bake as +separate stages, with 3D, UV and map previews and optional vertex color/alpha +transfer. Standard and URP/Lit materials transfer fully; other shaders bake from +common property names with a warning. Native binaries are produced by the **Build Native Libraries** workflow. See [workflow, limitations and validation](Documentation~/REMESH_AND_BAKE.md). ## LOD Generation From 9a67e598d0e610c3025ac4ec5b769a4e21db5fad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Sep 2026 02:40:44 +0000 Subject: [PATCH 018/130] Build native libraries (auto) [skip ci] --- Plugins/macOS/libxatlas-unity.dylib | Bin 1032200 -> 1049096 bytes Plugins/x86_64/libxatlas-unity.so | Bin 625200 -> 630192 bytes Plugins/x86_64/xatlas-unity.dll | Bin 415232 -> 414208 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/macOS/libxatlas-unity.dylib b/Plugins/macOS/libxatlas-unity.dylib index 84e1f00fde33f06275bb0d753d33430d6dfacecc..7d69b83db7779ecf7f5e095a6165c8b781c33c9b 100644 GIT binary patch delta 136418 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 YP+Af5LS6n-DI3?@?6tG+@t2VQ15gTMlK=n! delta 124980 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

@ZGAd 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 bSkrU01Jv`K;mMNqAu+Z-TUF?Wke2@scrk!t delta 144614 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

WbsD`&qnB&+!ZKQ||8vU#x&BYn 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 delta 84200 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 C%Q=+* From 6155be0643bc1c496467e9a30e9f1c4f3b1f52dd Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 16:55:25 +0200 Subject: [PATCH 019/130] feat(remesh): save the result as an FBX; keep quads on re-saves; fix security gate findings Remesh & Bake: with com.unity.formats.fbx installed, Save exports the remeshed mesh (Name_LOD0 with generated normals, UV0, tangents and transferred vertex colors) as a binary FBX and writes a prefab that instantiates it with the curated material; the mesh .asset is no longer produced. The result importer is pinned to materialImportMode None so no duplicate MaterialDescription material is generated. Without the package the previous .asset + prefab output stays, with an inline install hint. New geometry in a fresh unique folder cannot go through the isolated re-save core (same-vertex-count snapshot contract), so the direct ModelExporter call is documented as the single out-of-core carve-out in the FBX pipeline checklist, section 12. FBX re-saves no longer triangulate quad meshes: the isolated-export core behind Vertex AO saves and narrow-intent UV/channel overwrites enables keepQuads on the source importer in Phase 1, so the serialized clone keeps the FBX's original polygon topology. keepQuads only reshapes the index buffer (vertex order/count untouched), so the snapshot/clone vertex-count contract holds, and the value persists so the re-saved file is not re-triangulated on the next import. Variant exports toggle keepQuads only for the clone reimport and restore the source importer afterwards (also on failure), pinning it on the new variant file instead. Mimosa pre-commit gate (4 high findings, all pre-existing): - git is now invoked through Process instances with verbatim ProcessStartInfo.ArgumentList tokens only: git options are allow-listed, the backup feature validates its repo-relative Assets/ operand, and the provenance probe uses fixed literal tokens per command. No command-line string is assembled anywhere, so an asset path interpolated into a revision like main: cannot inject git options. - The benchmark gallery generator routes every write through a validating writer that resolves the output directory, requires the target to be a direct child with the exact sanitized basename (CSV-derived lodGroup names are stripped to [A-Za-z0-9._-]), and refuses anything escaping the gallery directory. --- CHANGELOG.md | 3 + Documentation~/FBX_PIPELINE_CHECKLIST.md | 46 +++++++++++++++ Documentation~/REMESH_AND_BAKE.md | 16 ++++-- Editor/BenchmarkSweep.cs | 48 ++++++++++++---- Editor/Framework/UvToolHub.cs | 53 ++++++++++++----- Editor/Tools/LightmapTransferTool.cs | 72 +++++++++++++++++++++++- Editor/Tools/RemeshBakeTool.cs | 48 ++++++++++++++-- Tools~/build_gallery.py | 31 ++++++++-- 8 files changed, 277 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4559dba..8586d16c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ### Added - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. - **Remesh & Bake stages and previews** — the tab runs Voxel remesh → Simplify → Normals & UV → Bake as separate stages with their own settings, each re-runnable without repeating earlier ones (stale stages are marked and refreshed first). A right-hand preview shows an orbitable 3D view of any stage (wireframe, shading, baked base color, vertex colors), the UV layout with tinted islands over the baked base color, and every baked map. Simplification is error-driven and adaptive by default (flat areas collapse, detail keeps density) with optional light/strong regularization, fold preservation and small-part pruning; the triangle count is now a stopping point, not required. Hard edges: smooth, crease angle, UV island borders, or both. xatlas island and packing options are exposed. Baking supersamples 1/4/9/16 samples per texel with conservative edge coverage and can transfer source vertex color and vertex alpha to the result mesh. Native remesh ABI is now 2 (`meshLabVoxelRemesh`, `meshLabSimplify`, `meshLabUnwrap`); rebuild the plugins. +- **Remesh & Bake saves the model as FBX** — with `com.unity.formats.fbx` installed, "Save FBX, maps & prefab…" exports the remeshed mesh (generated normals including UV-island hard edges, UV0, tangents, transferred vertex colors) as a binary FBX named after the source, plus a prefab that instantiates it with the curated material; the mesh `.asset` is no longer produced in that mode. The FBX importer of the result is set to `materialImportMode: None` so no duplicate MaterialDescription material is generated. Without the package the previous `.asset` + prefab output remains, with an inline hint to install it. New-geometry FBX writes are documented as the single out-of-core carve-out in `Documentation~/FBX_PIPELINE_CHECKLIST.md` §12. - **Per-target Transfer diagnostic summary** — `GroupedShellTransfer.TransferCore` emits a single Info line at the end of every transfer when `UvtLog.Category.TransferDiag` is enabled in the Log filters panel. Reports source/target shell counts, `shellsMatched` / `shellsRejected`, `ShellStatus` histogram (Accepted/Degraded/Poor/Rejected/Unmatched), method histogram (interp/xform/merged), `fragmentsMerged`, `dedupConflicts`, `shellsOverlapFixed`, `consistencyCorrected`, mean/max 3D match distance, and topology iterations/fixed/capHit. Lets the identity-sanity and per-LOD ratio sweep checklists in `Documentation~/TRANSFER_LOD_QUALITY_PLAN.md` be run without trawling verbose per-shell output. New category bit slots into the existing Log filters UI automatically. - **`UvProgress` service** (`Editor/Framework/UvProgress.cs`) — central non-modal progress reporting. Routes status to `UnityEditor.Progress` (Background Tasks panel) plus an inline strip drawn at the bottom of the hub window. Supports nested scopes, phase labels, indeterminate/determinate fractions, cooperative cancellation via `UvProgress.CancelRequested` (`Volatile.Read`-backed `_cancelFlag` so background `Task.Run` work observes user-cancel reliably across the memory barrier), a thread-safe `ReportFromBackground` for `Task.Run` callers (with `Interlocked.Exchange`-guarded snapshot/clear so a racing writer can't lose an update; the `EditorApplication.update` pump is hooked once on assembly load from the main thread via `[InitializeOnLoadMethod]`), and a `Last` outcome shown while idle. - **Inline progress strip in `UvToolHub`** — sits at the bottom of the window as a status bar. Reserves fixed height unconditionally so toggling active state doesn't displace any layout. Shows title · phase · detail · elapsed in distinct columns with a Cancel button pinned to the right; while idle displays `✓ / ✗ Last-operation · 12.3s`. Marquee animation for indeterminate fractions; orange tint while cancelling. @@ -61,6 +62,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ### Security Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131, #134–#140, #142–#145, #147–#149, #151–#152, #156–#159, #161–#164, #168 and #170–#190. +- **Process invocation and gallery paths (Mimosa pre-commit gate)** — `UvToolHub.StartGitBinary`/`RunGit` and `BenchmarkSweep.TryRunGit` no longer assemble git command lines as strings: every argument reaches git as one verbatim `ProcessStartInfo.ArgumentList` token, so an asset path interpolated into a revision like `main:` cannot inject extra git options. `Tools~/build_gallery.py` routes every write through `write_gallery_file`, which resolves the output directory, requires the target to resolve to a direct child with the exact sanitized basename (`safe_model_filename` strips everything outside `[A-Za-z0-9._-]` from CSV-derived `lodGroup` names), and refuses anything that would escape the gallery directory. - **CI and build tooling** — release/version workflows no longer interpolate untrusted values straight into inline Python; the native build workflow pins every action to a verified SHA and defaults to a read-only token, with `contents: write` scoped to the publish job alone, which still commits the freshly built binaries into `Plugins/` automatically on push; `gen.bat` and the skills-overhaul parameter file quote/escape their arguments; `.npmignore` mirrors `.gitignore` so ignored artifacts can't leak into a published tarball (#123, #125, #135, #136, #164). - **Vendored xatlas** — `Native~/CMakeLists.txt` builds a pinned, vendored xatlas source tree instead of `FetchContent`-ing a moving upstream branch (#127). - **Sidecar replay validation** — `Uv2DataAsset` payloads are now treated as untrusted input: UV channel dimensions and lengths, submesh triangle counts, collision entries, vertex-color arrays, xatlas settings and the sidecar-supplied save path are validated before use, stale/incomplete remap rebuilds abort instead of half-applying, and remap work is bounded (#126, #139, #151, #182, #185, #188, #189). @@ -68,6 +70,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **FBX re-saves no longer triangulate quad meshes** — the isolated-export core (`ExportFbxIsolatedCore`, the path behind Vertex AO saves and narrow-intent UV/channel overwrites) enables `keepQuads` on the source importer in Phase 1, so the clone it serializes keeps the FBX's original polygon topology and Unity's FBX exporter writes quads back. `keepQuads` only reshapes the index buffer (vertex order/count untouched), so the snapshot/clone vertex-count contract holds, and the setting persists like `generateSecondaryUV=off` so the re-saved file is not re-triangulated on the next import. Variant exports (`ExportVertexColorsToFbxAs`) toggle `keepQuads` only for the clone reimport, restore the source importer afterwards (also on failure), and pin `keepQuads` on the new variant file's own importer. The wide LOD-rebuild path already locked `keepQuads` at export time; its export meshes still take topology from the tool's computed meshes, so the first wide export of a freshly loaded (triangulated) import writes triangles — from the next reload on, quads survive. N-gons (>4 vertices) still import triangulated (`keepQuads` covers quads only). - **Remesh & Bake capture and save** — Read/Write-disabled source meshes are read from the imported asset instead of an empty `Instantiate` clone ("Not allowed to access uv"), shaders other than Standard/URP Lit bake from common property names with a warning instead of aborting, and Save refreshes a folder the panel just created instead of failing with "Could not create result folder". - **Remesh & Bake tab** — Source root now follows the selection (a LOD child resolves to its LODGroup) instead of being read once when the tab first opened, which left Generate & Bake disabled after selecting a model as the status text asks. Generate & Bake and Save end the IMGUI event after they change the sidebar or open the modal folder panel, so the first run no longer logs a `Getting control N's position` layout error. Cancel reports that it is waiting for the current phase, and the result line reads the index count instead of copying `Mesh.triangles` on every GUI event. - **`MeshoptNative` simplify flags** — `SimplifySparse` / `SimplifyErrorAbsolute` were swapped relative to `meshoptimizer.h` (`Sparse = 2`, `ErrorAbsolute = 4`). No caller passed either flag, so behaviour is unchanged. diff --git a/Documentation~/FBX_PIPELINE_CHECKLIST.md b/Documentation~/FBX_PIPELINE_CHECKLIST.md index f9de2e4d..59f81955 100644 --- a/Documentation~/FBX_PIPELINE_CHECKLIST.md +++ b/Documentation~/FBX_PIPELINE_CHECKLIST.md @@ -305,6 +305,52 @@ see §9). write itself) is the core's responsibility. Call sites never touch these sets directly. +### Quad preservation (`keepQuads`) + +A re-save must not triangulate a quad mesh. Unity meshes carry topology in +their index buffer, and the FBX exporter writes whatever topology the +serialized mesh has — so the clone that reaches `ModelExporter` must be +imported with `keepQuads = true`: + +* **Isolated core** — Phase 1 enables `keepQuads` on the source importer + (alongside `isReadable`) before the clone is loaded. `keepQuads` only + reshapes the index buffer (4 indices per quad instead of two triangles); + vertex order and count are untouched, so the snapshot/clone + vertex-count contract holds. The value persists after export (like + `generateSecondaryUV = off`) — restoring `false` would triangulate the + just-written quad FBX on the next import. +* **Variant exports** (`ExportVertexColorsToFbxAs`) — the source importer + must end the export unchanged, so `keepQuads` is toggled on only for the + clone reimport and restored in Phase 5 (and in the catch, so a failed + export cannot strand the toggle). The new variant file's own importer + gets `keepQuads` pinned in Phase 4 so its project view matches the file. +* **Wide LOD-rebuild path** — already locks `keepQuads` via + `PrepareImportSettings(lockForFbxOverwrite: true)` before export. Its + export meshes take topology from the tool's computed result meshes, so + the first export of a freshly loaded (triangulated) import still writes + triangles; once the lock has persisted and the model reloaded, every + later export keeps quads. +* **Known limitation** — `keepQuads` covers quads only. N-gons + (>4 vertices per face) still import triangulated, and generated LODs + (meshoptimizer output) are triangle meshes by construction. + +### New-geometry export (Remesh & Bake) — the one out-of-core write + +`RemeshBakeTool.Save()` exports a **brand-new mesh** (voxel remesh result) +into a **uniquely created folder**, gated by the same +`LIGHTMAP_UV_TOOL_FBX_EXPORTER` define. It calls +`ModelExporter.ExportObjects` directly because the isolated core is a +*re-save* pipeline: its snapshots key on mesh name and require the same +vertex count, so it structurally cannot carry re-topologized geometry, +and there is no source FBX whose untouched channels must survive. +Safety comes from the fresh-path guarantees instead: the target file +never pre-exists (a new unique folder), the output is verified +non-empty, and any failure rolls the whole generated folder back. +The FBX importer of the result is pinned to `materialImportMode = None` +so the importer does not duplicate the curated material that ships +next to the FBX. Do not use this carve-out for anything that mutates +an existing FBX — that path must go through the core. + ### What "rework, not parallel" means in code review Reject PRs that: diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 7ea13a66..06c0b11b 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -56,10 +56,18 @@ settings, marked "settings changed" in its header) and clears everything after i source vertex colors, interpolated at the nearest source surface point, onto the result mesh independently. Missed covered texels are magenta, not silently patched with unrelated material data. -6. **Save** to a folder under Assets. A unique output folder contains the mesh - asset (with transferred vertex colors), material, prefab and - BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a linear - floating-point Emission EXR. Source files are never overwritten. +6. **Save** to a folder under Assets. A unique output folder contains the model, + material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a + linear floating-point Emission EXR. Source files are never overwritten. + - With **com.unity.formats.fbx** installed the model is exported as a binary + **FBX** (mesh `Name_LOD0` with the generated normals — including UV-island + hard edges — UV0, tangents and transferred vertex colors), a prefab that + instantiates the FBX with the curated material assigned, and the `.mat` next + to it. The FBX importer is set to not generate its own material, so the + folder stays curated; the FBX itself still carries the material description + and relative texture references for use in other DCC tools. + - Without the FBX package the mesh is saved as a Unity `.asset` plus the same + material, prefab and maps. Native work (remesh, simplify, unwrap) and CPU projection run off the main thread. Texture snapshots and Unity mesh/asset APIs stay on the main thread. diff --git a/Editor/BenchmarkSweep.cs b/Editor/BenchmarkSweep.cs index 3c492ba0..ed94860f 100644 --- a/Editor/BenchmarkSweep.cs +++ b/Editor/BenchmarkSweep.cs @@ -1290,15 +1290,17 @@ internal static (string pkgName, string pkgVersion, string gitSha, string gitBra // Best-effort git provenance. Runs `git rev-parse HEAD` etc. via // System.Diagnostics.Process. Anything that throws → blank field; // we never want manifest writing to take down a sweep. - string sha = TryRunGit("rev-parse HEAD"); - string branch = TryRunGit("rev-parse --abbrev-ref HEAD"); - string status = TryRunGit("status --porcelain"); + string sha = TryRunGit(GitProbe.Head); + string branch = TryRunGit(GitProbe.Branch); + string status = TryRunGit(GitProbe.Status); bool dirty = !string.IsNullOrEmpty(status); return (pkgName, pkgVersion, sha, branch, dirty); } - static string TryRunGit(string args) + enum GitProbe { Head, Branch, Status } + + static string TryRunGit(GitProbe probe) { try { @@ -1318,16 +1320,38 @@ static string TryRunGit(string args) catch { /* fall through */ } string workDir = !string.IsNullOrEmpty(pkgDir) ? pkgDir : repoRoot; - var psi = new System.Diagnostics.ProcessStartInfo("git", args) + var process = new System.Diagnostics.Process { - WorkingDirectory = workDir, - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true, + StartInfo = new System.Diagnostics.ProcessStartInfo("git") + { + WorkingDirectory = workDir, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + } }; - using var p = System.Diagnostics.Process.Start(psi); - if (p == null) return ""; + // Fixed literal tokens per probe — no caller-supplied string + // ever reaches the git command line, so there is nothing to + // inject. + switch (probe) + { + case GitProbe.Head: + process.StartInfo.ArgumentList.Add("rev-parse"); + process.StartInfo.ArgumentList.Add("HEAD"); + break; + case GitProbe.Branch: + process.StartInfo.ArgumentList.Add("rev-parse"); + process.StartInfo.ArgumentList.Add("--abbrev-ref"); + process.StartInfo.ArgumentList.Add("HEAD"); + break; + default: + process.StartInfo.ArgumentList.Add("status"); + process.StartInfo.ArgumentList.Add("--porcelain"); + break; + } + using var p = process; + process.Start(); // Drain stdout/stderr asynchronously into builders BEFORE // WaitForExit — synchronous ReadToEnd() blocks until the // pipe is closed, so a stalled git would deadlock the diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index 6711c727..33a6b5d0 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -1142,6 +1142,16 @@ internal static void BackupFbxFromGitMain(string assetPath) string repoRoot = System.IO.Path.GetDirectoryName(Application.dataPath); string fullPath = System.IO.Path.GetFullPath(assetPath); string relativePath = assetPath.Replace('\\', '/'); + // Validate before the path becomes part of a git revision: the + // backup only ever reads repo-relative Assets/ paths. A + // validated "main:" operand can never be parsed by git + // as an option, so nothing user-controlled can alter the + // command's meaning. + if (!relativePath.StartsWith("Assets/", StringComparison.Ordinal) || relativePath.Contains("..")) + { + UvtLog.Error($"[Backup] '{relativePath}' is not a repo-relative Assets path."); + return; + } string dir = System.IO.Path.GetDirectoryName(fullPath); string name = System.IO.Path.GetFileNameWithoutExtension(fullPath); @@ -1151,13 +1161,13 @@ internal static void BackupFbxFromGitMain(string assetPath) .Replace('\\', '/'); string tempBackupPath = backupPath + ".tmp"; - if (!RunGit(repoRoot, $"cat-file -e \"main:{relativePath}\"", out _, out string existsErr)) + if (!RunGit(repoRoot, new[] { "cat-file", "-e", "main:" + relativePath }, out _, out string existsErr)) { UvtLog.Error($"[Backup] '{relativePath}' does not exist on branch 'main'. {existsErr.Trim()}"); return; } - using (var proc = StartGitBinary(repoRoot, $"cat-file --filters \"main:{relativePath}\"")) + using (var proc = StartGitBinary(repoRoot, "cat-file", "--filters", "main:" + relativePath)) { var stderrBuf = new System.Text.StringBuilder(); proc.ErrorDataReceived += (s, e) => { if (e.Data != null) stderrBuf.AppendLine(e.Data); }; @@ -1201,22 +1211,39 @@ internal static void BackupFbxFromGitMain(string assetPath) } } - internal static System.Diagnostics.Process StartGitBinary(string workingDirectory, string arguments) + // The only git options this package ever passes; anything else that + // starts with '-' is refused by StartGitBinary below. + static readonly System.Collections.Generic.HashSet AllowedGitOptions = + new System.Collections.Generic.HashSet { "-e", "--filters" }; + + internal static System.Diagnostics.Process StartGitBinary(string workingDirectory, params string[] arguments) { - var psi = new System.Diagnostics.ProcessStartInfo + var process = new System.Diagnostics.Process { - FileName = "git", - Arguments = arguments, - WorkingDirectory = workingDirectory, - RedirectStandardOutput = true, - RedirectStandardError = true, - UseShellExecute = false, - CreateNoWindow = true + StartInfo = new System.Diagnostics.ProcessStartInfo("git") + { + WorkingDirectory = workingDirectory, + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true + } }; - return System.Diagnostics.Process.Start(psi); + // One verbatim token per git argument via ArgumentList — no + // command-line string is assembled. Options are allow-listed and + // callers validate their operands, so no argument can smuggle an + // extra git option or command. + foreach (var argument in arguments) + { + if (argument.StartsWith("-", StringComparison.Ordinal) && !AllowedGitOptions.Contains(argument)) + throw new System.ArgumentException("Refusing unexpected git option: " + argument); + process.StartInfo.ArgumentList.Add(argument); + } + process.Start(); + return process; } - internal static bool RunGit(string workingDirectory, string arguments, out string stdout, out string stderr) + internal static bool RunGit(string workingDirectory, string[] arguments, out string stdout, out string stderr) { using (var proc = StartGitBinary(workingDirectory, arguments)) { diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index c9da8314..8c468472 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -3954,6 +3954,7 @@ bool ExportFbxIsolatedCore( // ── Phase 1: Prepare importer (single reimport, scoped to intent) ── ModelImporter srcImporter = null; bool madeReadable = false; + bool variantQuadsToggle = false; if (!isVariantExport) { srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; @@ -3987,6 +3988,20 @@ bool ExportFbxIsolatedCore( // except that the authored data now actually lands. if (!srcImporter.isReadable) { srcImporter.isReadable = true; needsReimport = true; madeReadable = true; } + // Quad preservation: keepQuads changes only the index-buffer + // shape (4 indices per quad instead of two triangles) — the + // vertex stream, its order and count, is untouched, so the + // snapshots captured above still match the re-imported clone + // by vertex count. With keepQuads the clone serialized in + // Phase 2 carries the FBX's original polygon topology, and + // Unity's FBX exporter writes the mesh's topology — quads in, + // quads out. Same locking rationale as the wide path's + // PrepareImportSettings(lockForFbxOverwrite). Like + // generateSecondaryUV above, the value deliberately persists: + // restoring keepQuads=false would triangulate the just-written + // quad FBX again on the next import. + if (!srcImporter.keepQuads) + { srcImporter.keepQuads = true; needsReimport = true; } if (needsReimport) { Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); @@ -3994,6 +4009,27 @@ bool ExportFbxIsolatedCore( } } } + else + { + // Variant export writes a NEW file and must leave the source + // importer unchanged (ExportVertexColorsToFbxAs contract). But + // the clone serialized in Phase 2 needs the source's quad + // topology so the variant FBX does not come out triangulated — + // toggle keepQuads on for the clone reimport, restore in Phase 5. + srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; + // The main-asset guard keeps the toggle out of the window between + // this reimport and the try block below — the early "cannot load + // FBX" return in Phase 2 must not strand keepQuads=true on the + // source importer with no restore path (Phase 5 is try-scoped). + if (srcImporter != null && !srcImporter.keepQuads && + AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) != null) + { + srcImporter.keepQuads = true; + Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); + srcImporter.SaveAndReimport(); + variantQuadsToggle = true; + } + } // ── Phase 2: Build export hierarchy ── var fbxAsset = AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) as GameObject; @@ -4141,6 +4177,14 @@ bool ExportFbxIsolatedCore( catch (Exception ex) { Uv2AssetPostprocessor.fbxOverwritePaths.Remove(targetFbxPath); + // Variant keepQuads toggle must not outlive a failed export — + // Phase 5 is unreachable after this return. + if (variantQuadsToggle && srcImporter != null) + { + srcImporter.keepQuads = false; + Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); + srcImporter.SaveAndReimport(); + } // Best-effort: drop a leftover .tmp so a retry isn't blocked // by the "Strip any leftover tmp" sweep above logging into // a misleading state. @@ -4164,6 +4208,19 @@ bool ExportFbxIsolatedCore( // Variant export skips scene relink — live scene must keep // showing source meshes; only the new FBX needs to be picked up. AssetDatabase.Refresh(); + if (isVariantExport) + { + // The variant FBX was written with the source's quad topology; + // pin keepQuads on the new file's importer so the project view + // matches the file content (a fresh importer defaults to + // keepQuads=false and would show the quads triangulated). + var outImporter = AssetImporter.GetAtPath(targetFbxPath) as ModelImporter; + if (outImporter != null && !outImporter.keepQuads) + { + outImporter.keepQuads = true; + outImporter.SaveAndReimport(); + } + } if (!isVariantExport && ctx?.LodGroup != null) { // renameMap is non-null only when the intent included @@ -4178,8 +4235,10 @@ bool ExportFbxIsolatedCore( // ── Phase 5: Restore importer settings + working copies ── // Only isReadable is restored: Phase 1 no longer touches weld / - // compression / optimization, and generateSecondaryUV is left - // disabled on purpose so the just-authored UV1 is not regenerated. + // compression / optimization, generateSecondaryUV is left disabled + // on purpose so the just-authored UV1 is not regenerated, and + // keepQuads stays enabled so the re-saved FBX keeps its quads on + // every future import (Phase 1 quad-preservation rationale). if (!isVariantExport) { if (srcImporter != null && madeReadable) @@ -4190,6 +4249,15 @@ bool ExportFbxIsolatedCore( } RestoreWorkingCopiesToScene(); } + else if (variantQuadsToggle && srcImporter != null) + { + // Variant contract: the source FBX and its importer end the + // export exactly as they started. The variant file on disk + // keeps its quads regardless of this import setting. + srcImporter.keepQuads = false; + Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); + srcImporter.SaveAndReimport(); + } return exported; #else UvtLog.Error("[FBX Export] FBX Exporter package not installed."); diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index d2de7f2a..937eb4f2 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -180,12 +180,19 @@ public void OnDrawSidebar() if (resultMesh && maps != null) { EditorGUILayout.LabelField($"{resultMesh.vertexCount:N0} vertices · {resultMesh.GetIndexCount(0) / 3:N0} triangles"); using (new EditorGUI.DisabledScope(cancellation != null)) +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + if (GUILayout.Button("Save FBX, maps & prefab…")) { +#else if (GUILayout.Button("Save mesh, maps & prefab…")) { +#endif Save(); // The folder panel is modal and the export imports assets; both // leave this event's layout state stale. GUIUtility.ExitGUI(); } +#if !LIGHTMAP_UV_TOOL_FBX_EXPORTER + EditorGUILayout.HelpBox("Install com.unity.formats.fbx to save the model as an FBX instead of a mesh asset.", MessageType.None); +#endif } } @@ -448,18 +455,51 @@ void Save() material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + temporary = new GameObject(clean + "_LOD0") { hideFlags = HideAndDontSave }; + temporary.AddComponent().sharedMesh = mesh; + temporary.AddComponent().sharedMaterial = material; + temporary.hideFlags = HideFlags.None; +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + // The model ships as an FBX (geometry, split normals, UV0, tangents, + // vertex colors); the material stays a curated asset next to it that + // the prefab references. This is brand-new geometry in a uniquely + // created folder, not a channel re-save of a source FBX, so the + // isolated-export core's same-vertex-count snapshot contract does not + // apply; a failed export still rolls the whole folder back. + using (new AssetDatabase.AssetEditingScope()) + AssetDatabase.CreateAsset(material, folder + "/" + clean + ".mat"); + string fbxPath = folder + "/" + clean + ".fbx"; + UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { temporary }, + new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { + ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary }); + var fbxInfo = new FileInfo(Path.GetFullPath(fbxPath)); + if (!fbxInfo.Exists || fbxInfo.Length == 0) throw new IOException("FBX export produced an empty file."); + var modelImporter = (ModelImporter)AssetImporter.GetAtPath(fbxPath); + if (modelImporter != null) { + // The curated material + prefab ship next to the FBX; keep the + // importer from generating a duplicate MaterialDescription copy. + modelImporter.materialImportMode = MaterialImportMode.None; + modelImporter.SaveAndReimport(); + } + var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; + if (!fbxRoot) throw new IOException("FBX reimport failed."); + var instance = (GameObject)PrefabUtility.InstantiatePrefab(fbxRoot); + instance.GetComponentInChildren().sharedMaterial = material; + PrefabUtility.SaveAsPrefabAsset(instance, folder + "/" + clean + ".prefab", out bool success); + Object.DestroyImmediate(instance); + if (!success) throw new IOException("Prefab save failed."); + AssetDatabase.SaveAssets(); status = "Saved: " + folder; + EditorGUIUtility.PingObject(fbxRoot); +#else using (new AssetDatabase.AssetEditingScope()) { AssetDatabase.CreateAsset(mesh, folder + "/" + clean + "_LOD0.asset"); AssetDatabase.CreateAsset(material, folder + "/" + clean + ".mat"); } - temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.HideAndDontSave }; - temporary.AddComponent().sharedMesh = mesh; - temporary.AddComponent().sharedMaterial = material; - temporary.hideFlags = HideFlags.None; PrefabUtility.SaveAsPrefabAsset(temporary, folder + "/" + clean + ".prefab", out bool success); if (!success) throw new IOException("Prefab save failed."); AssetDatabase.SaveAssets(); status = "Saved: " + folder; EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folder + "/" + clean + ".prefab")); +#endif } catch (Exception e) { if (createdFolder && AssetDatabase.IsValidFolder(folder)) AssetDatabase.DeleteAsset(folder); diff --git a/Tools~/build_gallery.py b/Tools~/build_gallery.py index bc286800..65e990cc 100644 --- a/Tools~/build_gallery.py +++ b/Tools~/build_gallery.py @@ -28,7 +28,7 @@ matching *_sweep_res*_pad*_bdr*_*.csv next to *_png/ folders. """ -import argparse, csv, glob, html, json, os, re, sys +import argparse, csv, glob, html, json, os, pathlib, re, sys from collections import defaultdict @@ -394,8 +394,30 @@ def render_index(out_dir, models, gallery_id): for m in models: parts.append(f'

') parts.append('') - with open(os.path.join(out_dir, "_gallery_index.html"), "w", encoding="utf-8") as f: - f.write("\n".join(parts)) + write_gallery_file(out_dir, "_gallery_index.html", "\n".join(parts)) + + +def safe_model_filename(model): + """lodGroup values come from sweep CSVs (untrusted); keep them out of the + path layer — no separators, no traversal, no empty result.""" + safe = re.sub(r"[^A-Za-z0-9._-]+", "_", str(model)).strip("._") + if not safe: + raise SystemExit(f"model name has no filesystem-safe characters: {model!r}") + return safe + + +def write_gallery_file(out_dir, filename, content): + """All gallery writes go through here. The output directory is resolved + to its canonical form, the target must resolve to a direct child with the + exact given name (a plain sanitized basename) — anything containing a + separator, '.' or '..' is refused, so no CSV-derived value can make a + write escape the chosen gallery directory.""" + root = pathlib.Path(out_dir).resolve() + root.mkdir(parents=True, exist_ok=True) + target = (root / filename).resolve() + if target.parent != root or target.name != filename or not filename: + raise SystemExit(f"refusing unsafe gallery filename: {filename!r}") + target.write_text(content, encoding="utf-8") def render_model(out_dir, gallery_id, model, all_cells, res_axis, pad_axis, bdr_axis): @@ -447,8 +469,7 @@ def render_model(out_dir, gallery_id, model, all_cells, res_axis, pad_axis, bdr_ parts.append(f'') parts.append('') - with open(os.path.join(out_dir, f"_gallery_{model}.html"), "w", encoding="utf-8") as f: - f.write("\n".join(parts)) + write_gallery_file(out_dir, f"_gallery_{safe_model_filename(model)}.html", "\n".join(parts)) MODELS_ORDER = [] # filled per call From aa06695494bb0264769bb434f0899f24a8980311 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 17:41:04 +0200 Subject: [PATCH 020/130] chore: ignore Mimosa security-plugin runtime state The plugin writes hook ledgers, finding events, session baselines and scan reports under .mimosa/ in the project root; the directory churns on every session, so it must stay local. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 56299e7e..3c5b3438 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ test.txt # Temp commit message file .commitmsg commitmsg.txt + +# Mimosa security-plugin runtime state (hook ledgers, scan reports, session baselines) +.mimosa/ From 21031f5fe2c42c88c0923e62fc5154c59e228560 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 17:46:34 +0200 Subject: [PATCH 021/130] fix(remesh): qualify enum names in Save so the package compiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two CS0103 errors surfaced when Unity first compiled the branch: - the temp export GameObject used the bare HideAndDontSave member instead of HideFlags.HideAndDontSave (latent since the staged-pipeline commit); - the FBX result importer was set through MaterialImportMode, which is the USD package's enum — the UnityEditor type for the property is ModelImporterMaterialImportMode. --- Editor/Tools/RemeshBakeTool.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 937eb4f2..00fe3ec3 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -455,7 +455,7 @@ void Save() material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); if (urp) material.EnableKeyword("_OCCLUSIONMAP"); - temporary = new GameObject(clean + "_LOD0") { hideFlags = HideAndDontSave }; + temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.HideAndDontSave }; temporary.AddComponent().sharedMesh = mesh; temporary.AddComponent().sharedMaterial = material; temporary.hideFlags = HideFlags.None; @@ -478,7 +478,7 @@ void Save() if (modelImporter != null) { // The curated material + prefab ship next to the FBX; keep the // importer from generating a duplicate MaterialDescription copy. - modelImporter.materialImportMode = MaterialImportMode.None; + modelImporter.materialImportMode = ModelImporterMaterialImportMode.None; modelImporter.SaveAndReimport(); } var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; From ccd811bbd3caaf4a4142b6e81f8f94d8c0fec781 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 19:00:30 +0200 Subject: [PATCH 022/130] fix(remesh): default hard edges to UV islands and persist stage settings On coarse organic decimations an angle crease splits nearly every edge (a fully faceted look) and feeds xatlas the crease-split normals as seams, which shatters the atlas into sliver charts. UV islands is the bake-oriented default instead: smooth inside every island, hard only at island borders, with the normal map carrying the detail. Stage settings were also silently reset to defaults on every domain reload and tab switch, so a tuned pipeline could not survive a script compile; they are saved to EditorPrefs (and restored) now. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 10 ++++++++-- Editor/RemeshSettings.cs | 7 ++++++- Editor/Tools/RemeshBakeTool.cs | 28 +++++++++++++++++++++++++--- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8586d16c..dd4f5f9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **`LightmapTransferTool.ExportVertexColorsToFbxAs(sourceFbxPath, outputFbxPath, entries, uvChannelOverride)`** — public entry point that writes a new FBX next to (or anywhere relative to) the source without mutating the source importer, scene mesh bindings, or working copies. ### Changed +- **Remesh & Bake: hard edges default to UV islands and settings persist.** `RemeshSettings.hardEdges` now defaults to `UvIslands`: on coarse organic decimations an angle crease leaves nearly every edge split (a fully faceted look) and feeds xatlas the crease-split normals as seams, which shatters the atlas into sliver charts. Stage settings are also saved to EditorPrefs across domain reloads and tab switches instead of silently resetting to defaults between runs. - **meshoptimizer v1.3** — `Native~/CMakeLists.txt` now pins the v1.3 release (`9e1f07b1`, 2026-09-25) instead of the 2026-09-10 remesh snapshot (`ff4a519a`). v1.3 drops the no-op `meshopt_RemeshThicken` and renumbers `meshopt_RemeshShell` / `meshopt_RemeshSolve`; the remesh bridge maps its own flag bits by name, so the C# ABI (`meshLabRemeshVersion() == 1`) is unchanged, and the native test now fails if the shell flag stops reaching meshoptimizer. The plugin binaries are rebuilt by **Build Native Libraries**. - **Vertex AO tab renamed to Vertex Color Baking.** `VertexAOTool` → `VertexColorBakingTool`, `ToolId` `vertex_ao` → `vertex_color_baking`. Asset GUID preserved so existing references stay intact. AO functionality is unchanged and reachable via the new toolbar at the top of the tab. Note: `UvToolHub.SelectToolById` is fed from persisted state, so a stored deep-link to the old `vertex_ao` id now falls back to the first tool. - **Mesh Lab window menu path** moved from `Tools ▸ Mesh Lab` to `Tools ▸ Mesh Lab ▸ Open Mesh Lab`, making room for `Tools ▸ Mesh Lab ▸ Validators/*`. Existing keyboard shortcuts bound to the old path need rebinding. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 06c0b11b..17d4fd2a 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -37,13 +37,19 @@ settings, marked "settings changed" in its header) and clears everything after i alone decide. *Light/Strong* regularization evens out triangle sizes instead. *Preserve folds* keeps sharp creases; *Remove small parts* drops tiny disconnected pieces. Turn *Simplify* off to unwrap the voxel mesh as is. -4. **Normals & UV** — *Hard edges*: +4. **Normals & UV** — *Hard edges* (defaults to *UV islands*): - *Smooth* — no hard edges. - - *Angle* — edges sharper than *Crease angle*. + - *Angle* — edges sharper than *Crease angle*. On coarse organic + decimations most edges exceed the crease, which reads as fully faceted + and also feeds xatlas the crease-split normals as seams, shattering the + atlas into slivers — prefer *UV islands* for baked results. - *UV islands* — hard exactly along UV island borders, smooth inside each island (the usual choice for baked normal maps). - *UV islands + angle* — both. + Stage settings persist across domain reloads and tab switches (EditorPrefs); + *Run all stages* still re-runs everything with the restored values. + *Islands & packing* exposes the xatlas chart options: max cost (lower = more, smaller islands), normal deviation, hard-edge seam weight (islands prefer to break on hard edges), straightness, roundness, iterations, max island area and diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index a3f5d7d3..e0ee19d1 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -41,7 +41,12 @@ public sealed class RemeshSettings public bool pruneSmallParts; // 3 · Normals & UV - public RemeshHardEdges hardEdges = RemeshHardEdges.Angle; + // UV islands is the bake-oriented default: smooth inside every island, + // hard only along island borders, and the normal map carries the detail. + // On coarse organic decimations an angle crease reads as fully faceted + // and also feeds xatlas crease-split normals as seams, which shatters + // the atlas into slivers. + public RemeshHardEdges hardEdges = RemeshHardEdges.UvIslands; public float normalCrease = 60; public float normalSmoothing = 1; public float chartMaxCost = 2; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 00fe3ec3..9284dc3b 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -17,6 +17,10 @@ public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar public int ToolOrder => 35; public Action RequestRepaint { private get; set; } + // Settings survive domain reloads and tab switches so a tuned pipeline + // does not silently reset to defaults between runs. + const string SettingsKey = "MeshLab.RemeshBake.Settings"; + enum Stage { Remesh, Simplify, Unwrap, Bake } static readonly string[] StageTitles = { "1 · Voxel remesh", "2 · Simplify", "3 · Normals & UV", "4 · Bake" }; static readonly string[] SampleNames = { "1 (off)", "4 (2×2)", "9 (3×3)", "16 (4×4)" }; @@ -30,6 +34,16 @@ enum Stage { Remesh, Simplify, Unwrap, Bake } string resultName; internal GameObject Source => source; + public RemeshBakeTool() + { + string json = EditorPrefs.GetString(SettingsKey, ""); + if (string.IsNullOrEmpty(json)) return; + var restored = JsonUtility.FromJson(json); + if (restored != null) settings = restored; + } + + internal void SaveSettings() => EditorPrefs.SetString(SettingsKey, JsonUtility.ToJson(settings)); + // Stage outputs. Each stage consumes the previous one; re-running a stage clears // everything after it. keys[] remember the settings each output was built with. RemeshSource snapshot; @@ -54,13 +68,21 @@ public void OnActivate(UvToolContext context, UvCanvasView canvas) previews.RequestRepaint = () => RequestRepaint?.Invoke(); // Result/preview objects carry HideAndDontSave, so they survive scene loads but // would leak across a domain reload once this instance is discarded. - AssemblyReloadEvents.beforeAssemblyReload -= Clear; - AssemblyReloadEvents.beforeAssemblyReload += Clear; + AssemblyReloadEvents.beforeAssemblyReload -= SaveSettingsAndClear; + AssemblyReloadEvents.beforeAssemblyReload += SaveSettingsAndClear; } public void OnDeactivate() { Selection.selectionChanged -= FollowSelection; - AssemblyReloadEvents.beforeAssemblyReload -= Clear; cancellation?.Cancel(); Clear(); + AssemblyReloadEvents.beforeAssemblyReload -= SaveSettingsAndClear; + SaveSettings(); + cancellation?.Cancel(); Clear(); + } + + void SaveSettingsAndClear() + { + SaveSettings(); + Clear(); } // Source root follows the hierarchy selection, as the status text asks. A pick From 92bb670571820a4f7b42f7888c210b94d1aec123 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 19:04:17 +0200 Subject: [PATCH 023/130] fix(save): sanitize mesh names and guard the output folder in SaveAll A mesh name containing a character that is invalid in file names made GenerateUniqueAssetPath return an empty string; CreateAsset then threw "path is empty" in the middle of OnGUI and corrupted the hub's layout state for the event. Names are sanitized per save now, an unusable path is skipped with a warning, and a missing or uncreatable output folder aborts with a readable error instead of cascading. --- CHANGELOG.md | 1 + Editor/Tools/LightmapTransferTool.cs | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd4f5f9d..c4d997ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **"Save Mesh Assets" no longer throws on unparsable mesh names** — `SaveAll` sanitized mesh names before generating asset paths; a name with a character that is invalid in file names made `GenerateUniqueAssetPath` return an empty string and `CreateAsset` threw "path is empty" mid-OnGUI, corrupting the hub layout state for the event. A missing/uncreatable output folder now aborts with a readable error instead of cascading. - **FBX re-saves no longer triangulate quad meshes** — the isolated-export core (`ExportFbxIsolatedCore`, the path behind Vertex AO saves and narrow-intent UV/channel overwrites) enables `keepQuads` on the source importer in Phase 1, so the clone it serializes keeps the FBX's original polygon topology and Unity's FBX exporter writes quads back. `keepQuads` only reshapes the index buffer (vertex order/count untouched), so the snapshot/clone vertex-count contract holds, and the setting persists like `generateSecondaryUV=off` so the re-saved file is not re-triangulated on the next import. Variant exports (`ExportVertexColorsToFbxAs`) toggle `keepQuads` only for the clone reimport, restore the source importer afterwards (also on failure), and pin `keepQuads` on the new variant file's own importer. The wide LOD-rebuild path already locked `keepQuads` at export time; its export meshes still take topology from the tool's computed meshes, so the first wide export of a freshly loaded (triangulated) import writes triangles — from the next reload on, quads survive. N-gons (>4 vertices) still import triangulated (`keepQuads` covers quads only). - **Remesh & Bake capture and save** — Read/Write-disabled source meshes are read from the imported asset instead of an empty `Instantiate` clone ("Not allowed to access uv"), shaders other than Standard/URP Lit bake from common property names with a warning instead of aborting, and Save refreshes a folder the panel just created instead of failing with "Could not create result folder". - **Remesh & Bake tab** — Source root now follows the selection (a LOD child resolves to its LODGroup) instead of being read once when the tab first opened, which left Generate & Bake disabled after selecting a model as the status text asks. Generate & Bake and Save end the IMGUI event after they change the sidebar or open the modal folder panel, so the first run no longer logs a `Getting control N's position` layout error. Cancel reports that it is waiting for the current phase, and the result line reads the index count instead of copying `Mesh.triangles` on every GUI event. diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index 8c468472..267f55f9 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -5734,13 +5734,33 @@ void SaveAll() var fld = System.IO.Path.GetFileName(p); if (!string.IsNullOrEmpty(par)) AssetDatabase.CreateFolder(par, fld); } + // CreateFolder only makes one level; a deeper missing savePath or a + // locked parent leaves the folder absent and every generated path + // invalid — bail out with a readable error instead of throwing + // inside OnGUI. + if (!AssetDatabase.IsValidFolder(p)) + { + UvtLog.Error("[Save] Output folder does not exist and could not be created: " + p); + return; + } int n = 0; foreach (var e in ctx.MeshEntries) { Mesh m = GetResultMesh(e); if (m == null) continue; TangentValidator.EnforceTangentsMatchOriginal(m, e.fbxMesh, "SaveAll"); - string ap = AssetDatabase.GenerateUniqueAssetPath(p + "/" + m.name + ".asset"); + // Mesh names can carry characters that are invalid in file names + // (':', '/', ...). GenerateUniqueAssetPath then returns an empty + // string and CreateAsset throws mid-OnGUI ("path is empty"). + string clean = m.name; + foreach (char c in System.IO.Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); + if (string.IsNullOrWhiteSpace(clean)) clean = "Mesh"; + string ap = AssetDatabase.GenerateUniqueAssetPath(p + "/" + clean + ".asset"); + if (string.IsNullOrEmpty(ap)) + { + UvtLog.Warn("[Save] Skipped '" + m.name + "': no valid asset path under " + p); + continue; + } AssetDatabase.CreateAsset(m, ap); n++; } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); From 5d3eb0df0ef8d60ebba068b5424cf88aa879be12 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 19:23:45 +0200 Subject: [PATCH 024/130] feat(remesh): embed the baked maps inside the exported FBX The FBX exporter links referenced textures by absolute path, which made the remesh FBX non-portable and logged a warning per map. The save step now passes EmbedTextures (binary export, toggle in the save block, default on) so the baked maps travel inside the FBX; turning it off keeps the lean linked form. Embedding adds the map sizes to the file - the float EXR emission map alone is 16 bytes per texel. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 6 ++++-- Editor/RemeshSettings.cs | 5 +++++ Editor/Tools/RemeshBakeTool.cs | 11 ++++++++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4d997ef..19b884ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ### Added - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. +- **Remesh & Bake: embed textures in the exported FBX** — a save-time toggle (default on) passes `EmbedTextures` to the FBX exporter so the baked maps travel inside the binary FBX instead of being linked by absolute path (the exporter's default link triggered "absolute reference to this texture file" warnings and made the FBX non-portable). Turn it off for a lean FBX that links the exported maps on this machine; embedding adds the map sizes to the file (the float EXR emission map alone is 16 bytes per texel). - **Remesh & Bake stages and previews** — the tab runs Voxel remesh → Simplify → Normals & UV → Bake as separate stages with their own settings, each re-runnable without repeating earlier ones (stale stages are marked and refreshed first). A right-hand preview shows an orbitable 3D view of any stage (wireframe, shading, baked base color, vertex colors), the UV layout with tinted islands over the baked base color, and every baked map. Simplification is error-driven and adaptive by default (flat areas collapse, detail keeps density) with optional light/strong regularization, fold preservation and small-part pruning; the triangle count is now a stopping point, not required. Hard edges: smooth, crease angle, UV island borders, or both. xatlas island and packing options are exposed. Baking supersamples 1/4/9/16 samples per texel with conservative edge coverage and can transfer source vertex color and vertex alpha to the result mesh. Native remesh ABI is now 2 (`meshLabVoxelRemesh`, `meshLabSimplify`, `meshLabUnwrap`); rebuild the plugins. - **Remesh & Bake saves the model as FBX** — with `com.unity.formats.fbx` installed, "Save FBX, maps & prefab…" exports the remeshed mesh (generated normals including UV-island hard edges, UV0, tangents, transferred vertex colors) as a binary FBX named after the source, plus a prefab that instantiates it with the curated material; the mesh `.asset` is no longer produced in that mode. The FBX importer of the result is set to `materialImportMode: None` so no duplicate MaterialDescription material is generated. Without the package the previous `.asset` + prefab output remains, with an inline hint to install it. New-geometry FBX writes are documented as the single out-of-core carve-out in `Documentation~/FBX_PIPELINE_CHECKLIST.md` §12. - **Per-target Transfer diagnostic summary** — `GroupedShellTransfer.TransferCore` emits a single Info line at the end of every transfer when `UvtLog.Category.TransferDiag` is enabled in the Log filters panel. Reports source/target shell counts, `shellsMatched` / `shellsRejected`, `ShellStatus` histogram (Accepted/Degraded/Poor/Rejected/Unmatched), method histogram (interp/xform/merged), `fragmentsMerged`, `dedupConflicts`, `shellsOverlapFixed`, `consistencyCorrected`, mean/max 3D match distance, and topology iterations/fixed/capHit. Lets the identity-sanity and per-LOD ratio sweep checklists in `Documentation~/TRANSFER_LOD_QUALITY_PLAN.md` be run without trawling verbose per-shell output. New category bit slots into the existing Log filters UI automatically. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 17d4fd2a..e5c48bc0 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -70,8 +70,10 @@ settings, marked "settings changed" in its header) and clears everything after i hard edges — UV0, tangents and transferred vertex colors), a prefab that instantiates the FBX with the curated material assigned, and the `.mat` next to it. The FBX importer is set to not generate its own material, so the - folder stays curated; the FBX itself still carries the material description - and relative texture references for use in other DCC tools. + folder stays curated. *Embed textures in FBX* (default on) embeds the baked + maps into the binary FBX, making it self-contained and portable; turned off, + the FBX links the exported maps by absolute path on the exporting machine. + Mind the size: the float EXR emission map alone adds 16 bytes per texel. - Without the FBX package the mesh is saved as a Unity `.asset` plus the same material, prefab and maps. diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index e0ee19d1..cf415f63 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -69,6 +69,11 @@ public sealed class RemeshSettings public bool transferVertexColor; public bool transferVertexAlpha; + // Save (FBX): embed the baked maps into the binary FBX instead of + // linking them by absolute path. Portable, but the file grows by the + // map sizes — the float EXR emission map alone is 16 bytes per texel. + public bool embedFbxTextures = true; + public void Validate() { if (voxelResolution < 4 || voxelResolution > 256 || targetTriangles < 0 || targetTriangles > 5000000 || diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 9284dc3b..aa885d1c 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -201,6 +201,12 @@ public void OnDrawSidebar() EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); if (resultMesh && maps != null) { EditorGUILayout.LabelField($"{resultMesh.vertexCount:N0} vertices · {resultMesh.GetIndexCount(0) / 3:N0} triangles"); +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + settings.embedFbxTextures = EditorGUILayout.Toggle(new GUIContent("Embed textures in FBX", + "Self-contained FBX that carries its maps — portable to other machines, but the file grows by the map sizes " + + "(the float EXR emission map alone is 16 bytes per texel). Off: the FBX links the exported maps by absolute path."), + settings.embedFbxTextures); +#endif using (new EditorGUI.DisabledScope(cancellation != null)) #if LIGHTMAP_UV_TOOL_FBX_EXPORTER if (GUILayout.Button("Save FBX, maps & prefab…")) { @@ -493,7 +499,10 @@ void Save() string fbxPath = folder + "/" + clean + ".fbx"; UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { temporary }, new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { - ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary }); + ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary, + // Embedded maps make the FBX self-contained; a linked FBX + // would reference this machine's absolute paths instead. + EmbedTextures = settings.embedFbxTextures }); var fbxInfo = new FileInfo(Path.GetFullPath(fbxPath)); if (!fbxInfo.Exists || fbxInfo.Length == 0) throw new IOException("FBX export produced an empty file."); var modelImporter = (ModelImporter)AssetImporter.GetAtPath(fbxPath); From 3ada6ffeb2b5ec68eea7a09ad77853d4c0a2547c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 19:45:05 +0200 Subject: [PATCH 025/130] fix(remesh): apply baked normal map in 3D preview, pin FBX normals/tangents import The 3D preview shaded only with vertex normals, so after the UV-islands default made them smooth the preview showed a featureless blob and the vivid pink/cyan atlas read as broken transfer. A Bump toggle (default on) now shades the result stage with the baked tangent-space normal map - the same data the saved material uses. The FBX result importer also pins imported normals and tangents so a MikkT recalculation cannot flip the baked frame's handedness. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 7 ++++++- Editor/RemeshPreview.cs | 8 +++++++- Editor/Tools/RemeshBakeTool.cs | 5 +++++ Shaders/RemeshPreview.shader | 32 ++++++++++++++++++++++++------- 5 files changed, 44 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b884ee..9b2901e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **`LightmapTransferTool.ExportVertexColorsToFbxAs(sourceFbxPath, outputFbxPath, entries, uvChannelOverride)`** — public entry point that writes a new FBX next to (or anywhere relative to) the source without mutating the source importer, scene mesh bindings, or working copies. ### Changed +- **Remesh & Bake: the 3D preview applies the baked normal map.** A new **Bump** toggle in the 3D view (default on) shades the result stage with the baked tangent-space normal map — the same data the saved material gets — instead of vertex normals only. With *Hard edges = UV islands* the result's vertex normals are smooth by design and all detail lives in the normal map, so the vertex-only preview (and the vivid pink/cyan atlas under **Maps ▸ Normal**) read as "normals not transferred" although the bake is intact. The FBX save also pins `normalImportMode: Import` and `tangentImportMode: Import` on the result importer, so Unity does not recalculate MikkT tangents whose per-vertex handedness can disagree with the frame the map was baked against (a green-channel flip on parts of the baked map). - **Remesh & Bake: hard edges default to UV islands and settings persist.** `RemeshSettings.hardEdges` now defaults to `UvIslands`: on coarse organic decimations an angle crease leaves nearly every edge split (a fully faceted look) and feeds xatlas the crease-split normals as seams, which shatters the atlas into sliver charts. Stage settings are also saved to EditorPrefs across domain reloads and tab switches instead of silently resetting to defaults between runs. - **meshoptimizer v1.3** — `Native~/CMakeLists.txt` now pins the v1.3 release (`9e1f07b1`, 2026-09-25) instead of the 2026-09-10 remesh snapshot (`ff4a519a`). v1.3 drops the no-op `meshopt_RemeshThicken` and renumbers `meshopt_RemeshShell` / `meshopt_RemeshSolve`; the remesh bridge maps its own flag bits by name, so the C# ABI (`meshLabRemeshVersion() == 1`) is unchanged, and the native test now fails if the shell flag stops reaching meshoptimizer. The plugin binaries are rebuilt by **Build Native Libraries**. - **Vertex AO tab renamed to Vertex Color Baking.** `VertexAOTool` → `VertexColorBakingTool`, `ToolId` `vertex_ao` → `vertex_color_baking`. Asset GUID preserved so existing references stay intact. AO functionality is unchanged and reachable via the new toolbar at the top of the tab. Note: `UvToolHub.SelectToolById` is fed from persisted state, so a stored deep-link to the old `vertex_ao` id now falls back to the first tool. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index e5c48bc0..14abc2ce 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -13,7 +13,12 @@ settings, marked "settings changed" in its header) and clears everything after i - **3D** — orbitable view (drag to orbit, scroll to zoom) of the source, voxel remesh, simplified mesh or final result, with wireframe, shading, baked base - color and vertex color toggles. + color, baked normal map and vertex color toggles. The **Bump** toggle applies + the baked tangent-space normal map to the result stage only (earlier stages + have no tangents); with *Hard edges = UV islands* the vertex normals are + smooth by design, so this toggle is what shows the transferred detail — the + vivid pink/cyan atlas in **Maps ▸ Normal** is that same detail in tangent + space, not corruption. - **UV** — the final UV layout with islands tinted and the baked base color under it; island count, triangle count and texel usage. - **Maps** — each baked map (base color, normal, metallic/smoothness, occlusion, diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 47f4b423..fb03e1d7 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -30,7 +30,7 @@ internal sealed class Data View view; Stage stage = Stage.Result; Channel channel; - bool wireframe = true, shaded = true, textured = true, vertexColors, uvTexture = true, uvTint = true; + bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, uvTexture = true, uvTint = true; Vector2 orbit = new Vector2(-135, 20); float zoom = 1; PreviewRenderUtility utility; @@ -80,6 +80,7 @@ void DrawMesh(Data data) wireframe = GUILayout.Toggle(wireframe, "Wire", EditorStyles.miniButtonLeft); shaded = GUILayout.Toggle(shaded, "Shaded", EditorStyles.miniButtonMid); textured = GUILayout.Toggle(textured, "Texture", EditorStyles.miniButtonMid); + bumpMap = GUILayout.Toggle(bumpMap, "Bump", EditorStyles.miniButtonMid); vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonRight); } var mesh = data.meshes[(int)stage]; @@ -108,6 +109,11 @@ void DrawMesh(Data data) bool useTexture = textured && stage == Stage.Result && data.baseColor; surface.SetTexture("_MainTex", useTexture ? data.baseColor : null); surface.SetFloat("_UseTexture", useTexture ? 1 : 0); + // Only the result stage has tangents; its baked normal map is the same + // data the saved material gets, so the preview shows the final shading. + var bump = bumpMap && stage == Stage.Result && data.maps != null ? MapTexture(data.maps, Channel.Normal) : null; + surface.SetTexture("_BumpMap", bump); + surface.SetFloat("_UseBumpMap", bump ? 1 : 0); surface.SetFloat("_UseVertexColor", vertexColors && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, Matrix4x4.identity, surface, sub); } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index aa885d1c..4cc98360 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -510,6 +510,11 @@ void Save() // The curated material + prefab ship next to the FBX; keep the // importer from generating a duplicate MaterialDescription copy. modelImporter.materialImportMode = ModelImporterMaterialImportMode.None; + // The normal map was baked against the exported tangent frame; + // a recalculation (MikkT default) can flip its handedness per + // vertex, which green-flips chunks of the baked map. + modelImporter.normalImportMode = ModelImporterNormals.Import; + modelImporter.tangentImportMode = ModelImporterTangents.Import; modelImporter.SaveAndReimport(); } var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; diff --git a/Shaders/RemeshPreview.shader b/Shaders/RemeshPreview.shader index 1f34122c..e6649db5 100644 --- a/Shaders/RemeshPreview.shader +++ b/Shaders/RemeshPreview.shader @@ -1,13 +1,15 @@ -// Remesh & Bake preview: headlight shading, optional base map, vertex colour or -// flat colour; also draws wireframe line meshes. No LightMode tag, so Built-in, -// URP and PreviewRenderUtility all render it. +// Remesh & Bake preview: headlight shading, optional base map, tangent-space +// normal map, vertex colour or flat colour; also draws wireframe line meshes. +// No LightMode tag, so Built-in, URP and PreviewRenderUtility all render it. Shader "Hidden/MeshLab/RemeshPreview" { Properties { _MainTex ("Base", 2D) = "white" {} + _BumpMap ("Normal map", 2D) = "bump" {} _Color ("Color", Color) = (1,1,1,1) _UseTexture ("Use texture", Float) = 0 + _UseBumpMap ("Use normal map", Float) = 0 _UseVertexColor ("Use vertex colour", Float) = 0 _Lit ("Lit", Float) = 1 _DepthOffset ("Depth offset", Float) = 0 @@ -24,10 +26,11 @@ Shader "Hidden/MeshLab/RemeshPreview" #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; + sampler2D _BumpMap; float4 _Color; - float _UseTexture, _UseVertexColor, _Lit; - struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float2 uv : TEXCOORD0; float4 color : COLOR; }; - struct v2f { float4 pos : SV_POSITION; float3 normal : TEXCOORD0; float2 uv : TEXCOORD1; float4 color : COLOR; float3 view : TEXCOORD2; }; + float _UseTexture, _UseBumpMap, _UseVertexColor, _Lit; + struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float4 tangent : TANGENT; float2 uv : TEXCOORD0; float4 color : COLOR; }; + struct v2f { float4 pos : SV_POSITION; float3 normal : TEXCOORD0; float2 uv : TEXCOORD1; float4 color : COLOR; float3 view : TEXCOORD2; float4 tangent : TEXCOORD3; }; v2f vert(appdata v) { v2f o; @@ -36,6 +39,7 @@ Shader "Hidden/MeshLab/RemeshPreview" o.view = normalize(WorldSpaceViewDir(v.vertex)); o.uv = v.uv; o.color = v.color; + o.tangent = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w); return o; } float4 frag(v2f i) : SV_Target @@ -43,7 +47,21 @@ Shader "Hidden/MeshLab/RemeshPreview" float4 c = _Color; if (_UseTexture > 0.5) c *= tex2D(_MainTex, i.uv); if (_UseVertexColor > 0.5) c *= i.color; - if (_Lit > 0.5) c.rgb *= 0.25 + 0.75 * abs(dot(normalize(i.normal), i.view)); + if (_Lit > 0.5) + { + float3 n = normalize(i.normal); + // The bake encodes raw linear RGBA, not Unity's packed normal-map + // format, so decode with a plain *2-1 instead of UnpackNormal. + if (_UseBumpMap > 0.5) + { + float3 tn = tex2D(_BumpMap, i.uv).xyz * 2.0 - 1.0; + float3 t = i.tangent.xyz - n * dot(n, i.tangent.xyz); + t = normalize(t); + float3 b = cross(n, t) * i.tangent.w; + n = normalize(tn.x * t + tn.y * b + tn.z * n); + } + c.rgb *= 0.25 + 0.75 * abs(dot(n, i.view)); + } return c; } ENDCG From 0f9f591375fb666316e45d1e00a1dd96f44a28dc Mon Sep 17 00:00:00 2001 From: SashaRX Date: Mon, 28 Sep 2026 19:51:46 +0200 Subject: [PATCH 026/130] fix(remesh): pin FBX normals/tangents via importNormals/importTangents The unified tangent-space properties are deprecated in Unity 6 and typed ModelImporterTangentSpaceMode, so assigning the normals/tangents enums no longer compiles. Switch to the importNormals/importTangents properties, which the postprocessor already uses. --- CHANGELOG.md | 2 +- Editor/Tools/RemeshBakeTool.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b2901e1..8c0fa83e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **`LightmapTransferTool.ExportVertexColorsToFbxAs(sourceFbxPath, outputFbxPath, entries, uvChannelOverride)`** — public entry point that writes a new FBX next to (or anywhere relative to) the source without mutating the source importer, scene mesh bindings, or working copies. ### Changed -- **Remesh & Bake: the 3D preview applies the baked normal map.** A new **Bump** toggle in the 3D view (default on) shades the result stage with the baked tangent-space normal map — the same data the saved material gets — instead of vertex normals only. With *Hard edges = UV islands* the result's vertex normals are smooth by design and all detail lives in the normal map, so the vertex-only preview (and the vivid pink/cyan atlas under **Maps ▸ Normal**) read as "normals not transferred" although the bake is intact. The FBX save also pins `normalImportMode: Import` and `tangentImportMode: Import` on the result importer, so Unity does not recalculate MikkT tangents whose per-vertex handedness can disagree with the frame the map was baked against (a green-channel flip on parts of the baked map). +- **Remesh & Bake: the 3D preview applies the baked normal map.** A new **Bump** toggle in the 3D view (default on) shades the result stage with the baked tangent-space normal map — the same data the saved material gets — instead of vertex normals only. With *Hard edges = UV islands* the result's vertex normals are smooth by design and all detail lives in the normal map, so the vertex-only preview (and the vivid pink/cyan atlas under **Maps ▸ Normal**) read as "normals not transferred" although the bake is intact. The FBX save also pins `importNormals: Import` and `importTangents: Import` on the result importer, so Unity does not recalculate MikkT tangents whose per-vertex handedness can disagree with the frame the map was baked against (a green-channel flip on parts of the baked map). - **Remesh & Bake: hard edges default to UV islands and settings persist.** `RemeshSettings.hardEdges` now defaults to `UvIslands`: on coarse organic decimations an angle crease leaves nearly every edge split (a fully faceted look) and feeds xatlas the crease-split normals as seams, which shatters the atlas into sliver charts. Stage settings are also saved to EditorPrefs across domain reloads and tab switches instead of silently resetting to defaults between runs. - **meshoptimizer v1.3** — `Native~/CMakeLists.txt` now pins the v1.3 release (`9e1f07b1`, 2026-09-25) instead of the 2026-09-10 remesh snapshot (`ff4a519a`). v1.3 drops the no-op `meshopt_RemeshThicken` and renumbers `meshopt_RemeshShell` / `meshopt_RemeshSolve`; the remesh bridge maps its own flag bits by name, so the C# ABI (`meshLabRemeshVersion() == 1`) is unchanged, and the native test now fails if the shell flag stops reaching meshoptimizer. The plugin binaries are rebuilt by **Build Native Libraries**. - **Vertex AO tab renamed to Vertex Color Baking.** `VertexAOTool` → `VertexColorBakingTool`, `ToolId` `vertex_ao` → `vertex_color_baking`. Asset GUID preserved so existing references stay intact. AO functionality is unchanged and reachable via the new toolbar at the top of the tab. Note: `UvToolHub.SelectToolById` is fed from persisted state, so a stored deep-link to the old `vertex_ao` id now falls back to the first tool. diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 4cc98360..7e39c3ca 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -513,8 +513,8 @@ void Save() // The normal map was baked against the exported tangent frame; // a recalculation (MikkT default) can flip its handedness per // vertex, which green-flips chunks of the baked map. - modelImporter.normalImportMode = ModelImporterNormals.Import; - modelImporter.tangentImportMode = ModelImporterTangents.Import; + modelImporter.importNormals = ModelImporterNormals.Import; + modelImporter.importTangents = ModelImporterTangents.Import; modelImporter.SaveAndReimport(); } var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; From f9686eb0dd913b9417eb1427b5702a64d36ebb7c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 00:05:26 +0200 Subject: [PATCH 027/130] fix(remesh): cast bake rays along a welded cage, not island-split normals UV-island hard edges leave each chart-border vertex copy a one-sided normal; projection rays along them land on a displaced source point and bake artifact bands around every island. Rays now follow area-weighted face normals welded across bit-identical coincident vertices, while the tangent frame keeps the hard vertex normal the mesh shades with. A synthetic displaced-sphere repro of the exact bake math confirms the mean angular error falls from 3.2 to 0.96 degrees and >45-degree outliers drop 8x, matching the previously-working smooth-border path. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 8 +- Editor/RemeshBaker.cs | 46 ++- Tools~/remesh_bake_repro/.gitignore | 3 + Tools~/remesh_bake_repro/Program.cs | 502 ++++++++++++++++++++++++++++ 5 files changed, 554 insertions(+), 6 deletions(-) create mode 100644 Tools~/remesh_bake_repro/.gitignore create mode 100644 Tools~/remesh_bake_repro/Program.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c0fa83e..fb23a00f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **Remesh & Bake: normal-map artifact bands around every UV island in hard-edge modes.** With *Hard edges = UV islands* (or *+ angle*), `SmoothWithinSplitVertices` leaves each chart-border vertex copy a one-sided normal, and the baker cast its projection rays along exactly those normals — the ray landed on a displaced source point, so a band of garbage texels formed along every island border (on an 85-island atlas: noise everywhere). Rays are now cast along a smooth welded cage direction (area-weighted face normals averaged across bit-identical coincident vertices — the direction the native crease=π path produces before the split), while the tangent frame keeps the hard vertex normal the result mesh shades with, so encode/decode still cancel and hard island borders survive intact. Verified on a synthetic displaced-sphere repro (exact port of the bake math): mean angular error drops from 3.2° to 0.96° and >45° outliers fall 8× to the level of the previously-working smooth-border path. - **"Save Mesh Assets" no longer throws on unparsable mesh names** — `SaveAll` sanitized mesh names before generating asset paths; a name with a character that is invalid in file names made `GenerateUniqueAssetPath` return an empty string and `CreateAsset` threw "path is empty" mid-OnGUI, corrupting the hub layout state for the event. A missing/uncreatable output folder now aborts with a readable error instead of cascading. - **FBX re-saves no longer triangulate quad meshes** — the isolated-export core (`ExportFbxIsolatedCore`, the path behind Vertex AO saves and narrow-intent UV/channel overwrites) enables `keepQuads` on the source importer in Phase 1, so the clone it serializes keeps the FBX's original polygon topology and Unity's FBX exporter writes quads back. `keepQuads` only reshapes the index buffer (vertex order/count untouched), so the snapshot/clone vertex-count contract holds, and the setting persists like `generateSecondaryUV=off` so the re-saved file is not re-triangulated on the next import. Variant exports (`ExportVertexColorsToFbxAs`) toggle `keepQuads` only for the clone reimport, restore the source importer afterwards (also on failure), and pin `keepQuads` on the new variant file's own importer. The wide LOD-rebuild path already locked `keepQuads` at export time; its export meshes still take topology from the tool's computed meshes, so the first wide export of a freshly loaded (triangulated) import writes triangles — from the next reload on, quads survive. N-gons (>4 vertices) still import triangulated (`keepQuads` covers quads only). - **Remesh & Bake capture and save** — Read/Write-disabled source meshes are read from the imported asset instead of an empty `Instantiate` clone ("Not allowed to access uv"), shaders other than Standard/URP Lit bake from common property names with a warning instead of aborting, and Save refreshes a folder the panel just created instead of failing with "Could not create result folder". diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 14abc2ce..a67b0d99 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -66,7 +66,13 @@ settings, marked "settings changed" in its header) and clears everything after i and vertex color transfer: *Vertex color (RGB)* and *Vertex alpha* copy the source vertex colors, interpolated at the nearest source surface point, onto the result mesh independently. Missed covered texels are magenta, not silently - patched with unrelated material data. + patched with unrelated material data. Projection rays are cast along a smooth + welded "cage" direction (area-weighted face normals averaged across coincident + vertices), not the vertex normal: UV-island hard edges leave chart-border + normals one-sided, and rays along them would sample a displaced source point, + baking artifact bands around every island. The tangent-space normal map is + still encoded against the vertex normal the result mesh shades with, so hard + island borders keep their crisp silhouette while the interior stays clean. 6. **Save** to a folder under Assets. A unique output folder contains the model, material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a linear floating-point Emission EXR. Source files are never overwritten. diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 9492efde..7e753ba8 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -32,6 +32,12 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto var bvh = new TriangleBvh(source.positions, source.indices); token.ThrowIfCancellationRequested(); float distance = source.diagonal * settings.projectionDistance; + // Projection rays follow a smooth welded "cage" direction, not the vertex + // normal: island hard-edge modes leave chart-border normals one-sided, + // and casting along them samples a displaced source point, which bakes + // artifact bands around every island. The tangent frame stays the vertex + // normal the result mesh shades with, so encode and decode still match. + var cage = BuildCageNormals(target); int misses = 0; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { @@ -59,8 +65,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, bvh, face, w, distance, - out var sc, out var sn, out var sm, out var sa, out var se)) continue; + if (!Project(source, target, tangents, cage, bvh, face, w, distance, + out var sc, out var sn, out var sm, out var sa, out var se)) continue; color += sc.linear; metal += sm; ao += sa; emission += se; normal += new Vector3(sn.r * 2 - 1, sn.g * 2 - 1, sn.b * 2 - 1); ++hits; @@ -139,15 +145,18 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // Trace from the destination surface point back to the source and evaluate its // material there. False when neither the ray nor the bounded nearest query hits. - static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, TriangleBvh bvh, - int face, Vector3 w, float distance, + // The ray direction comes from the welded cage normal; the tangent frame keeps + // the (possibly hard) vertex normal so encode matches how the mesh shades. + static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, + TriangleBvh bvh, int face, Vector3 w, float distance, out Color color, out Color normal, out Color metal, out Color ao, out Color emission) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; + Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; - var hit = bvh.Raycast(p + n * distance, -n, distance * 2); + var hit = bvh.Raycast(p + rayN * distance, -rayN, distance * 2); int sourceFace = hit.triangleIndex; Vector3 sw = hit.barycentric; if (sourceFace < 0) { @@ -162,6 +171,33 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] return true; } + // Per-vertex raycast directions from area-weighted face normals welded across + // coincident vertices: UV chart borders (and crease edges) split vertices, and + // each copy's own normal is one-sided there, so rays cast along it land on a + // displaced source point. Welding by exact position — xatlas copies bit-identical + // coordinates — averages both sides back into a smooth cage direction. + static Vector3[] BuildCageNormals(RemeshNative.Geometry target) + { + var slots = new int[target.positions.Length]; + var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(target.positions.Length); + for (int i = 0; i < target.positions.Length; ++i) { + var p = target.positions[i]; + var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); + if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } + slots[i] = slot; + } + var welded = new Vector3[map.Count]; + for (int i = 0; i < target.indices.Length; i += 3) { + int a = target.indices[i], b = target.indices[i + 1], c = target.indices[i + 2]; + Vector3 n = Vector3.Cross(target.positions[b] - target.positions[a], target.positions[c] - target.positions[a]); + welded[slots[a]] += n; welded[slots[b]] += n; welded[slots[c]] += n; + } + var cage = new Vector3[target.positions.Length]; + for (int i = 0; i < cage.Length; ++i) + cage[i] = welded[slots[i]].sqrMagnitude > 1e-30f ? welded[slots[i]].normalized : target.normals[i]; + return cage; + } + // Nearest source surface point per result vertex, interpolating its vertex colours. internal static Color[] TransferVertexColors(RemeshSource source, RemeshNative.Geometry target, TriangleBvh bvh, RemeshSettings settings, CancellationToken token) diff --git a/Tools~/remesh_bake_repro/.gitignore b/Tools~/remesh_bake_repro/.gitignore new file mode 100644 index 00000000..93c0a558 --- /dev/null +++ b/Tools~/remesh_bake_repro/.gitignore @@ -0,0 +1,3 @@ +bin/ +obj/ +*.ppm diff --git a/Tools~/remesh_bake_repro/Program.cs b/Tools~/remesh_bake_repro/Program.cs new file mode 100644 index 00000000..823ec17f --- /dev/null +++ b/Tools~/remesh_bake_repro/Program.cs @@ -0,0 +1,502 @@ +// Offline reproduction of RemeshBaker.Bake for the UvIslands normal-map artifacts. +// Exact 1:1 port of Rasterize/Inside/Project/Evaluate/Basis + Lengyel tangents +// (Unity RecalculateTangents equivalent). Synthetic source = displaced sphere with +// analytic normals; target = coarse version, chart-split UVs like xatlas output. +// Metrics: angular error of the baked map decoded through the same interpolated +// TBN a renderer would use, vs the analytic source normal at the sample point. +using System; +using System.Collections.Generic; +using System.IO; +using System.Numerics; + +static class Repro +{ + const int AtlasSize = 256; + const int SampleGrid = 2; // "bakeSamples = 4" + const float ProjectionDistance = 0.8f; + const int ChartCount = 6; // longitude bands -> separate atlas rects (3x2) + + static void Main(string[] args) + { + var source = BuildSphere(40, 72); // ~5.5k tris + var targetBase = BuildSphere(20, 36); // ~1.4k tris + var diag = Diagonal(source); + int rowsT = 20, colsT = 36; + + foreach (var mode in new[] { "hardBorders(uvIslands)", "smoothBorders(nativePi)" }) + { + var target = SplitIntoCharts(targetBase, rowsT, colsT, mode.Contains("hard")); + var tangents = LengyelTangents(target); + var offsets = SampleOffsets(SampleGrid); + var owners = Rasterize(target, AtlasSize, offsets); + int covered = 0; + for (int i = 0; i < owners.Length; i++) if (owners[i] >= 0) covered++; + float distance = diag * ProjectionDistance; + int misses = 0, fallbacks = 0, farHits = 0; + double errSum = 0, errMax = 0; int errN = 0; + var errBuckets = new int[4]; // <5deg, <20, <45, worse + var map = new Vector3[AtlasSize * AtlasSize]; + bool[] hitMap = new bool[AtlasSize * AtlasSize]; + for (int y = 0; y < AtlasSize; y++) + { + var candidates = new int[9]; + for (int x = 0; x < AtlasSize; x++) + { + int pixel = y * AtlasSize + x; + if (owners[pixel] < 0) continue; + int cc = 0; + for (int dy = -1; dy <= 1; dy++) + for (int dx = -1; dx <= 1; dx++) + { + int xx = x + dx, yy = y + dy; + if (xx < 0 || yy < 0 || xx >= AtlasSize || yy >= AtlasSize) continue; + int f = owners[yy * AtlasSize + xx]; + if (f >= 0 && Array.IndexOf(candidates, f, 0, cc) < 0) candidates[cc++] = f; + } + Vector3 normalSum = Vector3.Zero; int hits = 0; + Vector3 worldSum = Vector3.Zero; + foreach (var off in offsets) + { + var uv = new Vector2((x + off.X) / AtlasSize, (y + off.Y) / AtlasSize); + int face = -1; Vector3 w = default; + for (int c = 0; c < cc && face < 0; c++) + if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; + if (face < 0) continue; + if (!Project(source, target, tangents, face, w, distance, + out var nTangent, out var usedFallback, ref farHits)) continue; + if (usedFallback) fallbacks++; + normalSum += nTangent; + // decode through the same frame a renderer uses at this texel + var n = Vector3.Normalize(Interp(target.normals, target.indices, face, w)); + var t4 = Interp4(tangents, target.indices, face, w); + Basis(n, t4, out var tt, out var tb); + worldSum += tt * nTangent.X + tb * nTangent.Y + n * nTangent.Z; + hits++; + } + if (hits == 0) { misses++; continue; } + var nT = normalSum.LengthSquared() > 1e-12f ? Vector3.Normalize(normalSum) : new Vector3(0, 0, 1); + map[pixel] = nT; hitMap[pixel] = true; + if (worldSum.LengthSquared() < 1e-12f) continue; // guard NaN + var world = Vector3.Normalize(worldSum); + // ground truth: source normal at the nearest source point to p + var p = TexelPosition(target, owners, x, y); + var (sFace, sW) = BruteNearest(source, p); + if (sFace >= 0) + { + var truth = Vector3.Normalize(Interp(source.normals, source.indices, sFace, sW)); + var deg = Math.Acos(Math.Clamp(Vector3.Dot(world, truth), -1, 1)) * 180 / Math.PI; + errSum += deg; errN++; + if (deg > errMax) errMax = deg; + if (deg < 5) errBuckets[0]++; else if (deg < 20) errBuckets[1]++; + else if (deg < 45) errBuckets[2]++; else errBuckets[3]++; + } + } + } + Console.WriteLine($"== {mode} =="); + Console.WriteLine($"covered={covered} misses={misses} nearestFallbacks={fallbacks} farSideHits={farHits}"); + Console.WriteLine($"angular error vs truth: n={errN} mean={errSum / Math.Max(1, errN):F2}deg max={errMax:F1}deg"); + Console.WriteLine($"buckets deg: <5={errBuckets[0]} 5-20={errBuckets[1]} 20-45={errBuckets[2]} >45={errBuckets[3]}"); + WritePpm($"map_{(mode.Contains("hard") ? "hard" : "smooth")}.ppm", map, hitMap); + } + Console.WriteLine("done"); + } + + // ── geometry ── + + sealed class Mesh + { + public Vector3[] positions, normals; + public Vector2[] uv; + public int[] indices; + public Vector3[] cage; // smooth welded normals used as raycast directions + } + + static Vector3 SurfacePoint(float theta, float phi) + { + const float radius = 1f, amp = 0.10f; const int kT = 7, kP = 5; + float r = radius + amp * MathF.Sin(kT * theta) * MathF.Cos(kP * phi); + return new Vector3(MathF.Sin(theta) * MathF.Cos(phi), MathF.Cos(theta), MathF.Sin(theta) * MathF.Sin(phi)) * r; + } + + static Vector3 AnalyticNormal(float theta, float phi) + { + float e = 1e-3f; + var dT = SurfacePoint(theta + e, phi) - SurfacePoint(theta - e, phi); + var dP = SurfacePoint(theta, phi + e) - SurfacePoint(theta, phi - e); + var n = Vector3.Cross(dP, dT); + if (Vector3.Dot(n, SurfacePoint(theta, phi)) < 0) n = -n; + if (n.LengthSquared() < 1e-20f) return Vector3.Normalize(SurfacePoint(theta, phi)); // poles + return Vector3.Normalize(n); + } + + static Mesh BuildSphere(int rows, int cols) + { + int vcols = cols + 1; + var pos = new List(); var nrm = new List(); var uvL = new List(); + for (int i = 0; i <= rows; i++) + { + float theta = MathF.PI * i / rows; + for (int j = 0; j <= cols; j++) + { + float phi = 2 * MathF.PI * j / cols; + pos.Add(SurfacePoint(theta, phi)); + nrm.Add(AnalyticNormal(theta, phi)); + uvL.Add(new Vector2((float)j / cols, (float)i / rows)); + } + } + var idx = new List(); + for (int i = 0; i < rows; i++) + for (int j = 0; j < cols; j++) + { + int a = i * vcols + j, b = a + 1, c = a + vcols, d = c + 1; + idx.AddRange(new[] { a, c, b, b, c, d }); + } + // meshopt emits triangles wound so cross(b-a, c-a) points outward; my grid + // emits the opposite. Flip winding globally to match the production convention. + { + int a = idx[0], b = idx[1], c = idx[2]; + var fn = Vector3.Cross(pos[b] - pos[a], pos[c] - pos[a]); + if (Vector3.Dot(fn, pos[a]) < 0) + for (int i = 0; i < idx.Count; i += 3) (idx[i + 1], idx[i + 2]) = (idx[i + 2], idx[i + 1]); + } + return new Mesh { positions = pos.ToArray(), normals = nrm.ToArray(), uv = uvL.ToArray(), indices = idx.ToArray() }; + } + + // Split the grid mesh into ChartCount longitude charts, each in its own atlas + // rect, duplicating border vertices (xatlas-style). hard=true -> SmoothWithinSplitVertices. + static Mesh SplitIntoCharts(Mesh m, int rowsReal, int colsReal, bool hard) + { + int vcols = colsReal + 1; + int cw = ChartCount, layout = 3; + var pos = new List(); var nrm = new List(); var uvL = new List(); + var idx = new List(); + var map = new Dictionary(); + for (int c = 0; c < cw; c++) + { + map.Clear(); + int j0 = c * colsReal / cw, j1 = (c + 1) * colsReal / cw; + float rx = (c % layout) / (float)layout, ry = (c / layout) / 2f; + const float rw = 1f / 3, rh = 1f / 2; + int AddVertex(int i, int j) + { + long key = (long)i * vcols + j; + if (map.TryGetValue(key, out var id)) return id; + id = pos.Count; + int src = i * vcols + j; + pos.Add(m.positions[src]); + nrm.Add(m.normals[src]); + float u = (j - j0) / MathF.Max(1, j1 - j0); + uvL.Add(new Vector2(rx + 0.02f + u * (rw - 0.04f), ry + 0.02f + m.uv[src].Y * (rh - 0.04f))); + map[key] = id; + return id; + } + for (int i = 0; i < rowsReal; i++) + for (int j = j0; j < j1; j++) + { + int a = AddVertex(i, j), b = AddVertex(i, j + 1), cc = AddVertex(i + 1, j), d = AddVertex(i + 1, j + 1); + idx.AddRange(new[] { a, cc, b, b, cc, d }); + } + } + // keep the meshopt convention: cross(b-a, c-a) points outward + { + double outward = 0; + for (int i = 0; i < idx.Count; i += 3) + { + var pa = pos[idx[i]]; var pb = pos[idx[i + 1]]; var pc = pos[idx[i + 2]]; + var fn = Vector3.Cross(pb - pa, pc - pa); + outward += Vector3.Dot(fn, (pa + pb + pc) / 3f); + } + bool needFlip = outward < 0; + Console.WriteLine($"[winding] aggregated cross·centroid = {outward:F1} needFlip={needFlip}"); + if (needFlip) + for (int i = 0; i < idx.Count; i += 3) (idx[i + 1], idx[i + 2]) = (idx[i + 2], idx[i + 1]); + } + var mesh = new Mesh { positions = pos.ToArray(), normals = nrm.ToArray(), uv = uvL.ToArray(), indices = idx.ToArray() }; + // Diagnostic: does the C# Cross(b-a, c-a) smoothing agree in direction with + // the "native" smooth normals (analytic here, meshopt_generateNormals there)? + var before = (Vector3[])mesh.normals.Clone(); + if (hard) + { + // production order: smooth welded normals exist first (native crease=pi), + // then SmoothWithinSplitVertices hardens the chart borders. + SmoothAcrossEverything(mesh); + mesh.cage = (Vector3[])mesh.normals.Clone(); + SmoothWithinSplitVertices(mesh); + } + else { SmoothAcrossEverything(mesh); mesh.cage = (Vector3[])mesh.normals.Clone(); } + float dotSum = 0; int dotN = 0, flipped = 0; + for (int i = 0; i < mesh.normals.Length; i++) + { + float d = Vector3.Dot(Vector3.Normalize(before[i]), mesh.normals[i]); + dotSum += d; dotN++; + if (d < 0) flipped++; + } + Console.WriteLine($"[diag] hard={hard}: mean dot(pre-smooth, post-smooth normals) = {dotSum / Math.Max(1, dotN):F3} flipped={flipped}/{dotN}"); + return mesh; + } + + // exact port of RemeshNative.SmoothWithinSplitVertices + static void SmoothWithinSplitVertices(Mesh g) + { + var sum = new Vector3[g.positions.Length]; + for (int i = 0; i < g.indices.Length; i += 3) + { + int a = g.indices[i], b = g.indices[i + 1], c = g.indices[i + 2]; + var n = Vector3.Cross(g.positions[b] - g.positions[a], g.positions[c] - g.positions[a]); + sum[a] += n; sum[b] += n; sum[c] += n; + } + for (int i = 0; i < sum.Length; i++) + if (sum[i].LengthSquared() > 1e-30f) g.normals[i] = Vector3.Normalize(sum[i]); + } + + static void SmoothAcrossEverything(Mesh g) + { + var map = new Dictionary<(int, int, int), List>(); + for (int i = 0; i < g.positions.Length; i++) + { + var k = ((int)MathF.Round(g.positions[i].X * 10000), (int)MathF.Round(g.positions[i].Y * 10000), (int)MathF.Round(g.positions[i].Z * 10000)); + if (!map.TryGetValue(k, out var list)) map[k] = list = new List(); + list.Add(i); + } + var sum = new Vector3[g.positions.Length]; + for (int i = 0; i < g.indices.Length; i += 3) + { + int a = g.indices[i], b = g.indices[i + 1], c = g.indices[i + 2]; + var n = Vector3.Cross(g.positions[b] - g.positions[a], g.positions[c] - g.positions[a]); + sum[a] += n; sum[b] += n; sum[c] += n; + } + foreach (var list in map.Values) + { + var total = Vector3.Zero; + foreach (var i in list) total += sum[i]; + if (total.LengthSquared() > 1e-30f) + foreach (var i in list) g.normals[i] = Vector3.Normalize(total); + } + } + + // Lengyel tangents — what Unity's RecalculateTangents implements. + static Vector4[] LengyelTangents(Mesh m) + { + var tan1 = new Vector3[m.positions.Length]; + var tan2 = new Vector3[m.positions.Length]; + for (int i = 0; i < m.indices.Length; i += 3) + { + int i1 = m.indices[i], i2 = m.indices[i + 1], i3 = m.indices[i + 2]; + var v1 = m.positions[i1]; var v2 = m.positions[i2]; var v3 = m.positions[i3]; + var w1 = m.uv[i1]; var w2 = m.uv[i2]; var w3 = m.uv[i3]; + float x1 = v2.X - v1.X, x2 = v3.X - v1.X; + float y1 = v2.Y - v1.Y, y2 = v3.Y - v1.Y; + float z1 = v2.Z - v1.Z, z2 = v3.Z - v1.Z; + float s1 = w2.X - w1.X, s2 = w3.X - w1.X; + float t1 = w2.Y - w1.Y, t2 = w3.Y - w1.Y; + float d = s1 * t2 - s2 * t1; + if (MathF.Abs(d) < 1e-10f) continue; + float r = 1f / d; + var sdir = new Vector3((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r); + var tdir = new Vector3((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r); + tan1[i1] += sdir; tan1[i2] += sdir; tan1[i3] += sdir; + tan2[i1] += tdir; tan2[i2] += tdir; tan2[i3] += tdir; + } + var result = new Vector4[m.positions.Length]; + for (int i = 0; i < result.Length; i++) + { + var n = m.normals[i]; + var t = tan1[i] - n * Vector3.Dot(n, tan1[i]); + if (t.LengthSquared() < 1e-20f) t = new Vector3(1, 0, 0); + t = Vector3.Normalize(t); + float w = Vector3.Dot(Vector3.Cross(n, t), tan2[i]) < 0 ? -1 : 1; + result[i] = new Vector4(t, w); + } + return result; + } + + // ── exact bake ports ── + + static Vector2[] SampleOffsets(int grid) + { + var offsets = new Vector2[grid * grid]; + for (int y = 0; y < grid; y++) + for (int x = 0; x < grid; x++) + offsets[y * grid + x] = new Vector2((x + 0.5f) / grid, (y + 0.5f) / grid); + return offsets; + } + + static int[] Rasterize(Mesh target, int size, Vector2[] offsets) + { + var owners = new int[size * size]; + var centred = new bool[owners.Length]; + for (int i = 0; i < owners.Length; i++) owners[i] = -1; + for (int face = 0; face < target.indices.Length / 3; face++) + { + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + var ua = target.uv[a]; var ub = target.uv[b]; var uc = target.uv[c]; + int x0 = Clamp((int)MathF.Floor(MathF.Min(ua.X, MathF.Min(ub.X, uc.X)) * size), 0, size - 1); + int x1 = Clamp((int)MathF.Ceiling(MathF.Max(ua.X, MathF.Max(ub.X, uc.X)) * size), 0, size - 1); + int y0 = Clamp((int)MathF.Floor(MathF.Min(ua.Y, MathF.Min(ub.Y, uc.Y)) * size), 0, size - 1); + int y1 = Clamp((int)MathF.Ceiling(MathF.Max(ua.Y, MathF.Max(ub.Y, uc.Y)) * size), 0, size - 1); + for (int y = y0; y <= y1; y++) + for (int x = x0; x <= x1; x++) + { + int pixel = y * size + x; + if (Inside(target, face, new Vector2((x + 0.5f) / size, (y + 0.5f) / size), out _)) + { owners[pixel] = face; centred[pixel] = true; } + else if (offsets.Length > 1 && !centred[pixel] && owners[pixel] < 0) + foreach (var offset in offsets) + if (Inside(target, face, new Vector2((x + offset.X) / size, (y + offset.Y) / size), out _)) + { owners[pixel] = face; break; } + } + } + return owners; + } + + static bool Inside(Mesh target, int face, Vector2 uv, out Vector3 w) + { + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + return Barycentric(uv, target.uv[a], target.uv[b], target.uv[c], out w) && + w.X >= -1e-6f && w.Y >= -1e-6f && w.Z >= -1e-6f; + } + + static bool Project(Mesh source, Mesh target, Vector4[] tangents, int face, Vector3 w, float distance, + out Vector3 nTangent, out bool usedFallback, ref int farHits) + { + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Vector3 p = target.positions[a] * w.X + target.positions[b] * w.Y + target.positions[c] * w.Z; + Vector3 n = Vector3.Normalize(target.normals[a] * w.X + target.normals[b] * w.Y + target.normals[c] * w.Z); + // raycast direction from the smooth welded cage; the tangent frame below + // stays the hard island-border normal the final mesh shades with. + Vector3 rayN = Vector3.Normalize(target.cage[a] * w.X + target.cage[b] * w.Y + target.cage[c] * w.Z); + Vector4 tangent = tangents[a] * w.X + tangents[b] * w.Y + tangents[c] * w.Z; + var hit = RaycastAll(source, p + rayN * distance, -rayN, distance * 2); + int sourceFace = hit.triangleIndex; + Vector3 sw = hit.barycentric; + usedFallback = false; + if (sourceFace < 0) + { + var nearest = BruteNearest(source, p, distance); + sourceFace = nearest.sFace; sw = nearest.sW; + usedFallback = true; + } + if (sourceFace < 0) { nTangent = default; return false; } + if (hit.t > distance * 1.05f) farHits++; + var ns = Vector3.Normalize(source.normals[source.indices[sourceFace * 3]] * sw.X + + source.normals[source.indices[sourceFace * 3 + 1]] * sw.Y + + source.normals[source.indices[sourceFace * 3 + 2]] * sw.Z); + Basis(n, tangent, out var tt, out var tb); + nTangent = new Vector3(Vector3.Dot(ns, tt), Vector3.Dot(ns, tb), Vector3.Dot(ns, n)); + return true; + } + + static void Basis(Vector3 n, Vector4 tangent, out Vector3 t, out Vector3 b) + { + t = new Vector3(tangent.X, tangent.Y, tangent.Z); + t = Vector3.Normalize(t - n * Vector3.Dot(t, n)); + if (t.LengthSquared() < 1e-10f) t = Vector3.Normalize(Vector3.Cross(n, MathF.Abs(n.Y) < 0.9f ? Vector3.UnitY : Vector3.UnitX)); + b = Vector3.Cross(n, t) * (tangent.W < 0 ? -1 : 1); + } + + static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 weights) + { + Vector2 ab = b - a, ac = c - a, ap = p - a; + float det = ab.X * ac.Y - ab.Y * ac.X; + if (MathF.Abs(det) < 1e-15f) { weights = Vector3.Zero; return false; } + float v = (ap.X * ac.Y - ap.Y * ac.X) / det; + float w = (ab.X * ap.Y - ab.Y * ap.X) / det; + weights = new Vector3(1 - v - w, v, w); return true; + } + + static (int sFace, Vector3 sW) BruteNearest(Mesh m, Vector3 p, float maxDist = float.MaxValue) + { + int best = -1; float bestSq = maxDist * maxDist; Vector3 bestW = default; + for (int f = 0; f < m.indices.Length / 3; f++) + { + var (cp, w) = ClosestOnTriangle(p, m, f); + float d = (cp - p).LengthSquared(); + if (d < bestSq) { bestSq = d; best = f; bestW = w; } + } + return (best, bestW); + } + + static (int triangleIndex, float t, Vector3 barycentric) RaycastAll(Mesh m, Vector3 origin, Vector3 dir, float maxDist) + { + int best = -1; float bestT = maxDist; float bu = 0, bv = 0; + for (int f = 0; f < m.indices.Length / 3; f++) + { + int i0 = m.indices[f * 3], i1 = m.indices[f * 3 + 1], i2 = m.indices[f * 3 + 2]; + var a = m.positions[i0]; var b = m.positions[i1]; var c = m.positions[i2]; + var edge1 = b - a; var edge2 = c - a; + var h = Vector3.Cross(dir, edge2); + float det = Vector3.Dot(edge1, h); + if (det > -1e-7f && det < 1e-7f) continue; + float inv = 1f / det; + var s = origin - a; + float u = inv * Vector3.Dot(s, h); + if (u < 0 || u > 1) continue; + var q = Vector3.Cross(s, edge1); + float v = inv * Vector3.Dot(dir, q); + if (v < 0 || u + v > 1) continue; + float t = inv * Vector3.Dot(edge2, q); + if (t >= 0 && t < bestT) { bestT = t; best = f; bu = u; bv = v; } + } + return (best, bestT, new Vector3(1 - bu - bv, bu, bv)); + } + + static (Vector3 point, Vector3 w) ClosestOnTriangle(Vector3 p, Mesh m, int f) + { + var a = m.positions[m.indices[f * 3]]; var b = m.positions[m.indices[f * 3 + 1]]; var c = m.positions[m.indices[f * 3 + 2]]; + var ab = b - a; var ac = c - a; var ap = p - a; + float d1 = Vector3.Dot(ab, ap), d2 = Vector3.Dot(ac, ap); + if (d1 <= 0 && d2 <= 0) return (a, new Vector3(1, 0, 0)); + var bp = p - b; + float d3 = Vector3.Dot(ab, bp), d4 = Vector3.Dot(ac, bp); + if (d3 >= 0 && d4 <= d3) return (b, new Vector3(0, 1, 0)); + var cp = p - c; + float d5 = Vector3.Dot(ab, cp), d6 = Vector3.Dot(ac, cp); + if (d6 >= 0 && d5 <= d6) return (c, new Vector3(0, 0, 1)); + float vc = d1 * d4 - d3 * d2; + if (vc <= 0 && d1 >= 0 && d3 <= 0) { float v0 = d1 / (d1 - d3); return (a + v0 * ab, new Vector3(1 - v0, v0, 0)); } + float vb = d5 * d2 - d1 * d6; + if (vb <= 0 && d2 >= 0 && d6 <= 0) { float w0 = d2 / (d2 - d6); return (a + w0 * ac, new Vector3(1 - w0, 0, w0)); } + float va = d3 * d6 - d5 * d4; + if (va <= 0 && (d4 - d3) >= 0 && (d5 - d6) >= 0) { float w0 = (d4 - d3) / ((d4 - d3) + (d5 - d6)); return (b + w0 * (c - b), new Vector3(0, 1 - w0, w0)); } + float denom = 1f / (va + vb + vc); + float sv = vb * denom, sw2 = vc * denom; + return (a + sv * ab + sw2 * ac, new Vector3(1 - sv - sw2, sv, sw2)); + } + + static Vector3 Interp(Vector3[] arr, int[] idx, int face, Vector3 w) => + arr[idx[face * 3]] * w.X + arr[idx[face * 3 + 1]] * w.Y + arr[idx[face * 3 + 2]] * w.Z; + static Vector4 Interp4(Vector4[] arr, int[] idx, int face, Vector3 w) => + arr[idx[face * 3]] * w.X + arr[idx[face * 3 + 1]] * w.Y + arr[idx[face * 3 + 2]] * w.Z; + + static Vector3 TexelPosition(Mesh target, int[] owners, int x, int y) + { + int face = owners[y * AtlasSize + x]; + if (Inside(target, face, new Vector2((x + 0.5f) / AtlasSize, (y + 0.5f) / AtlasSize), out var w)) + return Interp(target.positions, target.indices, face, w); + return target.positions[target.indices[face * 3]]; + } + + static float Diagonal(Mesh m) + { + var mn = new Vector3(float.MaxValue); var mx = new Vector3(float.MinValue); + foreach (var p in m.positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } + return (mx - mn).Length(); + } + + static int Clamp(int v, int lo, int hi) => v < lo ? lo : v > hi ? hi : v; + + static void WritePpm(string path, Vector3[] map, bool[] hit) + { + using var f = File.CreateText(path); + f.WriteLine($"P3 {AtlasSize} {AtlasSize} 255"); + for (int i = 0; i < map.Length; i++) + { + var c = hit[i] ? new Vector3( + Math.Clamp(map[i].X * 0.5f + 0.5f, 0, 1), + Math.Clamp(map[i].Y * 0.5f + 0.5f, 0, 1), + Math.Clamp(map[i].Z * 0.5f + 0.5f, 0, 1)) : new Vector3(0, 0, 0); + f.Write($"{(int)(c.X * 255)} {(int)(c.Y * 255)} {(int)(c.Z * 255)} "); + if (i % 16 == 15) f.WriteLine(); + } + } +} From b1bacb67a071079ff8b4e9600d2f560653d7dbd4 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 00:13:00 +0200 Subject: [PATCH 028/130] feat(remesh): RemeshDiag log category with bake health counters Every bake now records cage welding (positions vs split copies), one-sided border normals with the max cage deviation, nearest-fallback projection samples, and normal-map tilt statistics. The summary prints under the RemeshDiag log filter, and a map dominated by >45 degree tilts at a high mean tilt warns on its own - the numeric signature of the island-border artifact bands fixed in the previous commit. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 5 ++++ Editor/RemeshBaker.cs | 45 ++++++++++++++++++++++++++----- Editor/Tools/RemeshBakeTool.cs | 15 +++++++++++ Editor/UvtLog.cs | 3 ++- 5 files changed, 62 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb23a00f..d184c8cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Added +- **Remesh & Bake diagnostic log (RemeshDiag category)** — every bake prints its health counters to the Console when the `RemeshDiag` log filter is on: welded cage positions and split copies (how many vertices the UV/crease splits duplicated), one-sided border normals with the max cage deviation, nearest-fallback projection samples, missed texels, and the normal map's tilt statistics (mean/max angle from flat, count of texels leaning >45°). A map where >5% of texels lean >45° at a >30° mean tilt additionally logs a warning pointing at hard-edge mode / projection distance / cage fit — the numeric signature of the island-border artifact bands fixed this release. The category bit slots into the existing Log filters panel automatically. - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. - **Remesh & Bake: embed textures in the exported FBX** — a save-time toggle (default on) passes `EmbedTextures` to the FBX exporter so the baked maps travel inside the binary FBX instead of being linked by absolute path (the exporter's default link triggered "absolute reference to this texture file" warnings and made the FBX non-portable). Turn it off for a lean FBX that links the exported maps on this machine; embedding adds the map sizes to the file (the float EXR emission map alone is 16 bytes per texel). - **Remesh & Bake stages and previews** — the tab runs Voxel remesh → Simplify → Normals & UV → Bake as separate stages with their own settings, each re-runnable without repeating earlier ones (stale stages are marked and refreshed first). A right-hand preview shows an orbitable 3D view of any stage (wireframe, shading, baked base color, vertex colors), the UV layout with tinted islands over the baked base color, and every baked map. Simplification is error-driven and adaptive by default (flat areas collapse, detail keeps density) with optional light/strong regularization, fold preservation and small-part pruning; the triangle count is now a stopping point, not required. Hard edges: smooth, crease angle, UV island borders, or both. xatlas island and packing options are exposed. Baking supersamples 1/4/9/16 samples per texel with conservative edge coverage and can transfer source vertex color and vertex alpha to the result mesh. Native remesh ABI is now 2 (`meshLabVoxelRemesh`, `meshLabSimplify`, `meshLabUnwrap`); rebuild the plugins. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index a67b0d99..0e4e2ffb 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -73,6 +73,11 @@ settings, marked "settings changed" in its header) and clears everything after i baking artifact bands around every island. The tangent-space normal map is still encoded against the vertex normal the result mesh shades with, so hard island borders keep their crisp silhouette while the interior stays clean. + With the **RemeshDiag** log filter enabled, every bake also prints its health + counters to the Console: welded cage positions and split copies, one-sided + border normals (max cage deviation), nearest-fallback projection samples and + the normal map's tilt statistics (mean/max angle from flat, texels >45°); a + map dominated by extreme tilts additionally raises a warning. 6. **Save** to a folder under Assets. A unique output folder contains the model, material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a linear floating-point Emission EXR. Source files are never overwritten. diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 7e753ba8..ecc5363b 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -13,6 +13,9 @@ internal sealed class Maps public Color[] emission; public Color[] vertexColors; // per result vertex, null unless a transfer was requested public int size, misses, covered; + // Bake health counters surfaced through the RemeshDiag log category. + public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels; + public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; } // Thread-safe: no UnityEngine.Object access in this method or the BVH. @@ -37,8 +40,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // and casting along them samples a displaced source point, which bakes // artifact bands around every island. The tangent frame stays the vertex // normal the result mesh shades with, so encode and decode still match. - var cage = BuildCageNormals(target); - int misses = 0; + var cage = BuildCageNormals(target, result); + int misses = 0, rayFallbacks = 0; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { var candidates = new int[9]; @@ -66,7 +69,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; if (!Project(source, target, tangents, cage, bvh, face, w, distance, - out var sc, out var sn, out var sm, out var sa, out var se)) continue; + out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; + if (rayFallback) Interlocked.Increment(ref rayFallbacks); color += sc.linear; metal += sm; ao += sa; emission += se; normal += new Vector3(sn.r * 2 - 1, sn.g * 2 - 1, sn.b * 2 - 1); ++hits; @@ -88,6 +92,22 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto } }); result.misses = misses; + result.rayFallbacks = rayFallbacks; + // Normal-map tilt health: how far encoded normals lean away from the + // tangent plane's up axis. Loud, strongly-tilted maps on smooth-ish + // sources are the visual signature of displaced projection samples. + double tiltSum = 0; float tiltMax = 0; int loud = 0, tiltN = 0; + for (int i = 0; i < count; ++i) { + if (owners[i] < 0) continue; + float z = result.normal[i].b * (1f / 127.5f) - 1f; + float tilt = Mathf.Acos(Mathf.Clamp(z, -1f, 1f)) * Mathf.Rad2Deg; + tiltSum += tilt; ++tiltN; + if (tilt > tiltMax) tiltMax = tilt; + if (tilt > 45f) ++loud; + } + result.meanTiltDeg = tiltN > 0 ? (float)(tiltSum / tiltN) : 0; + result.maxTiltDeg = tiltMax; + result.loudTexels = loud; Dilate(result, owners, settings.padding, token); if (settings.transferVertexColor || settings.transferVertexAlpha) result.vertexColors = TransferVertexColors(source, target, bvh, settings, token); @@ -149,7 +169,7 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // the (possibly hard) vertex normal so encode matches how the mesh shades. static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, TriangleBvh bvh, int face, Vector3 w, float distance, - out Color color, out Color normal, out Color metal, out Color ao, out Color emission) + out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; @@ -159,9 +179,11 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] var hit = bvh.Raycast(p + rayN * distance, -rayN, distance * 2); int sourceFace = hit.triangleIndex; Vector3 sw = hit.barycentric; + rayFallback = false; if (sourceFace < 0) { var nearest = bvh.FindNearest(p, distance); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + rayFallback = true; } if (sourceFace < 0) { color = normal = metal = ao = emission = default; @@ -176,7 +198,7 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] // each copy's own normal is one-sided there, so rays cast along it land on a // displaced source point. Welding by exact position — xatlas copies bit-identical // coordinates — averages both sides back into a smooth cage direction. - static Vector3[] BuildCageNormals(RemeshNative.Geometry target) + static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) { var slots = new int[target.positions.Length]; var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(target.positions.Length); @@ -193,8 +215,19 @@ static Vector3[] BuildCageNormals(RemeshNative.Geometry target) welded[slots[a]] += n; welded[slots[b]] += n; welded[slots[c]] += n; } var cage = new Vector3[target.positions.Length]; - for (int i = 0; i < cage.Length; ++i) + float maxDev = 0; int oneSided = 0; + for (int i = 0; i < cage.Length; ++i) { cage[i] = welded[slots[i]].sqrMagnitude > 1e-30f ? welded[slots[i]].normalized : target.normals[i]; + float dev = Mathf.Acos(Mathf.Clamp(Vector3.Dot(cage[i], target.normals[i]), -1f, 1f)) * Mathf.Rad2Deg; + if (dev > maxDev) maxDev = dev; + if (dev > 30f) ++oneSided; + } + if (diag != null) { + diag.weldedPositions = map.Count; + diag.splitCopies = target.positions.Length - map.Count; + diag.oneSidedNormals = oneSided; + diag.maxOneSidedDeg = maxDev; + } return cage; } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 7e39c3ca..23c747ea 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -368,6 +368,21 @@ async Task RunBake(RemeshSettings options, CancellationToken token) (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); UvtLog.Info("[Remesh] " + status); + // Bake health counters (RemeshDiag log category): cage welding, one-sided + // border normals, nearest-query fallbacks and normal-map tilt. A loud, + // strongly-tilted map on a smooth-ish source is the signature of + // displaced projection samples; loud fraction > 5% also warns on its own. + if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) + UvtLog.Info(UvtLog.Category.RemeshDiag, + $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + + $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°; " + + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels; " + + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°"); + if (baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) + UvtLog.Warn(UvtLog.Category.RemeshDiag, + $"{100.0 * baked.loudTexels / Mathf.Max(1, baked.covered):F1}% of texels lean >45° with a {baked.meanTiltDeg:F0}° mean tilt — " + + "the map is dominated by extreme normals. Check the hard-edge mode, projection distance and cage fit, " + + "and compare against the source: fine detail should tilt a map, not saturate it."); } void Report(string message) { status = message; RequestRepaint?.Invoke(); } diff --git a/Editor/UvtLog.cs b/Editor/UvtLog.cs index b1d14ec4..a83774cc 100644 --- a/Editor/UvtLog.cs +++ b/Editor/UvtLog.cs @@ -26,8 +26,9 @@ public enum Category Export = 1 << 8, Benchmark = 1 << 9, TransferDiag = 1 << 10, + RemeshDiag = 1 << 11, - All = General | SymSplit | Repack | Match | Dedup | Overlap | Topology | Validation | Export | Benchmark | TransferDiag, + All = General | SymSplit | Repack | Match | Dedup | Overlap | Topology | Validation | Export | Benchmark | TransferDiag | RemeshDiag, } const string LevelPrefKey = "UnityMeshLab_LogLevel"; From ef18cc7aa66d8062499bd9fc20817ba615e676b9 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 00:17:00 +0200 Subject: [PATCH 029/130] fix(remesh): carry the source root's world scale into the saved model Capture combines renderers in the source root's local space (with inverse-transpose normals and winding sign), so source and target share one space and projection scale is consistent. The export temporary, however, carried an identity transform, so a scaled source saved at root-local size. The exported node now carries the root's lossyScale, and the RemeshDiag summary reports the source/target bounds-diagonal ratio with a warning when it drifts from one. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 7 ++++++- Editor/Tools/RemeshBakeTool.cs | 18 +++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d184c8cb..3305844f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **Remesh & Bake: saved model now matches the source's world size.** The result geometry is captured and baked in the source root's local space (capture combines renderers via `root.worldToLocalMatrix`, with inverse-transpose normals and winding sign — source and target share one space, so projection scale was always consistent), but the export temporary carried an identity transform, so a source with `lossyScale != 1` (FBX file scale, artist-scaled GameObject) saved at root-local size — a different size than the original. The exported FBX node (and the `.asset` fallback prefab) now carries the source root's lossyScale. The RemeshDiag summary additionally reports the source/target bounds-diagonal ratio and warns when it drifts from 1 beyond 10%, catching future scale regressions at bake time. - **Remesh & Bake: normal-map artifact bands around every UV island in hard-edge modes.** With *Hard edges = UV islands* (or *+ angle*), `SmoothWithinSplitVertices` leaves each chart-border vertex copy a one-sided normal, and the baker cast its projection rays along exactly those normals — the ray landed on a displaced source point, so a band of garbage texels formed along every island border (on an 85-island atlas: noise everywhere). Rays are now cast along a smooth welded cage direction (area-weighted face normals averaged across bit-identical coincident vertices — the direction the native crease=π path produces before the split), while the tangent frame keeps the hard vertex normal the result mesh shades with, so encode/decode still cancel and hard island borders survive intact. Verified on a synthetic displaced-sphere repro (exact port of the bake math): mean angular error drops from 3.2° to 0.96° and >45° outliers fall 8× to the level of the previously-working smooth-border path. - **"Save Mesh Assets" no longer throws on unparsable mesh names** — `SaveAll` sanitized mesh names before generating asset paths; a name with a character that is invalid in file names made `GenerateUniqueAssetPath` return an empty string and `CreateAsset` threw "path is empty" mid-OnGUI, corrupting the hub layout state for the event. A missing/uncreatable output folder now aborts with a readable error instead of cascading. - **FBX re-saves no longer triangulate quad meshes** — the isolated-export core (`ExportFbxIsolatedCore`, the path behind Vertex AO saves and narrow-intent UV/channel overwrites) enables `keepQuads` on the source importer in Phase 1, so the clone it serializes keeps the FBX's original polygon topology and Unity's FBX exporter writes quads back. `keepQuads` only reshapes the index buffer (vertex order/count untouched), so the snapshot/clone vertex-count contract holds, and the setting persists like `generateSecondaryUV=off` so the re-saved file is not re-triangulated on the next import. Variant exports (`ExportVertexColorsToFbxAs`) toggle `keepQuads` only for the clone reimport, restore the source importer afterwards (also on failure), and pin `keepQuads` on the new variant file's own importer. The wide LOD-rebuild path already locked `keepQuads` at export time; its export meshes still take topology from the tool's computed meshes, so the first wide export of a freshly loaded (triangulated) import writes triangles — from the next reload on, quads survive. N-gons (>4 vertices) still import triangulated (`keepQuads` covers quads only). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 0e4e2ffb..06d6db00 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -80,7 +80,12 @@ settings, marked "settings changed" in its header) and clears everything after i map dominated by extreme tilts additionally raises a warning. 6. **Save** to a folder under Assets. A unique output folder contains the model, material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a - linear floating-point Emission EXR. Source files are never overwritten. + linear floating-point Emission EXR. Source files are never overwritten. The + result geometry is in the source root's local space, and the exported node + carries the root's lossyScale, so the saved model matches the original's + world size when placed next to it (a scaled source no longer saves at + root-local size). The RemeshDiag bake summary also reports the source/target + bounds-diagonal ratio and warns when it drifts from 1. - With **com.unity.formats.fbx** installed the model is exported as a binary **FBX** (mesh `Name_LOD0` with the generated normals — including UV-island hard edges — UV0, tangents and transferred vertex colors), a prefab that diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 23c747ea..09638588 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -368,6 +368,12 @@ async Task RunBake(RemeshSettings options, CancellationToken token) (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); UvtLog.Info("[Remesh] " + status); + // Source and target live in the same root-local space by construction; the + // diagonal ratio below proves it at a glance and catches scale regressions. + Vector3 mn = target.positions[0], mx = target.positions[0]; + foreach (var pv in target.positions) { mn = Vector3.Min(mn, pv); mx = Vector3.Max(mx, pv); } + float targetDiagonal = (mx - mn).magnitude; + float scaleRatio = targetDiagonal / Mathf.Max(1e-8f, captured.diagonal); // Bake health counters (RemeshDiag log category): cage welding, one-sided // border normals, nearest-query fallbacks and normal-map tilt. A loud, // strongly-tilted map on a smooth-ish source is the signature of @@ -377,7 +383,12 @@ async Task RunBake(RemeshSettings options, CancellationToken token) $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°; " + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels; " + - $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°"); + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); + if (Mathf.Abs(scaleRatio - 1f) > 0.1f) + UvtLog.Warn(UvtLog.Category.RemeshDiag, + $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + + "Check voxel resolution, small-part pruning and simplification settings, and rebake."); if (baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) UvtLog.Warn(UvtLog.Category.RemeshDiag, $"{100.0 * baked.loudTexels / Mathf.Max(1, baked.covered):F1}% of texels lean >45° with a {baked.meanTiltDeg:F0}° mean tilt — " + @@ -502,6 +513,11 @@ void Save() temporary.AddComponent().sharedMesh = mesh; temporary.AddComponent().sharedMaterial = material; temporary.hideFlags = HideFlags.None; + // The result mesh is expressed in the source root's local space, so + // carrying the root's lossyScale makes the exported model match the + // original's world size; without it a scaled source (FBX file scale, + // artist-scaled GameObject) saves at root-local size instead. + if (source) temporary.transform.localScale = source.transform.lossyScale; #if LIGHTMAP_UV_TOOL_FBX_EXPORTER // The model ships as an FBX (geometry, split normals, UV0, tangents, // vertex colors); the material stays a curated asset next to it that From 8587d0b79c7037f23c137f5d18112163cc69e9b7 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 00:28:08 +0200 Subject: [PATCH 030/130] feat(remesh): normalized scale-1 saves and a remesh folder by the source Normalize size (default on) bakes the source root's world scale into the saved geometry - real size, identity transform - with inverse-scaled normals and tangents and winding flipped on a mirroring determinant; turned off, the saved transform carries the scale instead. Output now goes to a remesh subfolder next to the source asset (created if missing); scene-only sources keep the folder picker. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 20 +++--- Editor/RemeshSettings.cs | 5 ++ Editor/Tools/RemeshBakeTool.cs | 103 ++++++++++++++++++++++++------ 4 files changed, 103 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3305844f..175d43e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Added +- **Remesh & Bake: normalized saves and a `remesh` output folder next to the source.** *Normalize size (saved at scale 1)* (default on) bakes the source root's world scale into the saved geometry, so the model keeps its real size with an identity transform regardless of how the source is scaled — positions scale component-wise, normals and tangents take the inverse (inverse-transpose of a diagonal matrix) and renormalize, and a mirroring determinant flips the triangle winding. Off keeps root-local geometry and carries the scale on the saved transform instead (the previous behavior). Saves also no longer ask for a folder when the source resolves to an imported asset: output goes to a `remesh` subfolder next to the source's FBX/prefab/mesh (created if missing), with the folder picker remaining only for scene-only sources. - **Remesh & Bake diagnostic log (RemeshDiag category)** — every bake prints its health counters to the Console when the `RemeshDiag` log filter is on: welded cage positions and split copies (how many vertices the UV/crease splits duplicated), one-sided border normals with the max cage deviation, nearest-fallback projection samples, missed texels, and the normal map's tilt statistics (mean/max angle from flat, count of texels leaning >45°). A map where >5% of texels lean >45° at a >30° mean tilt additionally logs a warning pointing at hard-edge mode / projection distance / cage fit — the numeric signature of the island-border artifact bands fixed this release. The category bit slots into the existing Log filters panel automatically. - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. - **Remesh & Bake: embed textures in the exported FBX** — a save-time toggle (default on) passes `EmbedTextures` to the FBX exporter so the baked maps travel inside the binary FBX instead of being linked by absolute path (the exporter's default link triggered "absolute reference to this texture file" warnings and made the FBX non-portable). Turn it off for a lean FBX that links the exported maps on this machine; embedding adds the map sizes to the file (the float EXR emission map alone is 16 bytes per texel). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 06d6db00..c663db44 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -78,14 +78,18 @@ settings, marked "settings changed" in its header) and clears everything after i border normals (max cage deviation), nearest-fallback projection samples and the normal map's tilt statistics (mean/max angle from flat, texels >45°); a map dominated by extreme tilts additionally raises a warning. -6. **Save** to a folder under Assets. A unique output folder contains the model, - material, prefab and BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a - linear floating-point Emission EXR. Source files are never overwritten. The - result geometry is in the source root's local space, and the exported node - carries the root's lossyScale, so the saved model matches the original's - world size when placed next to it (a scaled source no longer saves at - root-local size). The RemeshDiag bake summary also reports the source/target - bounds-diagonal ratio and warns when it drifts from 1. +6. **Save**. The output lands in a `remesh` subfolder next to the source model's + asset (its FBX/prefab, or any mesh asset under it), created if missing; + scene-only sources fall back to a folder picker. A unique output folder + inside it contains the model, material, prefab and + BaseColor/Normal/MetallicSmoothness/Occlusion PNGs plus a linear + floating-point Emission EXR. Source files are never overwritten. + *Normalize size (saved at scale 1)* (default on) bakes the source root's + world scale into the saved geometry — real size, identity transform — with + normals and tangents taking the inverse scale and the winding flipping on a + mirroring determinant; off keeps root-local geometry and carries the scale + on the saved transform instead. The RemeshDiag bake summary also reports + the source/target bounds-diagonal ratio and warns when it drifts from 1. - With **com.unity.formats.fbx** installed the model is exported as a binary **FBX** (mesh `Name_LOD0` with the generated normals — including UV-island hard edges — UV0, tangents and transferred vertex colors), a prefab that diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index cf415f63..cfd1441d 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -74,6 +74,11 @@ public sealed class RemeshSettings // map sizes — the float EXR emission map alone is 16 bytes per texel. public bool embedFbxTextures = true; + // Save: bake the source's world scale into the saved geometry so the model + // keeps its real size with a scale-1 transform, regardless of the source's + // own scaling. Off: the saved transform carries the source's scale instead. + public bool normalizeSize = true; + public void Validate() { if (voxelResolution < 4 || voxelResolution > 256 || targetTriangles < 0 || targetTriangles > 5000000 || diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 09638588..7b723c79 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -201,6 +201,11 @@ public void OnDrawSidebar() EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); if (resultMesh && maps != null) { EditorGUILayout.LabelField($"{resultMesh.vertexCount:N0} vertices · {resultMesh.GetIndexCount(0) / 3:N0} triangles"); + settings.normalizeSize = EditorGUILayout.Toggle(new GUIContent("Normalize size (saved at scale 1)", + "Bakes the source's world scale into the saved geometry, so the model keeps its real size with a " + + "scale-1 transform regardless of how the source is scaled. Off: the saved transform carries the " + + "source's scale instead."), + settings.normalizeSize); #if LIGHTMAP_UV_TOOL_FBX_EXPORTER settings.embedFbxTextures = EditorGUILayout.Toggle(new GUIContent("Embed textures in FBX", "Self-contained FBX that carries its maps — portable to other machines, but the file grows by the map sizes " + @@ -440,19 +445,24 @@ void Clear() void Save() { - string parent = EditorUtility.OpenFolderPanel("Save Remesh Result", Application.dataPath, ""); - if (string.IsNullOrEmpty(parent)) return; - parent = parent.Replace('\\', '/'); - string assets = Application.dataPath.Replace('\\', '/'); - if (parent != assets && !parent.StartsWith(assets + "/", StringComparison.Ordinal)) { - status = "Choose a folder inside Assets."; return; - } - string relative = "Assets" + parent.Substring(assets.Length); - // The folder panel can create a directory the AssetDatabase has not imported - // yet; GenerateUniqueAssetPath/CreateFolder then fail on the unknown parent. - if (!AssetDatabase.IsValidFolder(relative)) AssetDatabase.Refresh(); - if (!AssetDatabase.IsValidFolder(relative)) { - status = relative + " is not an imported asset folder. Refresh the Project window and save again."; return; + // Default output: a "remesh" subfolder next to the source model's asset. + // Falls back to the folder picker for scene-only objects with no asset. + string relative = ResolveSourceRemeshFolder(); + if (relative == null) { + string parent = EditorUtility.OpenFolderPanel("Save Remesh Result", Application.dataPath, ""); + if (string.IsNullOrEmpty(parent)) return; + parent = parent.Replace('\\', '/'); + string assets = Application.dataPath.Replace('\\', '/'); + if (parent != assets && !parent.StartsWith(assets + "/", StringComparison.Ordinal)) { + status = "Choose a folder inside Assets."; return; + } + relative = "Assets" + parent.Substring(assets.Length); + // The folder panel can create a directory the AssetDatabase has not imported + // yet; GenerateUniqueAssetPath/CreateFolder then fail on the unknown parent. + if (!AssetDatabase.IsValidFolder(relative)) AssetDatabase.Refresh(); + if (!AssetDatabase.IsValidFolder(relative)) { + status = relative + " is not an imported asset folder. Refresh the Project window and save again."; return; + } } string clean = resultName; foreach (char c in Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); @@ -495,6 +505,12 @@ void Save() } } mesh = Object.Instantiate(resultMesh); mesh.name = clean + "_LOD0"; mesh.hideFlags = HideFlags.None; + // The result mesh is expressed in the source root's local space. Normalized + // saves bake the root's world scale into the vertices so the exported root + // sits at scale 1 and the model keeps its real size; otherwise the node + // carries the scale (a scaled source would otherwise save at root-local size). + Vector3 worldScale = source ? source.transform.lossyScale : Vector3.one; + if (settings.normalizeSize) BakeScaleIntoMesh(mesh, worldScale); material = new Material(shader) { name = clean + "_Remesh" }; bool urp = shaderName != "Standard"; material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); @@ -513,11 +529,7 @@ void Save() temporary.AddComponent().sharedMesh = mesh; temporary.AddComponent().sharedMaterial = material; temporary.hideFlags = HideFlags.None; - // The result mesh is expressed in the source root's local space, so - // carrying the root's lossyScale makes the exported model match the - // original's world size; without it a scaled source (FBX file scale, - // artist-scaled GameObject) saves at root-local size instead. - if (source) temporary.transform.localScale = source.transform.lossyScale; + temporary.transform.localScale = settings.normalizeSize ? Vector3.one : worldScale; #if LIGHTMAP_UV_TOOL_FBX_EXPORTER // The model ships as an FBX (geometry, split normals, UV0, tangents, // vertex colors); the material stays a curated asset next to it that @@ -579,6 +591,61 @@ void Save() } } + // "/remesh" when the source root resolves to an imported + // asset (a prefab/model instance, or any mesh asset under it); null when the + // source is scene-only and the folder picker is needed instead. + string ResolveSourceRemeshFolder() + { + string assetPath = null; + if (source) { + assetPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(source); + if (string.IsNullOrEmpty(assetPath)) { + var filter = source.GetComponentInChildren(); + if (filter && filter.sharedMesh) assetPath = AssetDatabase.GetAssetPath(filter.sharedMesh); + } + } + if (string.IsNullOrEmpty(assetPath)) return null; + string dir = Path.GetDirectoryName(assetPath); + if (string.IsNullOrEmpty(dir)) return null; + dir = dir.Replace('\\', '/'); + if (!dir.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) || !AssetDatabase.IsValidFolder(dir)) + return null; + string remesh = dir + "/remesh"; + if (!AssetDatabase.IsValidFolder(remesh)) AssetDatabase.CreateFolder(dir, "remesh"); + return AssetDatabase.IsValidFolder(remesh) ? remesh : null; + } + + // Bakes a world scale into the vertex data so the saved root sits at scale 1: + // positions scale component-wise, normals and tangents take the inverse + // (inverse-transpose of a diagonal matrix) and renormalize, and a negative + // determinant mirrors the mesh, so the triangle winding flips with it. + static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) + { + if (Mathf.Approximately(scale.x, 1) && Mathf.Approximately(scale.y, 1) && Mathf.Approximately(scale.z, 1)) return; + if (Mathf.Abs(scale.x) < 1e-6f || Mathf.Abs(scale.y) < 1e-6f || Mathf.Abs(scale.z) < 1e-6f) return; + var vertices = mesh.vertices; + for (int i = 0; i < vertices.Length; ++i) vertices[i] = Vector3.Scale(vertices[i], scale); + mesh.vertices = vertices; + var inv = new Vector3(1f / scale.x, 1f / scale.y, 1f / scale.z); + var normals = mesh.normals; + for (int i = 0; i < normals.Length; ++i) normals[i] = Vector3.Scale(normals[i], inv).normalized; + mesh.normals = normals; + var tangents = mesh.tangents; + for (int i = 0; i < tangents.Length; ++i) { + var t = Vector3.Scale(new Vector3(tangents[i].x, tangents[i].y, tangents[i].z), inv).normalized; + tangents[i] = new Vector4(t.x, t.y, t.z, tangents[i].w); + } + mesh.tangents = tangents; + if (scale.x * scale.y * scale.z < 0) + for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + var triangles = mesh.GetTriangles(sub); + for (int i = 0; i < triangles.Length; i += 3) { + int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; + } + mesh.SetTriangles(triangles, sub); + } + } + byte[] Encode(int index) { var texture = new Texture2D(maps.size, maps.size, From fbb1b9cd36a6972aec614650339dca2cb9f09085 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 01:01:42 +0200 Subject: [PATCH 031/130] fix(remesh): apply normal smoothing after UV generation for all modes The value used to be passed into the native normal generation before the unwrap, where the island hard-edge rebuild overwrote it - the slider was dead in the default mode. The pass now runs in C# on the split unwrap output for every hard-edge mode (a port of meshoptimizer's alignment-weighted smoothing kernel). Crease splits and chart borders are already vertex splits by then and mesh edges never cross one, so smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives smoothing 0; ABI and binaries are unchanged. --- CHANGELOG.md | 3 ++ Documentation~/REMESH_AND_BAKE.md | 7 +++++ Editor/RemeshNative.cs | 47 ++++++++++++++++++++++++++++++- Editor/Tools/RemeshBakeTool.cs | 5 +++- 4 files changed, 60 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 175d43e9..4e83a8c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] +### Changed +- **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. + ### Added - **Remesh & Bake: normalized saves and a `remesh` output folder next to the source.** *Normalize size (saved at scale 1)* (default on) bakes the source root's world scale into the saved geometry, so the model keeps its real size with an identity transform regardless of how the source is scaled — positions scale component-wise, normals and tangents take the inverse (inverse-transpose of a diagonal matrix) and renormalize, and a mirroring determinant flips the triangle winding. Off keeps root-local geometry and carries the scale on the saved transform instead (the previous behavior). Saves also no longer ask for a folder when the source resolves to an imported asset: output goes to a `remesh` subfolder next to the source's FBX/prefab/mesh (created if missing), with the folder picker remaining only for scene-only sources. - **Remesh & Bake diagnostic log (RemeshDiag category)** — every bake prints its health counters to the Console when the `RemeshDiag` log filter is on: welded cage positions and split copies (how many vertices the UV/crease splits duplicated), one-sided border normals with the max cage deviation, nearest-fallback projection samples, missed texels, and the normal map's tilt statistics (mean/max angle from flat, count of texels leaning >45°). A map where >5% of texels lean >45° at a >30° mean tilt additionally logs a warning pointing at hard-edge mode / projection distance / cage fit — the numeric signature of the island-border artifact bands fixed this release. The category bit slots into the existing Log filters panel automatically. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index c663db44..3f38e044 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -52,6 +52,13 @@ settings, marked "settings changed" in its header) and clears everything after i island (the usual choice for baked normal maps). - *UV islands + angle* — both. + *Normal smoothing* (0–10) is applied **after** UV generation, so it behaves + the same whichever hard-edge mode is active: smoothing flows along the + surface through mesh edges and stops at every hard edge — crease splits and + island borders alike (edges never cross a vertex split). With it applied + before the unwrap, the island hard-edge rebuild discarded it, leaving the + slider dead in the default mode. + Stage settings persist across domain reloads and tab switches (EditorPrefs); *Run all stages* still re-runs everything with the restored values. diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index 68cdd949..fc9c2253 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -110,7 +110,7 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel IntPtr handle = IntPtr.Zero; try { int code = meshLabUnwrap(Pack(input.positions), (uint)input.positions.Length, input.indices, (uint)input.indices.Length, - angle ? settings.normalCrease * Mathf.Deg2Rad : Mathf.PI, settings.normalSmoothing, + angle ? settings.normalCrease * Mathf.Deg2Rad : Mathf.PI, 0f, options, (uint)options.Length, out handle, out uint vertexCount, out uint indexCount, out uint charts); token.ThrowIfCancellationRequested(); if (code != 0) throw new InvalidOperationException("UV unwrap failed: " + Error(code)); @@ -126,6 +126,11 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel } if (settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle) SmoothWithinSplitVertices(result); + // Normal smoothing runs after UV generation so it works the same for + // every hard-edge source: crease splits and chart borders already + // materialized as vertex splits, and mesh edges never cross a split, + // so the pass stops at hard edges by construction. + SmoothNormals(result, settings.normalSmoothing); return result; } finally { if (handle != IntPtr.Zero) meshLabRemeshDestroy(handle); } @@ -147,6 +152,46 @@ internal static void SmoothWithinSplitVertices(Geometry geometry) if (sum[i].sqrMagnitude > 1e-30f) geometry.normals[i] = sum[i].normalized; } + // Port of meshopt's generateNormals smoothing pass, run on the split unwrap + // output where every vertex is its own normal group. Each pass averages the + // alignment-weighted normal deltas across mesh edges (aligned neighbours pull + // more, opposing ones not at all), so smoothing flows along the surface and + // stops at every hard edge — crease splits and UV chart borders alike. + internal static void SmoothNormals(Geometry geometry, float smoothing) + { + if (smoothing <= 0) return; + int passes = Math.Min(10, (int)Math.Ceiling(smoothing)); + var normals = geometry.normals; + var indices = geometry.indices; + var delta = new Vector3[normals.Length]; + var edges = new float[normals.Length]; + for (int pass = 0; pass < passes; ++pass) { + float alpha = 0.5f * Mathf.Min(1f, smoothing - pass); + Array.Clear(delta, 0, delta.Length); + Array.Clear(edges, 0, edges.Length); + for (int i = 0; i < indices.Length; i += 3) { + SmoothEdge(normals, delta, edges, indices[i], indices[i + 1]); + SmoothEdge(normals, delta, edges, indices[i + 1], indices[i + 2]); + SmoothEdge(normals, delta, edges, indices[i + 2], indices[i]); + } + for (int i = 0; i < normals.Length; ++i) { + if (edges[i] <= 0) continue; + Vector3 n = normals[i] + delta[i] * (alpha / edges[i]); + float length = n.magnitude; + if (length > 1e-12f) normals[i] = n / length; + } + } + } + + static void SmoothEdge(Vector3[] normals, Vector3[] delta, float[] edges, int a, int b) + { + float dp = Vector3.Dot(normals[a], normals[b]); + float w = dp > 0f ? dp * dp : 0f; + Vector3 d = (normals[b] - normals[a]) * w; + delta[a] += d; edges[a] += 1f; + delta[b] -= d; edges[b] += 1f; + } + static float[] Pack(Vector3[] positions) { var packed = new float[checked(positions.Length * 3)]; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 7b723c79..6942e3d2 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -159,7 +159,10 @@ public void OnDrawSidebar() using (new EditorGUI.DisabledScope(!angle)) settings.normalCrease = EditorGUILayout.Slider("Crease angle", settings.normalCrease, 0, 180); using (new EditorGUI.DisabledScope(settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle)) - settings.normalSmoothing = EditorGUILayout.Slider("Normal smoothing", settings.normalSmoothing, 0, 10); + settings.normalSmoothing = EditorGUILayout.Slider(new GUIContent("Normal smoothing", + "Applied after UV generation, so it works with every hard-edge mode: smoothing flows along the surface " + + "and stops at crease edges and island borders alike."), + settings.normalSmoothing, 0, 10); settings.textureResolution = EditorGUILayout.IntPopup("Texture size", settings.textureResolution, new[] { "512", "1024", "2048", "4096" }, new[] { 512, 1024, 2048, 4096 }); settings.padding = EditorGUILayout.IntSlider("Atlas padding", settings.padding, 1, 32); From ff98a63f624fc4d453820bd8b0230e3a8a42cb86 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 01:44:00 +0200 Subject: [PATCH 032/130] fix(remesh): self-heal zero unwrap normals and report them A degenerate corner group can come back from the native unwrap with zero-length normals, which zero the bake's ray directions and tangent frames at once: every cage deviation reads 90 degrees, nearly all projection samples fall back to nearest-point search, and the normal map's blue channel sits at 128 everywhere. The UV stage now rebuilds all normals from face geometry when zeros appear, warns, and the RemeshDiag summary reports the zero count plus a dedicated warning when most samples fall back to nearest search. --- CHANGELOG.md | 1 + Editor/RemeshBaker.cs | 9 ++- Editor/RemeshNative.cs | 11 +++ Editor/Tools/RemeshBakeTool.cs | 10 ++- Tools~/remesh_bake_repro/Program.cs | 102 +++++++++++++++++++++++++--- 5 files changed, 120 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e83a8c2..d261be70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,7 @@ Consolidated hardening sweep — incorporates PRs #122–#123, #125–#129, #131 - **Output escaping** — a shared `CsvUtil.Escape` neutralises formula prefixes in every CSV writer (sweep summaries, FBX metrics, benchmark records) and the gallery generator escapes model names before embedding them in HTML hrefs (#157–#159, #161). ### Fixed +- **Remesh & Bake: zero normals from the unwrap now self-heal and are reported.** A degenerate corner group (zero-area faces) can come back from the native unwrap with zero-length normals, which zero the bake's ray directions and tangent frames at once — the diagnostic signature is every cage deviation reading 90°, ~100% of projection samples falling back to nearest-point search, and a normal map whose blue channel sits at 128 (tilt ≈ 90°) everywhere. The UV stage now detects zero normals, rebuilds all of them from face geometry (`SmoothWithinSplitVertices`) with a warning, and the RemeshDiag summary reports the zero count plus a dedicated warning when more than 80% of samples fall back to nearest-point search. - **Remesh & Bake: saved model now matches the source's world size.** The result geometry is captured and baked in the source root's local space (capture combines renderers via `root.worldToLocalMatrix`, with inverse-transpose normals and winding sign — source and target share one space, so projection scale was always consistent), but the export temporary carried an identity transform, so a source with `lossyScale != 1` (FBX file scale, artist-scaled GameObject) saved at root-local size — a different size than the original. The exported FBX node (and the `.asset` fallback prefab) now carries the source root's lossyScale. The RemeshDiag summary additionally reports the source/target bounds-diagonal ratio and warns when it drifts from 1 beyond 10%, catching future scale regressions at bake time. - **Remesh & Bake: normal-map artifact bands around every UV island in hard-edge modes.** With *Hard edges = UV islands* (or *+ angle*), `SmoothWithinSplitVertices` leaves each chart-border vertex copy a one-sided normal, and the baker cast its projection rays along exactly those normals — the ray landed on a displaced source point, so a band of garbage texels formed along every island border (on an 85-island atlas: noise everywhere). Rays are now cast along a smooth welded cage direction (area-weighted face normals averaged across bit-identical coincident vertices — the direction the native crease=π path produces before the split), while the tangent frame keeps the hard vertex normal the result mesh shades with, so encode/decode still cancel and hard island borders survive intact. Verified on a synthetic displaced-sphere repro (exact port of the bake math): mean angular error drops from 3.2° to 0.96° and >45° outliers fall 8× to the level of the previously-working smooth-border path. - **"Save Mesh Assets" no longer throws on unparsable mesh names** — `SaveAll` sanitized mesh names before generating asset paths; a name with a character that is invalid in file names made `GenerateUniqueAssetPath` return an empty string and `CreateAsset` threw "path is empty" mid-OnGUI, corrupting the hub layout state for the event. A missing/uncreatable output folder now aborts with a readable error instead of cascading. diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index ecc5363b..1d0293ec 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -14,7 +14,7 @@ internal sealed class Maps public Color[] vertexColors; // per result vertex, null unless a transfer was requested public int size, misses, covered; // Bake health counters surfaced through the RemeshDiag log category. - public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels; + public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels, zeroNormals; public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; } @@ -215,8 +215,12 @@ static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) welded[slots[a]] += n; welded[slots[b]] += n; welded[slots[c]] += n; } var cage = new Vector3[target.positions.Length]; - float maxDev = 0; int oneSided = 0; + float maxDev = 0; int oneSided = 0, zeroNormalVerts = 0; for (int i = 0; i < cage.Length; ++i) { + bool zeroVertexNormal = target.normals[i].sqrMagnitude < 1e-12f; + if (zeroVertexNormal) ++zeroNormalVerts; + // Fall back to the (possibly zero) vertex normal only when the welded + // sum is degenerate; zero cage entries zero the projection ray. cage[i] = welded[slots[i]].sqrMagnitude > 1e-30f ? welded[slots[i]].normalized : target.normals[i]; float dev = Mathf.Acos(Mathf.Clamp(Vector3.Dot(cage[i], target.normals[i]), -1f, 1f)) * Mathf.Rad2Deg; if (dev > maxDev) maxDev = dev; @@ -227,6 +231,7 @@ static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) diag.splitCopies = target.positions.Length - map.Count; diag.oneSidedNormals = oneSided; diag.maxOneSidedDeg = maxDev; + diag.zeroNormals = zeroNormalVerts; } return cage; } diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index fc9c2253..c1198fa5 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -124,6 +124,17 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel result.normals[i] = new Vector3(data[i * 8 + 3], data[i * 8 + 4], data[i * 8 + 5]); result.uv[i] = new Vector2(data[i * 8 + 6], data[i * 8 + 7]); } + // A degenerate corner group (zero-area faces) leaves zero normals, + // which zero the bake's ray directions and tangent frames; rebuild + // every normal from face geometry instead of shipping the holes. + int zeroNormals = 0; + for (int i = 0; i < vertexCount; ++i) + if (result.normals[i].sqrMagnitude < 1e-12f) ++zeroNormals; + if (zeroNormals > 0) { + UvtLog.Warn("[Remesh] " + zeroNormals + " of " + vertexCount + + " unwrap normals came back zero (degenerate faces); rebuilding all from face normals."); + SmoothWithinSplitVertices(result); + } if (settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle) SmoothWithinSplitVertices(result); // Normal smoothing runs after UV generation so it works the same for diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 6942e3d2..bfa700b5 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -389,10 +389,18 @@ async Task RunBake(RemeshSettings options, CancellationToken token) if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) UvtLog.Info(UvtLog.Category.RemeshDiag, $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + - $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°; " + + $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°, {baked.zeroNormals:N0} zero normals; " + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels; " + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); + if (baked.zeroNormals > 0) + UvtLog.Warn(UvtLog.Category.RemeshDiag, + baked.zeroNormals + " result vertices have zero normals — their texels bake through zeroed ray directions " + + "and tangent frames. Re-run the UV stage; if it repeats, the remesh produced degenerate faces (lower simplification error or raise voxel resolution)."); + else if (baked.rayFallbacks > baked.covered * 4 / 5 && baked.covered > 0) + UvtLog.Warn(UvtLog.Category.RemeshDiag, + baked.rayFallbacks.ToString("N0") + " of the projection samples fell back to nearest-point search — the rays " + + "are not hitting the source. Check the projection distance and the hard-edge mode, and rebake."); if (Mathf.Abs(scaleRatio - 1f) > 0.1f) UvtLog.Warn(UvtLog.Category.RemeshDiag, $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + diff --git a/Tools~/remesh_bake_repro/Program.cs b/Tools~/remesh_bake_repro/Program.cs index 823ec17f..efeaca1f 100644 --- a/Tools~/remesh_bake_repro/Program.cs +++ b/Tools~/remesh_bake_repro/Program.cs @@ -23,9 +23,31 @@ static void Main(string[] args) var diag = Diagonal(source); int rowsT = 20, colsT = 36; - foreach (var mode in new[] { "hardBorders(uvIslands)", "smoothBorders(nativePi)" }) + var modes = new[] { "hardBorders(uvIslands)", "smoothBorders(nativePi)", "flatFaces(crease0)" }; + for (int modeIndex = 0; modeIndex < modes.Length; modeIndex++) { - var target = SplitIntoCharts(targetBase, rowsT, colsT, mode.Contains("hard")); + var mode = modes[modeIndex]; + var target = SplitIntoCharts(targetBase, rowsT, colsT, modeIndex); + // Kernel check: apply the SmoothNormals port at several strengths and + // measure how far the smoothed normals drift from the geometric truth + // (welded cage) and from their pre-smoothing values. + foreach (float s in new[] { 0f, 1f, 4f, 10f }) + { + var test = new Mesh { positions = (Vector3[])target.positions.Clone(), normals = (Vector3[])target.normals.Clone(), + uv = (Vector2[])target.uv.Clone(), indices = (int[])target.indices.Clone() }; + test.cage = (Vector3[])target.cage.Clone(); + var pre = (Vector3[])test.normals.Clone(); + SmoothNormalsPort(test, s); + double dotCage = 0, dotPre = 0; int nan = 0, deg = 0; int n = Math.Min(test.normals.Length, Math.Min(test.cage.Length, pre.Length)); + for (int i = 0; i < n; ++i) + { + if (float.IsNaN(test.normals[i].X) || test.normals[i].LengthSquared() < 0.5f) { nan++; continue; } + dotCage += Vector3.Dot(test.normals[i], test.cage[i]); + dotPre += Vector3.Dot(test.normals[i], pre[i]); + } + Console.WriteLine($"[smooth] mode={mode} s={s}: mean dot(normals, cage)={dotCage / Math.Max(1, n - nan):F3} mean dot(normals, pre)={dotPre / Math.Max(1, n - nan):F3} nan/zero={nan}"); + if (s == 0) continue; + } var tangents = LengyelTangents(target); var offsets = SampleOffsets(SampleGrid); var owners = Rasterize(target, AtlasSize, offsets); @@ -96,7 +118,7 @@ static void Main(string[] args) Console.WriteLine($"covered={covered} misses={misses} nearestFallbacks={fallbacks} farSideHits={farHits}"); Console.WriteLine($"angular error vs truth: n={errN} mean={errSum / Math.Max(1, errN):F2}deg max={errMax:F1}deg"); Console.WriteLine($"buckets deg: <5={errBuckets[0]} 5-20={errBuckets[1]} 20-45={errBuckets[2]} >45={errBuckets[3]}"); - WritePpm($"map_{(mode.Contains("hard") ? "hard" : "smooth")}.ppm", map, hitMap); + WritePpm($"map_{modeIndex}.ppm", map, hitMap); } Console.WriteLine("done"); } @@ -164,7 +186,7 @@ static Mesh BuildSphere(int rows, int cols) // Split the grid mesh into ChartCount longitude charts, each in its own atlas // rect, duplicating border vertices (xatlas-style). hard=true -> SmoothWithinSplitVertices. - static Mesh SplitIntoCharts(Mesh m, int rowsReal, int colsReal, bool hard) + static Mesh SplitIntoCharts(Mesh m, int rowsReal, int colsReal, int modeIndex) { int vcols = colsReal + 1; int cw = ChartCount, layout = 3; @@ -215,23 +237,44 @@ int AddVertex(int i, int j) // Diagnostic: does the C# Cross(b-a, c-a) smoothing agree in direction with // the "native" smooth normals (analytic here, meshopt_generateNormals there)? var before = (Vector3[])mesh.normals.Clone(); - if (hard) + SmoothAcrossEverything(mesh); + mesh.cage = (Vector3[])mesh.normals.Clone(); + if (modeIndex == 0) { // production order: smooth welded normals exist first (native crease=pi), // then SmoothWithinSplitVertices hardens the chart borders. - SmoothAcrossEverything(mesh); - mesh.cage = (Vector3[])mesh.normals.Clone(); SmoothWithinSplitVertices(mesh); } - else { SmoothAcrossEverything(mesh); mesh.cage = (Vector3[])mesh.normals.Clone(); } + else if (modeIndex == 2) + { + // crease=0 worst case: every corner its own normal group (flat shading), + // vertices split per face like the native crease-split output. + var fp = new List(); var fn = new List(); var fu = new List(); + var fc = new List(); + var fi = new List(); + for (int i = 0; i < mesh.indices.Length; i += 3) + { + int a = mesh.indices[i], b = mesh.indices[i + 1], c = mesh.indices[i + 2]; + var faceN = Vector3.Normalize(Vector3.Cross(mesh.positions[b] - mesh.positions[a], mesh.positions[c] - mesh.positions[a])); + int i0 = fp.Count; + fp.AddRange(new[] { mesh.positions[a], mesh.positions[b], mesh.positions[c] }); + fn.AddRange(new[] { faceN, faceN, faceN }); + fu.AddRange(new[] { mesh.uv[a], mesh.uv[b], mesh.uv[c] }); + fc.AddRange(new[] { mesh.cage[a], mesh.cage[b], mesh.cage[c] }); + fi.AddRange(new[] { i0, i0 + 1, i0 + 2 }); + } + mesh.positions = fp.ToArray(); mesh.normals = fn.ToArray(); mesh.uv = fu.ToArray(); mesh.indices = fi.ToArray(); + mesh.cage = fc.ToArray(); + } float dotSum = 0; int dotN = 0, flipped = 0; - for (int i = 0; i < mesh.normals.Length; i++) + int diagCount = Math.Min(before.Length, mesh.normals.Length); + for (int i = 0; i < diagCount; i++) { float d = Vector3.Dot(Vector3.Normalize(before[i]), mesh.normals[i]); dotSum += d; dotN++; if (d < 0) flipped++; } - Console.WriteLine($"[diag] hard={hard}: mean dot(pre-smooth, post-smooth normals) = {dotSum / Math.Max(1, dotN):F3} flipped={flipped}/{dotN}"); + Console.WriteLine($"[diag] modeIndex={modeIndex}: mean dot(pre-smooth, post-smooth normals) = {dotSum / Math.Max(1, dotN):F3} flipped={flipped}/{dotN}"); return mesh; } @@ -310,6 +353,45 @@ static Vector4[] LengyelTangents(Mesh m) return result; } + // 1:1 port of RemeshNative.SmoothNormals for kernel verification. + static void SmoothNormalsPort(Mesh g, float smoothing) + { + if (smoothing <= 0) return; + int passes = Math.Min(10, (int)Math.Ceiling(smoothing)); + var normals = g.normals; + var indices = g.indices; + var delta = new Vector3[normals.Length]; + var edges = new float[normals.Length]; + for (int pass = 0; pass < passes; ++pass) + { + float alpha = 0.5f * MathF.Min(1f, smoothing - pass); + Array.Clear(delta, 0, delta.Length); + Array.Clear(edges, 0, edges.Length); + for (int i = 0; i < indices.Length; i += 3) + { + SmoothEdgePort(normals, delta, edges, indices[i], indices[i + 1]); + SmoothEdgePort(normals, delta, edges, indices[i + 1], indices[i + 2]); + SmoothEdgePort(normals, delta, edges, indices[i + 2], indices[i]); + } + for (int i = 0; i < normals.Length; ++i) + { + if (edges[i] <= 0) continue; + Vector3 n = normals[i] + delta[i] * (alpha / edges[i]); + float length = n.Length(); + if (length > 1e-12f) normals[i] = n / length; + } + } + } + + static void SmoothEdgePort(Vector3[] normals, Vector3[] delta, float[] edges, int a, int b) + { + float dp = Vector3.Dot(normals[a], normals[b]); + float w = dp > 0f ? dp * dp : 0f; + Vector3 d = (normals[b] - normals[a]) * w; + delta[a] += d; edges[a] += 1f; + delta[b] -= d; edges[b] += 1f; + } + // ── exact bake ports ── static Vector2[] SampleOffsets(int grid) From 7d4fa950b218f6775f3c57ea55185f83c6befb9c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 01:55:16 +0200 Subject: [PATCH 033/130] feat(remesh): regenerate TNB after the UV cut with weighted normals The unwrap output now carries per-vertex tangents from meshopt's MikkT-compatible generator computed over the final atlas layout, so the bake, preview and saved mesh encode against one basis; mirrored-UV corner conflicts duplicate their vertex. Vertex normals regenerate in C# from the split geometry for every hard-edge mode with a new Normal weighting option - face area, corner angle, or both - the Blender Weighted Normal analog. Native ABI 3: sixteen-float unwrap vertex layout; rebuild the plugins (CI does it on push). --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 25 ++++++++++-- Editor/RemeshNative.cs | 65 ++++++++++++++++++++----------- Editor/RemeshSettings.cs | 15 +++++++ Editor/Tools/RemeshBakeTool.cs | 31 +++++++++++---- Native~/src/remesh.cpp | 42 ++++++++++++++++++-- Native~/tests/remesh_test.cpp | 28 ++++++++----- Tests/Editor/RemeshBakeTests.cs | 11 +++++- 8 files changed, 169 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d261be70..36f2cc1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **Remesh & Bake: the tangent frame is regenerated after the UV cut, in meshoptimizer.** The unwrap output now carries per-vertex tangents from `meshopt_generateTangents` (MikkT-compatible, with mirrored-UV corner conflicts splitting their vertex), computed over the final atlas layout, so the bake, the 3D preview and the saved FBX all encode against one basis instead of Unity's separate recalculation (which stays only as a fallback). Vertex normals are likewise regenerated in C# from the split geometry for **every** hard-edge mode — crease splits and chart borders are already vertex splits, so the weighted accumulation smooths inside each split group and stays hard across creases and island borders alike. A new **Normal weighting** option (Blender Weighted Normal modifier analog) selects the accumulation weight: *Face area* (meshopt's own, default), *Corner angle*, or *Face area × corner angle*; the stale disablement of the smoothing slider in island modes is gone. Native ABI is now 3 with a sixteen-float unwrap vertex layout (position, normal, UV0, tangent) — the plugins must be rebuilt (**Build Native Libraries**, the auto workflow does it on push) and Unity restarted. - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 3f38e044..e27f37c5 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -52,6 +52,14 @@ settings, marked "settings changed" in its header) and clears everything after i island (the usual choice for baked normal maps). - *UV islands + angle* — both. + Whichever mode is active, the vertex normals and tangents are regenerated + **after** the UV cut: normals accumulate weighted face normals over the split + geometry (smooth inside every split group, hard across creases and island + borders alike), and tangents come from meshoptimizer's MikkT-compatible + generator over the final atlas layout — one basis for the bake, the preview + and the saved mesh. *Normal weighting* selects the accumulation weight + (Blender Weighted Normal analog): face area, corner angle, or both. + *Normal smoothing* (0–10) is applied **after** UV generation, so it behaves the same whichever hard-edge mode is active: smoothing flows along the surface through mesh edges and stops at every hard edge — crease splits and @@ -116,14 +124,23 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. `Native~/src/remesh.cpp` uses meshoptimizer v1.3 (`9e1f07b159d3cb777f1c67ed31fc11fd117986f4`, 2026-09-25), pinned by full commit SHA. -Staged exports (ABI 2) run voxel remesh + position weld (`meshLabVoxelRemesh`), +Staged exports (ABI 3) run voxel remesh + position weld (`meshLabVoxelRemesh`), simplifyWithUpdate with the selected regularize/fold/prune options plus degenerate cleanup (`meshLabSimplify`), and crease-aware normal generation + xatlas unwrap with explicit chart/pack options (`meshLabUnwrap`, which also returns each vertex's island). The original one-shot `meshLabRemeshBuild` remains for the -native tests. "UV islands" hard edges are computed in C#: xatlas splits vertices -along island borders, so averaging face normals per output vertex smooths inside -islands and leaves their borders hard. +native tests. The unwrap vertex layout is sixteen float32 values — position, +normal, UV0, tangent (xyz direction plus ±1 handedness) — with the tangent +regenerated by `meshopt_generateTangents` (MikkT-compatible) from the final +atlas layout, so the bake, the preview and the saved mesh all encode against +one basis; corners that disagree duplicate their vertex. +The vertex normals themselves are regenerated in C# **after** the UV cut from +the split geometry: crease splits and chart borders are already vertex splits +and no face crosses one, so the accumulation smooths inside every split group +and stays hard across creases and island borders alike, whatever the hard-edge +mode. The *Normal weighting* option selects the accumulation weight — face +area (meshopt's own), corner angle, or both multiplied (the Blender Weighted +Normal modifier analog). v1.3 removed the non-functional Thicken flag and renumbered `meshopt_RemeshShell` and `meshopt_RemeshSolve`. The bridge keeps its own flag bits (1 = fit source surface, 2 = two-sided shell) and maps them by name, so the C# ABI is unchanged; diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index c1198fa5..004c20ea 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -8,7 +8,7 @@ namespace SashaRX.UnityMeshLab internal static class RemeshNative { const string Library = "xatlas-unity"; - const int AbiVersion = 2; + const int AbiVersion = 3; [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] static extern int meshLabRemeshVersion(); [DllImport(Library, CallingConvention = CallingConvention.Cdecl)] @@ -41,11 +41,12 @@ internal sealed class IndexedMesh public int TriangleCount => indices.Length / 3; } - /// Unwrapped result: split vertices with normals, UV0 and xatlas chart ids. + /// Unwrapped result: split vertices with normals, UV0, meshoptimizer tangents and xatlas chart ids. internal sealed class Geometry { public Vector3[] positions, normals; public Vector2[] uv; + public Vector4[] tangents; public int[] indices, charts; public int chartCount; } @@ -114,29 +115,30 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel options, (uint)options.Length, out handle, out uint vertexCount, out uint indexCount, out uint charts); token.ThrowIfCancellationRequested(); if (code != 0) throw new InvalidOperationException("UV unwrap failed: " + Error(code)); - var data = new float[checked((int)vertexCount * 8)]; + // Vertex layout is sixteen float32: position, normal, UV0, tangent. + var data = new float[checked((int)vertexCount * 16)]; var result = new Geometry { positions = new Vector3[vertexCount], normals = new Vector3[vertexCount], - uv = new Vector2[vertexCount], indices = new int[indexCount], charts = new int[vertexCount], chartCount = (int)charts }; + uv = new Vector2[vertexCount], tangents = new Vector4[vertexCount], + indices = new int[indexCount], charts = new int[vertexCount], chartCount = (int)charts }; if (meshLabUnwrapCopy(handle, data, vertexCount, result.indices, indexCount, result.charts) != 0) throw new InvalidOperationException("UV unwrap output copy failed."); for (int i = 0; i < vertexCount; ++i) { - result.positions[i] = new Vector3(data[i * 8], data[i * 8 + 1], data[i * 8 + 2]); - result.normals[i] = new Vector3(data[i * 8 + 3], data[i * 8 + 4], data[i * 8 + 5]); - result.uv[i] = new Vector2(data[i * 8 + 6], data[i * 8 + 7]); + result.positions[i] = new Vector3(data[i * 16], data[i * 16 + 1], data[i * 16 + 2]); + result.normals[i] = new Vector3(data[i * 16 + 3], data[i * 16 + 4], data[i * 16 + 5]); + result.uv[i] = new Vector2(data[i * 16 + 6], data[i * 16 + 7]); + result.tangents[i] = new Vector4(data[i * 16 + 8], data[i * 16 + 9], data[i * 16 + 10], data[i * 16 + 11]); } - // A degenerate corner group (zero-area faces) leaves zero normals, - // which zero the bake's ray directions and tangent frames; rebuild - // every normal from face geometry instead of shipping the holes. + // Normals are regenerated from the split geometry after the UV cut, so + // every hard-edge source behaves the same: crease splits and chart + // borders are already vertex splits, no face crosses one, and the + // weighting follows the Blender Weighted Normal analog modes. + GenerateSplitNormals(result, settings.normalWeighting); int zeroNormals = 0; for (int i = 0; i < vertexCount; ++i) if (result.normals[i].sqrMagnitude < 1e-12f) ++zeroNormals; - if (zeroNormals > 0) { + if (zeroNormals > 0) UvtLog.Warn("[Remesh] " + zeroNormals + " of " + vertexCount + - " unwrap normals came back zero (degenerate faces); rebuilding all from face normals."); - SmoothWithinSplitVertices(result); - } - if (settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle) - SmoothWithinSplitVertices(result); + " split normals are zero (degenerate faces with no usable corner); their rays fall back to the welded cage."); // Normal smoothing runs after UV generation so it works the same for // every hard-edge source: crease splits and chart borders already // materialized as vertex splits, and mesh edges never cross a split, @@ -147,22 +149,41 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel finally { if (handle != IntPtr.Zero) meshLabRemeshDestroy(handle); } } - // xatlas splits vertices along every chart border (and the native normals split - // them along crease edges). Averaging face normals per output vertex therefore - // smooths inside each island and leaves its border hard. - internal static void SmoothWithinSplitVertices(Geometry geometry) + // Regenerates vertex normals from the split geometry after the UV cut. + // xatlas splits vertices along every chart border and the native normals + // split them along crease edges, so accumulating face normals per output + // vertex smooths inside every split group and leaves its border hard — + // creases and island borders alike. Weighting follows the Blender + // Weighted Normal analog: face area (meshopt's own accumulation), + // corner angle, or both multiplied together. + internal static void GenerateSplitNormals(Geometry geometry, RemeshNormalWeighting weighting) { var sum = new Vector3[geometry.positions.Length]; var p = geometry.positions; + bool byArea = weighting != RemeshNormalWeighting.CornerAngle; + bool byAngle = weighting != RemeshNormalWeighting.FaceArea; for (int i = 0; i < geometry.indices.Length; i += 3) { int a = geometry.indices[i], b = geometry.indices[i + 1], c = geometry.indices[i + 2]; - Vector3 n = Vector3.Cross(p[b] - p[a], p[c] - p[a]); // area weighted - sum[a] += n; sum[b] += n; sum[c] += n; + Vector3 ab = p[b] - p[a], ac = p[c] - p[a], bc = p[c] - p[b]; + Vector3 n = Vector3.Cross(ab, ac); // |n| = 2 * face area + if (!byAngle) { sum[a] += n; sum[b] += n; sum[c] += n; continue; } + Vector3 face = n.sqrMagnitude > 1e-30f ? n.normalized : Vector3.zero; + float angleA = CornerAngle(ab, ac), angleB = CornerAngle(-ab, bc), angleC = CornerAngle(-ac, -bc); + if (byArea) { sum[a] += n * angleA; sum[b] += n * angleB; sum[c] += n * angleC; } + else { sum[a] += face * angleA; sum[b] += face * angleB; sum[c] += face * angleC; } } for (int i = 0; i < sum.Length; ++i) if (sum[i].sqrMagnitude > 1e-30f) geometry.normals[i] = sum[i].normalized; } + // Angle between two edge directions meeting at a corner, in radians. + static float CornerAngle(Vector3 u, Vector3 v) + { + float lengths = u.magnitude * v.magnitude; + if (lengths < 1e-20f) return 0; + return Mathf.Acos(Mathf.Clamp(Vector3.Dot(u, v) / lengths, -1f, 1f)); + } + // Port of meshopt's generateNormals smoothing pass, run on the split unwrap // output where every vertex is its own normal group. Each pass averages the // alignment-weighted normal deltas across mesh edges (aligned neighbours pull diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index cfd1441d..d6a55880 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -24,6 +24,18 @@ public enum RemeshRegularize Strong, } + /// How face normals are weighted when the UV-split vertex normals are + /// regenerated — the Blender Weighted Normal modifier analog. + public enum RemeshNormalWeighting + { + /// Face-area weighting (meshopt's own accumulation). + FaceArea, + /// Corner-angle weighting: sharp corners pull their normal harder. + CornerAngle, + /// Face area multiplied by corner angle. + FaceAreaAndCornerAngle, + } + [Serializable] public sealed class RemeshSettings { @@ -49,6 +61,9 @@ public sealed class RemeshSettings public RemeshHardEdges hardEdges = RemeshHardEdges.UvIslands; public float normalCrease = 60; public float normalSmoothing = 1; + // Regenerated after the UV cut, weighted per this mode (Blender Weighted + // Normal analog); smooth inside every split group, hard across every split. + public RemeshNormalWeighting normalWeighting = RemeshNormalWeighting.FaceArea; public float chartMaxCost = 2; public float chartNormalDeviation = 2; public float chartRoundness = 0.01f; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index bfa700b5..d9bffdb6 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -154,15 +154,18 @@ public void OnDrawSidebar() } if (StageHeader(Stage.Unwrap, geometry != null ? $"{geometry.chartCount:N0} islands" : null)) { settings.hardEdges = (RemeshHardEdges)EditorGUILayout.EnumPopup(new GUIContent("Hard edges", - "Angle: crease angle. UV islands: hard along island borders, smooth inside."), settings.hardEdges); + "Angle: crease angle. UV islands: hard along island borders, smooth inside. The crease choice also feeds xatlas charting."), settings.hardEdges); bool angle = settings.hardEdges == RemeshHardEdges.Angle || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle; using (new EditorGUI.DisabledScope(!angle)) settings.normalCrease = EditorGUILayout.Slider("Crease angle", settings.normalCrease, 0, 180); - using (new EditorGUI.DisabledScope(settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle)) - settings.normalSmoothing = EditorGUILayout.Slider(new GUIContent("Normal smoothing", - "Applied after UV generation, so it works with every hard-edge mode: smoothing flows along the surface " + - "and stops at crease edges and island borders alike."), - settings.normalSmoothing, 0, 10); + settings.normalWeighting = (RemeshNormalWeighting)EditorGUILayout.EnumPopup(new GUIContent("Normal weighting", + "How face normals are weighted when the UV-split vertex normals are regenerated — the Blender Weighted Normal " + + "analog. Face area is meshopt's own accumulation; corner angle pulls sharp corners harder; both multiply them."), + settings.normalWeighting); + settings.normalSmoothing = EditorGUILayout.Slider(new GUIContent("Normal smoothing", + "Applied after UV generation, so it works with every hard-edge mode: smoothing flows along the surface " + + "and stops at crease edges and island borders alike."), + settings.normalSmoothing, 0, 10); settings.textureResolution = EditorGUILayout.IntPopup("Texture size", settings.textureResolution, new[] { "512", "1024", "2048", "4096" }, new[] { 512, 1024, 2048, 4096 }); settings.padding = EditorGUILayout.IntSlider("Atlas padding", settings.padding, 1, 32); @@ -271,7 +274,7 @@ string Key(Stage stage) switch (stage) { case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; - case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + + case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; default: return $"{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; @@ -356,7 +359,19 @@ async Task RunUnwrap(RemeshSettings options, CancellationToken token) resultMesh = new Mesh { name = resultName + "_LOD0", indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; resultMesh.vertices = unwrapped.positions; resultMesh.normals = unwrapped.normals; resultMesh.uv = unwrapped.uv; resultMesh.triangles = unwrapped.indices; - resultMesh.RecalculateBounds(); resultMesh.RecalculateTangents(); + resultMesh.RecalculateBounds(); + // The tangent frame comes from meshoptimizer over the final UV layout + // (MikkT-compatible, the same basis the bake encodes against); Unity's + // recalculation is only a fallback if the native tangents are missing. + bool anyTangent = false; + if (unwrapped.tangents != null) + for (int i = 0; i < unwrapped.tangents.Length && !anyTangent; ++i) + anyTangent = unwrapped.tangents[i].sqrMagnitude > 1e-12f; + if (anyTangent) resultMesh.tangents = unwrapped.tangents; + else { + resultMesh.RecalculateTangents(); + UvtLog.Warn("[Remesh] Native tangents missing; fell back to Unity's recalculation. Rebuild the native plugins for this commit."); + } tangents = resultMesh.tangents; status = $"Unwrap: {unwrapped.chartCount:N0} islands, {unwrapped.positions.Length:N0} vertices."; } diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp index 38419ee1..82820de3 100644 --- a/Native~/src/remesh.cpp +++ b/Native~/src/remesh.cpp @@ -21,7 +21,7 @@ #endif namespace { -struct Vertex { float p[3], n[3], uv[2]; }; +struct Vertex { float p[3], n[3], uv[2], t[4]; }; struct Result { std::vector vertices; std::vector indices; std::vector charts; }; struct PosMesh { std::vector pos; std::vector idx; }; struct AtlasDelete { void operator()(xatlas::Atlas* a) const { xatlas::Destroy(a); } }; @@ -199,6 +199,7 @@ int Unwrap(const PosMesh& m, float crease, float smoothing, const UnwrapOptions& std::memcpy(split[i].p, &m.pos[size_t(m.idx[i]) * 3], 12); std::memcpy(split[i].n, &normals[i * 3], 12); split[i].uv[0] = split[i].uv[1] = 0; + std::memset(split[i].t, 0, sizeof(split[i].t)); // remap dedups full vertices } std::vector remap(corners), idx(corners); size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, corners, split.data(), corners, sizeof(Vertex)); @@ -253,6 +254,39 @@ int Unwrap(const PosMesh& m, float crease, float smoothing, const UnwrapOptions& out.charts[i] = v.chartIndex; } out.indices.assign(mesh.indexArray, mesh.indexArray + mesh.indexCount); + + // Regenerate the tangent frame from the final UV layout, so the bake and the + // saved mesh share one MikkT-compatible basis derived from the actual atlas. + // generateTangents emits per-corner data; copy it onto the (already split) + // vertices and duplicate a vertex whose corners disagree (mirrored UV seams). + { + std::vector cornerTangents(out.indices.size() * 4); + meshopt_generateTangents(cornerTangents.data(), out.indices.data(), out.indices.size(), + &out.vertices[0].p[0], out.vertices.size(), sizeof(Vertex), + &out.vertices[0].n[0], sizeof(Vertex), + &out.vertices[0].uv[0], sizeof(Vertex), + meshopt_TangentCompatible); + std::vector written(out.vertices.size(), -1); + for (size_t i = 0; i < out.indices.size(); ++i) { + uint32_t v = out.indices[i]; + const float* t = &cornerTangents[i * 4]; + if (written[v] < 0) { + written[v] = int32_t(i); + std::memcpy(out.vertices[v].t, t, sizeof(float) * 4); + } else { + const float* w = &cornerTangents[size_t(written[v]) * 4]; + float diff = std::fabs(t[0] - w[0]) + std::fabs(t[1] - w[1]) + + std::fabs(t[2] - w[2]) + std::fabs(t[3] - w[3]); + if (diff > 1e-4f) { + uint32_t duplicate = uint32_t(out.vertices.size()); + out.vertices.push_back(out.vertices[v]); + out.charts.push_back(out.charts[v]); + std::memcpy(out.vertices[duplicate].t, t, sizeof(float) * 4); + out.indices[i] = duplicate; + } + } + } + } return Ok; } @@ -272,14 +306,16 @@ unsigned int SimplifyOptions(uint32_t flags) template void Publish(std::unique_ptr& result, void** handle) { *handle = result.release(); } } -EXPORT int meshLabRemeshVersion() { return 2; } +EXPORT int meshLabRemeshVersion() { return 3; } EXPORT void meshLabRemeshDestroy(void* handle) { delete static_cast(handle); } EXPORT void meshLabMeshDestroy(void* handle) { delete static_cast(handle); } // Returns 0 on success; 1 invalid input, 2 output budget, 3 empty result, // 4 xatlas rejected the mesh, 5 multiple atlases, 6 allocation/internal failure, // 7 xatlas produced no usable atlas, 8 xatlas returned an invalid vertex mapping. -// Output vertex layout is eight float32 values: position, normal, UV0. +// Output vertex layout is sixteen float32 values: position, normal, UV0, tangent +// (xyz direction plus +/-1 handedness), the tangent regenerated by meshoptimizer +// from the final UV layout (MikkT-compatible). // flags: 1 = meshopt_RemeshSolve, 2 = meshopt_RemeshShell. These bits are this // bridge's ABI and are mapped by name; meshoptimizer renumbered its enum in v1.3. EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp index cb98b7ec..8964ca4d 100644 --- a/Native~/tests/remesh_test.cpp +++ b/Native~/tests/remesh_test.cpp @@ -23,7 +23,7 @@ static void check(bool condition, const char* message) { int main() { float p[] = {-1,-1,-1, 1,-1,-1, 1,1,-1, -1,1,-1, -1,-1,1, 1,-1,1, 1,1,1, -1,1,1}; uint32_t t[] = {0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5}; - check(meshLabRemeshVersion() == 2, "ABI version"); + check(meshLabRemeshVersion() == 3, "ABI version"); void* h = nullptr; uint32_t v = 0, n = 0; check(meshLabRemeshBuild(p,8,t,36,3,100,0.01f,1,0,256,4,1,&h,&v,&n)==1 && !h, "reject grid resolution"); t[0]=99; @@ -36,15 +36,18 @@ int main() { check(meshLabRemeshBuild(p,8,t,36,16,100,pass ? 1.0f : 0.01f,1,0,256,4,1,&h,&v,&n)==0 && h, "cube pipeline"); check(v>0 && n>0 && n%3==0, "valid counts"); if (pass) check(n/3 <= 100, "target budget with relaxed error"); - std::vector vertices(v*8); std::vector indices(n); + std::vector vertices(v*16); std::vector indices(n); check(meshLabRemeshCopy(h,vertices.data(),0,indices.data(),n)==1, "copy capacity guard"); check(meshLabRemeshCopy(h,vertices.data(),v,indices.data(),n)==0, "copy result"); for (auto i:indices) check(i=0 && vertices[i*8+k]<=1, "normalized UV"); + for(int k=6;k<8;++k) check(vertices[i*16+k]>=0 && vertices[i*16+k]<=1, "normalized UV"); + float tangent=0; for(int k=8;k<11;++k) tangent+=vertices[i*16+k]*vertices[i*16+k]; + check(std::abs(tangent-1)<0.01f, "unit tangents"); + check(std::abs(vertices[i*16+11])==1, "tangent handedness"); } meshLabRemeshDestroy(h); h=nullptr; std::cout << "cube: " << v << " vertices, " << n/3 << " triangles\n"; @@ -57,12 +60,12 @@ int main() { check(meshLabRemeshBuild(tiny,8,t,36,16,100,0.01f,1,0,256,4,1,&h,&v,&n)==0 && h, "tiny cube unwrap"); check(v>0 && n>0 && n%3==0, "tiny cube counts"); { - std::vector vertices(v*8); + std::vector vertices(v*16); std::vector indices(n); check(meshLabRemeshCopy(h,vertices.data(),v,indices.data(),n)==0, "tiny cube copy"); for (uint32_t i=0;i=0 && vertices[i*8+k]<=1, "tiny cube normalized UV"); + for (int k=0;k<16;++k) check(std::isfinite(vertices[i*16+k]), "tiny cube finite output"); + for (int k=6;k<8;++k) check(vertices[i*16+k]>=0 && vertices[i*16+k]<=1, "tiny cube normalized UV"); } } meshLabRemeshDestroy(h); h=nullptr; @@ -108,11 +111,16 @@ int main() { uint32_t charts = 0; check(meshLabUnwrap(sp.data(),sc,sidx.data(),si,1,0,options,17,&h,&v,&n,&charts)==0 && h, "staged: unwrap"); check(v>0 && n>0 && n%3==0 && charts>0, "staged: unwrap counts"); - std::vector uv(v*8); std::vector ui(n); std::vector uc(v); + std::vector uv(v*16); std::vector ui(n); std::vector uc(v); check(meshLabUnwrapCopy(h,uv.data(),v,ui.data(),n,uc.data())==0, "staged: unwrap copy"); for (auto i:ui) check(i=0 && uint32_t(c)=0 && uv[i*8+k]<=1, "staged: normalized UV"); + for (uint32_t i=0;i=0 && uv[i*16+k]<=1, "staged: normalized UV"); + float tangent=0; for(int k=8;k<11;++k) tangent+=uv[i*16+k]*uv[i*16+k]; + check(std::abs(tangent-1)<0.01f, "staged: unit tangents"); + check(std::abs(uv[i*16+11])==1, "staged: tangent handedness"); + } meshLabRemeshDestroy(h); h=nullptr; std::cout << "staged: " << ic/3 << " voxel -> " << si/3 << " simplified triangles, " << charts << " charts\n"; } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 427ebf6b..cfc4d7d7 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -140,11 +140,18 @@ public void UvIslandNormalsAreHardOnlyAtSplitVertices() // Two faces folded 90° along x. Shared vertices smooth; split vertices stay hard. var p=new[] { Vector3.zero, Vector3.right, Vector3.forward, Vector3.up, Vector3.zero, Vector3.right }; var shared=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=new[] { 0,1,2, 1,0,3 } }; - RemeshNative.SmoothWithinSplitVertices(shared); + RemeshNative.GenerateSplitNormals(shared, RemeshNormalWeighting.FaceArea); Assert.That(Vector3.Angle(shared.normals[0], Vector3.Normalize(new Vector3(0,-1,-1))), Is.LessThan(0.01f)); var split=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=new[] { 0,1,2, 5,4,3 } }; - RemeshNative.SmoothWithinSplitVertices(split); + RemeshNative.GenerateSplitNormals(split, RemeshNormalWeighting.FaceArea); Assert.That(Vector3.Angle(split.normals[0], split.normals[4]), Is.EqualTo(90).Within(0.01f)); + // Corner-angle weighting keeps the same directions on this symmetric fold. + var angled=new RemeshNative.Geometry { positions=(Vector3[])p.Clone(), normals=new Vector3[6], indices=new[] { 0,1,2, 1,0,3 } }; + RemeshNative.GenerateSplitNormals(angled, RemeshNormalWeighting.CornerAngle); + Assert.That(Vector3.Angle(angled.normals[0], shared.normals[0]), Is.LessThan(0.01f)); + var both=new RemeshNative.Geometry { positions=(Vector3[])p.Clone(), normals=new Vector3[6], indices=new[] { 0,1,2, 1,0,3 } }; + RemeshNative.GenerateSplitNormals(both, RemeshNormalWeighting.FaceAreaAndCornerAngle); + Assert.That(Vector3.Angle(both.normals[0], shared.normals[0]), Is.LessThan(0.01f)); } [Test] public void ImageSamplingUsesLinearInterpolationAndWrapModes() From a0f6f9de01da94a8ffc380c264975e20d377e8f5 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 02:16:05 +0200 Subject: [PATCH 034/130] fix(remesh): pad the unwrap wire layout to the promised sixteen floats The ABI-3 vertex struct held twelve floats, but the editor marshalling and the native tests read the flat buffer at a sixteen-float stride, so every field past the first vertex was shifted garbage; CI failed the plugin rebuild and the editor kept stale ABI-2 binaries. A static_assert now pins the struct to the documented stride (tangent plus a zeroed reserved tail), and the version-mismatch error reports expected vs loaded ABI with the update-and-restart steps. --- CHANGELOG.md | 3 +++ Editor/RemeshNative.cs | 5 ++++- Native~/src/remesh.cpp | 14 ++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36f2cc1e..320f8fff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] +### Fixed +- **Remesh & Bake: the unwrap wire layout really is sixteen float32 per vertex.** The ABI-3 native struct carried only twelve floats (no reserved tail), so the flat buffer the editor and the native tests read at a 16-float stride was packed at 12 — every field after the first vertex came out shifted garbage (the native test failed on `unit normals` / `normalized UV` on CI, which stopped the plugin rebuild and left the editor on stale ABI-2 binaries). A `static_assert` now pins the struct to the documented stride, and the version-mismatch error states the expected and loaded ABI plus the update/restart steps instead of a bare "Unsupported remesh native ABI". + ### Changed - **Remesh & Bake: the tangent frame is regenerated after the UV cut, in meshoptimizer.** The unwrap output now carries per-vertex tangents from `meshopt_generateTangents` (MikkT-compatible, with mirrored-UV corner conflicts splitting their vertex), computed over the final atlas layout, so the bake, the 3D preview and the saved FBX all encode against one basis instead of Unity's separate recalculation (which stays only as a fallback). Vertex normals are likewise regenerated in C# from the split geometry for **every** hard-edge mode — crease splits and chart borders are already vertex splits, so the weighted accumulation smooths inside each split group and stays hard across creases and island borders alike. A new **Normal weighting** option (Blender Weighted Normal modifier analog) selects the accumulation weight: *Face area* (meshopt's own, default), *Corner angle*, or *Face area × corner angle*; the stale disablement of the smoothing slider in island modes is gone. Native ABI is now 3 with a sixteen-float unwrap vertex layout (position, normal, UV0, tangent) — the plugins must be rebuilt (**Build Native Libraries**, the auto workflow does it on push) and Unity restarted. - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index 004c20ea..d92d470a 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -54,7 +54,10 @@ internal sealed class Geometry public static void CheckAvailable() { try { - if (meshLabRemeshVersion() != AbiVersion) throw new InvalidOperationException("Unsupported remesh native ABI."); + int native = meshLabRemeshVersion(); + if (native != AbiVersion) + throw new InvalidOperationException("Unsupported remesh native ABI: expected " + AbiVersion + ", the loaded plugin reports " + native + + ". Update this package to the commit whose Build Native Libraries run finished, then restart Unity."); } catch (Exception e) when (e is DllNotFoundException || e is EntryPointNotFoundException || e is BadImageFormatException) { throw new InvalidOperationException("Remesh requires rebuilt native plugins. Install the binaries from Build Native Libraries for this commit, then restart Unity.", e); diff --git a/Native~/src/remesh.cpp b/Native~/src/remesh.cpp index 82820de3..1d7a7d3b 100644 --- a/Native~/src/remesh.cpp +++ b/Native~/src/remesh.cpp @@ -21,7 +21,13 @@ #endif namespace { -struct Vertex { float p[3], n[3], uv[2], t[4]; }; +// The wire layout is sixteen float32 per vertex: position, normal, UV0, tangent +// (xyz + +/-1 handedness) and four reserved zero floats. The reserved tail pins +// sizeof(Vertex) to the stride meshLabRemeshCopy memcpy's out and the editor and +// tests read; a struct without it silently ships a 12-float stride under the +// same ABI version and every field after vertex 0 reads shifted garbage. +struct Vertex { float p[3], n[3], uv[2], t[4], r[4]; }; +static_assert(sizeof(Vertex) == 16 * sizeof(float), "wire layout is sixteen float32"); struct Result { std::vector vertices; std::vector indices; std::vector charts; }; struct PosMesh { std::vector pos; std::vector idx; }; struct AtlasDelete { void operator()(xatlas::Atlas* a) const { xatlas::Destroy(a); } }; @@ -199,7 +205,7 @@ int Unwrap(const PosMesh& m, float crease, float smoothing, const UnwrapOptions& std::memcpy(split[i].p, &m.pos[size_t(m.idx[i]) * 3], 12); std::memcpy(split[i].n, &normals[i * 3], 12); split[i].uv[0] = split[i].uv[1] = 0; - std::memset(split[i].t, 0, sizeof(split[i].t)); // remap dedups full vertices + std::memset(split[i].t, 0, sizeof(split[i].t) + sizeof(split[i].r)); // remap dedups full vertices } std::vector remap(corners), idx(corners); size_t unique = meshopt_generateVertexRemap(remap.data(), nullptr, corners, split.data(), corners, sizeof(Vertex)); @@ -314,8 +320,8 @@ EXPORT void meshLabMeshDestroy(void* handle) { delete static_cast(hand // 4 xatlas rejected the mesh, 5 multiple atlases, 6 allocation/internal failure, // 7 xatlas produced no usable atlas, 8 xatlas returned an invalid vertex mapping. // Output vertex layout is sixteen float32 values: position, normal, UV0, tangent -// (xyz direction plus +/-1 handedness), the tangent regenerated by meshoptimizer -// from the final UV layout (MikkT-compatible). +// (xyz direction plus +/-1 handedness), four reserved zero floats; the tangent is +// regenerated by meshoptimizer from the final UV layout (MikkT-compatible). // flags: 1 = meshopt_RemeshSolve, 2 = meshopt_RemeshShell. These bits are this // bridge's ABI and are mapped by name; meshoptimizer renumbered its enum in v1.3. EXPORT int meshLabRemeshBuild(const float* positions, uint32_t vertexCount, From 0b4ab8922853159fe166c11d02f04802fa49e3bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 29 Sep 2026 00:17:24 +0000 Subject: [PATCH 035/130] Build native libraries (auto) [skip ci] --- Plugins/macOS/libxatlas-unity.dylib | Bin 1049096 -> 1065768 bytes Plugins/x86_64/libxatlas-unity.so | Bin 630192 -> 634424 bytes Plugins/x86_64/xatlas-unity.dll | Bin 414208 -> 424960 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/macOS/libxatlas-unity.dylib b/Plugins/macOS/libxatlas-unity.dylib index 7d69b83db7779ecf7f5e095a6165c8b781c33c9b..dad7895eb55669e44c640ab4540ef93b4e745fd4 100644 GIT binary patch delta 102180 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 delta 98810 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 delta 135600 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

6%D2N8@3#lc@R{uPF7+9KpLrjF(o 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

KKRt9!xD(aoVByR!~1WE!WkLMo#tP`g(2Pk4Ez} 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 P_k2P|jdlrK4;ud;*m&i- diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index 03bc0677a90f02a683f786cc012d2401eabb6051..f3865c4c915bbd4180ed78bdd3f0176e27510265 100755 GIT binary patch delta 91146 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 q|8WyEX`hvov}kMb+3`cArw!N~ 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ö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 MtB`T#Ebqqu1E%7dS^xk5 delta 81382 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 Date: Tue, 29 Sep 2026 02:32:24 +0200 Subject: [PATCH 036/130] fix(remesh): scale-free split-normal gate with native-normal self-heal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The post-UV normal rebuild gated each vertex behind an absolute magnitude floor, which can misclassify valid smooth vertices on millimetre-scale captures and leave them zeroed — every hard-edge mode then baked through zero ray directions (tilt saturation, near-total projection fallbacks). The gate is now relative to the strongest accumulation on the mesh, and a vertex that still degenerates restores the parsed native meshopt normal with a warning. The log category caches are warmed on the main thread at load so worker-thread logs cannot touch EditorPrefs, and the native test suite gains a dense 5 mm sphere through the island path pinning the whole wire layout at capture scale. --- CHANGELOG.md | 2 ++ Editor/RemeshNative.cs | 31 +++++++++++++++-- Editor/UvtLog.cs | 10 ++++++ Native~/tests/remesh_test.cpp | 64 ++++++++++++++++++++++++++++++++++- 4 files changed, 103 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 320f8fff..42c11750 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Fixed +- **Remesh & Bake: split-normal regeneration is scale-free and self-heals against the native normals.** The post-UV rebuild gated each vertex's accumulation behind an absolute floor (`sqrMagnitude > 1e-30`), which misclassifies valid smooth vertices on real ~5 mm captures (raw face crosses sit near 1e-7) and leaves their normals zero — every mode then baked through zeroed ray directions (tilt saturation, near-total projection fallbacks). The gate is now relative to the strongest accumulation on the mesh, and any vertex that still degenerates restores the parsed native meshopt normal (same crease splits, smooth across chart borders — a soft edge beats a dead one) with a warning naming the count. The native test suite gains a dense 5 mm sphere through the island-mode path (crease = π) pinning unit normals, normalized UVs and unit tangents at capture scale. +- **UvtLog no longer reads EditorPrefs from worker threads.** The level/category caches fill lazily, so the first remesh log emitted from a `Task.Run` worker could hit `EditorPrefs.GetInt` off the main thread and throw `UnityException`; both caches are now warmed in `[InitializeOnLoadMethod]` and workers only ever read the cache. - **Remesh & Bake: the unwrap wire layout really is sixteen float32 per vertex.** The ABI-3 native struct carried only twelve floats (no reserved tail), so the flat buffer the editor and the native tests read at a 16-float stride was packed at 12 — every field after the first vertex came out shifted garbage (the native test failed on `unit normals` / `normalized UV` on CI, which stopped the plugin rebuild and left the editor on stale ABI-2 binaries). A `static_assert` now pins the struct to the documented stride, and the version-mismatch error states the expected and loaded ABI plus the update/restart steps instead of a bare "Unsupported remesh native ABI". ### Changed diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index d92d470a..a35ece5f 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -134,14 +134,29 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel // Normals are regenerated from the split geometry after the UV cut, so // every hard-edge source behaves the same: crease splits and chart // borders are already vertex splits, no face crosses one, and the - // weighting follows the Blender Weighted Normal analog modes. + // weighting follows the Blender Weighted Normal analog modes. The + // native meshopt normals are kept as a fallback: a vertex whose + // accumulation degenerates restores them instead of casting zero + // rays through the bake (they respect the same crease splits and + // are smooth across chart borders — a soft edge beats a dead one). + var nativeNormals = new Vector3[vertexCount]; + for (int i = 0; i < vertexCount; ++i) nativeNormals[i] = result.normals[i]; GenerateSplitNormals(result, settings.normalWeighting); + int healedNormals = 0; + for (int i = 0; i < vertexCount; ++i) + if (result.normals[i].sqrMagnitude < 1e-12f) { + result.normals[i] = nativeNormals[i]; + if (nativeNormals[i].sqrMagnitude > 1e-12f) ++healedNormals; + } int zeroNormals = 0; for (int i = 0; i < vertexCount; ++i) if (result.normals[i].sqrMagnitude < 1e-12f) ++zeroNormals; + if (healedNormals > 0) + UvtLog.Warn("[Remesh] " + healedNormals + " of " + vertexCount + + " split normals degenerated to zero (cancelling or degenerate faces); restored the native smooth normal on them — hard edges may soften there."); if (zeroNormals > 0) UvtLog.Warn("[Remesh] " + zeroNormals + " of " + vertexCount + - " split normals are zero (degenerate faces with no usable corner); their rays fall back to the welded cage."); + " split normals are still zero (the native output was zero as well); their rays fall back to the welded cage."); // Normal smoothing runs after UV generation so it works the same for // every hard-edge source: crease splits and chart borders already // materialized as vertex splits, and mesh edges never cross a split, @@ -159,6 +174,10 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel // creases and island borders alike. Weighting follows the Blender // Weighted Normal analog: face area (meshopt's own accumulation), // corner angle, or both multiplied together. + // The degeneracy gate is RELATIVE to the strongest accumulation on the + // mesh: real captures are ~5 mm models whose raw crosses sit near 1e-7, + // and an absolute floor there classified valid smooth vertices as + // degenerate (the all-zero-normal regression on face-area weighting). internal static void GenerateSplitNormals(Geometry geometry, RemeshNormalWeighting weighting) { var sum = new Vector3[geometry.positions.Length]; @@ -175,8 +194,14 @@ internal static void GenerateSplitNormals(Geometry geometry, RemeshNormalWeighti if (byArea) { sum[a] += n * angleA; sum[b] += n * angleB; sum[c] += n * angleC; } else { sum[a] += face * angleA; sum[b] += face * angleB; sum[c] += face * angleC; } } + float maxSq = 0f; + for (int i = 0; i < sum.Length; ++i) { + float sq = sum[i].sqrMagnitude; + if (sq > maxSq) maxSq = sq; + } + float floor = maxSq * 1e-12f; for (int i = 0; i < sum.Length; ++i) - if (sum[i].sqrMagnitude > 1e-30f) geometry.normals[i] = sum[i].normalized; + if (sum[i].sqrMagnitude > floor) geometry.normals[i] = sum[i].normalized; } // Angle between two edge directions meeting at a corner, in radians. diff --git a/Editor/UvtLog.cs b/Editor/UvtLog.cs index a83774cc..1b7be986 100644 --- a/Editor/UvtLog.cs +++ b/Editor/UvtLog.cs @@ -38,6 +38,16 @@ public enum Category static Level? _cachedLevel; static int? _cachedMask; + // EditorPrefs is main-thread-only, but the caches above are filled lazily and the + // first log can come from a Task.Run worker (the remesh/bake pipeline). Touch both + // getters once on the main thread at load so workers only ever read the cache. + [InitializeOnLoadMethod] + static void WarmPrefsCaches() + { + _ = Current; + _ = EnabledCategories; + } + public static Level Current { get diff --git a/Native~/tests/remesh_test.cpp b/Native~/tests/remesh_test.cpp index 8964ca4d..61d99c21 100644 --- a/Native~/tests/remesh_test.cpp +++ b/Native~/tests/remesh_test.cpp @@ -70,7 +70,69 @@ int main() { } meshLabRemeshDestroy(h); h=nullptr; - // Bridge flags: bit 0 = meshopt_RemeshSolve, bit 1 = meshopt_RemeshShell. meshoptimizer + // The editor's island hard-edge modes pass crease = pi (the chart borders carry the + // hard edges; the native call makes no crease splits of its own), and real captures + // are ~5 mm models remeshed densely — a path the unit-scale cube tests never exercise. + // Pin every field of the wire layout on it: all-zero normals shipped here once under + // ABI 3 and the bake projected through zeroed ray directions. + { + std::vector sp; std::vector si; + const int grid = 12; + const float radius = 2.5e-3f; + const int quads[6][4] = { + {0,1,2,3}, {4,5,6,7}, {0,1,5,4}, {3,2,6,7}, {0,3,7,4}, {1,2,6,5}, + }; + auto point = [&](int q0, int q1, int q2, int q3, float u, float v, float* out) { + for (int k = 0; k < 3; ++k) { + float a = p[q0 * 3 + k] * (1 - u) + p[q1 * 3 + k] * u; + float b = p[q3 * 3 + k] * (1 - u) + p[q2 * 3 + k] * u; + out[k] = (a * (1 - v) + b * v); + } + float len = std::sqrt(out[0] * out[0] + out[1] * out[1] + out[2] * out[2]); + for (int k = 0; k < 3; ++k) out[k] = out[k] / len * radius; + }; + for (auto& q : quads) + for (int i = 0; i < grid; ++i) + for (int j = 0; j < grid; ++j) { + float a[3], b[3], c[3], d[3]; + point(q[0], q[1], q[2], q[3], float(i) / grid, float(j) / grid, a); + point(q[0], q[1], q[2], q[3], float(i + 1) / grid, float(j) / grid, b); + point(q[0], q[1], q[2], q[3], float(i + 1) / grid, float(j + 1) / grid, c); + point(q[0], q[1], q[2], q[3], float(i) / grid, float(j + 1) / grid, d); + // Outward winding is not uniform across the hand-listed quads; the + // sphere is centred at the origin, so cross.centroid signs it. + uint32_t base = uint32_t(sp.size() / 3); + for (float* pv : {a, b, c, d}) { sp.push_back(pv[0]); sp.push_back(pv[1]); sp.push_back(pv[2]); } + float cx = (b[1]-a[1])*(c[2]-a[2]) - (b[2]-a[2])*(c[1]-a[1]); + float cy = (b[2]-a[2])*(c[0]-a[0]) - (b[0]-a[0])*(c[2]-a[2]); + float cz = (b[0]-a[0])*(c[1]-a[1]) - (b[1]-a[1])*(c[0]-a[0]); + float centroid[3] = {a[0]+b[0]+c[0], a[1]+b[1]+c[1], a[2]+b[2]+c[2]}; + if (cx * centroid[0] + cy * centroid[1] + cz * centroid[2] >= 0) { + si.push_back(base); si.push_back(base + 2); si.push_back(base + 1); + si.push_back(base); si.push_back(base + 3); si.push_back(base + 2); + } else { + si.push_back(base); si.push_back(base + 1); si.push_back(base + 2); + si.push_back(base); si.push_back(base + 2); si.push_back(base + 3); + } + } + check(meshLabRemeshBuild(sp.data(), uint32_t(sp.size() / 3), si.data(), uint32_t(si.size()), + 64, 1400, 0.01f, 3.141593f, 0, 1024, 4, 1, &h, &v, &n) == 0 && h, "tiny dense sphere pipeline"); + check(v > 0 && n > 0 && n % 3 == 0, "tiny dense sphere counts"); + std::vector vertices(v * 16); std::vector indices(n); + check(meshLabRemeshCopy(h, vertices.data(), v, indices.data(), n) == 0, "tiny dense sphere copy"); + for (uint32_t i = 0; i < v; ++i) { + for (int k = 0; k < 16; ++k) check(std::isfinite(vertices[i * 16 + k]), "tiny dense sphere finite"); + float norm = 0; for (int k = 3; k < 6; ++k) norm += vertices[i * 16 + k] * vertices[i * 16 + k]; + check(std::abs(norm - 1) < 0.01f, "tiny dense sphere unit normals"); + for (int k = 6; k < 8; ++k) check(vertices[i * 16 + k] >= 0 && vertices[i * 16 + k] <= 1, "tiny dense sphere normalized UV"); + float tangent = 0; for (int k = 8; k < 11; ++k) tangent += vertices[i * 16 + k] * vertices[i * 16 + k]; + check(std::abs(tangent - 1) < 0.01f, "tiny dense sphere unit tangents"); + check(std::abs(vertices[i * 16 + 11]) == 1, "tiny dense sphere tangent handedness"); + } + meshLabRemeshDestroy(h); h = nullptr; + std::cout << "tiny dense sphere: " << v << " vertices, " << n / 3 << " triangles\n"; + } + // v1.3 renumbered that enum, so pin the mapping: a closed cube remeshed as a two-sided // shell keeps its inner surface as well and must come out larger than the solid remesh. uint32_t tris[4] = {}; From 7380b34f97ba0737b5e8adbcc1dc40a4c566ebeb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 29 Sep 2026 00:33:31 +0000 Subject: [PATCH 037/130] Build native libraries (auto) [skip ci] --- Plugins/x86_64/xatlas-unity.dll | Bin 424960 -> 424960 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/x86_64/xatlas-unity.dll b/Plugins/x86_64/xatlas-unity.dll index f3865c4c915bbd4180ed78bdd3f0176e27510265..8ebccdde70920c65ba664336a12f5542d12bce76 100755 GIT binary patch delta 45 ucmZqpA=&UlaseZg4|_8cV>=Tg2r~gOGZ3?EXJTXx+5(i@9=4Tr)iD4TPz)jf delta 45 ucmZqpA=&UlaseY#5py#WV>=Tg2r~gOGZ3?EXJTXx+5(i@9=4Tr)iD4ZFbrk@ From 740eeaa00cc7a3b790f8a76f9c97e6908cc86351 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 02:38:06 +0200 Subject: [PATCH 038/130] feat(remesh): accept skinned sources by baking the current pose The source capture rejected any SkinnedMeshRenderer under the root. A skinned renderer is now baked at its current pose into a fresh runtime mesh whose vertices stay in renderer-local space without transform scale, so the shared root-local path applies the transform exactly once, like a static mesh under the same node; skinned normals, tangents, UV0 and materials carry into the capture. Other renderer types are still ignored. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 6 ++++-- Editor/RemeshSource.cs | 33 ++++++++++++++++++++----------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42c11750..42287f31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. - **Remesh & Bake: normalized saves and a `remesh` output folder next to the source.** *Normalize size (saved at scale 1)* (default on) bakes the source root's world scale into the saved geometry, so the model keeps its real size with an identity transform regardless of how the source is scaled — positions scale component-wise, normals and tangents take the inverse (inverse-transpose of a diagonal matrix) and renormalize, and a mirroring determinant flips the triangle winding. Off keeps root-local geometry and carries the scale on the saved transform instead (the previous behavior). Saves also no longer ask for a folder when the source resolves to an imported asset: output goes to a `remesh` subfolder next to the source's FBX/prefab/mesh (created if missing), with the folder picker remaining only for scene-only sources. - **Remesh & Bake diagnostic log (RemeshDiag category)** — every bake prints its health counters to the Console when the `RemeshDiag` log filter is on: welded cage positions and split copies (how many vertices the UV/crease splits duplicated), one-sided border normals with the max cage deviation, nearest-fallback projection samples, missed texels, and the normal map's tilt statistics (mean/max angle from flat, count of texels leaning >45°). A map where >5% of texels lean >45° at a >30° mean tilt additionally logs a warning pointing at hard-edge mode / projection distance / cage fit — the numeric signature of the island-border artifact bands fixed this release. The category bit slots into the existing Log filters panel automatically. - Experimental Remesh & Bake pipeline with new UV0, material transfer and isolated native jobs. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index e27f37c5..ee0bd082 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -24,12 +24,14 @@ settings, marked "settings changed" in its header) and clears everything after i - **Maps** — each baked map (base color, normal, metallic/smoothness, occlusion, emission). -1. **Source.** Select a static model root. **Source root** follows the +1. **Source.** Select a model root. **Source root** follows the selection: a LOD child resolves to its LODGroup, and selections without a MeshRenderer (lights, cameras) are ignored. An object dragged into the field holds until the selection changes. Active/enabled MeshRenderers under it are combined in root-local coordinates; LODGroups contribute LOD0 only, collision - nodes are excluded. Skinned renderers are rejected. Every contributing submesh + nodes are excluded. SkinnedMeshRenderers are baked at their current pose + (`BakeMesh`, renderer-local space) and then captured like static meshes — pose + the model the way you want it baked. Every contributing submesh needs UV0. Read/Write-disabled imports are read from the imported asset. 2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided shell. Higher resolution preserves smaller gaps but produces a denser, diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index ae8b117c..0ef32977 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -66,8 +66,6 @@ internal sealed class Surface public static RemeshSource Capture(GameObject root) { if (!root) throw new ArgumentException("Select a source root."); - if (root.GetComponentInChildren() != null) - throw new InvalidOperationException("Remesh & Bake currently accepts static MeshRenderers. Bake skinned geometry to a static mesh first."); var excluded = new HashSet(); foreach (var group in root.GetComponentsInChildren()) { var lods = group.GetLODs(); @@ -82,17 +80,28 @@ public static RemeshSource Capture(GameObject root) var materialIds = new Dictionary(); string[] warnings; using (var reader = new Reader()) { - foreach (var renderer in root.GetComponentsInChildren()) { + foreach (var renderer in root.GetComponentsInChildren()) { if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; - var filter = renderer.GetComponent(); - if (!filter || !filter.sharedMesh) continue; - var sourceMesh = filter.sharedMesh; - for (int sub = 0; sub < sourceMesh.subMeshCount; ++sub) - if (sourceMesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); - // An Instantiate clone of a Read/Write-disabled import carries no CPU data, - // but editor code can still read the imported asset; copy from that. - var mesh = UvCanvasView.MakeReadableCopy(sourceMesh); + // A skinned source is baked at its current pose into a fresh runtime + // mesh. BakeMesh leaves vertices in the renderer's local space with no + // transform scale, so the shared root-local path below applies the + // transform exactly once, like a static mesh under the same node. + Mesh mesh; + if (renderer is SkinnedMeshRenderer skin) { + mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; + skin.BakeMesh(mesh); + } + else if (renderer is MeshRenderer) { + var filter = renderer.GetComponent(); + if (!filter || !filter.sharedMesh) continue; + // An Instantiate clone of a Read/Write-disabled import carries no CPU data, + // but editor code can still read the imported asset; copy from that. + mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); + } + else continue; try { + for (int sub = 0; sub < mesh.subMeshCount; ++sub) + if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); if (mesh.uv.Length != mesh.vertexCount) throw new InvalidOperationException(renderer.name + " needs source UV0 for material transfer."); if (mesh.normals.Length != mesh.vertexCount) mesh.RecalculateNormals(); @@ -136,7 +145,7 @@ public static RemeshSource Capture(GameObject root) } warnings = reader.warnings.ToArray(); } - if (indices.Count == 0) throw new InvalidOperationException("No static source triangles found."); + if (indices.Count == 0) throw new InvalidOperationException("No source triangles found."); var bounds = new Bounds(positions[0], Vector3.zero); foreach (var p in positions) bounds.Encapsulate(p); if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); From 5a244a24b5034c6621f4a0e1da30768fa14d9361 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 02:51:45 +0200 Subject: [PATCH 039/130] fix(remesh): capture Read/Write-off sources, posed skinned parts, LOD0-only filter Three source-capture repairs from the tank remesh run. Non-readable imports cloned through the classic vertex getters, which return empty arrays under isReadable=false, so the capture found no triangles; the clone now reads through MeshData for everything but bone weights. Skinned parts baked at their authored origin because BakeMesh uses the last evaluated skinning, which in edit mode predates the current bone transforms; the bone list is reassigned first to mark it dirty. And a LOD0-only toggle (default on) skips meshes named Name_LOD1 and higher, covering models whose LOD levels are separate nodes rather than LODGroup entries. --- CHANGELOG.md | 3 ++ Documentation~/REMESH_AND_BAKE.md | 10 +++--- Editor/Framework/UvCanvasView.cs | 52 +++++++++++++++++++++++++++++++ Editor/RemeshSettings.cs | 3 ++ Editor/RemeshSource.cs | 35 ++++++++++++++++++--- Editor/Tools/RemeshBakeTool.cs | 6 ++-- 6 files changed, 99 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42287f31..cff89d2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Fixed +- **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. +- **Skinned captures bake the pose the scene shows.** `BakeMesh` uses the last evaluated skinning, which in edit mode can predate the current bone transforms — every skinned part then baked at its authored origin instead of its posed place. The bone list is reassigned before baking to mark the skinning dirty and force a re-evaluation. - **Remesh & Bake: split-normal regeneration is scale-free and self-heals against the native normals.** The post-UV rebuild gated each vertex's accumulation behind an absolute floor (`sqrMagnitude > 1e-30`), which misclassifies valid smooth vertices on real ~5 mm captures (raw face crosses sit near 1e-7) and leaves their normals zero — every mode then baked through zeroed ray directions (tilt saturation, near-total projection fallbacks). The gate is now relative to the strongest accumulation on the mesh, and any vertex that still degenerates restores the parsed native meshopt normal (same crease splits, smooth across chart borders — a soft edge beats a dead one) with a warning naming the count. The native test suite gains a dense 5 mm sphere through the island-mode path (crease = π) pinning unit normals, normalized UVs and unit tangents at capture scale. - **UvtLog no longer reads EditorPrefs from worker threads.** The level/category caches fill lazily, so the first remesh log emitted from a `Task.Run` worker could hit `EditorPrefs.GetInt` off the main thread and throw `UnityException`; both caches are now warmed in `[InitializeOnLoadMethod]` and workers only ever read the cache. - **Remesh & Bake: the unwrap wire layout really is sixteen float32 per vertex.** The ABI-3 native struct carried only twelve floats (no reserved tail), so the flat buffer the editor and the native tests read at a 16-float stride was packed at 12 — every field after the first vertex came out shifted garbage (the native test failed on `unit normals` / `normalized UV` on CI, which stopped the plugin rebuild and left the editor on stale ABI-2 binaries). A `static_assert` now pins the struct to the documented stride, and the version-mismatch error states the expected and loaded ABI plus the update/restart steps instead of a bare "Unsupported remesh native ABI". @@ -15,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. - **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. - **Remesh & Bake: normalized saves and a `remesh` output folder next to the source.** *Normalize size (saved at scale 1)* (default on) bakes the source root's world scale into the saved geometry, so the model keeps its real size with an identity transform regardless of how the source is scaled — positions scale component-wise, normals and tangents take the inverse (inverse-transpose of a diagonal matrix) and renormalize, and a mirroring determinant flips the triangle winding. Off keeps root-local geometry and carries the scale on the saved transform instead (the previous behavior). Saves also no longer ask for a folder when the source resolves to an imported asset: output goes to a `remesh` subfolder next to the source's FBX/prefab/mesh (created if missing), with the folder picker remaining only for scene-only sources. - **Remesh & Bake diagnostic log (RemeshDiag category)** — every bake prints its health counters to the Console when the `RemeshDiag` log filter is on: welded cage positions and split copies (how many vertices the UV/crease splits duplicated), one-sided border normals with the max cage deviation, nearest-fallback projection samples, missed texels, and the normal map's tilt statistics (mean/max angle from flat, count of texels leaning >45°). A map where >5% of texels lean >45° at a >30° mean tilt additionally logs a warning pointing at hard-edge mode / projection distance / cage fit — the numeric signature of the island-border artifact bands fixed this release. The category bit slots into the existing Log filters panel automatically. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index ee0bd082..8dbe13a1 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -29,10 +29,12 @@ settings, marked "settings changed" in its header) and clears everything after i MeshRenderer (lights, cameras) are ignored. An object dragged into the field holds until the selection changes. Active/enabled MeshRenderers under it are combined in root-local coordinates; LODGroups contribute LOD0 only, collision - nodes are excluded. SkinnedMeshRenderers are baked at their current pose - (`BakeMesh`, renderer-local space) and then captured like static meshes — pose - the model the way you want it baked. Every contributing submesh - needs UV0. Read/Write-disabled imports are read from the imported asset. + nodes are excluded, and **LOD0 only** (default on) skips meshes named + `Name_LOD1` and higher wherever they sit. SkinnedMeshRenderers are baked at + their current pose (skinning re-evaluated first — in edit mode it can be stale + and bake every part at its authored origin) and then captured like static + meshes; pose the model the way you want it baked. Every contributing submesh + needs UV0. Read/Write-disabled imports are read through MeshData. 2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided shell. Higher resolution preserves smaller gaps but produces a denser, uniform intermediate mesh. diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index c1515ad8..cecf8895 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1215,6 +1215,8 @@ public static Mesh MakeReadableCopy(Mesh src) { var dst = new Mesh(); dst.indexFormat = src.indexFormat; + if (!src.isReadable) + return MakeReadableCopyFromMeshData(src, dst); dst.SetVertices(new List(src.vertices)); if (src.normals != null && src.normals.Length > 0) dst.SetNormals(new List(src.normals)); if (src.tangents != null && src.tangents.Length > 0) dst.SetTangents(new List(src.tangents)); @@ -1248,6 +1250,56 @@ public static Mesh MakeReadableCopy(Mesh src) return dst; } + // The classic vertex getters log "Not allowed to access" and return EMPTY arrays + // on a Read/Write-disabled import (the capture then finds no triangles at all); + // MeshData is served by the engine regardless of the readable flag. Bone weights + // have no MeshData accessor — skinned capture bakes through the renderer instead. + static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) + { + using (var dataArray = Mesh.AcquireReadOnlyMeshData(src)) + { + var md = dataArray[0]; + int count = md.vertexCount; + var vertices = new Vector3[count]; + md.GetVertices(vertices); + dst.SetVertices(vertices); + if (md.HasVertexAttribute(VertexAttribute.Normal)) { var n = new Vector3[count]; md.GetNormals(n); dst.SetNormals(n); } + if (md.HasVertexAttribute(VertexAttribute.Tangent)) { var t = new Vector4[count]; md.GetTangents(t); dst.SetTangents(t); } + if (md.HasVertexAttribute(VertexAttribute.Color)) { var c = new Color32[count]; md.GetColors(c); dst.SetColors(c); } + for (int ch = 0; ch < 8; ch++) + { + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); + if (!md.HasVertexAttribute(attr)) continue; + int dim = md.GetVertexAttributeDimension(attr); + if (dim <= 2) + { + var uv = new List(); md.GetUVs(ch, uv); + if (uv.Count > 0 && !IsAllZero2(uv)) dst.SetUVs(ch, uv); + } + else if (dim == 3) + { + var uv = new List(); md.GetUVs(ch, uv); + if (uv.Count > 0) dst.SetUVs(ch, uv); + } + else + { + var uv = new List(); md.GetUVs(ch, uv); + if (uv.Count > 0) dst.SetUVs(ch, uv); + } + } + dst.subMeshCount = md.subMeshCount; + var indices = new List(); + for (int s = 0; s < md.subMeshCount; s++) + { + md.GetIndices(indices, s); + dst.SetIndices(indices, md.GetTopology(s), s, calculateBounds: false); + indices.Clear(); + } + } + dst.bounds = src.bounds; + return dst; + } + static bool IsAllZero2(List uv) { for (int i = 0; i < uv.Count; i++) diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index d6a55880..29aa9f50 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -43,6 +43,9 @@ public sealed class RemeshSettings public int voxelResolution = 128; public bool solve = true; public bool shell; + // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already + // contribute LOD0 only). + public bool lod0Only = true; // 2 · Simplify public bool simplify = true; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 0ef32977..850c7412 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -63,7 +63,7 @@ internal sealed class Surface public bool smoothnessFromAlbedo; } - public static RemeshSource Capture(GameObject root) + public static RemeshSource Capture(GameObject root, bool lod0Only) { if (!root) throw new ArgumentException("Select a source root."); var excluded = new HashSet(); @@ -82,14 +82,25 @@ public static RemeshSource Capture(GameObject root) using (var reader = new Reader()) { foreach (var renderer in root.GetComponentsInChildren()) { if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; + if (lod0Only && IsHigherLodName(renderer.name)) continue; // A skinned source is baked at its current pose into a fresh runtime - // mesh. BakeMesh leaves vertices in the renderer's local space with no - // transform scale, so the shared root-local path below applies the - // transform exactly once, like a static mesh under the same node. + // mesh. BakeMesh bakes the LAST EVALUATED skinning, which in edit mode + // can predate the current bone transforms — every part then lands at + // its authored origin instead of its posed place, so the bone list is + // reassigned first to mark the skinning dirty and force a re-evaluation. + // The result stays in the renderer's local space with no transform + // scale, and the shared root-local path below applies the transform + // exactly once, like a static mesh under the same node. Mesh mesh; if (renderer is SkinnedMeshRenderer skin) { mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; + var bones = skin.bones; + skin.bones = Array.Empty(); + skin.bones = bones; skin.BakeMesh(mesh); + // A baked runtime mesh is nameless; carry the asset name so the + // LOD filter below sees the same _LOD{n} suffix as static meshes. + if (skin.sharedMesh) mesh.name = skin.sharedMesh.name; } else if (renderer is MeshRenderer) { var filter = renderer.GetComponent(); @@ -100,6 +111,7 @@ public static RemeshSource Capture(GameObject root) } else continue; try { + if (lod0Only && IsHigherLodName(mesh.name)) continue; for (int sub = 0; sub < mesh.subMeshCount; ++sub) if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); if (mesh.uv.Length != mesh.vertexCount) @@ -154,6 +166,21 @@ public static RemeshSource Capture(GameObject root) diagonal = bounds.size.magnitude, warnings = warnings }; } + // Repo LOD naming is Name_LOD{N} (see the LOD/collision naming rule); anything + // above LOD0 is a coarser duplicate of what LOD0 already captures. + static bool IsHigherLodName(string name) + { + if (string.IsNullOrEmpty(name)) return false; + int at = name.LastIndexOf("_LOD", StringComparison.OrdinalIgnoreCase); + if (at < 0 || at + 4 >= name.Length) return false; + int level = 0; + for (int i = at + 4; i < name.Length; ++i) { + if (name[i] < '0' || name[i] > '9') return false; + level = level * 10 + (name[i] - '0'); + } + return level > 0; + } + sealed class Reader : IDisposable { readonly Dictionary<(Texture, bool, bool, bool), Image> cache = new Dictionary<(Texture, bool, bool, bool), Image>(); diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index d9bffdb6..430e75e4 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -131,6 +131,8 @@ public void OnDrawSidebar() if (GUILayout.Button("Run all stages", GUILayout.Height(26))) Start(Stage.Bake, true); if (StageHeader(Stage.Remesh, voxel != null ? $"{voxel.TriangleCount:N0} tris" : null)) { + settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", + "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); @@ -272,7 +274,7 @@ string Key(Stage stage) { var s = settings; switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}"; + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -320,7 +322,7 @@ async Task RunRemesh(RemeshSettings options, CancellationToken token) if (!root) throw new InvalidOperationException("Select a source root."); Report("Reading source geometry and textures…"); await Task.Yield(); token.ThrowIfCancellationRequested(); - var captured = RemeshSource.Capture(root); + var captured = RemeshSource.Capture(root, options.lod0Only); foreach (var warning in captured.warnings) UvtLog.Warn("[Remesh] " + warning); Report("Voxel remeshing…"); var mesh = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token)); From b4883585f87631adcb4e0120415fc7cd59c74dc3 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 03:13:14 +0200 Subject: [PATCH 040/130] =?UTF-8?q?feat(remesh):=20keep-hierarchy=20mode?= =?UTF-8?q?=20=E2=80=94=20per-node=20remesh=20and=20bake,=20saved=20as=20a?= =?UTF-8?q?=20rebuilt=20root=20prefab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 + Documentation~/REMESH_AND_BAKE.md | 10 + Editor/RemeshSettings.cs | 4 + Editor/RemeshSource.cs | 2 +- Editor/Tools/RemeshBakeTool.cs | 303 +++++++++++++++++++++++++-- Tests/Editor/RemeshHierarchyTests.cs | 68 ++++++ image.png | Bin 0 -> 2169122 bytes 7 files changed, 369 insertions(+), 21 deletions(-) create mode 100644 Tests/Editor/RemeshHierarchyTests.cs create mode 100644 image.png diff --git a/CHANGELOG.md b/CHANGELOG.md index cff89d2b..894e9e50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] +### Added +- **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. + ### Fixed - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. - **Skinned captures bake the pose the scene shows.** `BakeMesh` uses the last evaluated skinning, which in edit mode can predate the current bone transforms — every skinned part then baked at its authored origin instead of its posed place. The bone list is reassigned before baking to mark the skinning dirty and force a re-evaluation. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 8dbe13a1..5f97c09d 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -181,6 +181,16 @@ compression or max-size settings. - Experimental triangle remeshing, not animation-ready quad retopology. Thin sheets, tiny gaps and adjacent disconnected parts can collapse or merge. +- **Keep hierarchy** (`RemeshSettings.keepHierarchy`) splits the capture at the + renderer level: every node the weld would have folded in runs the whole + voxel → simplify → unwrap → bake chain in its own local space, and the save + rebuilds them as children of one root prefab at their captured root-relative + transforms, each with its own baked material and mesh asset. The FBX lane + stays weld-only (a multi-node FBX round-trip re-imports per-node normals and + mappings for no gain over the native prefab), the source root's scale stays on + the prefab root (so *Normalized size* is weld-only and says so), and preview + panels show the largest node's stage outputs. Node granularity = the renderers + of the capture scope; a node's own subtree merges into that node. - No skinning, blend-shape, alpha cutout/transparency, parallax or detail-layer transfer. Shaders other than Standard and URP/Lit bake base color, normal, occlusion, emission and scalar metallic/smoothness from common property names; diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 29aa9f50..7b54c01b 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -46,6 +46,10 @@ public sealed class RemeshSettings // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already // contribute LOD0 only). public bool lod0Only = true; + // Keep hierarchy: remesh every captured node SEPARATELY and save the result as a + // hierarchy of meshes under one root (per-node materials, local transforms kept), + // instead of welding everything into one _LOD0 mesh with one baked material. + public bool keepHierarchy; // 2 · Simplify public bool simplify = true; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 850c7412..b44b0244 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -168,7 +168,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) // Repo LOD naming is Name_LOD{N} (see the LOD/collision naming rule); anything // above LOD0 is a coarser duplicate of what LOD0 already captures. - static bool IsHigherLodName(string name) + internal static bool IsHigherLodName(string name) { if (string.IsNullOrEmpty(name)) return false; int at = name.LastIndexOf("_LOD", StringComparison.OrdinalIgnoreCase); diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 430e75e4..92589494 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -52,6 +52,24 @@ public RemeshBakeTool() RemeshNative.Geometry geometry; Vector4[] tangents; RemeshBaker.Maps maps; + // Keep-hierarchy mode (settings.keepHierarchy): per-node stage outputs. Each entry + // carries its own capture → voxel → simplified → unwrapped → baked chain; the node's + // transform is kept relative to the source root so Save can rebuild the hierarchy. + internal sealed class RemeshNode + { + public string name; + public Vector3 localPosition = Vector3.zero; + public Quaternion localRotation = Quaternion.identity; + public Vector3 localScale = Vector3.one; + public RemeshSource source; + public RemeshNative.IndexedMesh voxel; + public RemeshNative.Geometry simplified; + public RemeshNative.Geometry geometry; + public Vector4[] tangents; + public Mesh mesh; + public RemeshBaker.Maps maps; + } + List nodes; Mesh sourceMesh, voxelMesh, simplifiedMesh, resultMesh; Texture2D preview; readonly string[] keys = new string[4]; @@ -133,6 +151,8 @@ public void OnDrawSidebar() if (StageHeader(Stage.Remesh, voxel != null ? $"{voxel.TriangleCount:N0} tris" : null)) { settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); + settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", + "Remesh every node SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); @@ -274,7 +294,7 @@ string Key(Stage stage) { var s = settings; switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}"; + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -322,6 +342,10 @@ async Task RunRemesh(RemeshSettings options, CancellationToken token) if (!root) throw new InvalidOperationException("Select a source root."); Report("Reading source geometry and textures…"); await Task.Yield(); token.ThrowIfCancellationRequested(); + if (options.keepHierarchy) { + await RunRemeshHierarchy(root, options, token); + return; + } var captured = RemeshSource.Capture(root, options.lod0Only); foreach (var warning in captured.warnings) UvtLog.Warn("[Remesh] " + warning); Report("Voxel remeshing…"); @@ -334,9 +358,101 @@ async Task RunRemesh(RemeshSettings options, CancellationToken token) (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); } + // Keep-hierarchy capture: one node per RENDERER that Capture would have folded into the + // weld (same filters: active, non-collision, LOD0), each captured in its own local space + // with its own subtree. The node's transform relative to the source root is kept so + // Save can rebuild the hierarchy. + async Task RunRemeshHierarchy(GameObject root, RemeshSettings options, CancellationToken token) + { + var renderers = CollectHierarchyRenderers(root, options.lod0Only); + if (renderers.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); + nodes = new List(renderers.Count); + long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; + for (int i = 0; i < renderers.Count; ++i) { + var renderer = renderers[i]; + token.ThrowIfCancellationRequested(); + Report($"Reading {renderer.name} ({i + 1}/{renderers.Count})…"); + var captured = RemeshSource.Capture(renderer.gameObject, options.lod0Only); + foreach (var warning in captured.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } + if (captured.indices.Length == 0) { + UvtLog.Warn("[Remesh] " + renderer.name + ": nothing to remesh, skipped."); + continue; + } + Report($"Voxel remeshing {renderer.name} ({i + 1}/{renderers.Count})…"); + var nodeVoxel = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token)); + var toRoot = root.transform.worldToLocalMatrix * renderer.transform.localToWorldMatrix; + nodes.Add(new RemeshNode { + name = renderer.name, + localPosition = toRoot.GetColumn(3), + localRotation = toRoot.rotation, + localScale = toRoot.lossyScale, + source = captured, + voxel = nodeVoxel, + }); + sourceTriangles += captured.indices.Length / 3; + resultTriangles += nodeVoxel.TriangleCount; + } + if (nodes.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); + // Previews come from the largest node so the existing preview panel keeps working; + // the single-path snapshot/voxel fields stay null (Save branches on `nodes`). + var largest = LargestNode(); + resultName = root.name; + snapshot = null; voxel = null; + sourceMesh = BuildMesh(root.name + "_Source", largest.source.positions, largest.source.indices, + largest.source.normals, largest.source.hasColors ? largest.source.colors : null); + voxelMesh = BuildMesh(root.name + "_Voxel", largest.voxel.positions, largest.voxel.indices); + status = $"Remesh: {nodes.Count} node(s), {sourceTriangles:N0} → {resultTriangles:N0} triangles." + + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); + } + + internal static List CollectHierarchyRenderers(GameObject root, bool lod0Only) + { + var excluded = new HashSet(); + foreach (var group in root.GetComponentsInChildren()) { + var lods = group.GetLODs(); + var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); + for (int l = 1; l < lods.Length; ++l) + foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); + } + var result = new List(); + foreach (var renderer in root.GetComponentsInChildren()) { + if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; + if (lod0Only && RemeshSource.IsHigherLodName(renderer.name)) continue; + if (renderer is SkinnedMeshRenderer || renderer.GetComponent()?.sharedMesh != null) result.Add(renderer); + } + return result; + } + + RemeshNode LargestNode() + { + RemeshNode best = null; + foreach (var node in nodes) + if (best == null || node.voxel.TriangleCount > best.voxel.TriangleCount) best = node; + return best; + } + async Task RunSimplify(RemeshSettings options, CancellationToken token) { - if (voxel == null) throw new InvalidOperationException("Run the remesh stage first."); + if (voxel == null && nodes == null) throw new InvalidOperationException("Run the remesh stage first."); + if (nodes != null) { + long before = 0, after = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report($"Simplifying {node.name} ({i + 1}/{nodes.Count})…"); + if (options.simplify) { + float error = 0; + node.simplified = await Task.Run(() => RemeshNative.Simplify(node.voxel, options, token, out error), token); + before += node.voxel.TriangleCount; after += node.simplified.TriangleCount; + } + else { node.simplified = node.voxel; before += node.voxel.TriangleCount; after += node.simplified.TriangleCount; } + } + simplifyError = options.simplify ? options.maximumError : 0; + var largest = LargestNode(); + simplifiedMesh = BuildMesh(resultName + "_Simplified", largest.simplified.positions, largest.simplified.indices); + status = $"Simplify: {nodes.Count} node(s), {before:N0} → {after:N0} triangles."; + return; + } var input = voxel; if (options.simplify) { Report("Simplifying…"); @@ -352,35 +468,84 @@ async Task RunSimplify(RemeshSettings options, CancellationToken token) async Task RunUnwrap(RemeshSettings options, CancellationToken token) { - if (simplified == null) throw new InvalidOperationException("Run the simplify stage first."); + if (simplified == null && nodes == null) throw new InvalidOperationException("Run the simplify stage first."); + if (nodes != null) { + int charts = 0, vertices = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report($"Generating normals and unwrapping UVs on {node.name} ({i + 1}/{nodes.Count})…"); + node.geometry = await Task.Run(() => RemeshNative.Unwrap(node.simplified, options, token), token); + node.mesh = BuildResultMesh(node.name + "_LOD0", node.geometry, out var nativeTangents, out _); + node.tangents = nativeTangents; + charts += node.geometry.chartCount; vertices += node.geometry.positions.Length; + } + // The result preview shows the largest node; resultMesh is a COPY so clearing + // the single-path outputs never destroys a node's own mesh. + var largest = LargestNode(); + resultMesh = Object.Instantiate(largest.mesh); + resultMesh.name = resultName + "_LOD0"; + tangents = null; + status = $"Unwrap: {nodes.Count} node(s), {charts:N0} islands, {vertices:N0} vertices."; + return; + } var input = simplified; Report("Generating normals and unwrapping UVs…"); var unwrapped = await Task.Run(() => RemeshNative.Unwrap(input, options, token)); token.ThrowIfCancellationRequested(); geometry = unwrapped; - resultMesh = new Mesh { name = resultName + "_LOD0", indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; - resultMesh.vertices = unwrapped.positions; resultMesh.normals = unwrapped.normals; - resultMesh.uv = unwrapped.uv; resultMesh.triangles = unwrapped.indices; - resultMesh.RecalculateBounds(); - // The tangent frame comes from meshoptimizer over the final UV layout - // (MikkT-compatible, the same basis the bake encodes against); Unity's - // recalculation is only a fallback if the native tangents are missing. - bool anyTangent = false; + resultMesh = BuildResultMesh(resultName + "_LOD0", unwrapped, out tangents, out _); + status = $"Unwrap: {unwrapped.chartCount:N0} islands, {unwrapped.positions.Length:N0} vertices."; + } + + // Builds a display/result Mesh from unwrapped geometry. The tangent frame comes from + // meshoptimizer over the final UV layout (MikkT-compatible, the same basis the bake + // encodes against); Unity's recalculation is only a fallback if the native tangents + // are missing. + static Mesh BuildResultMesh(string name, RemeshNative.Geometry unwrapped, out Vector4[] tangents, out bool anyTangent) + { + var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; + mesh.vertices = unwrapped.positions; mesh.normals = unwrapped.normals; + mesh.uv = unwrapped.uv; mesh.triangles = unwrapped.indices; + mesh.RecalculateBounds(); + anyTangent = false; if (unwrapped.tangents != null) for (int i = 0; i < unwrapped.tangents.Length && !anyTangent; ++i) anyTangent = unwrapped.tangents[i].sqrMagnitude > 1e-12f; - if (anyTangent) resultMesh.tangents = unwrapped.tangents; + if (anyTangent) mesh.tangents = unwrapped.tangents; else { - resultMesh.RecalculateTangents(); + mesh.RecalculateTangents(); UvtLog.Warn("[Remesh] Native tangents missing; fell back to Unity's recalculation. Rebuild the native plugins for this commit."); } - tangents = resultMesh.tangents; - status = $"Unwrap: {unwrapped.chartCount:N0} islands, {unwrapped.positions.Length:N0} vertices."; + tangents = mesh.tangents; + return mesh; } async Task RunBake(RemeshSettings options, CancellationToken token) { - if (geometry == null || snapshot == null) throw new InvalidOperationException("Run the UV stage first."); + if ((geometry == null || snapshot == null) && nodes == null) throw new InvalidOperationException("Run the UV stage first."); + if (nodes != null) { + long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report($"Projecting {node.name} into its UV atlas ({i + 1}/{nodes.Count})…"); + var baked = await Task.Run(() => RemeshBaker.Bake(node.source, node.geometry, node.tangents, options, token), token); + node.maps = baked; + if (baked.vertexColors != null) node.mesh.colors = baked.vertexColors; + sourceTriangles += node.source.indices.Length / 3; + targetTriangles += node.geometry.indices.Length / 3; + misses += baked.misses; covered += baked.covered; + } + var largest = LargestNode(); + preview = new Texture2D(largest.maps.size, largest.maps.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; + preview.SetPixels32(largest.maps.color); preview.Apply(); + maps = largest.maps; + status = $"{nodes.Count} node(s): {sourceTriangles:N0} → {targetTriangles:N0} triangles. " + + (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake."); + UvtLog.Info("[Remesh] " + status); + return; + } var captured = snapshot; var target = geometry; var frame = tangents; Report("Projecting source materials into the new UV atlas…"); var baked = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token)); @@ -462,6 +627,10 @@ void ClearFrom(Stage stage) if (voxelMesh) Object.DestroyImmediate(voxelMesh); if (sourceMesh) Object.DestroyImmediate(sourceMesh); voxelMesh = null; sourceMesh = null; voxel = null; snapshot = null; keys[(int)Stage.Remesh] = null; + if (nodes != null) { + foreach (var node in nodes) if (node.mesh) Object.DestroyImmediate(node.mesh); + nodes = null; + } } } @@ -511,6 +680,14 @@ void Save() if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create " + folder + "."); createdFolder = true; folder = AssetDatabase.GUIDToAssetPath(guid); + // Keep-hierarchy results export through their own per-node path: one baked + // material + mesh asset per node under a rebuilt root prefab. The FBX lane + // stays single-mesh (the weld) — a multi-node FBX round-trip would re-import + // per-node normals/mappings for no gain over the native prefab. + if (settings.keepHierarchy && nodes != null) { + SaveHierarchy(folder, clean, shader); + return; + } string[] names = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; var paths = new string[names.Length]; using (new AssetDatabase.AssetEditingScope()) { @@ -619,6 +796,90 @@ void Save() } } + // Keep-hierarchy export (settings.keepHierarchy): per-node baked map sets, materials + // and mesh assets under one root prefab that rebuilds the captured local transforms. + // The source root's own scale stays ON the prefab root (a hierarchy has no single + // vertex space to bake it into), so "Normalized size" does not apply here. + void SaveHierarchy(string folder, string clean, Shader shader) + { + var temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.None }; + bool urp = shader.name != "Standard"; + try { + if (settings.normalizeSize) + UvtLog.Warn("[Remesh export] Keep-hierarchy saves keep the source root's scale on the prefab root; " + + "'Normalized size' applies to the single-mesh weld only."); + temporary.transform.localScale = source ? source.transform.lossyScale : Vector3.one; + string[] mapNames = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; + var nodeNames = new string[nodes.Count]; + var used = new HashSet(StringComparer.OrdinalIgnoreCase); + for (int i = 0; i < nodes.Count; ++i) { + string nodeClean = nodes[i].name; + foreach (char c in Path.GetInvalidFileNameChars()) nodeClean = nodeClean.Replace(c, '_'); + nodeClean = nodeClean.Replace('/', '_').Replace('\\', '_'); + if (string.IsNullOrWhiteSpace(nodeClean)) nodeClean = "Node"; + var unique = nodeClean; + int suffix = 2; + while (!used.Add(unique)) unique = nodeClean + "_" + suffix++; + nodeNames[i] = unique; + } + using (new AssetDatabase.AssetEditingScope()) { + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + var paths = new string[mapNames.Length]; + for (int m = 0; m < mapNames.Length; ++m) { + paths[m] = folder + "/" + nodeNames[i] + "_" + mapNames[m] + (m == 4 ? ".exr" : ".png"); + File.WriteAllBytes(paths[m], EncodeMaps(node.maps, m)); + AssetDatabase.ImportAsset(paths[m]); + } + for (int m = 0; m < mapNames.Length; ++m) { + var importer = (TextureImporter)AssetImporter.GetAtPath(paths[m]); + if (importer == null) throw new IOException("Texture import failed: " + paths[m]); + importer.textureType = m == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; + importer.sRGBTexture = m == 0; importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = node.maps.size; importer.textureCompression = TextureImporterCompression.Uncompressed; + importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; + importer.SaveAndReimport(); + } + var material = new Material(shader) { name = nodeNames[i] + "_Remesh" }; + material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); + material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); + material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); + material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); + material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); + material.SetColor("_EmissionColor", Color.white); + material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); + material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); + material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); + material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + AssetDatabase.CreateAsset(material, folder + "/" + nodeNames[i] + ".mat"); + // The mesh asset is a COPY: the runtime node.mesh stays a preview + // object owned by the stage outputs (destroyed by ClearFrom). + var mesh = Object.Instantiate(node.mesh); + mesh.name = nodeNames[i] + "_LOD0"; mesh.hideFlags = HideFlags.None; + AssetDatabase.CreateAsset(mesh, folder + "/" + nodeNames[i] + "_LOD0.asset"); + var go = new GameObject(nodeNames[i]); + go.AddComponent().sharedMesh = mesh; + go.AddComponent().sharedMaterial = material; + go.transform.localPosition = node.localPosition; + go.transform.localRotation = node.localRotation; + go.transform.localScale = node.localScale; + go.transform.SetParent(temporary.transform, false); + } + } + PrefabUtility.SaveAsPrefabAsset(temporary, folder + "/" + clean + ".prefab", out bool success); + if (!success) throw new IOException("Prefab save failed."); + AssetDatabase.SaveAssets(); + status = $"Saved: {folder} ({nodes.Count} node(s))"; + UvtLog.Info("[Remesh export] " + status); + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folder + "/" + clean + ".prefab")); + } + finally { + Object.DestroyImmediate(temporary); + } + } + // "/remesh" when the source root resolves to an imported // asset (a prefab/model instance, or any mesh asset under it); null when the // source is scene-only and the folder picker is needed instead. @@ -674,13 +935,15 @@ static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) } } - byte[] Encode(int index) + byte[] Encode(int index) => EncodeMaps(maps, index); + + byte[] EncodeMaps(RemeshBaker.Maps source, int index) { - var texture = new Texture2D(maps.size, maps.size, + var texture = new Texture2D(source.size, source.size, index == 4 ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); try { - if (index == 4) { texture.SetPixels(maps.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } - texture.SetPixels32(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao); + if (index == 4) { texture.SetPixels(source.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } + texture.SetPixels32(index == 0 ? source.color : index == 1 ? source.normal : index == 2 ? source.metal : source.ao); texture.Apply(); return texture.EncodeToPNG(); } finally { Object.DestroyImmediate(texture); } diff --git a/Tests/Editor/RemeshHierarchyTests.cs b/Tests/Editor/RemeshHierarchyTests.cs new file mode 100644 index 00000000..2f5fd8b7 --- /dev/null +++ b/Tests/Editor/RemeshHierarchyTests.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests.Editor +{ + ///

Keep-hierarchy remesh: the per-node capture scope (RemeshBakeTool's renderer + /// collection) and the settings plumbing. Native remeshing itself is covered by the + /// Native~ ctest battery and the DllNotFoundException-skipping stage tests. + public sealed class RemeshHierarchyTests + { + static Mesh TriangleMesh() + { + var mesh = new Mesh { name = "TestTriangle" }; + mesh.vertices = new[] { Vector3.zero, Vector3.right, Vector3.up }; + mesh.triangles = new[] { 0, 1, 2 }; + mesh.RecalculateNormals(); + return mesh; + } + + [Test] + public void CollectHierarchyRenderers_FollowsTheWeldCaptureFilters() + { + var mesh = TriangleMesh(); + var root = new GameObject("Root"); + try { + var body = new GameObject("Body"); + body.transform.SetParent(root.transform); + body.AddComponent().sharedMesh = mesh; + body.AddComponent(); + + var lod1 = new GameObject("Body_LOD1"); + lod1.transform.SetParent(root.transform); + lod1.AddComponent().sharedMesh = mesh; + lod1.AddComponent(); + + var collision = new GameObject("Body_COL"); + collision.transform.SetParent(root.transform); + collision.AddComponent().sharedMesh = mesh; + collision.AddComponent(); + + var inactive = new GameObject("Dark"); + inactive.transform.SetParent(root.transform); + inactive.AddComponent().sharedMesh = mesh; + var hidden = inactive.AddComponent(); + hidden.enabled = false; + + var collected = RemeshBakeTool.CollectHierarchyRenderers(root, lod0Only: true); + Assert.AreEqual(1, collected.Count, "only the enabled LOD0 non-collision renderer is a node"); + Assert.AreEqual(body.transform, collected[0].transform); + + var withLods = RemeshBakeTool.CollectHierarchyRenderers(root, lod0Only: false); + Assert.AreEqual(2, withLods.Count, "lod0Only=false still excludes the collision node and the disabled renderer"); + } + finally { Object.DestroyImmediate(root); Object.DestroyImmediate(mesh); } + } + + [Test] + public void KeepHierarchy_SurvivesTheSettingsRoundTrip() + { + var settings = new RemeshSettings { keepHierarchy = true, voxelResolution = 64 }; + var restored = JsonUtility.FromJson(JsonUtility.ToJson(settings)); + Assert.IsTrue(restored.keepHierarchy, "keepHierarchy persists through the EditorPrefs JSON"); + Assert.AreEqual(64, restored.voxelResolution); + Assert.IsFalse(new RemeshSettings().keepHierarchy, "the weld remains the default"); + } + } +} diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..fcaa1072de1a7d62e703b1692a0fff8db1808765 GIT binary patch literal 2169122 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%0DhOtfMLKvIfBgP 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�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%0ACsO4y!dL@PHHh}VYB2pea#zp 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

V6`CpbW-6XH(b#a8w0a2JmMRIkuSYR`bwSo_= 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

l<>&` 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®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 Pcx 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 s_ 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

vmx5Tr)SVp%q26`ajs50unFU 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

L_=<@6hxm9sMi@!{dGCrI8 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 -R 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 literal 0 HcmV?d00001 From a98dec3b80af7c04267f795c615fcef6cb363de3 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 09:52:46 +0200 Subject: [PATCH 041/130] feat(remesh): front-face projection filter and a cage preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bake raycast took the closest intersection with no facing test, and the ray travels twice the projection distance through the target, so on thin geometry it pierced the wall and baked the far side's texture as periodic mirrored patches. Rays (and the nearest fallback) now only accept source triangles facing them; the orientation comes from a consensus probe of the source winding against the target's cage normals, and the filter stays off without a clear majority so mixed-winding sources behave exactly as before. The 3D preview gains a Cage toggle drawing the projection limits: the result mesh inflated by plus/minus the ray travel along the same welded cage normals the bake follows — orange outer shell where rays start, blue inner shell where they end — recomputed live from the current projection distance. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 16 ++++++-- Editor/RemeshBaker.cs | 41 ++++++++++++++++--- Editor/RemeshPreview.cs | 67 +++++++++++++++++++++++++++---- Editor/Tools/RemeshBakeTool.cs | 5 ++- Editor/TriangleBvh.cs | 44 ++++++++++++++++++++ 6 files changed, 158 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 894e9e50..8ac60142 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. - **Skinned captures bake the pose the scene shows.** `BakeMesh` uses the last evaluated skinning, which in edit mode can predate the current bone transforms — every skinned part then baked at its authored origin instead of its posed place. The bone list is reassigned before baking to mark the skinning dirty and force a re-evaluation. - **Remesh & Bake: split-normal regeneration is scale-free and self-heals against the native normals.** The post-UV rebuild gated each vertex's accumulation behind an absolute floor (`sqrMagnitude > 1e-30`), which misclassifies valid smooth vertices on real ~5 mm captures (raw face crosses sit near 1e-7) and leaves their normals zero — every mode then baked through zeroed ray directions (tilt saturation, near-total projection fallbacks). The gate is now relative to the strongest accumulation on the mesh, and any vertex that still degenerates restores the parsed native meshopt normal (same crease splits, smooth across chart borders — a soft edge beats a dead one) with a warning naming the count. The native test suite gains a dense 5 mm sphere through the island-mode path (crease = π) pinning unit normals, normalized UVs and unit tangents at capture scale. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 5f97c09d..ff485943 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -92,11 +92,21 @@ settings, marked "settings changed" in its header) and clears everything after i baking artifact bands around every island. The tangent-space normal map is still encoded against the vertex normal the result mesh shades with, so hard island borders keep their crisp silhouette while the interior stays clean. + Rays only accept source triangles facing them (front-face filter): a plain + closest-hit ray travels twice the projection distance through the target and + pierces thin walls, sampling the far side's texture as periodic mirrored + patches; the filter's orientation is set by a consensus probe, and it stays + off when the probe has no clear majority. The 3D preview's **Cage** toggle + draws the projection limits — the result mesh inflated by ±the ray travel + along the same welded cage normals, orange for the outer (ray origin) shell, + blue for the inner (ray end) shell — live from the current projection + distance, so the setting can be tuned before re-baking. With the **RemeshDiag** log filter enabled, every bake also prints its health counters to the Console: welded cage positions and split copies, one-sided - border normals (max cage deviation), nearest-fallback projection samples and - the normal map's tilt statistics (mean/max angle from flat, texels >45°); a - map dominated by extreme tilts additionally raises a warning. + border normals (max cage deviation), nearest-fallback projection samples, + front-face filter state and the normal map's tilt statistics (mean/max angle + from flat, texels >45°); a map dominated by extreme tilts additionally raises + a warning. 6. **Save**. The output lands in a `remesh` subfolder next to the source model's asset (its FBX/prefab, or any mesh asset under it), created if missing; scene-only sources fall back to a folder picker. A unique output folder diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 1d0293ec..271c28dc 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -16,6 +16,7 @@ internal sealed class Maps // Bake health counters surfaced through the RemeshDiag log category. public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels, zeroNormals; public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; + public bool facingFilter; } // Thread-safe: no UnityEngine.Object access in this method or the BVH. @@ -41,6 +42,30 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // artifact bands around every island. The tangent frame stays the vertex // normal the result mesh shades with, so encode and decode still match. var cage = BuildCageNormals(target, result); + // Front-face filter for the projection rays: a plain closest-hit raycast + // travels 2×distance THROUGH the target and can pierce a thin wall, sampling + // the far side's texture (periodic mirrored/garbled patches). The filter only + // accepts source triangles whose normal faces the ray origin. Source winding + // is not guaranteed to agree with the target's, so a consensus probe orients + // the normals first; without a clear majority (≥70% of ≥8 samples) the filter + // stays off and the bake behaves exactly as before. + int faces = source.indices.Length / 3; + var faceNormals = new Vector3[faces]; + for (int f = 0; f < faces; ++f) { + int a = source.indices[f * 3], b = source.indices[f * 3 + 1], c = source.indices[f * 3 + 2]; + faceNormals[f] = Vector3.Cross(source.positions[b] - source.positions[a], source.positions[c] - source.positions[a]).normalized; + } + int agree = 0, conflict = 0, stride = Math.Max(1, target.positions.Length / 128); + for (int i = 0; i < target.positions.Length; i += stride) { + var nearest = bvh.FindNearest(target.positions[i]); + if (nearest.triangleIndex < 0) continue; + if (Vector3.Dot(faceNormals[nearest.triangleIndex], cage[i]) >= 0f) ++agree; else ++conflict; + } + bool facingFilter = agree + conflict >= 8 && Math.Max(agree, conflict) * 10 >= (agree + conflict) * 7; + if (facingFilter && conflict > agree) + for (int f = 0; f < faces; ++f) faceNormals[f] = -faceNormals[f]; + result.facingFilter = facingFilter; + Vector3[] facing = facingFilter ? faceNormals : null; int misses = 0, rayFallbacks = 0; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { @@ -68,7 +93,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, cage, bvh, face, w, distance, + if (!Project(source, target, tangents, cage, bvh, facing, face, w, distance, out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; if (rayFallback) Interlocked.Increment(ref rayFallbacks); color += sc.linear; metal += sm; ao += sa; emission += se; @@ -167,8 +192,10 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // material there. False when neither the ray nor the bounded nearest query hits. // The ray direction comes from the welded cage normal; the tangent frame keeps // the (possibly hard) vertex normal so encode matches how the mesh shades. + // facing (when non-null) carries the orientation-consensus source face normals + // that keep the ray and the fallback on the side of the surface facing the texel. static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, - TriangleBvh bvh, int face, Vector3 w, float distance, + TriangleBvh bvh, Vector3[] facing, int face, Vector3 w, float distance, out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; @@ -176,12 +203,16 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; - var hit = bvh.Raycast(p + rayN * distance, -rayN, distance * 2); + var hit = facing != null + ? bvh.RaycastFacingFiltered(p + rayN * distance, -rayN, distance * 2, facing) + : bvh.Raycast(p + rayN * distance, -rayN, distance * 2); int sourceFace = hit.triangleIndex; Vector3 sw = hit.barycentric; rayFallback = false; if (sourceFace < 0) { - var nearest = bvh.FindNearest(p, distance); + var nearest = facing != null + ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f) + : bvh.FindNearest(p, distance); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; rayFallback = true; } @@ -198,7 +229,7 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] // each copy's own normal is one-sided there, so rays cast along it land on a // displaced source point. Welding by exact position — xatlas copies bit-identical // coordinates — averages both sides back into a smooth cage direction. - static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) + internal static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) { var slots = new int[target.positions.Length]; var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(target.positions.Length); diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index fb03e1d7..4c2870fa 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -23,6 +23,10 @@ internal sealed class Data public RemeshNative.Geometry geometry; public RemeshBaker.Maps maps; public Texture2D baseColor; + // Ray travel of the bake projection (source diagonal × projection distance); + // the Cage toggle draws the result mesh inflated by ±this along the cage + // normals, i.e. the exact shells the projection rays start and end on. + public float cageDistance; } static readonly string[] ViewNames = { "3D", "UV", "Maps" }; @@ -30,12 +34,13 @@ internal sealed class Data View view; Stage stage = Stage.Result; Channel channel; - bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, uvTexture = true, uvTint = true; + bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, uvTexture = true, uvTint = true; Vector2 orbit = new Vector2(-135, 20); float zoom = 1; PreviewRenderUtility utility; Material surface, wire, lines; readonly Dictionary wireCache = new Dictionary(); + Mesh cageOuter, cageInner; int cageMeshId; float cageDistanceCached = -1; RemeshBaker.Maps mapSource; readonly Texture2D[] mapTextures = new Texture2D[5]; @@ -57,6 +62,9 @@ public void Invalidate() { foreach (var mesh in wireCache.Values) if (mesh) Object.DestroyImmediate(mesh); wireCache.Clear(); + if (cageOuter) Object.DestroyImmediate(cageOuter); + if (cageInner) Object.DestroyImmediate(cageInner); + cageOuter = cageInner = null; cageMeshId = 0; cageDistanceCached = -1; foreach (var texture in mapTextures) if (texture) Object.DestroyImmediate(texture); Array.Clear(mapTextures, 0, mapTextures.Length); mapSource = null; @@ -81,7 +89,8 @@ void DrawMesh(Data data) shaded = GUILayout.Toggle(shaded, "Shaded", EditorStyles.miniButtonMid); textured = GUILayout.Toggle(textured, "Texture", EditorStyles.miniButtonMid); bumpMap = GUILayout.Toggle(bumpMap, "Bump", EditorStyles.miniButtonMid); - vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonRight); + vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonMid); + cageView = GUILayout.Toggle(cageView, "Cage", EditorStyles.miniButtonRight); } var mesh = data.meshes[(int)stage]; Rect rect = GUILayoutUtility.GetAspectRect(1); @@ -94,6 +103,8 @@ void DrawMesh(Data data) if (!mesh || !EnsureResources()) return; var bounds = mesh.bounds; + if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) + bounds.Expand(data.cageDistance * 2); float radius = Mathf.Max(bounds.extents.magnitude, 1e-4f); float distance = radius / Mathf.Sin(15 * Mathf.Deg2Rad) * zoom; var rotation = Quaternion.Euler(orbit.y, orbit.x, 0); @@ -122,6 +133,8 @@ void DrawMesh(Data data) wire.SetColor("_Color", shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); if (edges) utility.DrawMesh(edges, Matrix4x4.identity, wire, 0); } + if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) + DrawCage(mesh, data.geometry, data.cageDistance); utility.Render(); GUI.DrawTexture(rect, utility.EndPreview(), ScaleMode.StretchToFill, false); } @@ -169,6 +182,17 @@ Mesh Wire(Mesh mesh) { int key = mesh.GetInstanceID(); if (wireCache.TryGetValue(key, out var cached) && cached) return cached; + var indices = EdgeIndices(mesh); + if (indices == null) return null; + var edges = new Mesh { name = mesh.name + "_Wire", hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + edges.vertices = mesh.vertices; + edges.SetIndices(indices, MeshTopology.Lines, 0); + wireCache[key] = edges; + return edges; + } + + static List EdgeIndices(Mesh mesh) + { var tris = mesh.triangles; if (tris.Length / 3 > 1000000) return null; var seen = new HashSet(); @@ -179,11 +203,40 @@ Mesh Wire(Mesh mesh) int a = tris[i + k], b = tris[i + (k + 1) % 3]; if (seen.Add(Math.Min(a, b) * stride + Math.Max(a, b))) { indices.Add(a); indices.Add(b); } } - var edges = new Mesh { name = mesh.name + "_Wire", hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; - edges.vertices = mesh.vertices; - edges.SetIndices(indices, MeshTopology.Lines, 0); - wireCache[key] = edges; - return edges; + return indices; + } + + // The projection cage, drawn as its two limit shells: the result mesh inflated + // by ±cageDistance along the same welded cage normals the bake rays follow + // (outer = ray origins, inner = ray ends). Rebuilt when the mesh or the + // distance changes; turn the surface Wire off to read a shell alone. + void DrawCage(Mesh mesh, RemeshNative.Geometry geometry, float distance) + { + int id = mesh.GetInstanceID(); + if (id != cageMeshId || Mathf.Abs(distance - cageDistanceCached) > 1e-6f) { + if (cageOuter) Object.DestroyImmediate(cageOuter); + if (cageInner) Object.DestroyImmediate(cageInner); + var cageNormals = RemeshBaker.BuildCageNormals(geometry, null); + var indices = EdgeIndices(mesh); + cageOuter = indices != null ? CageShell(mesh, geometry, cageNormals, distance, "Outer") : null; + cageInner = indices != null ? CageShell(mesh, geometry, cageNormals, -distance, "Inner") : null; + cageMeshId = id; cageDistanceCached = distance; + } + wire.SetColor("_Color", new Color(1f, 0.55f, 0.15f, 0.9f)); + if (cageOuter) utility.DrawMesh(cageOuter, Matrix4x4.identity, wire, 0); + wire.SetColor("_Color", new Color(0.35f, 0.6f, 1f, 0.45f)); + if (cageInner) utility.DrawMesh(cageInner, Matrix4x4.identity, wire, 0); + } + + static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix) + { + var vertices = new Vector3[geometry.positions.Length]; + for (int i = 0; i < vertices.Length; ++i) + vertices[i] = geometry.positions[i] + cageNormals[i] * distance; + var shell = new Mesh { name = mesh.name + "_Cage" + suffix, hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + shell.vertices = vertices; + shell.SetIndices(EdgeIndices(mesh), MeshTopology.Lines, 0); + return shell; } static long Triangles(Mesh mesh) diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 92589494..ce449c95 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -136,6 +136,9 @@ public void OnDrawRightSidebar() previewData.meshes[(int)RemeshPreview.Stage.Simplified] = simplifiedMesh; previewData.meshes[(int)RemeshPreview.Stage.Result] = resultMesh; previewData.geometry = geometry; previewData.maps = maps; previewData.baseColor = preview; + // Live from the current settings so the cage preview reflects projection + // distance changes before a re-bake; zero until a source snapshot exists. + previewData.cageDistance = snapshot != null ? snapshot.diagonal * settings.projectionDistance : 0; previews.Draw(previewData); } @@ -572,7 +575,7 @@ async Task RunBake(RemeshSettings options, CancellationToken token) UvtLog.Info(UvtLog.Category.RemeshDiag, $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°, {baked.zeroNormals:N0} zero normals; " + - $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels; " + + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}; " + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); if (baked.zeroNormals > 0) diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index 04a35013..b3acdc23 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -95,6 +95,20 @@ public RayHit Raycast(Vector3 origin, Vector3 direction, float maxDist) return best; } + /// + /// Closest intersection with a triangle whose face normal OPPOSES the ray + /// direction (the surfaces the ray can "see"): dot(faceNormal, direction) <= 0. + /// Bake-style projection through thin geometry needs this — an unfiltered ray + /// pierces the wall and samples the far side's texture. + /// faceNormals is indexed by local face index (same as returned triangleIndex). + /// + public RayHit RaycastFacingFiltered(Vector3 origin, Vector3 direction, float maxDist, Vector3[] faceNormals) + { + var best = new RayHit { triangleIndex = -1, t = maxDist }; + RaycastFacingRecursive(0, origin, direction, faceNormals, ref best); + return best; + } + /// /// Ray-along-normal projection: shoots ray in both directions (+normal, -normal). /// Always prefers forward hit (along normal = same side of thin geometry). @@ -321,6 +335,36 @@ void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) RaycastRecursive(node.right, origin, dir, ref best); } + void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] fNrm, ref RayHit best) + { + ref Node node = ref nodes[nodeIdx]; + + if (!RayIntersectsAabb(origin, dir, node.bMin, node.bMax, best.t)) + return; + + if (node.left == -1) + { + for (int i = node.triStart; i < node.triStart + node.triCount; i++) + { + int f = triIndices[i]; + if (Vector3.Dot(fNrm[f], dir) > 0f) continue; // facing away from the ray origin + int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; + if (RayTriangleIntersect(origin, dir, verts[i0], verts[i1], verts[i2], + out float t, out float u, out float v) + && t >= 0f && t < best.t) + { + best.t = t; + best.triangleIndex = f; + best.barycentric = new Vector3(1f - u - v, u, v); + } + } + return; + } + + RaycastFacingRecursive(node.left, origin, dir, fNrm, ref best); + RaycastFacingRecursive(node.right, origin, dir, fNrm, ref best); + } + // ─── Geometry helpers ─── static float AabbDistSq(Vector3 bMin, Vector3 bMax, Vector3 p) From e99574f5ae181ffe8f451b26ce4e6cb858b5d1b4 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 10:34:47 +0200 Subject: [PATCH 042/130] =?UTF-8?q?feat(remesh):=20beauty=20bake=20mode=20?= =?UTF-8?q?=E2=80=94=20one=20lit=20texture=20as=20the=20player=20sees=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A new bake mode folds the scene's lighting into the BaseColor map and saves an Unlit/Texture material with that single texture. Realtime and mixed direct light is evaluated per texel with hard shadow rays through the source BVH; baked lightmaps are captured per face at the renderer's UV2 and scale/offset (RGBM or HDR decoded at readback) and become the base for lightmapped faces, which already contain albedo times GI times baked emission — so baked-only lights, ambient and material emission are not counted twice on them. Ambient covers flat, trilight and the ambient probe (evaluated by Unity into a direction grid the workers interpolate); reflection probes are read back as equirectangles and feed a simplified Standard-Fresnel specular baked for the scene view camera's position. Unlightmapped faces get albedo times direct plus ambient plus emission. Beauty results preview unlit, matching the saved material, and the mode works in both the weld and keep-hierarchy lanes. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 13 + Editor/RemeshBaker.cs | 37 ++- Editor/RemeshBeauty.cs | 360 +++++++++++++++++++++++ Editor/RemeshBeauty.cs.meta | 11 + Editor/RemeshPreview.cs | 3 + Editor/RemeshSettings.cs | 14 + Editor/RemeshSource.cs | 29 +- Editor/Tools/RemeshBakeTool.cs | 90 ++++-- Shaders/RemeshBeautyEquirect.shader | 27 ++ Shaders/RemeshBeautyEquirect.shader.meta | 7 + 11 files changed, 558 insertions(+), 34 deletions(-) create mode 100644 Editor/RemeshBeauty.cs create mode 100644 Editor/RemeshBeauty.cs.meta create mode 100644 Shaders/RemeshBeautyEquirect.shader create mode 100644 Shaders/RemeshBeautyEquirect.shader.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ac60142..95986a3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. - **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. - **Remesh & Bake: normalized saves and a `remesh` output folder next to the source.** *Normalize size (saved at scale 1)* (default on) bakes the source root's world scale into the saved geometry, so the model keeps its real size with an identity transform regardless of how the source is scaled — positions scale component-wise, normals and tangents take the inverse (inverse-transpose of a diagonal matrix) and renormalize, and a mirroring determinant flips the triangle winding. Off keeps root-local geometry and carries the scale on the saved transform instead (the previous behavior). Saves also no longer ask for a folder when the source resolves to an imported asset: output goes to a `remesh` subfolder next to the source's FBX/prefab/mesh (created if missing), with the folder picker remaining only for scene-only sources. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index ff485943..57dc3979 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -101,6 +101,19 @@ settings, marked "settings changed" in its header) and clears everything after i along the same welded cage normals, orange for the outer (ray origin) shell, blue for the inner (ray end) shell — live from the current projection distance, so the setting can be tuned before re-baking. + **Bake mode** selects what lands in the maps: *Materials* transfers the source + maps; *Beauty* bakes the object as the player sees it — realtime/mixed light + with hard ray shadows, the renderer's lightmaps (sampled at its UV2, RGBM/HDR + decoded), ambient (flat, trilight or the ambient probe) and reflection probes + (equirectangular readbacks, roughness-lerped) all folded into one lit + **BaseColor** texture. Baked-only lights are skipped for lightmapped faces, so + nothing is counted twice; unlightmapped faces get albedo × (direct + ambient) + + emission, lightmapped faces use the lightmap as the base (it already contains + albedo × GI × baked emission) with realtime direct on top. Specular is + view-dependent and is baked for the scene view camera's position at bake time. + The saved material becomes **Unlit/Texture** with that one map (the other maps + still export alongside); the 3D preview renders beauty results unlit, exactly + like the saved material. With the **RemeshDiag** log filter enabled, every bake also prints its health counters to the Console: welded cage positions and split copies, one-sided border normals (max cage deviation), nearest-fallback projection samples, diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 271c28dc..fa2c7c8e 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -17,11 +17,13 @@ internal sealed class Maps public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels, zeroNormals; public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; public bool facingFilter; + public bool beauty; } // Thread-safe: no UnityEngine.Object access in this method or the BVH. + // beauty (optional) folds the scene lighting into the transferred albedo. public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, - RemeshSettings settings, CancellationToken token) + RemeshSettings settings, CancellationToken token, RemeshBeauty beauty = null) { int size = settings.textureResolution; int count = checked(size * size); @@ -35,6 +37,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto if (result.covered == 0) throw new InvalidOperationException("UV atlas covers no texels. Increase texture resolution."); var bvh = new TriangleBvh(source.positions, source.indices); token.ThrowIfCancellationRequested(); + result.beauty = beauty != null; + if (beauty != null) beauty.BindShadows(bvh); float distance = source.diagonal * settings.projectionDistance; // Projection rays follow a smooth welded "cage" direction, not the vertex // normal: island hard-edge modes leave chart-border normals one-sided, @@ -93,7 +97,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, cage, bvh, facing, face, w, distance, + if (!Project(source, target, tangents, cage, bvh, facing, beauty, face, w, distance, out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; if (rayFallback) Interlocked.Increment(ref rayFallbacks); color += sc.linear; metal += sm; ao += sa; emission += se; @@ -195,7 +199,7 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // facing (when non-null) carries the orientation-consensus source face normals // that keep the ray and the fallback on the side of the surface facing the texel. static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, - TriangleBvh bvh, Vector3[] facing, int face, Vector3 w, float distance, + TriangleBvh bvh, Vector3[] facing, RemeshBeauty beauty, int face, Vector3 w, float distance, out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; @@ -221,9 +225,36 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] return false; } Evaluate(source, sourceFace, sw, n, tangent, out color, out normal, out metal, out ao, out emission); + if (beauty != null) color = BeautyLight(beauty, source, sourceFace, sw, color, metal, emission).gamma; return true; } + // Folds the captured scene lighting into the transferred albedo (all linear). + // A lightmapped face uses its lightmap as the base — the lightmap already holds + // albedo × GI × baked lights × baked emission, so ambient and material emission + // are not added again; only realtime/mixed direct light and the probe specular + // ride on top. Unlightmapped faces get albedo × (direct + ambient) + emission. + static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vector3 w, + Color albedo, Color metal, Color emission) + { + int a = source.indices[face * 3], b = source.indices[face * 3 + 1], c = source.indices[face * 3 + 2]; + Vector3 p = source.positions[a] * w.x + source.positions[b] * w.y + source.positions[c] * w.z; + Vector3 n = (source.normals[a] * w.x + source.normals[b] * w.y + source.normals[c] * w.z).normalized; + Color albedoLinear = albedo.linear; + int lightmapId = source.faceLightmaps != null && face < source.faceLightmaps.Length ? source.faceLightmaps[face] : -1; + Color lit; + if (lightmapId >= 0 && source.lightmaps != null && lightmapId < source.lightmaps.Length) { + Vector2 uv2 = source.uv2[a] * w.x + source.uv2[b] * w.y + source.uv2[c] * w.z; + lit = beauty.SampleLightmap(source.lightmaps[lightmapId], uv2); + lit += albedoLinear * beauty.Direct(p, n); + } + else { + lit = albedoLinear * (beauty.Direct(p, n) + beauty.Ambient(n)) + emission; + } + lit += beauty.Specular(p, n, albedoLinear, metal.r, metal.a); + return lit; + } + // Per-vertex raycast directions from area-weighted face normals welded across // coincident vertices: UV chart borders (and crease edges) split vertices, and // each copy's own normal is one-sided there, so rays cast along it land on a diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs new file mode 100644 index 00000000..4345fbe3 --- /dev/null +++ b/Editor/RemeshBeauty.cs @@ -0,0 +1,360 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Scene lighting captured on the main thread at bake start and sampled from the + /// bake workers: realtime/mixed direct light (shadowed by rays through the source + /// BVH), baked lightmaps (decoded to linear at readback — RGBM on desktop, direct + /// HDR), the ambient probe (evaluated by Unity itself into a direction grid the + /// workers interpolate) and reflection probes (equirectangular readbacks). + /// Everything is pre-transformed into the source root's local space so workers + /// stay in the capture's coordinate system. Baked-only lights are skipped — their + /// contribution already lives in the lightmap, so nothing is counted twice. + /// + internal sealed class RemeshBeauty + { + internal sealed class Lightmap + { + public Color[] pixels; // linear, decoded + public int width, height; + public Vector4 st; // renderer.lightmapScaleOffset: uv2 * xy + zw + } + + internal sealed class Probe + { + public Color[] pixels; // linear equirect: u = atan2(z,x)/2π, v = acos(y)/π + public int width, height; + public Bounds bounds; // world space + public bool bounded; + public float importance; + public Color average; + } + + struct Directional { public Vector3 dir; public Color color; public float shadowStrength; } + struct Local + { + public Vector3 pos, axis; // spot axis in local space (axis used when spot) + public Color color; + public float rangeSqr, range, innerCos, outerCos; + public bool spot; + } + + const int AmbientW = 32, AmbientH = 16; + + readonly Directional[] directionals = Array.Empty(); + readonly Local[] locals = Array.Empty(); + readonly Probe[] probes; + readonly Probe fallbackProbe; + readonly Color[] ambientGrid; // evaluated by Unity on the main thread + readonly bool flatAmbient, trilightAmbient; + readonly Color ambientFlat, ambientSky, ambientEquator, ambientGround; + readonly Vector3 viewPosition; // local space; specular is baked for this vantage + readonly Matrix4x4 localToWorld; + TriangleBvh bvh; // bound by the bake before workers run + float shadowEpsilon; + + /// Capture the lighting environment around root. Main thread only. + internal RemeshBeauty(GameObject root, float sourceDiagonal) + { + var rootTransform = root.transform; + Matrix4x4 worldToLocal = rootTransform.worldToLocalMatrix; + localToWorld = rootTransform.localToWorldMatrix; + + var dirList = new List(); + var locList = new List(); + foreach (var light in Object.FindObjectsByType(FindObjectsSortMode.None)) { + if (!light.enabled || !light.gameObject.activeInHierarchy) continue; + var bake = light.bakingOutput; + // Baked-only lights live in the lightmap; including them again would + // double-count. URP has no subtractive mode, so Mixed direct is realtime. + if (bake != null && bake.lightmapBakeType == LightmappingBakeType.Baked) continue; + Color color = light.color.linear * light.intensity; + if (light.type == LightType.Directional) { + dirList.Add(new Directional { + dir = worldToLocal.MultiplyVector(-(light.transform.rotation * Vector3.forward)).normalized, + color = color, + shadowStrength = light.shadows == LightShadows.None ? 0f : light.shadowStrength, + }); + } + else if (light.type == LightType.Point) { + locList.Add(new Local { pos = worldToLocal.MultiplyPoint3x4(light.transform.position), + color = color, rangeSqr = light.range * light.range, range = light.range }); + } + else if (light.type == LightType.Spot) { + float outer = light.spotAngle * 0.5f * Mathf.Deg2Rad; + float inner = Mathf.Min(light.innerSpotAngle * 0.5f * Mathf.Deg2Rad, outer - 1e-4f); + locList.Add(new Local { pos = worldToLocal.MultiplyPoint3x4(light.transform.position), + axis = worldToLocal.MultiplyVector(light.transform.forward).normalized, + color = color, rangeSqr = light.range * light.range, range = light.range, + innerCos = Mathf.Cos(inner), outerCos = Mathf.Cos(outer), spot = true }); + } + } + directionals = dirList.ToArray(); + locals = locList.ToArray(); + + if (RenderSettings.ambientMode == AmbientMode.Flat) { + flatAmbient = true; + ambientFlat = RenderSettings.ambientLight.linear; + ambientGrid = null; + } + else if (RenderSettings.ambientMode == AmbientMode.Trilight) { + trilightAmbient = true; + ambientSky = RenderSettings.ambientSkyColor.linear; + ambientEquator = RenderSettings.ambientEquatorColor.linear; + ambientGround = RenderSettings.ambientGroundColor.linear; + ambientGrid = null; + } + else { + // Unity evaluates its own SH (exact math, main thread); ambient is L2-low- + // frequency, so a 32×16 direction grid with worker-side bilinear lookup is + // visually exact without porting ShadeSH9's packed constants. + ambientGrid = new Color[AmbientW * AmbientH]; + var directions = new List(ambientGrid.Length); + for (int y = 0; y < AmbientH; ++y) + for (int x = 0; x < AmbientW; ++x) { + float phi = (x + 0.5f) / AmbientW * 2f * Mathf.PI; + float theta = (y + 0.5f) / AmbientH * Mathf.PI; + directions.Add(new Vector3( + Mathf.Sin(theta) * Mathf.Cos(phi), Mathf.Cos(theta), Mathf.Sin(theta) * Mathf.Sin(phi))); + } + var results = new List(ambientGrid.Length); + for (int i = 0; i < ambientGrid.Length; ++i) results.Add(Color.black); + RenderSettings.ambientProbe.Evaluate(directions, results); + results.CopyTo(ambientGrid); + } + + var probeList = new List(); + foreach (var rp in Object.FindObjectsByType(FindObjectsSortMode.None)) { + if (!rp.enabled || !rp.gameObject.activeInHierarchy) continue; + var texture = rp.customBakedTexture ? rp.customBakedTexture : rp.bakedTexture; + if (texture == null) continue; + var read = ReadEquirect(texture, out int w, out int h); + if (read == null) continue; + probeList.Add(new Probe { pixels = read, width = w, height = h, + bounds = rp.bounds, bounded = true, importance = rp.importance, average = Average(read) }); + } + probes = probeList.ToArray(); + fallbackProbe = null; + if (RenderSettings.defaultReflection != null) { + var read = ReadEquirect(RenderSettings.defaultReflection, out int w2, out int h2); + if (read != null) + fallbackProbe = new Probe { pixels = read, width = w2, height = h2, average = Average(read) }; + } + + // Specular is view-dependent; bake it for the scene view camera's vantage + // when one is open, else a three-quarter view of the object. + var sceneCamera = SceneView.lastActiveSceneView != null ? SceneView.lastActiveSceneView.camera : null; + Bounds world = ComputeWorldBounds(root); + Vector3 viewWorld = sceneCamera != null + ? sceneCamera.transform.position + : world.center + new Vector3(0.55f, 0.45f, -0.7f).normalized * (world.extents.magnitude * 2.5f + 1f); + viewPosition = worldToLocal.MultiplyPoint3x4(viewWorld); + shadowEpsilon = Mathf.Max(sourceDiagonal * 2e-3f, 1e-5f); + } + + /// The bake's source BVH, used for direct-light shadow rays. + internal void BindShadows(TriangleBvh sourceBvh) => bvh = sourceBvh; + + /// Direct realtime/mixed light at a source point (local space). Thread-safe. + internal Color Direct(Vector3 p, Vector3 n) + { + var sum = Color.black; + for (int i = 0; i < directionals.Length; ++i) { + var d = directionals[i]; + float ndl = Vector3.Dot(n, d.dir); + if (ndl <= 0f) continue; + float shadow = Shadow(p + n * shadowEpsilon, d.dir, float.MaxValue); + if (shadow * d.shadowStrength >= 1f) continue; + sum += d.color * (ndl * (1f - shadow * d.shadowStrength)); + } + for (int i = 0; i < locals.Length; ++i) { + var l = locals[i]; + Vector3 toLight = l.pos - p; + float distSq = toLight.sqrMagnitude; + if (distSq > l.rangeSqr || distSq < 1e-10f) continue; + float dist = Mathf.Sqrt(distSq); + Vector3 dir = toLight / dist; + float weight = Vector3.Dot(n, dir); + if (weight <= 0f) continue; + if (l.spot) { + float axis = -Vector3.Dot(dir, l.axis); // receiver looks along -axis toward the spot + if (axis <= l.outerCos) continue; + weight *= Mathf.SmoothStep(l.outerCos, l.innerCos, axis); + } + // URP physical falloff: inverse square, smoothly clamped at range. + float q = dist / l.range; + float window = Mathf.Max(0f, 1f - q * q * q * q); + float attenuation = window * window / Mathf.Max(distSq, 1e-6f); + float shadow = Shadow(p + n * shadowEpsilon, dir, dist); + sum += l.color * (weight * attenuation * (1f - shadow)); + } + return sum; + } + + /// Ambient irradiance for a surface direction (local space). Thread-safe. + internal Color Ambient(Vector3 n) + { + if (flatAmbient) return ambientFlat; + if (trilightAmbient) { + float up = n.y * 0.5f + 0.5f; + return up < 0.5f + ? Color.Lerp(ambientGround, ambientEquator, up * 2f) + : Color.Lerp(ambientEquator, ambientSky, (up - 0.5f) * 2f); + } + return SampleBilinear(ambientGrid, AmbientW, AmbientH, EquirectUV(localToWorld.MultiplyVector(n))); + } + + /// Probe reflection seen from a source point: V points from the surface + /// toward the viewer. A simplified Standard Fresnel scales the probe colour. + internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, float smoothness) + { + Probe probe = PickProbe(localToWorld.MultiplyPoint3x4(p)); + if (probe == null) return Color.black; + Vector3 v = viewPosition - p; + if (v.sqrMagnitude < 1e-10f) return Color.black; + v.Normalize(); + Vector3 worldR = localToWorld.MultiplyVector(Vector3.Reflect(-v, n)).normalized; + Color sample = SampleBilinear(probe.pixels, probe.width, probe.height, EquirectUV(worldR)); + float roughness = Mathf.Clamp01(1f - smoothness); + Color color = Color.Lerp(sample, probe.average, roughness * 0.85f); + float ndv = Mathf.Clamp01(Vector3.Dot(n, v)); + Vector3 f0 = Vector3.Lerp(new Vector3(0.04f, 0.04f, 0.04f), + new Vector3(albedo.r, albedo.g, albedo.b), metallic); + Vector3 fresnel = f0 + (Vector3.one - f0) * Mathf.Pow(1f - ndv, 5f); + float energy = 0.25f + 0.75f * smoothness; + return new Color(color.r * fresnel.x * energy, color.g * fresnel.y * energy, color.b * fresnel.z * energy, 0f); + } + + internal Color SampleLightmap(Lightmap map, Vector2 uv2) + { + Vector2 uv = new Vector2(uv2.x * map.st.x + map.st.z, uv2.y * map.st.y + map.st.w); + return SampleBilinear(map.pixels, map.width, map.height, uv); + } + + // ── plumbing ── + + float Shadow(Vector3 origin, Vector3 dir, float maxDist) + { + if (bvh == null) return 0f; + var hit = bvh.Raycast(origin, dir, maxDist); + return hit.triangleIndex >= 0 ? 1f : 0f; + } + + Probe PickProbe(Vector3 world) + { + Probe best = null; + for (int i = 0; i < probes.Length; ++i) { + var probe = probes[i]; + if (probe.bounded && !probe.bounds.Contains(world)) continue; + if (best == null || probe.importance > best.importance) best = probe; + } + return best ?? fallbackProbe; + } + + static Vector2 EquirectUV(Vector3 dir) + { + float u = Mathf.Atan2(dir.z, dir.x) / (2f * Mathf.PI); + if (u < 0f) u += 1f; + float v = Mathf.Acos(Mathf.Clamp(dir.y, -1f, 1f)) / Mathf.PI; + return new Vector2(u, v); + } + + static Color SampleBilinear(Color[] pixels, int width, int height, Vector2 uv) + { + if (pixels == null || pixels.Length == 0) return Color.black; + float x = uv.x * width - 0.5f, y = uv.y * height - 0.5f; + int ix = Mathf.FloorToInt(x), iy = Mathf.FloorToInt(y); + float fx = x - ix, fy = y - iy; + Color At(int xx, int yy) => pixels[Wrap(yy, height) * width + Wrap(xx, width)]; + Color Row(int yy) => Color.LerpUnclamped(At(ix, yy), At(ix + 1, yy), fx); + return Color.LerpUnclamped(Row(iy), Row(iy + 1), fy); + } + + static int Wrap(int v, int size) => v < 0 ? v + size : v >= size ? v - size : v; + + static Color Average(Color[] pixels) + { + var sum = new Color(); + for (int i = 0; i < pixels.Length; ++i) sum += pixels[i]; + return pixels.Length > 0 ? sum / pixels.Length : Color.black; + } + + static Bounds ComputeWorldBounds(GameObject root) + { + bool any = false; + var bounds = new Bounds(); + foreach (var renderer in root.GetComponentsInChildren()) { + if (!any) { bounds = renderer.bounds; any = true; } + else bounds.Encapsulate(renderer.bounds); + } + return any ? bounds : new Bounds(root.transform.position, Vector3.one); + } + + // Cubemap → equirect readback through Hidden/MeshLab/RemeshBeautyEquirect + // (directions in world axes, linear). + internal static Color[] ReadEquirect(Texture cube, out int width, out int height) + { + width = 256; height = 128; + var shader = Shader.Find("Hidden/MeshLab/RemeshBeautyEquirect"); + if (!shader || !cube) return null; + var material = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + var previous = RenderTexture.active; + var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); + Texture2D copy = null; + try { + Graphics.Blit(cube, rt, material); + RenderTexture.active = rt; + copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); + copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); + copy.Apply(); + return copy.GetPixels(); + } + catch (Exception) { return null; } + finally { + RenderTexture.active = previous; + RenderTexture.ReleaseTemporary(rt); + if (copy) Object.DestroyImmediate(copy); + Object.DestroyImmediate(material); + } + } + + // Lightmap readback for the source capture: plain blit into a float RT, then + // decode — desktop RGBA32 lightmaps are RGBM (rgb * a * 8), HDR encodings are + // direct. Mirrors Unity's decodeLightmap for the editor platforms. + internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) + { + int width = lightmap.width, height = lightmap.height; + bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.ARGBHalf + || lightmap.format == TextureFormat.RGBAHalf; + var previous = RenderTexture.active; + var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); + Texture2D copy = null; + try { + Graphics.Blit(lightmap, rt); + RenderTexture.active = rt; + copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); + copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); + copy.Apply(); + var pixels = copy.GetPixels(); + if (!hdr) + for (int i = 0; i < pixels.Length; ++i) { + var c = pixels[i]; + float scale = c.a * 8f; + pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); + } + return new Lightmap { pixels = pixels, width = width, height = height, st = st }; + } + finally { + RenderTexture.active = previous; + RenderTexture.ReleaseTemporary(rt); + if (copy) Object.DestroyImmediate(copy); + } + } + } +} diff --git a/Editor/RemeshBeauty.cs.meta b/Editor/RemeshBeauty.cs.meta new file mode 100644 index 00000000..ccb92a1c --- /dev/null +++ b/Editor/RemeshBeauty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a41c0d94f2b4e0f9d63a2c85be1d0f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 4c2870fa..2a1e0b5b 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -125,6 +125,9 @@ void DrawMesh(Data data) var bump = bumpMap && stage == Stage.Result && data.maps != null ? MapTexture(data.maps, Channel.Normal) : null; surface.SetTexture("_BumpMap", bump); surface.SetFloat("_UseBumpMap", bump ? 1 : 0); + // Beauty maps already contain the lighting; shading them again would + // double it, so the surface renders unlit exactly like the saved material. + surface.SetFloat("_Lit", stage == Stage.Result && data.maps != null && data.maps.beauty ? 0 : 1); surface.SetFloat("_UseVertexColor", vertexColors && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, Matrix4x4.identity, surface, sub); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 7b54c01b..f732b983 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -36,6 +36,17 @@ public enum RemeshNormalWeighting FaceAreaAndCornerAngle, } + /// What the bake writes into the maps. + public enum RemeshBakeMode + { + /// Transfer the source material maps (albedo, normal, metal, AO, emission). + Materials, + /// Bake the object as the player sees it: realtime/mixed light with ray + /// shadows, lightmaps, ambient and reflection probes folded into one lit BaseColor + /// texture; the saved material becomes Unlit/Texture. + Beauty, + } + [Serializable] public sealed class RemeshSettings { @@ -86,6 +97,9 @@ public sealed class RemeshSettings public int padding = 8; // 4 · Bake + // Materials transfers the source maps; Beauty additionally folds the scene's + // lighting into one BaseColor texture and the saved material becomes Unlit. + public RemeshBakeMode bakeMode = RemeshBakeMode.Materials; public float projectionDistance = 0.02f; // fraction of source bounds diagonal public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 public bool transferVertexColor; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index b44b0244..4c7e58ed 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -12,9 +12,12 @@ internal sealed class RemeshSource public Vector3[] positions, normals; public Vector4[] tangents; public Vector2[] uv; + public Vector2[] uv2; // lightmap UVs; zero where the source mesh has none public Color[] colors; // per vertex; white where the source mesh has none public bool hasColors; // any contributing mesh carried vertex colours public int[] indices, faceMaterials; + public int[] faceLightmaps; // per face: index into lightmaps, -1 when the renderer had none + public RemeshBeauty.Lightmap[] lightmaps; // unique (texture, scaleOffset) pairs, decoded linear public Surface[] materials; public float diagonal; public string[] warnings = Array.Empty(); @@ -75,9 +78,13 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) } var positions = new List(); var normals = new List(); var tangents = new List(); var uv = new List(); var colors = new List(); + var uv2 = new List(); bool hasColors = false; var indices = new List(); var faces = new List(); var materials = new List(); var materialIds = new Dictionary(); + var faceLightmaps = new List(); + var lightmaps = new List(); + var lightmapIds = new Dictionary<(Texture2D, Vector4), int>(); string[] warnings; using (var reader = new Reader()) { foreach (var renderer in root.GetComponentsInChildren()) { @@ -134,6 +141,24 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) tangents.Add(new Vector4(tt.x, tt.y, tt.z, t[i].w * sign)); } uv.AddRange(mesh.uv); + // Beauty bakes sample the renderer's baked lightmap at its UV2. + var lmUv = mesh.uv2; + if (lmUv.Length == p.Length) uv2.AddRange(lmUv); + else for (int i = 0; i < p.Length; ++i) uv2.Add(Vector2.zero); + int lightmapId = -1; + int lightmapIndex = renderer.lightmapIndex; + if (lightmapIndex >= 0 && lightmapIndex < LightmapSettings.lightmaps.Length) { + var map = LightmapSettings.lightmaps[lightmapIndex].lightmapColor; + var st = renderer.lightmapScaleOffset; + if (map != null) { + var key = (map, st); + if (!lightmapIds.TryGetValue(key, out lightmapId)) { + lightmapId = lightmaps.Count; + lightmaps.Add(RemeshBeauty.ReadLightmap(map, st)); + lightmapIds.Add(key, lightmapId); + } + } + } var c = mesh.colors; if (c.Length == p.Length) { colors.AddRange(c); hasColors = true; } else for (int i = 0; i < p.Length; ++i) colors.Add(Color.white); @@ -150,6 +175,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) indices.Add(first + tri[i + (sign < 0 ? 2 : 1)]); indices.Add(first + tri[i + (sign < 0 ? 1 : 2)]); faces.Add(material); + faceLightmaps.Add(lightmapId); } } } @@ -162,7 +188,8 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) foreach (var p in positions) bounds.Encapsulate(p); if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), - uv = uv.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), materials = materials.ToArray(), + uv = uv.ToArray(), uv2 = uv2.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), + faceLightmaps = faceLightmaps.ToArray(), lightmaps = lightmaps.ToArray(), materials = materials.ToArray(), diagonal = bounds.size.magnitude, warnings = warnings }; } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index ce449c95..0ad0130a 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -213,6 +213,10 @@ public void OnDrawSidebar() StageButton(Stage.Unwrap, "Unwrap"); } if (StageHeader(Stage.Bake, maps != null ? (maps.misses > 0 ? $"{maps.misses:N0} missed" : "done") : null)) { + settings.bakeMode = (RemeshBakeMode)EditorGUILayout.EnumPopup(new GUIContent("Bake mode", + "Materials transfers the source maps. Beauty bakes the object as the player sees it — realtime/mixed light with ray shadows, " + + "lightmaps, ambient and reflection probes folded into one lit BaseColor texture; the saved material becomes Unlit. " + + "Specular uses the scene view camera's position at bake time."), settings.bakeMode); settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); settings.bakeSamples = EditorGUILayout.IntPopup(new GUIContent("Samples per texel", "Supersampling for smoother edges and detail."), settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); @@ -302,7 +306,7 @@ string Key(Stage stage) case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; } } @@ -527,13 +531,22 @@ static Mesh BuildResultMesh(string name, RemeshNative.Geometry unwrapped, out Ve async Task RunBake(RemeshSettings options, CancellationToken token) { if ((geometry == null || snapshot == null) && nodes == null) throw new InvalidOperationException("Run the UV stage first."); + // The beauty environment reads scene state (lights, probes, view), so it is + // captured on the main thread before the workers start. + RemeshBeauty beauty = null; + if (options.bakeMode == RemeshBakeMode.Beauty) { + Report("Capturing scene lighting…"); + if (!source) throw new InvalidOperationException("The source root is gone; reselect it and rerun the remesh stage."); + float diagonal = snapshot != null ? snapshot.diagonal : (nodes != null && nodes.Count > 0 ? nodes[0].source.diagonal : 1f); + beauty = new RemeshBeauty(source.gameObject, diagonal); + } if (nodes != null) { long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0; for (int i = 0; i < nodes.Count; ++i) { var node = nodes[i]; token.ThrowIfCancellationRequested(); Report($"Projecting {node.name} into its UV atlas ({i + 1}/{nodes.Count})…"); - var baked = await Task.Run(() => RemeshBaker.Bake(node.source, node.geometry, node.tangents, options, token), token); + var baked = await Task.Run(() => RemeshBaker.Bake(node.source, node.geometry, node.tangents, options, token, beauty), token); node.maps = baked; if (baked.vertexColors != null) node.mesh.colors = baked.vertexColors; sourceTriangles += node.source.indices.Length / 3; @@ -550,8 +563,8 @@ async Task RunBake(RemeshSettings options, CancellationToken token) return; } var captured = snapshot; var target = geometry; var frame = tangents; - Report("Projecting source materials into the new UV atlas…"); - var baked = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token)); + Report(beauty != null ? "Baking the lit view of the source into the atlas…" : "Projecting source materials into the new UV atlas…"); + var baked = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token, beauty)); token.ThrowIfCancellationRequested(); preview = new Texture2D(baked.size, baked.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; preview.SetPixels32(baked.color); preview.Apply(); @@ -673,8 +686,12 @@ void Save() Mesh mesh = null; Material material = null; bool createdFolder = false; try { - string shaderName = GraphicsSettings.currentRenderPipeline == null ? "Standard" : "Universal Render Pipeline/Lit"; - if (GraphicsSettings.currentRenderPipeline != null && + // Beauty bakes fold the lighting into the BaseColor; the result shades + // Unlit (pipeline-agnostic) instead of Standard/URP-Lit. + bool unlit = maps != null && maps.beauty; + string shaderName = unlit ? "Unlit/Texture" + : (GraphicsSettings.currentRenderPipeline == null ? "Standard" : "Universal Render Pipeline/Lit"); + if (!unlit && GraphicsSettings.currentRenderPipeline != null && !GraphicsSettings.currentRenderPipeline.GetType().Name.Contains("Universal")) throw new InvalidOperationException("Result materials support Built-in and URP; HDRP export is not implemented."); var shader = Shader.Find(shaderName); @@ -721,18 +738,25 @@ void Save() if (settings.normalizeSize) BakeScaleIntoMesh(mesh, worldScale); material = new Material(shader) { name = clean + "_Remesh" }; bool urp = shaderName != "Standard"; - material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); - material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); - material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); - material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); - material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); - material.SetColor("_EmissionColor", Color.white); - material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); - material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); - material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); - material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); - if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + if (unlit) { + // One lit texture in, one texture out — the other maps still export + // alongside for reference, but nothing samples them. + material.SetTexture("_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + } + else { + material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); + material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); + material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); + material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); + material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); + material.SetColor("_EmissionColor", Color.white); + material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); + material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); + material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); + material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + } temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.HideAndDontSave }; temporary.AddComponent().sharedMesh = mesh; temporary.AddComponent().sharedMaterial = material; @@ -844,18 +868,24 @@ void SaveHierarchy(string folder, string clean, Shader shader) importer.SaveAndReimport(); } var material = new Material(shader) { name = nodeNames[i] + "_Remesh" }; - material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); - material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); - material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); - material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); - material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); - material.SetColor("_EmissionColor", Color.white); - material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); - material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); - material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); - material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); - if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + bool nodeUnlit = node.maps != null && node.maps.beauty; + if (nodeUnlit) { + material.SetTexture("_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + } + else { + material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); + material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); + material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); + material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); + material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); + material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); + material.SetColor("_EmissionColor", Color.white); + material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); + material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); + material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); + material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + } AssetDatabase.CreateAsset(material, folder + "/" + nodeNames[i] + ".mat"); // The mesh asset is a COPY: the runtime node.mesh stays a preview // object owned by the stage outputs (destroyed by ClearFrom). diff --git a/Shaders/RemeshBeautyEquirect.shader b/Shaders/RemeshBeautyEquirect.shader new file mode 100644 index 00000000..337405b2 --- /dev/null +++ b/Shaders/RemeshBeautyEquirect.shader @@ -0,0 +1,27 @@ +Shader "Hidden/MeshLab/RemeshBeautyEquirect" +{ + // Cubemap → equirectangular blit so reflection probes can be sampled by + // direction on the CPU: u = atan2(z, x) / 2π, v = acos(y) / π (see + // RemeshBeauty.SampleEquirect — the mapping below must stay its mirror). + Properties { _MainTex ("Probe", Cube) = "" {} } + SubShader + { + Cull Off ZWrite Off ZTest Always + Pass + { + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag + #include "UnityCG.cginc" + samplerCUBE _MainTex; + float4 frag(v2f_img i) : SV_Target + { + float phi = i.uv.x * 2.0 * UNITY_PI; + float theta = i.uv.y * UNITY_PI; + float3 dir = float3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)); + return float4(texCUBE(_MainTex, dir).rgb, 1); + } + ENDCG + } + } +} diff --git a/Shaders/RemeshBeautyEquirect.shader.meta b/Shaders/RemeshBeautyEquirect.shader.meta new file mode 100644 index 00000000..3fc0251c --- /dev/null +++ b/Shaders/RemeshBeautyEquirect.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5d0c31be9d3f4a26825906c17a706a08 +ShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 1805b5a5aa2c94291a23ef439e0a0665597d987c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 11:36:09 +0200 Subject: [PATCH 043/130] fix(remesh): Unity 6 compile pass for the beauty bake and keep-hierarchy The editor compile surfaced API mismatches CI never sees (its test job does not compile the package): the ambient probe evaluates through NativeArray buffers, not lists; MeshData's typed getters all take NativeArray as well, submesh topology comes from GetSubMesh and indices need applyBaseVertex; LightBakingOutput is a struct on the correct LightmapBakeType enum; the reflection fallback is the environment's customReflection; the half-float texture format is RGBAHalf. The keep-hierarchy lane also never compiled: its per-node simplified mesh was typed as unwrap geometry although the simplify stage yields an indexed mesh, and its bake result name collided with the weld lane's in an enclosing scope. --- Editor/Framework/UvCanvasView.cs | 106 +++++++++++++++++++++++++------ Editor/RemeshBeauty.cs | 38 +++++------ Editor/Tools/RemeshBakeTool.cs | 34 +++++----- 3 files changed, 125 insertions(+), 53 deletions(-) diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index cecf8895..84dae54b 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Unity.Collections; using UnityEngine; using UnityEngine.Rendering; using UnityEditor; @@ -1260,12 +1261,10 @@ static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) { var md = dataArray[0]; int count = md.vertexCount; - var vertices = new Vector3[count]; - md.GetVertices(vertices); - dst.SetVertices(vertices); - if (md.HasVertexAttribute(VertexAttribute.Normal)) { var n = new Vector3[count]; md.GetNormals(n); dst.SetNormals(n); } - if (md.HasVertexAttribute(VertexAttribute.Tangent)) { var t = new Vector4[count]; md.GetTangents(t); dst.SetTangents(t); } - if (md.HasVertexAttribute(VertexAttribute.Color)) { var c = new Color32[count]; md.GetColors(c); dst.SetColors(c); } + dst.SetVertices(ReadVertices(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Normal)) dst.SetNormals(ReadVectors3(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Tangent)) dst.SetTangents(ReadVectors4(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Color)) dst.SetColors(ReadColors(md, count)); for (int ch = 0; ch < 8; ch++) { var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); @@ -1273,33 +1272,104 @@ static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) int dim = md.GetVertexAttributeDimension(attr); if (dim <= 2) { - var uv = new List(); md.GetUVs(ch, uv); - if (uv.Count > 0 && !IsAllZero2(uv)) dst.SetUVs(ch, uv); + var uv = ReadUV2(md, ch, count); + if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, uv); } else if (dim == 3) { - var uv = new List(); md.GetUVs(ch, uv); - if (uv.Count > 0) dst.SetUVs(ch, uv); + var uv = ReadUV3(md, ch, count); + if (uv.Length > 0) dst.SetUVs(ch, uv); } else { - var uv = new List(); md.GetUVs(ch, uv); - if (uv.Count > 0) dst.SetUVs(ch, uv); + var uv = ReadUV4(md, ch, count); + if (uv.Length > 0) dst.SetUVs(ch, uv); } } dst.subMeshCount = md.subMeshCount; - var indices = new List(); for (int s = 0; s < md.subMeshCount; s++) - { - md.GetIndices(indices, s); - dst.SetIndices(indices, md.GetTopology(s), s, calculateBounds: false); - indices.Clear(); - } + dst.SetIndices(ReadIndices(md, s), md.GetSubMesh(s).topology, s, calculateBounds: false); } dst.bounds = src.bounds; return dst; } + // MeshData's typed getters all take NativeArray buffers; each helper copies out + // to a managed array and disposes the scratch. applyBaseVertex folds the + // submesh's base vertex back into the indices, as the classic getters do. + static Vector3[] ReadVertices(MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetVertices(buffer); + return buffer.ToArray(); + } + } + + static Vector3[] ReadVectors3(MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetNormals(buffer); + return buffer.ToArray(); + } + } + + static Vector4[] ReadVectors4(MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetTangents(buffer); + return buffer.ToArray(); + } + } + + static Color32[] ReadColors(MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetColors(buffer); + return buffer.ToArray(); + } + } + + static Vector2[] ReadUV2(MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static Vector3[] ReadUV3(MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static Vector4[] ReadUV4(MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static int[] ReadIndices(MeshData md, int submesh) + { + var sub = md.GetSubMesh(submesh); + using (var buffer = new NativeArray(sub.indexCount, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetIndices(buffer, submesh, true); + return buffer.ToArray(); + } + } + static bool IsAllZero2(List uv) { for (int i = 0; i < uv.Count; i++) diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 4345fbe3..520c18eb 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Unity.Collections; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; @@ -70,10 +71,9 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) var locList = new List(); foreach (var light in Object.FindObjectsByType(FindObjectsSortMode.None)) { if (!light.enabled || !light.gameObject.activeInHierarchy) continue; - var bake = light.bakingOutput; // Baked-only lights live in the lightmap; including them again would // double-count. URP has no subtractive mode, so Mixed direct is realtime. - if (bake != null && bake.lightmapBakeType == LightmappingBakeType.Baked) continue; + if (light.bakingOutput.lightmapBakeType == LightmapBakeType.Baked) continue; Color color = light.color.linear * light.intensity; if (light.type == LightType.Directional) { dirList.Add(new Directional { @@ -115,18 +115,19 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) // frequency, so a 32×16 direction grid with worker-side bilinear lookup is // visually exact without porting ShadeSH9's packed constants. ambientGrid = new Color[AmbientW * AmbientH]; - var directions = new List(ambientGrid.Length); - for (int y = 0; y < AmbientH; ++y) - for (int x = 0; x < AmbientW; ++x) { - float phi = (x + 0.5f) / AmbientW * 2f * Mathf.PI; - float theta = (y + 0.5f) / AmbientH * Mathf.PI; - directions.Add(new Vector3( - Mathf.Sin(theta) * Mathf.Cos(phi), Mathf.Cos(theta), Mathf.Sin(theta) * Mathf.Sin(phi))); - } - var results = new List(ambientGrid.Length); - for (int i = 0; i < ambientGrid.Length; ++i) results.Add(Color.black); - RenderSettings.ambientProbe.Evaluate(directions, results); - results.CopyTo(ambientGrid); + using (var directions = new NativeArray(ambientGrid.Length, Allocator.TempJob)) + using (var results = new NativeArray(ambientGrid.Length, Allocator.TempJob)) { + int i = 0; + for (int y = 0; y < AmbientH; ++y) + for (int x = 0; x < AmbientW; ++x, ++i) { + float phi = (x + 0.5f) / AmbientW * 2f * Mathf.PI; + float theta = (y + 0.5f) / AmbientH * Mathf.PI; + directions[i] = new Vector3( + Mathf.Sin(theta) * Mathf.Cos(phi), Mathf.Cos(theta), Mathf.Sin(theta) * Mathf.Sin(phi)); + } + RenderSettings.ambientProbe.Evaluate(directions, results); + for (int j = 0; j < ambientGrid.Length; ++j) ambientGrid[j] = results[j]; + } } var probeList = new List(); @@ -140,9 +141,11 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) bounds = rp.bounds, bounded = true, importance = rp.importance, average = Average(read) }); } probes = probeList.ToArray(); + // No scene probe applies → the environment's custom reflection (Lighting ▸ + // Environment Reflections) is the fallback Unity would blend to. fallbackProbe = null; - if (RenderSettings.defaultReflection != null) { - var read = ReadEquirect(RenderSettings.defaultReflection, out int w2, out int h2); + if (RenderSettings.customReflection != null) { + var read = ReadEquirect(RenderSettings.customReflection, out int w2, out int h2); if (read != null) fallbackProbe = new Probe { pixels = read, width = w2, height = h2, average = Average(read) }; } @@ -330,8 +333,7 @@ internal static Color[] ReadEquirect(Texture cube, out int width, out int height internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) { int width = lightmap.width, height = lightmap.height; - bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.ARGBHalf - || lightmap.format == TextureFormat.RGBAHalf; + bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.RGBAHalf; var previous = RenderTexture.active; var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); Texture2D copy = null; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 0ad0130a..32982c63 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -63,7 +63,7 @@ internal sealed class RemeshNode public Vector3 localScale = Vector3.one; public RemeshSource source; public RemeshNative.IndexedMesh voxel; - public RemeshNative.Geometry simplified; + public RemeshNative.IndexedMesh simplified; public RemeshNative.Geometry geometry; public Vector4[] tangents; public Mesh mesh; @@ -564,14 +564,14 @@ async Task RunBake(RemeshSettings options, CancellationToken token) } var captured = snapshot; var target = geometry; var frame = tangents; Report(beauty != null ? "Baking the lit view of the source into the atlas…" : "Projecting source materials into the new UV atlas…"); - var baked = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token, beauty)); + var bakedWeld = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token, beauty)); token.ThrowIfCancellationRequested(); - preview = new Texture2D(baked.size, baked.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; - preview.SetPixels32(baked.color); preview.Apply(); - maps = baked; - if (baked.vertexColors != null) resultMesh.colors = baked.vertexColors; + preview = new Texture2D(bakedWeld.size, bakedWeld.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; + preview.SetPixels32(bakedWeld.color); preview.Apply(); + maps = bakedWeld; + if (bakedWeld.vertexColors != null) resultMesh.colors = bakedWeld.vertexColors; status = $"{captured.indices.Length / 3:N0} → {target.indices.Length / 3:N0} triangles. " + - (baked.misses == 0 ? "All covered texels projected." : $"{baked.misses:N0} / {baked.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + + (bakedWeld.misses == 0 ? "All covered texels projected." : $"{bakedWeld.misses:N0} / {bakedWeld.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); UvtLog.Info("[Remesh] " + status); // Source and target live in the same root-local space by construction; the @@ -586,26 +586,26 @@ async Task RunBake(RemeshSettings options, CancellationToken token) // displaced projection samples; loud fraction > 5% also warns on its own. if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) UvtLog.Info(UvtLog.Category.RemeshDiag, - $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + - $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°, {baked.zeroNormals:N0} zero normals; " + - $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}; " + - $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + + $"cage: {bakedWeld.weldedPositions:N0} welded positions ({bakedWeld.splitCopies:N0} split copies), " + + $"{bakedWeld.oneSidedNormals:N0} one-sided border normals, max cage deviation {bakedWeld.maxOneSidedDeg:F0}°, {bakedWeld.zeroNormals:N0} zero normals; " + + $"projection: {bakedWeld.rayFallbacks:N0} nearest-fallback samples, {bakedWeld.misses:N0} missed texels, front-face filter {(bakedWeld.facingFilter ? "on" : "off")}; " + + $"normal map tilt: mean {bakedWeld.meanTiltDeg:F1}° / max {bakedWeld.maxTiltDeg:F0}°, {bakedWeld.loudTexels:N0} texels >45°; " + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); - if (baked.zeroNormals > 0) + if (bakedWeld.zeroNormals > 0) UvtLog.Warn(UvtLog.Category.RemeshDiag, - baked.zeroNormals + " result vertices have zero normals — their texels bake through zeroed ray directions " + + bakedWeld.zeroNormals + " result vertices have zero normals — their texels bake through zeroed ray directions " + "and tangent frames. Re-run the UV stage; if it repeats, the remesh produced degenerate faces (lower simplification error or raise voxel resolution)."); - else if (baked.rayFallbacks > baked.covered * 4 / 5 && baked.covered > 0) + else if (bakedWeld.rayFallbacks > bakedWeld.covered * 4 / 5 && bakedWeld.covered > 0) UvtLog.Warn(UvtLog.Category.RemeshDiag, - baked.rayFallbacks.ToString("N0") + " of the projection samples fell back to nearest-point search — the rays " + + bakedWeld.rayFallbacks.ToString("N0") + " of the projection samples fell back to nearest-point search — the rays " + "are not hitting the source. Check the projection distance and the hard-edge mode, and rebake."); if (Mathf.Abs(scaleRatio - 1f) > 0.1f) UvtLog.Warn(UvtLog.Category.RemeshDiag, $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + "Check voxel resolution, small-part pruning and simplification settings, and rebake."); - if (baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) + if (bakedWeld.loudTexels > bakedWeld.covered / 20 && bakedWeld.meanTiltDeg > 30f) UvtLog.Warn(UvtLog.Category.RemeshDiag, - $"{100.0 * baked.loudTexels / Mathf.Max(1, baked.covered):F1}% of texels lean >45° with a {baked.meanTiltDeg:F0}° mean tilt — " + + $"{100.0 * bakedWeld.loudTexels / Mathf.Max(1, bakedWeld.covered):F1}% of texels lean >45° with a {bakedWeld.meanTiltDeg:F0}° mean tilt — " + "the map is dominated by extreme normals. Check the hard-edge mode, projection distance and cage fit, " + "and compare against the source: fine detail should tilt a map, not saturate it."); } From fa2646f2b986dfc43612f90f6a9bf17f7b1db6c3 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 11:59:05 +0200 Subject: [PATCH 044/130] =?UTF-8?q?fix(remesh):=20MeshData=20is=20a=20nest?= =?UTF-8?q?ed=20type=20=E2=80=94=20qualify=20the=20helper=20signatures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The readback helpers spelled the parameter type as a top-level MeshData, but the struct is nested inside Mesh (Mesh.MeshData); the editor flagged eight unresolved names. Var-driven call sites were unaffected. --- Editor/Framework/UvCanvasView.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 84dae54b..67ae6234 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1297,7 +1297,7 @@ static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) // MeshData's typed getters all take NativeArray buffers; each helper copies out // to a managed array and disposes the scratch. applyBaseVertex folds the // submesh's base vertex back into the indices, as the classic getters do. - static Vector3[] ReadVertices(MeshData md, int count) + static Vector3[] ReadVertices(Mesh.MeshData md, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1306,7 +1306,7 @@ static Vector3[] ReadVertices(MeshData md, int count) } } - static Vector3[] ReadVectors3(MeshData md, int count) + static Vector3[] ReadVectors3(Mesh.MeshData md, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1315,7 +1315,7 @@ static Vector3[] ReadVectors3(MeshData md, int count) } } - static Vector4[] ReadVectors4(MeshData md, int count) + static Vector4[] ReadVectors4(Mesh.MeshData md, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1324,7 +1324,7 @@ static Vector4[] ReadVectors4(MeshData md, int count) } } - static Color32[] ReadColors(MeshData md, int count) + static Color32[] ReadColors(Mesh.MeshData md, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1333,7 +1333,7 @@ static Color32[] ReadColors(MeshData md, int count) } } - static Vector2[] ReadUV2(MeshData md, int channel, int count) + static Vector2[] ReadUV2(Mesh.MeshData md, int channel, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1342,7 +1342,7 @@ static Vector2[] ReadUV2(MeshData md, int channel, int count) } } - static Vector3[] ReadUV3(MeshData md, int channel, int count) + static Vector3[] ReadUV3(Mesh.MeshData md, int channel, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1351,7 +1351,7 @@ static Vector3[] ReadUV3(MeshData md, int channel, int count) } } - static Vector4[] ReadUV4(MeshData md, int channel, int count) + static Vector4[] ReadUV4(Mesh.MeshData md, int channel, int count) { using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { @@ -1360,7 +1360,7 @@ static Vector4[] ReadUV4(MeshData md, int channel, int count) } } - static int[] ReadIndices(MeshData md, int submesh) + static int[] ReadIndices(Mesh.MeshData md, int submesh) { var sub = md.GetSubMesh(submesh); using (var buffer = new NativeArray(sub.indexCount, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) From c1878244896d74a49efe0dd3cfe6e303de2a0468 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 12:04:22 +0200 Subject: [PATCH 045/130] fix(remesh): the ambient probe evaluates through plain arrays MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SphericalHarmonicsL2.Evaluate takes Vector3[] and Color[] in Unity 6 — the NativeArray buffer shape belongs to the MeshData getters, not here. Plain arrays also lift the using-variable restriction that blocked the direction fill. --- Editor/RemeshBeauty.cs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 520c18eb..cf0e7f27 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Unity.Collections; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; @@ -115,19 +114,18 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) // frequency, so a 32×16 direction grid with worker-side bilinear lookup is // visually exact without porting ShadeSH9's packed constants. ambientGrid = new Color[AmbientW * AmbientH]; - using (var directions = new NativeArray(ambientGrid.Length, Allocator.TempJob)) - using (var results = new NativeArray(ambientGrid.Length, Allocator.TempJob)) { - int i = 0; - for (int y = 0; y < AmbientH; ++y) - for (int x = 0; x < AmbientW; ++x, ++i) { - float phi = (x + 0.5f) / AmbientW * 2f * Mathf.PI; - float theta = (y + 0.5f) / AmbientH * Mathf.PI; - directions[i] = new Vector3( - Mathf.Sin(theta) * Mathf.Cos(phi), Mathf.Cos(theta), Mathf.Sin(theta) * Mathf.Sin(phi)); - } - RenderSettings.ambientProbe.Evaluate(directions, results); - for (int j = 0; j < ambientGrid.Length; ++j) ambientGrid[j] = results[j]; - } + var directions = new Vector3[ambientGrid.Length]; + var results = new Color[ambientGrid.Length]; + int i = 0; + for (int y = 0; y < AmbientH; ++y) + for (int x = 0; x < AmbientW; ++x, ++i) { + float phi = (x + 0.5f) / AmbientW * 2f * Mathf.PI; + float theta = (y + 0.5f) / AmbientH * Mathf.PI; + directions[i] = new Vector3( + Mathf.Sin(theta) * Mathf.Cos(phi), Mathf.Cos(theta), Mathf.Sin(theta) * Mathf.Sin(phi)); + } + RenderSettings.ambientProbe.Evaluate(directions, results); + for (int j = 0; j < ambientGrid.Length; ++j) ambientGrid[j] = results[j]; } var probeList = new List(); From d4072fe81f61915758284371718c73b854f012b7 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 12:20:32 +0200 Subject: [PATCH 046/130] fix(remesh): decode Bakery lightmaps in beauty bakes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unity's RGBA32 lightmaps are RGBM; Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional decode would brighten eightfold. HDR output (Bakery's default) already decodes directly, and a plain 8-bit map is now auto-detected by its pinned alpha. The separate direction texture needs no sampling — the colour map already carries each surface's irradiance — and shadowmask lights keep contributing through their realtime component, with the bake's ray shadows standing in for the mask. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 5 +++++ Editor/RemeshBeauty.cs | 26 ++++++++++++++++++-------- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95986a3e..67dea432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. - **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. - **Skinned captures bake the pose the scene shows.** `BakeMesh` uses the last evaluated skinning, which in edit mode can predate the current bone transforms — every skinned part then baked at its authored origin instead of its posed place. The bone list is reassigned before baking to mark the skinning dirty and force a re-evaluation. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 57dc3979..e3a6bf35 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -114,6 +114,11 @@ settings, marked "settings changed" in its header) and clears everything after i The saved material becomes **Unlit/Texture** with that one map (the other maps still export alongside); the 3D preview renders beauty results unlit, exactly like the saved material. + Bakery setups work through the same path: its HDR colour map decodes directly + (8-bit plain output is auto-detected by its pinned alpha and skips Unity's RGBM + decode), the separate direction texture is not needed (the colour already is + that surface's irradiance), and shadowmask lights contribute through their + realtime component with the bake's own ray shadows standing in for the mask. With the **RemeshDiag** log filter enabled, every bake also prints its health counters to the Console: welded cage positions and split copies, one-sided border normals (max cage deviation), nearest-fallback projection samples, diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index cf0e7f27..12957726 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -326,8 +326,12 @@ internal static Color[] ReadEquirect(Texture cube, out int width, out int height } // Lightmap readback for the source capture: plain blit into a float RT, then - // decode — desktop RGBA32 lightmaps are RGBM (rgb * a * 8), HDR encodings are - // direct. Mirrors Unity's decodeLightmap for the editor platforms. + // decode. HDR encodings (Unity "High Quality", Bakery's default .hdr output) + // come through linear directly. Unity's own RGBA32 lightmaps are RGBM + // (rgb * a * 8); Bakery's 8-bit output is plain linear with alpha pinned at 1, + // so "alpha ~ 1 everywhere" (a real RGBM scene always has dark texels with + // alpha < 1) identifies a plain map and skips the decode that would + // overbrighten it eightfold. internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) { int width = lightmap.width, height = lightmap.height; @@ -342,12 +346,18 @@ internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); copy.Apply(); var pixels = copy.GetPixels(); - if (!hdr) - for (int i = 0; i < pixels.Length; ++i) { - var c = pixels[i]; - float scale = c.a * 8f; - pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); - } + if (!hdr) { + bool rgbm = false; + int step = Math.Max(1, pixels.Length / 4096); + for (int i = 0; i < pixels.Length; i += step) + if (pixels[i].a < 0.999f) { rgbm = true; break; } + if (rgbm) + for (int i = 0; i < pixels.Length; ++i) { + var c = pixels[i]; + float scale = c.a * 8f; + pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); + } + } return new Lightmap { pixels = pixels, width = width, height = height, st = st }; } finally { From faf5ffc79d2931eee4ad93b9522577f6c2b5b394 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 12:34:14 +0200 Subject: [PATCH 047/130] =?UTF-8?q?fix(remesh):=20a=20proper=20smooth=20ca?= =?UTF-8?q?ge=20=E2=80=94=20smoothed=20welded=20directions,=20fold-limited?= =?UTF-8?q?=20shells?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation flowed straight into them: the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity — smoothing runs on the welded mesh precisely so it flows through chart borders and hard edges instead of re-splitting them, the fully-smooth-cage rule bakers prescribe, and the bake rays share the benefit. Each preview shell's offset stops short of self-intersection by casting its segment against the surface, so a wheel well shows a pinch instead of noise. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 6 +++++- Editor/RemeshBaker.cs | 13 ++++++++++++- Editor/RemeshPreview.cs | 29 ++++++++++++++++++++++++----- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67dea432..a3e43c18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. - **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index e3a6bf35..3a8e853e 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -100,7 +100,11 @@ settings, marked "settings changed" in its header) and clears everything after i draws the projection limits — the result mesh inflated by ±the ray travel along the same welded cage normals, orange for the outer (ray origin) shell, blue for the inner (ray end) shell — live from the current projection - distance, so the setting can be tuned before re-baking. + distance, so the setting can be tuned before re-baking. The cage is a proper + smooth cage: its directions are area-weighted, welded across UV/crease splits + and Laplacian-smoothed over the welded connectivity, and each shell's offset + stops short of self-intersection (cast against the surface itself), so a + tight concavity shows a pinch instead of folding through to the far side. **Bake mode** selects what lands in the maps: *Materials* transfers the source maps; *Beauty* bakes the object as the player sees it — realtime/mixed light with hard ray shadows, the renderer's lightmaps (sampled at its UV2, RGBM/HDR diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index fa2c7c8e..3780ec3f 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -259,9 +259,14 @@ static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vec // coincident vertices: UV chart borders (and crease edges) split vertices, and // each copy's own normal is one-sided there, so rays cast along it land on a // displaced source point. Welding by exact position — xatlas copies bit-identical - // coordinates — averages both sides back into a smooth cage direction. + // coordinates — averages both sides back into a smooth cage direction, and a + // Laplacian pass over the WELDED connectivity smooths the sliver noise the + // adaptive decimation leaves in those directions (the "fully smooth cage" every + // baker prescribes). The pass runs on the welded mesh precisely so it flows + // through chart borders and hard edges instead of re-splitting them. internal static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) { + const float cageSmoothing = 2f; var slots = new int[target.positions.Length]; var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(target.positions.Length); for (int i = 0; i < target.positions.Length; ++i) { @@ -271,11 +276,17 @@ internal static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps di slots[i] = slot; } var welded = new Vector3[map.Count]; + var weldedIndices = new int[target.indices.Length]; for (int i = 0; i < target.indices.Length; i += 3) { int a = target.indices[i], b = target.indices[i + 1], c = target.indices[i + 2]; Vector3 n = Vector3.Cross(target.positions[b] - target.positions[a], target.positions[c] - target.positions[a]); welded[slots[a]] += n; welded[slots[b]] += n; welded[slots[c]] += n; + weldedIndices[i] = slots[a]; weldedIndices[i + 1] = slots[b]; weldedIndices[i + 2] = slots[c]; } + for (int i = 0; i < welded.Length; ++i) + if (welded[i].sqrMagnitude > 1e-30f) welded[i] = welded[i].normalized; + var weldedMesh = new RemeshNative.Geometry { normals = welded, indices = weldedIndices }; + RemeshNative.SmoothNormals(weldedMesh, cageSmoothing); var cage = new Vector3[target.positions.Length]; float maxDev = 0; int oneSided = 0, zeroNormalVerts = 0; for (int i = 0; i < cage.Length; ++i) { diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 2a1e0b5b..24fc9a96 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -221,8 +221,12 @@ void DrawCage(Mesh mesh, RemeshNative.Geometry geometry, float distance) if (cageInner) Object.DestroyImmediate(cageInner); var cageNormals = RemeshBaker.BuildCageNormals(geometry, null); var indices = EdgeIndices(mesh); - cageOuter = indices != null ? CageShell(mesh, geometry, cageNormals, distance, "Outer") : null; - cageInner = indices != null ? CageShell(mesh, geometry, cageNormals, -distance, "Inner") : null; + if (indices != null) { + var folds = new TriangleBvh(geometry.positions, geometry.indices); + cageOuter = CageShell(mesh, geometry, cageNormals, distance, "Outer", folds); + cageInner = CageShell(mesh, geometry, cageNormals, -distance, "Inner", folds); + } + else cageOuter = cageInner = null; cageMeshId = id; cageDistanceCached = distance; } wire.SetColor("_Color", new Color(1f, 0.55f, 0.15f, 0.9f)); @@ -231,17 +235,32 @@ void DrawCage(Mesh mesh, RemeshNative.Geometry geometry, float distance) if (cageInner) utility.DrawMesh(cageInner, Matrix4x4.identity, wire, 0); } - static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix) + static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix, TriangleBvh folds) { var vertices = new Vector3[geometry.positions.Length]; - for (int i = 0; i < vertices.Length; ++i) - vertices[i] = geometry.positions[i] + cageNormals[i] * distance; + for (int i = 0; i < vertices.Length; ++i) { + Vector3 dir = distance >= 0 ? cageNormals[i] : -cageNormals[i]; + vertices[i] = geometry.positions[i] + dir * FoldLimitedOffset(folds, geometry.positions[i], dir, Mathf.Abs(distance)); + } var shell = new Mesh { name = mesh.name + "_Cage" + suffix, hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; shell.vertices = vertices; shell.SetIndices(EdgeIndices(mesh), MeshTopology.Lines, 0); return shell; } + // A uniform offset folds through itself wherever the surface is tighter than the + // ray travel (wheel wells, fender arches) — the shell then crosses to the far + // side and reads as noise. The offset stops short of the fold instead: the + // segment is cast against the surface itself and keeps 85% of the unobstructed + // reach, floored at a quarter of the full distance so the limit stays visible. + static float FoldLimitedOffset(TriangleBvh folds, Vector3 p, Vector3 dir, float distance) + { + float eps = distance * 0.01f; + var hit = folds.Raycast(p + dir * eps, dir, distance); + if (hit.triangleIndex < 0) return distance; + return Mathf.Max(distance * 0.25f, (hit.t + eps) * 0.85f); + } + static long Triangles(Mesh mesh) { long total = 0; From 2c72301fc70bc9017f6a8560e520fdccf01a76d8 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 12:56:09 +0200 Subject: [PATCH 048/130] fix(remesh): exclude collision meshes with suffixed _COL names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The collision matcher accepted Name_COL and Name_COL_Hull{N} literally, so assets carrying variants like Name_COL_M — no UV0, rightly — aborted the whole capture with a needs-source-UV0 error. The matcher now takes the _COL token with any trailing suffix token while ordinary words such as _COLOR stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. --- CHANGELOG.md | 1 + Editor/MeshHygieneUtility.cs | 5 ++++- Editor/RemeshSource.cs | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3e43c18..e6481765 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. - **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. diff --git a/Editor/MeshHygieneUtility.cs b/Editor/MeshHygieneUtility.cs index 9bdb4c14..d87e3c66 100644 --- a/Editor/MeshHygieneUtility.cs +++ b/Editor/MeshHygieneUtility.cs @@ -35,9 +35,12 @@ internal static class MeshHygieneUtility { // ── Compiled regexes (shared, thread-safe) ── + // The collision convention is the _COL token: Name_COL, Name_COL_Hull2, and the + // suffixed variants assets carry (Name_COL_M, Name_COL_S…). The token rule keeps + // ordinary words (_COLOR, _COLLECTION) out of the match. static readonly System.Text.RegularExpressions.Regex collisionSuffixRegex = new System.Text.RegularExpressions.Regex( - @"_COL(?:_Hull\d+)?$", + @"_COL(?:_\w+)?$", System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Compiled); diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 4c7e58ed..a8d9c772 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -119,6 +119,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) else continue; try { if (lod0Only && IsHigherLodName(mesh.name)) continue; + if (MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; for (int sub = 0; sub < mesh.subMeshCount; ++sub) if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); if (mesh.uv.Length != mesh.vertexCount) From c5e9c34174eccc257ac7a839577aefbad3bbd5c6 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 13:08:41 +0200 Subject: [PATCH 049/130] feat(remesh): flip source models to Read/Write for the capture, off after MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A run that includes the remesh stage turns isReadable on for every imported model under the source root (reimporting each) so the capture takes the fast friction-free path, and restores every touched importer to its original off state in the run's finally — cancel, failure and success alike. The MeshData fallback still covers imports the reimport cannot flip. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 4 ++- Editor/Tools/RemeshBakeTool.cs | 47 +++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6481765..826e63d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake: Read/Write flips on for the capture and off after.** A run that includes the remesh stage turns `isReadable` on for every imported model under the source root (reimporting each), so the capture takes the fast friction-free path, and restores every touched importer to its original off state in the run's `finally` — cancel, failure and success alike. - **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. - **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 3a8e853e..d90946fb 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -34,7 +34,9 @@ settings, marked "settings changed" in its header) and clears everything after i their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static meshes; pose the model the way you want it baked. Every contributing submesh - needs UV0. Read/Write-disabled imports are read through MeshData. + needs UV0. Read/Write-disabled imports are read through MeshData, and a run + that includes the remesh stage additionally flips the source models' importers + to Read/Write enabled for the capture and restores each one to off afterwards. 2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided shell. Higher resolution preserves smaller gaps but produces a denser, uniform intermediate mesh. diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 32982c63..e69caae4 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -316,10 +316,16 @@ async void Run(Stage from, Stage to) cancellation = new CancellationTokenSource(); var token = cancellation.Token; bool locked = false; + List restoreReadable = null; try { settings.Validate(); RemeshNative.CheckAvailable(); var options = JsonUtility.FromJson(JsonUtility.ToJson(settings)); ClearFrom(from); + // The capture reads Read/Write-disabled imports through MeshData, but a + // readable import is the fast, friction-free path: flip the source models' + // importers on for the run (only when the capture stage executes) and put + // each one back to its original off state afterwards. + if (from == Stage.Remesh && source) restoreReadable = EnableSourceReadWrite(); EditorApplication.LockReloadAssemblies(); locked = true; for (var stage = from; stage <= to; ++stage) { string key = Key(stage); @@ -337,12 +343,53 @@ async void Run(Stage from, Stage to) catch (OperationCanceledException) { status = "Cancelled. Source assets were preserved."; } catch (Exception e) { status = e.Message; UvtLog.Error("[Remesh] " + e); } finally { + if (restoreReadable != null) RestoreSourceReadWrite(restoreReadable); cancellation.Dispose(); cancellation = null; if (locked) EditorApplication.UnlockReloadAssemblies(); Interlocked.Exchange(ref running, 0); RequestRepaint?.Invoke(); } } + // Flips every imported model under the source root to Read/Write enabled and + // returns the importers that were changed (all originally off); null when none. + List EnableSourceReadWrite() + { + var paths = new HashSet(StringComparer.OrdinalIgnoreCase); + CollectMeshAssetPaths(source.transform, paths); + var touched = new List(); + foreach (var path in paths) { + if (!(AssetImporter.GetAtPath(path) is ModelImporter model) || model.isReadable) continue; + model.isReadable = true; + model.SaveAndReimport(); + touched.Add(model); + } + return touched.Count > 0 ? touched : null; + } + + static void RestoreSourceReadWrite(List touched) + { + foreach (var model in touched) { + if (model == null) continue; + model.isReadable = false; + model.SaveAndReimport(); + } + } + + static void CollectMeshAssetPaths(Transform node, HashSet paths) + { + if (node.TryGetComponent(out var filter) && filter.sharedMesh) + AddMeshAssetPath(filter.sharedMesh, paths); + if (node.TryGetComponent(out var skin) && skin.sharedMesh) + AddMeshAssetPath(skin.sharedMesh, paths); + for (int i = 0; i < node.childCount; ++i) CollectMeshAssetPaths(node.GetChild(i), paths); + } + + static void AddMeshAssetPath(Mesh mesh, HashSet paths) + { + string path = AssetDatabase.GetAssetPath(mesh); + if (!string.IsNullOrEmpty(path)) paths.Add(path); + } + async Task RunRemesh(RemeshSettings options, CancellationToken token) { var root = source; From d7262fbefdb0be23cc959a0fa06801caa5f99272 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 13:49:03 +0200 Subject: [PATCH 050/130] feat(remesh): beauty bakes reproduce the game's directional-lightmap response MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lightmap colour was sampled flat, which overlights every surface whose normal disagrees with the baked dominant direction. The bake now ports the render pipeline's SampleDirectionalLightmap verbatim: the direction texture's encoded dominant direction — captured per face alongside the colour map, linear readback — is dotted with the surface's world normal as a half-Lambert, and the result is divided by the texel's rebalancing coefficient. Non-directional scenes keep the flat colour. Unity's official HLODSystem was studied for reference and contains no texture/lightmap combination at all — its HLODs render unlightmapped through light probes and realtime light; the authoritative compositing lives in the pipeline's runtime shaders, which is what this ports. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 5 +++ Editor/RemeshBaker.cs | 2 +- Editor/RemeshBeauty.cs | 56 ++++++++++++++++++++++++++++--- Editor/RemeshSource.cs | 9 ++--- 5 files changed, 63 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 826e63d2..8dcf5202 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: the unwrap wire layout really is sixteen float32 per vertex.** The ABI-3 native struct carried only twelve floats (no reserved tail), so the flat buffer the editor and the native tests read at a 16-float stride was packed at 12 — every field after the first vertex came out shifted garbage (the native test failed on `unit normals` / `normalized UV` on CI, which stopped the plugin rebuild and left the editor on stale ABI-2 binaries). A `static_assert` now pins the struct to the documented stride, and the version-mismatch error states the expected and loaded ABI plus the update/restart steps instead of a bare "Unsupported remesh native ABI". ### Changed +- **Beauty bakes reproduce the game's exact directional-lightmap response.** The lightmap colour was sampled flat, which overlights every surface whose normal disagrees with the baked dominant direction — the game shades those surfaces darker. The bake now ports URP's `SampleDirectionalLightmap` verbatim: the direction texture's encoded dominant direction (captured per face alongside the colour map, linear readback) is dotted with the surface's world normal as a half-Lambert and the result divides by the texel's rebalancing coefficient. Non-directional scenes keep the flat colour. For reference, Unity's official HLODSystem was studied for its texture/lightmap combination — it contains none (HLODs render unlightmapped through light probes and realtime light); the authoritative compositing lives in the render pipeline's runtime shaders, which is what this ports. - **Remesh & Bake: the tangent frame is regenerated after the UV cut, in meshoptimizer.** The unwrap output now carries per-vertex tangents from `meshopt_generateTangents` (MikkT-compatible, with mirrored-UV corner conflicts splitting their vertex), computed over the final atlas layout, so the bake, the 3D preview and the saved FBX all encode against one basis instead of Unity's separate recalculation (which stays only as a fallback). Vertex normals are likewise regenerated in C# from the split geometry for **every** hard-edge mode — crease splits and chart borders are already vertex splits, so the weighted accumulation smooths inside each split group and stays hard across creases and island borders alike. A new **Normal weighting** option (Blender Weighted Normal modifier analog) selects the accumulation weight: *Face area* (meshopt's own, default), *Corner angle*, or *Face area × corner angle*; the stale disablement of the smoothing slider in island modes is gone. Native ABI is now 3 with a sixteen-float unwrap vertex layout (position, normal, UV0, tangent) — the plugins must be rebuilt (**Build Native Libraries**, the auto workflow does it on push) and Unity restarted. - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index d90946fb..922a7d92 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -125,6 +125,11 @@ settings, marked "settings changed" in its header) and clears everything after i decode), the separate direction texture is not needed (the colour already is that surface's irradiance), and shadowmask lights contribute through their realtime component with the bake's own ray shadows standing in for the mask. + In directional mode the bake reproduces the game's exact lightmap response — + URP's `SampleDirectionalLightmap`: the encoded dominant direction is dotted + with the surface's world normal as a half-Lambert and divided by the texel's + rebalancing coefficient — not a flat colour, so oblique surfaces shade the way + they do in play. With the **RemeshDiag** log filter enabled, every bake also prints its health counters to the Console: welded cage positions and split copies, one-sided border normals (max cage deviation), nearest-fallback projection samples, diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 3780ec3f..01880c41 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -245,7 +245,7 @@ static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vec Color lit; if (lightmapId >= 0 && source.lightmaps != null && lightmapId < source.lightmaps.Length) { Vector2 uv2 = source.uv2[a] * w.x + source.uv2[b] * w.y + source.uv2[c] * w.z; - lit = beauty.SampleLightmap(source.lightmaps[lightmapId], uv2); + lit = beauty.SampleLightmap(source.lightmaps[lightmapId], uv2, n); lit += albedoLinear * beauty.Direct(p, n); } else { diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 12957726..314b5f10 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -24,6 +24,11 @@ internal sealed class Lightmap public Color[] pixels; // linear, decoded public int width, height; public Vector4 st; // renderer.lightmapScaleOffset: uv2 * xy + zw + // Directional mode: rgb = dominant direction (encoded, NOT unit length — + // its length is the directionality), a = the rebalancing coefficient. + public Color[] dirPixels; + public int dirWidth, dirHeight; + public bool hasDir; } internal sealed class Probe @@ -232,10 +237,23 @@ internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, floa return new Color(color.r * fresnel.x * energy, color.g * fresnel.y * energy, color.b * fresnel.z * energy, 0f); } - internal Color SampleLightmap(Lightmap map, Vector2 uv2) + internal Color SampleLightmap(Lightmap map, Vector2 uv2, Vector3 localNormal) { Vector2 uv = new Vector2(uv2.x * map.st.x + map.st.z, uv2.y * map.st.y + map.st.w); - return SampleBilinear(map.pixels, map.width, map.height, uv); + Color illuminance = SampleBilinear(map.pixels, map.width, map.height, uv); + if (map.hasDir) { + // The game's exact directional-lightmap response (URP EntityLighting's + // SampleDirectionalLightmap): the encoded dominant direction is dotted + // against the WORLD normal as a half-Lambert and the result is divided + // by the texel's rebalancing coefficient. A flat colour would overlight + // every surface whose normal disagrees with the dominant direction. + Color d = SampleBilinear(map.dirPixels, map.dirWidth, map.dirHeight, uv); + Vector3 dir = new Vector3(d.r, d.g, d.b) - new Vector3(0.5f, 0.5f, 0.5f); + float halfLambert = Vector3.Dot(localToWorld.MultiplyVector(localNormal), dir) + 0.5f; + float scale = halfLambert / Mathf.Max(1e-4f, d.a); + illuminance = new Color(illuminance.r * scale, illuminance.g * scale, illuminance.b * scale, 1f); + } + return illuminance; } // ── plumbing ── @@ -331,8 +349,9 @@ internal static Color[] ReadEquirect(Texture cube, out int width, out int height // (rgb * a * 8); Bakery's 8-bit output is plain linear with alpha pinned at 1, // so "alpha ~ 1 everywhere" (a real RGBM scene always has dark texels with // alpha < 1) identifies a plain map and skips the decode that would - // overbrighten it eightfold. - internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) + // overbrighten it eightfold. The optional direction texture is linear data and + // needs no decode at all. + internal static Lightmap ReadLightmap(Texture2D lightmap, Texture2D lightmapDir, Vector4 st) { int width = lightmap.width, height = lightmap.height; bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.RGBAHalf; @@ -358,7 +377,12 @@ internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); } } - return new Lightmap { pixels = pixels, width = width, height = height, st = st }; + var map = new Lightmap { pixels = pixels, width = width, height = height, st = st }; + if (lightmapDir != null) { + map.dirPixels = ReadPlain(lightmapDir, out map.dirWidth, out map.dirHeight); + map.hasDir = map.dirPixels != null; + } + return map; } finally { RenderTexture.active = previous; @@ -366,5 +390,27 @@ internal static Lightmap ReadLightmap(Texture2D lightmap, Vector4 st) if (copy) Object.DestroyImmediate(copy); } } + + static Color[] ReadPlain(Texture2D texture, out int width, out int height) + { + width = texture.width; height = texture.height; + var previous = RenderTexture.active; + var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); + Texture2D copy = null; + try { + Graphics.Blit(texture, rt); + RenderTexture.active = rt; + copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); + copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); + copy.Apply(); + return copy.GetPixels(); + } + catch (Exception) { return null; } + finally { + RenderTexture.active = previous; + RenderTexture.ReleaseTemporary(rt); + if (copy) Object.DestroyImmediate(copy); + } + } } } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index a8d9c772..1cc32c02 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -84,7 +84,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) var materialIds = new Dictionary(); var faceLightmaps = new List(); var lightmaps = new List(); - var lightmapIds = new Dictionary<(Texture2D, Vector4), int>(); + var lightmapIds = new Dictionary<(Texture2D, Texture2D, Vector4), int>(); string[] warnings; using (var reader = new Reader()) { foreach (var renderer in root.GetComponentsInChildren()) { @@ -149,13 +149,14 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) int lightmapId = -1; int lightmapIndex = renderer.lightmapIndex; if (lightmapIndex >= 0 && lightmapIndex < LightmapSettings.lightmaps.Length) { - var map = LightmapSettings.lightmaps[lightmapIndex].lightmapColor; + var data = LightmapSettings.lightmaps[lightmapIndex]; + var map = data.lightmapColor; var st = renderer.lightmapScaleOffset; if (map != null) { - var key = (map, st); + var key = (map, data.lightmapDir, st); if (!lightmapIds.TryGetValue(key, out lightmapId)) { lightmapId = lightmaps.Count; - lightmaps.Add(RemeshBeauty.ReadLightmap(map, st)); + lightmaps.Add(RemeshBeauty.ReadLightmap(map, data.lightmapDir, st)); lightmapIds.Add(key, lightmapId); } } From 180fb808195ca4c7edc100a2c543dd98280b477f Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 14:39:50 +0200 Subject: [PATCH 051/130] feat(remesh): beauty reflections and light response follow the game's specular and bump paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Probe reflections previously used one sharp readback lerped toward a flat average with an ad-hoc Fresnel. They now walk the game's specular path: URP's BoxProjectedCubemapDirection for box-probe localization, a six-level prefiltered equirectangular mip chain read back per probe through a texCUBElod blit and selected by the pipeline's r(1.7-0.7r) times maxMip remap with the fractional part lerped between levels, and EnvironmentBRDFSpecular verbatim — surface reduction 1/(r^2+1), grazing term saturate(smoothness+reflectivity), Schlick Fresnel on NdotV. All beauty lighting — the directional-lightmap half-Lambert, realtime NdotL, ambient and the specular view dot — now evaluates against the source's normal-map-perturbed normal, exactly as the game shades. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 6 +- Editor/RemeshBaker.cs | 12 ++++ Editor/RemeshBeauty.cs | 102 +++++++++++++++++++--------- Shaders/RemeshBeautyEquirect.shader | 5 +- 5 files changed, 93 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dcf5202..82165237 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: the unwrap wire layout really is sixteen float32 per vertex.** The ABI-3 native struct carried only twelve floats (no reserved tail), so the flat buffer the editor and the native tests read at a 16-float stride was packed at 12 — every field after the first vertex came out shifted garbage (the native test failed on `unit normals` / `normalized UV` on CI, which stopped the plugin rebuild and left the editor on stale ABI-2 binaries). A `static_assert` now pins the struct to the documented stride, and the version-mismatch error states the expected and loaded ABI plus the update/restart steps instead of a bare "Unsupported remesh native ABI". ### Changed +- **Beauty reflections and light response follow the game's specular and bump paths.** Probe reflections previously used one sharp readback lerped toward a flat average with an ad-hoc Fresnel. They now walk the game's specular path: URP's `BoxProjectedCubemapDirection` for box-probe localization, a six-level prefiltered equirectangular mip chain read back per probe (through a `texCUBElod` blit) selected by the pipeline's `r(1.7−0.7r)·maxMip` remap with the fractional part lerped between levels, and `EnvironmentBRDFSpecular` verbatim — surface reduction `1/(r²+1)`, grazing term `saturate(smoothness+reflectivity)`, Schlick Fresnel on NdotV. All Beauty lighting — the directional-lightmap half-Lambert, realtime N·L, ambient and the specular view dot — now evaluates against the source's normal-map-perturbed normal, exactly as the game shades. - **Beauty bakes reproduce the game's exact directional-lightmap response.** The lightmap colour was sampled flat, which overlights every surface whose normal disagrees with the baked dominant direction — the game shades those surfaces darker. The bake now ports URP's `SampleDirectionalLightmap` verbatim: the direction texture's encoded dominant direction (captured per face alongside the colour map, linear readback) is dotted with the surface's world normal as a half-Lambert and the result divides by the texel's rebalancing coefficient. Non-directional scenes keep the flat colour. For reference, Unity's official HLODSystem was studied for its texture/lightmap combination — it contains none (HLODs render unlightmapped through light probes and realtime light); the authoritative compositing lives in the render pipeline's runtime shaders, which is what this ports. - **Remesh & Bake: the tangent frame is regenerated after the UV cut, in meshoptimizer.** The unwrap output now carries per-vertex tangents from `meshopt_generateTangents` (MikkT-compatible, with mirrored-UV corner conflicts splitting their vertex), computed over the final atlas layout, so the bake, the 3D preview and the saved FBX all encode against one basis instead of Unity's separate recalculation (which stays only as a fallback). Vertex normals are likewise regenerated in C# from the split geometry for **every** hard-edge mode — crease splits and chart borders are already vertex splits, so the weighted accumulation smooths inside each split group and stays hard across creases and island borders alike. A new **Normal weighting** option (Blender Weighted Normal modifier analog) selects the accumulation weight: *Face area* (meshopt's own, default), *Corner angle*, or *Face area × corner angle*; the stale disablement of the smoothing slider in island modes is gone. Native ABI is now 3 with a sixteen-float unwrap vertex layout (position, normal, UV0, tangent) — the plugins must be rebuilt (**Build Native Libraries**, the auto workflow does it on push) and Unity restarted. - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 922a7d92..f87a063a 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -129,7 +129,11 @@ settings, marked "settings changed" in its header) and clears everything after i URP's `SampleDirectionalLightmap`: the encoded dominant direction is dotted with the surface's world normal as a half-Lambert and divided by the texel's rebalancing coefficient — not a flat colour, so oblique surfaces shade the way - they do in play. + they do in play. Reflections follow the game's specular path too — URP's + box-projected probe direction, the prefiltered probe mips selected by the + r(1.7−0.7r)·maxMip remap, and `EnvironmentBRDFSpecular` (surface reduction, + grazing term, Schlick Fresnel) — and all lighting, lightmap response and + specular alike, reacts to the source's normal map, as it does in play. With the **RemeshDiag** log filter enabled, every bake also prints its health counters to the Console: welded cage positions and split copies, one-sided border normals (max cage deviation), nearest-fallback projection samples, diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 01880c41..ea5a6c76 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -234,12 +234,24 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] // albedo × GI × baked lights × baked emission, so ambient and material emission // are not added again; only realtime/mixed direct light and the probe specular // ride on top. Unlightmapped faces get albedo × (direct + ambient) + emission. + // Lighting reacts to the source's normal map, exactly as the game shades: the + // bump-perturbed normal drives the directional-lightmap half-Lambert, the + // realtime N·L terms, the ambient probe and the specular view dot. static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vector3 w, Color albedo, Color metal, Color emission) { int a = source.indices[face * 3], b = source.indices[face * 3 + 1], c = source.indices[face * 3 + 2]; Vector3 p = source.positions[a] * w.x + source.positions[b] * w.y + source.positions[c] * w.z; Vector3 n = (source.normals[a] * w.x + source.normals[b] * w.y + source.normals[c] * w.z).normalized; + Vector4 tangent = source.tangents[a] * w.x + source.tangents[b] * w.y + source.tangents[c] * w.z; + Vector2 uv = source.uv[a] * w.x + source.uv[b] * w.y + source.uv[c] * w.z; + var surface = source.materials[source.faceMaterials[face]]; + if (surface.normal.image != null) { + var sample = surface.normal.Sample(uv, new Color(0.5f, 0.5f, 1)); + float nx = (sample.r * 2 - 1) * surface.normalScale, ny = (sample.g * 2 - 1) * surface.normalScale; + Basis(n, tangent, out var st, out var sb); + n = (st * nx + sb * ny + n * Mathf.Sqrt(Mathf.Max(0, 1 - nx * nx - ny * ny))).normalized; + } Color albedoLinear = albedo.linear; int lightmapId = source.faceLightmaps != null && face < source.faceLightmaps.Length ? source.faceLightmaps[face] : -1; Color lit; diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 314b5f10..05eeefce 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -33,12 +33,14 @@ internal sealed class Lightmap internal sealed class Probe { - public Color[] pixels; // linear equirect: u = atan2(z,x)/2π, v = acos(y)/π - public int width, height; - public Bounds bounds; // world space + public Color[][] mips; // equirect mip chain, sharpest first + public int[] widths, heights; // per level + public int mipCount; + public Bounds bounds; // world space public bool bounded; + public Vector3 worldPos, boxMin, boxMax; + public bool boxProjection; public float importance; - public Color average; } struct Directional { public Vector3 dir; public Color color; public float shadowStrength; } @@ -138,20 +140,18 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) if (!rp.enabled || !rp.gameObject.activeInHierarchy) continue; var texture = rp.customBakedTexture ? rp.customBakedTexture : rp.bakedTexture; if (texture == null) continue; - var read = ReadEquirect(texture, out int w, out int h); - if (read == null) continue; - probeList.Add(new Probe { pixels = read, width = w, height = h, - bounds = rp.bounds, bounded = true, importance = rp.importance, average = Average(read) }); + var probe = ReadProbe(texture, ProbeMips); + if (probe == null) continue; + probe.bounds = rp.bounds; probe.bounded = true; probe.importance = rp.importance; + probe.worldPos = rp.transform.position; + probe.boxMin = rp.bounds.min; probe.boxMax = rp.bounds.max; + probe.boxProjection = rp.boxProjection; + probeList.Add(probe); } probes = probeList.ToArray(); // No scene probe applies → the environment's custom reflection (Lighting ▸ // Environment Reflections) is the fallback Unity would blend to. - fallbackProbe = null; - if (RenderSettings.customReflection != null) { - var read = ReadEquirect(RenderSettings.customReflection, out int w2, out int h2); - if (read != null) - fallbackProbe = new Probe { pixels = read, width = w2, height = h2, average = Average(read) }; - } + fallbackProbe = RenderSettings.customReflection != null ? ReadProbe(RenderSettings.customReflection, ProbeMips) : null; // Specular is view-dependent; bake it for the scene view camera's vantage // when one is open, else a three-quarter view of the object. @@ -217,7 +217,11 @@ internal Color Ambient(Vector3 n) } /// Probe reflection seen from a source point: V points from the surface - /// toward the viewer. A simplified Standard Fresnel scales the probe colour. + /// toward the viewer. Ports the game's specular path: URP's + /// BoxProjectedCubemapDirection, the prefiltered-mip remap r(1.7−0.7r)·maxMip + /// with the fractional part lerped between two levels, and + /// EnvironmentBRDFSpecular (surface reduction 1/(r²+1), grazing term + /// saturate(smoothness+reflectivity), Schlick Fresnel on NdotV). internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, float smoothness) { Probe probe = PickProbe(localToWorld.MultiplyPoint3x4(p)); @@ -225,16 +229,38 @@ internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, floa Vector3 v = viewPosition - p; if (v.sqrMagnitude < 1e-10f) return Color.black; v.Normalize(); + Vector3 worldP = localToWorld.MultiplyPoint3x4(p); Vector3 worldR = localToWorld.MultiplyVector(Vector3.Reflect(-v, n)).normalized; - Color sample = SampleBilinear(probe.pixels, probe.width, probe.height, EquirectUV(worldR)); + Vector3 dir = probe.boxProjection ? BoxProjected(worldR, worldP, probe) : worldR; float roughness = Mathf.Clamp01(1f - smoothness); - Color color = Color.Lerp(sample, probe.average, roughness * 0.85f); - float ndv = Mathf.Clamp01(Vector3.Dot(n, v)); + float remapped = roughness * (1.7f - 0.7f * roughness); + float mipFloat = remapped * (probe.mipCount - 1); + int m0 = Mathf.Clamp(Mathf.FloorToInt(mipFloat), 0, probe.mipCount - 1); + int m1 = Mathf.Min(m0 + 1, probe.mipCount - 1); + Color sample = Color.Lerp( + SampleEquirect(probe.mips[m0], probe.widths[m0], probe.heights[m0], dir), + SampleEquirect(probe.mips[m1], probe.widths[m1], probe.heights[m1], dir), + mipFloat - m0); + float surfaceReduction = 1f / (roughness * roughness + 1f); Vector3 f0 = Vector3.Lerp(new Vector3(0.04f, 0.04f, 0.04f), new Vector3(albedo.r, albedo.g, albedo.b), metallic); - Vector3 fresnel = f0 + (Vector3.one - f0) * Mathf.Pow(1f - ndv, 5f); - float energy = 0.25f + 0.75f * smoothness; - return new Color(color.r * fresnel.x * energy, color.g * fresnel.y * energy, color.b * fresnel.z * energy, 0f); + float grazingComponent = Mathf.Clamp01(smoothness + Mathf.Lerp(0.04f, 1f, metallic)); + float fresnel = Mathf.Pow(1f - Mathf.Clamp01(Vector3.Dot(n, v)), 5f); + Vector3 specular = Vector3.Lerp(f0, new Vector3(grazingComponent, grazingComponent, grazingComponent), fresnel) * surfaceReduction; + return new Color(specular.x * sample.r, specular.y * sample.g, specular.z * sample.b, 0f); + } + + // URP BoxProjectedCubemapDirection, verbatim: the reflection ray is bent toward + // the probe-box faces so reflections localize inside the probe's volume. + static Vector3 BoxProjected(Vector3 r, Vector3 p, Probe probe) + { + var rb = new Vector3( + (r.x > 0f ? probe.boxMax.x : probe.boxMin.x) - p.x, + (r.y > 0f ? probe.boxMax.y : probe.boxMin.y) - p.y, + (r.z > 0f ? probe.boxMax.z : probe.boxMin.z) - p.z); + var t = new Vector3(rb.x / r.x, rb.y / r.y, rb.z / r.z); + float fa = Mathf.Min(Mathf.Min(t.x, t.y), t.z); + return p - probe.worldPos + r * fa; } internal Color SampleLightmap(Lightmap map, Vector2 uv2, Vector3 localNormal) @@ -284,6 +310,9 @@ static Vector2 EquirectUV(Vector3 dir) return new Vector2(u, v); } + static Color SampleEquirect(Color[] pixels, int width, int height, Vector3 dir) + => SampleBilinear(pixels, width, height, EquirectUV(dir)); + static Color SampleBilinear(Color[] pixels, int width, int height, Vector2 uv) { if (pixels == null || pixels.Length == 0) return Color.black; @@ -297,13 +326,6 @@ static Color SampleBilinear(Color[] pixels, int width, int height, Vector2 uv) static int Wrap(int v, int size) => v < 0 ? v + size : v >= size ? v - size : v; - static Color Average(Color[] pixels) - { - var sum = new Color(); - for (int i = 0; i < pixels.Length; ++i) sum += pixels[i]; - return pixels.Length > 0 ? sum / pixels.Length : Color.black; - } - static Bounds ComputeWorldBounds(GameObject root) { bool any = false; @@ -316,10 +338,10 @@ static Bounds ComputeWorldBounds(GameObject root) } // Cubemap → equirect readback through Hidden/MeshLab/RemeshBeautyEquirect - // (directions in world axes, linear). - internal static Color[] ReadEquirect(Texture cube, out int width, out int height) + // (directions in world axes, linear). lod samples the probe's own prefiltered + // mip — the roughness blur the game samples. + internal static Color[] ReadEquirect(Texture cube, int lod, int width, int height) { - width = 256; height = 128; var shader = Shader.Find("Hidden/MeshLab/RemeshBeautyEquirect"); if (!shader || !cube) return null; var material = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; @@ -327,6 +349,7 @@ internal static Color[] ReadEquirect(Texture cube, out int width, out int height var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); Texture2D copy = null; try { + material.SetFloat("_Lod", lod); Graphics.Blit(cube, rt, material); RenderTexture.active = rt; copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); @@ -343,6 +366,23 @@ internal static Color[] ReadEquirect(Texture cube, out int width, out int height } } + // Six-level equirectangular mip chain (256×128 halving down), mirroring the + // prefiltered mip chain the game samples with its r(1.7−0.7r)·maxMip remap. + const int ProbeMips = 6; + + static Probe ReadProbe(Texture cube, int levels) + { + var probe = new Probe { mips = new Color[levels][], widths = new int[levels], heights = new int[levels] }; + for (int lod = 0; lod < levels; ++lod) { + int width = Mathf.Max(4, 256 >> lod), height = Mathf.Max(2, 128 >> lod); + var read = ReadEquirect(cube, lod, width, height); + if (read == null) break; + probe.mips[lod] = read; probe.widths[lod] = width; probe.heights[lod] = height; + probe.mipCount = lod + 1; + } + return probe.mipCount > 0 ? probe : null; + } + // Lightmap readback for the source capture: plain blit into a float RT, then // decode. HDR encodings (Unity "High Quality", Bakery's default .hdr output) // come through linear directly. Unity's own RGBA32 lightmaps are RGBM diff --git a/Shaders/RemeshBeautyEquirect.shader b/Shaders/RemeshBeautyEquirect.shader index 337405b2..ebcf971d 100644 --- a/Shaders/RemeshBeautyEquirect.shader +++ b/Shaders/RemeshBeautyEquirect.shader @@ -14,12 +14,15 @@ Shader "Hidden/MeshLab/RemeshBeautyEquirect" #pragma fragment frag #include "UnityCG.cginc" samplerCUBE _MainTex; + float _Lod; float4 frag(v2f_img i) : SV_Target { float phi = i.uv.x * 2.0 * UNITY_PI; float theta = i.uv.y * UNITY_PI; float3 dir = float3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)); - return float4(texCUBE(_MainTex, dir).rgb, 1); + // _Lod samples the probe's own prefiltered mip — the roughness blur the + // game sees. The CPU side pairs two levels for the fractional part. + return float4(texCUBElod(_MainTex, float4(dir, _Lod)).rgb, 1); } ENDCG } From f7bc85c25313706e76d7fb0bc82611fdf346ff10 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Tue, 29 Sep 2026 18:19:57 +0200 Subject: [PATCH 052/130] =?UTF-8?q?fix(remesh):=20full-system=20recheck=20?= =?UTF-8?q?of=20the=20beauty=20path=20=E2=80=94=20two=20API=20guards?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ReflectionProbe.boxProjection is the ReflectionProbeBoxProjection enum, not a bool — the assignment would not compile; the probe now compares against Off. The MeshData readback path sets UV channels through List overloads, the shape every Unity version of SetUVs guarantees, instead of relying on an array overload. The rest of the sweep — beauty capture, bake composition, cage, capture filters, importers, tests' call shapes, stale-member greps — came back clean. --- Editor/Framework/UvCanvasView.cs | 6 +++--- Editor/RemeshBeauty.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 67ae6234..791ae569 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1273,17 +1273,17 @@ static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) if (dim <= 2) { var uv = ReadUV2(md, ch, count); - if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, uv); + if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, new List(uv)); } else if (dim == 3) { var uv = ReadUV3(md, ch, count); - if (uv.Length > 0) dst.SetUVs(ch, uv); + if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); } else { var uv = ReadUV4(md, ch, count); - if (uv.Length > 0) dst.SetUVs(ch, uv); + if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); } } dst.subMeshCount = md.subMeshCount; diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 05eeefce..3bb7bcbd 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -145,7 +145,7 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) probe.bounds = rp.bounds; probe.bounded = true; probe.importance = rp.importance; probe.worldPos = rp.transform.position; probe.boxMin = rp.bounds.min; probe.boxMax = rp.bounds.max; - probe.boxProjection = rp.boxProjection; + probe.boxProjection = rp.boxProjection != ReflectionProbeBoxProjection.Off; probeList.Add(probe); } probes = probeList.ToArray(); From 3e1f9125f076f614c305653488d4e412064b1e6b Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:03:57 +0000 Subject: [PATCH 053/130] fix(remesh): beauty lighting as the game shades it; smooth/angle modes stay smooth across islands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beauty (RemeshBeauty/RemeshBaker.BeautyLight): - Scene data stays in world space; queries convert each capture-space point and normal through the bound space matrix (ForSpace gives the same snapshot to every keep-hierarchy node). Light ranges, attenuation and shadow distances are in world units whatever the source root's scale. - Lightmapped faces shade albedo × (lightmap + realtime direct) + emission: Unity lightmaps store irradiance that the Lit shader multiplies by albedo. - Point and spot lights respect LightShadows.None and shadowStrength. Normals (RemeshNative): - In Smooth and Angle the copies xatlas duplicated along chart borders are grouped back by position and native crease group for the split-normal accumulation, and normal smoothing runs over the same groups, so only creases harden. The island modes keep every vertex as its own group. - Tangents are Gram-Schmidt re-orthogonalized against the final normals. Projection (RemeshBaker/TriangleBvh): - The front-face-filtered nearest fallback is bounded by the projection distance, like the unfiltered one. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Editor/RemeshBaker.cs | 16 +++-- Editor/RemeshBeauty.cs | 113 ++++++++++++++++++++------------ Editor/RemeshNative.cs | 87 ++++++++++++++++++++---- Editor/TriangleBvh.cs | 7 +- Tests/Editor/RemeshBakeTests.cs | 29 ++++++++ 5 files changed, 192 insertions(+), 60 deletions(-) diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index ea5a6c76..2fde9da3 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -214,8 +214,10 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] Vector3 sw = hit.barycentric; rayFallback = false; if (sourceFace < 0) { + // Both fallbacks stay bounded by the projection distance: an unbounded + // filtered query would smear an unrelated far part across a gap. var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f) + ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, distance) : bvh.FindNearest(p, distance); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; rayFallback = true; @@ -230,10 +232,11 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] } // Folds the captured scene lighting into the transferred albedo (all linear). - // A lightmapped face uses its lightmap as the base — the lightmap already holds - // albedo × GI × baked lights × baked emission, so ambient and material emission - // are not added again; only realtime/mixed direct light and the probe specular - // ride on top. Unlightmapped faces get albedo × (direct + ambient) + emission. + // Unity lightmaps store incoming irradiance (GI + baked lights), which the Lit + // shader multiplies by the material's diffuse response at runtime — so a + // lightmapped face shades albedo × (lightmap + realtime/mixed direct) + emission, + // with ambient left out (the lightmap already carries it); an unlightmapped face + // gets albedo × (direct + ambient) + emission. Probe specular rides on both. // Lighting reacts to the source's normal map, exactly as the game shades: the // bump-perturbed normal drives the directional-lightmap half-Lambert, the // realtime N·L terms, the ambient probe and the specular view dot. @@ -257,8 +260,7 @@ static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vec Color lit; if (lightmapId >= 0 && source.lightmaps != null && lightmapId < source.lightmaps.Length) { Vector2 uv2 = source.uv2[a] * w.x + source.uv2[b] * w.y + source.uv2[c] * w.z; - lit = beauty.SampleLightmap(source.lightmaps[lightmapId], uv2, n); - lit += albedoLinear * beauty.Direct(p, n); + lit = albedoLinear * (beauty.SampleLightmap(source.lightmaps[lightmapId], uv2, n) + beauty.Direct(p, n)) + emission; } else { lit = albedoLinear * (beauty.Direct(p, n) + beauty.Ambient(n)) + emission; diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 3bb7bcbd..ada716b4 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -13,8 +13,9 @@ namespace SashaRX.UnityMeshLab /// BVH), baked lightmaps (decoded to linear at readback — RGBM on desktop, direct /// HDR), the ambient probe (evaluated by Unity itself into a direction grid the /// workers interpolate) and reflection probes (equirectangular readbacks). - /// Everything is pre-transformed into the source root's local space so workers - /// stay in the capture's coordinate system. Baked-only lights are skipped — their + /// Scene data stays in world space; queries take capture-space points and normals + /// and convert through the bound space matrix, so one snapshot serves the weld and + /// every keep-hierarchy node (ForSpace). Baked-only lights are skipped — their /// contribution already lives in the lightmap, so nothing is counted twice. /// internal sealed class RemeshBeauty @@ -46,14 +47,18 @@ internal sealed class Probe struct Directional { public Vector3 dir; public Color color; public float shadowStrength; } struct Local { - public Vector3 pos, axis; // spot axis in local space (axis used when spot) + public Vector3 pos, axis; // world space (axis used when spot) public Color color; - public float rangeSqr, range, innerCos, outerCos; + public float rangeSqr, range, innerCos, outerCos, shadowStrength; public bool spot; } const int AmbientW = 32, AmbientH = 16; + // Scene data lives in WORLD space; every query converts its capture-space + // point/normal through localToWorld first, so one snapshot serves the weld and + // every keep-hierarchy node alike (see ForSpace) and light ranges, distances and + // attenuation all stay in the same units whatever the source root's scale. readonly Directional[] directionals = Array.Empty(); readonly Local[] locals = Array.Empty(); readonly Probe[] probes; @@ -61,17 +66,16 @@ struct Local readonly Color[] ambientGrid; // evaluated by Unity on the main thread readonly bool flatAmbient, trilightAmbient; readonly Color ambientFlat, ambientSky, ambientEquator, ambientGround; - readonly Vector3 viewPosition; // local space; specular is baked for this vantage - readonly Matrix4x4 localToWorld; - TriangleBvh bvh; // bound by the bake before workers run + readonly Vector3 viewPosition; // world space; specular is baked for this vantage + Matrix4x4 localToWorld, worldToLocal; + TriangleBvh bvh; // capture-space source BVH, bound by the bake before workers run float shadowEpsilon; - /// Capture the lighting environment around root. Main thread only. + /// Capture the lighting environment around root for geometry expressed in + /// root-local space. Main thread only. internal RemeshBeauty(GameObject root, float sourceDiagonal) { - var rootTransform = root.transform; - Matrix4x4 worldToLocal = rootTransform.worldToLocalMatrix; - localToWorld = rootTransform.localToWorldMatrix; + SetSpace(root.transform.localToWorldMatrix, sourceDiagonal); var dirList = new List(); var locList = new List(); @@ -81,24 +85,23 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) // double-count. URP has no subtractive mode, so Mixed direct is realtime. if (light.bakingOutput.lightmapBakeType == LightmapBakeType.Baked) continue; Color color = light.color.linear * light.intensity; + float shadowStrength = light.shadows == LightShadows.None ? 0f : light.shadowStrength; if (light.type == LightType.Directional) { dirList.Add(new Directional { - dir = worldToLocal.MultiplyVector(-(light.transform.rotation * Vector3.forward)).normalized, - color = color, - shadowStrength = light.shadows == LightShadows.None ? 0f : light.shadowStrength, + dir = -(light.transform.rotation * Vector3.forward).normalized, + color = color, shadowStrength = shadowStrength, }); } else if (light.type == LightType.Point) { - locList.Add(new Local { pos = worldToLocal.MultiplyPoint3x4(light.transform.position), - color = color, rangeSqr = light.range * light.range, range = light.range }); + locList.Add(new Local { pos = light.transform.position, color = color, + rangeSqr = light.range * light.range, range = light.range, shadowStrength = shadowStrength }); } else if (light.type == LightType.Spot) { float outer = light.spotAngle * 0.5f * Mathf.Deg2Rad; float inner = Mathf.Min(light.innerSpotAngle * 0.5f * Mathf.Deg2Rad, outer - 1e-4f); - locList.Add(new Local { pos = worldToLocal.MultiplyPoint3x4(light.transform.position), - axis = worldToLocal.MultiplyVector(light.transform.forward).normalized, + locList.Add(new Local { pos = light.transform.position, axis = light.transform.forward.normalized, color = color, rangeSqr = light.range * light.range, range = light.range, - innerCos = Mathf.Cos(inner), outerCos = Mathf.Cos(outer), spot = true }); + innerCos = Mathf.Cos(inner), outerCos = Mathf.Cos(outer), spot = true, shadowStrength = shadowStrength }); } } directionals = dirList.ToArray(); @@ -157,36 +160,56 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) // when one is open, else a three-quarter view of the object. var sceneCamera = SceneView.lastActiveSceneView != null ? SceneView.lastActiveSceneView.camera : null; Bounds world = ComputeWorldBounds(root); - Vector3 viewWorld = sceneCamera != null + viewPosition = sceneCamera != null ? sceneCamera.transform.position : world.center + new Vector3(0.55f, 0.45f, -0.7f).normalized * (world.extents.magnitude * 2.5f + 1f); - viewPosition = worldToLocal.MultiplyPoint3x4(viewWorld); + } + + /// The same scene snapshot for geometry captured in another space (a + /// keep-hierarchy node): shares the probe, lightmap and light data, converts + /// through the given matrix instead. Bind the node's own BVH before baking. + internal RemeshBeauty ForSpace(Matrix4x4 spaceToWorld, float sourceDiagonal) + { + var copy = (RemeshBeauty)MemberwiseClone(); + copy.bvh = null; + copy.SetSpace(spaceToWorld, sourceDiagonal); + return copy; + } + + void SetSpace(Matrix4x4 spaceToWorld, float sourceDiagonal) + { + localToWorld = spaceToWorld; + worldToLocal = spaceToWorld.inverse; shadowEpsilon = Mathf.Max(sourceDiagonal * 2e-3f, 1e-5f); } - /// The bake's source BVH, used for direct-light shadow rays. + /// The bake's source BVH (capture space), used for direct-light shadow rays. internal void BindShadows(TriangleBvh sourceBvh) => bvh = sourceBvh; - /// Direct realtime/mixed light at a source point (local space). Thread-safe. + Vector3 WorldNormal(Vector3 n) => worldToLocal.transpose.MultiplyVector(n).normalized; + + /// Direct realtime/mixed light at a source point (capture space). Thread-safe. internal Color Direct(Vector3 p, Vector3 n) { var sum = Color.black; + Vector3 pw = localToWorld.MultiplyPoint3x4(p), nw = WorldNormal(n); + Vector3 origin = p + n * shadowEpsilon; for (int i = 0; i < directionals.Length; ++i) { var d = directionals[i]; - float ndl = Vector3.Dot(n, d.dir); + float ndl = Vector3.Dot(nw, d.dir); if (ndl <= 0f) continue; - float shadow = Shadow(p + n * shadowEpsilon, d.dir, float.MaxValue); - if (shadow * d.shadowStrength >= 1f) continue; - sum += d.color * (ndl * (1f - shadow * d.shadowStrength)); + float shadow = d.shadowStrength > 0f ? Shadow(origin, worldToLocal.MultiplyVector(d.dir).normalized, float.MaxValue) * d.shadowStrength : 0f; + if (shadow >= 1f) continue; + sum += d.color * (ndl * (1f - shadow)); } for (int i = 0; i < locals.Length; ++i) { var l = locals[i]; - Vector3 toLight = l.pos - p; + Vector3 toLight = l.pos - pw; float distSq = toLight.sqrMagnitude; if (distSq > l.rangeSqr || distSq < 1e-10f) continue; float dist = Mathf.Sqrt(distSq); Vector3 dir = toLight / dist; - float weight = Vector3.Dot(n, dir); + float weight = Vector3.Dot(nw, dir); if (weight <= 0f) continue; if (l.spot) { float axis = -Vector3.Dot(dir, l.axis); // receiver looks along -axis toward the spot @@ -197,40 +220,48 @@ internal Color Direct(Vector3 p, Vector3 n) float q = dist / l.range; float window = Mathf.Max(0f, 1f - q * q * q * q); float attenuation = window * window / Mathf.Max(distSq, 1e-6f); - float shadow = Shadow(p + n * shadowEpsilon, dir, dist); + float shadow = 0f; + if (l.shadowStrength > 0f) { + // The shadow segment runs in capture space, so its length is the + // capture-space distance to the light, whatever the root's scale. + Vector3 toLightLocal = worldToLocal.MultiplyPoint3x4(l.pos) - p; + shadow = Shadow(origin, toLightLocal.normalized, toLightLocal.magnitude) * l.shadowStrength; + } sum += l.color * (weight * attenuation * (1f - shadow)); } return sum; } - /// Ambient irradiance for a surface direction (local space). Thread-safe. + /// Ambient irradiance for a surface direction (capture space). Thread-safe. internal Color Ambient(Vector3 n) { + Vector3 nw = WorldNormal(n); if (flatAmbient) return ambientFlat; if (trilightAmbient) { - float up = n.y * 0.5f + 0.5f; + float up = nw.y * 0.5f + 0.5f; return up < 0.5f ? Color.Lerp(ambientGround, ambientEquator, up * 2f) : Color.Lerp(ambientEquator, ambientSky, (up - 0.5f) * 2f); } - return SampleBilinear(ambientGrid, AmbientW, AmbientH, EquirectUV(localToWorld.MultiplyVector(n))); + return SampleBilinear(ambientGrid, AmbientW, AmbientH, EquirectUV(nw)); } - /// Probe reflection seen from a source point: V points from the surface - /// toward the viewer. Ports the game's specular path: URP's + /// Probe reflection seen from a source point (capture space): V points from + /// the surface toward the viewer. Ports the game's specular path: URP's /// BoxProjectedCubemapDirection, the prefiltered-mip remap r(1.7−0.7r)·maxMip /// with the fractional part lerped between two levels, and /// EnvironmentBRDFSpecular (surface reduction 1/(r²+1), grazing term /// saturate(smoothness+reflectivity), Schlick Fresnel on NdotV). internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, float smoothness) { - Probe probe = PickProbe(localToWorld.MultiplyPoint3x4(p)); + Vector3 worldP = localToWorld.MultiplyPoint3x4(p); + Probe probe = PickProbe(worldP); if (probe == null) return Color.black; - Vector3 v = viewPosition - p; + Vector3 v = viewPosition - worldP; if (v.sqrMagnitude < 1e-10f) return Color.black; v.Normalize(); - Vector3 worldP = localToWorld.MultiplyPoint3x4(p); - Vector3 worldR = localToWorld.MultiplyVector(Vector3.Reflect(-v, n)).normalized; + Vector3 nw = WorldNormal(n); + Vector3 worldR = Vector3.Reflect(-v, nw).normalized; Vector3 dir = probe.boxProjection ? BoxProjected(worldR, worldP, probe) : worldR; float roughness = Mathf.Clamp01(1f - smoothness); float remapped = roughness * (1.7f - 0.7f * roughness); @@ -245,7 +276,7 @@ internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, floa Vector3 f0 = Vector3.Lerp(new Vector3(0.04f, 0.04f, 0.04f), new Vector3(albedo.r, albedo.g, albedo.b), metallic); float grazingComponent = Mathf.Clamp01(smoothness + Mathf.Lerp(0.04f, 1f, metallic)); - float fresnel = Mathf.Pow(1f - Mathf.Clamp01(Vector3.Dot(n, v)), 5f); + float fresnel = Mathf.Pow(1f - Mathf.Clamp01(Vector3.Dot(nw, v)), 5f); Vector3 specular = Vector3.Lerp(f0, new Vector3(grazingComponent, grazingComponent, grazingComponent), fresnel) * surfaceReduction; return new Color(specular.x * sample.r, specular.y * sample.g, specular.z * sample.b, 0f); } @@ -275,7 +306,7 @@ internal Color SampleLightmap(Lightmap map, Vector2 uv2, Vector3 localNormal) // every surface whose normal disagrees with the dominant direction. Color d = SampleBilinear(map.dirPixels, map.dirWidth, map.dirHeight, uv); Vector3 dir = new Vector3(d.r, d.g, d.b) - new Vector3(0.5f, 0.5f, 0.5f); - float halfLambert = Vector3.Dot(localToWorld.MultiplyVector(localNormal), dir) + 0.5f; + float halfLambert = Vector3.Dot(WorldNormal(localNormal), dir) + 0.5f; float scale = halfLambert / Mathf.Max(1e-4f, d.a); illuminance = new Color(illuminance.r * scale, illuminance.g * scale, illuminance.b * scale, 1f); } diff --git a/Editor/RemeshNative.cs b/Editor/RemeshNative.cs index a35ece5f..e526f675 100644 --- a/Editor/RemeshNative.cs +++ b/Editor/RemeshNative.cs @@ -141,7 +141,8 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel // are smooth across chart borders — a soft edge beats a dead one). var nativeNormals = new Vector3[vertexCount]; for (int i = 0; i < vertexCount; ++i) nativeNormals[i] = result.normals[i]; - GenerateSplitNormals(result, settings.normalWeighting); + bool islandHardEdges = settings.hardEdges == RemeshHardEdges.UvIslands || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle; + var groups = GenerateSplitNormals(result, settings.normalWeighting, islandHardEdges ? null : nativeNormals); int healedNormals = 0; for (int i = 0; i < vertexCount; ++i) if (result.normals[i].sqrMagnitude < 1e-12f) { @@ -158,10 +159,14 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel UvtLog.Warn("[Remesh] " + zeroNormals + " of " + vertexCount + " split normals are still zero (the native output was zero as well); their rays fall back to the welded cage."); // Normal smoothing runs after UV generation so it works the same for - // every hard-edge source: crease splits and chart borders already - // materialized as vertex splits, and mesh edges never cross a split, - // so the pass stops at hard edges by construction. - SmoothNormals(result, settings.normalSmoothing); + // every hard-edge source: in the island modes crease splits and chart + // borders are vertex splits no edge crosses, so the pass stops at hard + // edges by construction; the other modes smooth over the welded groups. + SmoothNormals(result, settings.normalSmoothing, groups); + // The native tangents were generated against the native normals; the + // final normals differ (weighting, island borders, smoothing), so the + // saved frame is re-orthogonalized the way the bake's Basis() reads it. + OrthogonalizeTangents(result); return result; } finally { if (handle != IntPtr.Zero) meshLabRemeshDestroy(handle); } @@ -178,21 +183,47 @@ public static Geometry Unwrap(IndexedMesh input, RemeshSettings settings, Cancel // mesh: real captures are ~5 mm models whose raw crosses sit near 1e-7, // and an absolute floor there classified valid smooth vertices as // degenerate (the all-zero-normal regression on face-area weighting). + // Every output vertex is its own group: hard across every split (chart borders + // and creases alike) — the UV-island hard-edge modes. internal static void GenerateSplitNormals(Geometry geometry, RemeshNormalWeighting weighting) + => GenerateSplitNormals(geometry, weighting, null); + + // With smoothAcross given (the native, pre-chart normals), vertices that xatlas + // duplicated along chart borders are accumulated together again: copies at one + // position whose native normals agree (same crease group) share one normal, so + // Smooth stays smooth across islands and Angle hardens only its creases. + // Returns the per-vertex normal group (null when every vertex is its own). + internal static int[] GenerateSplitNormals(Geometry geometry, RemeshNormalWeighting weighting, Vector3[] smoothAcross) { - var sum = new Vector3[geometry.positions.Length]; var p = geometry.positions; + int[] group = null; + int groups = p.Length; + if (smoothAcross != null) { + group = new int[p.Length]; + var map = new System.Collections.Generic.Dictionary<(int, int, int, int, int, int), int>(p.Length); + groups = 0; + for (int i = 0; i < p.Length; ++i) { + var n = smoothAcross[i]; + var key = (BitConverter.SingleToInt32Bits(p[i].x), BitConverter.SingleToInt32Bits(p[i].y), BitConverter.SingleToInt32Bits(p[i].z), + Mathf.RoundToInt(n.x * 1024f), Mathf.RoundToInt(n.y * 1024f), Mathf.RoundToInt(n.z * 1024f)); + if (!map.TryGetValue(key, out int g)) { g = groups++; map[key] = g; } + group[i] = g; + } + } + int G(int v) => group == null ? v : group[v]; + var sum = new Vector3[groups]; bool byArea = weighting != RemeshNormalWeighting.CornerAngle; bool byAngle = weighting != RemeshNormalWeighting.FaceArea; for (int i = 0; i < geometry.indices.Length; i += 3) { int a = geometry.indices[i], b = geometry.indices[i + 1], c = geometry.indices[i + 2]; + int ga = G(a), gb = G(b), gc = G(c); Vector3 ab = p[b] - p[a], ac = p[c] - p[a], bc = p[c] - p[b]; Vector3 n = Vector3.Cross(ab, ac); // |n| = 2 * face area - if (!byAngle) { sum[a] += n; sum[b] += n; sum[c] += n; continue; } + if (!byAngle) { sum[ga] += n; sum[gb] += n; sum[gc] += n; continue; } Vector3 face = n.sqrMagnitude > 1e-30f ? n.normalized : Vector3.zero; float angleA = CornerAngle(ab, ac), angleB = CornerAngle(-ab, bc), angleC = CornerAngle(-ac, -bc); - if (byArea) { sum[a] += n * angleA; sum[b] += n * angleB; sum[c] += n * angleC; } - else { sum[a] += face * angleA; sum[b] += face * angleB; sum[c] += face * angleC; } + if (byArea) { sum[ga] += n * angleA; sum[gb] += n * angleB; sum[gc] += n * angleC; } + else { sum[ga] += face * angleA; sum[gb] += face * angleB; sum[gc] += face * angleC; } } float maxSq = 0f; for (int i = 0; i < sum.Length; ++i) { @@ -200,8 +231,25 @@ internal static void GenerateSplitNormals(Geometry geometry, RemeshNormalWeighti if (sq > maxSq) maxSq = sq; } float floor = maxSq * 1e-12f; - for (int i = 0; i < sum.Length; ++i) - if (sum[i].sqrMagnitude > floor) geometry.normals[i] = sum[i].normalized; + for (int i = 0; i < p.Length; ++i) + if (sum[G(i)].sqrMagnitude > floor) geometry.normals[i] = sum[G(i)].normalized; + return group; + } + + // Gram-Schmidt every tangent against the final vertex normal, keeping its + // handedness; a tangent that collapses onto the normal is left as generated. + internal static void OrthogonalizeTangents(Geometry geometry) + { + if (geometry.tangents == null) return; + for (int i = 0; i < geometry.tangents.Length; ++i) { + var t4 = geometry.tangents[i]; + var n = geometry.normals[i]; + var t = new Vector3(t4.x, t4.y, t4.z); + t -= n * Vector3.Dot(t, n); + if (t.sqrMagnitude < 1e-12f) continue; + t.Normalize(); + geometry.tangents[i] = new Vector4(t.x, t.y, t.z, t4.w); + } } // Angle between two edge directions meeting at a corner, in radians. @@ -218,8 +266,25 @@ static float CornerAngle(Vector3 u, Vector3 v) // more, opposing ones not at all), so smoothing flows along the surface and // stops at every hard edge — crease splits and UV chart borders alike. internal static void SmoothNormals(Geometry geometry, float smoothing) + => SmoothNormals(geometry, smoothing, null); + + // With a normal group per vertex (see GenerateSplitNormals) the pass runs over + // the group-welded connectivity, so it flows through chart borders that are not + // hard edges instead of letting the copies drift apart, and every member of a + // group ends with the same normal. + internal static void SmoothNormals(Geometry geometry, float smoothing, int[] group) { if (smoothing <= 0) return; + if (group != null) { + int groups = 0; + foreach (int g in group) groups = Math.Max(groups, g + 1); + var welded = new Geometry { normals = new Vector3[groups], indices = new int[geometry.indices.Length] }; + for (int i = 0; i < group.Length; ++i) welded.normals[group[i]] = geometry.normals[i]; + for (int i = 0; i < geometry.indices.Length; ++i) welded.indices[i] = group[geometry.indices[i]]; + SmoothNormals(welded, smoothing, null); + for (int i = 0; i < group.Length; ++i) geometry.normals[i] = welded.normals[group[i]]; + return; + } int passes = Math.Min(10, (int)Math.Ceiling(smoothing)); var normals = geometry.normals; var indices = geometry.indices; diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index b3acdc23..7581f3ec 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -69,8 +69,13 @@ public HitResult FindNearest(Vector3 queryPoint, float maxDist) /// public HitResult FindNearestNormalFiltered(Vector3 queryPoint, Vector3 queryNormal, Vector3[] faceNormals, float normalDotMin) + => FindNearestNormalFiltered(queryPoint, queryNormal, faceNormals, normalDotMin, float.MaxValue); + + /// Normal-filtered nearest triangle within maxDist; triangleIndex -1 when none qualifies. + public HitResult FindNearestNormalFiltered(Vector3 queryPoint, Vector3 queryNormal, + Vector3[] faceNormals, float normalDotMin, float maxDist) { - var best = new HitResult { triangleIndex = -1, distSq = float.MaxValue }; + var best = new HitResult { triangleIndex = -1, distSq = maxDist >= float.MaxValue ? float.MaxValue : maxDist * maxDist }; FindNearestNormFiltRecursive(0, queryPoint, queryNormal, faceNormals, normalDotMin, ref best); return best; } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index cfc4d7d7..f445db52 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -154,6 +154,35 @@ public void UvIslandNormalsAreHardOnlyAtSplitVertices() Assert.That(Vector3.Angle(both.normals[0], shared.normals[0]), Is.LessThan(0.01f)); } [Test] + public void SmoothModeWeldsChartBorderCopiesByNativeNormalGroup() + { + // The same 90° fold, split along its shared edge as xatlas splits a chart + // border. With the native (smooth) normals as the group key the copies weld + // back into one smooth normal; with crease-split native normals they stay hard. + var p=new[] { Vector3.zero, Vector3.right, Vector3.forward, Vector3.up, Vector3.zero, Vector3.right }; + var indices=new[] { 0,1,2, 5,4,3 }; + var smooth=Vector3.Normalize(new Vector3(0,-1,-1)); + var welded=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=indices }; + var groups=RemeshNative.GenerateSplitNormals(welded, RemeshNormalWeighting.FaceArea, new[] { smooth,smooth,smooth,smooth,smooth,smooth }); + Assert.That(Vector3.Angle(welded.normals[0], welded.normals[4]), Is.LessThan(0.01f)); + Assert.That(Vector3.Angle(welded.normals[0], smooth), Is.LessThan(0.01f)); + Assert.AreEqual(groups[0], groups[4], "coincident copies share a normal group"); + var creased=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=indices }; + RemeshNative.GenerateSplitNormals(creased, RemeshNormalWeighting.FaceArea, + new[] { Vector3.back,Vector3.back,Vector3.back, Vector3.down,Vector3.down,Vector3.down }); + Assert.That(Vector3.Angle(creased.normals[0], creased.normals[4]), Is.EqualTo(90).Within(0.01f)); + // Smoothing over the welded groups keeps every member of a group identical. + welded.normals[4]=Vector3.up; + RemeshNative.SmoothNormals(welded, 1, groups); + Assert.That(Vector3.Angle(welded.normals[0], welded.normals[4]), Is.LessThan(0.01f)); + // Tangents come out orthogonal to the final normal, handedness intact. + welded.tangents=new Vector4[6]; + for (int i=0;i<6;++i) welded.tangents[i]=new Vector4(0,1,1,-1); + RemeshNative.OrthogonalizeTangents(welded); + Assert.That(Mathf.Abs(Vector3.Dot(welded.tangents[0], welded.normals[0])), Is.LessThan(1e-5f)); + Assert.AreEqual(-1f, welded.tangents[0].w); + } + [Test] public void ImageSamplingUsesLinearInterpolationAndWrapModes() { var image=new RemeshSource.Image { width=2,height=1,pixels=new[] { new Color32(0,0,0,255),new Color32(255,255,255,255) }, From f2170fcfe8456a73de5f45924ff15f176de8b38f Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:03:57 +0000 Subject: [PATCH 054/130] refactor(remesh): split RemeshBakeTool into RemeshPipeline, RemeshExporter and the tab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RemeshBakeTool mixed IMGUI, two copies of every stage (weld / keep-hierarchy) and two near-identical save paths. Now: - RemeshPipeline runs the stages over a list of nodes: the weld is one node in root space, keep-hierarchy one node per renderer, one loop per stage, one ClearFrom, previews from the primary (largest) node, Key/IsStale for the "(settings changed)" markers. Owns every mesh/texture it creates. - RemeshExporter writes maps (write+import batch, then configure batch), materials, meshes and the prefab/FBX through one path for both lanes. - RemeshSource.CollectRenderers is the one renderer filter for both lanes; Capture takes a space matrix and a renderer list; ReadableScope owns the Read/Write flip. - RemeshBakeTool keeps the tab: settings, selection following, sidebar, save. Behaviour fixed on the way (keep-hierarchy): each renderer is exactly one node (subtrees were captured twice), the node capture space is root × TRS so sheared renderer matrices keep their residual, mesh-asset _COL/_LOD names are filtered like the weld, node meshes are destroyed on re-unwrap, colors are cleared on a re-bake without transfer, UV/cage previews get the largest node's geometry, the save configures texture importers after the import batch closes. Normalized saves recalculate bounds, scale tangents forward and flip handedness on a mirror; the saved scale is the one captured at remesh time; skinned-only roots follow the selection. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 10 + Documentation~/REMESH_AND_BAKE.md | 51 +- Editor/RemeshExporter.cs | 351 ++++++++++ Editor/RemeshExporter.cs.meta | 11 + Editor/RemeshPipeline.cs | 432 ++++++++++++ Editor/RemeshPipeline.cs.meta | 11 + Editor/RemeshSource.cs | 107 ++- Editor/Tools/RemeshBakeTool.cs | 939 +++------------------------ Tests/Editor/RemeshHierarchyTests.cs | 41 +- 9 files changed, 1080 insertions(+), 873 deletions(-) create mode 100644 Editor/RemeshExporter.cs create mode 100644 Editor/RemeshExporter.cs.meta create mode 100644 Editor/RemeshPipeline.cs create mode 100644 Editor/RemeshPipeline.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 82165237..92f3ec7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] +### Changed +- **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction) and `RemeshSource.ReadableScope` owns the Read/Write flip. `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. + +### Fixed +- **Remesh & Bake, keep hierarchy: nothing is captured twice, sheared transforms survive, and previews/exports are coherent.** A node's capture folded its whole subtree in while every child renderer was also its own node, so nested renderers baked into two meshes; each renderer is now exactly one node. A node's capture space is the TRS the save restores (root × TRS), so a rotated child under a non-uniformly scaled parent folds the residual shear into its geometry instead of losing it. The node list applies the same mesh-asset name filters (`_COL`, `_LOD{n}`) as the weld, so a normally named object carrying a collision mesh no longer aborts the whole run. Re-running Normals & UV destroys the previous node meshes (each iteration leaked one `HideAndDontSave` mesh per node); a re-bake with vertex color transfer off clears the colors the previous bake left on every node; the UV and cage previews show the largest node's geometry instead of "run the UV stage"; and the hierarchy save imports the map files before configuring their importers (one `AssetEditingScope` deferred the imports past the importer lookup, which could fail and roll the whole folder back). +- **Remesh & Bake: Beauty bakes shade lightmapped faces as the game does.** The lightmap was written out as the colour itself; Unity lightmaps store irradiance that the Lit shader multiplies by albedo, so textured lightmapped objects baked as flat light. Lightmapped faces are now albedo × (lightmap + realtime direct) + emission. Point and spot lights respect their shadow setting and strength (they cast opaque shadows regardless before), light ranges and shadow distances are evaluated in world units (a root scaled to 0.01 or 100 no longer stretches or shrinks their reach), and keep-hierarchy nodes evaluate the lighting in their own space instead of the root's. +- **Remesh & Bake: *Smooth* and *Angle* hard-edge modes are smooth across UV islands again.** The post-unwrap normal regeneration accumulated per output vertex, and xatlas splits vertices along every chart border, so every mode hardened island borders — *Smooth* behaved like *UV islands*, *Angle* like *UV islands + angle*. Copies along chart borders are now grouped back by position and native crease group, and normal smoothing runs over the same groups. Tangents are re-orthogonalized against the final normals so the saved frame matches the bake's. The front-face-filtered nearest fallback is bounded by the projection distance like the unfiltered one (it could sample an arbitrarily distant part across a gap). +- **Remesh & Bake, normalized saves: bounds and tangents.** Baking the source scale into the mesh left `mesh.bounds` at the unscaled size (culling at the wrong extent) and scaled tangents by the inverse like normals — tangents are direction vectors and take the forward scale, then re-orthogonalize; a mirroring scale also flips the tangent handedness with the winding. Skinned-only roots now follow the hierarchy selection like mesh roots. The saved model's scale is the one captured at remesh time, not whatever is selected at save time. +- **Repository: a stray screenshot committed at the package root is removed.** + ### Added - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index f87a063a..83b81cb5 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -114,9 +114,13 @@ settings, marked "settings changed" in its header) and clears everything after i (equirectangular readbacks, roughness-lerped) all folded into one lit **BaseColor** texture. Baked-only lights are skipped for lightmapped faces, so nothing is counted twice; unlightmapped faces get albedo × (direct + ambient) + - emission, lightmapped faces use the lightmap as the base (it already contains - albedo × GI × baked emission) with realtime direct on top. Specular is + emission, lightmapped faces get albedo × (lightmap + realtime direct) + + emission — Unity lightmaps store irradiance, which the Lit shader multiplies + by the material's albedo at runtime, so the bake does the same. Specular is view-dependent and is baked for the scene view camera's position at bake time. + Scene lighting is captured once in world space and every capture space (the + weld, or each keep-hierarchy node) converts into it, so light ranges, shadow + distances and probe bounds stay in world units whatever the source's scale. The saved material becomes **Unlit/Texture** with that one map (the other maps still export alongside); the 3D preview renders beauty results unlit, exactly like the saved material. @@ -167,6 +171,27 @@ settings, marked "settings changed" in its header) and clears everything after i Native work (remesh, simplify, unwrap) and CPU projection run off the main thread. Texture snapshots and Unity mesh/asset APIs stay on the main thread. +## Code layout + +- `Editor/Tools/RemeshBakeTool.cs` — the tab: source selection, per-stage + settings and buttons, the right-sidebar previews, the save button. +- `Editor/RemeshPipeline.cs` — the stage machine. The work unit is a node + (capture → voxel → simplified → unwrapped → baked); the weld is one node in + root space, keep-hierarchy one node per renderer, and every stage runs the same + loop. Owns every mesh and preview texture it creates; `ClearFrom(stage)` drops + a stage and everything after it; `Key`/`IsStale` drive the "(settings + changed)" markers. +- `Editor/RemeshSource.cs` — `CollectRenderers` (the one filter for both lanes), + `Capture` (geometry, materials, textures and lightmaps in a given space) and + `ReadableScope` (Read/Write on for the capture, back off after). +- `Editor/RemeshNative.cs` — the P/Invoke bridge and the post-unwrap normal / + tangent regeneration. +- `Editor/RemeshBaker.cs` — the CPU projection; `Editor/RemeshBeauty.cs` — the + scene lighting snapshot for Beauty bakes. +- `Editor/RemeshExporter.cs` — the save: maps, materials, meshes, prefab or FBX, + one path for the weld and for hierarchy nodes. +- `Editor/RemeshPreview.cs` — the 3D / UV / Maps previews. + ## Geometry implementation `Native~/src/remesh.cpp` uses meshoptimizer v1.3 @@ -182,12 +207,17 @@ regenerated by `meshopt_generateTangents` (MikkT-compatible) from the final atlas layout, so the bake, the preview and the saved mesh all encode against one basis; corners that disagree duplicate their vertex. The vertex normals themselves are regenerated in C# **after** the UV cut from -the split geometry: crease splits and chart borders are already vertex splits -and no face crosses one, so the accumulation smooths inside every split group -and stays hard across creases and island borders alike, whatever the hard-edge -mode. The *Normal weighting* option selects the accumulation weight — face -area (meshopt's own), corner angle, or both multiplied (the Blender Weighted -Normal modifier analog). +the split geometry. In the UV-island modes every output vertex is its own +normal group: crease splits and chart borders are already vertex splits and no +face crosses one, so the accumulation smooths inside every island and stays +hard across creases and island borders alike. In *Smooth* and *Angle* the +copies xatlas duplicated along chart borders are grouped back together by +position and native (pre-chart, crease-split) normal, so islands stay smooth +and only the crease edges harden; normal smoothing runs over the same groups. +The *Normal weighting* option selects the accumulation weight — face area +(meshopt's own), corner angle, or both multiplied (the Blender Weighted +Normal modifier analog). Tangents are re-orthogonalized against the final +normals so the saved frame matches the one the bake encodes against. v1.3 removed the non-functional Thicken flag and renumbered `meshopt_RemeshShell` and `meshopt_RemeshSolve`. The bridge keeps its own flag bits (1 = fit source surface, 2 = two-sided shell) and maps them by name, so the C# ABI is unchanged; @@ -233,7 +263,10 @@ compression or max-size settings. mappings for no gain over the native prefab), the source root's scale stays on the prefab root (so *Normalized size* is weld-only and says so), and preview panels show the largest node's stage outputs. Node granularity = the renderers - of the capture scope; a node's own subtree merges into that node. + of the capture scope (the same list the weld captures); each renderer is its + own node, so nothing is captured twice. A node's capture space is the TRS the + save restores, so a sheared renderer matrix (rotated child under a + non-uniform parent) folds its residual into the captured geometry. - No skinning, blend-shape, alpha cutout/transparency, parallax or detail-layer transfer. Shaders other than Standard and URP/Lit bake base color, normal, occlusion, emission and scalar metallic/smoothness from common property names; diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs new file mode 100644 index 00000000..0e07e050 --- /dev/null +++ b/Editor/RemeshExporter.cs @@ -0,0 +1,351 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Writes a baked result to a new, uniquely named folder: + /// the five maps per node (imported with the right texture settings), one material + /// per node, the meshes and a prefab. A single-node (weld) result ships as an FBX + /// when the FBX exporter package is present, otherwise as a mesh asset; a + /// keep-hierarchy result is always mesh assets under a rebuilt root prefab. + /// Source assets are never written; a failed export deletes the folder again. + /// + internal static class RemeshExporter + { + static readonly string[] MapNames = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; + const int EmissionMap = 4; + + /// + /// "/remesh" when the source root resolves to an imported + /// asset (a prefab/model instance, or any mesh asset under it), created if + /// missing; null when the source is scene-only and a folder must be picked. + /// + public static string ResolveDefaultFolder(GameObject source) + { + string assetPath = null; + if (source) { + assetPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(source); + if (string.IsNullOrEmpty(assetPath)) { + var filter = source.GetComponentInChildren(); + if (filter && filter.sharedMesh) assetPath = AssetDatabase.GetAssetPath(filter.sharedMesh); + } + } + if (string.IsNullOrEmpty(assetPath)) return null; + string dir = Path.GetDirectoryName(assetPath); + if (string.IsNullOrEmpty(dir)) return null; + dir = dir.Replace('\\', '/'); + if (!dir.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) || !AssetDatabase.IsValidFolder(dir)) + return null; + string remesh = dir + "/remesh"; + if (!AssetDatabase.IsValidFolder(remesh)) AssetDatabase.CreateFolder(dir, "remesh"); + return AssetDatabase.IsValidFolder(remesh) ? remesh : null; + } + + /// Folder picker restricted to Assets; null with a reason when declined or invalid. + public static string PickFolder(out string error) + { + error = null; + string parent = EditorUtility.OpenFolderPanel("Save Remesh Result", Application.dataPath, ""); + if (string.IsNullOrEmpty(parent)) return null; + parent = parent.Replace('\\', '/'); + string assets = Application.dataPath.Replace('\\', '/'); + if (parent != assets && !parent.StartsWith(assets + "/", StringComparison.Ordinal)) { + error = "Choose a folder inside Assets."; return null; + } + string relative = "Assets" + parent.Substring(assets.Length); + // The folder panel can create a directory the AssetDatabase has not imported + // yet; GenerateUniqueAssetPath/CreateFolder then fail on the unknown parent. + if (!AssetDatabase.IsValidFolder(relative)) AssetDatabase.Refresh(); + if (!AssetDatabase.IsValidFolder(relative)) { + error = relative + " is not an imported asset folder. Refresh the Project window and save again."; return null; + } + return relative; + } + + /// Exports the baked result into a new folder under parentFolder and + /// returns the status line. Throws after rolling the folder back on failure. + public static string Export(RemeshPipeline pipeline, RemeshSettings settings, string parentFolder) + { + if (pipeline.Nodes.Count == 0 || !pipeline.Has(RemeshPipeline.Stage.Bake)) throw new InvalidOperationException("Nothing to save: run the bake first."); + string clean = SafeName(pipeline.ResultName, "Remesh"); + string folder = AssetDatabase.GenerateUniqueAssetPath(parentFolder + "/" + clean + "_Remesh"); + bool createdFolder = false; + var temporary = new List(); + try { + // Beauty bakes fold the lighting into the BaseColor; the result shades + // Unlit (pipeline-agnostic) instead of Standard/URP-Lit. + bool unlit = pipeline.Primary.maps.beauty; + var shader = ResolveShader(unlit, out bool urp); + string guid = AssetDatabase.CreateFolder(parentFolder, Path.GetFileName(folder)); + if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create " + folder + "."); + createdFolder = true; + folder = AssetDatabase.GUIDToAssetPath(guid); + + bool hierarchy = pipeline.IsHierarchy; + var nodes = pipeline.Nodes; + var names = UniqueNames(nodes, hierarchy); + // Maps: write + import every file in one batch, then configure the + // importers in a second batch — imports are deferred until the first + // scope closes, so an importer lookup inside it would come back null. + var paths = new string[nodes.Count][]; + using (new AssetDatabase.AssetEditingScope()) + for (int i = 0; i < nodes.Count; ++i) + paths[i] = WriteMaps(folder, hierarchy ? names[i] + "_" : "", nodes[i].maps); + using (new AssetDatabase.AssetEditingScope()) + for (int i = 0; i < nodes.Count; ++i) ConfigureMaps(paths[i], nodes[i].maps.size); + + // Materials, meshes and the object tree. The result meshes live in their + // capture space; the weld bakes the root's world scale into the vertices + // when Normalize size is on (real size at scale 1), a hierarchy keeps the + // root scale on the prefab root (no single vertex space to bake it into). + bool normalize = settings.normalizeSize && !hierarchy; + if (settings.normalizeSize && hierarchy) + UvtLog.Warn("[Remesh export] Keep-hierarchy saves keep the source root's scale on the prefab root; 'Normalize size' applies to the single-mesh weld only."); + var root = new GameObject(clean + "_LOD0"); + temporary.Add(root); + root.transform.localScale = normalize ? Vector3.one : pipeline.RootScale; + var materials = new Material[nodes.Count]; + var meshes = new Mesh[nodes.Count]; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + materials[i] = CreateMaterial(shader, urp, node.maps.beauty, names[i] + "_Remesh", paths[i]); + temporary.Add(materials[i]); + meshes[i] = Object.Instantiate(node.mesh); + meshes[i].name = names[i] + "_LOD0"; meshes[i].hideFlags = HideFlags.None; + temporary.Add(meshes[i]); + if (normalize) BakeScaleIntoMesh(meshes[i], pipeline.RootScale); + var go = hierarchy ? new GameObject(names[i]) : root; + go.AddComponent().sharedMesh = meshes[i]; + go.AddComponent().sharedMaterial = materials[i]; + if (hierarchy) { + go.transform.localPosition = node.localPosition; + go.transform.localRotation = node.localRotation; + go.transform.localScale = node.localScale; + go.transform.SetParent(root.transform, false); + } + } + + string prefabPath = folder + "/" + clean + ".prefab"; + using (new AssetDatabase.AssetEditingScope()) + for (int i = 0; i < nodes.Count; ++i) + AssetDatabase.CreateAsset(materials[i], folder + "/" + names[i] + ".mat"); + Object ping; +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + if (!hierarchy) { + ping = ExportFbx(folder + "/" + clean + ".fbx", root, materials[0], prefabPath, settings.embedFbxTextures); + } + else +#endif + { + using (new AssetDatabase.AssetEditingScope()) + for (int i = 0; i < nodes.Count; ++i) + AssetDatabase.CreateAsset(meshes[i], folder + "/" + names[i] + "_LOD0.asset"); + PrefabUtility.SaveAsPrefabAsset(root, prefabPath, out bool success); + if (!success) throw new IOException("Prefab save failed."); + ping = AssetDatabase.LoadAssetAtPath(prefabPath); + } + AssetDatabase.SaveAssets(); + EditorGUIUtility.PingObject(ping); + string status = hierarchy ? $"Saved: {folder} ({nodes.Count} node(s))" : "Saved: " + folder; + UvtLog.Info("[Remesh export] " + status); + return status; + } + catch (Exception e) { + if (createdFolder && AssetDatabase.IsValidFolder(folder)) AssetDatabase.DeleteAsset(folder); + UvtLog.Error("[Remesh export] " + e); + throw; + } + finally { + // Everything that became an asset is owned by the AssetDatabase now; the + // rest (the scene-less object tree, and all of it on failure) goes. + foreach (var o in temporary) + if (o && !AssetDatabase.Contains(o)) Object.DestroyImmediate(o); + } + } + +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + // The model ships as an FBX (geometry, split normals, UV0, tangents, vertex + // colors); the material stays a curated asset next to it that the prefab + // references. This is brand-new geometry in a uniquely created folder, not a + // channel re-save of a source FBX, so the isolated-export core's same-vertex- + // count snapshot contract does not apply; a failed export still rolls the + // whole folder back. + static Object ExportFbx(string fbxPath, GameObject root, Material material, string prefabPath, bool embedTextures) + { + UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { root }, + new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { + ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary, + // Embedded maps make the FBX self-contained; a linked FBX would + // reference this machine's absolute paths instead. + EmbedTextures = embedTextures }); + var fbxInfo = new FileInfo(Path.GetFullPath(fbxPath)); + if (!fbxInfo.Exists || fbxInfo.Length == 0) throw new IOException("FBX export produced an empty file."); + var modelImporter = (ModelImporter)AssetImporter.GetAtPath(fbxPath); + if (modelImporter != null) { + // The curated material + prefab ship next to the FBX; keep the importer + // from generating a duplicate MaterialDescription copy. + modelImporter.materialImportMode = ModelImporterMaterialImportMode.None; + // The normal map was baked against the exported tangent frame; a + // recalculation (MikkT default) can flip its handedness per vertex, + // which green-flips chunks of the baked map. + modelImporter.importNormals = ModelImporterNormals.Import; + modelImporter.importTangents = ModelImporterTangents.Import; + modelImporter.SaveAndReimport(); + } + var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; + if (!fbxRoot) throw new IOException("FBX reimport failed."); + var instance = (GameObject)PrefabUtility.InstantiatePrefab(fbxRoot); + try { + instance.GetComponentInChildren().sharedMaterial = material; + PrefabUtility.SaveAsPrefabAsset(instance, prefabPath, out bool success); + if (!success) throw new IOException("Prefab save failed."); + } + finally { Object.DestroyImmediate(instance); } + return fbxRoot; + } +#endif + + // ── pieces ── + + static Shader ResolveShader(bool unlit, out bool urp) + { + var pipeline = GraphicsSettings.currentRenderPipeline; + urp = !unlit && pipeline != null; + if (urp && !pipeline.GetType().Name.Contains("Universal")) + throw new InvalidOperationException("Result materials support Built-in and URP; HDRP export is not implemented."); + string shaderName = unlit ? "Unlit/Texture" : urp ? "Universal Render Pipeline/Lit" : "Standard"; + var shader = Shader.Find(shaderName); + if (!shader) throw new InvalidOperationException("Result shader is unavailable: " + shaderName); + return shader; + } + + // Node file names: the sanitized node name, made unique; the weld uses the + // result name itself. + static string[] UniqueNames(IReadOnlyList nodes, bool hierarchy) + { + var names = new string[nodes.Count]; + var used = new HashSet(StringComparer.OrdinalIgnoreCase); + for (int i = 0; i < nodes.Count; ++i) { + string clean = SafeName(nodes[i].name, hierarchy ? "Node" : "Remesh"); + string unique = clean; + int suffix = 2; + while (!used.Add(unique)) unique = clean + "_" + suffix++; + names[i] = unique; + } + return names; + } + + internal static string SafeName(string name, string fallback) + { + string clean = name ?? ""; + foreach (char c in Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); + clean = clean.Replace('/', '_').Replace('\\', '_'); + return string.IsNullOrWhiteSpace(clean) ? fallback : clean; + } + + // Writes and imports the five maps; call inside an AssetEditingScope. These are + // new exports in a uniquely created folder, never source-asset writes. + static string[] WriteMaps(string folder, string prefix, RemeshBaker.Maps maps) + { + var paths = new string[MapNames.Length]; + for (int i = 0; i < paths.Length; ++i) { + paths[i] = folder + "/" + prefix + MapNames[i] + (i == EmissionMap ? ".exr" : ".png"); + File.WriteAllBytes(paths[i], Encode(maps, i)); + AssetDatabase.ImportAsset(paths[i]); + } + return paths; + } + + static void ConfigureMaps(string[] paths, int size) + { + for (int i = 0; i < paths.Length; ++i) { + var importer = AssetImporter.GetAtPath(paths[i]) as TextureImporter; + if (importer == null) throw new IOException("Texture import failed: " + paths[i]); + importer.textureType = i == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; + importer.sRGBTexture = i == 0; importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = size; importer.textureCompression = TextureImporterCompression.Uncompressed; + importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; + importer.SaveAndReimport(); + } + } + + static Material CreateMaterial(Shader shader, bool urp, bool unlit, string name, string[] paths) + { + var material = new Material(shader) { name = name }; + Texture2D Map(int i) => AssetDatabase.LoadAssetAtPath(paths[i]); + if (unlit) { + // One lit texture in, one texture out — the other maps still export + // alongside for reference, but nothing samples them. + material.SetTexture("_MainTex", Map(0)); + return material; + } + material.SetTexture(urp ? "_BaseMap" : "_MainTex", Map(0)); + material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); + material.SetTexture("_BumpMap", Map(1)); + material.SetTexture("_MetallicGlossMap", Map(2)); + material.SetTexture("_OcclusionMap", Map(3)); + material.SetTexture("_EmissionMap", Map(4)); + material.SetColor("_EmissionColor", Color.white); + material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); + material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); + material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); + material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); + if (urp) material.EnableKeyword("_OCCLUSIONMAP"); + return material; + } + + // Bakes a world scale into the vertex data so the saved root sits at scale 1: + // positions and tangents (direction vectors) scale component-wise, normals take + // the inverse (inverse-transpose of a diagonal matrix); both renormalize and the + // tangent is re-orthogonalized against its normal. A negative determinant + // mirrors the mesh, so the winding and the tangent handedness flip with it. + internal static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) + { + if (Mathf.Approximately(scale.x, 1) && Mathf.Approximately(scale.y, 1) && Mathf.Approximately(scale.z, 1)) return; + if (Mathf.Abs(scale.x) < 1e-6f || Mathf.Abs(scale.y) < 1e-6f || Mathf.Abs(scale.z) < 1e-6f) return; + bool mirrored = scale.x * scale.y * scale.z < 0; + var vertices = mesh.vertices; + for (int i = 0; i < vertices.Length; ++i) vertices[i] = Vector3.Scale(vertices[i], scale); + mesh.vertices = vertices; + var inv = new Vector3(1f / scale.x, 1f / scale.y, 1f / scale.z); + var normals = mesh.normals; + for (int i = 0; i < normals.Length; ++i) normals[i] = Vector3.Scale(normals[i], inv).normalized; + mesh.normals = normals; + var tangents = mesh.tangents; + for (int i = 0; i < tangents.Length; ++i) { + var t = Vector3.Scale(new Vector3(tangents[i].x, tangents[i].y, tangents[i].z), scale); + if (i < normals.Length) t -= normals[i] * Vector3.Dot(t, normals[i]); + t.Normalize(); + tangents[i] = new Vector4(t.x, t.y, t.z, mirrored ? -tangents[i].w : tangents[i].w); + } + mesh.tangents = tangents; + if (mirrored) + for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + var triangles = mesh.GetTriangles(sub); + for (int i = 0; i < triangles.Length; i += 3) { + int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; + } + mesh.SetTriangles(triangles, sub); + } + mesh.RecalculateBounds(); + } + + static byte[] Encode(RemeshBaker.Maps maps, int index) + { + var texture = new Texture2D(maps.size, maps.size, + index == EmissionMap ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); + try { + if (index == EmissionMap) { texture.SetPixels(maps.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } + texture.SetPixels32(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao); + texture.Apply(); return texture.EncodeToPNG(); + } + finally { Object.DestroyImmediate(texture); } + } + } +} diff --git a/Editor/RemeshExporter.cs.meta b/Editor/RemeshExporter.cs.meta new file mode 100644 index 00000000..cf7670d5 --- /dev/null +++ b/Editor/RemeshExporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99ddbf5adde74427b34c87e44856bc19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs new file mode 100644 index 00000000..439734ca --- /dev/null +++ b/Editor/RemeshPipeline.cs @@ -0,0 +1,432 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// The Remesh & Bake stage machine: capture → voxel remesh → simplify → normals & UV + /// → bake, each stage re-runnable on its own with everything after it cleared. + /// The work unit is a ; the weld is one node in root space, + /// keep-hierarchy is one node per renderer in its own space, and every stage runs + /// the same loop over the list. Owns every Unity object it creates (preview meshes, + /// result meshes, the base color preview) and destroys them on clear. + /// + internal sealed class RemeshPipeline : IDisposable + { + internal enum Stage { Remesh, Simplify, Unwrap, Bake } + + /// One captured piece of the source and its stage outputs. + internal sealed class Node + { + public string name; + // Placement relative to the source root; identity for the weld. The capture + // space is root × TRS(these), so a sheared renderer matrix folds its residual + // into the captured geometry instead of being dropped from the saved transform. + public Vector3 localPosition = Vector3.zero; + public Quaternion localRotation = Quaternion.identity; + public Vector3 localScale = Vector3.one; + public Matrix4x4 spaceToWorld = Matrix4x4.identity; // captured at remesh time + public RemeshSource source; + public RemeshNative.IndexedMesh voxel, simplified; + public float simplifyError; + public RemeshNative.Geometry geometry; + public Vector4[] tangents; + public Mesh mesh; // the unwrapped result (HideAndDontSave), also the Result preview + public RemeshBaker.Maps maps; + } + + readonly List nodes = new List(); + readonly string[] keys = new string[4]; + CancellationTokenSource cancellation; + int running; + bool hierarchy; + + // Previews come from the primary node: the weld itself, or the largest node of + // a hierarchy so the existing preview panel keeps working. + Mesh sourceMesh, voxelMesh, simplifiedMesh; + Texture2D baseColorPreview; + + /// Settings snapshot every stage output was built with, indexed by Stage. + public IReadOnlyList Keys => keys; + public IReadOnlyList Nodes => nodes; + public bool IsHierarchy => hierarchy; + public bool IsRunning => Volatile.Read(ref running) != 0; + public bool CanCancel => cancellation != null && !cancellation.IsCancellationRequested; + public string Status { get; private set; } = "Select a static model root. LODGroups contribute only LOD0."; + public string ResultName { get; private set; } + /// The source root's world scale at capture time; the save carries it. + public Vector3 RootScale { get; private set; } = Vector3.one; + public Action Changed; + + public Node Primary + { + get { + Node best = null; + foreach (var node in nodes) + if (best == null || (node.voxel != null && best.voxel != null && node.voxel.TriangleCount > best.voxel.TriangleCount)) best = node; + return best; + } + } + + public Mesh SourceMesh => sourceMesh; + public Mesh VoxelMesh => voxelMesh; + public Mesh SimplifiedMesh => simplifiedMesh; + public Mesh ResultMesh => Primary?.mesh; + public RemeshNative.Geometry Geometry => Primary?.geometry; + public RemeshBaker.Maps Maps => Primary?.maps; + public Texture2D BaseColorPreview => baseColorPreview; + public float SourceDiagonal => Primary?.source != null ? Primary.source.diagonal : 0f; + public bool SourceHasColors { get { foreach (var n in nodes) if (n.source != null && n.source.hasColors) return true; return false; } } + + public bool Has(Stage stage) + { + if (nodes.Count == 0) return false; + switch (stage) { + case Stage.Remesh: return nodes[0].voxel != null; + case Stage.Simplify: return nodes[0].simplified != null; + case Stage.Unwrap: return nodes[0].geometry != null; + default: return nodes[0].maps != null; + } + } + + /// Short stage summary for the UI headers; null before the stage ran. + public string Summary(Stage stage) + { + if (!Has(stage)) return null; + long total = 0; + switch (stage) { + case Stage.Remesh: foreach (var n in nodes) total += n.voxel.TriangleCount; return $"{total:N0} tris"; + case Stage.Simplify: foreach (var n in nodes) total += n.simplified.TriangleCount; return $"{total:N0} tris"; + case Stage.Unwrap: foreach (var n in nodes) total += n.geometry.chartCount; return $"{total:N0} islands"; + default: foreach (var n in nodes) total += n.maps.misses; return total > 0 ? $"{total:N0} missed" : "done"; + } + } + + /// The settings that feed each stage, so a change marks it stale. + public static string Key(Stage stage, RemeshSettings s, GameObject source) + { + switch (stage) { + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}"; + case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; + case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; + } + } + + public bool IsStale(Stage stage, RemeshSettings settings, GameObject source) + => keys[(int)stage] != null && keys[(int)stage] != Key(stage, settings, source); + + /// The first stage that must run so `target` is up to date: a missing + /// output or changed settings. An emptied Source field does not invalidate a + /// remesh already captured. + public Stage FirstStale(Stage target, RemeshSettings settings, GameObject source) + { + for (var s = Stage.Remesh; s < target; ++s) + if (keys[(int)s] == null || keys[(int)s] != Key(s, settings, source) && (s != Stage.Remesh || source)) return s; + return target; + } + + public void Cancel() + { + cancellation?.Cancel(); + Status = "Cancelling after the current phase…"; + } + + /// Runs stages from..to on a copy of the settings. Returns false when a + /// run is already in progress. Errors land in Status and the log. + public async Task Run(GameObject source, RemeshSettings live, Stage from, Stage to) + { + if (Interlocked.CompareExchange(ref running, 1, 0) != 0) return false; + cancellation = new CancellationTokenSource(); + var token = cancellation.Token; + bool locked = false; + RemeshSource.ReadableScope readable = null; + try { + live.Validate(); RemeshNative.CheckAvailable(); + var options = JsonUtility.FromJson(JsonUtility.ToJson(live)); + ClearFrom(from); + if (from == Stage.Remesh && source) readable = new RemeshSource.ReadableScope(source); + EditorApplication.LockReloadAssemblies(); locked = true; + for (var stage = from; stage <= to; ++stage) { + string key = Key(stage, options, source); + switch (stage) { + case Stage.Remesh: await RunRemesh(source, options, token); break; + case Stage.Simplify: await RunSimplify(options, token); break; + case Stage.Unwrap: await RunUnwrap(options, token); break; + default: await RunBake(source, options, token); break; + } + keys[(int)stage] = key; + } + return true; + } + catch (OperationCanceledException) { Status = "Cancelled. Source assets were preserved."; return false; } + catch (Exception e) { Status = e.Message; UvtLog.Error("[Remesh] " + e); return false; } + finally { + readable?.Dispose(); + cancellation.Dispose(); cancellation = null; + if (locked) EditorApplication.UnlockReloadAssemblies(); + Interlocked.Exchange(ref running, 0); Changed?.Invoke(); + } + } + + void Report(string message) { Status = message; Changed?.Invoke(); } + + // ── stages ── + + async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken token) + { + if (!root) throw new InvalidOperationException("Select a source root."); + Report("Reading source geometry and textures…"); + await Task.Yield(); token.ThrowIfCancellationRequested(); + var renderers = RemeshSource.CollectRenderers(root, options.lod0Only); + if (renderers.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); + hierarchy = options.keepHierarchy; + ResultName = root.name; + RootScale = root.transform.lossyScale; + var rootToWorld = root.transform.localToWorldMatrix; + var worldToRoot = root.transform.worldToLocalMatrix; + var captures = new List(); + if (!hierarchy) { + captures.Add(new Node { name = root.name, spaceToWorld = rootToWorld, + source = RemeshSource.Capture(worldToRoot, renderers) }); + } + else { + // One node per renderer, each in its own TRS space relative to the root; + // children are their own nodes, so nothing is captured twice. + for (int i = 0; i < renderers.Count; ++i) { + var renderer = renderers[i]; + token.ThrowIfCancellationRequested(); + Report($"Reading {renderer.name} ({i + 1}/{renderers.Count})…"); + var toRoot = worldToRoot * renderer.transform.localToWorldMatrix; + var node = new Node { name = renderer.name, localPosition = toRoot.GetColumn(3), + localRotation = toRoot.rotation, localScale = toRoot.lossyScale }; + node.spaceToWorld = rootToWorld * Matrix4x4.TRS(node.localPosition, node.localRotation, node.localScale); + node.source = RemeshSource.Capture(node.spaceToWorld.inverse, new[] { renderer }, required: false); + if (node.source == null) { UvtLog.Warn("[Remesh] " + renderer.name + ": nothing to remesh, skipped."); continue; } + captures.Add(node); + } + if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); + } + long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; + for (int i = 0; i < captures.Count; ++i) { + var node = captures[i]; + foreach (var warning in node.source.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } + token.ThrowIfCancellationRequested(); + Report(hierarchy ? $"Voxel remeshing {node.name} ({i + 1}/{captures.Count})…" : "Voxel remeshing…"); + var captured = node.source; + node.voxel = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token), token); + sourceTriangles += captured.indices.Length / 3; + resultTriangles += node.voxel.TriangleCount; + } + token.ThrowIfCancellationRequested(); + nodes.AddRange(captures); + var primary = Primary; + sourceMesh = BuildMesh(ResultName + "_Source", primary.source.positions, primary.source.indices, + primary.source.normals, primary.source.hasColors ? primary.source.colors : null); + voxelMesh = BuildMesh(ResultName + "_Voxel", primary.voxel.positions, primary.voxel.indices); + Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles." + + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); + } + + async Task RunSimplify(RemeshSettings options, CancellationToken token) + { + if (!Has(Stage.Remesh)) throw new InvalidOperationException("Run the remesh stage first."); + long before = 0, after = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report(hierarchy ? $"Simplifying {node.name} ({i + 1}/{nodes.Count})…" : "Simplifying…"); + if (options.simplify) { + float error = 0; + var input = node.voxel; + node.simplified = await Task.Run(() => RemeshNative.Simplify(input, options, token, out error), token); + node.simplifyError = error; + } + else { node.simplified = node.voxel; node.simplifyError = 0; } + before += node.voxel.TriangleCount; after += node.simplified.TriangleCount; + } + token.ThrowIfCancellationRequested(); + var primary = Primary; + simplifiedMesh = BuildMesh(ResultName + "_Simplified", primary.simplified.positions, primary.simplified.indices); + Status = (hierarchy ? $"Simplify: {nodes.Count} node(s), " : "Simplify: ") + $"{before:N0} → {after:N0} triangles."; + } + + public float SimplifyError => Primary?.simplifyError ?? 0f; + + async Task RunUnwrap(RemeshSettings options, CancellationToken token) + { + if (!Has(Stage.Simplify)) throw new InvalidOperationException("Run the simplify stage first."); + long charts = 0, vertices = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report(hierarchy ? $"Generating normals and unwrapping UVs on {node.name} ({i + 1}/{nodes.Count})…" : "Generating normals and unwrapping UVs…"); + var input = node.simplified; + node.geometry = await Task.Run(() => RemeshNative.Unwrap(input, options, token), token); + if (node.mesh) Object.DestroyImmediate(node.mesh); + node.mesh = BuildResultMesh(node.name + "_LOD0", node.geometry, out node.tangents); + charts += node.geometry.chartCount; vertices += node.geometry.positions.Length; + } + token.ThrowIfCancellationRequested(); + Status = (hierarchy ? $"Unwrap: {nodes.Count} node(s), " : "Unwrap: ") + $"{charts:N0} islands, {vertices:N0} vertices."; + } + + async Task RunBake(GameObject root, RemeshSettings options, CancellationToken token) + { + if (!Has(Stage.Unwrap)) throw new InvalidOperationException("Run the UV stage first."); + // The beauty environment reads scene state (lights, probes, view), so it is + // captured once on the main thread before the workers start and re-based + // into each node's capture space. + RemeshBeauty beauty = null; + if (options.bakeMode == RemeshBakeMode.Beauty) { + Report("Capturing scene lighting…"); + if (!root) throw new InvalidOperationException("The source root is gone; reselect it and rerun the remesh stage."); + beauty = new RemeshBeauty(root, SourceDiagonal); + } + long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0; int warnings = 0; + for (int i = 0; i < nodes.Count; ++i) { + var node = nodes[i]; + token.ThrowIfCancellationRequested(); + Report(hierarchy ? $"Projecting {node.name} into its UV atlas ({i + 1}/{nodes.Count})…" + : beauty != null ? "Baking the lit view of the source into the atlas…" : "Projecting source materials into the new UV atlas…"); + var nodeBeauty = beauty?.ForSpace(node.spaceToWorld, node.source.diagonal); + var source = node.source; var target = node.geometry; var frame = node.tangents; + node.maps = await Task.Run(() => RemeshBaker.Bake(source, target, frame, options, token, nodeBeauty), token); + // A re-bake without the transfer must not keep the previous colors. + node.mesh.colors = node.maps.vertexColors; + sourceTriangles += source.indices.Length / 3; targetTriangles += target.indices.Length / 3; + misses += node.maps.misses; covered += node.maps.covered; warnings += source.warnings.Length; + LogDiagnostics(node); + } + token.ThrowIfCancellationRequested(); + var primary = Primary; + baseColorPreview = new Texture2D(primary.maps.size, primary.maps.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; + baseColorPreview.SetPixels32(primary.maps.color); baseColorPreview.Apply(); + Status = (hierarchy ? $"{nodes.Count} node(s): " : "") + $"{sourceTriangles:N0} → {targetTriangles:N0} triangles. " + + (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake.") + + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); + UvtLog.Info("[Remesh] " + Status); + } + + // Bake health counters (RemeshDiag log category): cage welding, one-sided + // border normals, nearest-query fallbacks and normal-map tilt. A loud, + // strongly-tilted map on a smooth-ish source is the signature of displaced + // projection samples; loud fraction > 5% also warns on its own. + static void LogDiagnostics(Node node) + { + var baked = node.maps; var captured = node.source; var target = node.geometry; + // Source and target live in the same capture space by construction; the + // diagonal ratio proves it at a glance and catches scale regressions. + Vector3 mn = target.positions[0], mx = target.positions[0]; + foreach (var pv in target.positions) { mn = Vector3.Min(mn, pv); mx = Vector3.Max(mx, pv); } + float targetDiagonal = (mx - mn).magnitude; + float scaleRatio = targetDiagonal / Mathf.Max(1e-8f, captured.diagonal); + string prefix = "[" + node.name + "] "; + if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) + UvtLog.Info(UvtLog.Category.RemeshDiag, prefix + + $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + + $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°, {baked.zeroNormals:N0} zero normals; " + + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}; " + + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); + if (baked.zeroNormals > 0) + UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + + baked.zeroNormals + " result vertices have zero normals — their texels bake through zeroed ray directions " + + "and tangent frames. Re-run the UV stage; if it repeats, the remesh produced degenerate faces (lower simplification error or raise voxel resolution)."); + else if (baked.rayFallbacks > baked.covered * 4 / 5 && baked.covered > 0) + UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + + baked.rayFallbacks.ToString("N0") + " of the projection samples fell back to nearest-point search — the rays " + + "are not hitting the source. Check the projection distance and the hard-edge mode, and rebake."); + if (Mathf.Abs(scaleRatio - 1f) > 0.1f) + UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + + $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + + "Check voxel resolution, small-part pruning and simplification settings, and rebake."); + if (baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) + UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + + $"{100.0 * baked.loudTexels / Mathf.Max(1, baked.covered):F1}% of texels lean >45° with a {baked.meanTiltDeg:F0}° mean tilt — " + + "the map is dominated by extreme normals. Check the hard-edge mode, projection distance and cage fit, " + + "and compare against the source: fine detail should tilt a map, not saturate it."); + } + + // ── meshes ── + + // Builds the result Mesh from unwrapped geometry. The tangent frame comes from + // meshoptimizer over the final UV layout (MikkT-compatible, the same basis the + // bake encodes against); Unity's recalculation is only a fallback if the native + // tangents are missing. + internal static Mesh BuildResultMesh(string name, RemeshNative.Geometry unwrapped, out Vector4[] tangents) + { + var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; + mesh.vertices = unwrapped.positions; mesh.normals = unwrapped.normals; + mesh.uv = unwrapped.uv; mesh.triangles = unwrapped.indices; + mesh.RecalculateBounds(); + bool anyTangent = false; + if (unwrapped.tangents != null) + for (int i = 0; i < unwrapped.tangents.Length && !anyTangent; ++i) + anyTangent = unwrapped.tangents[i].sqrMagnitude > 1e-12f; + if (anyTangent) mesh.tangents = unwrapped.tangents; + else { + mesh.RecalculateTangents(); + UvtLog.Warn("[Remesh] Native tangents missing; fell back to Unity's recalculation. Rebuild the native plugins for this commit."); + } + tangents = mesh.tangents; + return mesh; + } + + static Mesh BuildMesh(string name, Vector3[] positions, int[] indices, Vector3[] normals = null, Color[] colors = null) + { + var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; + mesh.vertices = positions; mesh.triangles = indices; + if (normals != null) mesh.normals = normals; else mesh.RecalculateNormals(); + if (colors != null) mesh.colors = colors; + mesh.RecalculateBounds(); + return mesh; + } + + /// Drops the output of `stage` and every stage after it. + public void ClearFrom(Stage stage) + { + if (stage <= Stage.Bake) { + if (baseColorPreview) Object.DestroyImmediate(baseColorPreview); + baseColorPreview = null; keys[(int)Stage.Bake] = null; + foreach (var node in nodes) { + node.maps = null; + if (node.mesh) node.mesh.colors = null; + } + } + if (stage <= Stage.Unwrap) { + keys[(int)Stage.Unwrap] = null; + foreach (var node in nodes) { + if (node.mesh) Object.DestroyImmediate(node.mesh); + node.mesh = null; node.geometry = null; node.tangents = null; + } + } + if (stage <= Stage.Simplify) { + if (simplifiedMesh) Object.DestroyImmediate(simplifiedMesh); + simplifiedMesh = null; keys[(int)Stage.Simplify] = null; + foreach (var node in nodes) { node.simplified = null; node.simplifyError = 0; } + } + if (stage <= Stage.Remesh) { + if (voxelMesh) Object.DestroyImmediate(voxelMesh); + if (sourceMesh) Object.DestroyImmediate(sourceMesh); + voxelMesh = null; sourceMesh = null; keys[(int)Stage.Remesh] = null; + nodes.Clear(); hierarchy = false; + } + } + + public void Dispose() + { + cancellation?.Cancel(); + ClearFrom(Stage.Remesh); + } + } +} diff --git a/Editor/RemeshPipeline.cs.meta b/Editor/RemeshPipeline.cs.meta new file mode 100644 index 00000000..ac64e331 --- /dev/null +++ b/Editor/RemeshPipeline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17c00d452fd448c2ab19e91765d65fcd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 1cc32c02..efbe2bd3 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -7,6 +7,7 @@ namespace SashaRX.UnityMeshLab { // All Unity objects are read on the main thread. Workers only see these snapshots. + // Geometry is expressed in the capture space (the source root or a hierarchy node). internal sealed class RemeshSource { public Vector3[] positions, normals; @@ -66,16 +67,20 @@ internal sealed class Surface public bool smoothnessFromAlbedo; } + /// The whole subtree under root welded into one snapshot in root-local space. public static RemeshSource Capture(GameObject root, bool lod0Only) { if (!root) throw new ArgumentException("Select a source root."); - var excluded = new HashSet(); - foreach (var group in root.GetComponentsInChildren()) { - var lods = group.GetLODs(); - var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); - for (int l = 1; l < lods.Length; ++l) - foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); - } + return Capture(root.transform.worldToLocalMatrix, CollectRenderers(root, lod0Only)); + } + + /// + /// Snapshot of the given renderers expressed in the space whose world→local + /// matrix is worldToSpace. Returns null when they contribute no triangles and + /// required is false; throws otherwise. + /// + public static RemeshSource Capture(Matrix4x4 worldToSpace, IList renderers, bool required = true) + { var positions = new List(); var normals = new List(); var tangents = new List(); var uv = new List(); var colors = new List(); var uv2 = new List(); @@ -87,17 +92,15 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) var lightmapIds = new Dictionary<(Texture2D, Texture2D, Vector4), int>(); string[] warnings; using (var reader = new Reader()) { - foreach (var renderer in root.GetComponentsInChildren()) { - if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; - if (lod0Only && IsHigherLodName(renderer.name)) continue; + foreach (var renderer in renderers) { // A skinned source is baked at its current pose into a fresh runtime // mesh. BakeMesh bakes the LAST EVALUATED skinning, which in edit mode // can predate the current bone transforms — every part then lands at // its authored origin instead of its posed place, so the bone list is // reassigned first to mark the skinning dirty and force a re-evaluation. // The result stays in the renderer's local space with no transform - // scale, and the shared root-local path below applies the transform - // exactly once, like a static mesh under the same node. + // scale, and the shared path below applies the transform exactly once, + // like a static mesh under the same node. Mesh mesh; if (renderer is SkinnedMeshRenderer skin) { mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; @@ -105,8 +108,6 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) skin.bones = Array.Empty(); skin.bones = bones; skin.BakeMesh(mesh); - // A baked runtime mesh is nameless; carry the asset name so the - // LOD filter below sees the same _LOD{n} suffix as static meshes. if (skin.sharedMesh) mesh.name = skin.sharedMesh.name; } else if (renderer is MeshRenderer) { @@ -118,8 +119,6 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) } else continue; try { - if (lod0Only && IsHigherLodName(mesh.name)) continue; - if (MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; for (int sub = 0; sub < mesh.subMeshCount; ++sub) if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); if (mesh.uv.Length != mesh.vertexCount) @@ -128,7 +127,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) if (mesh.tangents.Length != mesh.vertexCount) mesh.RecalculateTangents(); var p = mesh.vertices; var n = mesh.normals; var t = mesh.tangents; if (t.Length != p.Length) throw new InvalidOperationException(renderer.name + " has no valid tangent frame."); - var transform = root.transform.worldToLocalMatrix * renderer.localToWorldMatrix; + var transform = worldToSpace * renderer.localToWorldMatrix; if (Mathf.Abs(transform.determinant) < 1e-12f) throw new InvalidOperationException("Zero-scale source transform."); var normalTransform = transform.inverse.transpose; float sign = transform.determinant < 0 ? -1 : 1; @@ -185,7 +184,10 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) } warnings = reader.warnings.ToArray(); } - if (indices.Count == 0) throw new InvalidOperationException("No source triangles found."); + if (indices.Count == 0) { + if (!required) return null; + throw new InvalidOperationException("No source triangles found."); + } var bounds = new Bounds(positions[0], Vector3.zero); foreach (var p in positions) bounds.Encapsulate(p); if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); @@ -195,6 +197,75 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) diagonal = bounds.size.magnitude, warnings = warnings }; } + /// + /// The renderers a capture of root contributes, in hierarchy order: enabled + /// MeshRenderers with a mesh and SkinnedMeshRenderers, minus LODGroup levels above + /// LOD0, collision nodes (`_COL`, `_COL_Hull{N}`, … on the node or the mesh asset) + /// and, with lod0Only, `Name_LOD1`-and-higher names on either. The weld and the + /// keep-hierarchy node list both come from here, so they agree by construction. + /// + internal static List CollectRenderers(GameObject root, bool lod0Only) + { + var excluded = new HashSet(); + foreach (var group in root.GetComponentsInChildren()) { + var lods = group.GetLODs(); + var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); + for (int l = 1; l < lods.Length; ++l) + foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); + } + var result = new List(); + foreach (var renderer in root.GetComponentsInChildren()) { + if (!renderer.enabled || excluded.Contains(renderer)) continue; + Mesh mesh; + if (renderer is SkinnedMeshRenderer skin) mesh = skin.sharedMesh; + else if (renderer is MeshRenderer && renderer.TryGetComponent(out var filter)) mesh = filter.sharedMesh; + else continue; + if (!mesh) continue; + if (MeshHygieneUtility.IsCollisionNodeName(renderer.name) || MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; + if (lod0Only && (IsHigherLodName(renderer.name) || IsHigherLodName(mesh.name))) continue; + result.Add(renderer); + } + return result; + } + + /// + /// Flips every imported model under root to Read/Write enabled for the capture + /// (the fast, friction-free path; non-readable imports would go through MeshData) + /// and puts each importer that was off back to off on Dispose — cancel, failure + /// and success alike. + /// + internal sealed class ReadableScope : IDisposable + { + readonly List touched = new List(); + + public ReadableScope(GameObject root) + { + var paths = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var renderer in root.GetComponentsInChildren(true)) { + Mesh mesh = renderer is SkinnedMeshRenderer skin ? skin.sharedMesh + : renderer.TryGetComponent(out var filter) ? filter.sharedMesh : null; + string path = mesh ? AssetDatabase.GetAssetPath(mesh) : null; + if (!string.IsNullOrEmpty(path)) paths.Add(path); + } + foreach (var path in paths) { + if (!(AssetImporter.GetAtPath(path) is ModelImporter model) || model.isReadable) continue; + model.isReadable = true; + model.SaveAndReimport(); + touched.Add(model); + } + } + + public void Dispose() + { + foreach (var model in touched) { + if (model == null) continue; + model.isReadable = false; + model.SaveAndReimport(); + } + touched.Clear(); + } + } + // Repo LOD naming is Name_LOD{N} (see the LOD/collision naming rule); anything // above LOD0 is a coarser duplicate of what LOD0 already captures. internal static bool IsHigherLodName(string name) diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index e69caae4..c8a4bb07 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -1,15 +1,16 @@ using System; using System.Collections.Generic; -using System.IO; -using System.Threading; using System.Threading.Tasks; using UnityEditor; using UnityEngine; -using UnityEngine.Rendering; -using Object = UnityEngine.Object; namespace SashaRX.UnityMeshLab { + /// + /// The Remesh & Bake tab: source selection, per-stage settings and buttons, the + /// right-sidebar previews and the save action. The stage work itself lives in + /// , the export in . + /// public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar { public string ToolName => "Remesh & Bake"; @@ -21,63 +22,32 @@ public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar // does not silently reset to defaults between runs. const string SettingsKey = "MeshLab.RemeshBake.Settings"; - enum Stage { Remesh, Simplify, Unwrap, Bake } static readonly string[] StageTitles = { "1 · Voxel remesh", "2 · Simplify", "3 · Normals & UV", "4 · Bake" }; static readonly string[] SampleNames = { "1 (off)", "4 (2×2)", "9 (3×3)", "16 (4×4)" }; static readonly int[] SampleCounts = { 1, 4, 9, 16 }; GameObject source, lastSelection; RemeshSettings settings = new RemeshSettings(); - CancellationTokenSource cancellation; - static int running; - string status = "Select a static model root. LODGroups contribute only LOD0."; - string resultName; + readonly RemeshPipeline pipeline = new RemeshPipeline(); + readonly bool[] folds = { true, true, true, true }; + bool chartFold; + readonly RemeshPreview previews = new RemeshPreview(); + readonly RemeshPreview.Data previewData = new RemeshPreview.Data(); + string saveStatus; internal GameObject Source => source; public RemeshBakeTool() { string json = EditorPrefs.GetString(SettingsKey, ""); - if (string.IsNullOrEmpty(json)) return; - var restored = JsonUtility.FromJson(json); - if (restored != null) settings = restored; + if (!string.IsNullOrEmpty(json)) { + var restored = JsonUtility.FromJson(json); + if (restored != null) settings = restored; + } + pipeline.Changed = () => { saveStatus = null; RequestRepaint?.Invoke(); }; } internal void SaveSettings() => EditorPrefs.SetString(SettingsKey, JsonUtility.ToJson(settings)); - // Stage outputs. Each stage consumes the previous one; re-running a stage clears - // everything after it. keys[] remember the settings each output was built with. - RemeshSource snapshot; - RemeshNative.IndexedMesh voxel, simplified; - float simplifyError; - RemeshNative.Geometry geometry; - Vector4[] tangents; - RemeshBaker.Maps maps; - // Keep-hierarchy mode (settings.keepHierarchy): per-node stage outputs. Each entry - // carries its own capture → voxel → simplified → unwrapped → baked chain; the node's - // transform is kept relative to the source root so Save can rebuild the hierarchy. - internal sealed class RemeshNode - { - public string name; - public Vector3 localPosition = Vector3.zero; - public Quaternion localRotation = Quaternion.identity; - public Vector3 localScale = Vector3.one; - public RemeshSource source; - public RemeshNative.IndexedMesh voxel; - public RemeshNative.IndexedMesh simplified; - public RemeshNative.Geometry geometry; - public Vector4[] tangents; - public Mesh mesh; - public RemeshBaker.Maps maps; - } - List nodes; - Mesh sourceMesh, voxelMesh, simplifiedMesh, resultMesh; - Texture2D preview; - readonly string[] keys = new string[4]; - readonly bool[] folds = { true, true, true, true }; - bool chartFold; - readonly RemeshPreview previews = new RemeshPreview(); - readonly RemeshPreview.Data previewData = new RemeshPreview.Data(); - public void OnActivate(UvToolContext context, UvCanvasView canvas) { FollowSelection(); @@ -93,30 +63,30 @@ public void OnDeactivate() { Selection.selectionChanged -= FollowSelection; AssemblyReloadEvents.beforeAssemblyReload -= SaveSettingsAndClear; - SaveSettings(); - cancellation?.Cancel(); Clear(); + SaveSettingsAndClear(); } void SaveSettingsAndClear() { SaveSettings(); - Clear(); + previews.Dispose(); + pipeline.Dispose(); } // Source root follows the hierarchy selection, as the status text asks. A pick // made in the field holds until the selection changes, also across tab // switches. A LOD child resolves to its LODGroup so the bake keeps the - // LOD0-only contract. Selections without MeshRenderers (lights, cameras) and - // selections made during a bake leave the source as is. + // LOD0-only contract. Selections without a mesh or skinned renderer (lights, + // cameras) and selections made during a bake leave the source as is. internal void FollowSelection() { var selected = Selection.activeGameObject; if (selected == lastSelection) return; lastSelection = selected; - if (!selected || Volatile.Read(ref running) != 0) return; + if (!selected || pipeline.IsRunning) return; var group = selected.GetComponentInParent(); var root = group ? group.gameObject : selected; - if (!root.GetComponentInChildren()) return; + if (!root.GetComponentInChildren() && !root.GetComponentInChildren()) return; source = root; RequestRepaint?.Invoke(); } @@ -124,44 +94,46 @@ internal void FollowSelection() // snapshot is captured when the remesh stage runs, so a running bake must not be cancelled here. public void OnRefresh() { } public void OnDrawToolbarExtra() { } - public void OnDrawStatusBar() { GUILayout.Label(status, EditorStyles.miniLabel); } + public void OnDrawStatusBar() { GUILayout.Label(Status, EditorStyles.miniLabel); } public IEnumerable GetFillModes() => null; public void OnSceneGUI(SceneView sceneView) { } public void OnDrawCanvasOverlay(UvCanvasView canvas, float cx, float cy, float size) { } + string Status => saveStatus ?? pipeline.Status; + public void OnDrawRightSidebar() { - previewData.meshes[(int)RemeshPreview.Stage.Source] = sourceMesh; - previewData.meshes[(int)RemeshPreview.Stage.Remesh] = voxelMesh; - previewData.meshes[(int)RemeshPreview.Stage.Simplified] = simplifiedMesh; - previewData.meshes[(int)RemeshPreview.Stage.Result] = resultMesh; - previewData.geometry = geometry; previewData.maps = maps; previewData.baseColor = preview; + previewData.meshes[(int)RemeshPreview.Stage.Source] = pipeline.SourceMesh; + previewData.meshes[(int)RemeshPreview.Stage.Remesh] = pipeline.VoxelMesh; + previewData.meshes[(int)RemeshPreview.Stage.Simplified] = pipeline.SimplifiedMesh; + previewData.meshes[(int)RemeshPreview.Stage.Result] = pipeline.ResultMesh; + previewData.geometry = pipeline.Geometry; previewData.maps = pipeline.Maps; previewData.baseColor = pipeline.BaseColorPreview; // Live from the current settings so the cage preview reflects projection // distance changes before a re-bake; zero until a source snapshot exists. - previewData.cageDistance = snapshot != null ? snapshot.diagonal * settings.projectionDistance : 0; + previewData.cageDistance = pipeline.SourceDiagonal * settings.projectionDistance; previews.Draw(previewData); } public void OnDrawSidebar() { EditorGUILayout.LabelField("High-poly → Low-poly", EditorStyles.boldLabel); - bool busy = Volatile.Read(ref running) != 0; + bool busy = pipeline.IsRunning; using (new EditorGUI.DisabledScope(busy)) { source = (GameObject)EditorGUILayout.ObjectField("Source root", source, typeof(GameObject), true); using (new EditorGUI.DisabledScope(!source || UvProgress.IsActive)) - if (GUILayout.Button("Run all stages", GUILayout.Height(26))) Start(Stage.Bake, true); + if (GUILayout.Button("Run all stages", GUILayout.Height(26))) Start(RemeshPipeline.Stage.Bake, true); - if (StageHeader(Stage.Remesh, voxel != null ? $"{voxel.TriangleCount:N0} tris" : null)) { + if (StageHeader(RemeshPipeline.Stage.Remesh)) { settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", - "Remesh every node SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); + "Remesh every renderer SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); - StageButton(Stage.Remesh, "Remesh"); + StageButton(RemeshPipeline.Stage.Remesh, "Remesh"); } - if (StageHeader(Stage.Simplify, simplified != null ? $"{simplified.TriangleCount:N0} tris" : null)) { + if (StageHeader(RemeshPipeline.Stage.Simplify)) { settings.simplify = EditorGUILayout.Toggle("Simplify", settings.simplify); using (new EditorGUI.DisabledScope(!settings.simplify)) { settings.maximumError = EditorGUILayout.Slider(new GUIContent("Maximum error", @@ -174,10 +146,11 @@ public void OnDrawSidebar() settings.preserveFolds = EditorGUILayout.Toggle("Preserve folds", settings.preserveFolds); settings.pruneSmallParts = EditorGUILayout.Toggle("Remove small parts", settings.pruneSmallParts); } - if (simplified != null && settings.simplify) EditorGUILayout.LabelField($"Achieved error {simplifyError:0.#####}", EditorStyles.miniLabel); - StageButton(Stage.Simplify, "Simplify"); + if (pipeline.Has(RemeshPipeline.Stage.Simplify) && settings.simplify) + EditorGUILayout.LabelField($"Achieved error {pipeline.SimplifyError:0.#####}", EditorStyles.miniLabel); + StageButton(RemeshPipeline.Stage.Simplify, "Simplify"); } - if (StageHeader(Stage.Unwrap, geometry != null ? $"{geometry.chartCount:N0} islands" : null)) { + if (StageHeader(RemeshPipeline.Stage.Unwrap)) { settings.hardEdges = (RemeshHardEdges)EditorGUILayout.EnumPopup(new GUIContent("Hard edges", "Angle: crease angle. UV islands: hard along island borders, smooth inside. The crease choice also feeds xatlas charting."), settings.hardEdges); bool angle = settings.hardEdges == RemeshHardEdges.Angle || settings.hardEdges == RemeshHardEdges.UvIslandsAndAngle; @@ -210,9 +183,9 @@ public void OnDrawSidebar() settings.packBruteForce = EditorGUILayout.Toggle(new GUIContent("Best packing (slow)"), settings.packBruteForce); } } - StageButton(Stage.Unwrap, "Unwrap"); + StageButton(RemeshPipeline.Stage.Unwrap, "Unwrap"); } - if (StageHeader(Stage.Bake, maps != null ? (maps.misses > 0 ? $"{maps.misses:N0} missed" : "done") : null)) { + if (StageHeader(RemeshPipeline.Stage.Bake)) { settings.bakeMode = (RemeshBakeMode)EditorGUILayout.EnumPopup(new GUIContent("Bake mode", "Materials transfers the source maps. Beauty bakes the object as the player sees it — realtime/mixed light with ray shadows, " + "lightmaps, ambient and reflection probes folded into one lit BaseColor texture; the saved material becomes Unlit. " + @@ -222,811 +195,99 @@ public void OnDrawSidebar() settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); settings.transferVertexAlpha = EditorGUILayout.Toggle("Vertex alpha", settings.transferVertexAlpha); - if (snapshot != null && !snapshot.hasColors && (settings.transferVertexColor || settings.transferVertexAlpha)) + if (pipeline.Has(RemeshPipeline.Stage.Remesh) && !pipeline.SourceHasColors && (settings.transferVertexColor || settings.transferVertexAlpha)) EditorGUILayout.HelpBox("The source has no vertex colors; the transfer writes white.", MessageType.None); - StageButton(Stage.Bake, "Bake"); + StageButton(RemeshPipeline.Stage.Bake, "Bake"); } EditorGUILayout.HelpBox("Experimental voxel remesh. Thin details and small gaps may disappear.", MessageType.Info); } - if (cancellation != null) - using (new EditorGUI.DisabledScope(cancellation.IsCancellationRequested)) - if (GUILayout.Button("Cancel (after current native phase)")) { - cancellation.Cancel(); status = "Cancelling after the current phase…"; - } - EditorGUILayout.HelpBox(status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); - if (resultMesh && maps != null) { - EditorGUILayout.LabelField($"{resultMesh.vertexCount:N0} vertices · {resultMesh.GetIndexCount(0) / 3:N0} triangles"); - settings.normalizeSize = EditorGUILayout.Toggle(new GUIContent("Normalize size (saved at scale 1)", - "Bakes the source's world scale into the saved geometry, so the model keeps its real size with a " + - "scale-1 transform regardless of how the source is scaled. Off: the saved transform carries the " + - "source's scale instead."), - settings.normalizeSize); -#if LIGHTMAP_UV_TOOL_FBX_EXPORTER - settings.embedFbxTextures = EditorGUILayout.Toggle(new GUIContent("Embed textures in FBX", - "Self-contained FBX that carries its maps — portable to other machines, but the file grows by the map sizes " + - "(the float EXR emission map alone is 16 bytes per texel). Off: the FBX links the exported maps by absolute path."), - settings.embedFbxTextures); -#endif - using (new EditorGUI.DisabledScope(cancellation != null)) + if (busy) + using (new EditorGUI.DisabledScope(!pipeline.CanCancel)) + if (GUILayout.Button("Cancel (after current native phase)")) pipeline.Cancel(); + var maps = pipeline.Maps; + EditorGUILayout.HelpBox(Status, maps != null && maps.misses > 0 ? MessageType.Warning : MessageType.None); + if (pipeline.Has(RemeshPipeline.Stage.Bake)) DrawSave(); + } + + void DrawSave() + { + var result = pipeline.ResultMesh; + EditorGUILayout.LabelField(pipeline.IsHierarchy + ? $"{pipeline.Nodes.Count} node(s) · largest {result.vertexCount:N0} vertices · {result.GetIndexCount(0) / 3:N0} triangles" + : $"{result.vertexCount:N0} vertices · {result.GetIndexCount(0) / 3:N0} triangles"); + settings.normalizeSize = EditorGUILayout.Toggle(new GUIContent("Normalize size (saved at scale 1)", + "Bakes the source's world scale into the saved geometry, so the model keeps its real size with a " + + "scale-1 transform regardless of how the source is scaled. Off: the saved transform carries the " + + "source's scale instead. Keep-hierarchy saves always carry the scale on the root."), + settings.normalizeSize); #if LIGHTMAP_UV_TOOL_FBX_EXPORTER - if (GUILayout.Button("Save FBX, maps & prefab…")) { + settings.embedFbxTextures = EditorGUILayout.Toggle(new GUIContent("Embed textures in FBX", + "Self-contained FBX that carries its maps — portable to other machines, but the file grows by the map sizes " + + "(the float EXR emission map alone is 16 bytes per texel). Off: the FBX links the exported maps by absolute path."), + settings.embedFbxTextures); + string label = pipeline.IsHierarchy ? "Save meshes, maps & prefab…" : "Save FBX, maps & prefab…"; #else - if (GUILayout.Button("Save mesh, maps & prefab…")) { + string label = pipeline.IsHierarchy ? "Save meshes, maps & prefab…" : "Save mesh, maps & prefab…"; #endif - Save(); - // The folder panel is modal and the export imports assets; both - // leave this event's layout state stale. - GUIUtility.ExitGUI(); - } + using (new EditorGUI.DisabledScope(pipeline.IsRunning)) + if (GUILayout.Button(label)) { + Save(); + // The folder panel is modal and the export imports assets; both + // leave this event's layout state stale. + GUIUtility.ExitGUI(); + } #if !LIGHTMAP_UV_TOOL_FBX_EXPORTER - EditorGUILayout.HelpBox("Install com.unity.formats.fbx to save the model as an FBX instead of a mesh asset.", MessageType.None); + EditorGUILayout.HelpBox("Install com.unity.formats.fbx to save the model as an FBX instead of a mesh asset.", MessageType.None); #endif - } } - bool StageHeader(Stage stage, string summary) + bool StageHeader(RemeshPipeline.Stage stage) { int i = (int)stage; - bool stale = keys[i] != null && keys[i] != Key(stage); + string summary = pipeline.Summary(stage); + bool stale = pipeline.IsStale(stage, settings, source); string label = StageTitles[i] + (summary == null ? "" : " — " + summary + (stale ? " (settings changed)" : "")); EditorGUILayout.Space(3); folds[i] = EditorGUILayout.Foldout(folds[i], label, true, EditorStyles.foldoutHeader); return folds[i]; } - void StageButton(Stage stage, string label) + void StageButton(RemeshPipeline.Stage stage, string label) { - using (new EditorGUI.DisabledScope(!source && snapshot == null || UvProgress.IsActive)) + using (new EditorGUI.DisabledScope(!source && !pipeline.Has(RemeshPipeline.Stage.Remesh) || UvProgress.IsActive)) if (GUILayout.Button(label)) Start(stage, false); } // Runs the clicked stage, first bringing every earlier stage up to date (missing // output or changed settings). "Run all" re-runs everything. - void Start(Stage target, bool all) + void Start(RemeshPipeline.Stage target, bool all) { - Stage from = Stage.Remesh; - if (!all) { - from = target; - // An emptied Source field does not invalidate a remesh already captured. - for (var s = Stage.Remesh; s < target; ++s) - if (keys[(int)s] == null || keys[(int)s] != Key(s) && (s != Stage.Remesh || source)) { from = s; break; } - } - Run(from, target); + var from = all ? RemeshPipeline.Stage.Remesh : pipeline.FirstStale(target, settings, source); + // Preview caches key on mesh instances the run is about to destroy. + previews.Invalidate(); + saveStatus = null; + ShowWhenDone(pipeline.Run(source, settings, from, target), target); // Run() has already changed the sidebar (Cancel button, cleared results); - // end this event before IMGUI asks for controls the layout pass never registered. + // end this event before IMGUI asks for controls the layout pass never + // registered. Kept synchronous: ExitGUI must unwind this GUI event's stack. GUIUtility.ExitGUI(); } - string Key(Stage stage) - { - var s = settings; - switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}"; - case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; - case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + - $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + - $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; - } - } - - async void Run(Stage from, Stage to) - { - if (Interlocked.CompareExchange(ref running, 1, 0) != 0) return; - cancellation = new CancellationTokenSource(); - var token = cancellation.Token; - bool locked = false; - List restoreReadable = null; - try { - settings.Validate(); RemeshNative.CheckAvailable(); - var options = JsonUtility.FromJson(JsonUtility.ToJson(settings)); - ClearFrom(from); - // The capture reads Read/Write-disabled imports through MeshData, but a - // readable import is the fast, friction-free path: flip the source models' - // importers on for the run (only when the capture stage executes) and put - // each one back to its original off state afterwards. - if (from == Stage.Remesh && source) restoreReadable = EnableSourceReadWrite(); - EditorApplication.LockReloadAssemblies(); locked = true; - for (var stage = from; stage <= to; ++stage) { - string key = Key(stage); - switch (stage) { - case Stage.Remesh: await RunRemesh(options, token); break; - case Stage.Simplify: await RunSimplify(options, token); break; - case Stage.Unwrap: await RunUnwrap(options, token); break; - default: await RunBake(options, token); break; - } - keys[(int)stage] = key; - } - previews.Show(to == Stage.Remesh ? RemeshPreview.Stage.Remesh : - to == Stage.Simplify ? RemeshPreview.Stage.Simplified : RemeshPreview.Stage.Result); - } - catch (OperationCanceledException) { status = "Cancelled. Source assets were preserved."; } - catch (Exception e) { status = e.Message; UvtLog.Error("[Remesh] " + e); } - finally { - if (restoreReadable != null) RestoreSourceReadWrite(restoreReadable); - cancellation.Dispose(); cancellation = null; - if (locked) EditorApplication.UnlockReloadAssemblies(); - Interlocked.Exchange(ref running, 0); RequestRepaint?.Invoke(); - } - } - - // Flips every imported model under the source root to Read/Write enabled and - // returns the importers that were changed (all originally off); null when none. - List EnableSourceReadWrite() - { - var paths = new HashSet(StringComparer.OrdinalIgnoreCase); - CollectMeshAssetPaths(source.transform, paths); - var touched = new List(); - foreach (var path in paths) { - if (!(AssetImporter.GetAtPath(path) is ModelImporter model) || model.isReadable) continue; - model.isReadable = true; - model.SaveAndReimport(); - touched.Add(model); - } - return touched.Count > 0 ? touched : null; - } - - static void RestoreSourceReadWrite(List touched) - { - foreach (var model in touched) { - if (model == null) continue; - model.isReadable = false; - model.SaveAndReimport(); - } - } - - static void CollectMeshAssetPaths(Transform node, HashSet paths) + async void ShowWhenDone(Task run, RemeshPipeline.Stage target) { - if (node.TryGetComponent(out var filter) && filter.sharedMesh) - AddMeshAssetPath(filter.sharedMesh, paths); - if (node.TryGetComponent(out var skin) && skin.sharedMesh) - AddMeshAssetPath(skin.sharedMesh, paths); - for (int i = 0; i < node.childCount; ++i) CollectMeshAssetPaths(node.GetChild(i), paths); - } - - static void AddMeshAssetPath(Mesh mesh, HashSet paths) - { - string path = AssetDatabase.GetAssetPath(mesh); - if (!string.IsNullOrEmpty(path)) paths.Add(path); - } - - async Task RunRemesh(RemeshSettings options, CancellationToken token) - { - var root = source; - if (!root) throw new InvalidOperationException("Select a source root."); - Report("Reading source geometry and textures…"); - await Task.Yield(); token.ThrowIfCancellationRequested(); - if (options.keepHierarchy) { - await RunRemeshHierarchy(root, options, token); - return; - } - var captured = RemeshSource.Capture(root, options.lod0Only); - foreach (var warning in captured.warnings) UvtLog.Warn("[Remesh] " + warning); - Report("Voxel remeshing…"); - var mesh = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token)); - token.ThrowIfCancellationRequested(); - snapshot = captured; resultName = root.name; voxel = mesh; - sourceMesh = BuildMesh(root.name + "_Source", captured.positions, captured.indices, captured.normals, captured.hasColors ? captured.colors : null); - voxelMesh = BuildMesh(root.name + "_Voxel", mesh.positions, mesh.indices); - status = $"Remesh: {captured.indices.Length / 3:N0} → {mesh.TriangleCount:N0} triangles." + - (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); - } - - // Keep-hierarchy capture: one node per RENDERER that Capture would have folded into the - // weld (same filters: active, non-collision, LOD0), each captured in its own local space - // with its own subtree. The node's transform relative to the source root is kept so - // Save can rebuild the hierarchy. - async Task RunRemeshHierarchy(GameObject root, RemeshSettings options, CancellationToken token) - { - var renderers = CollectHierarchyRenderers(root, options.lod0Only); - if (renderers.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); - nodes = new List(renderers.Count); - long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; - for (int i = 0; i < renderers.Count; ++i) { - var renderer = renderers[i]; - token.ThrowIfCancellationRequested(); - Report($"Reading {renderer.name} ({i + 1}/{renderers.Count})…"); - var captured = RemeshSource.Capture(renderer.gameObject, options.lod0Only); - foreach (var warning in captured.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } - if (captured.indices.Length == 0) { - UvtLog.Warn("[Remesh] " + renderer.name + ": nothing to remesh, skipped."); - continue; - } - Report($"Voxel remeshing {renderer.name} ({i + 1}/{renderers.Count})…"); - var nodeVoxel = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token)); - var toRoot = root.transform.worldToLocalMatrix * renderer.transform.localToWorldMatrix; - nodes.Add(new RemeshNode { - name = renderer.name, - localPosition = toRoot.GetColumn(3), - localRotation = toRoot.rotation, - localScale = toRoot.lossyScale, - source = captured, - voxel = nodeVoxel, - }); - sourceTriangles += captured.indices.Length / 3; - resultTriangles += nodeVoxel.TriangleCount; - } - if (nodes.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); - // Previews come from the largest node so the existing preview panel keeps working; - // the single-path snapshot/voxel fields stay null (Save branches on `nodes`). - var largest = LargestNode(); - resultName = root.name; - snapshot = null; voxel = null; - sourceMesh = BuildMesh(root.name + "_Source", largest.source.positions, largest.source.indices, - largest.source.normals, largest.source.hasColors ? largest.source.colors : null); - voxelMesh = BuildMesh(root.name + "_Voxel", largest.voxel.positions, largest.voxel.indices); - status = $"Remesh: {nodes.Count} node(s), {sourceTriangles:N0} → {resultTriangles:N0} triangles." + - (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); - } - - internal static List CollectHierarchyRenderers(GameObject root, bool lod0Only) - { - var excluded = new HashSet(); - foreach (var group in root.GetComponentsInChildren()) { - var lods = group.GetLODs(); - var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); - for (int l = 1; l < lods.Length; ++l) - foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); - } - var result = new List(); - foreach (var renderer in root.GetComponentsInChildren()) { - if (!renderer.enabled || excluded.Contains(renderer) || MeshHygieneUtility.IsCollisionNodeName(renderer.name)) continue; - if (lod0Only && RemeshSource.IsHigherLodName(renderer.name)) continue; - if (renderer is SkinnedMeshRenderer || renderer.GetComponent()?.sharedMesh != null) result.Add(renderer); - } - return result; - } - - RemeshNode LargestNode() - { - RemeshNode best = null; - foreach (var node in nodes) - if (best == null || node.voxel.TriangleCount > best.voxel.TriangleCount) best = node; - return best; - } - - async Task RunSimplify(RemeshSettings options, CancellationToken token) - { - if (voxel == null && nodes == null) throw new InvalidOperationException("Run the remesh stage first."); - if (nodes != null) { - long before = 0, after = 0; - for (int i = 0; i < nodes.Count; ++i) { - var node = nodes[i]; - token.ThrowIfCancellationRequested(); - Report($"Simplifying {node.name} ({i + 1}/{nodes.Count})…"); - if (options.simplify) { - float error = 0; - node.simplified = await Task.Run(() => RemeshNative.Simplify(node.voxel, options, token, out error), token); - before += node.voxel.TriangleCount; after += node.simplified.TriangleCount; - } - else { node.simplified = node.voxel; before += node.voxel.TriangleCount; after += node.simplified.TriangleCount; } - } - simplifyError = options.simplify ? options.maximumError : 0; - var largest = LargestNode(); - simplifiedMesh = BuildMesh(resultName + "_Simplified", largest.simplified.positions, largest.simplified.indices); - status = $"Simplify: {nodes.Count} node(s), {before:N0} → {after:N0} triangles."; - return; - } - var input = voxel; - if (options.simplify) { - Report("Simplifying…"); - float error = 0; - simplified = await Task.Run(() => RemeshNative.Simplify(input, options, token, out error)); - simplifyError = error; - } - else { simplified = input; simplifyError = 0; } - token.ThrowIfCancellationRequested(); - simplifiedMesh = BuildMesh(resultName + "_Simplified", simplified.positions, simplified.indices); - status = $"Simplify: {input.TriangleCount:N0} → {simplified.TriangleCount:N0} triangles."; - } - - async Task RunUnwrap(RemeshSettings options, CancellationToken token) - { - if (simplified == null && nodes == null) throw new InvalidOperationException("Run the simplify stage first."); - if (nodes != null) { - int charts = 0, vertices = 0; - for (int i = 0; i < nodes.Count; ++i) { - var node = nodes[i]; - token.ThrowIfCancellationRequested(); - Report($"Generating normals and unwrapping UVs on {node.name} ({i + 1}/{nodes.Count})…"); - node.geometry = await Task.Run(() => RemeshNative.Unwrap(node.simplified, options, token), token); - node.mesh = BuildResultMesh(node.name + "_LOD0", node.geometry, out var nativeTangents, out _); - node.tangents = nativeTangents; - charts += node.geometry.chartCount; vertices += node.geometry.positions.Length; - } - // The result preview shows the largest node; resultMesh is a COPY so clearing - // the single-path outputs never destroys a node's own mesh. - var largest = LargestNode(); - resultMesh = Object.Instantiate(largest.mesh); - resultMesh.name = resultName + "_LOD0"; - tangents = null; - status = $"Unwrap: {nodes.Count} node(s), {charts:N0} islands, {vertices:N0} vertices."; - return; - } - var input = simplified; - Report("Generating normals and unwrapping UVs…"); - var unwrapped = await Task.Run(() => RemeshNative.Unwrap(input, options, token)); - token.ThrowIfCancellationRequested(); - geometry = unwrapped; - resultMesh = BuildResultMesh(resultName + "_LOD0", unwrapped, out tangents, out _); - status = $"Unwrap: {unwrapped.chartCount:N0} islands, {unwrapped.positions.Length:N0} vertices."; - } - - // Builds a display/result Mesh from unwrapped geometry. The tangent frame comes from - // meshoptimizer over the final UV layout (MikkT-compatible, the same basis the bake - // encodes against); Unity's recalculation is only a fallback if the native tangents - // are missing. - static Mesh BuildResultMesh(string name, RemeshNative.Geometry unwrapped, out Vector4[] tangents, out bool anyTangent) - { - var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; - mesh.vertices = unwrapped.positions; mesh.normals = unwrapped.normals; - mesh.uv = unwrapped.uv; mesh.triangles = unwrapped.indices; - mesh.RecalculateBounds(); - anyTangent = false; - if (unwrapped.tangents != null) - for (int i = 0; i < unwrapped.tangents.Length && !anyTangent; ++i) - anyTangent = unwrapped.tangents[i].sqrMagnitude > 1e-12f; - if (anyTangent) mesh.tangents = unwrapped.tangents; - else { - mesh.RecalculateTangents(); - UvtLog.Warn("[Remesh] Native tangents missing; fell back to Unity's recalculation. Rebuild the native plugins for this commit."); - } - tangents = mesh.tangents; - return mesh; - } - - async Task RunBake(RemeshSettings options, CancellationToken token) - { - if ((geometry == null || snapshot == null) && nodes == null) throw new InvalidOperationException("Run the UV stage first."); - // The beauty environment reads scene state (lights, probes, view), so it is - // captured on the main thread before the workers start. - RemeshBeauty beauty = null; - if (options.bakeMode == RemeshBakeMode.Beauty) { - Report("Capturing scene lighting…"); - if (!source) throw new InvalidOperationException("The source root is gone; reselect it and rerun the remesh stage."); - float diagonal = snapshot != null ? snapshot.diagonal : (nodes != null && nodes.Count > 0 ? nodes[0].source.diagonal : 1f); - beauty = new RemeshBeauty(source.gameObject, diagonal); - } - if (nodes != null) { - long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0; - for (int i = 0; i < nodes.Count; ++i) { - var node = nodes[i]; - token.ThrowIfCancellationRequested(); - Report($"Projecting {node.name} into its UV atlas ({i + 1}/{nodes.Count})…"); - var baked = await Task.Run(() => RemeshBaker.Bake(node.source, node.geometry, node.tangents, options, token, beauty), token); - node.maps = baked; - if (baked.vertexColors != null) node.mesh.colors = baked.vertexColors; - sourceTriangles += node.source.indices.Length / 3; - targetTriangles += node.geometry.indices.Length / 3; - misses += baked.misses; covered += baked.covered; - } - var largest = LargestNode(); - preview = new Texture2D(largest.maps.size, largest.maps.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; - preview.SetPixels32(largest.maps.color); preview.Apply(); - maps = largest.maps; - status = $"{nodes.Count} node(s): {sourceTriangles:N0} → {targetTriangles:N0} triangles. " + - (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake."); - UvtLog.Info("[Remesh] " + status); - return; - } - var captured = snapshot; var target = geometry; var frame = tangents; - Report(beauty != null ? "Baking the lit view of the source into the atlas…" : "Projecting source materials into the new UV atlas…"); - var bakedWeld = await Task.Run(() => RemeshBaker.Bake(captured, target, frame, options, token, beauty)); - token.ThrowIfCancellationRequested(); - preview = new Texture2D(bakedWeld.size, bakedWeld.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; - preview.SetPixels32(bakedWeld.color); preview.Apply(); - maps = bakedWeld; - if (bakedWeld.vertexColors != null) resultMesh.colors = bakedWeld.vertexColors; - status = $"{captured.indices.Length / 3:N0} → {target.indices.Length / 3:N0} triangles. " + - (bakedWeld.misses == 0 ? "All covered texels projected." : $"{bakedWeld.misses:N0} / {bakedWeld.covered:N0} texels missed (magenta). Increase projection distance and rebake.") + - (captured.warnings.Length > 0 ? $" {captured.warnings.Length} material warning(s), see Console." : ""); - UvtLog.Info("[Remesh] " + status); - // Source and target live in the same root-local space by construction; the - // diagonal ratio below proves it at a glance and catches scale regressions. - Vector3 mn = target.positions[0], mx = target.positions[0]; - foreach (var pv in target.positions) { mn = Vector3.Min(mn, pv); mx = Vector3.Max(mx, pv); } - float targetDiagonal = (mx - mn).magnitude; - float scaleRatio = targetDiagonal / Mathf.Max(1e-8f, captured.diagonal); - // Bake health counters (RemeshDiag log category): cage welding, one-sided - // border normals, nearest-query fallbacks and normal-map tilt. A loud, - // strongly-tilted map on a smooth-ish source is the signature of - // displaced projection samples; loud fraction > 5% also warns on its own. - if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) - UvtLog.Info(UvtLog.Category.RemeshDiag, - $"cage: {bakedWeld.weldedPositions:N0} welded positions ({bakedWeld.splitCopies:N0} split copies), " + - $"{bakedWeld.oneSidedNormals:N0} one-sided border normals, max cage deviation {bakedWeld.maxOneSidedDeg:F0}°, {bakedWeld.zeroNormals:N0} zero normals; " + - $"projection: {bakedWeld.rayFallbacks:N0} nearest-fallback samples, {bakedWeld.misses:N0} missed texels, front-face filter {(bakedWeld.facingFilter ? "on" : "off")}; " + - $"normal map tilt: mean {bakedWeld.meanTiltDeg:F1}° / max {bakedWeld.maxTiltDeg:F0}°, {bakedWeld.loudTexels:N0} texels >45°; " + - $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); - if (bakedWeld.zeroNormals > 0) - UvtLog.Warn(UvtLog.Category.RemeshDiag, - bakedWeld.zeroNormals + " result vertices have zero normals — their texels bake through zeroed ray directions " + - "and tangent frames. Re-run the UV stage; if it repeats, the remesh produced degenerate faces (lower simplification error or raise voxel resolution)."); - else if (bakedWeld.rayFallbacks > bakedWeld.covered * 4 / 5 && bakedWeld.covered > 0) - UvtLog.Warn(UvtLog.Category.RemeshDiag, - bakedWeld.rayFallbacks.ToString("N0") + " of the projection samples fell back to nearest-point search — the rays " + - "are not hitting the source. Check the projection distance and the hard-edge mode, and rebake."); - if (Mathf.Abs(scaleRatio - 1f) > 0.1f) - UvtLog.Warn(UvtLog.Category.RemeshDiag, - $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + - "Check voxel resolution, small-part pruning and simplification settings, and rebake."); - if (bakedWeld.loudTexels > bakedWeld.covered / 20 && bakedWeld.meanTiltDeg > 30f) - UvtLog.Warn(UvtLog.Category.RemeshDiag, - $"{100.0 * bakedWeld.loudTexels / Mathf.Max(1, bakedWeld.covered):F1}% of texels lean >45° with a {bakedWeld.meanTiltDeg:F0}° mean tilt — " + - "the map is dominated by extreme normals. Check the hard-edge mode, projection distance and cage fit, " + - "and compare against the source: fine detail should tilt a map, not saturate it."); - } - - void Report(string message) { status = message; RequestRepaint?.Invoke(); } - - static Mesh BuildMesh(string name, Vector3[] positions, int[] indices, Vector3[] normals = null, Color[] colors = null) - { - var mesh = new Mesh { name = name, indexFormat = IndexFormat.UInt32, hideFlags = HideFlags.HideAndDontSave }; - mesh.vertices = positions; mesh.triangles = indices; - if (normals != null) mesh.normals = normals; else mesh.RecalculateNormals(); - if (colors != null) mesh.colors = colors; - mesh.RecalculateBounds(); - return mesh; - } - - // Drops the output of `stage` and every stage after it. - void ClearFrom(Stage stage) - { - previews.Invalidate(); - if (stage <= Stage.Bake) { - if (preview) Object.DestroyImmediate(preview); - preview = null; maps = null; keys[(int)Stage.Bake] = null; - if (resultMesh && stage == Stage.Bake) resultMesh.colors = null; - } - if (stage <= Stage.Unwrap) { - if (resultMesh) Object.DestroyImmediate(resultMesh); - resultMesh = null; geometry = null; tangents = null; keys[(int)Stage.Unwrap] = null; - } - if (stage <= Stage.Simplify) { - if (simplifiedMesh) Object.DestroyImmediate(simplifiedMesh); - simplifiedMesh = null; simplified = null; keys[(int)Stage.Simplify] = null; - } - if (stage <= Stage.Remesh) { - if (voxelMesh) Object.DestroyImmediate(voxelMesh); - if (sourceMesh) Object.DestroyImmediate(sourceMesh); - voxelMesh = null; sourceMesh = null; voxel = null; snapshot = null; keys[(int)Stage.Remesh] = null; - if (nodes != null) { - foreach (var node in nodes) if (node.mesh) Object.DestroyImmediate(node.mesh); - nodes = null; - } - } - } - - void Clear() - { - ClearFrom(Stage.Remesh); - previews.Dispose(); + if (await run) + previews.Show(target == RemeshPipeline.Stage.Remesh ? RemeshPreview.Stage.Remesh : + target == RemeshPipeline.Stage.Simplify ? RemeshPreview.Stage.Simplified : RemeshPreview.Stage.Result); } void Save() { // Default output: a "remesh" subfolder next to the source model's asset. // Falls back to the folder picker for scene-only objects with no asset. - string relative = ResolveSourceRemeshFolder(); - if (relative == null) { - string parent = EditorUtility.OpenFolderPanel("Save Remesh Result", Application.dataPath, ""); - if (string.IsNullOrEmpty(parent)) return; - parent = parent.Replace('\\', '/'); - string assets = Application.dataPath.Replace('\\', '/'); - if (parent != assets && !parent.StartsWith(assets + "/", StringComparison.Ordinal)) { - status = "Choose a folder inside Assets."; return; - } - relative = "Assets" + parent.Substring(assets.Length); - // The folder panel can create a directory the AssetDatabase has not imported - // yet; GenerateUniqueAssetPath/CreateFolder then fail on the unknown parent. - if (!AssetDatabase.IsValidFolder(relative)) AssetDatabase.Refresh(); - if (!AssetDatabase.IsValidFolder(relative)) { - status = relative + " is not an imported asset folder. Refresh the Project window and save again."; return; - } - } - string clean = resultName; - foreach (char c in Path.GetInvalidFileNameChars()) clean = clean.Replace(c, '_'); - clean = clean.Replace('/', '_').Replace('\\', '_'); - if (string.IsNullOrWhiteSpace(clean)) clean = "Remesh"; - string folder = AssetDatabase.GenerateUniqueAssetPath(relative + "/" + clean + "_Remesh"); - GameObject temporary = null; - Mesh mesh = null; Material material = null; - bool createdFolder = false; - try { - // Beauty bakes fold the lighting into the BaseColor; the result shades - // Unlit (pipeline-agnostic) instead of Standard/URP-Lit. - bool unlit = maps != null && maps.beauty; - string shaderName = unlit ? "Unlit/Texture" - : (GraphicsSettings.currentRenderPipeline == null ? "Standard" : "Universal Render Pipeline/Lit"); - if (!unlit && GraphicsSettings.currentRenderPipeline != null && - !GraphicsSettings.currentRenderPipeline.GetType().Name.Contains("Universal")) - throw new InvalidOperationException("Result materials support Built-in and URP; HDRP export is not implemented."); - var shader = Shader.Find(shaderName); - if (!shader) throw new InvalidOperationException("Result shader is unavailable: " + shaderName); - string guid = AssetDatabase.CreateFolder(relative, Path.GetFileName(folder)); - if (string.IsNullOrEmpty(guid)) throw new IOException("Could not create " + folder + "."); - createdFolder = true; - folder = AssetDatabase.GUIDToAssetPath(guid); - // Keep-hierarchy results export through their own per-node path: one baked - // material + mesh asset per node under a rebuilt root prefab. The FBX lane - // stays single-mesh (the weld) — a multi-node FBX round-trip would re-import - // per-node normals/mappings for no gain over the native prefab. - if (settings.keepHierarchy && nodes != null) { - SaveHierarchy(folder, clean, shader); - return; - } - string[] names = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; - var paths = new string[names.Length]; - using (new AssetDatabase.AssetEditingScope()) { - for (int i = 0; i < paths.Length; ++i) { - paths[i] = folder + "/" + names[i] + (i == 4 ? ".exr" : ".png"); - // These are new exports in a uniquely created folder, never source-asset writes. - File.WriteAllBytes(paths[i], Encode(i)); - AssetDatabase.ImportAsset(paths[i]); - } - } - using (new AssetDatabase.AssetEditingScope()) { - for (int i = 0; i < paths.Length; ++i) { - var importer = (TextureImporter)AssetImporter.GetAtPath(paths[i]); - if (importer == null) throw new IOException("Texture import failed: " + paths[i]); - importer.textureType = i == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; - importer.sRGBTexture = i == 0; importer.wrapMode = TextureWrapMode.Clamp; - importer.maxTextureSize = maps.size; importer.textureCompression = TextureImporterCompression.Uncompressed; - importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; - importer.SaveAndReimport(); - } - } - mesh = Object.Instantiate(resultMesh); mesh.name = clean + "_LOD0"; mesh.hideFlags = HideFlags.None; - // The result mesh is expressed in the source root's local space. Normalized - // saves bake the root's world scale into the vertices so the exported root - // sits at scale 1 and the model keeps its real size; otherwise the node - // carries the scale (a scaled source would otherwise save at root-local size). - Vector3 worldScale = source ? source.transform.lossyScale : Vector3.one; - if (settings.normalizeSize) BakeScaleIntoMesh(mesh, worldScale); - material = new Material(shader) { name = clean + "_Remesh" }; - bool urp = shaderName != "Standard"; - if (unlit) { - // One lit texture in, one texture out — the other maps still export - // alongside for reference, but nothing samples them. - material.SetTexture("_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - } - else { - material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); - material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); - material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); - material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); - material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); - material.SetColor("_EmissionColor", Color.white); - material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); - material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); - material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); - material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); - if (urp) material.EnableKeyword("_OCCLUSIONMAP"); - } - temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.HideAndDontSave }; - temporary.AddComponent().sharedMesh = mesh; - temporary.AddComponent().sharedMaterial = material; - temporary.hideFlags = HideFlags.None; - temporary.transform.localScale = settings.normalizeSize ? Vector3.one : worldScale; -#if LIGHTMAP_UV_TOOL_FBX_EXPORTER - // The model ships as an FBX (geometry, split normals, UV0, tangents, - // vertex colors); the material stays a curated asset next to it that - // the prefab references. This is brand-new geometry in a uniquely - // created folder, not a channel re-save of a source FBX, so the - // isolated-export core's same-vertex-count snapshot contract does not - // apply; a failed export still rolls the whole folder back. - using (new AssetDatabase.AssetEditingScope()) - AssetDatabase.CreateAsset(material, folder + "/" + clean + ".mat"); - string fbxPath = folder + "/" + clean + ".fbx"; - UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { temporary }, - new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { - ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary, - // Embedded maps make the FBX self-contained; a linked FBX - // would reference this machine's absolute paths instead. - EmbedTextures = settings.embedFbxTextures }); - var fbxInfo = new FileInfo(Path.GetFullPath(fbxPath)); - if (!fbxInfo.Exists || fbxInfo.Length == 0) throw new IOException("FBX export produced an empty file."); - var modelImporter = (ModelImporter)AssetImporter.GetAtPath(fbxPath); - if (modelImporter != null) { - // The curated material + prefab ship next to the FBX; keep the - // importer from generating a duplicate MaterialDescription copy. - modelImporter.materialImportMode = ModelImporterMaterialImportMode.None; - // The normal map was baked against the exported tangent frame; - // a recalculation (MikkT default) can flip its handedness per - // vertex, which green-flips chunks of the baked map. - modelImporter.importNormals = ModelImporterNormals.Import; - modelImporter.importTangents = ModelImporterTangents.Import; - modelImporter.SaveAndReimport(); - } - var fbxRoot = AssetDatabase.LoadMainAssetAtPath(fbxPath) as GameObject; - if (!fbxRoot) throw new IOException("FBX reimport failed."); - var instance = (GameObject)PrefabUtility.InstantiatePrefab(fbxRoot); - instance.GetComponentInChildren().sharedMaterial = material; - PrefabUtility.SaveAsPrefabAsset(instance, folder + "/" + clean + ".prefab", out bool success); - Object.DestroyImmediate(instance); - if (!success) throw new IOException("Prefab save failed."); - AssetDatabase.SaveAssets(); status = "Saved: " + folder; - EditorGUIUtility.PingObject(fbxRoot); -#else - using (new AssetDatabase.AssetEditingScope()) { - AssetDatabase.CreateAsset(mesh, folder + "/" + clean + "_LOD0.asset"); - AssetDatabase.CreateAsset(material, folder + "/" + clean + ".mat"); - } - PrefabUtility.SaveAsPrefabAsset(temporary, folder + "/" + clean + ".prefab", out bool success); - if (!success) throw new IOException("Prefab save failed."); - AssetDatabase.SaveAssets(); status = "Saved: " + folder; - EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folder + "/" + clean + ".prefab")); -#endif - } - catch (Exception e) { - if (createdFolder && AssetDatabase.IsValidFolder(folder)) AssetDatabase.DeleteAsset(folder); - status = e.Message; UvtLog.Error("[Remesh export] " + e); - } - finally { - if (temporary) Object.DestroyImmediate(temporary); - if (mesh && !AssetDatabase.Contains(mesh)) Object.DestroyImmediate(mesh); - if (material && !AssetDatabase.Contains(material)) Object.DestroyImmediate(material); - } - } - - // Keep-hierarchy export (settings.keepHierarchy): per-node baked map sets, materials - // and mesh assets under one root prefab that rebuilds the captured local transforms. - // The source root's own scale stays ON the prefab root (a hierarchy has no single - // vertex space to bake it into), so "Normalized size" does not apply here. - void SaveHierarchy(string folder, string clean, Shader shader) - { - var temporary = new GameObject(clean + "_LOD0") { hideFlags = HideFlags.None }; - bool urp = shader.name != "Standard"; - try { - if (settings.normalizeSize) - UvtLog.Warn("[Remesh export] Keep-hierarchy saves keep the source root's scale on the prefab root; " + - "'Normalized size' applies to the single-mesh weld only."); - temporary.transform.localScale = source ? source.transform.lossyScale : Vector3.one; - string[] mapNames = { "BaseColor", "Normal", "MetallicSmoothness", "Occlusion", "Emission" }; - var nodeNames = new string[nodes.Count]; - var used = new HashSet(StringComparer.OrdinalIgnoreCase); - for (int i = 0; i < nodes.Count; ++i) { - string nodeClean = nodes[i].name; - foreach (char c in Path.GetInvalidFileNameChars()) nodeClean = nodeClean.Replace(c, '_'); - nodeClean = nodeClean.Replace('/', '_').Replace('\\', '_'); - if (string.IsNullOrWhiteSpace(nodeClean)) nodeClean = "Node"; - var unique = nodeClean; - int suffix = 2; - while (!used.Add(unique)) unique = nodeClean + "_" + suffix++; - nodeNames[i] = unique; - } - using (new AssetDatabase.AssetEditingScope()) { - for (int i = 0; i < nodes.Count; ++i) { - var node = nodes[i]; - var paths = new string[mapNames.Length]; - for (int m = 0; m < mapNames.Length; ++m) { - paths[m] = folder + "/" + nodeNames[i] + "_" + mapNames[m] + (m == 4 ? ".exr" : ".png"); - File.WriteAllBytes(paths[m], EncodeMaps(node.maps, m)); - AssetDatabase.ImportAsset(paths[m]); - } - for (int m = 0; m < mapNames.Length; ++m) { - var importer = (TextureImporter)AssetImporter.GetAtPath(paths[m]); - if (importer == null) throw new IOException("Texture import failed: " + paths[m]); - importer.textureType = m == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; - importer.sRGBTexture = m == 0; importer.wrapMode = TextureWrapMode.Clamp; - importer.maxTextureSize = node.maps.size; importer.textureCompression = TextureImporterCompression.Uncompressed; - importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; - importer.SaveAndReimport(); - } - var material = new Material(shader) { name = nodeNames[i] + "_Remesh" }; - bool nodeUnlit = node.maps != null && node.maps.beauty; - if (nodeUnlit) { - material.SetTexture("_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - } - else { - material.SetTexture(urp ? "_BaseMap" : "_MainTex", AssetDatabase.LoadAssetAtPath(paths[0])); - material.SetColor(urp ? "_BaseColor" : "_Color", Color.white); - material.SetTexture("_BumpMap", AssetDatabase.LoadAssetAtPath(paths[1])); - material.SetTexture("_MetallicGlossMap", AssetDatabase.LoadAssetAtPath(paths[2])); - material.SetTexture("_OcclusionMap", AssetDatabase.LoadAssetAtPath(paths[3])); - material.SetTexture("_EmissionMap", AssetDatabase.LoadAssetAtPath(paths[4])); - material.SetColor("_EmissionColor", Color.white); - material.SetFloat("_Metallic", 1); material.SetFloat(urp ? "_Smoothness" : "_GlossMapScale", 1); - material.SetFloat("_BumpScale", 1); material.SetFloat("_OcclusionStrength", 1); - material.EnableKeyword("_NORMALMAP"); material.EnableKeyword("_EMISSION"); - material.EnableKeyword(urp ? "_METALLICSPECGLOSSMAP" : "_METALLICGLOSSMAP"); - if (urp) material.EnableKeyword("_OCCLUSIONMAP"); - } - AssetDatabase.CreateAsset(material, folder + "/" + nodeNames[i] + ".mat"); - // The mesh asset is a COPY: the runtime node.mesh stays a preview - // object owned by the stage outputs (destroyed by ClearFrom). - var mesh = Object.Instantiate(node.mesh); - mesh.name = nodeNames[i] + "_LOD0"; mesh.hideFlags = HideFlags.None; - AssetDatabase.CreateAsset(mesh, folder + "/" + nodeNames[i] + "_LOD0.asset"); - var go = new GameObject(nodeNames[i]); - go.AddComponent().sharedMesh = mesh; - go.AddComponent().sharedMaterial = material; - go.transform.localPosition = node.localPosition; - go.transform.localRotation = node.localRotation; - go.transform.localScale = node.localScale; - go.transform.SetParent(temporary.transform, false); - } - } - PrefabUtility.SaveAsPrefabAsset(temporary, folder + "/" + clean + ".prefab", out bool success); - if (!success) throw new IOException("Prefab save failed."); - AssetDatabase.SaveAssets(); - status = $"Saved: {folder} ({nodes.Count} node(s))"; - UvtLog.Info("[Remesh export] " + status); - EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folder + "/" + clean + ".prefab")); - } - finally { - Object.DestroyImmediate(temporary); - } - } - - // "/remesh" when the source root resolves to an imported - // asset (a prefab/model instance, or any mesh asset under it); null when the - // source is scene-only and the folder picker is needed instead. - string ResolveSourceRemeshFolder() - { - string assetPath = null; - if (source) { - assetPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(source); - if (string.IsNullOrEmpty(assetPath)) { - var filter = source.GetComponentInChildren(); - if (filter && filter.sharedMesh) assetPath = AssetDatabase.GetAssetPath(filter.sharedMesh); - } - } - if (string.IsNullOrEmpty(assetPath)) return null; - string dir = Path.GetDirectoryName(assetPath); - if (string.IsNullOrEmpty(dir)) return null; - dir = dir.Replace('\\', '/'); - if (!dir.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) || !AssetDatabase.IsValidFolder(dir)) - return null; - string remesh = dir + "/remesh"; - if (!AssetDatabase.IsValidFolder(remesh)) AssetDatabase.CreateFolder(dir, "remesh"); - return AssetDatabase.IsValidFolder(remesh) ? remesh : null; - } - - // Bakes a world scale into the vertex data so the saved root sits at scale 1: - // positions scale component-wise, normals and tangents take the inverse - // (inverse-transpose of a diagonal matrix) and renormalize, and a negative - // determinant mirrors the mesh, so the triangle winding flips with it. - static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) - { - if (Mathf.Approximately(scale.x, 1) && Mathf.Approximately(scale.y, 1) && Mathf.Approximately(scale.z, 1)) return; - if (Mathf.Abs(scale.x) < 1e-6f || Mathf.Abs(scale.y) < 1e-6f || Mathf.Abs(scale.z) < 1e-6f) return; - var vertices = mesh.vertices; - for (int i = 0; i < vertices.Length; ++i) vertices[i] = Vector3.Scale(vertices[i], scale); - mesh.vertices = vertices; - var inv = new Vector3(1f / scale.x, 1f / scale.y, 1f / scale.z); - var normals = mesh.normals; - for (int i = 0; i < normals.Length; ++i) normals[i] = Vector3.Scale(normals[i], inv).normalized; - mesh.normals = normals; - var tangents = mesh.tangents; - for (int i = 0; i < tangents.Length; ++i) { - var t = Vector3.Scale(new Vector3(tangents[i].x, tangents[i].y, tangents[i].z), inv).normalized; - tangents[i] = new Vector4(t.x, t.y, t.z, tangents[i].w); - } - mesh.tangents = tangents; - if (scale.x * scale.y * scale.z < 0) - for (int sub = 0; sub < mesh.subMeshCount; ++sub) { - var triangles = mesh.GetTriangles(sub); - for (int i = 0; i < triangles.Length; i += 3) { - int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; - } - mesh.SetTriangles(triangles, sub); - } - } - - byte[] Encode(int index) => EncodeMaps(maps, index); - - byte[] EncodeMaps(RemeshBaker.Maps source, int index) - { - var texture = new Texture2D(source.size, source.size, - index == 4 ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); - try { - if (index == 4) { texture.SetPixels(source.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } - texture.SetPixels32(index == 0 ? source.color : index == 1 ? source.normal : index == 2 ? source.metal : source.ao); - texture.Apply(); return texture.EncodeToPNG(); - } - finally { Object.DestroyImmediate(texture); } + string parent = RemeshExporter.ResolveDefaultFolder(source) ?? RemeshExporter.PickFolder(out saveStatus); + if (parent == null) return; + try { saveStatus = RemeshExporter.Export(pipeline, settings, parent); } + catch (Exception e) { saveStatus = e.Message; } } } } diff --git a/Tests/Editor/RemeshHierarchyTests.cs b/Tests/Editor/RemeshHierarchyTests.cs index 2f5fd8b7..0399d236 100644 --- a/Tests/Editor/RemeshHierarchyTests.cs +++ b/Tests/Editor/RemeshHierarchyTests.cs @@ -4,8 +4,8 @@ namespace SashaRX.UnityMeshLab.Tests.Editor { - /// Keep-hierarchy remesh: the per-node capture scope (RemeshBakeTool's renderer - /// collection) and the settings plumbing. Native remeshing itself is covered by the + /// Keep-hierarchy remesh: the renderer collection shared by the weld capture and the + /// per-node scope, and the settings plumbing. Native remeshing itself is covered by the /// Native~ ctest battery and the DllNotFoundException-skipping stage tests. public sealed class RemeshHierarchyTests { @@ -19,9 +19,10 @@ static Mesh TriangleMesh() } [Test] - public void CollectHierarchyRenderers_FollowsTheWeldCaptureFilters() + public void CollectRenderers_AppliesTheCaptureFilters() { var mesh = TriangleMesh(); + var collisionMesh = TriangleMesh(); collisionMesh.name = "Body_COL"; var root = new GameObject("Root"); try { var body = new GameObject("Body"); @@ -45,14 +46,40 @@ public void CollectHierarchyRenderers_FollowsTheWeldCaptureFilters() var hidden = inactive.AddComponent(); hidden.enabled = false; - var collected = RemeshBakeTool.CollectHierarchyRenderers(root, lod0Only: true); + // A normally named object carrying a collision mesh asset is filtered + // by the mesh name, exactly like the weld capture does. + var hull = new GameObject("Hull"); + hull.transform.SetParent(root.transform); + hull.AddComponent().sharedMesh = collisionMesh; + hull.AddComponent(); + + var collected = RemeshSource.CollectRenderers(root, lod0Only: true); Assert.AreEqual(1, collected.Count, "only the enabled LOD0 non-collision renderer is a node"); Assert.AreEqual(body.transform, collected[0].transform); - var withLods = RemeshBakeTool.CollectHierarchyRenderers(root, lod0Only: false); - Assert.AreEqual(2, withLods.Count, "lod0Only=false still excludes the collision node and the disabled renderer"); + var withLods = RemeshSource.CollectRenderers(root, lod0Only: false); + Assert.AreEqual(2, withLods.Count, "lod0Only=false still excludes the collision nodes and the disabled renderer"); + } + finally { Object.DestroyImmediate(root); Object.DestroyImmediate(mesh); Object.DestroyImmediate(collisionMesh); } + } + + [Test] + public void BakeScaleIntoMesh_MirrorsWindingAndHandednessAndRefreshesBounds() + { + var mesh = TriangleMesh(); + mesh.tangents = new[] { new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1) }; + try { + RemeshExporter.BakeScaleIntoMesh(mesh, new Vector3(-2, 3, 1)); + Assert.AreEqual(new Vector3(-2, 0, 0), mesh.vertices[1]); + Assert.AreEqual(new Vector3(0, 3, 0), mesh.vertices[2]); + Assert.AreEqual(new Vector3(-2, 3, 0) * 0.5f, mesh.bounds.center, "bounds follow the scaled vertices"); + Assert.AreEqual(new[] { 0, 2, 1 }, mesh.triangles, "a mirroring scale flips the winding"); + var t = mesh.tangents[0]; + Assert.AreEqual(-1f, t.x, 1e-5f, "tangents take the forward scale"); + Assert.AreEqual(-1f, t.w, "and the handedness flips with the mirror"); + Assert.AreEqual(1f, Mathf.Abs(Vector3.Dot(mesh.normals[0], Vector3.forward)), 1e-5f); } - finally { Object.DestroyImmediate(root); Object.DestroyImmediate(mesh); } + finally { Object.DestroyImmediate(mesh); } } [Test] From 01b2dbc06f5b982e8f67646180807a99294a1e4e Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:03:57 +0000 Subject: [PATCH 055/130] chore: remove a stray screenshot committed at the package root image.png (a game screenshot) came in with b488358 and would be imported as a package texture. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- image.png | Bin 2169122 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 image.png diff --git a/image.png b/image.png deleted file mode 100644 index fcaa1072de1a7d62e703b1692a0fff8db1808765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2169122 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%0DhOtfMLKvIfBgP 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�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%0ACsO4y!dL@PHHh}VYB2pea#zp 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

V6`CpbW-6XH(b#a8w0a2JmMRIkuSYR`bwSo_= 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

l<>&` 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®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 Pcx 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 s_ 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

vmx5Tr)SVp%q26`ajs50unFU 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

L_=<@6hxm9sMi@!{dGCrI8 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 -R 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 From 36ade9ab0862e7ff1f6c31f7fae1ec8c3e453f58 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:06:06 +0000 Subject: [PATCH 056/130] fix(fbx): restore the source importer on every exit of the isolated export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The variant keepQuads toggle and the re-save isReadable flip were put back only in Phase 5 (the toggle also in the catch), so the early "no matching meshes" return and a failure after Phase 3 left the source importer changed. Both are now restored by ImporterRestoreScope, a using declaration disposed at method exit — success, early return and failure alike. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Documentation~/FBX_PIPELINE_CHECKLIST.md | 5 +- Editor/Tools/LightmapTransferTool.cs | 71 ++++++++++++++---------- 2 files changed, 44 insertions(+), 32 deletions(-) diff --git a/Documentation~/FBX_PIPELINE_CHECKLIST.md b/Documentation~/FBX_PIPELINE_CHECKLIST.md index 59f81955..cbae389e 100644 --- a/Documentation~/FBX_PIPELINE_CHECKLIST.md +++ b/Documentation~/FBX_PIPELINE_CHECKLIST.md @@ -321,8 +321,9 @@ imported with `keepQuads = true`: just-written quad FBX on the next import. * **Variant exports** (`ExportVertexColorsToFbxAs`) — the source importer must end the export unchanged, so `keepQuads` is toggled on only for the - clone reimport and restored in Phase 5 (and in the catch, so a failed - export cannot strand the toggle). The new variant file's own importer + clone reimport and restored by `ImporterRestoreScope` at method exit — + success, every early return and failure alike (the same scope puts + `isReadable` back for source re-saves). The new variant file's own importer gets `keepQuads` pinned in Phase 4 so its project view matches the file. * **Wide LOD-rebuild path** — already locks `keepQuads` via `PrepareImportSettings(lockForFbxOverwrite: true)` before export. Its diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index 267f55f9..cdd30705 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -3879,6 +3879,31 @@ void ExportNarrowIntentGroups( #endif } + // Puts a source ModelImporter back to the state ExportIsolatedChannelsToFbx's + // Phase 1 found it in; a no-op when Phase 1 changed nothing. Disposed at the + // method's exit whichever way it leaves. + sealed class ImporterRestoreScope : IDisposable + { + readonly ModelImporter importer; + readonly string path; + readonly bool readable, quads; + + public ImporterRestoreScope(ModelImporter importer, string path, bool restoreReadable, bool restoreQuads) + { + this.importer = importer; this.path = path; + readable = restoreReadable; quads = restoreQuads; + } + + public void Dispose() + { + if (importer == null || (!readable && !quads)) return; + if (readable) importer.isReadable = false; + if (quads) importer.keepQuads = false; + Uv2AssetPostprocessor.bypassPaths.Add(path); + importer.SaveAndReimport(); + } + } + /// Mesh entries supplying source data. Matched /// against the FBX clone by sub-asset name. /// Channels the caller is allowed to write. @@ -4031,6 +4056,13 @@ bool ExportFbxIsolatedCore( } } + // Importer contract: the source importer ends the export exactly as + // Phase 1 found it — on success, on every early return and on failure + // alike. A using declaration disposes at method exit, so no later + // phase can strand isReadable or the variant keepQuads toggle. + using var importerRestore = new ImporterRestoreScope(srcImporter, sourceFbxPath, + restoreReadable: madeReadable, restoreQuads: variantQuadsToggle); + // ── Phase 2: Build export hierarchy ── var fbxAsset = AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) as GameObject; if (fbxAsset == null) @@ -4177,14 +4209,6 @@ bool ExportFbxIsolatedCore( catch (Exception ex) { Uv2AssetPostprocessor.fbxOverwritePaths.Remove(targetFbxPath); - // Variant keepQuads toggle must not outlive a failed export — - // Phase 5 is unreachable after this return. - if (variantQuadsToggle && srcImporter != null) - { - srcImporter.keepQuads = false; - Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); - srcImporter.SaveAndReimport(); - } // Best-effort: drop a leftover .tmp so a retry isn't blocked // by the "Strip any leftover tmp" sweep above logging into // a misleading state. @@ -4233,31 +4257,18 @@ bool ExportFbxIsolatedCore( ctx.Refresh(ctx.LodGroup); } - // ── Phase 5: Restore importer settings + working copies ── - // Only isReadable is restored: Phase 1 no longer touches weld / + // ── Phase 5: Restore working copies ── + // The importer itself is restored by importerRestore at method exit: + // isReadable goes back off; Phase 1 no longer touches weld / // compression / optimization, generateSecondaryUV is left disabled - // on purpose so the just-authored UV1 is not regenerated, and - // keepQuads stays enabled so the re-saved FBX keeps its quads on - // every future import (Phase 1 quad-preservation rationale). + // on purpose so the just-authored UV1 is not regenerated, and on a + // source re-save keepQuads stays enabled so the re-saved FBX keeps + // its quads on every future import (Phase 1 quad-preservation + // rationale). For a variant export the source FBX and its importer + // end exactly as they started — the variant file on disk keeps its + // quads regardless of that import setting. if (!isVariantExport) - { - if (srcImporter != null && madeReadable) - { - srcImporter.isReadable = false; - Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); - srcImporter.SaveAndReimport(); - } RestoreWorkingCopiesToScene(); - } - else if (variantQuadsToggle && srcImporter != null) - { - // Variant contract: the source FBX and its importer end the - // export exactly as they started. The variant file on disk - // keeps its quads regardless of this import setting. - srcImporter.keepQuads = false; - Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); - srcImporter.SaveAndReimport(); - } return exported; #else UvtLog.Error("[FBX Export] FBX Exporter package not installed."); From 4a0415c0df0fb3e59ff4570f13a3e75a966ae781 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:06:06 +0000 Subject: [PATCH 057/130] fix(gallery): link pages by their written name; unique names on sanitizer collisions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The index and navigation linked _gallery_.html while render_model wrote the sanitized name, and two models sanitizing to the same string overwrote each other's page. safe_model_filenames assigns one stable name per model (a _2, _3… suffix in model order on collisions) and every link and write uses it. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 ++ Tools~/build_gallery.py | 26 ++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92f3ec7d..f6bd2fba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Beauty bakes shade lightmapped faces as the game does.** The lightmap was written out as the colour itself; Unity lightmaps store irradiance that the Lit shader multiplies by albedo, so textured lightmapped objects baked as flat light. Lightmapped faces are now albedo × (lightmap + realtime direct) + emission. Point and spot lights respect their shadow setting and strength (they cast opaque shadows regardless before), light ranges and shadow distances are evaluated in world units (a root scaled to 0.01 or 100 no longer stretches or shrinks their reach), and keep-hierarchy nodes evaluate the lighting in their own space instead of the root's. - **Remesh & Bake: *Smooth* and *Angle* hard-edge modes are smooth across UV islands again.** The post-unwrap normal regeneration accumulated per output vertex, and xatlas splits vertices along every chart border, so every mode hardened island borders — *Smooth* behaved like *UV islands*, *Angle* like *UV islands + angle*. Copies along chart borders are now grouped back by position and native crease group, and normal smoothing runs over the same groups. Tangents are re-orthogonalized against the final normals so the saved frame matches the bake's. The front-face-filtered nearest fallback is bounded by the projection distance like the unfiltered one (it could sample an arbitrarily distant part across a gap). - **Remesh & Bake, normalized saves: bounds and tangents.** Baking the source scale into the mesh left `mesh.bounds` at the unscaled size (culling at the wrong extent) and scaled tangents by the inverse like normals — tangents are direction vectors and take the forward scale, then re-orthogonalize; a mirroring scale also flips the tangent handedness with the winding. Skinned-only roots now follow the hierarchy selection like mesh roots. The saved model's scale is the one captured at remesh time, not whatever is selected at save time. +- **FBX isolated export restores the source importer on every exit.** The variant `keepQuads` toggle and the re-save `isReadable` flip were put back only in Phase 5 (and the toggle also in the catch), so the early "no matching meshes" return and a failure after Phase 3 left the source importer changed. Both are now restored by a scope disposed at method exit. +- **Sweep gallery pages are reachable and never overwrite each other.** The index and per-page navigation linked `_gallery_.html` while the page was written under the sanitized name (a model named `A B` had no working link), and two models sanitizing to the same string wrote the same file. Every link now uses the written name, and colliding names get a stable `_2`, `_3`… suffix in model order. - **Repository: a stray screenshot committed at the package root is removed.** ### Added diff --git a/Tools~/build_gallery.py b/Tools~/build_gallery.py index 65e990cc..05d82d5b 100644 --- a/Tools~/build_gallery.py +++ b/Tools~/build_gallery.py @@ -392,7 +392,7 @@ def render_index(out_dir, models, gallery_id): '

Per-model galleries with voting (rating 1-5 + tags). Votes live in your browser; export at the bottom of each page.

', '
') write_gallery_file(out_dir, "_gallery_index.html", "\n".join(parts)) @@ -406,6 +406,22 @@ def safe_model_filename(model): return safe +def safe_model_filenames(models): + """One stable page name per model: the sanitized name, with `_2`, `_3`… appended + (in model order) when two models sanitize to the same string, so no page is + overwritten by another and every link targets the file that was written.""" + names, used = {}, set() + for m in models: + base = safe_model_filename(m) + name, n = base, 2 + while name.lower() in used: + name = f"{base}_{n}" + n += 1 + used.add(name.lower()) + names[m] = name + return names + + def write_gallery_file(out_dir, filename, content): """All gallery writes go through here. The output directory is resolved to its canonical form, the target must resolve to a direct child with the @@ -434,7 +450,7 @@ def render_model(out_dir, gallery_id, model, all_cells, res_axis, pad_axis, bdr_ pairs.add((r.get("rendererName"), int(r.get("lodIndex", -1)))) pairs = sorted(pairs) - nav = " | ".join(f'{html.escape(m)}' for m in MODELS_ORDER) + nav = " | ".join(f'{html.escape(m)}' for m in MODELS_ORDER) nav += f' | index' parts = [f'UV2 — {html.escape(model)}', @@ -469,10 +485,11 @@ def render_model(out_dir, gallery_id, model, all_cells, res_axis, pad_axis, bdr_ parts.append(f'') parts.append('') - write_gallery_file(out_dir, f"_gallery_{safe_model_filename(model)}.html", "\n".join(parts)) + write_gallery_file(out_dir, f"_gallery_{MODEL_FILES[model]}.html", "\n".join(parts)) MODELS_ORDER = [] # filled per call +MODEL_FILES = {} # model -> page file stem, filled per call def main(): @@ -499,8 +516,9 @@ def main(): bdr_axis = sorted({c["bdr"] for c in cells}) models = sorted({c["lodGroup"] for c in cells}) - global MODELS_ORDER + global MODELS_ORDER, MODEL_FILES MODELS_ORDER = models + MODEL_FILES = safe_model_filenames(models) for m in models: render_model(out_dir, gallery_id, m, cells, res_axis, pad_axis, bdr_axis) From 2aabaeb0b305bd1116ccf6c86c1cde258da6a808 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 05:10:12 +0000 Subject: [PATCH 058/130] fix(fbx): cover a throwing Phase 1 reimport in the importer restore scope ImporterRestoreScope is now created before Phase 1 touches the source importer and is told about each change (isReadable, variant keepQuads) before the SaveAndReimport that applies it, so an exception from that reimport still restores the importer at method exit. The madeReadable / variantQuadsToggle locals it replaced are gone. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Documentation~/FBX_PIPELINE_CHECKLIST.md | 6 ++- Editor/Tools/LightmapTransferTool.cs | 47 +++++++++++------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Documentation~/FBX_PIPELINE_CHECKLIST.md b/Documentation~/FBX_PIPELINE_CHECKLIST.md index cbae389e..e9317994 100644 --- a/Documentation~/FBX_PIPELINE_CHECKLIST.md +++ b/Documentation~/FBX_PIPELINE_CHECKLIST.md @@ -322,8 +322,10 @@ imported with `keepQuads = true`: * **Variant exports** (`ExportVertexColorsToFbxAs`) — the source importer must end the export unchanged, so `keepQuads` is toggled on only for the clone reimport and restored by `ImporterRestoreScope` at method exit — - success, every early return and failure alike (the same scope puts - `isReadable` back for source re-saves). The new variant file's own importer + success, every early return and failure alike, a throwing Phase 1 reimport + included: the scope is created before Phase 1 and told about each change + before the reimport that applies it (the same scope puts `isReadable` back + for source re-saves). The new variant file's own importer gets `keepQuads` pinned in Phase 4 so its project view matches the file. * **Wide LOD-rebuild path** — already locks `keepQuads` via `PrepareImportSettings(lockForFbxOverwrite: true)` before export. Its diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index cdd30705..3be2ccba 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -3880,19 +3880,22 @@ void ExportNarrowIntentGroups( } // Puts a source ModelImporter back to the state ExportIsolatedChannelsToFbx's - // Phase 1 found it in; a no-op when Phase 1 changed nothing. Disposed at the - // method's exit whichever way it leaves. + // Phase 1 found it in; a no-op when Phase 1 changed nothing. Created BEFORE + // Phase 1 touches the importer and told about each change before the reimport + // that applies it, so a throwing SaveAndReimport is covered too. Disposed at + // the method's exit whichever way it leaves. sealed class ImporterRestoreScope : IDisposable { - readonly ModelImporter importer; readonly string path; - readonly bool readable, quads; + ModelImporter importer; + bool readable, quads; - public ImporterRestoreScope(ModelImporter importer, string path, bool restoreReadable, bool restoreQuads) - { - this.importer = importer; this.path = path; - readable = restoreReadable; quads = restoreQuads; - } + public ImporterRestoreScope(string path) { this.path = path; } + + /// isReadable was flipped on for the export; put it back off. + public void RestoreReadable(ModelImporter source) { importer = source; readable = true; } + /// keepQuads was toggled on for the export; put it back off. + public void RestoreQuads(ModelImporter source) { importer = source; quads = true; } public void Dispose() { @@ -3978,8 +3981,12 @@ bool ExportFbxIsolatedCore( // ── Phase 1: Prepare importer (single reimport, scoped to intent) ── ModelImporter srcImporter = null; - bool madeReadable = false; - bool variantQuadsToggle = false; + // Importer contract: the source importer ends the export exactly as + // Phase 1 found it — on success, on every early return and on failure + // alike, a throwing Phase 1 reimport included. A using declaration + // disposes at method exit, so no later phase can strand isReadable or + // the variant keepQuads toggle. + using var importerRestore = new ImporterRestoreScope(sourceFbxPath); if (!isVariantExport) { srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; @@ -4012,7 +4019,7 @@ bool ExportFbxIsolatedCore( // the reimport changes nothing about the exported result // except that the authored data now actually lands. if (!srcImporter.isReadable) - { srcImporter.isReadable = true; needsReimport = true; madeReadable = true; } + { srcImporter.isReadable = true; needsReimport = true; importerRestore.RestoreReadable(srcImporter); } // Quad preservation: keepQuads changes only the index-buffer // shape (4 indices per quad instead of two triangles) — the // vertex stream, its order and count, is untouched, so the @@ -4040,29 +4047,19 @@ bool ExportFbxIsolatedCore( // importer unchanged (ExportVertexColorsToFbxAs contract). But // the clone serialized in Phase 2 needs the source's quad // topology so the variant FBX does not come out triangulated — - // toggle keepQuads on for the clone reimport, restore in Phase 5. + // toggle keepQuads on for the clone reimport; importerRestore + // puts it back at method exit. srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; - // The main-asset guard keeps the toggle out of the window between - // this reimport and the try block below — the early "cannot load - // FBX" return in Phase 2 must not strand keepQuads=true on the - // source importer with no restore path (Phase 5 is try-scoped). if (srcImporter != null && !srcImporter.keepQuads && AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) != null) { srcImporter.keepQuads = true; + importerRestore.RestoreQuads(srcImporter); Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); srcImporter.SaveAndReimport(); - variantQuadsToggle = true; } } - // Importer contract: the source importer ends the export exactly as - // Phase 1 found it — on success, on every early return and on failure - // alike. A using declaration disposes at method exit, so no later - // phase can strand isReadable or the variant keepQuads toggle. - using var importerRestore = new ImporterRestoreScope(srcImporter, sourceFbxPath, - restoreReadable: madeReadable, restoreQuads: variantQuadsToggle); - // ── Phase 2: Build export hierarchy ── var fbxAsset = AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) as GameObject; if (fbxAsset == null) From b2637380d5c4a7876df1125cfd52fe936386c768 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 09:49:43 +0000 Subject: [PATCH 059/130] fix(remesh): compile against the real ReflectionProbe API; add the missing test .meta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ReflectionProbe.boxProjection is a bool — there is no ReflectionProbeBoxProjection enum, so RemeshBeauty failed with CS0103 in the editor. RemeshHierarchyTests.cs shipped without a .meta and was ignored by Unity as an orphan package asset. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Editor/RemeshBeauty.cs | 2 +- Tests/Editor/RemeshHierarchyTests.cs.meta | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 Tests/Editor/RemeshHierarchyTests.cs.meta diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index ada716b4..34acada8 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -148,7 +148,7 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) probe.bounds = rp.bounds; probe.bounded = true; probe.importance = rp.importance; probe.worldPos = rp.transform.position; probe.boxMin = rp.bounds.min; probe.boxMax = rp.bounds.max; - probe.boxProjection = rp.boxProjection != ReflectionProbeBoxProjection.Off; + probe.boxProjection = rp.boxProjection; probeList.Add(probe); } probes = probeList.ToArray(); diff --git a/Tests/Editor/RemeshHierarchyTests.cs.meta b/Tests/Editor/RemeshHierarchyTests.cs.meta new file mode 100644 index 00000000..5f448784 --- /dev/null +++ b/Tests/Editor/RemeshHierarchyTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 518d3f6891ba44c180b66ff8227cefb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From dcf755580ba608cc2c7015f351ce9eb0fb388ab2 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 09:49:43 +0000 Subject: [PATCH 060/130] ci(meta-check): cover Tests/ and every tracked package-root file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The .meta validation scanned only Editor/, Plugins/ and Shaders/ plus a fixed list of root files, so a test file without .meta and a stray screenshot at the package root both passed CI and surfaced as "no meta file … immutable folder" warnings in the editor. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- .github/workflows/meta-check.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/meta-check.yml b/.github/workflows/meta-check.yml index 0b71d8da..447402bf 100644 --- a/.github/workflows/meta-check.yml +++ b/.github/workflows/meta-check.yml @@ -55,10 +55,18 @@ jobs: EXIT=1 fi done - # Check all tracked files in Editor/, Plugins/, Shaders/ that need .meta. - # Native~/ and Documentation~/ are hidden from Unity by the ~ suffix - # and do NOT need .meta files. - for f in $(find Editor Plugins Shaders -type f \ + # Any other tracked file at the package root is imported too (a stray + # screenshot once shipped this way); dotfiles are the only exception. + for f in $(git ls-files | grep -v '/' | grep -v '\.meta$' | grep -v '^\.'); do + if [ ! -f "${f}.meta" ]; then + echo "::error::Missing .meta file for package-root file: ${f}" + EXIT=1 + fi + done + # Check all tracked files in Editor/, Plugins/, Shaders/, Tests/ that + # need .meta. Native~/, Documentation~/ and Tools~/ are hidden from + # Unity by the ~ suffix and do NOT need .meta files. + for f in $(find Editor Plugins Shaders Tests -type f \ ! -name '*.meta' \ ! -name '.gitkeep' \ ! -name '.DS_Store' \ @@ -69,7 +77,7 @@ jobs: fi done # Check for orphaned .meta files (no matching file/dir) - for m in $(find Editor Plugins Shaders -name '*.meta' 2>/dev/null); do + for m in $(find Editor Plugins Shaders Tests -name '*.meta' 2>/dev/null); do target="${m%.meta}" if [ ! -e "$target" ]; then echo "::warning::Orphaned .meta file (no matching file/dir): ${m}" From e0ec687ea14a181763786266946ef87f4c9321c0 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 09:58:10 +0000 Subject: [PATCH 061/130] fix(remesh): read lightmaps lazily, per renderer region, only for Beauty bakes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The capture read every referenced scene lightmap in full as float pixels (16 B/texel: 1 GiB managed + 1 GiB RenderTexture for an 8K map) in every bake mode. On large Bakery lightmaps GetPixels failed ("array size too large") and the GPU ran out of memory (D3D 8007000e), which crashed the asset import worker on the reimport that follows a failed run. - RemeshSource.Capture keeps only LightmapRef (texture, direction, scaleOffset) per unique triple; ReadLightmaps/ReleaseLightmaps bracket a Beauty bake in RemeshPipeline.RunBake, on the main thread. Materials bakes never read them. - RemeshBeauty.ReadLightmap reads just the renderer's scale/offset rect (one texel of padding) through Blit(scale, offset), downsampled above 2048² texels, and returns an st that maps uv2 into the region; sampling clamps at the region edges. LightmapRegion is unit-tested. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 8 ++- Editor/RemeshBeauty.cs | 115 ++++++++++++++++++------------ Editor/RemeshPipeline.cs | 7 +- Editor/RemeshSource.cs | 38 ++++++++-- Tests/Editor/RemeshBakeTests.cs | 21 ++++++ 6 files changed, 136 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6bd2fba..2b6763d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Beauty bakes shade lightmapped faces as the game does.** The lightmap was written out as the colour itself; Unity lightmaps store irradiance that the Lit shader multiplies by albedo, so textured lightmapped objects baked as flat light. Lightmapped faces are now albedo × (lightmap + realtime direct) + emission. Point and spot lights respect their shadow setting and strength (they cast opaque shadows regardless before), light ranges and shadow distances are evaluated in world units (a root scaled to 0.01 or 100 no longer stretches or shrinks their reach), and keep-hierarchy nodes evaluate the lighting in their own space instead of the root's. - **Remesh & Bake: *Smooth* and *Angle* hard-edge modes are smooth across UV islands again.** The post-unwrap normal regeneration accumulated per output vertex, and xatlas splits vertices along every chart border, so every mode hardened island borders — *Smooth* behaved like *UV islands*, *Angle* like *UV islands + angle*. Copies along chart borders are now grouped back by position and native crease group, and normal smoothing runs over the same groups. Tangents are re-orthogonalized against the final normals so the saved frame matches the bake's. The front-face-filtered nearest fallback is bounded by the projection distance like the unfiltered one (it could sample an arbitrarily distant part across a gap). - **Remesh & Bake, normalized saves: bounds and tangents.** Baking the source scale into the mesh left `mesh.bounds` at the unscaled size (culling at the wrong extent) and scaled tangents by the inverse like normals — tangents are direction vectors and take the forward scale, then re-orthogonalize; a mirroring scale also flips the tangent handedness with the winding. Skinned-only roots now follow the hierarchy selection like mesh roots. The saved model's scale is the one captured at remesh time, not whatever is selected at save time. +- **Remesh & Bake no longer reads whole scene lightmaps at capture.** The capture read every lightmap a renderer referenced in full, as float pixels (16 bytes per texel, 1 GiB for an 8K map, plus the same again as a RenderTexture) — in every bake mode — which failed with "GetPixels: array size too large" on large Bakery lightmaps and drove the GPU out of memory (D3D `8007000e`, crashing the asset import worker on the following reimport). The capture now keeps only the texture references; a Beauty bake reads, right before it runs, just the region each renderer occupies (its scale/offset rect plus one texel of padding, downsampled above 2048² texels) and releases the pixels when the bake ends. Materials bakes never touch the lightmaps. - **FBX isolated export restores the source importer on every exit.** The variant `keepQuads` toggle and the re-save `isReadable` flip were put back only in Phase 5 (and the toggle also in the catch), so the early "no matching meshes" return and a failure after Phase 3 left the source importer changed. Both are now restored by a scope disposed at method exit. - **Sweep gallery pages are reachable and never overwrite each other.** The index and per-page navigation linked `_gallery_.html` while the page was written under the sanitized name (a model named `A B` had no working link), and two models sanitizing to the same string wrote the same file. Every link now uses the written name, and colliding names get a stable `_2`, `_3`… suffix in model order. - **Repository: a stray screenshot committed at the package root is removed.** diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 83b81cb5..8b879d60 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -121,6 +121,11 @@ settings, marked "settings changed" in its header) and clears everything after i Scene lighting is captured once in world space and every capture space (the weld, or each keep-hierarchy node) converts into it, so light ranges, shadow distances and probe bounds stay in world units whatever the source's scale. + Lightmaps are read only for a Beauty bake, right before it runs, and only + the region each renderer occupies (its lightmap scale/offset rect, one texel + of padding); a region above 2048² texels is downsampled to fit, and the + float readbacks are released when the bake ends — the capture itself keeps + just the texture references, so Materials bakes never touch the lightmaps. The saved material becomes **Unlit/Texture** with that one map (the other maps still export alongside); the 3D preview renders beauty results unlit, exactly like the saved material. @@ -182,7 +187,8 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. a stage and everything after it; `Key`/`IsStale` drive the "(settings changed)" markers. - `Editor/RemeshSource.cs` — `CollectRenderers` (the one filter for both lanes), - `Capture` (geometry, materials, textures and lightmaps in a given space) and + `Capture` (geometry, materials, textures and lightmap references in a given + space; `ReadLightmaps`/`ReleaseLightmaps` around a Beauty bake) and `ReadableScope` (Read/Write on for the capture, back off after). - `Editor/RemeshNative.cs` — the P/Invoke bridge and the post-unwrap normal / tangent regeneration. diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 34acada8..764b36a3 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -297,14 +297,14 @@ static Vector3 BoxProjected(Vector3 r, Vector3 p, Probe probe) internal Color SampleLightmap(Lightmap map, Vector2 uv2, Vector3 localNormal) { Vector2 uv = new Vector2(uv2.x * map.st.x + map.st.z, uv2.y * map.st.y + map.st.w); - Color illuminance = SampleBilinear(map.pixels, map.width, map.height, uv); + Color illuminance = SampleBilinear(map.pixels, map.width, map.height, uv, clamp: true); if (map.hasDir) { // The game's exact directional-lightmap response (URP EntityLighting's // SampleDirectionalLightmap): the encoded dominant direction is dotted // against the WORLD normal as a half-Lambert and the result is divided // by the texel's rebalancing coefficient. A flat colour would overlight // every surface whose normal disagrees with the dominant direction. - Color d = SampleBilinear(map.dirPixels, map.dirWidth, map.dirHeight, uv); + Color d = SampleBilinear(map.dirPixels, map.dirWidth, map.dirHeight, uv, clamp: true); Vector3 dir = new Vector3(d.r, d.g, d.b) - new Vector3(0.5f, 0.5f, 0.5f); float halfLambert = Vector3.Dot(WorldNormal(localNormal), dir) + 0.5f; float scale = halfLambert / Mathf.Max(1e-4f, d.a); @@ -344,13 +344,17 @@ static Vector2 EquirectUV(Vector3 dir) static Color SampleEquirect(Color[] pixels, int width, int height, Vector3 dir) => SampleBilinear(pixels, width, height, EquirectUV(dir)); - static Color SampleBilinear(Color[] pixels, int width, int height, Vector2 uv) + // clamp: lightmap regions are sub-rects of the atlas, so their edges clamp + // (wrapping would read the far edge); equirect maps wrap. + static Color SampleBilinear(Color[] pixels, int width, int height, Vector2 uv, bool clamp = false) { if (pixels == null || pixels.Length == 0) return Color.black; float x = uv.x * width - 0.5f, y = uv.y * height - 0.5f; int ix = Mathf.FloorToInt(x), iy = Mathf.FloorToInt(y); float fx = x - ix, fy = y - iy; - Color At(int xx, int yy) => pixels[Wrap(yy, height) * width + Wrap(xx, width)]; + Color At(int xx, int yy) => clamp + ? pixels[Mathf.Clamp(yy, 0, height - 1) * width + Mathf.Clamp(xx, 0, width - 1)] + : pixels[Wrap(yy, height) * width + Wrap(xx, width)]; Color Row(int yy) => Color.LerpUnclamped(At(ix, yy), At(ix + 1, yy), fx); return Color.LerpUnclamped(Row(iy), Row(iy + 1), fy); } @@ -414,69 +418,90 @@ static Probe ReadProbe(Texture cube, int levels) return probe.mipCount > 0 ? probe : null; } - // Lightmap readback for the source capture: plain blit into a float RT, then - // decode. HDR encodings (Unity "High Quality", Bakery's default .hdr output) - // come through linear directly. Unity's own RGBA32 lightmaps are RGBM + // Lightmap readbacks are float (16 bytes per texel) and a scene lightmap can be + // 8K or 16K, so only the REGION a renderer occupies (its scaleOffset rect, one + // texel of padding) is read, and a region larger than this many texels is + // downsampled to fit. 4M texels = 64 MiB per region. + internal const int MaxLightmapPixels = 2048 * 2048; + + // Lightmap readback: the renderer's region of the lightmap blitted into a float + // RT, then decoded. HDR encodings (Unity "High Quality", Bakery's default .hdr + // output) come through linear directly. Unity's own RGBA32 lightmaps are RGBM // (rgb * a * 8); Bakery's 8-bit output is plain linear with alpha pinned at 1, // so "alpha ~ 1 everywhere" (a real RGBM scene always has dark texels with // alpha < 1) identifies a plain map and skips the decode that would // overbrighten it eightfold. The optional direction texture is linear data and - // needs no decode at all. + // needs no decode at all. The returned st maps uv2 into the region. internal static Lightmap ReadLightmap(Texture2D lightmap, Texture2D lightmapDir, Vector4 st) { - int width = lightmap.width, height = lightmap.height; + var region = LightmapRegion(st, lightmap.width, lightmap.height, out Vector4 regionSt); bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.RGBAHalf; - var previous = RenderTexture.active; - var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); - Texture2D copy = null; - try { - Graphics.Blit(lightmap, rt); - RenderTexture.active = rt; - copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); - copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); - copy.Apply(); - var pixels = copy.GetPixels(); - if (!hdr) { - bool rgbm = false; - int step = Math.Max(1, pixels.Length / 4096); - for (int i = 0; i < pixels.Length; i += step) - if (pixels[i].a < 0.999f) { rgbm = true; break; } - if (rgbm) - for (int i = 0; i < pixels.Length; ++i) { - var c = pixels[i]; - float scale = c.a * 8f; - pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); - } - } - var map = new Lightmap { pixels = pixels, width = width, height = height, st = st }; - if (lightmapDir != null) { - map.dirPixels = ReadPlain(lightmapDir, out map.dirWidth, out map.dirHeight); - map.hasDir = map.dirPixels != null; - } - return map; + var pixels = ReadRegion(lightmap, region, out int width, out int height); + if (!hdr) { + bool rgbm = false; + int step = Math.Max(1, pixels.Length / 4096); + for (int i = 0; i < pixels.Length; i += step) + if (pixels[i].a < 0.999f) { rgbm = true; break; } + if (rgbm) + for (int i = 0; i < pixels.Length; ++i) { + var c = pixels[i]; + float scale = c.a * 8f; + pixels[i] = new Color(c.r * scale, c.g * scale, c.b * scale, 1f); + } } - finally { - RenderTexture.active = previous; - RenderTexture.ReleaseTemporary(rt); - if (copy) Object.DestroyImmediate(copy); + var map = new Lightmap { pixels = pixels, width = width, height = height, st = regionSt }; + if (lightmapDir != null) { + map.dirPixels = ReadRegion(lightmapDir, region, out map.dirWidth, out map.dirHeight); + map.hasDir = map.dirPixels != null; + } + return map; + } + + // The UV rect [x, y, x+width, y+height] of the lightmap that uv2 × st.xy + st.zw + // covers, clamped to the texture and padded by one texel for bilinear reads, + // plus the st that maps uv2 into that rect instead of the whole map. + internal static Rect LightmapRegion(Vector4 st, int texWidth, int texHeight, out Vector4 regionSt) + { + float u0 = Mathf.Min(st.z, st.z + st.x), u1 = Mathf.Max(st.z, st.z + st.x); + float v0 = Mathf.Min(st.w, st.w + st.y), v1 = Mathf.Max(st.w, st.w + st.y); + float padU = 1f / Mathf.Max(1, texWidth), padV = 1f / Mathf.Max(1, texHeight); + u0 = Mathf.Clamp01(u0 - padU); u1 = Mathf.Clamp01(u1 + padU); + v0 = Mathf.Clamp01(v0 - padV); v1 = Mathf.Clamp01(v1 + padV); + if (u1 - u0 < padU) { u0 = Mathf.Clamp01(u0 - padU); u1 = Mathf.Clamp01(u0 + 2 * padU); } + if (v1 - v0 < padV) { v0 = Mathf.Clamp01(v0 - padV); v1 = Mathf.Clamp01(v0 + 2 * padV); } + float w = u1 - u0, h = v1 - v0; + regionSt = new Vector4(st.x / w, st.y / h, (st.z - u0) / w, (st.w - v0) / h); + return new Rect(u0, v0, w, h); + } + + // Region size in texels, downsampled uniformly when it exceeds MaxLightmapPixels. + static void RegionSize(Rect region, int texWidth, int texHeight, out int width, out int height) + { + width = Mathf.Max(1, Mathf.CeilToInt(region.width * texWidth)); + height = Mathf.Max(1, Mathf.CeilToInt(region.height * texHeight)); + long pixels = (long)width * height; + if (pixels > MaxLightmapPixels) { + float scale = Mathf.Sqrt(MaxLightmapPixels / (float)pixels); + width = Mathf.Max(1, Mathf.FloorToInt(width * scale)); + height = Mathf.Max(1, Mathf.FloorToInt(height * scale)); } } - static Color[] ReadPlain(Texture2D texture, out int width, out int height) + static Color[] ReadRegion(Texture2D texture, Rect region, out int width, out int height) { - width = texture.width; height = texture.height; + RegionSize(region, texture.width, texture.height, out width, out height); var previous = RenderTexture.active; var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); Texture2D copy = null; try { - Graphics.Blit(texture, rt); + // Blit(scale, offset) samples the source at uv × scale + offset — the region. + Graphics.Blit(texture, rt, new Vector2(region.width, region.height), new Vector2(region.x, region.y)); RenderTexture.active = rt; copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); copy.Apply(); return copy.GetPixels(); } - catch (Exception) { return null; } finally { RenderTexture.active = previous; RenderTexture.ReleaseTemporary(rt); diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 439734ca..5b6b4c48 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -300,7 +300,12 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to : beauty != null ? "Baking the lit view of the source into the atlas…" : "Projecting source materials into the new UV atlas…"); var nodeBeauty = beauty?.ForSpace(node.spaceToWorld, node.source.diagonal); var source = node.source; var target = node.geometry; var frame = node.tangents; - node.maps = await Task.Run(() => RemeshBaker.Bake(source, target, frame, options, token, nodeBeauty), token); + // The lightmap regions this node's faces use are read now, on the main + // thread, and dropped again after the bake — they are float readbacks + // and only Beauty needs them. + if (nodeBeauty != null) { Report($"Reading lightmaps for {node.name}…"); source.ReadLightmaps(); } + try { node.maps = await Task.Run(() => RemeshBaker.Bake(source, target, frame, options, token, nodeBeauty), token); } + finally { source.ReleaseLightmaps(); } // A re-bake without the transfer must not keep the previous colors. node.mesh.colors = node.maps.vertexColors; sourceTriangles += source.indices.Length / 3; targetTriangles += target.indices.Length / 3; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index efbe2bd3..34399a5c 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -17,8 +17,31 @@ internal sealed class RemeshSource public Color[] colors; // per vertex; white where the source mesh has none public bool hasColors; // any contributing mesh carried vertex colours public int[] indices, faceMaterials; - public int[] faceLightmaps; // per face: index into lightmaps, -1 when the renderer had none - public RemeshBeauty.Lightmap[] lightmaps; // unique (texture, scaleOffset) pairs, decoded linear + public int[] faceLightmaps; // per face: index into lightmapRefs/lightmaps, -1 when the renderer had none + // Unique (texture, direction, scaleOffset) triples the faces reference. The + // pixels are NOT read at capture: a Beauty bake calls ReadLightmaps on the + // main thread right before it runs and ReleaseLightmaps after, so Materials + // bakes never pay for them and the float readbacks live only during the bake. + public LightmapRef[] lightmapRefs; + public RemeshBeauty.Lightmap[] lightmaps; // decoded linear, null outside a Beauty bake + + internal sealed class LightmapRef + { + public Texture2D color, direction; + public Vector4 scaleOffset; + } + + /// Reads the referenced lightmap regions (main thread). No-op when already read. + public void ReadLightmaps() + { + if (lightmaps != null || lightmapRefs == null) return; + var read = new RemeshBeauty.Lightmap[lightmapRefs.Length]; + for (int i = 0; i < read.Length; ++i) + read[i] = RemeshBeauty.ReadLightmap(lightmapRefs[i].color, lightmapRefs[i].direction, lightmapRefs[i].scaleOffset); + lightmaps = read; + } + + public void ReleaseLightmaps() { lightmaps = null; } public Surface[] materials; public float diagonal; public string[] warnings = Array.Empty(); @@ -88,7 +111,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende var indices = new List(); var faces = new List(); var materials = new List(); var materialIds = new Dictionary(); var faceLightmaps = new List(); - var lightmaps = new List(); + var lightmapRefs = new List(); var lightmapIds = new Dictionary<(Texture2D, Texture2D, Vector4), int>(); string[] warnings; using (var reader = new Reader()) { @@ -141,7 +164,8 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende tangents.Add(new Vector4(tt.x, tt.y, tt.z, t[i].w * sign)); } uv.AddRange(mesh.uv); - // Beauty bakes sample the renderer's baked lightmap at its UV2. + // Beauty bakes sample the renderer's baked lightmap at its UV2; + // only the reference is kept here (see ReadLightmaps). var lmUv = mesh.uv2; if (lmUv.Length == p.Length) uv2.AddRange(lmUv); else for (int i = 0; i < p.Length; ++i) uv2.Add(Vector2.zero); @@ -154,8 +178,8 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende if (map != null) { var key = (map, data.lightmapDir, st); if (!lightmapIds.TryGetValue(key, out lightmapId)) { - lightmapId = lightmaps.Count; - lightmaps.Add(RemeshBeauty.ReadLightmap(map, data.lightmapDir, st)); + lightmapId = lightmapRefs.Count; + lightmapRefs.Add(new LightmapRef { color = map, direction = data.lightmapDir, scaleOffset = st }); lightmapIds.Add(key, lightmapId); } } @@ -193,7 +217,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende if (bounds.size.magnitude <= 1e-8f) throw new InvalidOperationException("Source bounds are empty."); return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), uv = uv.ToArray(), uv2 = uv2.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), - faceLightmaps = faceLightmaps.ToArray(), lightmaps = lightmaps.ToArray(), materials = materials.ToArray(), + faceLightmaps = faceLightmaps.ToArray(), lightmapRefs = lightmapRefs.ToArray(), materials = materials.ToArray(), diagonal = bounds.size.magnitude, warnings = warnings }; } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index f445db52..481dfd8b 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -183,6 +183,27 @@ public void SmoothModeWeldsChartBorderCopiesByNativeNormalGroup() Assert.AreEqual(-1f, welded.tangents[0].w); } [Test] + public void LightmapRegionCoversTheRendererRectAndRemapsUv2() + { + // A renderer using the quarter [0.5,1]×[0.25,0.5] of a 1024² lightmap. + var st=new Vector4(0.5f,0.25f,0.5f,0.25f); + var region=RemeshBeauty.LightmapRegion(st,1024,1024,out var regionSt); + float pad=1f/1024; + Assert.That(region.xMin,Is.EqualTo(0.5f-pad).Within(1e-6f)); + Assert.That(region.xMax,Is.EqualTo(1f).Within(1e-6f)); + Assert.That(region.yMin,Is.EqualTo(0.25f-pad).Within(1e-6f)); + Assert.That(region.yMax,Is.EqualTo(0.5f+pad).Within(1e-6f)); + // uv2 (0,0) and (1,1) map to the rect's corners inside the region. + Vector2 lo=new Vector2(regionSt.z,regionSt.w), hi=new Vector2(regionSt.x+regionSt.z,regionSt.y+regionSt.w); + Assert.That(lo.x*region.width+region.x,Is.EqualTo(0.5f).Within(1e-5f)); + Assert.That(lo.y*region.height+region.y,Is.EqualTo(0.25f).Within(1e-5f)); + Assert.That(hi.x*region.width+region.x,Is.EqualTo(1f).Within(1e-5f)); + Assert.That(hi.y*region.height+region.y,Is.EqualTo(0.5f).Within(1e-5f)); + // A degenerate rect still yields a readable region. + var tiny=RemeshBeauty.LightmapRegion(new Vector4(0,0,0.3f,0.3f),256,256,out _); + Assert.That(tiny.width,Is.GreaterThan(0)); Assert.That(tiny.height,Is.GreaterThan(0)); + } + [Test] public void ImageSamplingUsesLinearInterpolationAndWrapModes() { var image=new RemeshSource.Image { width=2,height=1,pixels=new[] { new Color32(0,0,0,255),new Color32(255,255,255,255) }, From e762ca3ea98eb1a82817193981ba1a37ff7484f7 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 10:01:02 +0000 Subject: [PATCH 062/130] fix(remesh): stop flipping source importers to Read/Write for the capture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The remesh stage toggled isReadable on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture and re-triggered the import worker. Read/Write-disabled meshes are read through Mesh.AcquireReadOnlyMeshData regardless, so RemeshSource.ReadableScope is removed; the source importers are never touched. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 4 ++-- Documentation~/REMESH_AND_BAKE.md | 8 +++---- Editor/RemeshPipeline.cs | 3 --- Editor/RemeshSource.cs | 38 ------------------------------- 4 files changed, 5 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b6763d1..cfcb524e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction) and `RemeshSource.ReadableScope` owns the Read/Write flip. `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. +- **Remesh & Bake never touches the source importers.** The remesh stage used to flip `isReadable` on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture itself. Read/Write-disabled meshes are read through `Mesh.AcquireReadOnlyMeshData` regardless, so the flip is gone; skinned sources bake through `BakeMesh` as before. +- **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction). `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. ### Fixed - **Remesh & Bake, keep hierarchy: nothing is captured twice, sheared transforms survive, and previews/exports are coherent.** A node's capture folded its whole subtree in while every child renderer was also its own node, so nested renderers baked into two meshes; each renderer is now exactly one node. A node's capture space is the TRS the save restores (root × TRS), so a rotated child under a non-uniformly scaled parent folds the residual shear into its geometry instead of losing it. The node list applies the same mesh-asset name filters (`_COL`, `_LOD{n}`) as the weld, so a normally named object carrying a collision mesh no longer aborts the whole run. Re-running Normals & UV destroys the previous node meshes (each iteration leaked one `HideAndDontSave` mesh per node); a re-bake with vertex color transfer off clears the colors the previous bake left on every node; the UV and cage previews show the largest node's geometry instead of "run the UV stage"; and the hierarchy save imports the map files before configuring their importers (one `AssetEditingScope` deferred the imports past the importer lookup, which could fail and roll the whole folder back). @@ -39,7 +40,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added -- **Remesh & Bake: Read/Write flips on for the capture and off after.** A run that includes the remesh stage turns `isReadable` on for every imported model under the source root (reimporting each), so the capture takes the fast friction-free path, and restores every touched importer to its original off state in the run's `finally` — cancel, failure and success alike. - **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. - **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 8b879d60..77d76980 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -34,9 +34,8 @@ settings, marked "settings changed" in its header) and clears everything after i their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static meshes; pose the model the way you want it baked. Every contributing submesh - needs UV0. Read/Write-disabled imports are read through MeshData, and a run - that includes the remesh stage additionally flips the source models' importers - to Read/Write enabled for the capture and restores each one to off afterwards. + needs UV0. Read/Write-disabled imports are read through MeshData; the source + importers are never touched (no reimports). 2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided shell. Higher resolution preserves smaller gaps but produces a denser, uniform intermediate mesh. @@ -188,8 +187,7 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. changed)" markers. - `Editor/RemeshSource.cs` — `CollectRenderers` (the one filter for both lanes), `Capture` (geometry, materials, textures and lightmap references in a given - space; `ReadLightmaps`/`ReleaseLightmaps` around a Beauty bake) and - `ReadableScope` (Read/Write on for the capture, back off after). + space; `ReadLightmaps`/`ReleaseLightmaps` around a Beauty bake). - `Editor/RemeshNative.cs` — the P/Invoke bridge and the post-unwrap normal / tangent regeneration. - `Editor/RemeshBaker.cs` — the CPU projection; `Editor/RemeshBeauty.cs` — the diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 5b6b4c48..76b2bf6b 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -148,12 +148,10 @@ public async Task Run(GameObject source, RemeshSettings live, Stage from, cancellation = new CancellationTokenSource(); var token = cancellation.Token; bool locked = false; - RemeshSource.ReadableScope readable = null; try { live.Validate(); RemeshNative.CheckAvailable(); var options = JsonUtility.FromJson(JsonUtility.ToJson(live)); ClearFrom(from); - if (from == Stage.Remesh && source) readable = new RemeshSource.ReadableScope(source); EditorApplication.LockReloadAssemblies(); locked = true; for (var stage = from; stage <= to; ++stage) { string key = Key(stage, options, source); @@ -170,7 +168,6 @@ public async Task Run(GameObject source, RemeshSettings live, Stage from, catch (OperationCanceledException) { Status = "Cancelled. Source assets were preserved."; return false; } catch (Exception e) { Status = e.Message; UvtLog.Error("[Remesh] " + e); return false; } finally { - readable?.Dispose(); cancellation.Dispose(); cancellation = null; if (locked) EditorApplication.UnlockReloadAssemblies(); Interlocked.Exchange(ref running, 0); Changed?.Invoke(); diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 34399a5c..52005367 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -252,44 +252,6 @@ internal static List CollectRenderers(GameObject root, bool lod0Only) return result; } - /// - /// Flips every imported model under root to Read/Write enabled for the capture - /// (the fast, friction-free path; non-readable imports would go through MeshData) - /// and puts each importer that was off back to off on Dispose — cancel, failure - /// and success alike. - /// - internal sealed class ReadableScope : IDisposable - { - readonly List touched = new List(); - - public ReadableScope(GameObject root) - { - var paths = new HashSet(StringComparer.OrdinalIgnoreCase); - foreach (var renderer in root.GetComponentsInChildren(true)) { - Mesh mesh = renderer is SkinnedMeshRenderer skin ? skin.sharedMesh - : renderer.TryGetComponent(out var filter) ? filter.sharedMesh : null; - string path = mesh ? AssetDatabase.GetAssetPath(mesh) : null; - if (!string.IsNullOrEmpty(path)) paths.Add(path); - } - foreach (var path in paths) { - if (!(AssetImporter.GetAtPath(path) is ModelImporter model) || model.isReadable) continue; - model.isReadable = true; - model.SaveAndReimport(); - touched.Add(model); - } - } - - public void Dispose() - { - foreach (var model in touched) { - if (model == null) continue; - model.isReadable = false; - model.SaveAndReimport(); - } - touched.Clear(); - } - } - // Repo LOD naming is Name_LOD{N} (see the LOD/collision naming rule); anything // above LOD0 is a coarser duplicate of what LOD0 already captures. internal static bool IsHigherLodName(string name) From 9fef2d85bd464683cc523d44d9f2d9a279c58626 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 19:05:49 +0200 Subject: [PATCH 063/130] =?UTF-8?q?feat(remesh):=20bounding-box=20source?= =?UTF-8?q?=20shape=20=E2=80=94=20a=20far-LOD=20box=20proxy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The remesh stage's new Shape selector picks LOD0 (voxelize the capture, as before) or Bounding box: every captured model is replaced by its axis-aligned bounding box, and that mesh flows through the rest of the pipeline unchanged — unwrap gives the box its own atlas, and the bake projects the original captured geometry's materials and lighting, Materials and Beauty alike, onto the box's faces. The weld lane produces one box for the whole model; keep-hierarchy produces one box per node. Voxel controls disable in box mode, and the stage cache key covers the shape. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 9 +++++++-- Editor/RemeshPipeline.cs | 30 ++++++++++++++++++++++++++---- Editor/RemeshSettings.cs | 14 ++++++++++++++ Editor/Tools/RemeshBakeTool.cs | 11 ++++++++--- 5 files changed, 56 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfcb524e..643a3b01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake: bounding-box source shape — a far-LOD box proxy.** The remesh stage's new *Shape* selector picks *LOD0* (voxelize the capture, as before) or *Bounding box*: every captured model is replaced by its axis-aligned bounding box, and THAT mesh flows through the rest of the pipeline unchanged — unwrap gives the box its own atlas, and the bake projects the ORIGINAL captured geometry's materials and lighting (Materials and Beauty alike) onto the box's faces. The weld lane produces one box for the whole model; keep-hierarchy produces one box per node. Voxel controls disable in box mode, and the stage cache key covers the shape. - **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. - **Remesh & Bake accepts skinned sources.** `SkinnedMeshRenderer` geometry is baked at its current pose into a fresh runtime mesh (renderer-local space, no transform scale — the shared root-local capture applies the transform exactly once, like a static mesh under the same node) and captured with its skinned normals/tangents and materials. Pose the model the way you want it baked; animation is not followed. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 77d76980..5df65bd1 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -30,8 +30,13 @@ settings, marked "settings changed" in its header) and clears everything after i holds until the selection changes. Active/enabled MeshRenderers under it are combined in root-local coordinates; LODGroups contribute LOD0 only, collision nodes are excluded, and **LOD0 only** (default on) skips meshes named - `Name_LOD1` and higher wherever they sit. SkinnedMeshRenderers are baked at - their current pose (skinning re-evaluated first — in edit mode it can be stale + `Name_LOD1` and higher wherever they sit. **Shape** picks what the remesh + stage builds from the capture: *LOD0* voxelize the geometry (the default), or + *Bounding box* replace every captured model with its axis-aligned box — a + far-LOD proxy whose faces still receive the original's materials and baked + lighting through the normal projection (weld: one box for the whole model; + keep-hierarchy: one box per node). SkinnedMeshRenderers are baked at their + current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static meshes; pose the model the way you want it baked. Every contributing submesh needs UV0. Read/Write-disabled imports are read through MeshData; the source diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 76b2bf6b..5a3de6dc 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -112,7 +112,7 @@ public string Summary(Stage stage) public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}"; + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|{s.sourceShape}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -213,13 +213,21 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); } long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; + bool box = options.sourceShape == RemeshShape.BoundingBox; for (int i = 0; i < captures.Count; ++i) { var node = captures[i]; foreach (var warning in node.source.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } token.ThrowIfCancellationRequested(); - Report(hierarchy ? $"Voxel remeshing {node.name} ({i + 1}/{captures.Count})…" : "Voxel remeshing…"); + Report(hierarchy + ? (box ? $"Bounding {node.name} ({i + 1}/{captures.Count})…" : $"Voxel remeshing {node.name} ({i + 1}/{captures.Count})…") + : (box ? "Building the bounding-box proxy…" : "Voxel remeshing…")); var captured = node.source; - node.voxel = await Task.Run(() => RemeshNative.Voxelize(captured.positions, captured.indices, options, token), token); + // The bounding-box shape replaces the voxelizer with the capture's own + // AABB — a far-LOD proxy; materials and lighting still bake from the + // captured geometry, projected onto the box downstream. + node.voxel = await Task.Run(() => box + ? BoxMesh(captured.positions) + : RemeshNative.Voxelize(captured.positions, captured.indices, options, token), token); sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; } @@ -230,10 +238,24 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken primary.source.normals, primary.source.hasColors ? primary.source.colors : null); voxelMesh = BuildMesh(ResultName + "_Voxel", primary.voxel.positions, primary.voxel.indices); Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + - $"{sourceTriangles:N0} → {resultTriangles:N0} triangles." + + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + (box ? " (bounding box)." : ".") + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); } + // Axis-aligned box mesh around a point cloud — the Bounding-box remesh shape. + // Outward winding, capture-space in and out. + internal static RemeshNative.IndexedMesh BoxMesh(Vector3[] positions) + { + Vector3 mn = positions[0], mx = positions[0]; + foreach (var p in positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } + var corners = new[] { + new Vector3(mn.x, mn.y, mn.z), new Vector3(mx.x, mn.y, mn.z), new Vector3(mx.x, mx.y, mn.z), new Vector3(mn.x, mx.y, mn.z), + new Vector3(mn.x, mn.y, mx.z), new Vector3(mx.x, mn.y, mx.z), new Vector3(mx.x, mx.y, mx.z), new Vector3(mn.x, mx.y, mx.z), + }; + int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; + return new RemeshNative.IndexedMesh { positions = corners, indices = faces }; + } + async Task RunSimplify(RemeshSettings options, CancellationToken token) { if (!Has(Stage.Remesh)) throw new InvalidOperationException("Run the remesh stage first."); diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index f732b983..dfe82937 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -47,6 +47,17 @@ public enum RemeshBakeMode Beauty, } + /// What the remesh stage builds from the captured source. + public enum RemeshShape + { + /// Voxelize the captured geometry (the default remesh). + LOD0, + /// Replace every captured model with its axis-aligned bounding box — a + /// proxy for far LODs; materials and lighting still bake from the original + /// geometry, projected onto the box. + BoundingBox, + } + [Serializable] public sealed class RemeshSettings { @@ -57,6 +68,9 @@ public sealed class RemeshSettings // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already // contribute LOD0 only). public bool lod0Only = true; + // What the remesh stage builds from the capture: the voxelized geometry, or a + // bounding-box proxy per captured model (keep-hierarchy) / for the whole weld. + public RemeshShape sourceShape = RemeshShape.LOD0; // Keep hierarchy: remesh every captured node SEPARATELY and save the result as a // hierarchy of meshes under one root (per-node materials, local transforms kept), // instead of welding everything into one _LOD0 mesh with one baked material. diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index c8a4bb07..df7ce58f 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -124,13 +124,18 @@ public void OnDrawSidebar() if (GUILayout.Button("Run all stages", GUILayout.Height(26))) Start(RemeshPipeline.Stage.Bake, true); if (StageHeader(RemeshPipeline.Stage.Remesh)) { + settings.sourceShape = (RemeshShape)EditorGUILayout.EnumPopup(new GUIContent("Shape", + "LOD0: voxelize the captured geometry. Bounding box: replace every captured model with its axis-aligned box — a proxy for far LODs; " + + "materials and lighting still bake from the original geometry, projected onto the box."), settings.sourceShape); settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", "Remesh every renderer SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); - settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); - settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); - settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); + using (new EditorGUI.DisabledScope(settings.sourceShape == RemeshShape.BoundingBox)) { + settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); + settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); + settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); + } StageButton(RemeshPipeline.Stage.Remesh, "Remesh"); } if (StageHeader(RemeshPipeline.Stage.Simplify)) { From cba4e0e3ddf69559309d2c5cf4e9c6dcbf30343a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 19:22:36 +0200 Subject: [PATCH 064/130] =?UTF-8?q?feat(remesh):=20box-set=20shape=20?= =?UTF-8?q?=E2=80=94=20recursive=20box=20approximation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Shape selector's third mode decomposes the capture into a minimal union of plain boxes: every box histograms its geometry along each axis, finds the widest empty gap, and splits there when the gap exceeds a Split-gap fraction of the axis extent — recursively, each half taking its tight box. L- and T-shaped buildings fall apart into their arms at the empty notches and detached canopies split off on their own, without inventing special primitives — every leaf is one cube mesh instanced by a transform. The status reports the box count and the covered share of the original bounds' volume, the occupancy error at a glance; silhouette-first, with the bake projecting the original's materials and lighting onto the boxes exactly as onto a single box. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 11 ++- Editor/RemeshPipeline.cs | 139 +++++++++++++++++++++++++++--- Editor/RemeshSettings.cs | 7 ++ Editor/Tools/RemeshBakeTool.cs | 9 +- 5 files changed, 153 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 643a3b01..f1b7c7ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added +- **Remesh & Bake: box-set shape — recursive box approximation.** The Shape selector's third mode decomposes the capture into a minimal union of plain boxes: every box histograms its geometry along each axis, finds the widest empty gap, and splits there when the gap exceeds a *Split gap* fraction of the axis extent — recursively, each half taking its tight box. L- and T-shaped buildings fall apart into their arms at the empty notches and detached canopies split off on their own, without ever inventing special primitives (every leaf is one cube mesh instanced by a transform, GPU-driven-friendly). The status line reports the box count and the covered share of the original bounds' volume — the occupancy error at a glance; silhouette-first, with the bake projecting the original's materials and lighting onto the boxes exactly as onto a single box once the shape is acceptable. - **Remesh & Bake: bounding-box source shape — a far-LOD box proxy.** The remesh stage's new *Shape* selector picks *LOD0* (voxelize the capture, as before) or *Bounding box*: every captured model is replaced by its axis-aligned bounding box, and THAT mesh flows through the rest of the pipeline unchanged — unwrap gives the box its own atlas, and the bake projects the ORIGINAL captured geometry's materials and lighting (Materials and Beauty alike) onto the box's faces. The weld lane produces one box for the whole model; keep-hierarchy produces one box per node. Voxel controls disable in box mode, and the stage cache key covers the shape. - **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 5df65bd1..5d2bd47d 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -35,7 +35,16 @@ settings, marked "settings changed" in its header) and clears everything after i *Bounding box* replace every captured model with its axis-aligned box — a far-LOD proxy whose faces still receive the original's materials and baked lighting through the normal projection (weld: one box for the whole model; - keep-hierarchy: one box per node). SkinnedMeshRenderers are baked at their + keep-hierarchy: one box per node), or + *Box set* recursively decompose the capture into a union of boxes: every + box scans its axes for the widest empty gap between geometry and splits + there (a *Split gap* fraction gates the recursion), so L- and T-shaped + buildings fall apart into their arms and detached canopies become their + own boxes — plain cubes, one mesh instanced by transforms, never special + primitives. The stage status reports the box count and the share of the + original bounds' volume the boxes cover; the bake projects the original's + materials and lighting onto them exactly as onto a single box. + SkinnedMeshRenderers are baked at their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static meshes; pose the model the way you want it baked. Every contributing submesh diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 5a3de6dc..93aacb8e 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -112,7 +112,7 @@ public string Summary(Stage stage) public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|{s.sourceShape}"; + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|{s.sourceShape}|{s.boxSplitGap:F2}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -213,21 +213,26 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); } long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; - bool box = options.sourceShape == RemeshShape.BoundingBox; + var shape = options.sourceShape; + int boxes = 0; double boxVolume = 0; for (int i = 0; i < captures.Count; ++i) { var node = captures[i]; foreach (var warning in node.source.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } token.ThrowIfCancellationRequested(); Report(hierarchy - ? (box ? $"Bounding {node.name} ({i + 1}/{captures.Count})…" : $"Voxel remeshing {node.name} ({i + 1}/{captures.Count})…") - : (box ? "Building the bounding-box proxy…" : "Voxel remeshing…")); + ? $"{(shape == RemeshShape.LOD0 ? "Voxel remeshing" : "Bounding")} {node.name} ({i + 1}/{captures.Count})…" + : (shape == RemeshShape.LOD0 ? "Voxel remeshing…" : shape == RemeshShape.BoundingBox ? "Building the bounding-box proxy…" : "Decomposing into boxes…")); var captured = node.source; - // The bounding-box shape replaces the voxelizer with the capture's own - // AABB — a far-LOD proxy; materials and lighting still bake from the - // captured geometry, projected onto the box downstream. - node.voxel = await Task.Run(() => box - ? BoxMesh(captured.positions) - : RemeshNative.Voxelize(captured.positions, captured.indices, options, token), token); + var stats = shape == RemeshShape.BoxSet ? new BoxStats() : null; + // The box shapes replace the voxelizer with the capture's own bounds — + // a single AABB, or a recursive gap-split decomposition into a box set; + // materials and lighting still bake from the captured geometry, + // projected onto the boxes downstream. + node.voxel = await Task.Run(() => + shape == RemeshShape.LOD0 ? RemeshNative.Voxelize(captured.positions, captured.indices, options, token) + : shape == RemeshShape.BoundingBox ? BoxMesh(captured.positions) + : BoxSetMesh(captured.positions, options.boxSplitGap, stats), token); + if (stats != null) { boxes += stats.boxCount; boxVolume += stats.volumeFraction; } sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; } @@ -238,10 +243,21 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken primary.source.normals, primary.source.hasColors ? primary.source.colors : null); voxelMesh = BuildMesh(ResultName + "_Voxel", primary.voxel.positions, primary.voxel.indices); Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + - $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + (box ? " (bounding box)." : ".") + + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + + (shape == RemeshShape.BoundingBox ? " (bounding box)." + : shape == RemeshShape.BoxSet ? $" — {boxes:N0} boxes, {(boxVolume / Mathf.Max(1, nodes.Count)) * 100:F0}% volume covered." + : ".") + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); } + /// Box-set decomposition stats filled by the worker (out parameters + /// cannot cross a lambda; a captured mutable holder can). + internal sealed class BoxStats + { + public int boxCount; + public float volumeFraction; + } + // Axis-aligned box mesh around a point cloud — the Bounding-box remesh shape. // Outward winding, capture-space in and out. internal static RemeshNative.IndexedMesh BoxMesh(Vector3[] positions) @@ -256,6 +272,107 @@ internal static RemeshNative.IndexedMesh BoxMesh(Vector3[] positions) return new RemeshNative.IndexedMesh { positions = corners, indices = faces }; } + // Recursive box approximation — the BoxSet remesh shape. Every box scans a + // 32-bin histogram per axis for the widest EMPTY run between geometry; a gap + // wider than minGap (a fraction of that axis's extent) splits the point set + // there and both halves take their tight box, recursively. L- and T-shaped + // buildings decompose into their arms at the empty notches, a detached canopy + // splits off on its own — unions of plain boxes, never special primitives, so + // every leaf is one cube mesh instanced by a transform. + internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, float minGap, BoxStats stats) + { + var leaves = new List(); + SplitRecursive(positions, 0, positions.Length, minGap, leaves); + double total = 0; + Bounds initial = leaves[0]; + foreach (var box in leaves) { + total += Volume(box); + initial.Encapsulate(box); + } + double whole = Volume(initial); + stats.boxCount = leaves.Count; + stats.volumeFraction = whole > 0 ? (float)(total / whole) : 1f; + // One merged mesh of all leaves: 8 vertices + 12 triangles per box, indices + // offset per leaf — the same shape every other stage consumes. + var vertices = new Vector3[leaves.Count * 8]; + var indices = new int[leaves.Count * 36]; + int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; + for (int b = 0; b < leaves.Count; ++b) { + var box = leaves[b]; + Vector3 mn = box.min, mx = box.max; + int v = b * 8, f = b * 36; + vertices[v + 0] = new Vector3(mn.x, mn.y, mn.z); vertices[v + 1] = new Vector3(mx.x, mn.y, mn.z); + vertices[v + 2] = new Vector3(mx.x, mx.y, mn.z); vertices[v + 3] = new Vector3(mn.x, mx.y, mn.z); + vertices[v + 4] = new Vector3(mn.x, mn.y, mx.z); vertices[v + 5] = new Vector3(mx.x, mn.y, mx.z); + vertices[v + 6] = new Vector3(mx.x, mx.y, mx.z); vertices[v + 7] = new Vector3(mn.x, mx.y, mx.z); + for (int i = 0; i < 36; ++i) indices[f + i] = v + faces[i]; + } + return new RemeshNative.IndexedMesh { positions = vertices, indices = indices }; + } + + static double Volume(Bounds box) + { + var s = box.size; + return (double)s.x * s.y * s.z; + } + + const int BoxHistogramBins = 32; + + static void SplitRecursive(Vector3[] points, int start, int count, float minGap, List leaves) + { + var mn = points[start]; + var mx = mn; + for (int i = start + 1; i < start + count; ++i) { + mn = Vector3.Min(mn, points[i]); + mx = Vector3.Max(mx, points[i]); + } + var extent = mx - mn; + // Widest empty run across the three axes' histograms, in fractions of the + // box's own extent on that axis — the split axis is whichever gap wins. + float bestGap = 0; int bestAxis = -1, bestSplitBin = 0; + var bins = new int[BoxHistogramBins]; + for (int axis = 0; axis < 3; ++axis) { + float size = axis == 0 ? extent.x : axis == 1 ? extent.y : extent.z; + if (size <= Mathf.Epsilon) continue; + Array.Clear(bins, 0, bins.Length); + for (int i = start; i < start + count; ++i) { + float value = axis == 0 ? points[i].x - mn.x : axis == 1 ? points[i].y - mn.y : points[i].z - mn.z; + int bin = Mathf.Clamp((int)(value / size * BoxHistogramBins), 0, BoxHistogramBins - 1); + ++bins[bin]; + } + int run = 0, widest = 0, widestAt = 0; + for (int bin = 0; bin < BoxHistogramBins; ++bin) { + if (bins[bin] == 0) { ++run; if (run > widest) { widest = run; widestAt = bin - run + 1; } } + else run = 0; + } + // Interior runs only: a gap touching either edge is just thin bounds. + int gapEnd = widestAt + widest; + if (widestAt == 0 || gapEnd == BoxHistogramBins) continue; + float gap = widest / (float)BoxHistogramBins; + if (gap > bestGap) { bestGap = gap; bestAxis = axis; bestSplitBin = widestAt + widest / 2; } + } + if (bestAxis < 0 || bestGap < minGap) { + leaves.Add(new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); + return; + } + float axisSize = bestAxis == 0 ? extent.x : bestAxis == 1 ? extent.y : extent.z; + float split = (bestAxis == 0 ? mn.x : bestAxis == 1 ? mn.y : mn.z) + axisSize * bestSplitBin / BoxHistogramBins; + int left = start, right = start + count - 1; + while (left <= right) { + float value = bestAxis == 0 ? points[left].x : bestAxis == 1 ? points[left].y : points[left].z; + if (value < split) ++left; + else { (points[left], points[right]) = (points[right], points[left]); --right; } + } + int leftCount = left - start; + if (leftCount == 0 || leftCount == count) { + // Degenerate partition (all points in one bin run) — keep the box tight. + leaves.Add(new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); + return; + } + SplitRecursive(points, start, leftCount, minGap, leaves); + SplitRecursive(points, start + leftCount, count - leftCount, minGap, leaves); + } + async Task RunSimplify(RemeshSettings options, CancellationToken token) { if (!Has(Stage.Remesh)) throw new InvalidOperationException("Run the remesh stage first."); diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index dfe82937..b4f5fd40 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -56,6 +56,10 @@ public enum RemeshShape /// proxy for far LODs; materials and lighting still bake from the original /// geometry, projected onto the box.

JDJ2NF6}aXnG)I&41itV>rq^>s{JxU$(e-7 zR2Wz4C939dH&!{l2hV-yT>`f9kBYJ?XL&dIY&tA-&Ca6b4}9Yk|KFQ zzHZqpGvqAW@i97E?jk-=E3%3PB>NQkKkw|9ufZ#_7_0 zv}h9&c*N+{tf~P62eY}fh}k`?^&sE!4CIS7r(OctYEj7|gs zQn)=G}X!+=SbHh!7EdgFpq{oBCjF%5zJ_2KR36j7w)koLk6fHU}KPSl5d2sM5!E z|E)>XS@t)xp0K~;x@nN*%oI_~BwnrBICgWW!GjyagTE0J&xI*d>PI%zd!$a5rLYxZYdXknNy z3)rF?fUV2GZqliOj+4y*U9t&NovFsdNfP#cnPC6(ivG{Qp)`K<-_^!o&POoP9^ZTA z0-F@5L=*5V=72I+#45qb->k`5*!15{C`!w&a&Si&@PpxZR{EFYZmpz7EK;?0|g1v@u*(i+Y`2VMjm-AN5 zuxtN+8i!$L|IYgHTDJ5r-(AwxT(LcB;5}kUp1%vb3VOmDdAY7>9X-1@!@C=%4-iq> zOp<&2sIXahc5vHz5q0-;DFe7{(Ri-o_%~H9@aZ4yWCUP^aIg;gqDE~yKD?Jk8F$1oC1I*fC7yhbko;8Yt96X`cbTg zR@*KUQM{@PS1Ea~6RODj>Y7QRBnUZ#&$})XtY%>qJBf7TqX@ zW6o?iY}LnMA3n7}%3QCA>=(bN;mPW+5`P$CALAQisXH&?kfCj%7E5*DUWMgYvOesH z{HXUGWOC`uz{FeNuCIa?lbll7{f&*G+g)xoqmVTK9uRn`2t8!n5hY!ES~JD2c@g#9 zoE8q79&NBla@)k`+KXdz-y56_xvoQ}QoEg{-KS;IECGMU7SEHzKyf-nHD25otR2*j z-Cn6p*QfyX0I{W-YX zn6;FYb;sKod0%+|sLMRQBpkHcZbn4{JY$w?@B%yb11quV6?!1YFEeQ6U63B(7f%)o z&yQ!g(1UrzqL7qw!bk-LG!DLQXMF^ON2$+$$SIb1R2$TgpoK(pRsX&_ zRXJnwc1dJ{<`TUP?lEP}-dm)E7~D2+$M$Wdglm%zc-&H3vNvU54ON`*{S%#fbP>~K zP{C^X10nT5chs3FZnc?d<+` zM^!?;13JV#@88Zd6?11^0uc3CnjP-*&s&`hjndVY3aCuy2F9nvB&cK47EDpeuRDFv z%y3;1t;DGj!h8CF3zvb0)pmt~45xpCY;S5I^(7}5?WY*lR(B6E`|5n834Jr0 zUo6)F@*V!8L0zXyEVj#R+)OUMg{GN0ljJ{IgoJGmg=-w<*E~%Q;yTxje(>O~bZw6U7x@#>ok0~pJ`L6Wp| z4lXEm(XZ--1bl0pPEPGsQ+~8U#SIx3YLA{Fl7oIC7|-cE=*eZ@oC-AXbilgRI@i&`tN4xmXwK-j4!yhb;EswXL7Zrk>zSr@iS--h>O9tpp9zXvu$Z?838^n z_g1_CSpK$&!-HuHW}undyrPMi1&9t$BhP4yqi9SJE0#k4jk<*P)~`l(EGObtc%DqO zM)dD4ce??Im=7U2i)1a8DcPv5ul-4}lPJ?8F!q*^j zfcIof*{#E`q@-RU7}j+zmd3N#IcrFJN=uJAU;0zX8{7zAHP2Pi!5|p@We>tdRvD)E z7xYr;XuNKmk)#)V@waSesND{4gQQxrkb;*3Fk~fP^}40XNIl(gzma@}Z;Buu3AjWh zy|(53k%rnXoalx~vIo1TE6GhYjd5vhg44p9)&`pDvqdyf-xux?W5-H;?)3)s z5SlZaOI@viQ$+wc5}T(S(b(TCN}Am8B(bpv9ngw|foRtF6P( z(QoY%t7F%suhzC|A#`oK@GG-rloy{?M2_UF@{vt)J$*fr&gLi13u1OCJ7GIV%nq`6 zk8!*`X2FF$GSNNhfm1JChce*DRm#X0L8fOOV$gJ6P&uTv{?U8%1?Lwz+Y=7)(YNO}x9y9`l=K%4vDVe~V0BJ4fWZ3r`zM<;{488?vS}nKb zV-kLDEM6D@5GsEYl-~Oe!^oqw0SF!*AY89?pIdJck6FMREtqmC+@qFdu8T>W()>~- z-dI*gN7vh@HOL#b?_ktqK5~g@hQ3^pc`mTNt#5s|`xJD7HRf&9iYu{#8&+Roy~w9A?7##;LD)$_=Ms-I2jFb;sDS1-s369_u9|}e?JQT zgu6}4@PT}&yG2ZoJMm>v2;GI`w%`XuJ9dvRnmpFP($Du^+```DF-Dvc%6YYilAxL^ zmZ^83N%&PYjy4BL{{luK@9X?_iE-9L^mRSA$|`LvIlEFTmok;m-KrtiAg6LTdH)~- z58Qh(i^FYfguv*gTJ4)1GxEt&rUM}1v;M&<>td9W?2?YPx3`H4<_cS-6SzSo6bC@b z!Ok)QobV3X{_x~R&4ws7RQ8?tJ*i)9YT7yR#q^BK70oW}ydxI^{vm-HN-ri%sas9L z4N;tUIC;di5q1GXItrklzc2S>gAz{lLNm6fGiCvahnRGWYWn56SYO6+5Z4(hsNhWp z4|gdaUz2Y!0?}zgA&O<`u7v#=C_Rbige0vvDVjg!vI7Iu88G6T6sM`Cp2;{wn<|ay z)MU{>C_Q}FT01c(4+^hb3x3(F9dp~V&$$hb5`4y`j6sNlgQqLG8nX|MeRT;V!zq7C zKkd0D!zZKsOxc%cz#HXcU9H~3Y^+E+1mZzEkLMX zitVKa%`o_&f|~m)P8oQ&`5*hd!rU9G3jodh#rX$RezuH9bJyim^fP;jtF<$=K=S4e z{b7+}WYt>Jy=m>k+__*=z+6?k-=aB^3GSO(F*bbKg#`EJP=;_Cty!<35XAYnSO}s{ z@)IH@X)8-l6~7M_(ga7@*3%dDyB~v&Un!mB3&w1mbqiD-pY{raI3Q{6g3-oeS^%I4 zna(y(Baqd7WR|Ijee6d_6bxnwJRps8400X-5=>LccI;^rlHvh;&Q z#xn<&+#L$~==j+zeSz0x&oY-9$ec>#L$>P_^n+Z{ajnn@{lpKjT;N5}Xic7E_O`ry zhpc9411J%a<~b~6duM10Jh10SSzLxEE@-=dWBFJGnRWN@3k-ul^`%U+T)P5*cPxOl z`(a^KuswDQ{u6|>gLgUWVL&_(x$i*@8!rP|ytR~sb)b(?1?kawPqEF0yY_9 zJ?9gg@K%=z60xT&5%sO1D-a-D1QR&&&SUk6&6e-$cC8~riN%LDY8$EvH5_2Xx!9ZWOD z)-M%(8$c(uMXv@X?ak%)knWakYX7LG=dm9Sk%fzbzLP??O_!}Q@o8lS z8vqXd1WYmRWdUxynyH4Nfu9(j<&drSk~wc7r09Ec1G4iY0|I_UMH>eQ;PCkF;8C6* z?T5F@sPOUONEsyhCmRiy*A;$$6y_Fy?${sFY*~}XnXB-P#yBlLt&@q%U_c0CBSJG^ zW8wnU^cnOHDQjAVZlECMZjhUJGiXvN!|0pQnG0e&Pqn|nK(-eSc3ar#7O)Cx6%^glD(gn6q zSz58wxO^^_jItLfdQ-4Le!iK#A}zIzR#!il$F5*Nc*cI%~c!^>2 zK(6bKNSqNuiF_Tck3IqTblYoH)?8cZ zEbI;l$ENkg3H#1|In%+d#CKoG&XYTu*zV70hKbpggs4k8cGsJi$8Fv%K%R;L0o%7L z<$xB0iEzU_($Eg;<(q{CoHXE=&6oR~i%q~%E5#)Fte6pqAJPRqWZ1qAyX3lvP%`3$wS zPM?`wY0#4rdt@n+BAV@JL$12CrYARG z47?ejdyxLt<`LjbbHWQ6*EPz&8n<5aUD8u*%Lt2YcMalp5OE|z!CIR2Gf3>Pz&M&# zS98}Bu88^D0%iF>n$ChN$}imF3JQNh8l)tp8Kk8fK^i27?ii35=>`c&>F$o9hYslu zi5WsV2BaBM>dw7u-ET1OTC>i1&VKg(?Jyp$(E@nc###l862J<$pP)YHK!5mmm8WUL zrAQO6fKdd~!~|y@XEWJ;gub8peasHm5_VvF)!V&(*BdA|nFi|f7LgU+8)<}Td3F7n z>~s#~>e7*`NKkfiz`6+a10+*(pVLzd|Htl;;&gX@eqM57Glk`@F<_%*`Rp6&nNb7d z&4@Y1^j=X%-K|_?gi@`0>mD3_HcR;F6M$s>GKEqSSa~Y=*qsna8 zvlT>CfXX)_F=!_7E*ni)h>x&B_9ilm)AqHRC-oax1!VWsd3}Y+4Cr4 z=GUot6Sx$c@IcQicQ$*ym2}XcZ}uG6t@lVpA(G<}lp6OLT+^oWB0=eMo$HaS-IVK* z{;@(P_#3gnBu4&Wu*y}FSLf)j-g#7Dj!*0$?- zc`F-}Ho1sEuG!TP;VEerw7*wlEa)+C*gpnA%zsMRJD*&rCM0dV6oOA1PJVjaYB|iQ z$mZXmUh8)V>dy-Orac6KYQj+BOw0xZ8J8R{S#kpFoxq!;OOGX!}<}TBM z83fv^_7mq5Dab4&N{C7dqSUothj5UD-+WS5R%FZep+BX0fORG3fr zd%*^ws(_tpEgu?GVPH?CNc-se4#5)eH}R%nTK=qNi%8LSyPM%Pf5eyOL5@121aPFoZV=iY7y9nob=Vd0t-?hA$5|LTizYMPj4VeqUcnXK%Xs3MklV`A8zQp;Qd z;i*pM448jER5M=uif?MQAw5YU6&HN5V&HyVHo5r7j3?d=^BD5n9G5TBQbh2OsE*`K$4c}5mhWI+lkJk6nK6ORE0N| zm3rX?)dHU(Vsl@jXt2;v`wH3}o$V%#Y3%be>tYKyi0R?(u`_dDq*w)THQ&$ih8j+K z#V3-U!P4tp*iqVr(~&T5Nc%;0C6TX_ZqjVa!|sJGQTQLnA#ecSmNk^zM<=fBIcD1TKs~ zA|2Boa2F`0qxPs1``#3)cv-y`qd{QGgRFl`4k6kz=rDx;0eBl!$_|$@2mN0!WI9<1 zvX2eBN?cpd8VPII`C8Ty&gw^ySuz&A7{H~#PpDtnN_lhClHUE>WsQpcBP*^{(@v@> zyh`A$uxZ>jT_Jsz9ZsfdMHagTQ6cpRaz#(sLrL=wrhXB}<=RT~nGlT&D_U5D$2IGW zPLxw+D5Qpk^G2Bs0)=xtV-q(@L+Mn4Pxs{Yra)=-WKfc4m`ANPL#QaD0nr7 z86Ye6NbI~iWvy&i?Tir1;RB%|#x4(+Jz(XBUGEaGV`(Rm9jnY}D_a=-@F-^E@XF8W z{`Z1K$MwN`X$^68JlEucF(-o+XJeI}JHLzfBGL?g?zvbpBk-$S#su)Huh~iThF|xE zsECzmElYe-%8(*!VV(Kp?aOLjl_{$;_pW;JJO)5-5oZo!`#iE8IKG__Xj!L=DKe#@ zO=fNXxYwVM@8%^wq&VQwo|QkTF1JO&xGG|MqBo@S0%UV4BBEg_dIyc)e%pg++0Xrl zC(&OFh1R9QptGTs`Gl7a{SN^>(|m|8!5po)WQ2zjj+<;)?=iu&f9?Z%sO1an+$*p) zfPAHk;9T0|?)5gJ{KGEi0wA%Ou*;3e(2D-ys{H(Jap)TtB|M(rkpI^LDww_uy#9H7 zVONc{iu9`%7hL@dCG+)}+i%?+OSiD{=%jZaSoRSdDj67sHh1JHv5CWRAve<)Tn-aYb}c=K#x0XP$h0>Q7@T48gBitjXC#WDkn*A7bGEV;e$q!p$?T$v@!Cw zw>ufagoQN%HhFSg>vjW(Z>c-q#aVcVS}WHCDlfmbve{84oDo=Ed$-5A9i)%E$9YN8 zSdrDAG%2~|sSE^zE4r@4a!z=DEfKh%3hPzK1LVsc;zNsopUbR*Sm`Y61Td)~qFH9| znBs`icaG@znp0(h!oLVqz^Fe)uE2oKfCjJDG%!Ueor2BbA6Xjp@mKO9#2vitpUi`p zd5T)7Z59ee$*^;a@)mD*#MIB1fSeJW?-W=o_p$fK1{zX7*LInH7+3?#dKlNP<>XT1 zf>aMthHYyV{~X3fM!bS^GF!u1=+|SERRTr8paP1B+loMr^^c`>xI~9)aMZ0dK@iC6 zV(Y0<0?Xr^DWq#It$0~~tHawQ4p-TCq{@~`+C3)gd*519`>P?ws(7dSK8PF6j3bhR z$Q`1;{f#zj+(Ez2Md|)J++wBsvc-FYJr+xWj_|i6?r&*^A z7Ve#}G<~M`7lprUX8=h<;wk=92F=%})(ogz-nRD`Q&<>S;!R_NIOY02I0G1Kn)4?| z+4<{Am}FdJIZ%F@GFPikv-tv;pfLUGNQgGBPr=)gM0N|vY8iq8&!hxsdELBK2~8O* zVGf?=_~;Su`gt1hQB{{bl!r1=pIxRZbxq#c8PMxu44)*3vvwp4%GQYDj+_Kd9uh5J zX}>n+vt<~5s|5NR0IcR~vC_e4-tB5C4W9fmM#*D;gkV_9G_f;$y^`+7F-+z>?=ucN zUy*it8C;UDK>Qu(ElLL`l_C)%6{rNUMcvJ1va!4BC}oB&Q+DaB0Y7nx6m~-CYQ0`; z@&)hqAI@ICqNh=nz&j4nNSQ`*raZqE=JT^99+lFU_|&)1LG!^nIMaR~5lfdVEG(#H zHjUiAJYROq3vs#!8~E2h7vm^`x+^nc4V5{96v0FGG1@fVud2LShZJuX{*4-7XN|s= ze&GdyUauwS%fxxHb&@oiGx(I~^(_HE2>ch1L~_JGohNK>Xhk}tm0w#wYb(i#;Q1$W zTTYPwiz@Py_Be}+CeMX!dAAP{;IPeKv=Zw= zT?U6AhTU;ZQy3F;!u~Beh=CoBG|0Cp`}y%wI|x#3QP@Wd7f4tvtAP3#C)<4iT6|^q z@H_@TyJe4$BcvWYXE)yvY{)6sNZnqgt3O2kqX{-&x=;xlt7H1DuhD2!hG!fF zSRmhQ5*~7rteJ41%RZ(kxty}HAj!XE(!nUoWehEWGd6H@DMi7& za!n0Aow;T0TF4?8$gn*o!DRFl6D)y|>0$iDY=SaGvFs5CA3_E&mWjno4CipF+f7x2 z?zlkm&c+T9_}=E?ZAR`Y+18JY@G_Pcdr{MGI6NGBp=p26g5F?U!+bN1t6L!xCz<}0Z~wV!Qd&n8S z4`RpN_>|`~(zxX%q(oTkQ~OQ7*g79>Jn(Ado#UrB<(GhS(bWdf9eq{Mq_^`5E@6?O3jG4J&K<6< zCU|8RP&39l`t!|tKOp(#wfLix@jv5Z<6GI3^`C*c&jn|ay#YQOv`grL5-ukf_>RYr z4c{kpfybfo6``wHnJJ1Xn^ z=o+A(#?en-sB*yfjGp`8^Cna$I0e?AGJW#a@Od&`iV(2>!j`)oA4Sae-Ylm%;fo*lnb$_v& zrgikQk@4|%q_(%dF*!t%8~z^sSHag}X9dW;exvdb9bXMydq0CfJ~c`mE0 zVJfJgPNXN-&MR_^bk8ZEj#Q`8ezp8T7b8(8u@Bp|{N2a>uL-ESmaPwisY8QOhM+ZA z_d1#&A*&k9O{H#<(X{G|L<8^@7;-nZ`5~!n3bMe(MP<1K2>uAWPBEHw$hX2u)%w_9 zoKv?99|!z)MeWsxYUxC^RsYO}JzoXnB4o>mB`@xEvgbx+2{b#uE3}cY5LWVvRF)+} z-A0QmcY}OmTt7!@0VvQ`Uf2xlMV{4CEA1U&WWpKs;u!>eN3>4ps8>dCb#QU}i(IJl zd?H{br!Z>5<+vf05j)EP7ONlox|N1ie4>WFxAzQ3b3b2zHdf)hTnyk(PWt$9f1 zK{?_zfzCd$(yT9dViJr$LIyMi{arLco^*rkyFk#7K;FD2r%LAeN3-yW`r!m|J_0~r zQG*k~P1Gn||OOT$TWcyoj9n!CVLcJZZn(i>LYAG7*8 z4#|I%uo6~#=qk<-6pUwk z-nSJY2mHp2t&%t8mlLwPXLds243ST02+7V#M?8E(dp?B0Io`e?hh>7Se~y{fK2Vwx z(00>x+kKN)fLyX9ZrX9OP9P|{AcMg@28(;#xZ58kviT&jq<4gPOGzR%7Jz9Ekkxgi z9Q>^1wb(Eph1**7VFrJg= zDGKeD*d4i28;N)QeT(+746TPI!o?!7w$e=TEw%Rq`QhV~<~wRSA!h)|AbF0)3xfBB z-2W|PE|E$;@Kl?Oc>~41)nX$ug7d{}vk$I>{u~UoAnxd=PylQh;u3DN%+kW}C9nnh zbiX+(bf?5^qnT$t`GJem<(*3|eyoG{<;EKUvEM*1#uFXyBL!5w@>>A535XO(`9#Us zxa9h6c~}t)w9Kjp`}sY{5C&9`oHy_7n9w7TFKM%yscOmCCA7wO_`<#S9*^&??)v-I^u=kz|TI`1LU0MLO{oZL+Wq;NpMH zpgv{1fiQCTVTtkE!X=xXllR2hY$9rPgR;fCa%IcF!&MdB5|VEe$^`L`=Y1|N8tOZa zz4WxQ149M3hKGb59knH=+!JPvb(gt&@#Z8}0Yx$?niKRT#bAX}>zC8=LjsJOU`EXL z3^SL$_%}|HU zgS-IV>^Qz}jZ2{4Zp`$SS&8;YX<3MB4j+9CQr~K6tu)R6+t~cBhuhh=mqN1;r62s) zeVqZsHW2g3H%Yvf1T4)w;XE~-z^eK{HMPU|Io#AUn!IIEg8xiRYZ2sW14D;Ve6<{h zvumPB#VOr;KQ}m9N;P~Ue({CB#xKU2d5;S!0qt4IIzir*dF`JeVsajS*#v(#(8>if zuuIaQr0IN33fWUEcIa5-(SRU^F-B$vVDb{!LOPOvB4WLM; zE#}4hGU(3sU+rn|b3=+Z9sl$53YYz&;N-R_1D+Y51xX#|0iDHlXd`-o;3hH_z&vQJ(hVI`WnDGC0Gtw zwOiFEj*-kHG)!9IA%8Imn)rwgYGo%}-PBuvxIxe?Fi?zBs$g1ILB8W0T;S0yid8cy;@TgKAjV*xmS3poYKSD_XiexTxgcsoQ&oWCZ(4-Ek@*wTy6b&r_TyBhr|IESa(FE${Dvh8gxyalzK z^zX_&)jJ{ISl0nbrq^;{?pv;CRD~u|^A#x1=h$A~Wqn1TF)N3wd<8PLsXe{*K;=>pq=u*ZYJ0TkrhKEk-U>AMc;P97w!b4 zu~JF{yO|uxdlD@vkFoIBq~A@ns8j}J2Y4QDOx6e#Q$pn;rs59y2P8WERpv)rj(&8!0Y--?!!sca{po90lxK| zo!d0T`7#g5oZZxEvVMj#wB5<)EibaU+oW~QjK|Q}4t13fd|*BDI}KH&bI=S*2KpW{ zofErPeqyLx!%xy!-qS@P5!&T`CXmOS5VXB2mXmi^;*j#Vi6zuabA#^{ht4mrc**?` z>gAamH(?_5bqv&+&n%MN%qgw7P%3&@ocqt2vE~&7SskIr02US*Rn)Xj8-D>)f(MM$ zuyJPj#W>m__{mOajXmoUD*@@WpS!6VnxUtElDYd2)`nqme8c<@c>y&oDu>C@;Du3I zX*uAKOX{Xj3d(oheBCy=Hw7(S7A}(+*C#$JNPeu|J>oK+z7__HF8C(bu#N_mq?wxx z{@OhFAyNpo$*wFZoHeM#>^7pz7JvNAfD;@zFQ|Sh=6Cr}dtqn9!SmepBIC-fQi(8X zN+MfJc$Hi0_N-m_^XFxqB1-WHPe$7!!ip5yOhc(nE1};8H{ce+BO|})Y>M1M*aZDQ zJJmAdKR~5d9pe{u(i|l*8L}$N0y|J=Z^HGvp8Jg}doS?ta-B9boLpfcdlt_;o{kVv z1NDzPZb|(|4u#r4UgIOGM5L6oV zQ-D&?#{FYJm)pexWzL-4?sftxL*ACw>$C~KF`s+z=A}P9A_Y9p& zi3s9d4swdRrwcrT75Eq?3ECL2@Ak|t1P&tt0%N&?jd2Vp#}FC!RE>w^Z&{O}7myez zn_Z;t7f5}Z!)z;89KI`2tq)}3&VG-~#_oVT7-CeuqFb@DlB^oci$Qa1V$XkEo1(a) z<4Lt00j;)8SCqa0TN(=YeAxAi8U0e+Bwn6YEN6Pm_6YhKk-0+h^Wg3T`lEDhP(`z;vPsswOZ zpK`yLy-)9&s*o>%&BwLkTx<)?r2;|3OaioDm?wYCm9u?x4UmW?L2^4@54{forBEK+ zXO*n&2i$R9Rde7fVFdBq*$LD#qrtH)Zp_7U9{TdLTEll_gADt?RbRfUrZWxgb#{yQ zbeRY@ViagPNzxTV3lD{es^EiN=&x7Q{B!va>hm4;RrrZefX-KYE#_} zJanR+>9wX+3CnDmO$}}o!(KdVN=?_)O`jvJ$O$7bkj$z&K{EJl7&_N#tvf8#ZlHHR+49R1`HD!Ql&TK)4}CVR zz0dVJF~9uEBE|Y`L6~y-`|#?|=!C7fJx?|bXYc5@$so~}@qX$(91p2~(Ng(`T3J5g zeseRNuuM-|+aFA?tJe8nx=C|*_fOlxeHa=Fo!P;q=GEjEMD%x`I=~n!+_-LUQ>wpA zMnjohccO&*qFnVZ{BKuip#^T9wm5?Zp$HXfyM5pWwbC^FQq7?H@>#7kGGL2g)NBD<35MfJze5&eyde+j8W2jt+Ht&@ z3X3Txz?|k;kkIs(C$Am2=uj&GK%JCex0qzF=~aAn!@H?I9>{$oP^XFcQ(A7V^EdJ9 zp^NjnmnSH@!Q!r-$%dKXIK3X{@b&Ka2hc9H!|r$1lhx?uS>F?yd`ODyC&6snuZds( zkv+`TmF{{Rq@IRNt{t^~&OuLxQRqqUzkyqOP}AU?nPSE^t)eC_4O#-uu= zdz_v5rkFTswgX_=AHym+tuS39l(pt$mEWv5IEsu{n9>*vsNqO^b!OT&JQhyu4H58M zH#Y%|Dpz=&G^OUK7nCQ@o}%w(0&d6;PPSX)yDFE3f4lko7fiBeNz0z1*x?SIZW+4$ z2Au3pmbxy_oNykvn~V$NYJj*Ow7Z>uQPK<#$D^2b7Y=Kxh-+C$WGX3X7SC6zxK(Du zn+J~XJqR_>7QNGCm~zh7Ao)7xYK7xZyeXDU!Je3oj& z+^f`itqUr*O4hLLD_@6$qSs{av;p;J?IvCBB|yoKE!aZw{ozI)4!>P@afO!r3ZL${~k?TNz|q$if?iyukoo2DXRZoVMuww%Jf7nEL|Qy{B|R;wYR9NM5wWK zzT2(hXMJPpcDw>0IUs88%4hc$MF`nD>)KCztRi!d6h7`5H=fEFxsng>o}E>Gh-c$~5-sUs>RW%h&!FzuN!Mhfxa zKp6|Nf+XWEd8f??%00h#uGiL@K6?Xjac3qFMqr2U|HYbTs*j0rpGyg;6YGVVR&C4M zG_uyRdK$u_-m}Y7*%|%N=gTVHU(J41A?{;#&i!eSJX9P6;kk%bnkfc;V{M{lszbKp z@|^GKD?A)lV43!V?!i1Er^nuAqJK_4d$}7T<-%8Z4#-AecFim%2SDh8F|9r zK)}iqXJf#L;d;z~US;qmL28k2nPyy)*(ytnV{Y9i3Czj?fZCUH@*|S2~D7p9E$W?6qM?`Ajjz3m^zXK zu+YCC(QuCI;i#w`L+A?xaT|^gU$$Dd+RU!WF?=pAZ2DOxB>C*{YOc+blwZPDi|yb; zEs=EkMcX#SlOgAis~_H?@nDQpnpWIn)1RB9xc=J1!3-0Z*$z`v02t04(Xb~Z#FnHE zc`ad(+-_T-B?K65wcM$SQYQ`98k>TXqX{LEA|pSxuGAfl>7TX3sQYC~d=>2v+=UJK z6^ETjNkJ)|adiM~MTl_hWR!#_su7~mjxnx0rT~Vmv6dO)y8s9d#0BRvwd9f+4@`AfK!g9h3TU<&3?ym^U`2>Fb-+q4AOk!~QD$nW?q8F?}K zd9i*KC~hq_&_cmn`b(^vPmEYob3DkRL+m>=ZKm{=BimmBXUe}II z*iA@m)xus!TK>t38%fo=|GGquLdV$TKy7IJwNGr{Z*Y); zDzFXNu+34!JOk-8kiHV=U04M*iFPFn^+jIhaw{Gt7X#5(M5Ff1h}~5r9_B&2~3qSFy4(#drd4v;E)Z}KAEU?txl zQbxsOLVFj;yN-)r2*CXFUEmW^ly-(NhwdW7|{~-5Mfz_owA1-@fj3^^!JQC)V@i1I*d&6j05Po;= zrC&Rpu}}sTO}r|XcWQLcu#BlbFl^j`noX+ho!|bfeg|MR#EC>2;3(0hla5#ffmue< z4I6PMr_<=!B~91smYjT`Wk3$!AgEj3ccC)Uy9N&QTOn{`$Qy~+X|X#ddOAQEUvsZB z$lB+e^`!w{M;b{ghEb)--P_rQVCmu;RK|1o;Lk9{)|pZrl)9PSEMMDvN_%OW)hlJj z`MD`mfWQ6wBJ@aTx0ZU$@I3Hqmo~~zJn6Z_U3PuG2^*G?q*BA3071G;)GKM@KfIes z=wc8No@@k5C25>l4lzf>Fa-AGp~O$UPi-}N<2~J1?+g86r`J!<|9Sb1)SIWX^;Q4B z7ND=}yf;5#V+j#J-0r45Yl7^3@AVpHIcO*|=7E?c591%62T*=UgBPqVK~UW=*cS2a z>7%-pmwYlX+EZy%!U~ejA!W!Bpb=K^)m1nbN=8~j;2+He=?$hKLqI0fZX2PEHv|A-^g`7-wu#eoJXmJn{jTkB(yx;7XpIpt?=I zeKn^3GFm4DQGp2-S~0}yJYm-|dhdL%so&AHHbf)$GiBE@#uG39wfBQYRxE>i{BUT( zcbf`f#u+sXe%O_r=FBN*kkqkUKo&oqSMV+e)xz>*Zz&vJj;x#&*5)_So0|KbuyfQV zt(%=URG91-4&DsLd=~)9`%8n5c>T_JHVSs}B^9JPyu>;SRCCGpeDB@W5xQP8PUfGQ zxODnW<;jbn=S?dYt9nKYwTq?9Y~+9>^&TN!-Ap_su3t=uAv9?%@RIHYN<}|K!uN?<5eaDSy}nrK92_ z|0~fWWeTeKqayUQ@1;=;GdvZJIPOZSyaE>n^yE$3)*uO&ED54)e|Y42i^Z%@$vkMC zT7^Y)D_LEvq)Y+9LwQZr0_)DUW9A#vsVt9b&B=1kY;6JL_Y){wvG6ZL=dM6OYAj=! zVX;p?&Es4t-pn7%SftFZy~h7>DM|{8x=SzXB&_t=y%8!Zk$-`GhTL}ojRuuaVZZbTcDp7uEp(|(9>>8<;q>@=Ln_5kSDRCb9@4+(l*TWJlm@p znJb%qQ~6QSG3u!H5f z3ryfN3g+4dI!UwUWE>|cN!9B1u-;)FJ|jNeNQe`ZSc#&^JKqrxX^@lcO$(M z(mMNzRDmr&+SstOem40R1IJ#d*z;i0JnGsC9tjGJxL1+s>maOpbXdj zvUSkbccp(*X*vl>mP+*mpAnzbs|r_HXnV&nFbEW+%uWYP@OIlkU;=onG4+2b><%MNuzi4gd%kHoko^j00dmPCQ^H2d0G()MWQ+9bi_!=!z}wXnBC z>)sgsuQGq!^Q5PD+u%5+@=6rc_xCT@z--wYi2Xc6iNjREjIX2Ydf25X^*53Vl8~;O ziDQsxV{$7{*30o2F(jQ9c_de4)-205Y#t!-a;?sCM^>!H6Y_76+_YBCo(oIqv)TCJ z6D-~}Aq2*EqwC+t2hqWe#D=sOzg8&n6ZPYNZL1f}716Kfaxx`j&OY9VnmM@$V`lAZ?#Q~7|q1WI|ODmzg@(K;JBZMgd{Y;ItLZD5Ld6EwFb6Nzj zRgk!AZL@6vs^pNb&$Yc4fI3w8w7i=)sJAjfdF$Tt2i9o;^q3cck}<3O3I+4aVxZp? zqHy3c({Kz|&-jczO9w35cl@Yd8ziUzrW{FV=PKp$0<{@SNJ^-<{`iZWAVb$A-t;mC z{ngEVRU$T24fV1Ui}O2z0U^WmzfzbkQ9@73TIgmJ{qt3gqZ*XdcVmHQUW6dTLW_gBI9~+|K(LbeW1F@)4E?}?D=wUib{tp zJlzj`-G1`#l#Hrc{Y9384cWyTiUJ!z(kuvt!*^}272)pUdBT{k-L+)XIW+Oe)MMQw z@xu*ZmK)oW|LEzroj@6|bZDC+Ri!14vJ(xfY0p!XEyOo)*Ng)*u;=ODbW8?_=>3Jy z60fA8DrSK0$ zbWQF?m&pu2-wmOLyh|nO{+xXsuakSe%d9e3WlYVPm!E!TW0Dy}EJoKfEAWdp7hN+g zdt`EAM+BI502Puh(^S#HA?`*-uTf+;p<^f9tl*ii-l_I}(#;@QijOxX>6Dq%+U3d4 z(`{JXNsRN|v&C>CGBVu_q#ZoQEqaGkn7ThQVc@;SKZHD3{d*g7c_P*WsMi&V(>_(p zaV)^!I+tQo@X)Bw5R#m)+$3iq+*;<)E4k}hiI``!tpM448P2#4la_Ua*#Gx=!qei8 zS~%x>ooJ<*{p1P9xeH?q537T!V&END)!*&yw>q`(Bu=BYZ@EhpAv!hp!qfPUr~Zjs zi=||}U&K}9zsDfYZ}mem;&MlBZh!|$f6vaGPHR4QGF32`7+$Yf3b~fYKaAziQP$@K zjvlvDb1inhA-kZL*KQgba{T(kxoH~JRHMApzBU728?LeLxZmKJ?98|$%W4>SuTvuQ zHxu>p|I{8}6{Da$3eAfqNGP={N>32-1V}v$7z#F}q-6}tvl5+TFbb#i7DVf4`roK- zim?2L{+~^PRO$#haVZ)#L;P^swo8b*uNv{%(&1P(oy#Y@=AnE+^B!sTUaiDArJUwK zzxP6h%ADs|E=0Cm?Wm=i!X#E?qm1E+5ux|->YJ##!0Ewf+ODd?u0QIKkFBFtn{s0K zd%M)ZT(yAn($!Nova*0S=`-H^3>GTeoj|9=h>{Z;oe4;R+%-NT+t3rWs+ z6&@vZ@mCIC$|tp^mMM;m=o73z$>aDu9XH$OBlW!S60kBkIU{sWU+}pP;VsfJ?-ya@ zienm+AR7gfF#_?VGm#dLn!QQA6pI6D`~O4uC*;H=us=`iny0z}q-pYc$+A9%j8_(w z1cv4-JH$HGrqzz}Z*_C5hU}3QU41czn3&sU$0cy1j{swJP|1mzEuAm_-2I>CS(02} z?7HtLqkj6CvdX*^x229oOk=N+g}2FCBRD2*$ScCMy4g#_Xu{7zS+EA$vz3{7GcHl{ z^HQA+Lz^xVjQmC4it{uTwvRm6;w$?FX2RX$PZh;jaARXQSa3^o?{mFf%#dN}62U~- zNXmAb6Rs5xZgx95`<-{_e|iAc86#A^4_Ccx^M>6x;&?ljm6c&8FK>EDAHRrBmAcy6E`hobdF^9&O z79IZVFK>M8B5)=SOr z#8RRp-S;aTcHw+;j`(W7t?gtxO76Gon;b7R_Af^E9sN<*Qb=7BYyxUH#?Jt1)C4M3 z2uyMg>YJ4OteiplE)x*js7#`3Vbi18Vm6OEgd1I$NG8YE@Q^5~@+Nn;Q>$zOca)cE;(3wZd9U(EeyU;nD)^_fuI zZJRC+-^=McdnYy_OJug}780rA>1c2Q0H|icce~4c^r3(|Rrl!;c}<;*@3}q7uSm^g z_6=nCy-)YF;*KW`C974+S4J^O>b;vuVmWaYR`w_zn)3Sw*c_aw8**8 z1QzLZb{-?}d95xX)B75PMt(aPU)k&#Cl0I{E8YC9MCO!-rIfeDVWY{4-eTt9+Y~!2>r^ z#$?)QzHP7h?(f`n+*Atessdy<(Zt8YI`$m173<~N1Qc0&7DY`I;Hq|{q|9dQrT8-=U7!UD zh=~#~5WXAt`Q12@1Nl_{rUD~FdT@O>QlG7xpShsau4U^>8;1H%qPv0F|<)HL5vLeua-0Ft`6A5hG7$UJ^O6d;GNjH3O@}gN*LZ z>w>3CWpqGGMg=|VwFqR^f`}kpCkAT z{w7DNe)&#A0f0-DHcoz7!X5>#qCUsR=GYL%`S+>a-1IJTyUJZpHKHvbv->yL#Wo(y!B!W4UG(+Pgku;zPop%UE1Tl#pT0)JZ zwSsq?#Uno^y*OhwyXV>ZYxIzPXPtRgosu9hlui;2j!1mjL<_8RtIp2g65eq2on zl#DhL6oaDS{PC@VZZSf8!M}JuE#nm1hiYeq#~hGM{O(MOlQ|npFpvqE<;hD19;7ygtP{BiClo4QwK8u zprW^v>Qc2^rISE{See=>)%s;(bCOesZOblkt1cZjm7`SoLJHW8cisyfUutTgx#U~6 z=#TS&j`Ep@uz0+!V8g?933X$`L%HPu=H&O3iF+zHUF&KKqP;n--=^N-GFkp%d*4Ih zi8h;ZCva2r*Izh*=x^Te3;|z;?{Xng^f?NT}a~X7Bt16}ELOD!^{zwTf4Uv-=nq z$;)=%p|uoy{ry_ z=z>z(1R^I9ht_e{<^cJ=%QAM1FZ2o!9XVGodq}K!&1NV&Q!-MlrQ$)Nmg6xlfV!Qi zfgz$Ch)NvNkMOyDbYl)Kl}+p4<#%~S(a5DpQsDrI-OYf0?e|g{$fP}^6fj7Cgl#4` zKqP2n21zDkzOi8Az-C{|*_A~T&r%P-Hg4KUS(Si3*?+oCYE@Fayri~}ZFxvP#rMGR z!f21r5bc{r*dG!=A^-X#R7>A5n~rNxtFSqFi&Pde=^5w?t*;=7gQR~xcB?u@vh6lv zLTzIP767kNU(X?3xxGW=eSAEe5a0Jl`L)OONe3}TGR$tY>oyX(ivA`pcXZZ(@%DgO z!;^uxVb;v@UklXB%~4PX=GcWOnxmxRAJ3lC96CD}7_`Q7oK$j)Nw6=oojv(K-c9wS zgwIFQL9vUHfzHv=1T{Ucp4Yz+ZwC(DjkA|B6%8$|fI)H^q&`d20jeAtGdzdAD8q@! z?Nj1%fZ((dM<9yLnb4K;*1D1uc>m2!c?B~2gPF&-j0?8zEfGtCyYe2;o~3^BrGiM3 zXb7(d8Wqx39NqFdi3taKQ&TA*ShQZSc7JWcCjU9WxJ_~2xW}xD6->!^$7NTmcfeH* z-Q(9*<+X_y#`xf7iP8GApe8wn&f3w^#rRd-XC-udn-Y49)0w}Szps3W80j7PJbZx{ zZxqMxeM~L?aV2xH$Dh$E;F^FYy{R<3q)_M?_&pS!^hVKXXE@Sv&7t%^I-)%uT>hqgpDLtA&%VLv3w(trQbsuHXlZu%Ue&Z({P;ec1CWGGK6(gnvr#Zs=> z{Woa$E}*NsYkev2`iUae@fTz5J-t4k^7?870!$zLGP9|-qLN0gc4E$*Qnnna-~Xim64Q>8_mK+zV(l8rH$P?1t-f1z(Ki@1TgwZ@be; zQ{PahFl}9~)m>|*FI4_!{rf*OorPPI|NFirrKCYhK)NL)CJiD;gM^Hdj)8P{cS?6n zawA76Eez@0XpofdM)>Xh{T-h_VSD0uJ@WtrqDz2CG1*CYSpdG*Tc9i^Miv1lhniO0aQw>%dB z5(;oO_{N#Vp&rJLeLYwKTmx{lJ4k7W6B~Evhquxl{ueHlwPLy>+>#haziV z=E`m3J~{Z^pgKB4UCBBwp?L>XX!@V4F9P{*Ha0ef0(7@9ac`(Zz=SS&`TZ1GJMs1o zpkqVeezdD&3YEVxAhPd!yenOKxXswEZfF|<^{1BP?J)0{Xtcb_e=$cTPfWx)k{Viu zcQ$zrGGrnh-?uu(v>QESl_+awWtyfOrff=(>SrE8@4cRfU9Wy~nQe$eo zZ?PG6GaYWliV^Xgb>J_eQ|+#x$cM8u?dS@zaiZFhwHGAlo_vu6nxN5he`l>_&G#%! zkeCo6T^NnkygY*ISA5Yh?&RHJPjDkCVbCK9FQhg9K@7{e4djGvGvVgN;VCi$XH}8ov!y94Vm32Sr z*tfW^-(+toqx}$_3lkN*dU3lkXy$uN?NWAxo{T8z5Vj%a@$WJj-}endc`$&uPAi4X z%>owjpi$wSqq{#$<=>_-pR-Mnvjr2dE_%1SK2ubt;HZN&!=gs0sPb&Q7IoOHBAU?g-KiOjo(Qi8fqNNwi+e7&F4F{0h|DW ze#|PlSs%D1N>#yT{;kQ{K_C%U2Rq9@)&xRWZji3QgMm?5052%)qF}lN$ZeSQC;b~t z#bU=@L`Oxyt8GiI5CL36y%hyGzC7eT6Hl14zs0PC;q{+;(?x}8O*r2t?*O% z`DQBvfv+rzvG8RRs;i#xbR+k0dDh11t(1_$S>csJ*-LfQBsQ%%g!P+hDV5e`Pbc5T zn#ezGMV`tS2pWR7lJ3|1Spo{XO#;O*trs6Wct2$iRBgKb8;-|31n#%1Zpa11JCcf1 z_(~@Q1Oc!M$wvY2qRvG`q1n%s?r3@^K*%36b(aPF*8S065^?}Q&`&>OI;ipNG%z#s zABQ(qM{zHTH8ZJb-M4Y_r=-RFGdC5>3HK_1*UjD<9%4Y#mpn7a?<+aBq+>Ra;e@dI zYWAAD=iPV9sdnf-3c>5|*p;GF*czS^>RbTt&!TUaoC-Y z{V%xPx}=2lGi!7^dd9cr5H_?oem6}B*0hbar_VTa*2m@!CP=^d{o4^ocphj>7Al+% zGU4jD-jGmHd#W<$ip|3bS5|QV@p4HyP8h+)Z62+pX;z(XrsXwhw92o|sEQBTc1qf! z>wl0_l-Ub|S(+H9{fr|=s>!XL6)@9dDne^&W-ZDxaRp5hy^-ePi5vCEaDo$H?Dv3m zzu7R3n-=?hN(BN0OE!0N5iVXmy}wJKa}1{c!JJ9l={XI}op0CWt?2k21n_Hscow&S z%{-fyXun|vD18>UW|u~~2n3xOz9*}Y8eg(6+=*%$6;~0UIu=Oni5|QW5X`Rm+;G(3 zAFt{Qg8c3l_S)iD0Xu)wQuqHb@`dxjt|w5Y#; zlDT|bFk}1`Wqxxo8xf~49Hp3E;CaoZJemy0_WLInN zn1&F<_?5LnM8-S^8;rAbjFIHl-u@6+J><4W!W&@#Tu}5hMs`dzEa_&=eMTpynRTD7 z@;bYem0kVi?M*-uC{UUfoa7SH4pl{W40;qH@7dn%urpR+i5KuUB9Aa{W5^@jM6_oe z-WPkt@u$K_;N8#C%TTvpU(tY^xX=dPI;~;=sRGld@+8Tiq0?pK!d_L2TeR@?5sUD^ zy)#d%7!zM4<~wTZvEMsXgq-g0>PU`%1f?$)(l2vuuD@U-(Go|}QHxV7DX;cpa15a$ zR`D*fCC&-OWRoZ33sV2Ocx?*yi6y8Sw5=$G5P}mIuFpDLXU2we{(_H>s9eNH^E?}Q zGc5M)ic$)?HKh{aKGq+*J6hH}mi0Leo{aU|ec~}mT`FPYP_55CB_uVQj@!Ter^Jz! z?Flnh(Qp@jHno9yzphKDuwB|$Oc!4|YX`MSaq@v`|)9om5E$LufxS_R@c$7UYhmGey`9%+Dr@P6(O*}PIvZQj18$B+4@J9{y1^Q?PP zb_qYrkYki!dgD)%dPuB*pq>4)3kt^tD61Cx3Wo3?21qH_Z?hlOB~KKW<*4abr-?lK zy(IC1U|dwI)21)3$T)js{`_wiu!e$F6iA#*Bc8y|J2h~;{sjF#zmF09oBtG;w#x1U z>NsDGI!R*o@RNNM&wa0bm)|R`9m@0wt15f89iz$?ujZ{k$5>ZS3T@|N7QLWaqlg` zx1$N>a1a4q8**tLx5Q!IGwplhFZ{+H`0}IJRtG!!#(zu35>gY!K&0r3X5g0)cROMb zGy_8j7^;#vKmt&VGHP^pbi58PcUV{DRfdNsF+tzAX^wL2fG!i@yX)VB!1I5BX!>g? zCzMgMhG+j)q#S{J9HakNG=%GRR^L}F{L}Ou4f>M-mMn`oyG$qRjfZ2>>%sKKh0JP< zeGcbscNML!h%sID+oXfpUcq~mup}%gfQ^%}0vuT?uk~MlD!yuONVoEUs2)moZLj|l z`sZp~yCa0GIKlz12+-|_)Oy?RE@wzll0M&}Xd*7D_X>2|Pi7E>!kPxo=#J9NZ(8?M zlA916E7nWRXtJ`kV*%Dz;WU1Z_=;CgckiCO*EUk(IGD0xhU?SK`5MSP9W(f4;N28> z;7y|ZG7H9+eCVRY$SpkLqNuxowcUnfPeg1T=hD_H zqMRzv0IG^YNB|hvL2f(YK9Ijw>0Da?_NM$FL@G@+umR$FCV`hB zO|*i?lB0t6w+~mHu42&%I-u;dZf!2klPN?UBJa@~jI&5*u_bGC-10?8Lt8O@`nL^l zjsvA{;m&Vdi`IO5vR^Y+WeMg=j$^mJ0e&3?upB$J`1Fqxnm{sANZOaF=^XFjH;URa zRcWqt*%lGAa~7CHVfB@v&DPi+P61;Co{!l=jZt*1NZ3W(Kn8$%M5uN{Y)q)7@%`Gf zlrUYfL`hfa4c@{Vh(f>#k}1V*>F=Ud?ZRcdXLW=XL0ALXEM%+bR?Hs_V;@7==~z7z z2x`}rVJiTs(Qd(XDR>Esk3zq;XMZBVG=usxLnYZ!Wi_)oASf%1E3?6#K88A!OiP!u z@WPny1erHv_=rW^)>9~HEHseSBXP)#VzmS+>8I^%oA8NN+d!(}zv zHb8~E2WK8hf$J-jXfLf_!*=^OAw#mW+g___Pj)09FD z?Sa@RYwR>_!va3}p5|}IyXG$#YPKv*t;iv$T|JD(eArZ*Q-N=^ZJRtB7h`D%RdW+~ z`#O~4OFbw5mv~it7*+ZE5qf*`^H{zsTRV);Ak;27^X+;3{!qMo0ejTUkQ3}c(Linn zlM6+tHVpfeS{|1fr3RRjNB zrIF%04N=u66oMNVLaF@p6nRJ<;C7BT#MnmgTMz+>wr`SSuG+&Uw?ADrk(0}dQ#_(Z zx+0_W_s1Sv@$;nEbBvq7$9-! zt_}iLA&`7#7p>Rl z1gu0qN}6Dw=YdPnrc8BK*`5g`xwYH{m|CE9J%}79+w5X9)zTH7WyG^=v;I;Fc*=Ok z!p1~^m+qNyE`Tg2+L2nhj0N`5vQ0+{+iR`fOD{)biC* zL*y9nL7di-aZV@Y9bxqo-M=NPi;i|!p()Zz9`>aw^`ut#v=&w{Ue0=)5QctkjUpFp zzREQmu4+eYyW&e*e5L0$eviU|=Hd(Ka@+`Th>wQLAG=7bIPHjGiK&u13}qlGFBT%G z6*>`l04ZkYyl+KC zN50$KXa!2g>fn0c)+ek>tR#@DZRHMYn)BuMhJaTbqVb|{woF*Jf3rSnRaYJIWwanb z9&`UfqSbPhKK{MQ_9`H9q+>2G5uM~VKb|L%qz7ar9#H+tPJ#w2s_TP9wB-G?bY!K@ z!p=)Y^Z)WzIsWEfyhwC`1Q6bPZ_0$AiFwNqDm#Myso&4?>OgbeR&5om0Rg+u8m$Rq z9A3ITDCU3lU_=j}7rMEYsS0Ct9}T|_eZF^q<_G7O z2JB?&c4>5z;LrU>WicCa{Y!#Tu2C75xWuS5B%(^tg+LqRD70gPUFq2D#ymPh(h-!% zhO=NEyoPKN;B$bzI~s5HVKv`4hcU3br!rCS>;hsbGUh1-y&(?Ec1t*k__|>57i7cJ zu}+h_`&b-YiGN=iPQWcBTM2WF)KjraZ5S)T$@x~d;^?0LTp`weJ!&IU@rcC9dO$N^ z=WWJ1zxmXUX`A9p?B^Pb8YrCN9(m8g){vq8C^U?+w(2N+&m+ECw7u&u z2oJC+G=MxJWRNNbEPgCWW2iysAOBFY2t?;u5xXKEV!`6gnf8cisk-)H;FZ|ufPHWp z|IA#q@e^^#+9C@Ly>nsNj#-nwuI<5= zoS*97V)iYaMyg3xuAmK^p-}3sAV(v>HT6b78Se*#?~WcPv%1$84jwF>s_ojX?ydJk z#i&)khb6pKne$p<8OW-wFs*(;U0BvZ1x&g^^gjVXi7APeuT{JY(%yb($8fz_?7=mv z-zBs+?I=7zrGo^wSIB5VV8yX>v?`b_>fq?ESZ*^mPjjD-UMt|u_fiO%{sXU;^b`V> zFKtI4Xp*;K3;-%&=ioIhRtOgVr|BVnhxdsR66aR+V!xpF%w(=#GNVJCkxT-e1564V z@2;7U{PIwM@N|8xx}C+(+q`$ygJ||TmEh~V6+}*;A`dHJZFPCKcu23VwB`+Rw`Qsm3cf4@g^`gW#3ttfxF_I9Kp|@$hiUQp!jJ%nF$=l2RQ{dle^Y8nQvuMY86ofwda*p@^PkZPD{Xi>ZU!2`fOw z%5<~cRs_$t zHQ{v(DbWa^8xbqVSE(mN;ip`gMa$5;v}Ta;%#L?@#s`@2jKvraq1_a!QKlWsCW}2w zQ-BAyVfbhi4iUslU0E<%TK~9>Ni#nh;*4?gl|MOHEq-}YwoRoqa ziC8DD0$GjZ2pQ|0VdCXh0bXD-kJ;C4ba8(66*bm@Au04TOKMU*;(tD1HS7pDJ$qA- zbED5KcNYw=HaKr#bAq%vF!&z*oz z*{g{XgDOdOWnqWo3lXP73;8>20Fwxz9b~v;s=)`f9^qn@X1ct__}?rbu*ai{`yO4a zW$R^N9VA9nl5YWEX)kEgDbx~2T`Q4+!_fBy*JhrGB6U5F39tD`shY$kab)K@-X_0P zblP%nM)}WC{=Z?-CZAz*L++xFFv{OvpG@p^gktiCVAlR5-Obkg6pt%Y8h%et5+_0b z?)IOqf*ziK{r?AulQ!Z14iMV|C`=~dZu!OkEjofgL`&0y`A;c{tt7_}Nx%My)_+a+ zdUO(eVisEBOMWW&K>B0)nB>t#utn{Rp{$onV(@&0EA8y`w7)W3*u0|uh(pC5WDsYJ zKZ>$^K2%|dZ?DJiJf?dKSj_k4PBlN{wC)bv7g-4X1kFrZrSEJ zxI5b_BgN%IWN+#Px)&HSPSFmRlisQR1A`ewD(<;Q< zJ_|TopA`?)T%ymFFx>1vP*pkNlF*D#gXONM7NoXM>d>C7T|u>c2P}E=`S3<;YnA5B=Y`bC2dvMZHFR-;HN`7 z8(~7HY1;fCWJ0_vyTn^A21Pbv7+B}(Q%D0M?P6@`m5s;=vCeB09?AxkXJI2Xe~a>e z*+78p(14%SA>gdQHs3E-?bLa1Y6M(M!Ve`Fe0`=G5%;`Tq~G8!g|%Bas=CL8z#^Es zzc!La+z&!1EEW{sGd?<<>*K+pB*s7TJNP28cTg)+D3R)8+=90K?Wj`h$;`srPZW#6 z6~;b!hLz(S+kRqht%q?MC;X(j*h8zwbVu&jGTi?Z(wOS{o=K>0osYyLY2Hd5Ls%t% zD$Zx5g-zBC`Ph$ni*IOAM+D#kA;b8_>6|9o!wsrgWcsLhd^#W^m6Zjc9Jd%RAppII z3u~^EwU|?5VG1ZeK+kl^IlmZZ$XksxcH10NHM|17Q)xqJdl7SiN(GN6H+8EDVFCqc z+M|8s@>95Mrnt-LnZWrzfHx2X)2U5m^Iq1=PQr?*{Wwyz1+DVQiEnod4wHWA3WkYg z{8%Y0uU0=&O$Q&BBgDVL6L@Nc!&KNqA-9f$sxyWe5jYMaPg(XO6{hxTIJ-EwPo9Ed zE;L;LrB}?NOap}2dI{WUwFX1(qr#KiUH!Ih9ca04YA4K%K~kkT>I#)!Z=2^l>Dp@{ z**5VZ8)AQl{w1t92u#p0wlKr&^9Nj2KnXfbcn!Zbb!LVrz76VSCWR7WwIg^~A!1in z%{cMSI>c&oY1*2b7M2r`f8G%>glMiH7x8r}+4Fa4-(j+j9j|0T9W6;j_%T$7>rea3 zAW``NEDlCk24ae%K#~yac~Hk|ta79_f6XDuqhP9A64#-}DoLg4NGrCP;IEcZDt2I8## zE8L9FamdY@E?pw~!nSU{T6 z4-r!q2Y))~PRAQ#GnqC};(Ye}_g@Hg`GPKw_eo~S@AwP-%QOjr23S0&&oG33wrGCpyIQmn<2NVFnq1HczvIH5{bMFJh*r9~$VPAz@BCjUr#US0y9zAc}*| zyitMhO;EAuMhPV^1z%YuMvRxiTCs%Qo_a26fQ+g%IPaV6d6grh?3YX)dF)zq@WC-T z8;Nr`MViJ#%a~kLJh0_u>X$$kpMQ?2XcWlZQsh1@C?NtMpB84%s}1Sb@%jBJTPL^N z?*ug*{G$3{!bnv~L_~ACD3E#3g5nTNMVMXKLfvLKRBrnNi@ZBm(TDe+ibtpq#(iRL z;`+$qH^l`L)k4+OCb`5pAe&6`(CVap!Z)YBw9_woMJ{H%Z*i15zMOqr{lg6xLpYltvfWRp@$SQ4I7t(V0f~FSEHzGf-|smwYw>>XW9dR>HmqujB~ZXN>s;P}7m;b;C_W zxr;{fMy$yQlh+_BJvkK7p;rI)FMoLo9h|j7Q8D=LFoy43wyw1(J}%5_7Dzb?z$%Rf zbZsRhYz)OCekjq2EN2{(B)`r8LqK>qODm4E+{=A))L(zLl zzg`D|EMW5wC9_gfD^ zLzbfoIWg*6enip$q~6+U?utKKH9+-mP&&bb&dUfaj(DVKN*I@JybNcsejzbFKJBPB z&D5Sp++kAK^|v|3v!Bq}&YkBTvtLPD6vzpKx!+NVqyq>dvOg3gZHO7V5iow`mI(!u zUzHX{^|^@ud6~C?gW>X#8yI&gHYqLTdK=ZNLlTJOs!#!z6;6`1XVOvqbmIxYryw%FDH6jE%djcc-T) zwbd_&!DVTy+OaBF-d&97bGnc!T{EWMiqXE=Hw)>ylhrncY6qyF{3?Kqx(?Ak)t60N zhju+g&td5|jPuG5`vhqJs4(iZ8rY9*nt1yJU+H31O0}>FW#ePAr?2@}Yp%!Nm=Uqx)>+TAnBGfJ={snmW5*`5hg07+sz?A!BPr&bV-)1{szR8Fn&!!X;lLd2JQ= zCf(3guBSrV{QGxhR481_aP&1%jg<8H6Lj*^0A(O=BF%Y>Uk9R&3w$jWp2}!p4ka4(|!+9NL zl)14xzVF&5_(9?u625?jxIewQ(X%g(S5@XrFGwEUal`BVyK4*nC>cJoS%DZ73D10w z+XTVV1_20L^Z;~bJcNS&t}2|4xAElK8nUS={D}?+Q6}RUa|k1T!PUdl?v3PY(RV z7~ZXmjZgn1XO}5o^k|cEVYhsr9Vb|VG77L=!A9DX>OX;Aw}G9+3VD)#U4PBV+1c0- zoARP}LHXbgiUW-YtbI*i?Q8G(NT4raH*FV)o9>FQ@7z3p8vP| zg|bg;R2T_#W*q*j^gKJT`Sr;$KuurHkh{j3&IjU?%cxYbmdw_(eo!5PtC1CfHUdK3Dj&fa%hb_X9d0@NjsHm^||p&?{{-%rI! z5U(#nyeIATc(^%XWm2DR_U(?Ya+xWTRt@A*)PRsfqvOy7Z9>7*7Qo|!1bukcL`sqi zq;jl6-NxsWz_}Qz2z^31&63KjKkd=6;xwH(w$-tagE(;zC()1XnKL{`sC%y_tv!@( zR%n-Kqgal){7;YtA1TY^l(Y?pBnazCAoB>v_ih)eMmEtk7vp1nzT?-{uAR{RC~%Ht z5-o$Hc`!PhM4mWP+qXRUPn$g_FWI(?;Le&PL~zZR5A$>?)5y7sYgb4vt#JcJN($mt zxAW0RZwHA!zZ7uuh3+m$<$WTK^mZJBfWxx*vEfXynay*yiH9DnA}5?bG|ZY1TPyAD zgs&3I@ZHQ+jtwwsz&38-FJ33-^hBUu#n5Ln=@p565Zy?2B}cV)Ubx z&K+Ox_ohxc-*^=Q@ACLE6?_zKp#iM1lQT(eG(f32ZCo5Vh0>o#E?7WanzpN{TFXab-lAaQA@f zpRWu8go>|GCj!C5iEb+;&dBa(X(0L8k35!dj5QX0KoOcyiqer-Q2J7ASokLu!g@e>1Y06N5c#v8i$<96bp5wYs=cdC}WFI{g&9) z%Nxgid3~AjRW5YXP(I62s}uI<{n_a~0%%IZWVC4ECg|hlM9L)3>BAZ;#`_7Ohkcj# z%_BvHiDqsB(Xjq5u}|4rIpW4c{MX&i`j{vQNq5A&iXYz*nr2|^~)XN3b7 zZv^jF8PDGAU3h)CsWv*%CwV#~_%}U!2YfKVhYCZKAyx;p3Bz*BPF6i!GxG}k3*?%^LXt+uuE5BJqH>WL)3Tim4-8Y(t#POYO}(- z&RnhcBk`by-$#PZ2KC`uRoa{F&N^wanf%iE(7k|Atre@gDnrU(+UXH05Q+CH&FwQR z=;3Z(dXe251>hbS9Lg1xeC}frf8YSga^n0U$EUI; z{*6b&2gPlY?TsdQ1<N%fPHyc-)dpiZjB#<1KaUc5V?* zhgav_5MJf9Qw|zCz&0I!!0LyIQh|66Jf&T48ucFjSc;mnpPZf!!{IG$*BH(xo6p-0 z!U*1hw$8N=WEucw=ycR&h^%Hrj*uE`F6L4|yWDmWH)kXqmZ5E-lI%T{kxt%3@6c2< z3j{n34h(4!*2x6kZoRa^ndbboHP*q3ekp9wWoNrs7~Q`oMrQ{9;GwssG30{>*^qDp zNA0+N&IJ*IuZZ{Pio}Vg**PNAqZ^?36T|2y8x(q78s6x;bt}W$&lDwo@6nR!< zieAAhOK`c9ek~_8yY0ELl6Iq|H_d{)wM&I}dd(SMMO|IqJv{y^>_73@2Kie`(KATI zV47K|K`95QGX33t{IQYh%@$~NaacoM9|Q0v-w;H#W#nR;d3KA6#AGzojYo~cF}JROe#twHZQ6LxOPyG!9soNYA_&ljW%-JW zYcyueC#1Y?Dje7F=yb);oFZqN`H$sN_Qle<)f~3BnDznJS)Mnm1rs6lrLSZ}#nAoj zfgjHatq)c2KgNyR>i3c1s7eZR=;57tybDB*mbajIw06Q~|P|*t8_kW1)jn!yI z|3j33ZMWanhNdWfwI3V`M9tnXp?v3?K6nx?nZ&PrjJKia$uwzf9XeM7;Tg9+s2HqS zQ4M|GI&U(OhIig@oUpQp6oJ1)Vc|>#BzBY0fjg18_ITfw244@jAE@;>cREe8Q&ukX zmviu$jyvmM*{_ll7rJ+8V03JcGYF~dwb))k5?RiCv#{+&{B!$J=V$N)8%=X5eZCmL zpCQ`DB1c}JmPuqE`-#=7KvCHDq+c2nh@p{*A3d!iW5@&j{g>6+f<+@{C@9u0z1vy~ zB2CgMf?y9OC&hjpNA^zt5SFvIN_wg6(s$u6CH=Z;I!IlLUG$-LA6+rj1|&d67(TMN zQQ#A-cD8!~o4$7hGD9!EMvn6c*!a@@$*;GAw6GZcVax?n25)%h*<|RFV?e}HwwBT4 zS{f|AgmF`gm8SL}a|D+?xmAW;G#ySvdJ*2U?&asDBO9m1U4hSb$N|3J>cOaxr}WtS zGa3v`6(Ra#fEOzL594p!X8AgL!*z-pr|rmB(Hz6@?ircOsq*$|V9|4ml`99gY)reD zyLZ~oUtvSo%MQk|XONHz%k9^wW>mmP901~26G#W=%-u;0qutL}=8TGY@Lvo1Du0C6 ziRAyZ4XP#YYlP_ysp$->ySXNMRXiUuqM!ZSb?<)B_jjV0jCdR&7eQZG@aHEYhYNW6 zylj@H0^>r-ZV((TGYhq#D)mt#1%ynwdyY${4CgR`@%vq`zi_hjzMcDIk7fE%i<1dB zgFP{WvfD@|CXIxzuGLVAE1;*e@SuH(E+*E0yWl(irrD!=Ll5D&ls)eF72HmXNAM>4mC~?T>f>j#VYnQE-6d>2sJNAqXhP*>Z8k~0YQRo5b>+3+SJmkR&*An< z5-P4W?(=wiwp&0+UtT5&TDZosfzx#$O@P=Z6E>o1VWdaLK7dlRN z^*3e0x5ni|U^F7hVo8XUwVaj7B`@aps3XMP7Q!beV1Tsx8IX8s8%1SP?r*llekzWf z#I&eI%T`ht76_!#OvZmW6ME|NUh9mwd-`|%^tgX-tdcUk%Jt_T^Am+&;ECof_uK=^ zzuk~R`Ww{QVHD$gDZ{O_==3V`D2jxuE9n+hJU$bDBEff3-eP$DxHze)^tgX(NErD$ zudj1?p&sT?&GUjc2sw0wwVBeToEgDMmxY4>B27N8Cc|7m1Foz~VRSy8ud=2*GxO+VxLZ4$+EI;Np@S%@r3u$+R}hjbEZ!x5Cu(S;=@8Bq=i#t=e1L&$ z>Z$vjwByq4IhH4y-Y~WiLdk8zXED_!u=!yPbMQhx@_YkBbUkrH#|-`L$&b+ARGvI- z2^cBD^-2*uyj-^F#}EldOsoAX1zaLA;xVBhRw5wiaKu!uvFD4**Rg`}aimIM=jy|E z@#x`e^&*$=OI6UA+GNvAUbQ?2Q}`>!8NJYNXTEJDW)3zv2lZaDgDF@q2zNA-^cvvT zD_X}Lnw>1C{*o_Kgw}nh%vPlaE^o8n6dCE0_dU1dz1M*2Cf*;ypaKrQUFetDVZ9y& zM7vj!ctEb=j&tKew+dA0NfmA;H~^-H{8;D^bUB&JX_3AEJc^#&!y~D}C=jn`|W9(#?lAz8gD&duVwp z!2-?TNTKqzF z;Q1fpu{LK$oew`!OUm`aA*?zm22-~BOL-{w`T(89dt!Ir-ZasV*fb>Y(^(Qi59{RH zrMLm<8`UulhU z6~6Wi>fOsb78HMljb@R4Asi|;dQZbGZwA86S#@|XVEX2jexTd;KdZl|h$HZ#Rv%gT zm-X?`=qMmS6^7BCO>K}dcch|!40?dq-S#KHmrdDrJ2?{f^AFy?>x| zA5VoyAhJd6-;5e#>ypqFeM2;wg!to&@^_FnrZd9CqU`?AvG+ZnQ)S=I(ik4yEvkB9 zsYMvxprI!w(~3?wDdOBv-2q!bAIIJ&uin}jnI`0e;_(ej>a{cEng;moZ@k+wJdB;= zCst^Ll|elAq?@_^2k(D7vWW)1o|xd_^0NyJd{q7@hGbR$yXv``!IK}4q156E4D8(H_3&SfF3=XC^z)E7X&aZI+xt&c8dVaDp9__jJ}Gi zVVcTwwmW{ti+7 zFWH@epquFzKUroQE;p|>qO0LlI08)t91+vrHFQydZwr@5;$%m{^+5MGgFBmFV`yqV z&Ik+ZeOUCNYq_PavamFp$UzCII2a;9lSfl;u_v=X{58OHQWRwpkuolc2lx|=nOeld zzG35l`nALNa<2###vB}q=cqCzn8_6?=f!Emw2sAi-dHg90!GKzoQbWnEpMBc4%bVr z#W%n(UrRB0L#naeb;sjiDHQ03NX;F`rBwbM@YPO!+?|@BAf$hw&4M%;S2;9jJBWp- z6?KMqFntPndbuZU>o=gpIdldm+he#*a=ZO_`+o@TX^bF0qKB*+oyWI!-v0)JXr@wDRnJcTjhCz^i)0ySF3}uz*Z%&+Pm}Y(s5v8 zK_mv5bNqoc8Uqo?KoLAPe7Au62OAX=QF-$Am+AYZJ}`APSM5f}BUxNM2-@PoE|c4amtVt&xCAl% zxL8S(l<{oALWK0XX|-NZN}U0d@2KU*yCO)auC#tpK-c-s{e+3Tueb!{y@gy0iXo8l zY50Lbhfck4DW*%qIEHr7>7N|fm2aOD8#yea|t<>E@8`D`*zwWJQl zcz2z{uV>I!0S_%ky*3b4dE z1NNZ7qlk!X1WN3kltEzoqd*`C{0`t+u{e<*WGm)_w+%H zLaAux!mhtMu$hA@b21pY!H$gSUkQ^W@n6p;FKQ9ec-K1^h$#@e=2a>`<&Gbj%5g`S zzG2_iqD|Do%_h%!KlnBU%}Ej^*P&mOq0uAt)nCD3mWRDk?A#tq5Vf&wLWsjtiWSkQ z$K8lpwCy&9-6q3R<98HY98SxzpwD6p7qnqGocEtIE35TP(2r?vjs`o@>GZ=16Lhm#@AW}!eTD#-&%#GkUNmjH zD;yrtB@sC|?v!za*!m;-xR?DKY0lGsH)zDA#YJ#^zC{!pYXujHn%UrT9DB6k#5*F5P<9p=jBh@AW!h>>`-&(jHYoK zbQ=KwsLU)0`8CvH)it9$nQbsB+qWlyYFW?`M~(kv1LBv5C2-|z=I9)e>v)IBx4QI% z81xA%k=u&5d!nXL?quzI{G|EbIU0m$VQ^q*NUFfe2>;H=oZp7&N48jj4?i&(emX8k zmqsdf*B=T`@oqvx*fOKz?Gv)uh(DJxl4USupyNtFa)0OG5)r?nA}`x_A8c9|l7Uvc zK>?QsX*il0uDP(8+PL>nob!~H&*BB&5*Y0YpPJ$1y`|18aX} zj9Ap|7$xthwq$4z6Ot0N&^j zfT{5A@RrI~uD0Uk>UabLiDr#tiX<=AwLY!JR$@#+$@5iiTYV38Jhc^E&oMt6&Kfc_ zW$mX3wBE5A)35Ncl@eK^3<7$;Ex0gcGcsMY|1P~<4rIf^rBm#Z2FNe}!?A&q z2h$WC(h*MvTl_2>ANR_zG5EHD68K&Z>uoKBpHf7nKzG0M3eYjCKHFUamXtIDJ>@Fe zU?1vt%^IK=uf8>vSaN2s>rssWgk+j}8RWkV(0VPCjeLp!#l?7rAoUPUKl>LbV96@x z!)8y8jxbWW5thpOhKv6VAe5}X^x602Z@UO*W9zVRvT%xDJ?z0bKlze2z664N+KSpq z?$kF&>>ydcziHk;mfQPHlJl`*I=9EK_b)Gz!S{jqMa%7JKp}lPpPuw9R*p#}1aQ*l zWXPi@YTnk^@cNir6zC{h44Jj&XCN<<=EjlhRj_r5jHFnD!vne!0d?tfmrDXgFk!r) z1mMt6gBhjdGWFnV-@bjOg60VAYA zK3UK;oSdj#=v59Hat5@R^ME^R33w2K2)rhaR0Y94wV}NYy+m*Hh$Rw-ai_xMGxksscy{SKV z<^O15AtjU}@H!|SxmFOXS&`lI-_wuc7*?p`(9yT)=qmL(KY<-ha+8_A+#a~rX}3?( zlRR7hdcF$}7X|I-%EI4ci1I-F{E9ACsQZvOf(vmdSqqEM_1#O01O>eQ7@@PIV|EUh zP`#+C7+dX13rN-{zg|9ZpS<*GONkw^UG@4OqH}!uBT{%7zeI>;o5yeCt_P@slZ9lW zutN|L|JHc`tmMz4J<#iu08`USW&E33!b8H%6WbO?oICYZ z;ZN0mXH#G;XMrM}H`+H_blMbz)@iMAZx!*gcqH6h*?_%MdjEpYfkRu+%hTr;#>o~N z+AXh@PzG~nRLr5TKJoXb{BG6~HyNW!t|V4jD2VRyO3#UX*Q4I;H@DdfwRHxCcaJh= z|F$PVi+I-eVa*59lkBYjOg+g23VPTdErr&e65iAN*fCMO#Xg98qYn*YToymsehm5|I>htQefkRd`V3{;As`d zA9xC@|kv&-)4ab#?sRKw4c3rx#S}DMNS=ma*7CPlE?} z5@$rG$r}tsT5Rt_T`)Fa7`9cj@H0OZ*OC<1%2?n&+5iA_@e>>MR30N71?z~LAKsrD zu##$-Dk&a3hZ(d_15^iduUQN*@46is|IY&X)cZp&xQ>%7nGYy&XK;^zfLW%?F80RhHLsD<MD)#!;qa) z(3w6@9Nft2=ya^%a)zn{ak!vRZ8RJb);rMim$EDOb>-HEA`~?C7AgS z+h|{~RL(C-Hi^Ds3=knQjBkW<@L_IgjpHezTNKWyrH@2?b)Nk_?a+A^Squ5q~QQ<4;wU6k0P**teBO-CB< zNLuq;J!JB48uIzkrP2aG;Qaa%6ba>E-O{uAD{w(8HC9rSX_(}f0NsKq=)gFqzF`St zP&mUJd#8@p4;b^Qu{jYmL(Xw$0ZLeh;EFkV$ zh)3PGo32u2mL=m@)53iTGZlCII&{_;1&k(+FWmoHt<|?0Y~b>GYWkpl1%JieVZ!02 zc^QQ39a0oeuSV##uxH>VIV*h%CM-Ks9$3CG0=;x48*UR9@jqc>5^O4c9`>60G`P2h zDsdtC(A0lF9nhwVAd$u(P(S91OW3 zXQrF$1slKDb2Q+#r$lS=J8DYw^-4ZclI8(fEiB-C ztceI6Y1>6IHye!IK?T;@hwJeE?eEU4W9e2V4W%l8p;!sqN34fBBQIU=*>h?RlvZ(A zCVu-z6Mt}Fa8gF4;v{4T;1(Rz%G9oGCB23aNuAHEGS9hBP5at7wef{g3+T@0tz8Jz zaoz{d#eR1?&#woE{+K5bN3>)6!PK7#i^o??OYeNU|@K4ohc4F8O z=kooPwLKT7P2qzXfx;zz5X9kok@L)QUf z--lZGM(LhMxY4_q{1b<#X@z0F7hNE8z<>DO2z-;3x zgk=#idTNew_=M$(2k>cT8Ztj%%iAe@ZR4%ZoSe^ET!r8-{iIQsz1^P?P>3(Qd}2fS zhOgpQb;}=w!6Vu8wEkZ$Sl~GNrQNA;VR0GI6c>X+CB3OgJ`GxP{`)1RFQJ=HWv})Z zdgt&R@N)vy9R*{v&ReW-z(P95S%*%Djp$5{K)sc3iF<-~?AAZ2r|ef(;R~B}NwgxN z*RQSXi{1}%zE7o(|JQqXEv0BZF^b?*`uAfex_W``*K=H0pd4kiWDUe z0ux3uqmIk_nxx1}jc=C>6`kgLokMnUx^*y#`?cR#0fAW{s}sap_+D-wfHbmnD+#c~6ry9K zLp&(DKw)PXmQ8pVhnQnYMip+kdH}jk`K-EePn3A+1ZuFe7&hws9w9`g+#EUy-`=L{ zBRn(lHibQ0x)o(=4mi+x#GWDmwD#b3ebUHaM*-rfV!~QKkPQYMR5b;$KF>r=WX0G| zOAMVnYqXS$jG!-Xy11cA&_0$0aYqS9I?A-9;j{iSuA~%MlXQSj!UnbX8NIf>}D+}|(s?ZYW74?D!;T&+Kct|FM1z-dHxta6f%a*L+nxF+H=Bsry zW6Xq1|3JU7pm3{fk)MNDpRe#$j2Ine%%_k+*P$}z5U%teAObm%RYfz;if!jNZo z;@~MJs{0g@2MdqGl-J#f^PO2VAp`R*WLqm^D?OJwe6y4IpaY|UYQ3fY{TRSK{zgH5wa?N`P;t4;((36ZTEZ zr^#Dh*F{HTZ~Dg`327J_!I_Ket$u9G+^12y_v;WY%9ac$NaL7-Nnj2*mA3ygzMvay zT&+nxNSy)!NXZ}P36L?BU0e_eh_aMT^MVK9k8qI!6ebFPEXuuO#XV@O)aJP^n*_g` zPH}2jIRPd8#5PoF2=*e2$*-K0V=XIfK{?eMIPoe0CUiAeiV*bdbusl}5@;)poV44k z1=q4rJ_m`qV}3I44W7viiXOah0<9S*D=Hb{5_nD{Y_{GxiDoU2ClLPumcNJOxbRW0 z^H0%QZL_|`8M2p5MaS{uT*CM}+%YYTTGQpEK^}Qtt<=ZZP ze9IsK1$ZADk*RyZWoZ=>@8=w)_q(e_tzHoy=X*Kyhm?vw^3sq?;zLmH*}~c?fZAIR z$ubd9_%5B|t*sjwrmPD7yTl?bGj1^Ayvw^e zlPEt0=S0mnCPbP5`#yf#+gWzAE03awb>pB5|FXYYT6%-vvyn! zZN9r_7I)=tM0N_7l24)%=?zHCMrLe7{~3DKTq zo$j!o;52kqHP3AKS!g-3u7-xrG5z(J|IKCwYN zF}(_~1@e*(9u-u@KQz#`5QgYD8eS7V z?1MYXZz_5b4~Z-IHTfke!x{QUe+8e3F+lu{wcV}TsHt7!-%B!S%S2L1wXq{irheS^ zEJJMnBdvg1$umX#aVk3^p%G$R$r@AqHk6cpEQh;9TZUc8?yXj%mhT{++Or`bE+O{| zd4C~W70Ur3fF@Ke*2Ackz$(50JoP6~Xop|9UVR|>z&;l#;=_kLZ^oF4@9Ebm?bYv5 z7`7Jyj>M%+x5#J!ms>~;OCw?fnx8OkGn|KTGueQ>$9=L^M{me|7hl9JuoXBakJ5fxc-{*e52k70dvOZ4b9r^v) z{=+(X#Z&Qe3dZdhi@`fMA8B({o#(XFIufyk%aSWf0?%+Mt=!%|!TMcQdHf}3tx%ok zHQzt^p;W4RfqUyv>A_qt4A>jv@f)(`eXC~iA3^(FmV`&}jbQw*ik{f35CFvR*XQzA z|0}h;*An3iIp?CG)BM*;Fdz6TiR)hB?*AGNuTj2z@prVZXg^=K%dQyV!UAh_`?bl? z)Bn2~#)8AIoTa65g>nH|_G^MCBc~J~eZN|a~vI(lPxvRFg>;`cbLsjzOD z@pjhU%^aNJGOU+>~r8-SE_qe+h5Gxgzkpjg7Qo8=lf$q!gqxqIC8zj1s(W$Vj_FN^->JNQfM!p z-L4j_&5xJEhDrget88ckP>HBtXf9NyEU6K*7l%~>rz#GbVfePDTmbB(ad#6OGkMPJ zRSr9Y*t6)rdZCa zw68i|rblf;a8j}3J5eXfa5qK|;UNRSHnCocDPEReKGPpqT77xS!lP?;f#T6`I5~kM z$I?}t4ZRDJ0GCR2{n^}P!@76v%oA0}FWs=(vR{*MBM9V)um<3f2-q*V*{}dKt>S?-qlPtfdL|@$Z{#xc3x9NpkaW~^q;J3r5p`h0iy5nV?8r5 z1v6>~CExukUPXktl}C50Yl~dJwoPT%_p&omrJ{&rXlOz5&g(iWZ!porbM^$dtqo4H zC{bQq&kg6}HH#!(^OG%2?H1{vQ(E_Lz01@wRYe-{ohG)P z_<_mrVP7DDYU4q|kw584f3DtEh`NG+F%O2+3XP_oWoS&XU@}(E^j?lQbA?!JG)y4h6uWU$=4;d`4-YtcCyO;_3E`dNRLJ_>Z`Qx zW6O4k2mQf9A`Rx#!xoxBq=At;su&MBf1BcK*}*q-v=!H^Wu6b8$Dp>=mc zQZM|6!FXP1?#xpDDoVX92FAUgjpmb_%Kp5}`_~Zj)Ne$TG%rx|iHM3PZ_|q&l1aQ%g8$}lx z0b#2MQVsZDEx<~iKN-_T1rmc`g-9TPJ6(asP@0*u$mKcG$B9b>ul%#wk!4>=iDvoM zi(I=a%^RPU+Oe~qJAALPOVTj;d`Frv1RZS^|E&QeU5==C`eHG8(#m7>#o--+#>uHz}hQhT{-yTy4MeAaF+ICz&@sGj6)WZ~3R)gLX>3yE;vMf+iTs+^86{h`LV5 zBYvL$9h$c6$z(U3yZ-YiR;_0iAYDBGh)+dE2iOh9kWy?> zE%P)wV%1rk&Xd{o{Doa(56Y^E_)xb>HOX0n9$%%$2d$1z1Vc`4OJQqdZW0Ewmc?tT zhf75p;sn@}yv*L3v8$hc+*P0mp4`y7OBq9e2v^*JiJQ9toK#ZPqX5*pdRXc|Wf*mTMN-$`yKBhfbD@@5h`ap7WylOblR@j9-IV=;Vvn(I?M>oj zsxKRS`71EQB0zi`Ts zvUB+!-sOpG`IMQl&Cq(;<+ksgfH;0^k=l}55@n4=?Y<>#OF?ir`ZEgy%vE5-?a*rqu&rs{FwDDJIa|0JT;ryGGhK-F93+A@99U>KW;UgUMeEW)Er(Z~UZ>isz*#!Av@i|lb z&C>qz#Lk8^YH{Ms-T79-KtC<=sGi6jTZ$YiRnFnx=SQ&xgoE*6sIgh9ZC$R|tejd6 z71fAv6wu;_r%#laXgC~ZXJ3esfmlm`EsDHC`@Ed9SDRiYR?y9t#EkvoX?)Ux81^Ue zV)ExnJ8l7 z!yP_KE@$=hVm@hK4voGkYFI_hQ) z=*h{rK=M`^>Z3_o&H0xBiQ(pKLfu>c@(=TB(lutT=j^L*TqbUV2IZ90Tu?I4S=OK$ z=;7CsTPU=PFEGfr7Fc#tLR@y^f+B47*2-k#!jXJux(v4V#hjnC5`L0#3Ph?{zrH*# z-#vbK5Ei4rqJanMQU@&d=-x}U>pV)4yHX!Lhm=#w{E5|NINEkkgqz(|c;QdNOb3fs z-~)Ie#TuVwv6eTet(FYWaM{5655Nn0=+?Rjzy1tT5p77g9y;zJ5APeM&kcXVOKEa5 z0-UTu!=D(I6>X!8%#YA+RRr`xjsI8% z{?xXjg#}ycvlJ^3BLx?wfBj@*BJAo z0U}99fiP5%wMv_7#CR4?#naPd=EIw1^zw2IpGbANRJhLJCFm8hL}u9un~0YqJd(s@ z6HOz2jJ0);s?-I_n#+VKjW9Pze1mXBh1|gvf&q97zYhR(@KtQ(%DOO{c230L*@*gi z+AN>X!;@PzoYBr!%t}@pCIiXy{k467(`9X`lBGB1rCq#=)pnjM-(GMHZUI?DU7O0EmN8=Ddz^E3|#I@vn;2i zOM8s7_;as)+3`rjMvxdq)LjLF@#PVDzJ#Jj@p7AJq8?vlJ%V%!(NK8Xj~47jd%@5U zxlszvYGl@?Pq|}b~7Pk z=J#&`?-r!kU+S?CEtd9Ow^65m zf|N;7Bb;tddUul$K-&)xc#&DBses99ia3w7{Tvz5F?A#v{WL4-RS zlI{x_9oF4P96fr$lg+h|F+*Z){KH9%NpFTEH{C)VVviF z_k0X{5Wh#Z+juPN0}>2Ol+;R`b=ns9;ny;)J>A;7rveKiA(w7hZZG*oE%dwZiQir} z1l2y5L;1}y3)tLf{Vu|?OL&Z20_|ypW^SKoH7gG_6ihlAI&s+mNDzO!N zGc4zSV8uKoQ`oV+$Zd8`tGGC|_{y0^4}=y$YR1px)(-$*Ogc}N^Fp~tt=0_witA*4 zy**VU2v{^wuFZiLKrxI`-%?LGN6toHe2QE)T-52k8dfuFlDy^<2n|6Ehl)iy*%fnp`k+??4r@p}v zGu7<`4d6RohUmqWPg|ZfhZaXdUX$>Avh7I$2mCLy|Us0j)VMSL4bC4M4+*9klm?B1K+!X4}%clVrF<_6-li=-=BBQzkI!C zE7Ep{HBexo;&{8P{yoaBJoGQB29lf*_a}=1f0Mi2KC-^=(o>cB$1{b&(pXPtY-#mf z*OZM<4BZp||89UE548T<1r+C3YW3IF9+|<2om)1pabI6VSH%D-Tg$F4rccOqLfK>rzXIi`V6DW4^7YTZc0uFy8%O1n}H@A zD=u)ob@6Gr(QXXk#K>3JO)~s|e;U?fjJR^Le07=9`#Tc$Tq(_N&_>qOoY`1qC&6^>NIJpt0W)Fh@K%ai2<>_v+Kw;(^rppEjdj)(o$fcV@Hb>o;3{HNfJkzpW@(=DMvoFP);ZAWOW2_6E0PducE3FAl z3S7E=bmI)b9D4~?_~LUjbPJD|Pxsuwi-m?W7<3kfPfdie6B5)#VO1~TzpJC?D)u5eSuTYm^puqM;7d+g=W3EB6N z6u%|kH?TV%^F9VIC)oh4vOTX-2$W6^W?(l0!ZrO9%!6oTlZoUp{ogQ{cjJNRjK;kB zka6aqEhASUv%9JYY9YyBmXQ`g!zB`G#DO7q$YB%2ua}%gP52>!ovPcLU^HjItP^J) z>N-T~t*@BA#7i!O>+(B5katKM$lty;0pD_`vGI5xrGX)v-)L>#*U)272!CXzUe{<~ zgnN9(HB>bFrT2hI4=!Q5pE6lEbu19TqiYw#qn*&Hv&kP<8huAqmo^6uiz2x=)vTd zQCJpP8O!JVo5bMcG=M=IwW2b0^(Un{m1+B_O?Gdv$I+$ft!N7c@-Q_>JBuhWg}Cu9 zG6Q8f2e+Lfi5AHWW6@cMD|dl~Ua zPqj|ku|aIU*MVCP=pXlFLm{z-vQupENoD|ZBpCgins%8jdqUEQmjo4t^AsjkLUbAhd*sT`mJ8IV-t0nx-p>&{GLc0de?F*N^E{GsNPVhl>q>7-K{B3?(nEfvB-7aA zzQXqVII70(L7ZZkiAI7GT3>GGiH^@(-}GECStax{-tQ#e`7>!3$Hz8$|C|?w`l;ga zUqhe3TwnjVjd;yeGX0AC9iKV<3kRkVigo&|s<&(RqV@lH0Y4gbkav{f{6Ugm5LJ36 zFn}A~L!^($?6=Uu&k@=D0*_R@QpCct(^f4YNB?Cg;AbWG77eq zcRn}F&|PiLykYOr#gK33&G^?`gva2!u944xaVhMW^;qO;4f9pN^&z4E^mx?2_4C71 z#N?PYB4QjkqL2aApn9w4Su(Z*m+~pjN}q{2<`->#ZK5$tb4nsM61JcZlPQRAaU_U! z9*#G_HDY#G=`Mjwlmj4HAi-)LVKZYVPlS@w^5zW8+jnYd{?Q$zP~4T_y1b^EEVrIV z888YlaRc%p{^EYs#hjPpUbQy@PP1LgBCVt+Uktm>ia~8<)KklimCO6eZ1y>8DYL&_ zeJI8H$;m3OMcS^_K`lMrhQruOh(qPQIeuMltob}{fo)T|{>fpI8Po9`4KPV9?#NbB z;uvX(6M$FgQ%cmWYkZiEJJQD(B#v6dt7tvkwu366*bYS|uRjDmpX5lG@Og#CsZ4|E*+1N~u| zLL0K08oA=2N_c2ZC)l3WQGW5m()ojK1X_Jsqxw<#NnnBqg-}k|5T;c3FaKG~uFF5s zDK+3J;l%F(64(HdM%I%_e!^j%T5iVh2l~Z?HhKyBPLttTICwViW$DN`;wV~WT+Fzq zJ!8$d;}OT`UG$DXg?KER0mv3iD0r@TjGQ=5Q{vGEw(Xhp`uNO{C}eT} zrfpN}Lni#~Pp2oeMASBnO&Ym3@0ul^3QVYh9LIW~0xa=cot0z|s48%8O~2FEl?nO1 z55r(d>i?+#!z5)O`{xQ;o+uWSXdDM|TF{VByGmH8F* zQZ46y8kz8)&qoOE2T4zi{M$2ow~xn9&vef{6u~fvnA2a%il?<~pOYK0i&ubtOGZg} z4IxYOwxO=q92}f@>*kr#nURCFwZdk=vc~v(bI6R=Ais3&?*XJ z`cA7o(tEJ{#{EMc7qSWqX-GY&g)q0MtSf%cRg@|X@bBfzOrD9ZRnmwYlZ@v1hIK*B z2(%%?(utebLOG7Bc?%c1xU8Rj(Cu*WFha1>@+`*2*uW+CXgKS(XXYm z!!>?lMdThnz~UEXNYiIVQ-q`s^NRcTc>0EOW3gpydsb1w)X-l_MoRFL5>w8s@dMPZ zl~Ll)KSRnOuS^@~C}%YSehyEXqN|7P9gQm#jm9mACFSB{6*OtEo%Fd$v6i>oDAWB( zt3`ArYbS(g$@f51JD+=E+zI3@G;5G$?=4^rq(9cq)Dny_0s^ z?(;OVje&IT53E04Zw`z&i$e=tq*SF3~n# zhEFCW9wm|i%nq`sqeysD1m45mkO{CI6W<$jR9PC1F3)El!5>pP{F6s>niNVn&cm6a zoU_QAp&>ECi~}AcuF2`#aR3X}NEX~FW~5jQeH~({HaBzB8?t^T& zmNj;2LM9P%KvyGsJU2F(X=)!PYq7bLZguAv zD%_%)V!Q|%NHdLgBcl?+QOy~|+W`SL6i3KoBM5r%0xPn6dTHngD;Q~i92nsdY;s4Tu%8ZWXn zAWiR228Ry%kzrxiG|1cs35nmZmz1hb_*kMcfCQ4e;S!wT0@SnHbXSct9KQeiSIS*e zU-gTw!`x>y-K<%?zzd%!Y_;!?znf-#HKdg2Bu|X6bm%NllQe+k|K4>{vh^xE0aZ6A z_McDEm$#rPJ8ud_?n2i}pNMX+7s#;C`VjnkL zF3U_BTwGR3n&71y5vf6gU1z@zV~DocR{hlKZ4zV_r^qG#W#nrlptR(%th*avwEU}# z%25roa~{V}YxkXGHm5mn`kQ6Ia^k7Ld0W|Q$6xetBr5ELHph=O+Rx zpQYW&I&u^C`C_oGYI_bP&RogBI>N9#7AATLP|K#Dqel7xzR$BV9VueQhheIB6ExwJ ze&+8osP;NsxQ{t$6{;khK+esRt;fyj-@NpK0&5URPcLXv!l2AEp zRU4Uw{mbM7+N#FS*h(he9GCJ@vcbvhh&)A5`Sbfc0S<%C^vkuUH(#E7W~ImTe4|?O zifn$|PFLquiL|E`*A2^4?(oZ&&W8UiowPG%9&zRBr?un}Q%r}iwusRGEZJZ->MTXl zx%2{+LD0=kCBhk%11$T5H1DUeo!c5AI?t8?AfcjeYFM_IyNa4iAF$4cX(i`~=A0Y= zuj9+Pimy*S)lz-k(U3AO2>Xr`&aDHCo&Tg=;ufT+aDQRIrZ2a%;!o3ZT2%uF0l5}X z!u}!!!#7=SO1H6*i*&*-U6_velU9|On9I`I8PdZk>96_ihEBg)V2BiyQQc$ZF@$zh zxfSUy)7AZoT}@JcqzK-NIHI_6N9U_%1>6FZ@UVF`t(b}t8NX;SgM#uM?ne)*@l`&Q z+B?Uvr_*Z0O9w%|+u37CSQgCKsMKO8iYe;>aS9cI*?&c-Fy5ibKg;ggc3)nj~T5@4j2 zlkG5=&B9|g4@hRxRAkHD@mvAE@lKjmpYuJ{D$#y=M@fblv1FB{4)C$@I_{2JgWx(? zkhYybD^d{g%6Biv*3^5EY&OROigR`pj2i??G*Pn2}eF)#3LW(La8cHysM#=_uC zlpvbt1YxSQ;Jsd*AuL(uV79ug3dU`@m%z#3O32!QnE5>XxS*YXA?JAwlhh9^b~B#+ zyZY6R*N(|9&<_05yy1P(-CzL>PU6i)C)2mmgJF%;*4aj2BpSv*`Vl0FrCCHnyx$@F ziWXWJR@OIm=?pZ~QIUkkV?U**rj_s+gq9s0uKcqf-v#48{^Gm>k>69z*kEcbkr#;m zO~6-vG{a``-*fMHGm1;hWeQAJPrvqX`u^cf_{d-bIK8{uuXc;)c5{0@&LJJPKp!>b z2syMcOw+2hLgEPC2u@b-=Cc`EmT&yg>ut5-mMoMke0{g_=K(h9^Z~`eSKJtwaA|$8 zv3FV9OxACj^%x0p;J%8$s^JKqRF>65vK0L{VeC3_7d5mI|s9T2liY5lS&jRvX3Ir#P)B@gXptJtH z+r(s<>6PSuFQ28mz!ke8Lqi!d1UM5s@ipoBLfARe_cz2kSs{=-~n^&-WJAeX*GYZaD znI-+KSt8771f>BK5x(vwb;09{{868uaEYj}FIcV2=qb`%{MgCeeY*^o=?`x!ge>e3DvC%YMpuwY_PqG!x+3 zL*AJoP-=mhqNDsp*HnHDI&0;+*y{WW_jbtNU-@><*-zp7k@o?Qw2g*anAMtdU63NNa3z{eaKo-ZV2%Z2vizTBd{@R&Wc%@8h7Y zn8{}p8~Bx_l|DDGqfac#FLo_vIUe6X*6?xFwIJ?i0$(j>sFXVJcMF6_RWUSU2r93Y zHegh)^ZXdTgVQ9y&AbDrvQfZ}XvQ79$VPmP&|)ARhUi8l&(D6sqFmjTOCBp^l5a@? z9~k0yNcw0yjX_`g-v5;^scU>I9YY|&OrxmDWb$>0?AM`I{!=Ur*Ay?&xygaaP8g=l@me3R*i3km=OeJ1Ik&+VvaVH!o zLolLBL_2L%ZG!*5xqwnSS3~IpK%C!7X5BIYkERchoU9dM2$(#%I>@+?L}HmvT{5dao$uaEvDB})C7L+o-YltQ|Nx8s25NCD7-O%l0=h;`*6 zY`|Ko@2>RFbd}YV_kSZ7QH2w4eL1gPv^rRw>OiniOB^j=k^Nc>52iFC7c62HYt*=P zkFeKUIjc}&NY|?31BOVT%cu0nJvSfcsZYOS_j#Ecr@@j+htX@`*fMF>7_K1681*yz zgqE1!0#jc|k|12ZkmHR^rjIE1Y~0!&pe0QYTJw1RViNP{5nfq6uJFj_=lgreKrBNU zZ|(MAom~@H_%Gd#w|twUn57Ovt@cN0MYhEYFN1ZNdS$XFz=Wq2`_H)rUPq6D1xZZC zHncCwfI-HW&u`6h=lI?eV0m|gR{?dg8OSd|z3{UvFFp{iXX?(q9f9w?%A6pv3#mlp z)H^1idIUi=Nu1D(Bu9vJ;WJHwy53#0kh$?g^eXR#^Q!h*Y`o?}z%0j^eMKCh^9S;E(KEgp=lKz?8F_zNy(egmwAlVKN z;=4AH?XS{o-On#`DsB?S)f;lZYtvQb{wwIQmpLt9f2I12_@tx~ zq2&2Yv}oYnu9Fo{Z4Nv)DT@B?EzhI?9^p2+(yAW2FwVX>1pwVxb#T6-<6=MX_iT6UpR&MKkMXJbk1Px^$TUanfU~=(5r;$9VQsrMN$&IY%{oYT)jEyv!a8?7Tt5_9|98Z7jLsy>3?;H--N_pMCo5&0+FBVO4YY*Uf|rR6{J_e)fWIn z%;y;#|3dS;r8aM(wSOLVG4kOBZlBOj1bs@25F++B$|4Vq=Ngy~P% zf2U@#A|N)b^(PP=rgvtBnZy1odA8)RN^v$XYR&nPt>_I%V@g=D!Oq(eLhG+6c?D!7 zZKUQl==xCttRKDiEvZ=@INVsH2d}v)Ti%9QV1?9x9jK!_6##KB+cU6=CeKW=%8T$C z^TJ@-*<=Q)oSHd4juwN=-YqqS1&r@jJU&R2{+h@yJ^{ZG)|jCR*gWYehnEjf*ckm-z%tm#q@-zhzv=YKN zEDmVW7V?gW{^^Oq9DYrty2+$J?Z|Wh9^OeV3WNtPIyP;-Sd=DhdYA(qP94#DJpA%5 z8hTOR7E;l_rMkrwxI@7oY@t1CiA!fIEG!&AE#LGN6-%PnkX-sBxna19Zrxc~HL$it z{Ud!nXF=SlKa86)NlteC3@3N;$&t@1Aw{eJ0{ApWPaZz7V=_ot?+i!d)|9_986AoV zhyJi!*H+vJ@^Z<8#%Q=%M}ymW}yugQPLe#($jkWRJOA= zud6aC{Os7^+Ncr#?BA&Ff)?4kvPZy^^A8c>lH-jX|DMQbIL{E-hM(=kC9gl zbjwcR4yAq8{?AfRx>gqMGM?$7b)2qZkF0tQ>da`%-}Z2xN2cak?b`Y*N4Y>bQ$z`SrA4^`ib!oM!{~8ZTK@t5ZtOTtJJ7)XGH>*@6B!OuK z>B(lYNrU?xvt{uQFv%a{*yxjEbYRmYbKe7yH#~=qVxT3Gwk&=sTW^7)NwRN8 zHfvPATfQnu(?Fn1LecrS1+!o#L_G_0PexZ5$@ao1qu`we96j(JD=~pQ9b&|LAf=mm z@BEDWVf~EV;Gf`A>DFAsGVj_oOtJeVqKb4mvRc5%!R|wd+p) z?%wa~Er7+CSW+%%pq<;tjA&I`=*>4slO90mGRHOko`i**ShyZzVzH zPEF(AimRm)^jx$K|5k3?T-N$P!} zeqk1>6L7XUt{U=PYe`DcW_cPO0%$1`6zS)7XQ!vL*=YwPPKq2nCQ0;=b zMZm|585^F`z2DX?48=8q{E*QOD6{<(ah*MAEe(M8B)gp_t3N%zcB5vW$6Tz zO?*@LQImtO9{i5oyslkf%L+&p>8*umM?IMwEGp)#?fMQT?hEo*q)W~q(y94Hp6iK`sJ#7twiCW^h3*uO zgp^ASUToO$68K1XWvup-zt@Tc&Oe_$} zPPH;qFGRi88a~Hi@gGR708y`$Wwu<4lDNf8^)asNa=jPeTHfGZ^iPXYzMV7E^%0fm zQ;0BgQU5p&A#|QzmsB$0pv{PTzu#-(P{^Yc9XSF2F~;V+IZ$E=m|iNB(wm?@(O`~Y z-=C96!_S}p(F6a0&;QQ|S z_clOj0|2;|=gZ^T>AJEWwE#s6UnzUU!G7=YIFFnUj{EVZdhD}r)bKw(zQM;9(=o0e zxwYO}&VyRBnsz|xJc946hqDK0t)qH8vLN0hcF2w=B1O~I^ZWCeFE@}vLm409dj1!j zY^Yjmz2}VYmtX!Ht>pU=TP=7Zanc7qhC}%ev{+d&t8BZzrD;lEqOWm19v_$>S7Eh! z@4fAW)^Ccnmd~v9-Yv^pi}TmA)5~r|1y9V^qM@B_zU@RDR^WYWOFbEo-yV5SF{3B8-j}b&fa4!iqF_JZM>$FyH8E>d4AZjXdKzdMF+r$4#gP1br3^r zV#XL`F$5DhYvsfcKJvCrg9iBd{Z~gt8^J#0pb}-?@0_8)JWqj_tx;=yqJJ?cA0NNq z2}i4E_^*8V=?wmn4^0D}XS@wfh8bNhC#Ufwh)2NJE2plz?qDn4CIu4+nlO=Dclw;| zC=IhWIvvLoB$gb0<-nI9I>W@L_XOV7=hvv!1Opq6u<%U(a$mLuwB;weaCFAfw% z1!2uFFKYrqp>6LuaGW``DzuXEQl96>aX5;~Ciys05(2Ko>bi1;;PE`2jn=k(ONzV} z-Qrl0c5Wt^zh0mG)q9SL2!+F@)=U)HTK8;gi&mH|DP0K%H&06L^SD-eiqN&z81d)l zzRy062Lxz1kofWOt@j*qtpyyCwTdQ$%2FW~^|Z|}SxMqBmzryfxD2}8DSh*qLF2cV zZU1$>;b1|r&0(&cIHcA@%MGXAD}Q5fsmM5xC{y6*apv4~bNWSYVi?ac^sI@|xa-$2 z1Uhc=L_b{L@^c~w8dfyX)SA!*$b3tI)^c*8XP-|)Nlb=h43UMi@t#9EXj_(6U7c`h zt+y8Ck0W1+*aj)01`m+Vfnz67m~!tqh41|qXBKo5hPJeQ$P3DR8tNK6=NOo@M)}rz z1kqtmr!66b)|#dmPF=d)QW)J@TN@3|<6%~>-Iza4^>5$)sdrR70oZH3EAg#XXg_jm z$DqNuM%?QF4iyFE9SS9KTQjExX-l7TnqzaOKgLD>_xr2s@uV9`Yr&b2=g|AS3>g3b z5CBO;K~#f8E53CLrAbIz#IdK|=l#Kz-PM}_wNezA$#`od%Dx{S_dHPYoG z;aPVgMaD%w&M-O8j~%f&aBPS(v82~XC!%LgNStVDJAq?(97ioUa$!9Vw*n*z8!hr8 zj&58{7Uy_te}4Y@`T702UVtDdsR>8DcXRK(0J8+*C95eMuCWt~){1)Xw}^d5@fuTGi~e<&>MJx6O=6Any`+XZ@=_9_ zyAC~68^XzjCg94{DsRw%^obb@G|_>uQohC-ZA&R@S$`U9S)m#H`b9PV!5;&N9L|3 zguB4DZh=s0B{QwpWyp9PoSrw&R7ia66}Z^bk85$=7}FA{mKqBq2w=^&`Lxz$h0 z6;iy~k}{O?yG2|Gr(p1VT~`)(wT1;HRZ3CMqO?}g(j|m*-b1Xn2Ed;;ADF4k=~6Jj zyY(;`_XBxrckA3Qrtj~h+`w@u$QXGOK~v!|_R8uM*pX(m@=`=-9V72SvP+3kr37AU z%2LW*p$5!Sbb2%gT%1FRJ$>OIW?G9YZcGTJSODP6Dn9QNfCCdBn8(4W-Wn?+sI}f& zf)jaeM+P4zL`lI%R?#Hm;1RdhZgC6&h+-gZGil-0Tg#n&?-}DG=~`>G)_c#2ks2Xe zd1LaJM|q6vxzk8WT{M?fS~D&ZB4XYP|QFzZ4An zVNx|J=tMxiz6nduMi3Z5#}U8jFAW5N;HIK%jqUuCfqC)Q+mbIHK)80l(4mxinCq(k z!d72oLZ~gNlyX;=E-7oyu~t?l#vl#HZzH#q(y7^dt-8rmX^mIAbQq7dX{Fw|w;{V8 zh3O-Y9f9ymM0`z0;Lqp%vNi*ZHFZZq@fM0Le43Edn(<6+Ch*(`=C#IH@Uo|)wH6!Y z@-K;{QEx4tk<$R5@-hysX>FuvSj)S(ftvvgbP#n-a7xJ=fl8RK6|dG7NNe!vz%m0i zd^Ut<)^)u>H*!YMifU^uHePd@Ew3?B!I_jI)l#cpOY6>}-Q&;vU&RCeatn1?h5jq6 zMa7T&ufRX6|1ci-(Y?P@`G+y~KZzl~pOQc^o-pQQxe_GpF$7BS+FU z38%_=2BEe1>gK#9#%VVbB=j63v`iQyt1cxpa5xY!r-=$%9{Jp~%b~Ef6M#Txgeq`| zQ&;hL`xYw@kFANS()SJ%LvY7@Bk3XtoQ(*bTSfF+Ups4d?w`#txj4vUtM|&WCMw4z zUz?fN`+1)EATuV=@UNvl9=V>J(^g7^OkR5D^RxM|?HxieNo=hvdv_S>x-n;t$N@3r zKpWui-+zUP9GX)7^Yho%++?`t%T5NSCb|K-Lh}gc^~xV+q50#HPj`Z7ZS6}|DMB=d zIM+TtBL%rmALDIThXh0VBd<_vKG{dBqaWuP&vRF)6*u}IeD5PL^->BC$SvFQuK)&w z&;Hlz^Eh%mOc@(UwclE?80B5u0`hf{{5dzEm+lRIJi1e=B#0CS|ggo-s6O@-al(6 z@S06^PM_DBGv`)If`V2gzY|E=03XLGj9Uv6B}`~4t+k^crBsmCdTZItujPKod33yj z1HPqXS3I@}N}i-YwBEyz=4&T#Srwda>ZOS4M#;5w#D$iJ;EPxge$aI1G2$pbDWyWt zI)*WRUz_D3XGW`DsvBk%&>h3Q$S25JYfd4g{dhd`wJirW zV~7N!HOMSIjyRV0kiTA^SG1jLtvStgQDE)VT9gE&5-O&taHj5fyK_8vm; z_ium4Z;bHlUvouO!2~{KkT8GEDUT^}a_OChu>u15$6;jU`mk1!Y|3>y`5ITwuSr3( z)@=RjLjdo0{w(Ama?bnsY37=cmvZ_;=y}E!Dr=EB*GfphnUj0d=|V!QtO++wrBtbR z^I?XQilIlV-g7>6B%P&}*2F+B`(T{$BBDG|{)-i4{^Y$b>JI+w(&^$nh( z;s9^^92)CbwALbY+l0{YU(NA7=*PBfEIFGzKd(t88zMIeIr)EB%V6Y=h+fj1xdk!7>iw8D&5an7La}ljXZcEi zLhkJea83bRdOyzdgLL9}75Nxq(js%!QmJtqr0c$P0W`AUtazZ&M14++t}hX|?c6ni z6LejJh6rnIRK{>>5I{4!LGT#0IypMs1R{ihldtO%;Vr$&+qytdg&PK%H_vK{!auwl z!ZpSvYb9u0sjn45NUn=fq9`7&H6vtWF7?(#FdH$~v+d~7gtzI|THm>~+B|X*&OCOW z>FDFoX(lL0i4C$StQ?cO;yoge@RCxd#@a~*H+r^4ZOY7A5=el@@z9kxLwvt=RzhVA zx~Uw;k!b;P?mFjzC*u4p~W5YghmmQqUZ8FcK`it^ArhJ>uO^#728S`xawTf}~x=YtL}n8!kp2ZO0A^} zCT8P)BkPD%z-8J-=EWy;#zrp)R=r?cl;1?eAw6%FYtAe!;OT*~6Y{rP^K=JvVHO;m z>kdM4k-)DR&UdwVR6{sMhIVT)2j<9xT>6erWr-)J$W)ixHe?KX=7rT-7OSOX;Oy2g zA%!1WQuL=7f6AL`t~KxaT5C>B5?!iD@R^CC^roh{y{Cc@^V^N#+IrjCf@|&FW0SVr z9XfceBn&q&4Ati(`m3YUEF8-+y5Q7k@zveX#)t#w%!p_$Mjzd{LfHx0*xc4yGXapMTE&By$yCrtB8R+|Ce*aKbpaJH~vof_cHi*RQNxu>F?#R@-L(C-*iyBut6eI?AEewZqSfm5_zTk^2|{d~PXJwBf~%f6Yk7CmvpM;#O7n8+U=xyJ%W0uG}7cziq0 z?CPl@gWz*rx-UM519_L(ltNZVdmJ%}qXgLN^+cuVy4<+jTeWfn&+~)yyM$9p1xM0a ze9IN3*4Fwjzx#ks^emCJj zqQ^ON%CMz;A@`oa=)w=q>-Fi}lYHj@Y*}jxp|xm{kT}l=q0{!btXjS<$v!?lu!T%0 zOj2Z8;Z|zy9l=}Ut_=3IcgVdPhF^PZ$SY~?E(>r=Kh6`|oc*m$LY%3lwQQ1G3_ITM z>)^P@x3zGNlPLyp95)r63nm^Zv)0sEbBP?Hbzf_ZO4NH^&iO6}MdFK0M90Nw~S_>^#V}diFM^yA#YtG!q#L1d!jsTpS%=5q@-aXIzN@Lx~ zn=11UOq9ow8_Mf?x0bo$E;*ct)?&g2*S3GHeB;niO3(g)V5l$d$Ls6nz*hhMn0)KI z_eZA9e&fKWynrTp3(AlOls#%vp(=;m2cQHucxc2`xyQ3 z$S8uanp4La6yH1|M$n@|95sevKE}Yuxru2fmO_v@6Y`vTVHx?a*VAM>SDq*rZf;?T2hQ?g}@MC|L8TdUrWGk>(u5nF&ICuk1)V$$Y(DqC|{^R4%oLx}O1=6M#S6dj9vaTqn#4M#E-kXeyl)+21b*54Yo!}0t@m^jw5`=ulDPK}ld9k{ z8!-nNgMV_GdE^EWTCcSpM>N#$aMqe@538H)*5rL8na2`5c#e@byC@~G6mG<)8Fk?1 zC_3XQ<1_YAqk7x3>)Io_wKzf35xJ?imbhID4@PCEmi=8T(r45$Kpcg`>VDQ{g6FLv zwU5LhKXeR@hx2^&)*;NvZE+)ReTN5~k*~Gp9NzeP|M`5r-|xF~d5J}`_Vdi;jryE< z&*DZj&TVssuz4OxARIdtTx#i^=Z%Y4G~#U0XtpslOf`2BOuOuPZke_(P-Bd45QxPy;#+4&T#9Yb`j}^`Z~0 zJeI=J#J0!Yar3VKyoMQud#*8Ph{?FF1i*PdO0B8aj0l40Q;L4c!T`59MW$Pv-de-$ zhLlpqm`YY$U*=TpkZVmv0aL3-879wT-Wn#yd48PdLk5IN&+E#BxfY)5x0Fsn>k&?= z>E*T)Zh%+j_Iy34lyp{W&gfYkJr8kwipCsL&lN9~C~PKa$DRR9Xz*Jz^(h>P^GRXd zl@v`zrpl4N$O?#P_^rk2$Kzf^fp?H2_A}qoGC zXz}0?e-PQ@d49bPZlHPT`TXP-$QzT~AV}iUjFI?WWLN>8KV9M0^`1pn2T5G-cT_om@<2cW+K*gaYW$Gq{Hd`@@$X}fc zC$GbCX-d7A*g1-;^E3ia5SEe-#jN*mD}`e{HIE{5KSl>=b&pDrTY2i}YYLZQbfkmI zW;G{?IAd@e$9eSFUJ~t?pG{h{EFOaf?6Eb9$?ax~cCF}Gx8`bXr;*WJkHgBDx+;lta?bOy zfu+(klX>Ja)8oxhy|v6LDwxP3X--VchX$sKo~2%u=A2q#qQ$oNd+{T#BJSp?Ro- zlbFA)5&u5!f85kRPWkWC?Dw$#W%0L` z753pcqh|x=bkE6eJ}T9c9H>1Wj}J>vXqK2iSYCS}4)R;m7~`7LiO;7!l@kg}QV{3e z%C&dJYh|hWeCFDKIIMP4q(go@>>+KI1~o=@4iODU9wUnt%w;rnQb-MhIb7 zoGXQorsK#8xcBTEHOXk#%3Aq)XD_|hdOV!F*=L62*dHh!Bd3{~?9<=_j%}Sf!@4hLzb*^94Fc}r;@B2 z(v#vbk9XE8^Rq_`N7B`L_GTbEXFvIR5(C$DjX_~YY4tpFHurkwYhm0-OHy!vNq-qz{!@AHj}R`x zqsD4A9i*um<0V}NjII27ecH6wQn8Y69D*2v+mWLUj>@j@^~!lV1o(5>9NP8egas?e zbkMZ*ziO!xV?9!))*J*t!ynppUA5xrP9m29E{=y#7ANy}| zIzp+nZHYNMh`0_%Mx7bFOsp#>~y%*!s8T=>N^+)?D+vr8#Hy;IjProWY4j z%$L#XWmc-J5x>!S&M`*bYwV4baiRXm|KdiqSm*IZLv;%ZE7<(f*t?Lgov^xpx7J&` zy`9qNZmqAic;-g-_I$s^l}T?JSDSFQO>$i^=QzF&B>`hmbqr*35)Zcnser3#@H~J%7TADlrpZK<_+FE8~ORmgPz^d6#NHQOif19IHeoHH<^q%?l7Ck2u;>P1RPP%2hlv>jl*y@h`&PvDK z_@(fZH%qR%iKgLNb9v#OoR*nKog2{h?k%6A^Y`TfGBY{Kwc_e`mLdshJm2qEDTPX7 z(4=74yCXb3IL9RvS!$&LC7GfSYHjUySZ^~_OTv6k9(}894lu&UAfl%RvNlyF1eKeK zrZGqvcLL`IWr>p)R?td`RvQ84r10nGuegyS-=bl*7B7j7QtGjnVVJK45oriZ5)1OH zHHX5F^ZYoD6Ybh*492dWCNE-L@Gr;&A-j^^SgKPD6LiS&;Xt_*PsT!ohNLDEsNuQ9 zik4>2Sd4VUCRv^!&~glVj_p!?8gHW7%#D|LgSIWn>qAs8B5+W))@y|;uRE!2oh(Py#z4#$UHG1_-T)lZgi?>#|V&#o9H;49H+EOk&cg~l0 zd(Zp^KId&I_r|5qsQL+rRLQ_nZq9yJKps%8-7hT)q?b1)KIsKbt!emjrs{EIGE}PL z(vrI3JRi8-_`kv1)-Y!JfpceQHv&PsQcx_&Sa)|}H1d^(K%I&1BV199qePMq&dVrvz$$GIkYb$QPDd_LcA z^Vl3S{Z(twTJu_e94B#Rl`8d??$f5Jlsc}wGEy0t09)&l$F@_gBzO@QA5qoYSj0l^f!5pqbRjCITUD)R0@vkknzw+cwPfBNMts zFSK%NjP-lgT57FY>94$NDnIjoH4pr}h5FCj;|Auxng1l6|4rWi1Mp80^Un?ucTI+A?@9Yp-Yp>T+o- z1vWGj3wm@_{p0Jf@_rEvz3T6Mc6rze*bwy?^&47iE&Bh^#3S<8 zWw*w?i3bqmWP!{7x^nD8PvxEUKI z*@8YkT%I{W)@rMkecdm={BkQy1cowAu6#)F;)mAav|3BwPA;W>e*Q`UyPEeq5j(bH zzwbZsx6+#sc_yEF9>Za%9ddj-hEs{`098idl}gX&bIq^N;)nBek!efc$GW#qrD3)Y zD@)0S5DB@QR*D^DM?2@B_89m6w)E!Q-_0V}W?Q0swyCuu;7J*OTVqQyC?%sD| z{#-lk$%M^JTyUZTXm7wb4VauXOU}JW3Jt3@YdMpkop^*;B3DrVRQfh z5CBO;K~w~+wPNzl3HAF*=i)qYtI?Nd5?A;`yRH{ctd)qp#{N!KscomZ^vfDU*rXS> zFVnRCCFwP1e{mqKHh7M$BptA=)n(h0{_=4MyqvA$4c@ykmCHYsF$hXv;Gj-Vo)d2!H57>Ch0x*e-U#9Gw1!jwj>rQ>wWsHPr9F;v$4dYBv$5H0HS|?AgjbJ+mc92 zvb}dfC}bcIUkC({YXz#Ps=YAAfF3hw$LPK5mp159p^#)9DLNt|ZnJBRD<%9^5C}~n zpSd zPOJJ=0|3xy0YK(5l@=rw{Q3Mc6(f8x85WFzCpTGN*zhTyV!N!&Y61z5ynF$tWU zmN~G&rUzim%z?blw$g1-CW{pm40I76X2HJv9|)4Qxc&@9LW5*;2puDRPL0!r8Pf&Z<$nW)of?`H ze#xfQqE$YBWIAkOpKXi7-YWu&CoqCK-CPT*A#1V;D9xBC|0mrr&5IY&GO7PBw~D(q&<09L=b3IrvB*hajq0y<^^K-A>YbQVB6YwsO5;!H$oJ1pJ^ zNt;}~PlAPqg)SAK$S16$=7kC~RO?0@Jd9K`X02Vk&#xP}X2nHT#4CqG6M>Lq2$@jw z^)z5=jR06?^ez=^B_e6HAnW2BAp%tv{M2D+>DXsUdG!H zi1C~N%of(#hC zi(=H~caVar>QA>*r;4^!gd)~dc#!73Mv*XvjD)6jb|RPhR(KMYa?Ur7aXo@8;bj&K zfEch=HV$GzXpUnRWP=A}iCg0fXl;MU30ekKQ^IkMhA=eIW>xvV0B7zIu^xT3tr$X1rdB_K z)#Uq4WNW3E2=DvX>*d&wV;-twu$maF*gzEZP|;)=f)l6EKG*-A9(cZm`lqiud;V|M zf6TDIDe^<)KPLW}``7Wnhb!_o;eSZY-;@aQ9}@a6!TfB*fA#>2`c(h($Vc{m9VtJp z^!L#5(-!=0qid=kt!}Z=el+JNFz6u?w$_fBS>RcdcL3ullM1pbwaSAv&-8k9KAp~x zW$L*R0vJy!XC69v3Oz94bwd<*q`7O#jMAk7 zP@#bsgSoWWXX^ZVyOG(hj_;xB^K?_TEXQ$<@35D&^)$^q%xViQITu25_7j@8pp+@Kp2Mm_rMhJjGPJ4KN=H*1Mg{H0B2BtM-`RSHYM(TYJU`A|w z@HS4Go|H7N=(=yf+Ngz@ni~wPOU}JOyVaA+0RP+L+lI`GwwR-W+-es7x`UU;_X)fG?%cX6hX~g3OUe(W`Hi zfD9IfYUKsnnb#PD)dRWjSA2p-GvRwD>*Qtz<>^EgBQT7vyJKxALePfSA*8m<97Aai zTKX%JGZWZdVGqmXCHaLI+(>4Y;9rJeFzEpO@c}dpGlhskMHiUfCEsT1fruTc*yt(^ zvyqQyQuB4Jh2D(Ua;A@|NaD>uz+}o8!f(M0AYcrMVu!k8$(pYgjvt4-23l~t?u0T2u3-9osz8@(o$HGie?X4Rq8~S#kpVmSRT%}-yF?9i0}T>S z7{C&giIKxE7p0Yv-@C3-VoF01N|AkShsGjvf*n`% z&UXq?!FhY$Hoh;#W~gfAoUC9peRsq3kR zu-Eh>P%cZB-(bmPFFQa4W1J)yLt7#^)0i8MGR#Ib7?>x3Z;_S}0MHj~K+bXOoF}wM zV=gRHt%#CvCTk{2Y{%3&DRtrMz0FbWBjmt{IPg@%kI9}QNZKTmXCNRZT~q7FPTr7x zEmvn6_^FhWpFM&YW}%ABh>F0C#8P98GLbnbohc3l0PG){%eHBI!u?*!r*dbUfp@K|()XHOl9(dLelvK>)3~Y^bvk{1y ziAKEAZ(m+o0^rfv1uUzcIx=;^a60h~3$em=+s+t|(#$~xpu$C4D`YFS34X0+rs4q> zM#n%bli-xgrhIfaQ{=m`b`^Wf4AW_+6UM$@k7=rzn~Fq*6VgahF!$aDw(J*NzIOi43rb}h0 zSR)C6j0%6B=QE>YWbZ7cp^hq2w^Hi1ov8?Hjc*4LjKOp`Lgm;obdoS?W~H#NF}$8m z-0^czGz8+w-Z^G5V_dI%u@ZX);V{CoDvaC4lCiB6r4g8|#aei1kU$F!s{r7xCT5v( z#AU{@CiBdeHxvo5l(Iz>O3Z?bU;$a@qaYIpor8_fH`Gq7qN_K3xr2w&3_o++X-@%z zq(YuU9_XDRW`qLfu8_`@L!iuDYlkaJXzf-!FAL%2FgJ5eGooNjt$2X%EHfg{7=Z_? zwSV2^J(~rM?cj-BPbO{JIXcUMrAU?^AkG|BXDp{p-L`YBTdl}J8jfW=_!)z3C?Hid z{ehrC>HGk*Z~*AcB(QOa-nsa;-Rh}Uj+7izLIgrop_GDBz?4F(2P$YH3hEf`y_qv9 z{D3oAYg>4RCJjC;6n{J!(7Om`t0kY5FtX4bLCj9iQMd~h7y+o80!gZS$3=>_S~mz# z!RQ#EJCO`#;!A(rcMLIQT-rM;sC7XvlrY3BHw!T0x&F8Gz|$?%`_}$jI^g%4G<)r@ z>!+&!Ye^qsK2_>7-@ldzK3vnkhCk8PzZSGGpD6B`?O)0RYb|O2A*;Bj29sa?~-iM+J%I?5}JvL_Hjlc_Fp zfH5yK$KVm!PbXalfCmYtlx@t1Y1-2!?bs8+D+jMSdf_>p^dQcp`YcE*MV6=T)n4p} zZms4>-AxYI-O3u8v$#Arx!>@5fg+l;`S#vwd&XB-FVL_ zW{AJ7OOBB#KQn|J$R_VCqQ)T4qG|5?1yQiMUio_Ojk@ppb^gLDRY0F~;Y9*8tlFli zfSs35UU;s&JVp`B5TbG>ZlKKMZeS(l^}0#SA_w8D4eFKw%o@Mdx{@Zmq!9yyX+m&1 zDO+?~@z9#qN>+k5u~v&R#S&#wfdrKHt`}n%-DyyghyJakM0gHf-jE;{EgKMfI=`TW zbWM$L!I*L@^_W**5V$MTl!=7uh6JKFgS!V%1C7Z#jwCp76t8e{sk@gbrnjMPDt!O| z5CBO;K~zf8-+IR$qwyLz1}Q?3q0yam%(;(&QfzptwQk`nwD53&jCrlm$z{k%OImZ| zqHBzS|7FAI=lQ=4fMtx1SjaG#q1Ke)ayM3I3?^#svJkS~Ss=$z*XxD#LLgTWm&-#F zzEI5cYx@zb9$6u_LqZ0-nHBt`m>S(8E?X+$aNFYKO2Z` z;1MOZfhVXVbHHn6@YcF9<;+}UAPa6EBpOJs=#qd7={D1R;EzLd%v8!Cv^BW7ipg)xO3d$f515f`eI`E0?-j=XdDPp@(tD zu@fgqaLs}Pxi7|Aw@v?}wSiSkkkODE*@K!Xs_EjQZR3QDh(dK2`_!T!G}F;Ucc4al zwwM_-ISt9=qf^}dbUM}Px?1bD>3l$%X^V&k1I8e(Sbaro%z^mWkK7@f+IZccVoSESTkOGI#rf@jnWM`35?kl4&YLH-z>LK{&G zp+=&alYBrBp}z1YjLjB26UUgKKNP_^1~x!L zjnGksuNpsVxl3WfW86H9HKuErpzu8K#E4aH9!x_gWI>2U)D%vUu$)87RdM< zqvyZ?RZ+Ou%~q?pWprsz3G@g#p=)Qw%a?!P!H-e*sFk(QQ_-XCf_iNL)#u$Td6A@Jv-k!|t<~O9(ZG$URq|01@(Akz}nhU0^du4x`KpA*HZ_bKh7psZ6$NNlR!VG__2Q z8_dvGIhfw1VhJ%ElFWteKPXTlmKHgTU}vUejv-#30SN}KQjm;ooZ>uha~o|~Qs+Z8 zqh{D|nTQ;;y`x>ubOpjA5BT4M#%7yeL@ z$Cwn>9>*?$j%rzD&*k621HXlh>lW(&^MC$d&$m#&mV4P$e_cOG_+N`zm`@V+%=BN% z11l2#y8XmS{hg;6F+{pgv%v+754 z{t^bBN=5ea<$uiQ&fdFz#~f5doX`3P_juN%OLfCnIQHs5DYD8+!7uOGlv0b}Xa?-Zmi-GI-BPy;6d|snh=rXva3* zV~zt=+-WJV%8X#_y`4_d6&@&qY@}YF0MNegx&_=ek{XH`SV|#}EC=@9nP~*(*Ik!M zwjWwza|g9;T!-kj3LAQFKrkN4x*8l{nEOd-9lcL(8^-&hWT?ueWppL?(HOJj7+o*n z*?VVcN+@lCOs3Eple#jVIgVr9Hz;Dc#LCR3WEmN1;oYsz?jUYMX6DeP2qt@wMnCti zh>CE;cFZ=t-5~_0(gi@i2St&&v_nZ9%3s9j!`$4x)Dlqu#^}l9GsnQ}Mw?Py!#O%K z3ayn=-PyU!;zEA5)~y!3t|N(|*4F!Qlu{5#eepseji}bzvI-=l*oIfl^iEzMUys?s zXlzaY${DVx2(KgyZkfB;)xV&^LPN7{x*=dX2s9^(@Kd59RPf=k?<}$8N1#wi771xYib?R`06m>Dy5`Ppl&jIlj4(S`pF%o5_xJuVryYYtfS zPQGY@J=F)okb@nN&DQa>h6eXW+?w|>R0C6$l)+kaEgrN1BNdM^8UY1Jrf^d+a-fKf z2KgA;earY#0${q4Ew2fdd0~)aM696|W*qgHhjz@iQaIcDB0wpUX%W&plNEuPg1=U7 zFZjwpn2=4kgD|NU-RUM!nd$&qBM*YLveV2^Zl-SM94nd#(lRy597|#Dju{aeGP6>O z96ko?5y36S~GAqH3+%AOKv#-8B)~-nA~LAMSfl zn7yx7Lj*Hi`>qo#f>Z01+Rb)8zkuD$XamcfycmbSqlGTp$7Vqkm{M_6M-H_VEjnBP z8Y=QCUcwS86B#30JMalgAw$|6ZN2MDGgG#0+g2;b9ZRNw8H4F!;lYYPpR<$_MWv#M z)5A4y4Ga~s?fOT?Buh?XlOmiItXS=iOunN@x;X^sMJ6tS4|%|}SdM2v)>sNQB|rHb#yyQhrny^9Y6|6A7t7JRfnBrUgaO#E&uL#@=~i@l`N* zRfhUJ+W|zU_$d)nikwW+mhfPY&>HIIG;seK0jKdBy$ zZB#}gq>ly4M5-*#)J?E^JR;axI*rF5q_2FrLNr}jxEA_>KUdvS^uhXTcE zfkJUBMT!@9m*6hJ-KBVNiWQ2sxVshiFYohwzx=n^oy^Y8W}Z9eo_mg+kR>u7NtILm2&s`;C=sAuXD9Y=`Up>s+AiWWLp|9%00Wh0dqJc+`fkH9NXF_eO$U=&yE}?`9wIz;at!}Hcx1y2 zgQb}cm2=~o&^c@Ufc|k%ihDb_irr#I(ISzxL7pd@FytSf{FAfeP3Bq)t;Z-J zR=0sr6#BK}C72y}ue9Tk!uOpyVF!j1Euz$3OJQUrir4A)#zp9YsmQSc(9x2?IQ5l(?hwr4{*qpjXoNAS}_)`Zyq*JW2d zX0|>2DQ?Cx^tr^Ry@49recz|Oz}Gyc*!pqG-`D*0V}8?Pkkebe3&W8+E5c`U@Y8#y ze``cOcf{ERUaes{+Ye(T4-I!Kwii=7EpL3yr7v&76tb9VQB&OJI#trWI|GN9Qa zkV@^YRZu*pqF%O$H9QD_bPfhnc_EiG)f@*Tx)CxtgOaJDcr1-d0pIZffB@%Dk8Xs+ z#HgBtVQASNlei8a$m5))+djLT@nTrtX>NNUMHx~ADL&VaC_T=t;U99Q_h@+fY0tCE<-HX(L- z&+?@>toY^00PNNGTNX3@ovaTw^33mhUy->fjp91~V>DM}Q@c`G_e-H>==*kQeP=7g z$_q@+(^wTlNOWE<3Ry{5tZ%6N+0M~1 zJ_WZ6?tdY5fc_5)5S)d+$uX2W6?c*|sPqU8zqRj%WAXYChMA5tG5GGu$&5P+?`8Wz zphtX6=0!@~8%C3y`q;|tPdo1vimt{P5`03*I40~f=G(k%#(nR2$vfz}M_~{*)YO80 z*^P>uVy8LT55Nqlgg8h0f@@oS_jcI2#pse9PfPh~VI&#T_v&-;8E4!ckkKIPUo2nu z8!Dv|MqZy;dpZpTm${5pq_n=5V0HL4&U#q7>i@LrlGu*fYHfx^ zR2>v5_rKyaaDi>YvUZ?e>&DEJ%jwJ4Se3IeNME^nN4qFkJPaq9Bt5g;YSGPLLlT>a zR&SGH@HmyEb(#02X;AzS0ma~q0mhu-gBy|ML~NW4suY;DaG*idGQ5Xf0@HCdI!pt{ zQKpDS{a?TG$msqNQ=I%VBv~=G4gz?t)QC zzDHd87P7*iVTv>}x~C{P+k&QFIVEjgP)oJjqVWb@}rZiavxQ$?LTQ^2D3$%?&Za;{@x^ zUgBLw0cn{LUnz(PDA$#<)Q@YJ4BTA*Sc3|MLWr1~r9FE#B|nfC+AUxkD4^nxPD{(i z)l__m24RU)r;MQTfm%I9=7&=bw4ax8%`6U6z7b?n{reQ}QLpPo-?W$vP%c`7X<+FY z+-g0BM?oDxJd_^=Z7pS*o7z5E_1jdM-Bk!4onfg-TEF;c7H(Z^vxZPpVu=!Fxku_S zVzTp@HrV~$8m^Pg?Sq+Er0&eoV&>joDaE+rI0y(f#ebDIAh@5uH!0Q=`?L5~IFI zdDQsD)tSMB25?e)G3?*^N>6IP!mZ~sFo(rlnJb`!OW6N+8q-THnM-RwkqneT`>gkKRW8*pkDJ!a7vdG9nWNbeuoX$<JvPb#7IT09yohSNO-(H{!;#s8S29cWd^UCF=q-oIIq|-dWq3*32$V#7a<&{Rx z9vNm)E6cegkLIoQ~$trqkI@5E0P556PDdEMjhZ)3(54F+Oj*g z3)#v-d7WQx;@2tS5qgGj4ly!xAs=vz6l9)Pcj=LkHXpMdBPi$R>2+7V9W17$LI(zw zYV*pX^OTr^C@6XG|4~SnL1Z8HoQqy05jlo6DW5cNkdaLDJd*kwNAZ-@PzM%TF4dx) zq4IDws7Zz^8l@8OsGHe(6;tC^#1?ul5zPufG2bUf?FKTS4boZY$D{Zb_p%+4_zuo{^VW9Wh zw&>sf;$Y|u7=`~KL`UK6oNxmL;*tuG0LFnERhDq9&=9EJW?KZvbDt;^kya7kv=*P1 zj0FjlCqIlHZmBt2#eo`#X?BySTh$i3bvoDh7fyBwMuseNzy7ks_3Eb%127(DdU~8| zFm*4SKj2)HIVIvV`$+pmF?>S%8{3wvI9=$MqP-t%Ce5}>ig_g(ij%)Bhb{Ot24SJl z5L_Yf05b+M?007iuHH*I&1=0DXzlz22^h#8smCn(FZL*U<*k zlf+pyt{CM0C!%Y7QT#g&HP6$5@=l80Klr8U>1*@P&Z=Kk5j}64pE0OzNM;W|5}ZxN z-2HzH;yiYqKjTfiurie|s63#;^toyNitPDl9H&w{JcL1mPPD&!fo5*j1YSb zPxi|mJN|?q4!+|Fwk}o21WtFiK@!B9Q)k+>a@lUtz9OEUJM`Ak%|f(vZefRQtLQoG zj(ExN7g*g*NMnL;yN}V6qn~_$D9fCw?0g6U`__2L0G=9}Nh);&9R&(kNel#gp-8aM zmJZ;)u*p&D7g{j_dh>PVwbzA;9F28sV8vJ~-P#BIf-J3BbF)w~lljRW=bk{jpwAJA z+__Qw$6pO$!drI`bJEpsEL^Pvt6Nv0VPaVgpYLnC+`F|uoKWV#q!T0k;-YZ=5q2af z&Qd#GF2@Ao(g&ScFbF9}<0XP6TyS%qH_2KhG$c*R+CaSmAb|Du6g>}($B6KrA@Qd6 zY1GQ7yQWzFmg9Fn!Ivn74Xf!q;nbXYO_K{vEZ<^Bu@XIGzM-fKsVy6{OeRjjFtU^9 zhjg2wN5V7Cj^+B}-=Xf7^D(SYa<(=sC})w8bZ7@avZSIKmS6F*LQ%nPm|SzL%mTRu zJux^#HE*2&PThaf-9K$qq*hOqTK`piQLyZJh9Fjnkbx)FuM&KzOj?>G_y5cCaw73M z>oJ&Qm}m8Om;_B<2X&Cu$#1Ko7cQ_6mAp96+#5WGCxR2Z8syZ*6)lhxMrxze5A>?6 zPS&Lp{@s|E=vTQAfb_=Y9T1!*iQLF8nd#Wvakzvno#C?u8(SoIR4ZskE)^&I7Odf& z9R#E{S&OI+`zvU@#?QPIX&0s~v%9CEB2>SLZ5k?6hLD5>H?!GstKO<{9jo9%iM|Qo zPV3o6mscdT51289s!eUZvH)5I$I8T7I67jO}o@d%N^2iKq zrjk`}PNon#IcdM;PYPy}FAE!6Y!CB(W2HUc2Gep(VLEG{{U^4xb{xa1p$uMx=-m7; z@>bGlEc!%^TZ!I)Gmf5AtrM9F6{1!`m5c~6SFxM4?~sPf&9AL}_!D&Ye`e)-ztV3s z{KrJhO07>cx<2DTNad-?>6`Ehv2&dAg86`p(8HUngG&zz zdghkHwV3GD>9<|Ha>t4?tX4oHNk*zLoo`CX@7cKkUU{3a=$C8RkWr1tZpzi&Z(8o5se#BAsz(bV_ zCDQ(@=?s-6+@H@bkMs-nUoemy-zTVz3JCxHH2@=g42+6#J~7m1Z8=BVz-P)#?D=tD z_pk=y@#!QTMIVm)3et5V!bJoQh=;C5=Oo0~^&$TZ;QW#z^mDE5>#FZ?_-sT8R!hLC zw6JC`kq(+5$1DmAm5x2if=KVq2W{y4IuuCy5JI}st9w!6Qr@UT3kbF)d2nbEHLIf} zCILlF5*|BdYZftQhSrljDAAZHpbJ#+$-eIO^3SD}nq2S<#C*f6K7DV@D8ndUi^m*= zu>XM$4a-}2)9O6M`0-+SPyq*}`MZe(D4tZbb%5PsyMAKhS~qLc%d$|Kge=*!+HeuUJ$kno!01t_Ib}v5aZ-dZZ$7S{n0PEt>w;?lp>IIJ zr((>-l#fE#FAb(=-SJw|qA7w#%MeCkvY`W`wtDCy0DdXMTvGy8q90nhkzbtN-?LkM zz*$MPIbmxzLc0gyIXA}gd!teejEHF;uVd)%3OQ1au-M5pb zN=q$+hJ!)QQIAjwkgi_?Lc$7f`iy zJ|dXAb$L=4I$4@d==EkKcSGdZsDTGtM$xe8MB1NBPuEf~Vmdq_3k$eX{Q0!<45K>` zh^#Gm;ff_eOHJ;_8T|W=@t@4Z?`ZGSFJA-|V3nCfml;}I{f(gA(HenG_U=P1wuwD;v`NO#rT zV1fi13u&^5fxpHLp=~fG#LpI%Z-Bt}JJiP-c3nur#<-}2&{C62OSGJ_0LWcOIL?@p z_Z5KZ=Dt}C^dwkmca{HzTHU8l@tQ8x7hi+@ZtL=zYj;I)(3f!Tam?DQPwIjHS)S`{ z!jq=xX@f;h)#HCb#;~sw`rFE``hGy zSiscfAui8FSqMc3mokso-)t3+YYE57q&Z?V4agRDYVt6F3E4@fq0*%1p*1<8mqUnV zcf>0{1}ls^7KiBEeW)lPB%af(0i^CvsDi7!)k2{-AJ?u2D=F8me&HYqQEp)V7V9+x z?hke7#^u)68nTK5jYN{Ywl0mb%UGTm-yuWPOwqnrD*zdVOEl1*TW>c^P}~`cSg9|5 zPv7BJ{TPD4k`ZZdfEkChCG{LMd#T8wxxyCYic(Wl3u`dkYM)-t z?RY3!)R|qkr_`jURAupqvK$iMw%4T}aitummEL&FH$t{c2&iS@(|d zvm#W?`G;raD-IH}_sNSYOqx(lqphCrV+4flo&zKii_WFtB2LcgMJ!j zhSg!E|1uPVUfMwRbtp2q<6jtR6xSVz4~IuS#Cb4eC%7cz%TW-*4T~(~FRIA2^mb#V zKUUVDPBpn^s@&)_lPwG!qPU(OV~E7lDd;+47WEA`v7qo?;`}AY{wCeVd#+(+%Xx=u zcM^Xs_fNj{%9IO-NTI{pQZmrNqPr;ahcQ8LX6mO`kOkKsdo>MeYO@=2kKMhS)aNx@0D*cvo!^`Bgsk#jNk;i18E1;gJ-?QI}cH=Zao&5p4hrzMpQ zuOqpBLnE^<_lv!|@?Z-6e&}OW!NT|KlEU5iJ?9=-Vb%k=;ddi?IL+;MWhOJJlTCYV z7`!l@0MvvIhg>c4&}4k;!qu0UkhMaqfH^iMvv8WqU%}DqPRfCwM3}=OCKAJSHs{`V znxxM&m(z?<1lpX0F8AZsxn*Gwj(=9svb3;CR~mgULuTe*<(M)MT<#-AVZB;9!L?px zEfs>AMs6422gg#8Eu?F6CKJDBX z+GIBu3E=XfrNsm%YYV_>1B?RMXmM0>3-cmRkjumNTaLy(MiCU~O=#sbHi?4zJ~Q_G zkX61Gc4t1Jx|gYg=;zT#FCT2kMXEpNcK;z#Z=qg;2QaD?VRrbtOj4*uSeH_?C@l|n zWUO-5#UqlN_d2V_?BvwBwjQ5HNR;gp$PY>^OG9efU`ZDNVQuI?70`5IQoH6BzNp;G zW^63(3lMfr3P|Dmqx`KgWbCgv7j1Mh1e!n!bw=9pjT8AxPgAlQ{EG%Y(s+TC^M=!$ zmHc(uekyb1(V`UWaUCXRMp_Llujtwp4KVxUZ#xr9>jXf`7q+{k%|pI+vNxO{7T5_D zl3(q~0_ww^nf#f}deqr4eY*RFh?&A_thG;?_v8`Uf?2($64yX+i*8zwpLpKaOBr;( z_!2a$dL#VHICei?d5f#%+b9_I#49LudTrOdOv$G+L=;6q+FwMbM)Q$!4PkR5O2?vr z7*`*i=Lu@@Sk>aVa$0riA~Bq7PzpfBJ7DF_r94GW^o8mTqzpZLEj6ld>Ppgdg}{pE{Q+N5cn)qa0{ZeM00Me`F55Wv5kj1ao2i!r+{6T0T6GXA*qXw>j#~c4uN=AJ{{Chtv)Vt>Q zolWs&niY#|vCRn%Ajr?S4&{b>l7=L`Oe2-VfnY|O3A?P6@SicusNcCJVL(tgNRe^n z8yF!SY+lC~953W39MO{h4b-q920QGPlUdW*4~|579}qSSaiep+5+cAG;Q@o&7B6K7 z=Gfww8k1^pz?@$yGf^{P(M0eiO#7lv4G0h2(^(LxTpKfNZ()!iPDfP}Kd8Du5<8dcqaUvXgnn z;_dcHpUhC2k|UZ*N^jh$evX*mf6&G}2lWT9eXN0^)D`T=JGWQ^sjs3<{HsidnK@<)rg9^durS*98Xy+YrMt}t%&yO&4uq7 z5JU9?3O3DmxnlH?Y)t2DZ$c@u)a3NiP>&xarct-Qvi96q>C9%FkXIpun#?5#1{0O&?b>QmoDaGXG%5s9?3DpOs#8TG}z zNk>A;Pdx!fbcokbXneRC68-OTn#&+M?4Y(=Jl@5_7n<(J^@HdP$-n>-8KnmdTmaau zSGUFPo1uTZSxyTL!XPN5z3q23qNE6y?y5pP#JvY|fL;y`l#}hddw-6Lp_Y<2t3WG4 zbY<|YPvlq@;T+xhxhj5du5~iF{2I>>NycgZ%z7aZ@ZjC020@WCI^nrrlVq#2wdC5B zvSzs(gzU-z_LrT}T{ep*aG z=|Vf6WKS7B{z-M)6N?hPpCn3mFzHY#dQYHR*YdkElqsTGFxr;&aV}>u!$41`?Qjw= zdc#CNY7HP$#WER{CPDDi=lAa}?{*RAox{KBR?P$Mzsa%)aN%yQa{kywmi-u|;^upA zmvYmPJo5!Arcdk%-vl_*(NnLZ8?lO`;WIil==Kmwo^p975``9IkcreffBjT>8RE|t zpnMUjQ8PBM>Y``=M6e1(;}L-o4qL4Xayd79l)3cI*u(%vDaqN{gWD0cCuHkQ#2^|X z6nn0|?IC5p-x?`nGG8lQ76^3W&i`#u)6SxF8%!+!jp3z{L}%t|79dd4t2D*`tr+IM zFt5lE&>(fO>;wu?i-s+4DT8b(FM%mlrk^&Z*Y9j!ur+D6L_mHmutT;!&PsgHeizG6Ic?+5=tsHqb}1yQbxD94zGMuB8W;ko41+w6n> z5~%nX1L8~pKm?ZwYHG|DYUrVJcRndL+7%s)Mt)tVG?1)LnS4C+>-&%G3F0fh&qv^b zQLiY0fl~xF%)YTM|8`(9-Zo?X+}UR>q}hcMJy@ho!jMlnLJjITf#()PO93LS>n!E* z7$mZLN~AOWyddWnSJUR56o{OFRHkaPV;sGD_F#Keff&}N%c@hIJXplg@+%To_J#&U z7XDB>GDX6VEPDL((p=o=CZM8#QHq*gw7L)RR#6!JQTn3WFBDHY8V8t%xWj(i94wki z6uyk2JDcc5y;omhw-U-Rl={;K$`5XCM4d?!nwZ^E_0yQ&77g9KpNkS3Pql(X&>Yg` ztrmtkG&^QQUJ;^M;9-2xvSgHNbqaS$zfgp)d-1XbkDv}l69%I|uMh!Zhxt_j+`9}f z9uYD@yIJbYx+p&uZRyXvWHEmZn)#0*=)Qj_NDli1b~XsttsFiBGKot6!#|#}9K|nP zzY4Ws`tZT2)FodksxeI{q=`x@?j5>+RuDnHsa5NP5tXW1O%P)+fxbFHy{*R~B%h96 zvpcpHFhPy!8Kl5gLlYq!KN7CTro^r^fn_?%_IY~J{O%a9@Kr2l$qdfycM~*c6mWwE zu_>O51I?mJMyXcDc+{9f z8~mZgJj_E=?N4PfG=u9u&qT>avDM?bplTqCET>p z(%1GEyv9JFiv}#}G^+BN;9H*l^4+0bJ0S)G)wi2TDI~c;b<3n2LKfOw&6G%*D;B6;ldPW()0X#41%@D_T+tIKsK5nJT zR`YH?W=XR;UjD7+PrmFlgd%pqTp##1em*<R0ZSqv1A3%M&+AgzMhvd+b73(PzT{j1pZ5Rc+{vf4L*-igAB`8+s8UAh1p#G(|rCbcT-ikaE}wHc*Be1i%qV% zwoHo%7nNUDn#FKy6_burHOeC03GyyD+K6odf}5HSrH@ zvNmE{rzF2z2Y$(*Mj z#5pSo9U2ppawiO3_L%4uc9m1=rgBQjKWq{8H1b&OTHr{`@YXpZOTrf-eTba*@y;uJ zIBD$a?6eH;O2d3wrWIfF%ifH zn0(2HF+txyZgQ^&Yn458!1P=ZB?sElk!MJjKGbw~sjXQ711Zroq0fnr)b$QE(z$wc ze}1~>9{9%R=LUA@@VP&Fe0&rDbcl+!%j2Tm_qBUolX_B7QSEZd0a~xGuaOlLFM}uxqhjE` zt{4CmdKyatX7BdrY=HZJH~U{d51ku7Phby^*DLlu3i%&|CGFJ0I^B>{rAVDK3xiPv+e)1@y1k`Ucro zyswX+vb8-iG4rkrZqvP)KA0mPPD(&5;r;Q^{q;(q$;6uQpfky`uF!2`DndYl`}1*|+lr4;Dm;t9X0;Z^;>FfQ z_gRF%Sy!lS_yCYjMSy`u2lVb&$$4;oVUAZ3<3)wbxKj62_ScNPu1 z@YLhifiN$MU{8zvZe_Un%DcZ7HnuC(rZ5e@Y4lRq_iGT9s|?g@w1Rsn&Lf9uEgd*f7P-A-&lx0rKn zpIBxn4HR9>dB|=-93ekOv51mdU*strr43WLQMjX+YYNly$Vi?2-Umz|{DV zaMznG9sbOLN|Lq{Kc6THX~T(^b`-C`6Cwb&0maM~X|Jd~>4dCzkU*_z5~SDPk~HHB zecSOKp;25KBXGcvaW6K%v^o_90RC$#hq-*&lPoneVqiye7?Gs@rLCrNp24{@Q+VTy zW?w5L&mdgs5nJno9Zl(1J!aCUUzKQfMl1|WP7)GHaqRJ~%$l&5c-vkbxhO|k%<3M( zEDZ0-k~1S?*xiz?)pX8e@k3Z-hENeSEpmE@Z>tieA%x^I{*uJ!l}Q-_7SYwClr~#0 zt>$B~EHB}Q-T<}Og&cm*(ye~o>vcjLfDE+dI^=iQIu9@{JP7X`OdwOEI@!;hoG`-c z=77cpL@gZmH`h_`{+QiDF|(-SZK8s-Wf*lwdw-M1wNmY zFH)fo8*`>lhj+@*l*|q@;=BV#GBQt0Wvf`qsc*+T&MZpJVdwAt7|JBgGf{ARC9TJ0 z4FaHATd2eh%ra`|)sV7-w{jgALkK0xUptI7WG}q;HgPMeRmch6+8dTjxs6q{O`9%%2X+*3Y<1k4SFH&6Cg_e0 zCd99#VfswNDm8@7MbBNRaCzzRC)UR1uVPr9iUGN!d?L>w$?ILUBvKgHASSv}iNpH` zTTMC&#V zhcfK?k&Gzyb7%b+>OZzOB(-d|etvP>y9F*Qw-6gx|MC1ZC5@73VP}E*^#Hd^59UzI z+;QN}UdS2MmPFf(_>3b!-)?bJ=GWb`hk1(US=n41Fnb{j0+OU@xlv2EW$aPt?fOu# z5qYo(3lA7MryVsawv7eol>Pk5E*qy}z*V|8(wq9x!oU0j1>15k^E~*@oDh`DNh)&* z2{qbp>UPXtkxc7TRcksz`yFM^z1{jDXUX68kXW{7HxMt8aGaecATcfN!7VH5u1q1U>VE=jF%g zf9(5)i>SV@F%ZvF?DE&K`>*-8UjFeZy|HZdMWCwMoQLx~sXygtw-GQrM(_S~8vtsQ7O`U;93=^porbDMY?$&u%=c>E>w#E+Ho*#Xm4Uv~!?MJ@t z_|9?Od3T<((vIv-F^b^z8i3~HSR5083i?B)iI-^jcsuf1{CR3=i7bkf1Xt&DDND=u zs`%OeH+nuHKnVAIe`cpFmQ(65V=t)s>0!IPx-*D~NB17%m)Gs~*w_pV*%%`1oAVzJb(!d9kCj*PrNVKk^s&aVqC& z&@yN3GY2jBtB%x!R0=6MfN`9dQ3BA8;u|_T7j{Q+g&fikPX_CWnjgLo8_yW0cb8d* z=0w$o-pE_Ly}M+KlD$bW?EKE3g*>3_t1j*~`rIYQUhf(BN2_&6rspGac*n<)ue-dw z2P?X65}cRb?IEA;-to*%D$@g-kW8uw@FpkCM|Riy7K2=-GUU zNg^*pU{C+prrTRg<&6CHmX^GMr`uyoHnxIS8%tz{UROyb*oD<6#|@tiz0R1N;dgAA zxBE`8UA?s+?rKBdv)dhCsh;wWIo?mV)No)R&>s1&wcVo_eGu9~j@D3Fz1nc4BR%rR zq3`8>{aiJPHI{#PgmH;ZK9*Syu&rg|p;i5` ziFOW*>7FIWB(J`0S9j{%I}&-J%;K?AyydeJA10vZ?WIe{Zh0pFwDN3!30T z@$n55wdg2|f;s-OZGkWqUVwTN@B?Z75hEZKQ+ap2YcxFh4SY>NfXq8xNDhfIh!b?$ zwkrA)1F*g3h_~(&Yf-`*yqPFnr^_CO%;sJsj9^c;IXX3TY;;V%N}=9lOCph40SguN zLO2{5mGTewQ^R|I9=RSepZi3#gw& z5ePN_TliN!Mlk7mXb7=~a_hR&T{Md{5Z+KrNfT0c2nI<=pktBz(`>DQ;{xNW=af!1 z>k~VJ%9+>PS%dd%)WNh_GUj10nBPPzV#tj9bq|s%e_E!-_`Pj(W0m$rb;J#gx)nC= zZyj_$4d-S_K2BZ&T%vh{NpvcxvvKB;zpEVAk02`ERDPHJcUYsf{+=vXdU-u!QPXAl zCj&`JN>v5TNY2n@FxfQTDv}>o39_s+Pj)o{ zW|8_A;>`c@Yx*A+@E41dHkDKu+;z}#me0VRK@REg@IbGX;SF4^*2g}c#C^-EB2ofsoS8q@Cchhf-!zRhUtF zjR$dBHvMH97r%aAjc??AmBt$SL(aas^D~#s31qV~EbMsA&htD?z=3?~1WUgKnHDVCWq-hAH z#=T0!;*CbC9Z= z>f6JfvW~xCXx0}BLUe`gr0oh`Ac)5lD}+6%SJ*B7##%n2Qw$kgl1)5$#(S+_hzCUP zsJFyI&^@%Rn`98NoaI?_7;&os7 zw7H(W{dDwLvEp^k@6KhPSq)TQE;pM z$;$8F>~eZoolhgr)by7J)|;6ZBF^27Sbh)#l7juVdj_1^i3tsL`U^9Xe^hwN{j=5G zf$)Hr_m2zr_ny0@1RaHu2KHURPR!1oa~tT&q$e9E7xLH$AlrlN6EF~Y_{0$uRpt|U zdwreonL~R1T%}cw8JS_BPeZ~(T=T#Z9Vw;9?Sn4A_8k2Z)L2^Z%2{CWir3?Ztyh;8 zWGw4Dbuw2kXbN8HPf5N}kpS&huPk-R{zJlH#dmmC ztgXIm1qHzN{At;W|MIe?P%ur4bv~L_9&M7SLj0J0*&>}KHBz=?fc|^(GLSd3-*j5 zt{#`O-jNiDE*i8ouBs0e*<#OJ_vM5O+PH*R3mgm24!{wzwwt`;$)ho%=Q>HKNLny9D@Zw`UG z@l_)DrzJjR&U8b8%qzt3la$Gyc2*SU;KJW53~E|9KV<|r%6B40!(Y#1fL^cgQ-!gn zjxDMiC^FP$3zbYn?J>w)R&5y#o1XR;Y^B!xqczz3`-;(W93v$UO9=hjWsuoyB3v0o zVvl121fL#*XY#XH70A-Kfa+N9^fGB}K@NkRHl!xbV=*j0sxKn|>U@MjfkEWzSV8F5 zRmq$~VG=z&G(g563ik@bIcr8{Me*|wN!OEDCj)#4@%KfG1lqME7V>_H*mblE* zl9arkqvL?JurbMqRwc1K07IE^d~-Z%8eBOm&VPQGm4Po!%-50NILzHZ+K@)So1|?v zOellW@^Q*iAJB?GVKS=SEjka;WR)wtL!onR*3^z zVA;WC08W_XBvPjJ?D3Dtsa`S&yJ>@lLiYOS?-nMBsxl+s%_rx4Cx>Rtgj(8<+b$ID;HuOpM=X8t zp`EBV6cXrpqHJ5x-muF?SYcD2TYfV+~0G;82lqzR=u zcUT=DY}Piw4g!@XPKDb^o_yOqZn_L1sj-X?0J)W!vV!ecdBcI`0><)71u`OM61#P} zHN&%Nm6xJ`QHo-&*4R89@iS%;fUp&i@~8d0L#*ssIRi}$I>?}g(>w0pfSNDX)r z4M0Si(sA6GM<}kXjIJHg6xcTEKt^d=IDLLAyK9&w8}&633%>{C!d|Oc^WrwmIZa$% zf3-ObMMRpNqcROGq_eV)Ti(tge_Be5SCfLXI1PfPwTpjzeu3^burLp(OI%k=wUUb& z4FZi=mv%INm*E5KgY~aO^{Jc%e=@f>D$Wu6#esu+Dc3HOEqAn_S`Vp_!L8bBNG(Pl zBBX9@k*K#CI9=hrP)|5R$d?&A4%xU~W(%p1yz>VV;A)<(jV7;0$G%~YC>{z@Wz3V+ zQqh^pz1K=O=XP?T!{OKTk*2)hEYISRlPBjuv*=NIMeGvW?r1$nebL7X zb4k@Z$g-0EB4uq6ERqDFgiU5u`pBaGAQcl>b>JN*NCV>jJ!ntbGw70##>FKGH@%<` zM&|vuH}rFj`2vDnGtfb3euVx&fnqLT{&ZP12-l$qO={+^@T&s>Ulz*+6$(#yo@Q|W zur7uG7Fbgj^RV9U#OZDbD93{Vm>@#45PjZlh9K#a3Ib9bl^@=BU8~F)bfQbpa7iOn zNpk$6COn|^{4%waZyt&*U%bGfV#Inu#F(F96PSDKEG$pJ6eqMQYkG3P*1IIhh>mro zfs^{Dj#ikUh?(D%lsQ&c;(Z!zV9N1V$Q(4}x2=dO$bW3Qj-SfMxu)ieg}AoE?$4c$ zbKAzi9F%jkzmg5*JH!=+7OO)Q7$`R92U~A?26INwsC1<5b zbXuGE;>=(6U5Rb9B?HwvpI2xWusCxPzt;iNY;mpdK@WiTz#-#uk#(ulEa@F(iiMh&B1=?E(OdqXrI}|M>K%{1X$dx zXw(GfaU9RaIiHW7;&BY9hY5x;)c?@#A2gUywNVZt{#%De*?9 zfcP#fPI88P#U4YT%rPh)B%8GJW zi?wF-KnP?P`7lR4sU)K^2gmbMa2=FNmwjyna{6d+*djNr-p6CMU6ki96tNo2Emvxx z_f`R%Wx%}jXq`wXh~$*jY|ws*LED=WXmxTBU=dYQSMQ_?NPN+Pf%b_dAX0-@K`%|S zPlx5;y$InDWJpK7$VMbWSDdtLDL^TO_uqy(N4Q-rrZn%12N8AnUz=d6$q_Jp@pT96bU~rQED-Sok z^rH{&V{MPm{{iGc8^68kCWhHvuet_^K;S87A_;?ozLV~GnvRmKy*HPGB?NU*qylLu z@gP0T;}~o*w|YL>Lo$q+GL zec2)GbdrnU8_Hgx)_TXh5oMW?V~j&dOpuvrSXfHk^uK>&NPm&wPQVPNh5->Q_qjv? zCZB~kc-*8HvZ5?GD*)P%fG8wmTUT~W=^iG?SOnh)x&*3~l?4GiiX12cCXhPKSmH77 z;ZOk{fwa)nnL9Icx(n&f^yo1qS5K|_mEwr`+Tr3j9ObQradMSZX*L&+K4SIKzAq6{S5~E<;-Asx2;~+za@hlcL z5Fw&%DrDqujG4o3#z3aCg=-U@wakPylZEbDK9~(RrT+AAt4fc8@147W0~W2vkQP`5 z=Jq}t{V4_*CW1F$@3Ty$pj9KZ$_Ou|o;Xq*GlscE6u79ai?@!h2o{_>9=R(syZnIm zD`FW!9RP7pIGN!A=3?%#Bm>x-OVb@EJCvEoMZIfV)ylmBG74l6P~k!a0D7^3-90e_ z6*)bIwK;77!+c?$6`Rkd?WTK+1t4=#b{X9F{c`NP8!lxR==_0T8o&`fphPmF%w!%g z6&MUdC<5-vO4G~Mbjw9IlaYa`lQ=U4s~ZKzTGV%8*&Mc3iI)hM-v% zMufXV*E`!pYY~!3bd=CntxnW2e`8=u_@P0|WD&QSqR~vTfv9PW_HTqvEhraeD#AZP zLQJ=JZ4gF*=PIAh^WX8K+qJlS!LfoeH4~gHL1wMm#W7V2JA`M^p)u3fP*>4S&vEF) zh$z_5ny&Y1xdl}OI1b5?T4gOtOb;WW6j{hHlgiZbHAZi3hvlq`PfZzjz0jYgalflD zh$vKdxR)p-;HY3y)CgXkkf9~OV7gQ!3x(j;uKQ)*uVC2Tz02FEM%IF-1o<3{`_y5q zBR%O#B#sraJRxYkoSj)@02J6c4*|}65u0brFa) zXwZmck(eTxd6`)$>^>qemn+;bhOMFNMp(}0m#~k)Y0P-Xr(^Jx#avV~(a4i9rweBn zk`#xTOaWFMp`gYX$H95nmchNVaZsz9JPbg2M66ak5wx&~;`!&<1Aof{|1P&sZuVid zpD7>GF8Dt&{F>_sZ0$|hdl20 z-p(&xGD?Mv2S_p$tsR%k`U5FFp+YI~JQ?%Y%Ofcj(#MuZOn9N0xQV54ae%p1FhC1A z<=BEhKmz`NR7Wo^NS>e+Bk_kW*xAu!ChQadhl&qNUe%UT^$f|A+$a$@pMZ21JwuD$ zU0wY^_dx~YPBT#-hy}F_5FjZD0FjU>80XM+pRZ&oGz1W$nhMMiSTIy5R|O+r(px5P zhjc}tAA?b!?f_47aWlI1R2W_G6OfNLYGO9%spd{gg?1^W#TAoe`hW0Rk|NW4=}p42 zM~1;B0iu+UrGgebbpbvLUDvA=pFdQeO!Oz9PkvbH*&-jks7AEiwfD)pQ z`Qr{=RiDCOEfNN+ubzJBq7+B~GR=5-c4rTgCL_DyW~4s^2k*;;w`(QeQ+WaS7^USt z=IkC-89)&oGlh*D&P*%?pdxd%yv(PHwlebO1AoOpL***;Q(?6s*!s5128ueE`guozfGGW{%A4y)O@- zdd!8Gszrm%=%QlM!IjbVI$~gsvGNOil(_&DNhSv2ugQm zhcnTOKqdk&YiLW6yJIR6Aa0Fa-&(X0p~yn(VO*6+A2&M773z<;)k)(RoE1L7>7YM0Em#Ih*{VCOPTwp)(#>VB;8W9=m1dSIs$3o!IV;Hw~Y+~jbLWPD3pvK4WCe_Nr_9q0HbJ( zxhO^6m@EkrQB>Ibt#FBzZ2ww08=ssnmfqRs`hQT>4ZSkBa9dGDh6E}?umQ=4Md{Gi zQ>=mq)7nlO!Q62aPR@P5G$JY_iXm8FhXA-WIS@D{1OeI{5yXk(&4?1SU_d5M7e{Y8 z6~Vzf25ZJlrMh=L7}UZ8m3Sebq6LY)H!8%LFm+m{%xKPHM!+A3&VQVs3u(?Stm?hb zvkS3o%=wEK4LN9(5F}$C0_d2*$a*4K3dRr(1erQy%`yV_;XS<|GZ89pN4@jpAXCTS zfQpd2@DER$XrXorlF`BtLJ)}AU{*!=zF$|g0Jp|n+P=tI)8j-bavfYnrIui2vv*cj zc80byhG~yS@Xa;MjjxXgndFWo=)vFu27}#oqSCHzh$Y9+OncKr$}I4J1VqB*LXNb! zv#iPKik-Nc+O=LhPVk9`9b$7stUZ@!5Bz-(tXru6@BjIKy>FZwf1mDmA0fV<>dz^E zB3!`Fk$>{|68~ZQ$)cVapFQw9d*H*keS&`v8=jOc;OA8?x~KN%8J;PAbr1Zb-v2xN zzmlCx`mZGHUrfv=&h2lr@w}+%^}e3+c`((};pwE`+2`5O-Aj~xzd!&?OZtY#UjS%$ z^vq12r_DW6Z)KA8_yY!fgdT8#_0lkh1WaNCf`>-cXk0@RAO~X<$7mCrJixC(TOSOp zy1LL(!O$W|?T0^@H^!pmCFh5cDPJ}$`Lks{B4B8CZ}fBx!7gJaOow{oH5rL^Dxhd4 zFR(DcKnD4opu3Q!;y%GlJ}{3~*wkc^42ITyD$R7CfbrBGQUNK$XdVO5-G69-X4N?O zSp}PHuvI2`-0)5@OBOlhD2?mKXvP3L!^S7WL?M?kp9Nq^ zVFWz594gY~Vgc_yolm<+7r?+{S73@m2mt!D>KM}aM3B3LJQ9I3A^8N4@ccB6gMFngk-kHTe>z;DOl>Ot+lqsOTO|QygxfGj>2m*k+JW} zvtw$V|6nPjz>F~zK^px9#9*)v4QAv!l%Uy^S1Jn$F*LNtfeK~H%#;u1T%C+oO3fTd z!*E{XNs&O0d!z^gQK#ImnqIsGPK?Dw-D!S51 zvU}z$5m=R@4=g8SpoG!2Sge$X3qJ;TTFUg{BIID|ngYb)g4%4Ge<~4y$0}d75y8-8 z#BVIt$dulQ;y5K#%8Z%bwNg;#oOy^qc^@VV65D#$DkH7v1`#2;xe4W`keOplJ7fJ{ z!N|m+j!@K%4)UpHq|Ee?0K7!u9Jr7MhWsW#BdQO@JSLzK7QWILrDjSC>VTn)a7OX- z7|7&Q&^E+}?iNhFl!$PLhV>n+l$n(of#5|wBrP+KgH$!JxajuLd)JDO!2~4%BrLcJ zd$y{3+1{0rpSpaBf*3L^p{-j*KNys|JIGR&tCe7dfQm7zcEx~C!%)KATSM$3fDxtm zfi4o54U>(K5QZjFmod;(RL+00tan+?5M;;%prQzRhNxsAN9s$h_uf?49ZZv5IiSQ^ zh;ayufJ}mC(^fTiR#SiUGid^2s7w%h)~dmUJmvx>f|y|~Je){q`+fm~C@7IxYh{Cg zff9Aph!PQ4ix$$F+jas#Ao2-3jKR#MH$uz75ETRHLc=Jkkw%*dqW4Y^=?{G%8>52+ zK;|RB-r_7}-E_`Juo*dOu$eT+jjQ3zEdMX z3zC@E7DECv%~>!N?NU>VfFkX^qs|z@;uYZx0fW!PdjzdAwh@7Po2Ba!r63h%aY0aE~~&f9IeLNOD8`-P7njeZ7iX24VcD(tj$$7ocfma?5r z+-ff;c!bxwQ5k{~8fFW9$km$2M2^<>Lti=wVJ)NrdQ4?>Qr!g=$e zbr%vEkQhmAO&3c{%1n!hoxMw1)n87J-j%mSR4K(>lHpxeAz{LbWVmcDbZ_vo%4Q}- zHp5_yj-aVa?}@c?J;Nz?+m+BDFakMTU}*0|1oN%>9xM^mh$xdrI~2V7 zrO}-L5E=BCM=b>JywWpc5MHBT>Xa$VTVpynADzp7qJ_8>3}rZyu#htxQwtp?vTejR z(TEtW1@TA4Eytl>R)C8+#`HV@U3B4OsDa&W49-IxAlt@*>Opbh(Slz5zcCkgb(y9+ zHs=^@>ZlvvBTlFwZQD*%$Pn&M022n@dxLUGW8&BVoJkNhhFUxJ{c^cH9QzK6RbceF zK6~Krd4OA}|M&m#fBe&Lq1XT)*1u=%BmQG(A9+6R^Fs{_{y6?;>Squ9%X?r2_J{3n zZt{o9fPY>eL?70lXLzRg6+Q6e`cIVkkMjS7+TT$0PiXyphCXp_KW5|kUiR|rc)eao zbn?{BBjcD4*0jJpDb6QR9xnAv?B*|D{s%lfO7dh04G)nyhJ#8KK9Oen0pv0F_6!Yz zVOmkTo^cr#%o8Y2?u@102Y3kpuNMyY1=B?ub&_ZV_*Ts#Zc`8$KU1;;n9;hsQSDZc zFvdVEQh21lVflcI_Nmg%T#V4ewMKviWQsS*Ii$KD$fwJYuoDSD1&Juvhko3huAn(_ zUy%C^m|eJh7WGi1k7@Np%GdYUXMbc&$ z0#R{@4aWI$%vhBd|<$8bsnynKSW)nvIDPVmCu^D#pODe4=d zp6EXWp5WwVEfWKT0hnAg2ta0<(b_Bo2{3qbJ|$UbG-f`nsfMNyVfMFU)>PCpg9wXKrG!kf`qND063ke4MKix?!@-R%(vkt*HkB0g952QHz0_;LJWknm|Ll851QgE*Rb zX-_^;K?ed4di;p~CR1bD?{rny4{{Plq|=`Q0pVX&Lt>-H2Q3t;K<WWH7=W5v5R<*`&bGuk1tb`h{XM^T`6GyG4+JQgC)|4UHLEO1%P3->K3OpE~tc$KtLtW!_c%1X{-xhTMMJVPNy>!KcRin8dA`QB8=&y^{y3!67B9vKLIS; zdY4a+c0i0X7%jo2j{MMCV>Ck9A9o9nklYGjW}#9dio4TY6`2=h&tdGn(>BER`FC0o zFe?MN$lb*i!FpLKOop_P{NKBl6=_&#N;~$}gyDh#_qoHRtlT#5E%qJvDrS%qQ6kvO zvK%4krHkZ111mQ_kO>IIBS&-#pmc3FF)v`~R)zIq3RF^@?YL#w zk;=}_LH^5S001oJJVlJ-z{X2!2bK(WsL5~V)45iJ&@gK^Gv){vsxt>}hL{BP@kKQsLfF#>79xN9#=z#)@`$=St$a=`=8Fc)ToEc{HD$(9my zQMd2c-gT0cf*IMF$Dwp5WVLQ?Qj)XKjnLnHLPH&+o0DLbY{v27LDFz=Nr`#H3`3`r zT)pAG2u(Ah7(DbdkxMmsXL_?YWMXZf#f(8sDpR8{GAW`C8{8EYbU{*WN}y#@W8@ek zQ%4r6u?#5;!2%^P@_CMpi1Ya+U9qOprjx_m1F@y(pUOPXYi~p`G*mbcWIX2p;e>IS!psIdqKl-bUB04052MMrf4*AdbN88;Z~lCUZX37za)p0~Op!5REzwYSlRa zGUs&;U0A57Mx(UgebYG|i3S&t$l()zs2sFiGWi6|6zQLdi|EtzZDXeSX*Fx1gU=V*!& zMM6+?97ODu7Oq;ilY&R*JdCJV_5(9Y_Ysf-J3dF;0A}eEN@%D6)J#HxPgRi2r4+<+ z&g*|YmC411zUdeSk6vm7GtiVl;%&I7XrvaoVjY!oDFkSzLJ+r7BB+`vqp-)EJz~rJ zN*yD|VD62EQ5enSEJmr=!)U0;hElfGtyM-cx`;sni%LHQ!}#1b{4c%0nF?$$V`OW( zh#F(GwzsC}>WYobG#DqoRehbYb2Ta0YgH)rxvWL*l316S&L|bGG4#wcM)pCZ5f7k| zpreoNgX)kUbgH;c;~ay>7(CB%--MXy9S|*j+5gIRFGyx(wyqG7%`c5g-tH&k~2s-4-y&2pP1Q^JpSP;Tt0G6%IBnR+Rs1%rxI zF|?SiFK9{Y9rN%c(n|zlZp+&Hl*>2B6e3N%jUkV<*1EXNoh9SM?16s= z4}7=<7W~^vXaKdh8}6T7kL zNs*aH=naR*Ssn+etIIPnLp&z(ya)zZKq;;14aD`ds$XUYzv_Gn7l;HznLCf+E(8zf zdejum zb9XUjLI#X6Y8jyVjQ~)iX6l=n`wh@+(q?g=xYdF;J>Lt33rrl2A~WRE(5lN2dg;?y zZDASaW}HtCu@jRO29jQhgekn~nf9IJS9XIz@xZ-Bg) z(+0#Yq}_@$DTd4d|4Opaw~7&@OnfNvTk`pBn*I8B`7p1e)f=7=`|9@id^SnYb{|U4ijv#^M6EXdJFb zAsPZZ$T)xk$}t86$WVt5*k*-^F`Mvez|f_I3g8DMD1^<5hgGozB6rAEML1OcA)Y=J zvQ>d+g@!YYgANudIMUD<$?Gw1@9x@SRfUwIn<+oiJBOY!nDCkzgGhjqJjG<>Hi*~w zvG4ljSv)pKicA)On3+mPn)83VENScQO}71|(BL zd*=-wd@og}H!_3Oa-~$@7$e7kKvT#}QirseBU72{%zZHRU3o#J1Kj4Y9{T z>QfO5j6g(D5sLtbUB!yhvS=Yf$>YmZ#B!c4N~RAlG<1;w45s&9t1_fH29v_dCCi%M<6(y7Pxg*ck5k?MFTwq2p>weBHJT^4=~4} zwO~|36Ir*d)(x54cA`QVK@Jp>99Yyl5L1BNB_=4P;7`RoL%nPFA;FByIFWT3gMhKB z)H4=Q)rAt_L~JSgDyM6+K%7Yfjhp~(+c2h3;JjWhqy_;lmkVbRMq&v%-2J5T0%KsN z8=-xTg=1jwFxQCz9y!QAjvdK#U0&ie!yBmcOjax*cGkev1%p5iI+Vgf4S6Y#rig8g z%LXp9dxZYwJu~8&<7=2{uVup8hkPEGip&r2thj^32{8-shXn9qo6j8=p}Az{7%0+T zpu)B2msP-2VC-y-dpIV`PESfxxh*krwoQKyWtJvW@eJX#78g@lI2IU&eJR2hW{M(Y zX6ic142y77W^!`kwA^?7v!7tWP?3Teuw&1rKio{jxoe|=VTj5S)Vdi)==@}HwFe^z zA-uQDmhhNQ4#+Gj6*&m6bHDW7M$)4~PiURcg$;}nQK!=xUd9$pYmGgLx`+}#6v5DB z%0dK2phlY!nD7{bi!^=j9NPQFC=#eBVj_43M%bx+wB9>clW2Em-L380bBs0yQ31hi2$QH&#meT# zDj+cf$*mpKOzdO@F_5|N0c*t~Wp)aCrh{ z2r61tGoJXt+brNyuNgeJiV!@{t&F%kFr&bWi*_+0{f0N;LRD6ge1dn?fITA;KL3Bs=h& zDcUDUCmFicDFM7AoDU7={6u7m#%TN|1abC3amP6{=Dw;k2n{l6%@{=rLup292p<9g zgg1kp{=fld<|^R9(84Pj4vB_@F_(3}@(|OdjXlN(eAqGGlt$gxG zkJ2#)qf}rFfM8YBJ#{4q7QYoJp#iygfmP|xiWYs2nQ;5!r&1qyRTS`YlxUh`U#%gXPB7$c2$J&Ertw5>dQGQ%MAv@-oUuni=VY2nP>4 z-7(0saQP$&rI5=wB9s>(ThW^G?`C=@?=z7!^DjYhkD@iB9s}?#h+*_g|t`pc^_7alAGIhs&$J{I;nRu z8f2gXmMM)4jjv0C2~R0~km2-aNQnc)Awds)80*u!wRg6Tu`ib64^ddb+J~ zyD)n12%(#aUba5h1`Q-NQ>!`Vlh5fSXCfy;zhMKfnE{uA%_2icp8|13pFvyZlp@#; zOp@IMsK6*ib77vnlY?_JsuHP4Ko?!~qKGN1)?Myp2$syTR0Cw@SpNsFqL@KC>xdAz zz!MMn8EL3Pf|)VI^fGCTG6s%CFWQ-M?@c8Kt`1mw?_^Gq6TvQA*+cTkWFeh^t@Drx zt;Xq5AfiONcww(v0wR`i>M%F=c}kmaRa^+qWCdA~gdS_L9CbcR$ZuRuYo`q5f^(>4 z44IfOn{fp~XgSQGpX?Y<>asG+-r?=Nw`1O!F^U9gM2V0PU`COZD%=unIFPP;P>~EH zG%%JT`aaidb_*?(z2gwWCWvXbjnw%D*Ku&|s>ypSHknyx;OM+UwfV2qWnV`}a6Q(ke2==DF5de%bW%7vzS_r5B z5$w?ahrNH@k}WyzJTWtK-w}BVrvS3qEw*M!;;iZ7d>eid(62#$C-{JpUZC|VGhEUl zXIg4C8w7EwI+?NE-1PgqM`l$4b?Oe1z@(R@r@6V^-24)In`fNjSo0h#wv+SF&Cw96 zz~Jr#0hb{3egVgUs=GgE1FKbF;P>tJ#7fv25QjJ?ZsVI)%jRzlZ#ko^tz##ef^e>D zE%+noW#Z~Z^IWSgbfk~l?UC3*S+zd?_I$bHc0-{%GpkjHbpV&Bk);MQH8q+1((*tc zq5+6Uu)sKDCu{&FkPST;)L5qqICLUF4L>z%s9WPBZy!Ol7^YSLZ17jHK3JdHm=XOr zbb&f2JI?8aJ66FKL{KOIc&1JUd-9~9LQQk?AS;*?D>=EPaC9EW74fNA6C*epGUYQk8mQ?-FjG6Iipko&g+Q#r z@L9CPZ473gkjhB}%ftf`!NSu3S|VrAi~cogbfIBMtI;SvV7Fr%nh12xhm@v@`4y9^dE*E$p;uFYH ztBGDsqm;_50*W%VVr}miR&1u;+=&Sqs6%6C(=nH<9N9(B7~H7sFq(TrXcq`syJHNV z(|GXXTxF$gHe8EXY&d|$+f9#oL<1@Ku@%J0ogsp>*4*VY?lIWa445ONFxM#x5j`+u zCNmY3^{D1f_%ZSduMzm_2<%&^|MWZf|3a|}U*Jpqc;N#1QpRuEiN4RmHx+;7e~rLv z1YRQW*{!tkm#*&_+1g*~uh9O&2l5rHuif800z`Skw^a3=gule*)=T{*JinJ+3~9sH z_MTTG@%FAiUgH6AKREKR2=$`848QfHzHxWd8+hp9vgRb;`Z$Z%0I{i$mj*MQdTH~t z{z7pVDk2Qv&ZBHVf=A2_YPM^WIq--ORz)9<0TAJLhhUVN6AFmCDCXtIVgmE#sd9>ujJVITdKQ~v>vuzFxLd?T zNd$_o0zX}#LiW$|aNyZpyH~ZlSgH(U)n%YG$TteHRZsvd6nBdb@J+!h=5z-N9R0f& z27x;U=vD1bE#mqCFDaAr5Zoaks+uMk^=`~L-51IfR0*qsVLJdDxa^v#3!T7XFr+|e zn$3l{yNG7gP<$ywcB^s|YSd=nxDB1r;Xs)R{Lsx+(T3<0_?PlcM+7avoykmyyJ5@3 z>Z_&_Y(Zh`XE)u&LxnCVAasIAy3n)X&hy+`2HEi$)3%DcSkS>QYNJ`@?jSJV+1!0G z-z!=G4R`2b1IO;FMJdsU2}%T;?yHz#U4}qh3pF?`7IL?R>`Qa;(Q=AmKx)_T<>Bf@ zN>rq35mz@AZcw+ToSOUnwYfLFjdRNJ9#1bzF_Xjr7g4-sCuPp03u_#kGM z`@u0`rhmz#3bQ1k$kedAJxHxciT<>l9Kqt8bi-Cf0!ZEXh9M}u-~ZP~=&Y*8$46N4 z6OD_)34gs_A7+x3)4!EhHH$uhR1qkmoT==|!vnc{?vuz+~;Fh*guAuP)9;JS0=2q|6uubF*tDWR9w$8xl3j$2cfZQxB^t^?W)21d5rF4VzFvnCM9e`!A@QEIjyE9+pL$#lnUj$Kw=1j#9spEo^I8$?C zI%e@7>*osFoD(*nP)c^HDw7#xpTaNZP;m;s;Q?;9Cvfb(d-sm1ghCLyzWqjQ86#H| zOdQuj1f1ccN?GZdibL;Q>(0_rtiHBPCQ@2Ic;e2WF1>5fW@@?_cvaEW4=!sPMu*Dn z>FEi~!_2q=f2A#mzUZh8m^;&aL+(}y8^Gn3hIl)Fndg85+`Mg-I6sR)=m zmo#U>OFKs<5thy>mOa_MS`-fzH0eT`Re_W%SFXjJxt`GGG?x{ki~n;fL`*b5(_I>< zd&dEO?|%v6!js8;Oqk0hx&7A;p+T0eAUjnzCFQXstp%{zLYdDtT@LPMTYs~w!) zOnq=*0wOpyfWzz^7D)u|g_+IL;R74EnH!YJ>QYxGYgiOBoUHTYK-QKC*)n%;twqGh zfo32VLJdHNA*I1UfZi3)O^HBIz*;#^-BqV#wLz9Ah5u&yw8hoMpzX=rA-KC@#mCH_ z5h4cOw)oNpW1&A}OP}wiBF%Wxf)kPznC=X46N&M)>llAviMFQAPPnS9>3KkZr!ptg zvF8X|5uv3Bj}#jlv&P`WV8t>QYWga$!7wM0o>g;BP7GW?f1nv#Fhme=f=n+iYnw;3 zxEHnzMzv_s7a`>+L^f6sklEvf0zH!puySV~8C?*2Umy21>D>mk$L(Csj>F#LbK|044zJVq%Qjtm#@jIoH`sR|Nhmdf0^x%~k9~ zDr_q3000mGNkl6nLmJ$5_FvDlh;#bFsW)Su))Ue#AX)APkeiw${KGvp%Ar zK<{0j2*e};>r4$67(!tsS)$HL#sMir5a;l1&F7>Si}-*ZfZn0Ul^gP_OP-s)(yDof zXr`F6V#m;CK@czu7N7p?ICQhkaRy%PG7K>&G=nTdvIu4S>8{bC3bnoSv85G@T>$2A zec~fXGeQq|5iiGYw8lsaGc2&<(B~`^6heU?h2UoTd?B`T@-e|990&3RL%r)1GWktq z?i_lTXofEI+Tn#8DN7m;$BBYYi(7Gmr!fGG|`$l0HT7y)PjM2?rz`m@!aDjXo-#6$(({I2x5PoHSjlgRJzF`FZ znYP7?zewSyw5|Hn_8$!PwFkyCt_ICRFi(?u zE;OE@^^QdIcGEv3LN{~(geS=L$jcLF@??w@5Wen;=ms3i{4$;|!FUM(+`V{2El|cZ6pV&=hE18yKf2o$5ZjKZd-J2e&L4O=O_MjXs`^Myf{wmDOQO%%mxQE9*6 zW@u(~W>VtM+TaJ~obZBd2Gua2W7WhTenZvNmkG1gbW!el;8{xUCQ!6MzS(Drs~|!rR9vMN_>yzis9kCeLwF8uCZfpz z6?AHeW9}K$go=n>|JI#fX$fK7eQBc?c)^zd6`r`uG`PDELT7fhVK%3Jw|i`{fI~hJce-*_+_ggp{}JLHZ{S4O?5GY0_qJ?AsVBoTN|7& zP$jk0XkIl^?k=KHxl!(Plr3f`_S|KwxWgwd{fL4Rez|LE#Okh5Z&K*6f>1O8^^p6> zOfoI{_7bTX61AC1#ORDWpEw4eo_OCm-@W?;&4e+cowpnKd6P({wjRoO5zZ|vGLwbQnGa6cJ(4U^< z7=aw)Mvcy8OSf6@m??`55yic)4Ak7&4N|N6jsjgcHddl!t2Gs6!4Qv7nyDWbWZmsJ zt|QOK$4|QQ1r}>gsc$#3@FWLeyD*^Ej@}P+x^sZYVGz8ft4hh5g^;RHSV(-J0fyeW zoG8LhkZ-rgn{<-JQ`V!kejFq|#&Q60 z^v{`q`%6BEtDxKMrgb&OiF1ob>+`(ns*gTwAyPFnwaD=)qTybI=7lDLb87nV6JHp3 z1o~?g<%L1e01p~qaE2G{;o-qu4-XL>CQRQ!^m-??2Z0qko}M17SO(0X*k;LrIYog3 zyAf@|G08C2?e>J{5rhEXzD>h~8NeT=AET+XCd;Wgjfh$S?45nbiq(Q-#iAAp13}81 zWZ4b1G$F!I48x@#J6j2w8QO{fZfH9|hZA71+d8slbZPc)3iWyFi#V)du8sR~;DB^u z1%R1&m|0GXAIk6JfjOZX_ywGvwJkQ6+cXVMcmNO{FVJx27EZlYkO}Y?4 za`lpwWRqfum@ucKMT<2G6s8j5a<>ZWIxZLm`k4;&pq2rlnJ|J>)trh5H9jBfYj!YK z)fgv$+NF~-r&Dke&Rv5+uHYIjzYG=hNs6z9m;0#RweZcDHfa5sD zvOYl|;u{Qvr8U+VXDlXa6!35^0LyMVE2eG9K*c5utlO@gm^+jYZ^v_))lF4dk#p?3~ zjc7vz`3OY}Pf`Jq&LtSTxJwTd_}#&o2pAPZcRb&xG;{{2?Jp@8!f3!z`vRGm<-x$9 zqb;KKcAz<;UoN_1gEEF5X-<9MVj|aYa9ENE6Y~g^W7s*dSTWYCK@%1Pi^#6 z)ts6a*v#Z1tMt0Q8s&lb#r)Ha+4U4bd~mN|lb%vBvsm$22-BxU&MF#u!Z9Mipy0!q z-tYG@bKXA?=?%u#DXeGQ#vC4HO?+lFT1XL2x4XG}Fd0n?xJqpNOc>W4KR6btTX3F0 z9kr~$i6Xo`4*iMAc9I&e;IGnbve!VieoTOjaZ=zRP`S!fp!W9U`CP8LYv7ANC}_YL zGkpq}DMS!KuGfdl<;w5@kbY>SFjo>D`Whyxun2wC17;{od4eAY4{w}H ziVO_M!g-#0D5V!b3CuuM!BC9QY=w~+242l6J(-Gdm5x4`p-1QgsI7t{P|Og~pHHo> zH4RSTf!topYXrW21h|FzzyIyu{-?kDd)~^vzSQP)vlp=UmKTAM4TlEbuf396G*y`fPeNlO-SfZ0xO2e{ImY&_qy zEg3~txS5beG0KwN^wp9xzFewhUHC%O8!Lv8V3@oNh#4d5aNDB3 z^>{9G?hxInpsg-fp#cd7)Kb#~!07{_Yu6x9?hH6n0=vRDUT zHagXI^b`wL`=uyz(qTrmR&3Q~uq8!52o!2KRP$36F0Xv?xbs^W#QQj*ES}YYoPN8n z8b)AQLDL5JdlyYG00dQ7rv@itcnm@ffZPEqSVbIIYDIV7p+k17+Cyl)##-p1V(nf->0OGt6hk+RtoczB^6L#h1pWa>Gc+QdDRU5y zJZ0}Ewx3;RH_I;be@Aem;P#)UcAjbTRV1;kwP;~ zx^B9JfQ@t{lT79gQ9E=a6?jeqov?wUcGWRf5XjWf+gh*M_ib8J{Wunnx29#Zt&qn# z4t+Iktntz{rv}UHWR95xytcNg%G7wnb=5KFToin}=VTur-vRI5eSBj%O=Y7pxx--W zPRs}eX&rZKt+&=da^}iOk-lW*KykBmu7*B7av-f~Vwo*L86`LoErMa5&PolEbU4qd zyT=xn=48l6*Eg%s$G|7Q7#)x+^^716prmk(K7+?-!oXZCf|{_Qs_N5Wq7x#NIW=lT zKuSd)c{IluIK@2fkR~I{F=r8KI02N?W#-JR8H*%`R)P}Zgk{b-#vWH|(J#jpLD(K2 z9~T|epv;+YVn}VX2to&1LoBsLHt zl7PbLb*D>|)|3E6106WPSg0}4yDXyZB?zhSDCklF3Uq?pyS{M(P8S+bOBl`ka(Q5k zcnHNz(PM!R(P!f+mZ@=gNGU(B8C{bKRbz3Y(cM{#m7cgvCQ#Ai`l#nz_}bWw~c2v#6CeJH_m1Ze^^VP-}mnA}90 zyUs2%XVYQ@O00t2>-FUl9Ztpzr~1s;Xk#!VLsQec((c%bU|cLH{a@wA(D!C=34~Fb z(a(zI=%8k6=y;(QdW1%8X7~mLAE2~$Uu+QyICTU^(}7DY#fV1nP+8WcVaiAJv!gi= zaY?oL^Gv|F2tc6`gCL0*BJWXgOe`kW4Xi_h!9gI zh?5Y{>4F{sO;N@wJW!}N%&A#NKY(w&?}vv>xyPxiSlJ3DQXtSlmi`C$-Lib3@jN*2C8e?SMmjs-6}K*2hJs=BXaaC~riTMQ&q3%F`NJ-wT2jV)qU)kdhXj?RdN6gsij zn%3K##Gg+Mt;~YS3_3i_0zBvXS4{D+>s!l;fVo3|h1Upt{Rn)cTPT*-3%uXN3k%5m zxxP^knqJ@=3BEGFM&LC9|I871*{U1){;hAlyZ#F8n`zfy!TQ?$?IN&)OZ{!c5!>)> zgug^)E2aJtp5MPN#tsDW*jx>3r;IXnbrA6HJwnhyd=>6b1mL|O$r-rVF zNFFw;FvPPk45A>bKHEf4x~S>hi0UeH`pNIinmj1mZu%;=%QFwp{t$R1rxT?30dt9i zBJM66L|u?JEaFxRVRwlSI+`IZfF2Q;09gc8j0tn9d3@f?NZImM{bI+Q(A{f`vT?-L zh}>P)7xB)Fz-o$4ubBfN5T9#zH^8J(m6;1wgl(1GGGXtk@1)H+uRh0s^Y1A~TN(g-m*&?bMq@`Nrhwz9>86C;Cg|38#(}$8ZZ-m3!;bSBHFG^rOe==1~y_8 zM5xUimnIDfe;O!41U7e6Qf z=B`k+V%Uwj;=%;pf19k&#b27QmA-X%ra}TJgYZ29e8NlaNZ&uOQxOgo_gVDR1 z;O=4(Llqcfq25i^{FJ5)P618SQkR(F1hzJ48_;m~ZD}q^Lo)^3KQqRX25~|J%%sZh zWz$6|$wCG9=OT+{tp%ylp>zQGP~PXswzM&B9B#bxk8zTh0&k%#Kx<^&;#l`FZ50?e zKgqf>Ak0KAfqOT4*Atj#=#jH zFsE|IuvMXrP&l%^>x&L!=#qfoohRwGLLst%!-p$ZioBz|9=yIi;-!V_|6c zE{pUkddiUEm9D<%h#(YO1O>Snsu0%)mPkoT2(#pdloqKXE2K#=Q@V%d_K;@8aw#=f zLP{5Kp31~AOZ~tThYlN&gC78aCz-h<Jw_rka%6I6)@#b*oa9*whFA_G3neFO zK^em>b>7IO^0CRfLhD@4XJdvN!B=dNdV$I85v8W#Lqsz%2f19XecdY%L$pLF?Uiy* zUoEPVT1>-JWk?-sfwjicLQrGGL%@||GLTF{jq{wzgqO@6&B73nDJS5Zv!(_JKe0Vp zpp7ev58NC>tuc>)a;y>e{2&&wjuIe(bn46;Fq?TqxXWz>Y4%P!jQuxBrJd)^w0XpQ z(P34k`>TxIE$Hl(mbKw4`NS}oMDp`@y)5yv$AtsSi~ z1?Fb0v8j<0FB;&C-~nL=4krdi?7oY-t=9*2kQ=jI#Le zPC`KhVrwlzC#0Fpx^Fjd4B<8i!-4H~dvqE`HarPU(;`7}U5*P3wKg(G2f>63Spa92 zX4t$d3tZ?~I@$gM98P$Ex!j|!;$c!7vvhl3g1O7H^SHk?Kn4LKFr*a={sJRMrdB&_ z3v>|0DhvuXthk4}VhGX#4UK+GZf6)0JPV&p3EE(W0a*YX&Q!sWb^%=gwnSS$;AY+$ z^F=@y4-3X4m@L(cPL$Ntigh^gfyH2yOnojyJl~L|Otc1rKBLhL?sA?nqU0`xOUN?w zc`rE5#{?U>=41v1w!ZbkH87hFem6%1Lyf~Kw7J|ZLe8|N#lV({`$?sx5<#>N);zx> zz~z#yf>%=L+{D+y8LuI}nB}3blBpwNDZh^e=JV9|rJkPjS1b`Q*E5@3f?-Z>9oURH zhNg06<{X&Aa^S^s6`c`$#1G1%t7A?=gd5!F5qA2wd+3oH_(nj^^9F$6;GB7$xS<`f z^_XFIq$H>_lO6GN>Mlz0ln<^L-kGb$&}7vF*_X1Ij#^{D?J>so!^~WT!5W2Gn-hhz zN?ceeom4HN!8NCX3DVl9H?MT{^^v_eSB&rAmNIdBpn*O!%`7-wt)ZM9 zJ;!=9a@Ssn@E4t}F}bMK=ukp@um~IG0AI>m!@bR;PXRMS93m!;-V7Mv+(r=UpZeR@EU=CRT22?Mh5?$ zeM935e1+;4K9H|qeeM1h5g@FLKKJSN~FQGgiX)P~AaD4^RW{&MO@VJn8^51GzJ-UYdaI z!qdIo84v-Cr|Crm;VGC}3K0b82A-ez?_K;_{5)8L0#d#xcX3Dy@WCnQ2NuI3tAPmO zn*j@0T#Qz8f{4CY?_CR5rM7deWO*E_))X!63nT3cu7W8}l zKrQj(#-c+MK-x`^7g$E&23}|~CsUu&q7Zj)f z4d_*y4HW?6Uu1s6SMICxxn}NGhZ*{7q0e2&+Ahd1M3VG=mJOA3!B9mn^3)K}CfL1d zql`{rFn}RJW7i;nyKfQUEUn#KYN5Pzfqzbl_OlgcL|q6P$xs5R9G{s-3r;rol?zbz z{NPyNZ5jUL1w55uX^r$QNvKEYys>j0@={Hf#PxUjw|DQ}ZIMi6VXy+AnbS1_!KB=7 zw<^?;FV;JM6^W|0jOsEBJ!TfMU(V?w6G7TSrlG^!+P!NVg&$eEGPMm4(jeD2xYU}` zE4?dM#Tg!{^{pd}&KwXCgP}ELy_*u&_(+mb`uC8rG6pwTaN$N& zX=vMun}gs1{=nwO3KSc9V5=&KVhF7h^b$#Tzg&nvH>4NR-OjRbk^&Lb+ z*uQW>X^mbktIpf)5qj?jGve~WVQ}XtBl0Y4Eyyvnuraz6&P;8q-aB@obR`7&En8Lc zb~8laTSUltI2Z9A@2034xxn8dN zr@$_k>v6flf(Ddh7kn0q8B0z5*5uZr%sE*+5aGd)JBw zuE#-O6|p2TlaDGX1c&E1uB|EG9ic-EB4OFJJKINlf2_U6(6Qof<}4W2mB%t+R)}nz z8f}0(Cnr&nEr@0s$Z>GAzG+RK!0=hRnLaf4(7??wA=%c5kM+){fF2&)1Hn1>8OY8W zxC(4a*LOh%&aCCFAfON@p!9x3lPYk$CdgP{p2#ldpaToZOqn*r6k~K#xwDDn5QDL- zz#eD@BBY#9h}T$nY-c8jgSugbUU-m==K_&U$%@+UvE4WyVCcGN(Z?&E!;4E8I}Wyw z=7M1Yn1BwzQ-vYcPoS{1Bi3nyPIv&A!6TS%jx}P%tP#v!RaneS0%f)rOtIaRa0^KB;963eAWHv>j&F2alR zm!sPOn@Q2sFZ$|ebcq+w`PEv3AL|!A9xy0A+3|<)8eO=QIWh^d9KPz`PGl-i)Q-Vs zhm$8L`T<U&pn=pjK5F!B8P$j}%RKuEW%H~?%4z3$p0D2E8(K$osjzW)C_(3tv;}mF+bGuMznDioj>LIr#VKJnB9RU#9vi z`Myl}wXoyYX#fBa07*naRPRe7@DkZC;dyV@cM^WDR}dbr!z&b!<3lw;=mkLf+Y2C0kRKeEAHIR-PWkY9yuHG6 zyuBPC02DwvmmcUeKYUpFuS@DG4U1Fy?+g&dgEJS&N~d~}eT!pP#E%!w?fHk-q`7K(GQ2nj1Plyn>6q?Y_P2rYI?g8s07u*go7YU6mPM=9eG7k&_>aK^8#}2SDCl)rHi; zm%;~X1fORa4G3P>0uU~KP2$5geOLIFsktJ!iNxm+MMF5=A|;&&!VCkws^4DZr0Q#X zd!d&muF|#HXf8nQ0~9%cw?DXC@cb=AKx&V-mxCrXVR^gt&?UJ1@C`0W@Wboz_9Fbl zEBZG=eOHS@7#65^ae^#A9}pMYbFch-%ZdfqWvB%JE_7Y9mAI_yu zf#ZmmV@@teAk=Q0YmiN)IN2iZQaMRsJXPs6dn#K8W9KK8AmF84f}t#!{;t-{IrYr! z;o+gG=G;W`AoF&6Bu$4P0G%Teq%~5{HK$Bu4&LXhNcNFo(fNsdtILDI)Pj^nyS z$WVwI-!sXRUSgHYRpM#G2{<=+?})tHGqcDU6H=q6hS7PB;#2% zVW{N{JZ6TT)|6*~xY9slAN0^CE~b1wlq(4+07N*Cl|zWTsA*FW>(ZuC-* zF*=F7h;1IO9)A z2N4SjJU9lCMH)eNi9DTDz>H4T42Y>Hys&lU2c0E{ZOD@w7iZvbX_@gWlZDa3F{qDw zD4VUd1~WPVco=c(8Xc+@!(1bhtXz^#c^MJr`d6)(FWB5;)rnX7Y`CPOVOSLpJ0s`OQY3nXM-4R+-TA)Fzeh$HjCsX~DdC z^8s!%HSUC~!4G1FG|F^j@eAt;E4!XTgjcRYJx%8DiI2!Km?S(hCJ! zbLx;cZCIsZBlLBRnlnevoQTuqnqoz)Ya^7KG|+_)$8jOnnHoMqCB;hadgKH?_1);i9{_LR!3tnTa1245#2K1n5ND}{6QB#? zoX8qHtBGbj(Gw2Kg>_ zWu2|cwBA1i(L+~F?Wy4GU5Kfl(}3lNn)dMULGMQdpAOvvrQJ=-srP;ydJIDY;80!8 zWU}SW9bO&v>vvnthBTaoy~K@zSf$3CG&zVA+uQ9CSW5V)eOjNkbV*wkZdc99OicCO z(FRnBLd}3N2L;V@&ddRvC;Q@l``$a-kf$#mJ~ePv0x+W-nmhwY+Eo`L4QNIRsNcT?WMHf*#-&fV`_DBs(UhnmW zldz3(@+{5+IKALJfO-Va>gG-z;AY_HH_CcW<@dk)@&Dzczy9$@fAbT;Pk;Q;Pk-{~ zKmEx^3wf?-{)ArW8$J@lPpJRHU;ke}`st7V9N9bN$FO}Q{Kp^t^vB?T{x|Pk;Q}h3Wq&&c9wfe+?agO(6Q>TnL;Z%7MG}AAhuv)hlr!fAf>& z+mDz2UH=3T;3KIL<<4-o1?9(b=~)m?^Z?=)4@SiU1rTxTQP+=Q{^+O6;@`jq$PFlh zzme2OKfP0y>`!+6(ND$s(NAHxQx;v#kDj|;D0k$pA3+TVHkn>N{J8=yIz*T^fPeJU zWmzy2|5|3@6V2LUBp zIW=DW$2*%Ws`=4<)Ia$jf6C&4S?)o+v;FmtK`;m9Bb=Ac%^+=>JBi<=@COj*Gx4Kk zg&GaO3;!KQxi~eIpAr1=!hgIXpstU^BNHE?4H3B^A2!=Z_ue1Ny*s{{#j|?v3O_>p zrBH z4j({g6bBUV*1Wwh#C;u6N}qLiUZIn8KkviToN{wzpjzWRR4*^#PF!>uIRbx^69`j83ayCnoc8>4WYMp67CPztG=Uvs-+(_0uIux zA(QuZWmm`0i+zMdsF6jLSk36FNphiaEHjqYlmTh$#9rdO?bA<2%(}{f;GEX`|QOp+{P z&YaMyu$U{aH|NAyCUh$K2@gXN&-PKP%K+ zhs^WT^%A|a2%U0ybcF{B@iz9Tqlw52HRWnsBb7|dwRqw=&G+o2QhO1w_I6<1qunn~ z@RTm z&OAP{qF|GWs+lrBgg>S+u6$5X|#b4B?@R z!Mgk9!u4cCFep7=;cC;QlT>9rqb4)C#Kj_a7`l(d&+{bg7%aNrr)K!Hd(#5TluOX@ znU#;WOvXa~F(S14&Qo!wi&$+>@Bub70GLD&)+$LA1uDL(W-drXY5~)7)AmGznWO4@ zeRK2+BMl-$a679};XP0Iaf-kqt_23auL3jT@B=jqPWZqf&MBv>G+9+OHEZ}t7|HXJ zI@VWnBD613)07mr2o9{!(ExV@QPuxW47wR1#d$3=j6)$T5aA5hHpDtxhU>F2ba;G1XN7|zPbqealJl3!Dmzf%de3+rc(2$ayXj`5hLvQa9{J#2`2nz zI3>*yA+gQD9(P(6Pw=Rm36~W)ro!W6R;$BGk(beq&^CT!0}31G(s@ zr*{-i1|s9mK(;tWa8mqcsKP6S=sXoY#82|nV>tZL&|_v@7ddhp90q`1teD}9RGD}> z9?}KCk6;85A(=iI2>5YakK=M2*Vgpe4bQ@{E)6+$JdvI_z}|)-6f5p9ymbbT6h{p> zLFTDoFaWq))7gaxae&|CQnhH{*o6nWnH`5V3;5)XDR5h9`l?#u@_`WrYoqS#WGh5J zbcR6yk%b>s00><<2Q{#|CY;~^y$fedEZY4Qt3V1LVij=MK&f+GQi20!I(DD{Xo$Aw zt6G4t`{bLgg5VhXDl<`{mm2<><;J+Qi!YaJ?~JS5t*hu;Ukr*R!6HFFFsEXRT@Vy* zx7~fsEc=(yC3G0*Vz=hd!lnthGX*r67sa1nWI|WLl|fR zG+_W*Ycv_-o_f?W9B^Fioux%5(h&Nw{Acf9E?T<1>+y^Zz>MLuN3_k+kf}h)bFdt9 z9i;H^d070c^Sp`y>dzypwB2Bwaz1b@qH%i{!4%gR;=xa>V<`DNGCjJ$R`9zXB=84@ z)>sva`JzV))&Kwy07*naRGb5yJjZ4#m~{2ysABCySA5_+wEp?cWHocP*MtF`lakDf zhJ$#@oHh&b896j<_F7&e@GT?2E!6+*Z~yi`{oUWc8+*&Y=wW4Tc%ghNWb1gTzm<+x zq1On!M&J)K0xu`SM!wHMZjHPCGQFFF`pcMJ`@T^Gh~|cGBz0&0_L6r6U-WA$rT(JM z-&flGd3ubKhhrW(GZTcT#xVxSoTNw|H^QST&CK!m_zB4M`i6Rp^V6Zb*VGFP;^r;{EI)s+rPR;;{^u+?zVRCXKVED<})JZXZ%wsC=1lP z`M-Ysmw)kRIEMINE#Ig=i_?68zx<0ogY&PR*?t@OZNbk|B>s8I%MgBZYJOY!3k3}e zq-_yF0L>=!MfsfC&k#Rr<+C{a(y(P;_(6b8{GMuAd5_ND@CTRf06*|ofAO0PfBF82 zc%Qe30PpMlE&69Ieipww2LFq;7X;#lX9`0GJ|{xgGkmUV3$FT$&8@CaRqf_q{>7jD z#t6wGd6IhamrOyQ|e#I9dMwx!^}Zo z=AD|CZ!=|Hz;}WM26rrMK)fwZU2egdN&}HB<3zoY1IZlk^rzXNyu*umYxY1~|3f3( zxLhtAv+MZPOMdU9fYpo7Xr_tj2;~bH8paUe1RjH|jo$X@awmO2-ry1D>-CDh#vr@C z%0pD}3I^)dfa8!tk3*Ssy2iNSDoMsF+z9w<6@+kLjKNp{=ws;L+7dAb=_C-- z{{@PR4U+GSkqn~}QW$MYZAg`wwMNc@E+RVIAutHS&bY2!85wg|W;65TqX!eW8#fDl z29Y%B1P5P2K_jy^JA})_oJ3U?BN`boG`1EfA zQYNbkD?yLi#!VafFH$hY(2#%_p|5U$)LK_W2^_a2qxlMOyrLIyTTXJb)Gw_!T!MK{ zDI{k{=57r150qyrP{C?&pGhhQY1S>`q9bLdQMfbn!6#pf#KXNO{#n`OKVEq;yFxvpgEA;Ai-Z zy7vPdC(+zglzjt#)+R1`_fp(Lo>E0pRmoQ7YjHAn*87qTO0!jlG7d=J{Re~WW*~D7 zur)R;O)WEqvxunDB?|sm;kn`<{@j0Qt{Xx3PiHv-Ta~GdC%C)fU(X?eo~gNmVq90W z)-7x`|rI z%qigODy|AQ2(0db(3v?luzJzeyTp-Y?jjTl{Bb7~I)U*XC9sXL&x8pM;9=&AKk^Fk zZPDGwI!w&ausnb&{PbB0=2E7L%yw(g z6&5pRP-cjT$5%nEnIFd$Hd9y5sVTq>^g^lP#HO={OG!jy2uMMv&V--eQW&eC6%XIN z`vKPQ*X+pqXBi?`0Q$TzGmKJ2L~E?c zJwTYPHGOF8KBTyEdrR%6-$e9C8W9Yoa3G^Jt#ZhBS zSqt2U+HoNCyLUVX5$I~X5FaDa3B7mjPLPUK8g?@Yu-0dl_S%%wp2=M4}73TGYHz~nls1H1i^_yxytLUdust34A7}JPlV_m{seze9 zfCm!Qcb{*7rCNi6g7RVrt+_MNJV`#X9uP((_X9&{ z72%1yW5Uc_j!@TI075=(m^r z@_=r=U(WOU(tCf5=2?>mP;wvm%_C;$^*|4}Aml*lz3MMCi|0V*J%#G_0Fucbw8A3fsTAo=vbU&OU(`O)*Bi?pm3bRVyi%bZYxO*f#!b6 zhsedlvVvFZt)9N%OfIY-9_t*2XP?Qt$xz6TRFPOwiqKuACz*j9$8j+yS4C1HGY3k{ zPG-5Pi|ANM+3A z5{M5P>I2P}3m0ShdtPiIi$YW-UQX@_G(m(bRGJ%!wp-=^-o1OrLdd1+cGF*WW1_VV z1r3-+GiFeg^{G^S;4S`{$ke*|)@aOv61a6kl)pii^bJBvZ9!d>ZCy5M0@=)c{_f$D;g z5wVQvLM?OTE|$<*8hH*lkIP}t8*q$s*3__aQ2Q!#&N0MEgwZo+!iE;M4|;m%&dK*` z!7Vsh47g4&Jn$dKg=Pz-?VtcinX}*zGZrvwQeUsZZQ^`8pCATtawUJEjFDBiuyWkc z4M9fTB6fo8eium7J&-jsT-p<~{L}`)2N-Cghy_N?$pWW4_m?=}$ijeBMBq93Xj{JJ zD$t=!-G6v%-0hJ7l|Q{}2xAN)lBv8cnz4n6F^HJ*eZ4D#SreSS#;OZ5!=AZCGLl?9z!ulY7CAAH_eWm!TG8}c7qXx zqU=^uz^W#P3H3qhd>vUWdXAh73QcD5>?hJJ3^&%^tdjnSaDJ%eiaf8POKZ%{O)*!% zVQ~{9?q_Ni#vtQ&>y4T&cgKebWi*BSehng0xn7VqCk}T^pn|#KYa( zvGplG&O}7x?g!77pRqJ&?zIg&XY9yi;qA!Wn^157SIyioS(;X~A%HqF!lIP`n;RA} z?Pg33lZc#@Gkn0E&naA$ewv)UumQ)R;|K(Q;91Lsd$o%Pnxz5F{L0k%0FG&D_!)~? z&53n|0Sd623t_T!slc{EGp@GAPE=z{qLP>wBN(JPZth#5ohKu15s!H1oB zlTvOPw7=*z#Ydak%T%pD@CG6zb*TeMgf&y$A%ZWiU$7%1fDT>Do(z(3X$n>qSj#h5lYpHv=M z+$f}rAus(}(q&@N%SpyqD>l zcA)D8-YfgU0rFm^*N(3r0pbXJeg0255!>)7>APcFBlUMz^)IMFkIR_nt&&H>%+Z?i zFSpyH9v#=SW9flaL>S(^`U;yX^K%jgf54{_Hg9m;nU)c2RSSwsHR-Tw8aAs9e(NvjLWm*&}|AwF5*?_Ps+;S>Pt(Q$mI5dWWn`%)ju_J zp0`-pF)W&q<0ffUnablwG+<8h1y6@^yUrNLxb>B%_LYw=c|x*=d=pt1@;=BW*%f*j zFA7`Z*5SO}bicwS2LqgQw$?7|pTf(`kqXh`?0gVJ^k_;aVK+hvK}^5}PGaJs95{u~#4~iFBr|bOy~yjMr!&mnxmO_bLPArYFX#crIB&PdT-Gy{MZ&Q$M&>{i zqbRvtt{5SRXdb#?GXz^ZT9dZcNT!@i&l7`1Jege-zEcVm!69UwHZ3viAwN+FP{NGqcg6bgbfIUG)ggXYWS0TcMv zJ1b4`VX4!kK38%UI+nKJqBClS%wv_tgNHXg7Rnnugt_<5Mu&Js81(V*twgaljcNes}Ry5s8t>eBtw$>#>UXGuT`Qg}Jr@tmp>^ahFAqVqk{1 z#GX|VFyPxB3mQOr*WNLMU&|m9{j6G+w-zA`$8kjpX1V~Z(~QvZWoBr@1ORa{U%3Br zmqjy;jv6{rTH*Ay-lE|hbRd&#wc{M-X>LFpFb0cUQNkAdRRketDFUSh205ZN{j|;u z!efRS_AEMaAk2&fu}o-fGnH%K0v)NE1rdPa zZXmrMm|RHrVB_m^2O|8a25F&;GyJXH5%2}O>Bn&)bZAJGmn#zpj9qK2YA&dWpHnA1 zB0wP4DF@M83hxAPgoBpOB8ye<2S5Wg{4fw+dal<8)_?CTxrWY#ND^=9o$Ft0gNO)C zWEU{ZbFICRE0T2iDiH*O)*Y|{e^t%N5ybQ{8``9Fn`vku7&9~aB5;6}hGn4BtXb&a zFlVBT8s-Si>_VIxhLO_z`1lSzI08doW2bjXan3M;1N_u>CZ3vK%w*yiC&L9if-{hq zTf?VyyMsAY0qAj=(ho|YLoxfb38kv&s?ujVtFbK&W{N*_5Wfe*?-tx;WYx^B?8~( z7K%mv0^iE^tI%r%UL)`tfv**Tm!k&cYYBWECUm{Pd-=bb-7x}iEd682oxStd9dag*Nulv=Rv$T9=L(V zlO;5uNCfaxB?^*&9!&LcuOFK4fyaOP7PE{0f7e?pFAP^ zq8^@ncRv37GtU3~kvc}{cs%Dik3!HfC^;>xj`ZJZ~nKP?Ef}-=#^+gRR9D12_6?Blv zPwL+?^&m&!t&uX|j%1>fvy@{Nh3*F3-OT_cjA}Uvaaob7^Sq70P07gQek+jHo zTg;7Ss*Kc-v8LeQFvCFvSXRi#J;A?n?)nr<%}y{ve((r3dLz`e5ysV8b92N221PGy zw{>>{&xS-%a_@5CLl9i%T?>G~zIpS(_4?2n8MKKwbA>_xLD;G${7f!tXH5#tIhD`a zc&75*s7C|*5oB=WOam#+HAJ*gcNJY}psMv2B)=wSH9cBvI1h$q6ao>Bejw#GIxQSE zEi^@7EDzlt` z1P*q0*;`8PabVSv!)02{bldmzr1@$sD6ruPwV7chf<0mp(o>TUQ!GT#YFr#L(OeZ^ z4qk!i`Zvmuo=k&SofVFgx*(kM9&m<$=GNpbwg5b2b`W#=?9-GPN|DN>6GP+i@g0=j zk7$ww$0EZ7m^;`Q5gHK5xRQk-r|bvc{_hgeE7WcIg9&twp*vmb%mJJ?()39|2`-sw_T3!>KotPpjde&~RoB}&u*KRSXG)xk z9{^??6SKKHEvI0Pn4lcGhUOX=0uhQ2Qtmj&8v^PJa1q)7oiokad@iqLB`x+4mLNU zeJnO)nUO|UVZ(HQ&|6rV5@A`a=jaX^a3OJEr+ zP?P0R3_bMIVofna#ODZ2E+RnYM1MRNdM|4y(lt^y0WZD86GIVB*PMgZMH3>B$z6ES zgo2j~K4bfzIoDl|HM63x_=JWY67Yq83Nx+1*zwOSUL zK@w+unrzdEn3-!QcI>v+W+6E;Ia+Q{Ph6jjnuWt-@cgsi3N0TX;?cAys?7A>Rbos+g;HWLGrvH=Dt%O8Bv9!$3JP=ujZ&9P3xd{x2M~U*uujh&xe%$M~|#Jn5!ytP}_3G z4AT*zm5lm@xY?Zu8?KuOMggBwI;r{8$Q14#2!cmwyD=gjy_VMq ze8&iUty?G-?F)QId#~cJ5qOQjYXrVU1YV9HkZ&RW#Ukk1@WtIwclWMo{(i&1toJ*J z)Zf?*WHx+b$uAMu8mYg8=U-u$9$U9tydr?OIW^CSGy$FL9?&sTyxNt0@NXpxGYYxCfxZE?Z&nwN$GYj+#&+MTd6<5YMf|s+ z=H&k7^5Gl0jvrjlPi}ksbLR2(%0RAv^uhSm7hG;F^`EQq@qGNpU)7lH(%-BIpc9YI zk019~Huw1WaeVv~566pR$J>Xzji+CHQpsBlZxE(ix_7t!!376C_;(8C@xk@!AAkMs z=fAF5L;ydpA3nVKlea*-9FPC)SGQk(X70A7*ZMUAe^?RF`LoU?<2V9guTWRj)W#|0 z+{sdj>vkhcMf&3jVkWQRHZwOHukKa6#)(}lSzuEe+)BP}AMxB)x**U(6LT-_Za zxdVp72LUy<80Z-K<9)hXJD>w_q85soo7vOTJF-ZywMMe0qYDOlBV>qCz(W^AAR^H0 zjvBe%ns{0ho;ge5f?cQVRX0G*&Czi5O9XchxXfgc1Z?icpfH*_dhY}iH)xXVK;GT4 zh#_RrxiufhwKXy|T3NKKiShyaCxo|7ad6EH?5X|F)%8WcG-H8Yt?a@k=f zEAEhN;Cdi%(l7@D^%hJOhQ>wC6M@E`IV)3lW>a^242lGz z78N29^b>6-CaA5dITZvHcHJ*d))_*T9!Y*4|Y_j`spsKWOCm-=>tm&}?-7goG_l412E)Pe)pa&O;PXx~@bZIdlak*SW zrO{helkJSJX3IC4Y#Fk0hR66Y2FW|6($GV5F|*kXE4?eQ)U1IBO&knMUuJ4G5+!sp zRxASH>*!dv&{MVlg+K-HrY{|8P+g%komEs@;o7Z{0Kp0FZp8`&3c;P?6lrlN?iMKS z-eN5p+}+*Xi$j4@+$mn%|LlFvzFk)tYpjg#{pLI8e3UT!x6G2lpU%$_y={qBB$C&Z zE78vNFfMwdmBjW=A@1d*mQ@M?^RKP-I`{}#`DBtS$cN7dnG}k^IRo7f$1N|x{=D_- z402k(YmOD4w-m%NzXET6_F9nE;)9wXlH5ON za}S3QPqrfWaKu)he_Pq>^2Oq7^c&c`uh}yX9LW}9{AP4V7Mn-4qdgO7d0~PnD#3jF zMeR(e}J52kdiM9%c`viQen21S#F2Ag(M5x-~ycP0+ zTRGY#A3G7l6b9L2^oVn%8ZoQ+iG+IRB9OqfVsd7eeN*LoyMT(^IfAr=qAtd=Y)Lek zKQL%xRDb?4UT{?E@9^?n=k4}Jzf>AaSETf$727XWteGfOS}C3gBW=(3F=_~ge7OwE z?Uopnf$%b3YLb&KJrsJ0B0hxn|7ihE%oJocMR6!OFl-`NNtz70uGrffb~$aH;z(z~ z4JUw|etsYe)SUSWf@!WAlScL%wNV>$u+!ax|Iyw%TTsfxf{&I)uS;6?^~v7=?a zip^ypZ=__tnjDQCQqZa^!OIk^k+H_PLRK#g0#XUiL}Kmn>9i4B19hTEZqvf!fHG19 zGb<}tppIX12*sG;a8~aR9N+ClQc{bW82sEFf0=UK7Cx)kUX~9HUmBXkd5(GG2Z;Il8dQs1M?_!ED%wqL>+3 z3(Fi-)+3wgmHD&E%qtyb8@Y#18y1^yvt{_*?v5zRuRhw`Fr+fo0kabrXog&&_PDQ2ZY zdVBEN3vrKotox;ODg+|0);Ji$n z5;x%Ki?6HC1B$>Grs~O#mvkCRC$5cwVpmtH>&@50^=M=9-8nD+C%5}vB7OJ|xVzY= zxur39EB+MtjSnTGbSx^Vy>rpHn*`+P{_jX8@cP7mT@_P)gam~ilV(IYR&amBIl$Ai z|64;ka?I=_#IrU#!~Yc2OSg1y)A^mCG>s93*PZ&Ns)HII`fq5h#7Us4&hvSQmdxQ9 zBs2ie#Q#pwrYtZ>rY!lJ8T!Fa63Ol3_c(ry&}l&Y}HGXToj~0w5kfqhL8V*ZSlUhr&P-;NziOX`5z_o76{aRQPVdLs*HR$I$lEL zO+SundNsq`|Fu@VF~Mou644|R;Oigl**tzm*h}O(K&ZQmhkWHXnZ^Acv@QOWdpP+1~qW*!wAtohD; zoHA)3z~sk`mNmK?^m5T}=JyjI*)y`tC_Rmzr$CZ;IWHyUKx8;}Y*39mG@^7TW&iJ9 zivwZxS;EERFVOVMogM_G-sfzLTdJ4oFQgDpHD^zB62v-Vb%Osn&x1LUsE>`QUF$R) zTm#=Vkp)91qZg#Wsj%CF#-ihnO39c@%I$)q!$YdBZ88lvI*am#_;=xyxwP;>6>=w_ zZ+GHK7tVOGB$&je2V0^sGsl7Ae^X96hY+cA{t0RW#c2d2ZkFS3TnO8aen*i9#w{Cyxch|!l%rExX@6KH@$mV|iBH1WX|}o% zowvx)`N({N-O@hq>3_m%D3mWhcbD4ikia|CEUdO;pJaKYrQY}W7v6&3mCeT2SWQ8 ztei^5V?qde&I`D8f`2+@2U*(72Xjf{W-}UYw>@C1m`xq}K|TovnfV)oy@AfO1nCx- zS>X!hzW%szrfHcnimfcIvpnke+mL4nLTlk>?5lHAHBI zDql`=o9YVq)peou8&e)XU%%HaK&4Wl{{3W7&qqtIsY*ur=~m?>mklD1A>tVv*+4tS zRCih1JtYVA8vXhbmI%2K%J*W~wX^^-f8#>_Aq}&dH+)}^NXuzs=PJ5F3$6f(SZhFrtvgz44j3OKg*C&jcafRw<6`auD5ykB&YV zS0{8%i!b@*m=kA5?*_z~JXJFRYaePZLzlMw$^?va8)0IWof)C5F#`%|5-X`4&n_2P zG1sCDwdCS8a%3c$Opaa*7O)Ef8&S7PkmQr!x4iiX!WbzEF{5!>fpF`BQP+|=+s<=6 zCOpRuqNLIe(BoQffQkpMw`=a37Ogf?K@Mn&J&|)zQR`Z`1YVc+y&lO!4k)psC3>t6Syp2Lx$P3#c<1i70%Mx9)^Q($Q3R1vPt2+aKas1h%RqRu7 z_w(ECr}o#I^6tmqn9c;3=PWc^6brWVyAe*~k|=9^p3$$-ad};@#fEXl&(%|DuP-#V zivPA>pW?dj0$%&yjm4-6FV{cZvOnmF8ioFQ=l}eAUmW-PQ`|wno6h6q!7!kO`zz!h z$!qoNSKRKGsaL_ZRnKj>8*t(zC7T=DfcaVgjVosOa{u-6^)@Bob$#u*zj_bCu{F{C zeD3nB8RQ}wIa>YF9MJKs*!&SU;NOjcah{@9uk+(IgSUVGmE9%$Vut|QsQh!Y$>Y^SQ>=vYFBIL4Ut+6xqVvm`t(VIVcJ4fG^ugs;t{UYvwZsaNuJ9v zvSDGwWdj^5IZC`T(9c^3ok?hV{TjWv0O z%2@+Vt61fK+Zcp2wjd1teYQyUCrIjYLX`fcyi+xCVa3SY^X0nUU=6 zX_QfF6t~DqD%mRa(P_T_3aB)!e7)jjzOd zEN+FACB?-o@l~(r2^0LqE!g9YGU_;1M2JfXgGKwK+{>1+`?Od1Onl=oo$S&>n9Y+QjgS_NL)bh$McfLfy$KIImPSphs|Gdv0K_+#3=5{?H%d=Pso)aol^PDJk zr?b?(gf+>*!G{Zap_-GIGBviQS0b&CwL^?N&*VP216ad&!4=(H-K*4OBnexNDt3a| zSuNZ1bxxJ(t+1^PYLceA>!6wIMg&TYjS#2I250JasHH9b3~fYk>GW+|!=NSneV@=` zic7quKNoPMiNzdaaO;8*aZO!IpwxPtkVM`Ea&Yk!IYjOmpwJWM9C`=~Pn(3po;s}Jd66o~^>9AGDf|qOYLU@A*B6TFE1l+IS zLjARU&n@h;r*qvZ1A6AUDIawDo2zXaNMoa_HQ#246Dg!sQvNOB1y~zg{&#+rvH7s} z8;mXz44p0I7ux6h6QaFEx)SZqE-4rn5=Xia1xl#0Sl_7Dg<5h|50TQcMvyUHhW3u< zgvQc-jGffr*Ef3`om)#Adk^HZBTN?uqc3}{1wyVr1k1J|Bu_fdvJoa$>j}GA z&SK`Qj5}ak{nAAt!$Vrr`(_d>XXoG-D3(K}iUlHY_7bnqd@a(9eCMFW$}Jk;LWP614N7^g3Bu1BMtcMA_(n@b|ek z*N&*MFbE3sY{EW6KEAhb?ZS?Sr{J&$FfxqpN^PVvG&SRwQ7{-(BbYyMwdmVr;&Om( zz;lF}>8+BcEz#@anU*S4HSg;``z13^uCgqHZSo>EIoO*p4TV!(eGhGV7tBt0bkl^F z@CIp%~Ds>~Cz#Sl39ORhf%z7983LW0H4rFZL3q3+ z@EsrtIEuwlE>J#)Lj#9h5J_>$1WD0Bbysy2tBs#i1RsUycOadh+g$BmUTc%-!KkZL z@H_0mjBglR#q0*PtV=zw?ssEeKQDX!y7~Y1J`Zw4u}FAUkNfIZn~|VI7g|U_BwLrM zGQhF_)A{q4TjKnelPV`QNviXc-GJdABCBIaYK1!jz3}Q*Y9Wd@^<`eKP|jzf4*T!t z|I-4rwR;hI;zcC>neyI1UoZPP;*t?oPrX}qArB~M_uhd-8%mz7KkoBiH`M~JXkKtB zUJmlbpY!8hp8LDK?AT{7MgGiqy-cQ84L|hrWH}N%De?Ii9X;gZz8r|>s5^H&o5T&R z(7fEC1^5=fK5m~NC#r=xr+l~V$)4@PA?9@K_PsrNy|$7mH*Dj44Upz`BFnV-H=O<4 zCTie+W%YWxsU|jFoG`F*f&9#%m((Gw)lIqga&;MZL6GGM&B#7j|9yF$may*^^n15I zB7)|*r#7Vn<^Cik?w)Te(zhdbUqHG09X#mhLmkwZzm#6#NxLLJ^lp6=)5=|Pii{QwOsp*-rokK6N>#lBo+1csxL|LiV3=Q5PPUy;Haj%Up z&SoSk4`UA}*N7hO@}xUH-Rl zDBy~6EMshRZRDC#dQw=?=giSH`~Z}?W`Xholyw^J#d5#_S& zkE4WH0p27fd~owa8E}=N)Gqjt)p8RewqJn$iaNfDuBw67_tl&WRi-7W7t<-m{4{KE z#EJm9G_9G!rc|b>Y;XL}iHqyU^ob7kvrOf-TmSeA$+EINnMwzC?l>Oe!l9n83v#0f zKmTQE$nOh3zjaVOIF-?Op_hdsD@x?Z;mPsXkCm~=(1)}tA1@?clZVLQE12sB#V~KN zdNd!kO+^AxM~LUJu8~Ew2px!_M5PU}xcgDmALqT=MdcbIC8pkia?z=_Ghj+!{iZjp z+Gg?Kr0WGeK?*>JbG}$Tb5v^k0@fA0V4ps()D8R`^p2c6=2HZ7^EtpWjoSjp7Xi)7 zdzL5#mS6Cf8Urs)3AfyD3vv|XJqa+8BT8ue)K^zZ3fOjuDX9+j&%?N?@)_f4n01XI zRJ8h80sCrgCSe(f!B3!+0*gvigm=XgEK!+lh;(i0$kbS)>%F1H28923#W*7sptQWJ z*-YF_D$gNiGNaPm)(oI*bZ+ws)ygb3hyi942NP85*&P()td40FWmra++nghCpn9zS zu0a5jc$W#L;c;w5;d}Bn4jlx4j{cKjOOHZ@@uc2UIzxle(WXZsflM~sAiOh<`zIHN zhAO}(T1EVd0%cI5ucXrp5Fri``@ zfBbKgSQB}K`B9f5>mEOm0wvCIKHz!3bQ_7%#a0Nx!z@Uam9+x<;0}z6so#z&gn+zv zFgEYi;=uU;Qo+RfP7=8P#i#F*lb2=RH@$p=vuuM>`AQFc<21HUy~UP|ghpK*DHhL7 zM&dl1{AD$%d>V6bTtKQbnYBB}vMHSAu_c~J3&fXm%OGXMNiBFp*%sn!W9d3n_Z*@l z3xJ2#RAbDpf{|Mi+e{A^kJ2N3SV;{hze9k6<0Gb%nT=(*7ZAIu#d76f4gz2sBu!wN zFH`(4KNt|D&s|EFwMsFAARrI54umGzmFg*T;|9nu*W= zE+ktgU-FAEBdw2PHyrW=e?YNX3E?e%g}vEt2%wXCQ!KR@n$x(Ivk=H7E>;}Rh75*- zGuQKjG>vb+Vks+clbi~sP(HlyEvf+4xHi$jjH&SwGH1uepJGf(FH^~XEM0^uq0X=6 z23~C3ow%Pe_{k*56W@PH9)e54X@7wuTHp9f*mZuME~Koqmb-%8P|0XZ;eGhz&>;8F zG-8-jCr#&3FovoKB{G^IJ~}Cd`Y_@0IW|J?C9tXvZxIpYbyiM-Fb`PS^K*9=&O3hl zFo$@qvOaDZ%kovmlFZ{K9JfaNc3D~InrwL4c^FYn)CFG@P~c&dVP{(~BeZRIib%kJ zDmgU|MQMTc9) z5NO!wcDk;9_^-tTetiSW^~Bom(a7%MGe&Ux_NbZcHvbvc3WoZjAx*}-j(kEAb! z2i|xCH_BN#*YiKmwl?Q0*b_>+OLp&x!m*FY+(bk>!M9y&qB-Yy-9F8OT`3ssRCL@29#J<;M$Ed|aL^l5JWCFR0X?;OhkzW=Ix zh0J~YcWqZJ6Yas`c<00{+NGyrupAL^bJimMc>en2G;v?esjh{p!d?9%B zvbQA~i%U~bHas^a9u)iI6Wj{=NPq4lXXR6amSNnnO5!wlYLp1U9w?a?Q7as!o%5k2 zu@&+ZMzx9I;BG#aBV+uD$G28Kio$47)J4rR<9};ooeRlu8GFnF8 zj!>&8Pi&Zx2ih5&{%z8aF#v&|e8Sg5LBXi^^X?i3N@=>j4!w|03@tEm?ahR^W?pk#V0NC9tnv+SIerXkh!exQ~M{>^qv4jr_h>UYK(P$dthnQXb$!7w#66ZsA~oS7vFdbUjz1CGTlctyDr|@;2ahsT0vWi@?4?%XU28)P0OkRx2vtgK)fO>Y3Q>vCfxt0dc`tr8BfL zQ=+yRFe-~qPQlyXT;Z{ThWpd&<~>7#@g@fIFnfXt@{FYsZ4=cQ-FGz<_CH5`2;l#o zplq%ltl`uC0(KtfHOGgA9G>_~^Xtj{`q3)uaHD!X>*pRA#5%86S&7O;Ox>CET^sEr z3}J*9jsjK0%u~Ud`Sg@wu$6UN2-GJkbJNJ>Ts$?w&JD6mLj88hhiE<=@6%KiMgA3* z3oy~pw*&c(Ss$w(q-lceW^5OfIinzj1bmw1^nCKiZp=7NAoGxh9Ba)*Qh`K-_nYHh zYv-b=wMB#5Rooij5O_=)b9zxr&YI`bFGku?x}hTIRqFjXpv)HYi{C(gR?7!=19d#K z4H#6pvT9=mnH!J*`&{)kZm_vOp&zR_f6h{6=aZjth49;sTL~#k(xsud1%TQB$peW^MI41138Z7?l z9eO2on5p(l>dPM~u4w!D}KUvl%y6mypdZCUqA3kwASP3j0I|MB{Z%1gitST0}xWg9u=c2&1@ z{q_29DvTcfWD7Cemxoqdo;{bN@pAgN))B9K=GRr4Ilh0& z>4%TyfBIeSH~YV!=ARtQuV+83&nGs|h_`4>szqpY4?>wm_V=q-Vw;`dC)#Pk>%%u+ zA*b%UyVZb4i}nWGmz|S~kRz7Y>y+-N$L!s0ujd(x#q>odHeUyL9sDgnQihcMqjq{b zPHC9kT;dPfXgg-z)>GBum-#D^Ypa?R>3jKDVVwSL!K|zn`_$pwC!ZpX@zdT%aP^UO z;6(I1t~@qNZ(xj3f7PsLDt%>td*>y_;ZB$& z$Znpbgx48qD(qM6eogJM+jXG7kR*~LLt|9a8jx#sbH8CY3r(OIYp~#-#NN>L)we0^ z^a(@itlaZNe-L|PLTP_0uvglkCXmG)z$e1%ZHZcKKBWI?0qSEgoLhKYl>TOvg+^S= z|A)dqRZN6Xe!IOUMdsxin-;X`u()Fs!lpGEYPV}7lpcdn{Ht6^%By#k`iDVMZv)G_ zy5bRoy*-el$6_`m#^)os0Tq^(u_!RTp0SN##hO`}-1Zw;+e;zhpKNDOv(geg) zNd)c9Hu}eRf)vZCs0Tivs8uo{Qm6znYovzM6|lk6z*|Uh)>k)4(-mo+!Iy6C_dN#S zWH{iMED9;p&>CSffkBC#j8a-KzI33RtcbE*A{CD05VEs$tq>JkrJizWG6^iuO+r1% zv>>nyXQ>>8<=5*9Iv4SUD$j+zK$7O{V@hV*<4`hTU3-}|1(epqVLM{qH`9o*fs&I= zFEpO4x*@yA7TetABn`4=zB(@6DP>V$4x0)q9OGg%J=!AIiHyG$B?FWjjukpk>;$53 z*{9>K0L4eK-3IJmiGNZhVrFC@Gj2q7Y=8pE2->hBo8TbK=3OH5N*+rz4!0U>BWDDI z%}fIa>PnaT*y$4y6v#$tm26}`Jo7{bEFuAke<+GeQg(2*Ey~J4=!6#WgNMRCp4LMk zt)qDQEy1{8kxHsgsH3<6*C*5_NXf-EQcWCR>gh6M<7+eDzp zBGU!0SORO9P^J*QU2ro~^|7V_8=XJZ;z>vc>AFd;nL4iShbsNi5r`!ku}=2@(t}S zfnoj;+Ya77ToAJu2Qtfnby2NlD`iw)AzD?xorg ziDJwZL9d9FY(T6LKa^Bm>kHkm?58X$%?0uv4$^s?h}l|>e=MC%izxoui|uc3I9_vz zXUwtpWVN6t9&1;j3mgRGSD?}Npvh10UndyDVhgPuA1uOUaU8aCrsjSPKCuOc7nbd& zB@^I0vJHR5wbte_XrU*BBT%vshuHWIkx0qQ@X)5i(c`UMu|)DLR10|dLvYx6vGjqU z@R8Aq-H1UR?vl4F{XZb&W^yUSm2a!3M|n^2`JuzWbaGSVh}>J`YTkt9|5!=<1wfvi zVGpYV*V;$_4FpuvBKf}W?(uNnmj#W$&#>mrPReR3W6~fh{=aXJpLywd9d9fs*Bj0r z7w=R=J@@tzKe4JMbT}Ds;X;`kFIh809QBU8gA4ZVK{<=ZFP2gSHB-bM)X84&+`+a+ zS%FShzFr-E8^nK6jzz=1C6HuoPgtxme-U_#dw7y3AaI)TZ@k!8Y%2sU){jBHsjj+8 zbn9;8VN3bSN2FWtpT3KM|9OvR9PT=6$JvbY{rSYj-oyE@c+J#Zu$j|qT)=$n%g^q| z2(_2ZPl7A!U36k`;*Z*5YyRhF0aqb#iL=GJYCZot>4`jOeHhrHN40@@F!K0pj&rD3|P zBYEgMu6{bzSLS9;lr;$S8CB`2r3TW!D$4$xjEZulu**U073zBSdQlfJ#W6O~cW3Z^ zr1K#*AjadxS@-hnyHfar=~&@jHx*qlo^o##MI`qQBay-^Yt7X+Zl@;jcLWN%5l3{7@UYgR`^)m#rOYyi0iw+UTG zE@Rq)nhZB+=`T6T@BW|(5hXh7pbPw0effahaxv>jk4s>knOuP@X z!jC|zwVmiZjLbC%6l>3q8_#)x$Tl}&93@De9QQCT{`K?7>TJmp`-r=AK0&Fad+c80=<=$eSMFR;$dh)0J z(r>eJpOJ*8WY3c?-2@t+77&Rj10BOxw_BV)B0zTOK$h|uZH&`7&O|9S*a5#pwPWa3 zN`4?iafbR5o#y7>9?9S2^RznGm4gnSgCQHrWj@AgH^RHZXwmGhrSdNQs z@luG{g*cwp$r(I~+OEcZ8ecB`Dg9O{Hv&Q}ITP;eZd`^knTF{k6t%3j9h2oi8#VHQ zIkU0SUgq5JaiWEMhJOBtxeI7}M8!utR;?WnOfZE(@7u;G#-{T`8=u8m!!Ez%BkQq?)9qsM|3+Rj$0 z30Tuhp(UHlqCo9JM?6%(!OR>+^?O2BD=o9z2toS@)uo*xL;wi79l-0Hz1OOB*4zNP zHEx++E9ciPT1y=m^*c(9b-vebFS1>D4(%Tj79hu_JP?8WIHOa*zPH;OtDw|vtj6-NBQ$sY-IHcTGRrN#D5VF0b4JVRhqO*!m`PR5h$ex7@ zzQe?_0g4&uD>tVzsd_srRxFRuz%M@A9>Worn%FAArtk3(pEug}4mg;T80;sJsM17L zw%@NNU1DSt(NNk;i5?qlMR#`CvOWXKrfZjJx z5mw-BZpFaW%C1Jj+$mTkk8^dJXJ|GEy9e1eO{t(&KXfIJ_ogqSv1rQgt!0H$R0fP} zlHlhErS-t2bqp@AGkP*$LI*kIho@u4r$@Y^L0&lvnGNLI(g!y@_k)rMIKUXpy5|ul zg&AJ-Q^{a&%*%Bw*B=~lmF5zdA_W9_Q8{ePGXY|uvT z9!giaxN+q{Ii#x`Hz4Pqu=Bd7vwrjgg;E#XGfS~Hd_EfVz!N_#CQUU>L_-5PT7D|a#G7C*cR2?EuM20z|9+I^wcFVD zpYd5>+1q%wM~*2LxQV`t+H12yS3+3mdRzRZtaI~PTj&98(bq$G{o(<8@fKa=N4MwW zsQ44TlQ+$s7`Cs`q6nv52!vG4JI(uY0UQ8^h^sp>#gzq`y6?S2EkhLeXc;~vw0 zZcq7NAHmHeaO3~e=pSnr|9>*m#Orp~aIA*|=&tF-`HHZ$Yb$eQMI4@llH@})>g(Ol zAmObs9E?s0z?W8(lb#y?bFZa15f7vV^&j~tyKQ#{0@v zL|yp+5APHAzm6ARzF1>3fjF>!c=Qb#FPuY(4QM;rOU?H-Dx0lMm4frM%}J%Slaia> zQX3-{ztgmhBac8FcX;QyT6vT`LvgltXe?vkmK^%hZTvv^R+{ArG%`x5IHW%LJzCr) z9}{G|@?O?8jjpOa11^@qY^0}NvpWO+)Sbx9^6`L?_w>3(1uYloG!5G{a22G_v^oV75WUKdcPsV*DyE!hMm`niplFury*yJoQJZ*g9;`E zVFC8GFbD3S7AINjeZ zN2yH?2PgkLe3>V(8ae^dtA?;ZO|;KMlilnn+{XhE-^_mqifF42t-kYWbGr`iJ<_f8 zLrh$un2|u}zKvmfdf&V981~OK_xRl0c0=7H=Wuc!I)YYu>v%dGTb_+dqNhR6>6~_m zFzl`^)TrtbE|Flw>mEOIUIw3 zj8;|XjWArKc1(2CAm~`+^@PkFnqtT0777>l?Vip$79Ap&e`PBE;8AGF&Z)z*SkUcE z)q2Y*g^8c6EVHznDMWd$39k+CT%vMf3^rpe!Oqlu$1c#k%L*ntzq?BvEyKjIz>V%r z#^#Jnm{`*Nr-0Au;q9(#+T^WlqpHHr&sM50aiYkRL2SyBw6;5? zx(K7dBIPLVMW!t?Cetd2`JWaLu7E;MrrY)dLM9RmEtIUsn1z@0z2hgQ0&4BezX6C7 z@zPdqmZa6`S}vNhGUeae*V!|FwC0HXs=COlLlUaJz z!(+UeAE{pth@0M;NtEQF>8c3jOJH!hhE}geSb1V#p&|jFxZ}UO#N^91Y{y3oFX2vZ z*Y1z&MRCbF47F_mr1_6j1R_DpD75il9#0MG2(Gn_;$};1=O4u)Ruz^ss;S)7)kh`I z_auSv`LpJIZ_oSRxqrNso&JO|&()46S6UX6wbhrht+bytYgP}iAoNq(6@Je??J%^C zx>=)HtGW1Xd?$m0SXOjHZ8(d68>7n)d()&;RAH-f1?(VXp}-7h-Wt<3^TK+QmS}!8 z8C5NaSJWC*lQZ3J!MyO}HdFq*q-;>6lvb)p;}&_vw-B9QelKUMDkfZiWNE{{Y7;e+ zIas@bl2{{_M_E3o2sK21*dMhII@RQGL?sSLEv6lrul=iTs&HhAKQ;z~#39>_K3t~v z!1Eva$NZh%8@I=Zt5VMsuXmrSo7KCm#Jl^ty*GX#i(}v(JP#gooOmd(4Cr>z>>ua* z2Hav^H~yY=f?F9aQu%Kc&V94JK+gF7<3-%NR^&mzBg7UrjI z9ZRVe;c?L;=YLn9-2%zjzVtcw=a>-}i|+njBCDESyOOen>o&C_8l7w+q z!S$QxCI^aZWfT?Odo3r()nY;!VfKki_EhtUlmW7$wgq#rI#)`>wxG9DAg-*)VVYUA z@-EMnS9%N7jv@nEhUtPcyYN7(1C0i5o#8H-%6wErRj0FJrg{8MjsYO7^WCdXoBsX$ z=V2Kjn2L?WWDT8^jgo7~F{@WSeuExHU1qDg*}no2H~hdY_ar!AJs1S!EscGSJl4F^*ltJoUM9{i~9F^NSxRJ4DV1>uz&rX1c0Y<%j z5Wb{@BCa;uDc&ELs_shUU6)x>uwS5zj2%X|DMHyyFqbt*P;!d}cnLt-N;KzguCo3F zKy-vw>fbr=+eNj&3;lwCcUU)qk!Ivkn?25y9mwa2Yw#8DXNk8X=bCB;C#V#G2O7VB zr^k;nKuutmZzIRB?W?4?Hmx91*mV0Rn(MP6D9A$*l7^8t^%uS}rK*@P5po^Dbh ziKzTpL;Fff+-hQ>*B%28x!NyHFyQlKX+6qch=$;5>-HxJ=mkMSCshQ_pJ3!4b@@1; zj~gd9ZtcA_ZzaFb+ghNF*HQ*^BO@Y7#%F#blknWea8F*h&Y432ZsMJsa*r64iXT%H$c$!0ZR3EGQ@2K9!*7~ju|5%_ z0WW=DY)Qy-JNG`}K2eLp9U|V(uTsy{eoq+Be}mx9?nHVhwqOCD=2QvCZjom$eymSj zC_a~=siycPy>KRKM*q{l6YHR;00*>;oK1QK+}l;II${uA;E#WM^R}^L8s6Pi&MdHR zCPKJ&0PSqj=!2f^QW1Ov3v}wG31|ChYs~y%IcqH9@)oCUuKX{fU?=0V9D zYZABn2{3rRpOuo`E&2N6J+&`(^j-a>z@ty8QSPp;rFPC*MxvU=Uwit zz~aFPO8|P@vE%|QOxLaP=;q2e;5q&E&g1mU{XGly%ZSCVYO&i&jXYsUJ|4Lkr(7imq_!yfn^;JTB#GywvYwptJFUw{ z3yL4U!76Q&B!!UCW=0vxB4IRMhv!=-{74OnzvrHE|KQk`sBwFFsQQtanTKwDHm4yp~#KaN*zw? z=~_nmrW2`WK2qfzgn<}5{q3f>gMzNMPz{gIrp#MzoLM=pdqC`tN}xSJRTF`n2qs8o zW5F?lt5T9$i^j)lcHq?5>I1moL4Swn^gjG$o?=ZX_;PV|gKNcA+-q2{b4TR!VK4Hj zo)W9*ce=DFQ^kzG9#7T?1c7E23-bWm2NO9>8E6VHiS2>#=a4vpjEvJ=vO)u%410_$ zYBjSPF13WzycRyi02cSe^q}>UdUW8}sz0Ucfn0JVt$$aY0Ebmb5S@X7_B9CL$*V;&jNNf~+J1ouH>DDIYH??fs+APSPl{|c$QXg|* z2kLv2(7!ndKgW5`P|NEMNYVW!MZ$xZbNbFsNtnI_Rppnd7YGvx_S$UR4B_2*wTkp8 z7kOdyAy_Jc0RFMX#lwHvR>_cYYucO*dqOhbJET`tz(=104k9Xk7U18ZX~H=L(L9Gg zL?`p`9j1sDy^v*KIJTBLy32Ll@C7Q4NZfQg0Wog9S0I7TCJuN2B{p*XDw(~QDnbic z5Eb0#mXir{IFNE*toq9ZqnyK^c8K_9fpMGU1m+x7xHx}420Y-tdm@hv}!w%RY_kJghG9aXC zVhR%`=vIx-jO?@!GY4Dd!9#zz!b>G1Y;B~Vj7mu>;YgaSaW88!5_gZ^(Hu#%l{8my z!dfgXXWP(54-aaib4}JLM);RHE88wsbq`CK5i37cE)vMew?@RiJgcG%co8rkWhCve zZJ*q(ZnDkE;t`Q?2=WY;-H~9!uGuJ(JNzzX^p^uyvFNxpMV5X4ieED|3(LQ5Vs)H! z6>O20=kXhgA+`Qa%p=DUJ6YPflVV(#U5)e{p(Zec5FmWHrW5fg9LxeO)+IG7W|z`L zfL2|8{tY{yW(>j0JwXWhO){4vG)&pQH@^b2!A`ef`yM7Z7PqGrV0=fJV_cw5^UyXoue8aW6w;_I$isDeU}|I; zx(DY3;p&~$|TF8jBsw?KZ;nB%H_Q00#^XuN?B?yOgIUw1ybNR)D)lGB^9p*y&_54GM{V&WeKFOg>9ul37WXnnv5x8}3U- z#RKhk*uEJ2Swy~ti|aYRS8X`J(92!<<6K5#Qgz_UQWHCjv9 zgJ0Y+(d#edYHH8xo@TF}38T7auERecx-z#tW?t3QZnmG@75%fR?_WUOYeH+U^RUwH zJCWyuu|jAMYK2pScn=u+~QDO+#%dlbfBi_3?8;@PiZvz@TNrT|7g0# z=(xhQ8)srQwr!`e8lypDtFhhKjXlZ4jop}y(M;^dw(W23UElqG*8F(Stmi#@KO5ym z-HYFp_}9&E_=cPgvIb9lPO^b}ocp;C!V4%5mN#T=7;lBFB+aoNFW3{pJhm^rU$xfb zc`-#l#ozxK`X3h{Vux0W@Pq96Z98CX=xkGJQuTd4FK*cUW%n1bUCAJ2;qYjD+Y*z?q zeqt6x55Y>1!k6@)__oW8yMg2_ly~7l@SE^PS_%tS^l4Hau43At&1j~312YnFdURq= z`6F!!)*f@M>j6zybO=YHG8wIo5?hh-t{hIHN`^~NhD6MSOXriRaQ&@EqrO7u0)~wO#2N4e={p6|RK7Gn zRC|#SR}L^uXz8a&3?K{Ir7ecSdhiyU+`Hz?r4Ne4pnE+7j-8(>Emaj{~uS#OaSB zpYFyb1+3t&UY^23kaTpZSMJLmf>S$s83y4A_r&3DL#`d(l>RP^jC$cs$5uuZ-L1!r#4u8~-O z>7KeUlm%E2llBP4;EK`q!ANM1s5QB)W}f&dw{PMA(fU~Z-rY-CiHi~|kWUA-VcTTo zbGE*0<--P#!&59hDl`mvAIz19%ru$M#FuwDu{1K37~=F^QZ+JAFQGT4u3bS!pd4!m zauADRGq+XUWl)ZuM9bqs3}H=@(w;1oiXAOP2n-jhIe(=4%VqO*@0jk(4>rB^=5S52~~3 zA1*9lU2~J0I2>dv*ZmPC{sa>r4!Eo;Jfw*<9e6DnUR4z@Zr7yzOkLyA9Bzjm1av%! zB1xxsiIN$;4IzFV%^xf7s;X$YQ462-gD5XYV4+P+mQcRN_>D4zNF(~FTp}PL15(u( zCWTN}hM=i<5Y`unihhz5lwVAq4D%p=#@V(Ypz=?1xV|Lml;dCwo;(WYhG`eZ>7}f_ z`wnAz|I&OfDLtm74d6@Y)%|77@QEv8t5D6BX+g{cBbVXfV<%}rijFJ@Bz&lA6lKDp zM*-ZqKj7tBs>$$uc5xZCgE*PCd9pyIU$o_B&lARNxnFVG47ji-*W6 zQ$pFgPll?@+>Krc0N6)@AOTz`PKdVctU!OLt+u7R{8#li7Ht|4xj7A+%{nY^i(eht zjdLKgl7|v=13oE4!W0JX$Xs7vY*S+0pEngB_!$A*P!rrmX8L0UJh#*`NJ;BTTN*y& zkZTND_|g~U4p!hvYp@d0NaWJ|0ZR3e`$Hun7t{JFAip8u`fcq`;4wK6L0IN}LYCTX z|AOVo17?GJb+IfuWu2%t*FTJI{hJ_e?9E*|Sh2d}CPErp{_nT97y#gv`(=EU0WBgZnFMPKp)c||`$4t8JP(ssU!kxidv=-dd0VD`OZn-| z)@6wF4BmJx4RqE4vx)gdtp_~+`MBZ#I4#A~PEl33Kl=0fv}f(q`Q$CcqVkq`nPn_; zsR{uOB#6wfy^cO)i78Z|!E+VpHr_$>vc$=R0j>6bE(v!o?QQ*sJour7D*lD%KZwl_ z2rM=zJ-S3=IrpCj*0anAGd%PY2vD`)Rre__+5@+XIvfkWPRoYyK7%pn?Xi|*SMzMv zz;hqjh(Z<9QOL(_(p(8OiEsrB+c4O@e7DKz0n0|jiQlejY1S1{YQu$&P`|(oFELbT==Q@%@BPBu6pte{|f)iKD z5ISlsCqsPhpoeZw%C=6(b|C7jFDF7-!*5?){(<6HRx0r!vMRGptbr4Z%z6?kEIiDS z%S6*Mm{YQUCI;nDga|80@kai!rZxpIFoa;`Y5&3K{Ls4Cs?yRg?oz=86?KR&5}k0{IS8NED22!VIUJN6IpM4Boyv?+pm4bUetTy?L?B*!QvAn;R=;Hns{Fq4Kyxc z$z^#;u<J)~IM27l_TM07+veY0NC5MOX=8Cpjr+W*!c%j=rI45(x0|bvPXI%7lFSoXqe>LOmb(4|( zOxewQ<*KN-0G*_f3k19oDbZI`KZOW+Sh6)<;b?S;F$vkFr}DqeyByk3E$@aCIGYjO!K8LQ(%X7_pzG(g{ji{#mSDvJftGV?xEY`s)1U7 zoWx2q5u=La%RE>~K@)=(4YR=%78zFCX*$%c=Ln@bRfkMTdE0tQx@>f4j6@@Tz5)R* zjI+^-BANKJgLzIFe$vj;@RSQQi?V>aa+eoOcu>wsif^*-M!G!Sv`OgiTUP-awQ~c? zvB#3Rm)~wHZ2K&p-kago9&M7QW^)b-Bm()Pf|>mEx$KvwZc9ZnaNY$rP3@bEGOiLD zC2f49_;Lh{s*-UgwmP``=x`pWWrBMa2(7gzTj7%@%%WkDJ2q0tWL|c0GP!eCN;Ryp z2Zm}~#J)BaSEzPD52bGD>{fMAOGqtz_ueCeCA0H;!BhoZv17ObBe6s-1WSw^ew&p5 zb$i;!(It+>m!;zh!7o-5S>l9|;v7P&9_R(ewN5?tO`#QyL4MldQ^b|GO@ivcOSu;TJi;HGbya+O(#HIEtmyG7UFXZ`#OD{N;f2?hh!1XE7N zMo5xb8wEpmHnz&}JJBg4Og|`X6lfBanM{Vf;_1+fJOD}Ly&20H05kGo%&Q~U&dIbA z3s`VGy!d=R?CV=+C*a~O_-ac8Q#m(u&2g)glgII`UUygZSX_JD5*H;q0m(K<6=4eu z0hC>aAdf>iiSi0TUVSxi7!;k2Ml{wIaQ_^Wn&|gR$=RPwT|T65VgB6=3wj&3b|g=a zkLk3%1i@5`T#qbL0qJj6;Ll9EH{q%nVk@aKZf^mU?_mU10@doU$Z?x$?I)NVZeZD? zu~1$~cKb`XQ5OLxWtM3RUXXBaW?>t<%fs6gLNK}W0ynMIjvGVovyJu4bT5enH1^l9 zDlYC|cvX=l){td>?0v28pWS?+0Hn+79u}q!cC0Y{;`sK`*(tEb5S5NpTWD+cXM5oW z_u@#W@3#|4Y-5$S6C^vE)oH)~u3m6UrcmZDUThnTtxZ17ng4@O1`2DesT={2%z*I{ z(>%{Yx-x}#uZIPqSob7#Ut3|uE(b&UP|f~}0523!?bAH$A192?b;-AGk=Mu`uLiMp z``V*<*g$WL&JL#ldOM?_^@MBIwF~@bjpBgL29?o^aVL6`y@!a$74e4*F(XWWk4tVY{M9*_F`FulDa)sM}$b^0S1WA2yCfoJ4YYNG(JiggEd%qmZ zYb8c62fvZ8Pb96B5@~+yD!d(Ci1wGLz7I|ccN#ut2foi9K38E^Zwv?r`#wIE-Xxwr zRhQS+-=w{MISPiT83Z|E&w}w+MfzR?DCRZQu&?E}LhC!+s?;Sdtle(alk;-do12@4 zj+Qn$efk}@X;6Q>Pgcmo>-;hiK!?wY#=J5Oh)t5;{nZ~*xPQ!oA)vc4P+$0pGXT0 zF~AxSh#FlNLDjU<9_REfQNjidnt-SF93kccP7Pp#GklkhM~6swp4v0FKvaUT9`y*e zl{fawT~h*pL=hBaCwz&6dB6xOjrB^q*~F{TF6)d&oiv+br*gX0x*%QT^7ngKc6263 z2k~|*Iu+rmAoI7?OOlK78n11M-hZt|cZRgwX5l6fV0|b^KrU8EQ|Y>2*so!ZIYUHq zXtnx#)tNv=_SbiJw1w2+LmsF~%p70}V`g7Lpte?HMETNe;&qT8DjPv-U6o+lX_7og zE6!=R5!<(Xo39h)?B5+$iXUcy-cI~Q8dNUY?3sYt7d;k1k7lHOh7A36%87t{FBM zYjCI8A!7~(?NA_t6#;e;Y(JrjMyXSHOPHztU7BwZ=p|linDRUlD!C^m6^4l(v{?a) zk&w--w1W|em}8Q)hS^d&p0m6x?21S0T+bY(_%2aZ4#z6XvX9fNOx^2WNhIcRD`iN@ zOiEAq;Dyp-3v_$DBjjZPaP4)3j7(VSeMx==iPJ$dIW3JIv<5P#s>1Gf6Y{Nnl4 z9S-XhQarDcJC@DcF5mF{p_^B`&*hsUt_aI|YbT#bB7Hxh3$ zooavgBtIt#lULw$h*JS7OkN}ddXUhvd@mu@sNcUk_TW{ z^{TjuZ=dY9p<2x+)VY2hqpM~J8ls1zoaE2+dAkPx`PK^ULm>*BXJ>T3%T8e28E*^`JgIAXHrL+nd1tcLH zvmas@yUQ#ZgNrJx_R=md@jz83uS=;{QEu;ufa;4T`E9+ey#L!Sl8?bEt3%KdR=ItD zu90emXcILuX(D=wpz0EUo+xrvN2D=nkgWUu3LMC#P&~Zh`=6 z`l4Z#A)iBmWN52>GKw35W3xY*{t?J2{?_9wcD{E#7?5$Ere8)rQ@WAB#;+2YFna$b zQ`EN(@Q#K4FuzOw2T@1Y`aMTUgpy$+L2?+lvGJzxV-c48s2sAAGpyPuN5^~e3h~b4 zU@xM&VJjoI>SVlz`FjuzhIWbV^`ol=&6zIUja@%rd`Bx;Hw~K5Z{_m0JtS|g*mJbt zZgEl|d%u0i6M0{AGTG6(w+MfHe8`iknnTp|I=K6|x(I~bt9&~8mY40f?%6)H)>=;H1-!7ejWd~^-2hQI2rzvf*5ck_O{sa@kB26hA*}f@NB|n znfE@(?kbiWa7Ty$68^aSc$G)O;zV}m!9e*V z`l0FRI9N;%1M_HZ`1|st>}op> zNmi|}nu66MSwh^77Y(WVz~i6f!k6^E@Y3@UP0Q&1j1wAmg{wz^Cz@iUmFEdo!>Y&l zf=M=Kig8>4MQz@s6dS9l<$v3Q+n8tMu`%t-^%kCZeQ=FH9Q(U;lZo=Y@%AAZOGVHVzSggg1{}jaM z6dqw~`w%v_N9Urjd7dX{LhGI9-Rql}R&%hF;hX3@u0ceSkVA})f>W1D2Po^8Z=IJ+ zPfLb(m@aj@DTmZLqi{2FCQcJGqaqS}c-@ZKFx?iSNZ=6%0sP;WofuTXGW1jXE1st3 zb&-ZNqYDan&4BG{xKpSBk87GxaTJi1k&N?GK=n+vCpq7EG;@?Nf_|r0UpOxUzL;i< zLx&L?hLQ-lG+hQh*o1^ReO^V5sQ4HTWUml@#a}$k>G@2M*U>g+&k_b-%mK-{Jd*}n z)~$F#lk*)`sWRPeqm_PkzFQ#j>RPNer{PqNDA!d4PBN!QX}Q@jD`N-Qn4XG5%YD1Z zh(vrtD$nu`hmqf3RO2}i8HyC}k^k;6i4^+9S;UiMctSdHYgmN~VfL26?;a~?LZbGZDRh93>gG%he zHWvz9$?`*nTCSffD7hiE!1kC}7I+FsH$Ah>FdwHmH@8qFnU(4nsfZj*`?1 zdn5-5^J1~22}J~O_ZXg#WFJU>OU_Ep#Wx?!Fcl}yU+PcvD^(0A4Ur$?7>c*8hL(j3 zcSQv;(rcO$SB_B@68Zm4)Ai6BGNGFB+u&=4iWn8Mx?CiX%qI(u@m8q_g__e*y!|B= zET%!#bz)$6=f-<1=-p=1fjhzAZ$m@CrP?5f%rhqLu;Q^I&|O7m|LI1+Q)RKmNvu>F zC8V{`OFK2aY*bThyDug;Ch7YSD2GTZ&KE@TD-o z9O5_mp%KQG*}`V5{-sY_5_B5>wR#j}Ub6$B668LDbUs$|a!d-hYZ#rC_6 zW8iN5))>LYZS`xjc>P;p$XvHrT*0_pj?vN(6up!g_G&Zpo#5UIkJWP9mTf3Nn%T7Mik3 zgu7QE&nLKGpVl*;1^=o7ZhKIY;P+>u6jJl$v;}^pbRm%`zcoiS7be08E zgzg~lb&wi0rYh4uxQa}0wA9+Tn44N>!4 z#t8nzb4u*&zFx@Y0p}R~7X9&+ewG41FY4T|v77Bdwbnzy@oZ~Sw28LOO12kqPdS=ES7-{VMzO&$GEz28W8$TP6W@cDBe zX>3A3HS(_yr0vMstXfNdca6hhFyLJEW5H=7@n65TZXYK{H>jxPgk97n(h(wg8ST%5 zuo3ny_xy{-?|C2BDS=mRUM<{hfzKI#?DYdBI^MVG|GbL5@Ab2bc|4@-72jUwy;q7I zr1Xux?&p2H;(weO+l#erSasEPX+zF)_$;{T(&P8h#%C$U=9+l+ZF~*#*gNQ4Z;7w~ z{Tm2NUWi5N{M9bU)zYq_0lJzIxmTi$9C9Om6!FJs+poxW28l|S#riEVXplqF5}|x+ zK258^VXzib0^$pp*}Qx|WdvsmatNnsMgtxXK$tHvf1w2sf-$5>t)_Y@2<1v1%lkJv zBE)n2Pm#?f+%bl_YAbowj{Y^HP*5araz*dA=*2)R)4%>w@p$$mWw~vOI+syMLM8|t zVwW_A4@8yT?SM=iS5Tndmr%3QnqBW;?XK#DDj219Xk^V5OC^l8l)`MWKOucYQ=-e8 zmwOwS1wD*vy;fw^8uByp4h5(zuS*tCZg@K3JcQ;w8Xbz~UIVR7H#*TOf+- zk({T$vYDsBnWI#VxexhhWw1Nt!hrK0(R{wXAwVwZb7KmR$5G1=zJRo zR=kvH0VZF~oG)D20UTaOmiQbCe?Q5=P0)O{L0Ny+3)YJLs;8Yz8OJo5S>K zp$zCu)qxkcU044bFGZTEtlurOiCI|lL*MVfvqMCrD{gbsm%|OgkA$F`{6qmkLE5}k zN>Sz~vUol>JQ-#2E!Ssy_`Usw^vQZ8jcKj}!pcE!$N>zt=3DPioqo0#4-Sn2YOBu= zz+#$K3VOj$T|phUx-!q)`JUMo{yYb2g9k@mtcD|5w5-U3nwJ`fD+gj6u()7X%Bz&v z->oekf&IruZEKDsgjmPpa0aziK*58vDpoy6AAML{ zAoER;y2*oJgUOro#|OsUP{9+Vr;8I;2v-vUla?+t&uoNkhDqPJ}@EXm2-T_ zq9KU6i+v2=&PjCFH&mA&1S`X2M}-64GXzq8DD5wLTs%#9>pY3)QBZM2+y) zrG}RoAR|R#c*g`w4+A?#B4u>;!yI7s8>d%?F(c4-*yPZQe1@BjO7EuHfmM&;%Oz9} zY*N%AnuYAyoW$6G$(e*ZX=MB%n<7C>o>bISr}U=&_-Pl{R2h^ASgnVW+Kp&gZ==~R z<=FGysxT++sCtaj8+IST_zy?e6r-sc)h}9zvMAhWDF{A=1dAic?UY|BJjBPs8_Z+G zO&BWzxbLp^sHA=%l-M~N`-l+7RdWxP$4N}1W7J9M{ht)ex2_CFlXt6D_;4g)Fh80Xt)Amk@Qa4JTMW-K4#{DG|8I>ZlUQ-1w zlDtgDn(yw66Y52ekF}LbL9?Ne0INy>M7p-vfQy+w;=l{NaXWbBJM)neZC!l!GTVK^ zkB>52>PbbR&S7xoQcrF&k9l2QjU&I%Ip|ZP$@Tk|Emhbv1Q6 zv%_tgEsssqBxdXAeWwf-f?5)KMyWagEQ1Ik`eu9rHF;TQG;@7&rAB^93l%5w} zrD7lS;~qIVUNPezC5IzpA5qR1|5YNc?*wPa+~#&;&~%Bb`TPNpS_cF^FyGzwe0e^k z9#qLOW>ppVTkHAb8*-j1O<#w{b@@t<`*EVTDk-;5eaVFW_Y?oWg%wky^iC7{Xpzu- zWm^6e2g<*_r++ch1&AAvPh51Vb<;WJ8HhdMi|Icd)E^Cg8uC2)N#z?jHQdMlVQ`1P z&9B)?1+zu_2O#>otQzF|y&FH6xfox=ND zzNbzPBI>^AU)RQc!|2?A6(h1;Q>BTguXa)?+~#Kgu>V>oHEJb|dANnsu}tVoCyoi( z7{qk!mUSRnlP(*6;+BMkJAF)zk1D*!z{rC z8#haW`o2S7C8QKJ2h-C}T>|P^z%$>(sP1xZc6NuQ@#r&Jms3}Z`C22ZbGWdHQTis@ z%0hWS;2tav zaOw3mRuzddw~66S3SUmjY1juz72y!yQvm33);>?SqtHqVP~Ha=fIkJ;#nCc&=wyVo zI6@cegmpbQ6inbIZRk_CBl~^v%s<*>3NP@Gv#H5q^=7~sH-*Rc+168e)JiKq0?1Gv z&BwtH0IKEP$K`*bnJ!kcv94D0;?YyOx-HH1;qU)wpU43yN z=Qa+xW^FfN7{t>()(K~EuaT!SbjCx>(6Y+X?YBGy5B(kX4q2oB-NQ9JJG;UuK)87e z$p_PHe5hgkiAe`IFN=Uw#MNYbO2f{A(H4^N2z(b6<(T4>xPs`On|np*19BPu?o#Ov z6B%}&dtlGdU@rUpVR4o%pq$NxyrRS7AE9xi!O(z^P+JCI6&|3mQTs{aJO}Ob6_jsz zO9?F+X?JrS)H2^P)Rk{nAI`L-{Ei5(Y@OX<%X&SzQyGd!>?02`0}XayZSM^H0Vvub z^{@{rU#O_PuI_~3#l@LAr1y7e40WGLHqIC+1LLfoWJbI|`dhcyIAbX(;z@phGB4>b%XMvky|a>?fv*hTAoIm0#i<|X#3qizosY(g;KC(>nyj_m?L z2x!}T8@ey}TFk(Qx|D)~{FmTgDE$=+wRfXS#jM#HUOBINzLaf&c3A8$q&ZhQyRY=v zKQ2pqbmN3^1Ua9Z4XGNzR77pHz(KNsBuhCfhAjGG-f9rZaD8mT)GV;g6JOHqUj$~+ zsJRs$%5s<*P%p0rMsSp+?uwgWq0sLc3NtI>w^CT$$P^nN0pd9S2b{CRzC znmm3@1cRO7x9Wt1JgHHS)6CJw?s&__6zUM9E`vr%Bk%lBd3=zLqZQ96ki6OH)ifD69h^#t(4fYP=gaA2xy}z_6EKBM2T`cL1|^mx zvuT8kPYEoNSfZ!auw583BUkE~uZPAEj?o2&EK8vX6z*BboU4^E8F-&C!os}nmNOS? zXv0S4g~!FLdx)FbvRTvl9_*@lB`gr_Y0k8AF%m+odqRBToL*HhBy3*eFD@JwO8+uL z*4bA)&$?j4WeFy*bsL>lioHnpGrweXrL3ZfzuI5NbbJYmEeQL`w{4@U`%}x(F$3ib zvYmVatT$C*OD-cjBuTF#WzQO4SvV9~0YMSR7x!JqhR5ip5;4FT;}8!*;_V0iCj`ZF z(v8jE@csAY#mu`9DY@i_;qAN0Z*s0gr_CpkrKf(|7ZKD=+-t<^o(|@{9j)&CPV#O2 z_6_!1dI%OI|M6>yU*JLd6(PduEGDIhw~OU#Zd*l^Vhz56D62r8t%=*tT8rhe6uMJh z*9}tcWpAc`z)mqXI=9zB%GGlLf=B+U(d>VfHxL#v2vHz#>iE1VK+RdGT==70f05X2 zVod8JkZyusl&oJ>%;RoF1UV7-qM~&04g`ur33E8Dq)i@}lcc_MyRo%@fm6rd#)m^g zV(%``Dwdj2Emwwag~Hr!4v_bxRAnf?6nUTx;{yy|B7GReb4GD0)uVcI;jRp-V3vtx zAP++k6omfJ*W*ZD)ypU9ufx>Xifna&6G9?WXWF0HJXGkZG184U0;NQoos03oxJ6yO z-~i~c&frA3Ooe^vqe`sdaJfKTV@M2x*RxEID*l@JSH-!L)I=xxEP~N_+ahdEm*Sm1 zH_^aVWPnvW^U$z!j~MrPgpHL6TPUwG!x>j}J##LM)GR)HCJH=%WQkHz25)+jhF465 zs`4#C`z_H9Bmgl{&v){Of{e+@B3{NTwcBE;y{}xlXi7HL9%{r5GbI!Hcy}H5Wyo8g z`3wd@9MN!XK;N{5+~X`tMUW@yJ^U*<0L>!BNVr-sP4 zkYxG%R~~{D0NFeNEZ-?2o{R;DpEa4TZ+llCF#XQ688=>J>UM6>m0%U_DSlFch_@*T9aGEYSo=n8_=R=-4L+H$>G-+sjrHyyek)G5 zrc6YYwtpjI(T#H`72$bIM^eq9Bhg-?5I*s>@gEZ;A}#iwk&XilELru8T~-!!poEk{ z=9g(~KwX1E!dzDftPbR-&|(_@^l?5w4GZ&|-OLdIB*Wce^>;%AP1s=T9PF`C7H@@5 zrew5tOpJw+IE~xn4eu%wa1MPvVhY^%Au`y>eUJu_RAs}_;ZJ{7Ro#T}UQlvTR!Gez^VC=e6a;B%ZRw}xlT812?2^P3= zmx4l7SQ{Aa36{jN&y;{yc}>>?29(SqrMhi9oa7+IfVgn&3aqzr(nSpQrKOH{k#yM< z!L7eZDgH>+{wHZp+^Gw`5~_j55g@6AhN!+4&N6=rqx=Sn)yuZ238Tmjf-YYmg8AbB z1Eeqf5^7`jo>k2!(&Rq~rcAH3Yht87u_y`g_ z%d1izu-=s_1o<^HZrA0~dm9(#TBHa@$ehsk{A4P01N@C|ro1tx{Ge`TMi2Z99}XYv zS3f?*X0?t-@}m1JKtnZQG(rBTOUbV6Z1J&I*up|Gt@pDvJErOE=WN1GreH`O4ia8^ zDF}A*YowDU_v`M-ohj)Ei||kwJ)w*#tGR(L#)AeXg_nK$PZeYv;Ni?3zXz9;r}dtJ z-pS?mJX7zCjHh*`O~>uJIvPft5}Bv)0PomHUph$8@p4XRVFH<92^I!5wH`r*)c2^K zL2SzZKRQV%pUpeG;}($%tBdjbj$aQ{-5HM^HcuLfKWb;!6<PRbd0KzRYFty4~fyX{-M zuu>%cDKO;2aUjZyZnuO@bn9eM4o$M*e_X(8f_XknOh=3CBMUcfWe6bZ3i^kH%aFD_ z<0meKEwOn03+Yq=U*d5ZiiSRCAY?UJpptY*RTvt}c#hdSp01R`J#0b|22#;QqK1c6 zD`k+iAEX6BqQt1vatQDqHby3985n?4 zgz&?0W*d131#^ZQut7d50v8x)eX`Du&xUJb&4vdw1daWnNx(1}zM zHV*i3XK5*mi8fG`2Mp(;oN2ZObe4sn1TCCk3P5wCwWp)GiEn7?0}2%eJh#UAwQ7Yf zLY7934I?wy*WVuw`C!#i^;|j!AhUJ$atbm2u18~H@zBf7tr41_$(#VJuxOA8)Zj+` zhH^Ek)Ip+oRWllPO@}BUdvr~2mAFgD9#NnX9ZOIfHRD4i+Se*_bWaq4tPQ5011e#B^tN6V*L9o(FaZR@eq`5YH@c16{yth&Gexl8 z&$6tP1PMG6Jkz>IS;b7=m*|#NC{cwzw<8>{{&5BvZg%bpnx>eV=f|gn$;fG>taOx= z*c!3f^P{0P1c$_bP&yKWDJGeo(zy_O&4vi7^aNUziz4FFD@Kd4+);;`8>;$L5Jbyk zHR1cG`gHO$+X$ts7Mbx9j2g`5-1cX2Ix-c#wDH}TJb1##0_tjICX$rUzgK6( zMYTd_7e~|onbqY3!n1x`a$^%sZj~$avp@TNWck!mcBDf zP-;|%cs?{2P4Vy?7Emh=J#^o#U%gwvL13=5Eup--7WYriW)O$F23syZoPcT>pk&gG ziOU;T~WxUd9Bpy8xxXUiNT)eoEcd**QjmvU0Or6s$cGO~T zDtQ{~($zZpD>dn}l=EJMQF)LXs-dLQ2~_0r8Y4AFgtynY&$;m=xJ`TC43oj;Ry5;) zWt9{_cMIUlpCCWB8UX^cN1YZ=VCm0FLP^PofQM9}M`W5Klp^#Y8l{z~r=EUhor{(4 zJYKfF1YOx=n5!X&cqBEcu)Lnf;-a<6fe_e4 z<0!|EMHX73qB67guiwnJF=_BvsJ5u)|9+1+Fm za|;d|6OSo1O2^5v?40-=DIM7f;3e^x$K5}T{A<*|h!iuiQefR9pxtfAnNN$3J&_1& zfr;`O%0Zq|C=9S-*AZkiL)5qW9p00W5Yw! zYsyv6nB?OlRv^kii+f<_dLUCW`B8qtrx&5x9B1Rj7mr(k&)!J;cMVNeoqFw}E0?oM z7r#39i7uwK{Cm0#Zkb)pD*rvuGeQ1zwI>{%7N<}Zx9R1J;BeR}#Sgo^|F^JR^uk_* z3MWvj&}e}L;x%%32rdje^}#_vrrWB7G|e|}yVxYb$3zT6kQDjc z6U`*2+^k3$)S#))Z%V+PG(o89PD-*WB)_{oG#Cx%u{ECMX-guI<)_haAoy1yc?C`t zbUDt*Ne+WiHd2`AS;qD!IQUoTi8Qrc=3~-nE~MW$;nRo#=x&FlZ$Pf-E$NZ#b=(GV zbK5$#C}j0{{yc&mf*=Np5c>;adsIQmEnyC8Y~)S}&V~gDs%IqZ0EVDrRX?mhM_gg~ zZU_Bb#tP^V=`(Mwin@XaC?=ld$!pSH-S5pTdT&u$AKOM!-llQDBCA;srI<7DL_jNI z{ll#$mNNb=L4qKSc~IZvkRflN!Q9K~u~MTL=B*Hdz@nT*ZX$y^OYx*F@QB)T;&tFt#&cHUs?DygY zi#UiF1!u^uS8Dz4Cp!U0J_k=vu&Wo-57t40Of($5%II`SWw;>tX2Sc;%VuoHxs9|e z?%|~ZmdIO&4ikB4lrthe6iVSCpWeS_Fxqve0=Lxyw^V!RMd`{6uU}f@AbssC1Unq` z&cgDg6qdHj1R)$6Gk21`%~2(y2j?364&oFr==QRR{W^5K2FuYgGlECF8papbK2eb- zmEh(y$;Dv30L7$JcMPZ{Yc=h`Iyghf60A`0WXX%qb$c{?lg&>}0fqGu5&2H*_b=G( z3MunW7W>9Z7`k5vY~yL7YArKTB4R< zrgHFH_%a;lux=z8`rjzN1zfp9p)j1-@AD<@XTL!Wo8)$!YP}VjL==>w-(0=GCZoaP z2Zb)(pS?l{fgoeVR=AD1(a%OIfLg zSITJ=d{?^<(nYaYVbi0JI~W_KQ~K3>7K5R02bhS?@fCx{#LQxzO#RR`L!F{_o>=Hm z8LJ=)rAOi6Kxu9gcGOf;Vjr<$xWdx|&0W$MHYb0k7WyDzQ?0=npwijO()INl)>~eF zd6JF9A^0xM(^HQtLm`;oXr~>_YIo3XDigy;clJ_EkYKuH^2;!~n07Zy}d)Q-=F-q zXw4zY&h%d?;eR0rgc%b`jhP(XwSENwfNW?u~N-6@qD6StfyQ35nuPipL9sofGK zdW4wHy)=H%3b+&zqFvoEP|k`cMp5Ao1+*DCsV3CzDQLxr6ePtEPM1~PMFCUPSMLos zFd^OGuHWo4+B;I)M}MxA*irsRWhdBEuzjBD#syg&BIB4{kX|()!KP}M)A0w!{QJXm zgytr7mLf(P3woEI&EqVQp`51nL5VSWI=U) zHV?iHILd-SBPuhvkwk)}4iBj!EaaM5(>rO%9H7a9pQwuF%U8=Hsx83{%pycVrD~lh z3@Wl~vd(>QKH6H14?-Z0QM%Mq1W<8VCrKdKqH045r@EbcP8~uKg+xYaNclB)3OQS$ zN$Yy0*1&qRAKalrsZnyHb;hnMHT3Wi>-_K8QrxZk5x71^FF97ewMcjog)R$joN~ZeUe=Nl)PP>KxfQB& zm3SL0mT4PhX8)D49oEE8R+h2&@f9b;Lon8hDn~!ktcX72!H}U7UAB+#_gA9EXbme7 zHWv|*T{6~_hjRNo4EaG^2kMB++P0+TtzfAT#Nd1U{!~rQoyV}6tdtn`MhecX3M7?k zIDwi>jUj53wd{hY4_ z5YebWJPxjZ*nK*sVM7}hX7aI@{WTa0^-L{Jde00ILF&aw%vw7)z8*9XTVv&b9gJ;^ zL%w#eV)0`?cCmQaN?@>=l)fbV()>;!U(5Ug_aT+9Mfnr!_z+*c@O*#1d4c?D z<-05SD#l6q?nti^KYkCKb4&U0rXqai_d}e0l<)8U6Q|;rGk-Tfe2mPChObsW5bpl+ z$7|w(aNbrkv$w|QHYk_N1Fx06_mRBp^5#8w+wPsuEDx~3@c8y~$}`uT=IC9mg(%8u zy%w(?c=f=m2mT-)Z~{R3;LYLW{QDwSK@5h#P$q}l7<{7Ehhi)Y#a{ZHM5%}!C}2tl z5tg@aKfB$Ct>`yBITgUD;11c$0uZRVF=o>2O_^n5DFl}P`Pf=h%A7)n2AToVW|iRgF>Awrx!uIK{z23!D)70U&#Xt z-_4Bi^FYD(TAC{BR zpc@57jW@2>H_$;Qt_>&nWH?%rN3fGj7vc~p=}lR#AyWrr3_?_hW@{a@fr1EgDl}v8 zwALueFt`V0UkOUC*eJp)`iA|7ySY0et!=$?7v(eOK*!F|@R+=6rf=j7-AV?}RO|UO=MaEj4x@;S%Uk8cM)a0}G8q>lx%p`P(Qq62mR@7Y!hE*x9ggscrS^|x_ z3}s^W+o2UgUZf@^3;OD4l&C9{Nxr?V1_#Gs%b z$Bsj6tqsO9*ErA)48%EUqXN^3tVM+4`zWQC67#n0LU#9ay7`G=pMU<@zMr={D$#;q zM9@pQZD+XC(BewgLikjH#hy83Aqx`bIV%S?7we}Jl5EUx9EUCj&^ssd#XPcNuf1Q~ zwV|qNP8`er5-f&QRi@UAgBThDLt_oM=X)ju;i&=-MqIuh2Z6%h+AnA)SFzNwR7lhb zzyg9F%;Y8H$<%X22CLZD`p!zGhJeE{1`sS?B5rnO+q$Bz?grh3EhAy0K4&6G2BbBn zxJ59tRiy!9=e|E3$Bl}awZ^*Ad3d`$p$i0vt`re+U4$aP&@lsssxzpHe^~HZneZag znhe0_RF(nsa?zrF5pm+kx2Pinb=pbY%#8%Dg0mc!THfxw#5#gz#D7=cWI7ndOa?dh zOhUbZI8d!MSaBmGno|*2cP*97k(m=~GWUI7y^<1KiCm?{uz18k1&y3J{S3=alEi7E z$c#8L;;4!UjR^iJoSDf2(7J`k%q7O2*2$A&P{Uf?Vf2oxH5@YoflS49;8%`QQQtNN zf1xiBshhJ%$db2B7d-TmGg%=9kva@RX$N!LSk>47ASBk($RxbYT=Qh&^@%QZLFBQ8c!Zw`)v*#F(9N91 z$La;aSzB?(M7Zj%!pvINcb-@$rb)!T3`BNr8#k$LCQeXWYY~kpgVOa!6z3QmDc(B= z)pgrASa>wxQtgfi<^o$;A)F8L24-Lq8SUsIV-;>(bd4xhq8EIurEKl~n(@pd!(c#= zUU*I|5!?#+7`ky;y{7>@Q`CY}Kh{6AqZdl=x*nr4#-Jxci-9JY=0b)hVrGt^O>`W( zX~tl31b)@@QHP(rOyx30i=lUQC3A(Lsf_?zYkDrsS(!Q_Xu=k2Ml!LS>q#wO&Zsdk zNo%#3Br}Wwrgt7(543Q_a<$Gkx?KCRfv^M*0Lcau!ZlZtZ()Gh*8I+?Dek>*>yh;4 z%_o=3^|Z&#z;n}X?Hv{5b^@B2JL`;>BJ4MJM~OqBJK*7D(2UzkC?CxHdLOHrnIltX zOqR^hQZr#%)m0!n5NI@Q zRW|QYIuf9p*ouM-*lT|Ez#rHH+(P~LfBiRqB)3o;CST1T>cFo`o|F%je=pw&@eSpB zrCy2OqX)jh`7d3+v$_|gFIB!f@RtB+es_#li65;8n9rB|kw$)t{Mr4H*#G3kKE^wz z4CVLZ9e~K+fTa%%bf;ck`CQa*wI+WID-DlN&mOiU=@u9hQ1^Y6`zTdV@ z-wCLiwGOdOf2(cwt`FD|iWfxmhlfwxiBsQhwM(sL>x4_X!dmp#7FK-h2-W; zpl-KYYx=}ali)Hch+@DA2pK8PQd>br80ZC)3<8lGx(KrD`ny$vf^Sr%cRH0w~6Gj6Dm2i&=aB12F9NTqv(tr9S2Y~2H_96YQ;l{ zqzD|t$cP}``!=VdNR&`0PvgNq0T+HJ;a)-RgJMTt$;9Cn8&k5koTR4?XmCr-#zwDKv36XNP(6k$%sd=7-dQ383=m-2O>Ok zvPfXR2j4H3%bc@H+1)e8ST}7TyGLWTa0)+qr)w&@&Gg|40}Xykq|dIZniCxEGrE>g z5Hg#wKx(CZe*zrXIp_Xte?-hwLXtX|@St$pSX!(TJO(WOF}mPG7Kdm6tlAYM3(Ra< zUG!G5?6F;${!G@eJP!{fD1hf$R3JpK9&}ZM6w8SwV|71&Zq#RC+Oh99<^m`)22M88 zoU@i46P9F3Clx4^WSFa<+=qF&5C&yN2s*b2g=;}LjvWB3Ix|`YZ*r`iHPz+A-k3^` zGTz^~>*easVV+tu=H5_)XCm4ubtr)h`3yvcnZZmOODR{ApQl^!o%FjPv5g??JPz(x zbRI%XrMnLoi0I5ttppUg3RjS&g)Z`(T>so=Y4**usLX08ZmW$zWeim43Ww!(YMHa} z2CB*Po;39kX)(Gp1Kt`VWescdM(7qFG=y8Uh@h9k?Q|pOl7>0P!PrF)lEiCDUn+5I zYR%9wC-Zp!E{iP$h-8#fMzn3yk%GU1MJr}4%P|yI#sG+9Dw!h_=Nt0^&bt}&dfzzJ zA7F)3*e1)#(Hr1rY~&lWWhB%)@15rAjskzj0b^?EG12_=d9!4F~Qc* z&YGB?IVUH)nmIH_y{o>hYY9XmuvSi>Zssr}MQ*LpMQ*{^ar=I|Jwb=zwm;o&9J!Lh z9y7y$-g)If`;JaqDVJ&xY%O~@6AMxa91I33^(JsmF2=vN2FuLQyKVaYlF)d0A`EOh zj(yIoS=8s$GH#7~;;QusLj^ek2O6b2yIbC-4qL3r&CFU8AHmYn6AF<{&cF7~;?Z0% zzhrlCKp2QHJ~Qmph%(0*I>dO6Y)cSDrX&U^5xA}>tMCY~SR5ubCpK%kk3$qhKpBG# zu4NX>W)IGMG>WYX5$!<%TlJ1%z#5#srf*I?J+YJAyY@(EarSMyT(56*sz-BYxpop= zp`-&DOG2*DrlvwKD(0L+zm!n1en|q`G|W_*Q})2=dS%t~-OOtxWFzzxfG2ZM(j@0f zRF>Z`UJooYb4D1AWX3g;{ysAvczSw7JH*~Mn#*p=u7#7JoP1+m*xivf0gM){=Jp2^8YDN{^-W|-nn}r z{tm-=!Fadw9r4~3J?q~Q;FbNy>49@HDL>LYB+vXF`Ll!aJ$MeyE+=*x?gkk1mj9AeGJ}Msvp`u5Q zI~e9X!ymOnyFErUhZ;H(A0I!5lTYlNiM{JjCq)pExq@a;t4>V1_*jlHuw^RT0~-uP z9L@@LaQ6L)NCa#V1ZXDZZQXT2>|K{VL!tcEnhee)l%v1^$bA0CNYJVXe=s7VsPr=& zA|sTF^Z|l6mLCU!LJ@mcd;|*Dba11N`lk4iVCf}_w`~_H(EIuyw2Z;SLH0wBfK9;{ z3|clQ8VDy)Fq0voF;nV#-}V)D$3kL2CFje|zMMuADN07cSb7JtpR%o?La}n1Ae?N3 zKY%`N2LJ#N07*naRE~qF%GmWh8Z#At#3Zzvd25;=4DdDUt@Utj1vH7VW(Nb@)d%OC zECWRh(GDgP3z6(D2Idfr+}@cPrn<|YScoyyAtC|-vJnl+WB@7uEc!%t3_?6JhXPN% zE4&ziF$81<*gH1?QiPGUElQNtObRs~2f;+bRd9|uS%*x4M+6KL8uBUI&_yqL zL8G_UoMxhsC{^dRfeaDVy$hfE$q5e=m#Hh&2u0|?p*IuPp@7AScEw>~YtfilG6uJ{ zJv_Yepx5v=nOQ~_OO`AK%9&u|DSEM+3dm4e(*#io59$z^$K%j=se{1K+=<>M^h`FF z>QxiaSOGhFw-uv@Ql(P_9CyX?607sT5^}A}NDOnwPWB@|wQQiHrKTvYX^GP@B{+}* z6EB&G6MA3!g340iy%P;&sc7QyA#4kv&pa1W!;BLOEoO%OU`B{elbkuoRRtZ}u^tPOx!K4I#RZf>zE*~-k z3`Pq$?t~@jl@=(WQ%-DE$g!db@oSh^d%5Vc5IQ_?&PlIAv&_^w)4A^ z4qF7a72|X_=wt>$uBtHzD9bHl5QZ*rpk!*jje-9O&A07x>GHGUzpZV(cMn!jwB>69 z)U1nv2sjRD^kOPGQ?7s^6DSmEzAzF&Gv78vk1hH+~#f-(wMsBAF4CGpC8w6V#=`yk1 z!B>5PhW6G@%NYV(+$pk0^owX9x28h|<|K$I z=@YmGOU7V1;W}(l292!ROwx(DZJKnm$`mIIx~Zu?MiBHwOLtarwXg)^ldI#RvMTE>_OtXyO(fk|Ff6-b>Kgl)s^ zx^qG`ebKN&AQ8Mduy3l1z^0Z-fJErcp|AZ%9p#h=VjGnRrT{51S7}}{2Z^!NI(R|A z53Om6Piv8d7=h>Ib}D3;PdZl7JBA*kR8BOyUS!Rj906d%_D%k$Q<)||Ru@Z-ZKcJG z_E3_Y`nmprOg59NJv^eJ2q*L6M1>~Mm_#<-Ld+rp@L0*#VYuj8$yFec@6K0kt$7eo zZ6+09+QOmvj)ig>Jgsf+!9h2;Ei0WT5aB;dDiOSQY0V%GktW2dTCfZ=u{^Z^SVBAV zlI!@z5==`a&J)Dp93pa56+M$efWS4JV~{doU{hOLYXHieS;(-{L-PeMs zwhM;gSX&^r(#Zf3Hp(g(8G<81?wxZ$G`jZvDQ7nA&4x(~1XhUDdE$VKRSQIme__8C zuO9eOc;Lrz3*~0-X8VxzuE1IU5UDTooRaS?zs&mD{wL>w_s;uC{HU>>qF*Y%3(}WF zX?_>!SKc3+2bjP!f23ijFy(vXp`Q6YeXpdCam~lbe1oUI3a1Yb2=KZ}dFGK>ReY?c znS8D;-lz5djUOXsnfgv>h0s-{^s$&d`5oy zTa{G4E}smPG_s(QVE{0d1clfbL<&@o2+qvK>4?C*@3%3C{DOQ} z2LoqpUkT36b;VRn7Ijs#s`yk7HnOb|1ROaC+hH+7AoR9j44K|BWLTBrAe`F?%Q%QB zL~!6UOhqmLpA*R1cQJ#!dhw8mfUI1Z%MYu;=xWYYRk6AzC4zG*!g#qT77Rpd_qaoZ zLK}>CsY9<~D=;7He{q213@^ev^aTHxLg>tX0R_Ulz`8v#glk; zYTi%&%t0=_VBkPj3yN?WR`JSl0eMc<(Kx3(05Yz&WeGFFz$0{f$J<8lecJ%pGFc2Q zLK!W-c6tP(204iVG7VLlwK2v*P5|9wF)JX*7$aDCS0LL8i=QRLs=^W&Fni8A4$ULY zWf)OiPL=bj;|j%$=EN$*=R60ZCiJ-ywwe3o@^F246B-CtR%xclDS9&HXDYBooI6PK zKZauERXQj#83LZ+B6E&oK&*hA>$)WoV;E8N`mLXtFm+=!Gh-kntD(H5XcAAT! z&^4#F8x*>zAIB||+f4=n3)6?3(YtNz(;xwIN>Ks1rj`vNWawuJTPdka^6Ouf#sxzJ zjuJQscmNO@bD6=a*fu=OA|XbMOBuDCumCVav(`KNl&d~QXT5hfj%yA)t_JmL4Gx&c z^CB#^t{I+0DJ5e(p(y9X9+r&`fe5(;G%{UeDCFK{0~S&z&&g8JNxh#KmVLA#>TwU%w)#JgA^1q>)XbTXziR1 z9c2;n09xFcdVZn;|4`4NN1MC{551J&0FueR&^aS+*+!2ty>yMC^-LEY!%@satOpZK zWXZA880<$KkJxz}s^`S{JB~q@GX~dmoWnH39w2cV=AE-clkUksK#PHW7` z0AH4$5YXJ(hLfq7@yLb^OqsFiHwH* z5nV1qyl?U|T}<>CW7d-A7^Qt2AcX9JNavUobPpKZS;m}ZdJzQ>B6d=?j+3|R`Z^bYNI_TjczE~(<3Y|GWQG$Fg$2O9 z=2s8=XgqMU@f|?q6HBj> z)N=A>$xpKPPE2Q<@3MMdociXIIduKaob}?!>ukU6`lU+*l-*%)S9!irx~QVnoMra^ z{=fY{{{6rHxBvd%ocZ5T`G5ZF|Bn1c{lz#y(f-fPtKFRN{D0_D9KcmSJyIT*#@!<`?u_oo`Af}{hf?(A2UQl}=^482S;+WsX$S4y=F1R7Tns0LrZ|@+ zs}49>#-H>>yf>kod6{u4UCbxo-9@6DY-b4qdDUOKsGON0PytFMY*@88q1=^15&aIn z=u6$*18cm9ykioWr!1H+`3phN;3rdg$uw6!`Tt)irFmkm@}vu7=@r9W_GQIB`|wU* z27k5w0!!uHd~!m0x3YAt;oOHT17JAm&!vb6lApV<_6s8PGt;}WdZ|D>%d?;;9{%1d6px*L2FUntK_8Fu18IV+T8nq(?po7Y^w^q$NwPWZoK;lKO* zfBr|#Azz8g7ugjATx6mKe0tY$)tV|Q7avC-443W7DaOa?h(?p1vs}lZVmGBoM9U=j zMYKgFpT_4@_y8#A*XzUe`o@gV6|H;p6NX$L!U|DB_jm*JFfnD}s+Zo)Ug5|_;Y7ER)aHg#Y(a2*YHWvoFa{+J#;j_aGz7LR1^U+=LC@6v!n$PrKULP$mAkHgN!B{;E5pGMI7%K59+z`iC5yYBV6~sePJ&!~Giy8)ECL`%JGaQn6V8#Z}C_){*Rp1+Y0S@Z8 zs05~vJ!~}RWFru>V^d53$uJ;ZrKm2(m>JH1^XchrEE6bA^F^HZ>Cj)`z>{07*naR3?Zqo3RT3(3d!C-7L~TmXa<2F)5R`L@g?CP|e{3Cnh;SV(sQK z3<{id34CLrdhh+sn@?G3RNOI(vlKU?wj9B(CO;$8RaHye&V&I-QO{&rxj z7!nwU$hPTs_N!)<);#ja&cs)rfBqRI*J8d9r9NVJi1(?y>MALQ5-iU_(_c?E??O z!0v}mo`ui^KeSW0^pY77EgI{Jb0akosoV746=H@HaY{37C<#xb3<`CKRLpeuu$ok1 zTRPTh(6t?8>QK_JCPZk7&WSBrxDhQv41K9f%>whqfu^V7wp~v;;EV`#n0xP3=9(Ai znS;z==OnbPC&n!Co?9TAm_O2 z*vDFic4p3bh+zAg@+wY9wg6eqK~pSn%BH{40fAFJ&V(TCXwnWEHq#t~#};0_^tFI- z#dZBkB_ie=N;+&KB+?p>iHSyd$PrAUk-`I6b4^xjoNugQP_;I&d<>ooGBSd3ZTxFk z*0eG`NT&x(wWhIy52hI-G7=VIs)aLf(CF<-dh}rf?{%zL_W(1Zk>_OVO}gNs3Bu}a zlr#}{cQKovmh{d=n!B`dOifgbwf#8#IA7sMI~11+nHmv@yKBmrh2A;J7C3EKYQteh0J&< z>7qP&sF3e$s;#Q~$phh(1qzD0Lpd|zvWM=|)T)!=Q~{YRPDHBQHGOpXO36uPLQv5LW*h;6kXz(*di->kO$!800Dp)e-ENW)d=|zeP+1$yFIMjt> zrq7m?{8g$}dm;()eENDyZ>UcLSs`AVWKC5EldoJ&*!pn zzkj`H&Z$#$jAK_YRG-O#g9@^HaHt}McFtTXscR%u$cAwoL>(f|^O;TzZ#r+S#u%Bz z9SEZkPkS@Q;cia!BniGCPRO7!1Spu=`*s|Q{bz(H!HzbNCajVii zgC8O0zSz)0&LqxvgFa{BE?NK$N961JMgtSAWfj(w-DB|(YLO-M;xP<|0e(s{2A~u+=x2p4IFp2i zGVQ9fO$y8M5gT3r;c=80f_Ynizx6Q8#6N&8Z(|O#K-{luj&x zlVz8wUmP)`h2_~>-!?8_{Ca(GEqR3+=bV?z6}lunV3x*`ORMItUwJ0%d)Lx8g4zuW zQL$}T!@o6ex5uZax00GOQ{UQoeEat4iR+Dn1PE+sfj2@HP=PIz%U8`8P*nv8(q;}1 zP4d1!!HI2VmV=PG!gI-oe+9n?8hY34D=TwMr+XxCHrG+;JYvTzz+VQ|p5D;UW>Bc|Xc6FDX?hK7p zeOe@Sx0|G3g8@ON7#;>P*Zl!}RM6ZzH?MDS0xBX1{?fd@dGjd|Of%0hu!^zAnh@Ah z1nkTzEfPxM z)QEtpnhc#F!J_i&n9Ql{ag|VB-fXhYe z+)VeBD1r_+NZ_Ci?Ud+sZ`*dE3(hk$MqIk@x7+OrHh1QNqiJVEu=TEJvT61iFT20S zz){6u;G|6#JaCfHdmP7NP=p0})x6woND47(5oVe!!oJ zTSo64Ev?C`y>DF$PZolSpsVU;j&?znwjtg=GibIFKnx8`^0r;KO-G75*5U^t!$ntw z9<|iX9OY()UNo9{geHRKoOK-BxHF0J{#2;vjN{xPUWphBM( z=VW(lD?wpI9N%q&8y+Dxua&6gOGljzuC zCevlcuEgff%)(DESP_j32-(csgH*Fa=;6`U`Y(i) z5q&nY=Fle9L;#DFo0~EGaF?%+3P0_5)|^L5$c!6Vk<^XeU$*H&asVj;dhtH4H` z61wwmWncm1C7hC8%9DYLa*4JWjV2AU8Px@V0q-y@l98y8F@O?eN{ICiCr$FiDp#kh zrA=N+^xl6J{p+bg3*-UlH)sGglMOmCi0{5&}xoemhxo80Eqa7mdq61w_$jSCBc!Jxq z5SqJFCxhVbUr?yM2rfDVvir$H)l{>4Y0t??XZ^YI{1d;U1fy0r2GnoW>7(N;sTd6W zfQM{`tJSsYbeU0{`kz-UU9M4^8O-kYUifUKFU0M>P#4)?zz%m;1rV}5Cx}#^OW0^p z@*$WC*$rox$I^?z$S!6mP7{vBP-|I&F9LKvxMR)AeEhDOm+jKm_gXmX=F9@etTlZm z-;WzzRm^OMLT^L^oH~(jy4>}5t3Y;ln#ZyGQV#{5#ZNSlsQuFzd+(f`g3T43KY0MJ zQWW?Y{72}VI*ff?fiTu0QcyBL5rlKGnfb9UnfgX#K}R(7M8W<9?n%TAyYA2#_T1ALTf2Rdv)np)m;G(mF#xXFD7*J!dpl%BdkO;;oQ(J2^ zDW_VMx*&O=2?He_JAHzK=TzVcBE#(c9t3=NcmrkIuEe{0+uR7&5S3GCZ`&^T6&zH< zLzziDNHHmbH+_ARX=IKhuzP!a`#EM{?NC%s{+yFjmkH7^nUtBDWpKKF(>ybE;lVI7 zndqQ`I2i^?GI6C$IcH9WkC0|ZCOI}5Y>>9?+WY1%3L;f3RU`1SZ5J{XwhEk7FaSdt z%NRuT&?u+jUY@OJS#)Apiq5;=(VhV-Cl@5A7N-t>CV{Ft4x-qTD+MfsnUYap4`yJ< zvBE<%FBeTW3@r#9VlXS8>x4-J&8+4GOs>GrkwlbO%YHNvy+T#zsk zt+78E?zM3!o&`sQ)(MtGDA377lL=h)-nWf8#Q>G4jL_jsW!W%u5F_4TK9y2p7&v1E z0g=TkV7fbXM3@-V3w67~9D!|H@5>;5tV+V9uUkb;e1$(49ZtsiTDpMalbMNXpcVp> z0$FQP<1+J;j*7k!sppyp?`bZehf<>pC=lA(2xf-E0Wx!U_S!k#%;dgpgIF~g)Nv>r zkJOwB4b!B~tj(!=tn2j+71)p}sBW2yX!id-ITXrrs{ zrwxjBB+8P)Oj94h#j}wRr=&{&>pB@D>4oU# z^hU_eOjdfLg}m=X-r3{L%#+xzk$l-!_${?N=i~%qkpz8Y6hSoe%jL?< zUM>%0#@O1%4q_VIqfu*ZPR3ZU(Tsq|s&3EX77@lx+x;TPGsl_dlqD#Ifm|z50fa?@ zA~H>6=ZeBpVdmgB^N1FqtqMT(FBqP#mG`{VU9KP7Xcs46T#F*)fjW?UAvVl4D886+n3e9w7Lx4=l^( z^MDN!I5~1oD9lk{m6>EwVVG4SMrcxU4%p_L8im#d{mRP*j2u-p4(#L+sSOVJ$N|5Y zOm2r_rFWQ|=o|>H49hIjjoS74fL;#_b~AFRFEKB3h(8l|X~m)owB9*qSiQoWnsoK{ zl@PqGXF8R9He(26(xl>!d$^xNmeos{V{ox;X6QA*S7t30;|0VF9-OH%Q|ESsRL6RP z(`&}v66XURle=ss1kvYiO>N*ca(;dGDODbb$;absf}Z_zaCYsep(tQj1WgJ9D5el%PP>f;o2FqF1R1yn%=1 z99xIaww(u~purbI)m*=6#M3I`ZVz<$%@_jCNOP|$4j(wF1bnV78EZIIb0}#s-<}>} zqm^0%bJm*rsTlz+mY{pMduxoh@L?v0cF^pd1uxhtjXE`DYPwT8c1XL`tVu%B3~L=W z@?4&`WiaBPxueCvM3)&024?x>T(OzjgY3sK4)X1GTbR5DI{4sREu< z1wOD5jXF5w)*5Uy=VZYo6?!{!y5`dz`=Nbser0_1zz^kt-{BUD4fSsRCX3(YJL})X z{nB@`eyM!veXYED;790zFD=)z`N4Lc?C+KzCi<=f^$!zz<@!T;fGIlj#~5%*Qodi9 z4)Xi^{$#0mg#6uxj{y0*$$XXj-IqVV-JW{qGmL-!`DbJ3P09WPufbVQ*l2HtU6zCAt|e=pJwhSgB22LnmyB?tWKCk;uU{R@ZqC0 zUYX6P_)6k2gH1RH+H@3a9T~+-v zrQq`nmIJluk}~m7IjzMQ+A7UN@q2=zn(?#5U`kL_N4QFL(M%M7QFw2P1z9tCHTEhq z!x%~^FC}blMmATXw3S4m&rB6FbGb{UnMx)FKp5tvAlpjsx8^c4~1xqcJ1C_-!RuLJ$?o zC6m-ag&zP-jZsx}Jrku1(sQo4q})ZPG?OBGPQK{0s8F6DppmN_3VBt~CIp&fC@23} zHxuUzWy#uea=(A_gm9l_YGjuXuyu}NHASN9%*CLE`~|Vf{odlo>UNSq=t7FxD%D%} ze$mdl3^Q{&DVzicJupzWGr4-tDxRk?ClM(9KbdlcMfO8q#Nikudg5m?g#+B-b$4sT zK)M2pRNU1yITptN2ZWrtq8JxGb<=BRO)20rIg?|du| zMGXL9*_>U-Vrr&90DQ?yg%O@d3R$r|_aTTDh!KrSqrGg-B$}qMi))qmV!xMYtRf2E zAXX7|Qe==bze6nCOQc$3qGNs0uf5;`+m#+jlFk|**&}N z`qo-||DNYPXJ$O(vB!7EW5;&~Cw3?;5LBoTO{2D`s#GNYpwNOs8d3@oqNP#_0t$#w z0+slqQlZ?GUZl1vlu!z#fP_lYBzElBiJSPA_?Fn7`#JCP`|V3V-@Tvrna5{l&diu3 z`0{SAcfV_|y>5H$%kTGF`@G{yZYyjUnMyWYffQKjbyt>?%s$pz>lFB@v#yaCGzklF z>ZdaNh7`T*nS-ylqN(qoMWI zN3^k$G8t_m@8D=CWkZgmqP03iNU`-Iq(mNE%M4pU@6(wGhbJw&eI-Dx)mm!B(gEjtA9JDg6BJaMiqfoNtQDSR*_olX z)S^%$xox@(L)MH(jAjr#WQ0^;siRCDW3P&*!GNB;EGdntjD+*>;HSG*OGMB_;bh3# zGSH68uhdeXil@du-tTMmjf(=cGq}EvmV#6r(ZR09}RY6dzVbvK+ErndT zMu8qQGgvIpp#Z4DE)xL-brA$4V#LtoB|mmJ94;?!8DAET6YHz?Fhxq41y|tA~Hj7lun*B^BXq&lz2`s;^(4&t2AOeZVHF06anyN*b(WS zlO&J|=cb(7HP$(%OKV7J?D*_124t~4MBrhE5>o6Q2b;6fucMcR;(4K&%nTAa3Xxie>^1TkqmW1PVT% zlz`A>I%>)&WQQwr-gL&M{r*M-sseB6l}kz4e=|)1O;i=#Noc2xVRqQi8KV$?e#49j z^nk!q3fn;sWrm5*D1m=~PW7CXhMt0O)=Ko$39etrS0-`Xye^y!IBrwVvgq=g(V4OQ zSXvS^6?|*1L2$WPhyZ%<${jkbQY$kuP3PV^liPGXpko1Pn5p5%3P2Oc%g)2M!YRts zFUzt+q%e2k%d*G$F;W=y0*^SDnde0gqrVibQgkBHnvT1y11CiQL8(m(X;~Bs7|aY} z8#eHE(~(l^R@mARnq@Pujl+RSnajh>=GG`k!C#677@_421z`AQEXbBqUKT=^VidZt zGio`HxuR!BBvwG)F*`ZU=M-B81vr-SC@4fqq~R@1WVcmsLA}!>_i9z0vzAcPz&W)N zoao-|_RyCF6Kr$MmKhVIodUzq(3q`SnARhRSnH(p)@#+eLc_8wD9rlDAH6kc(8#1x zV}u?70z?E$Mg9wOINXdkgto4Sb>&KlmSJ5G^uiTME*}pHl=t50u)#%569w>rH|?N6 zwvLlL5M7Q#!v~~bW@?5ZON)~nsS$X=w@|F+bGX}h&iTOa#(L_5 z?+!S1T_e{K_zI1{3v=s^g-!E?$-xEh9RTt9;KfTkpT_I{UzP}*ChE)4emCK}^?f zJ5DZ`yQUslCIvYtun7zyEg>lGLz^ATXh4QRdfHe3?YLUIsICGx2B%uuG`|EOMNk2g z-f<0#;R9D8J!wM~ois5-El?X7EsP^Ne&OB(6rR|i%s~wnP;3Z=2hG$prmM`Um|YcJ z(BW1CQ)8skiFEIiNb`t@)o4zT&aR3k3;+nK1g0Vi41m!ymZdvHcPdeg(q(06p@9b) zEM5V$-8FYdg+o(P5!RYcVOhQUff-Wo;sghw2k}-bE-nk{DlMVeMNKbIhpjp?8Zf&%K|nd;AS4KY zI(QC;+Ysqm7A3Rj1#e2a*`i!t8`fFbq)14d(XR(Y9hxzO@>)q}Y_+J@J)pqEh`^h2 zF}TTv3RxKab9g*K3c7;H5SX%VDP^o9LU?)Bj7TyIh8`%0&_$gRzh_9bJn*4+>0~S@ zG-HfJm1Lh1ZRm#%L(!!UU5XM4mqmG;tUCaujm!*UzIq_mRbrvCeXlT8aLM~YU zzdk9EPHnw&oFarX)G`Wl>q>xv497I;iBQ*~KlDK@f;bQnxEGNkbZtQ0mAH}Hq<$_h zZ(}axuSd)z7bXHfp`*l1bayw?9KjPo@5~~}ZmY}%kI{~m*5)u-W13(1dh4~2BQsYC zGjeCU6e)tSFd}vb`8DNR%{1v4g|T-+ojqWZ9=d>9(StQz;efk_ql_WDsVW7wv{nJU zLpA#rJ-Zz%mdtELjL9dS(0lLGPZ&@Oe}o)strCz4goXTI1T0P{dS^%EW!YhfHH?!8 zGHdREP5?%lsAXxK@xDW@Yj^H+eBZY?uEz*m=F#f&%&#r1EXRUnq90L6A%ryarPNEhZwJUDW zl?z$cGynh)07*naRFdWeZQw!yXIFBaKqaUr4}4E!kyvHyV^=ErB)fpc}Xcnh#v|Ll(L1k%PwbGOldTB z-1QQej*{McVVUU9M%{*qLFD9SD=}A&Hg_i7C@8^aG(!YGg>6j8;*d)mF8MWymmKshYsO9&H;$M%OK*WF5zhCUDOD<*BV@f2*3cv%<@$M zH^cw1t5T~%M_AUCd$KkLuDeoA{{CWUdut0z-S6aY_y@^ro#-PQQQ@foVgxQsG%SWKxs`Yc2GF|q-s)H z)7ixaYbuP_^FrA#%keBiHbOz}9mnvW?W0=+JfDDEFw+7?s#V=ut?FZ^5Ec>901(Mq zN=mxb<9Us<_yF5LB)^k0yG$d+`JA=A~kRYCxWpY!&NK8k$!psx*`$)jstiL0=RZ-M%6nZI~ zNS3prJ$wtM4DlgLza_1TR4Qi++l}?cDSbILP{TH4c`8YB@AMv4-B+<$q}B;ga8{sS znqfw142o$%@`w?AIbK)y-SWzbJ{a^wTi8`PC=YLY=O7NT<5%KD&Z-GAq=A(ma3mp+Av|}Lv5c#n9*RP zObTd3Vl1JP8MfMbE1D@5s@KL64R>!}f;hGrGJ638@u4K#yfR7SZl;aGQb9IC-%6OK z8KE;D#70OpmRjL8Ge7><|2RYRXkM0G;)|WR*Nn5OZK`s7HD?qsU|kxHBQ*-DY9$(+ z07QkwpE-{5(2x=v;R3e-WX*U4v@(_%ZX@U(6dMI*r0Vd^-6FJ5eR9x9G$XFY0%F(Y zIs#wu5qOSUD0b61+-(@=eBgIuJ@vtN4k!9Gavg!M`3Rh^{E5HdAy4*G{Q~4pyc2l= z64xxh!V#D=L;dC0MQp;e2+t1cXX*R8B@qtb#SI?;;Kj+ntrvZM>8-Ko?fh^!ko4J) z|9k{*t5yFG?YZd1+7E|IJ_2B_wbY`&(@%*PTwX5)<}$CJ`I-#hpoq@fE=@CfL3u+r z=Pgz!6dT0{WuUwS^W|yqKm>SSH_A}UZ;4#tbin|iOLU)=l#e%KM~PtYLpk!JWl$Uh z5x@-G@xd6h9OO65<}RQCKRC$b5!aCo)04;D=@%TCh3dzhS9B_KpWsjtgAFifBJj&7 zLqDz#673^kOcJylWr1%{sA)i_rpJaX$drXH9#@$-bQ&-qNDU4hTi_r7I5l(>QbR{4 zHG? zstFx_s7>nxDF{b4Vfw)n{W|@05#W@2?nC<|Nv)c2qR>#|{MamAy`Tuwi8#3PGXXUx zhT*wW%${bz-zE)E0HeUq9Cdb>^f4#^3^{557I2$9cH9WiMeLngdfZ_UCqFh7z@lCn zgEp#;*XkDYPzaN|WM>dy3O;^egGd7yYz{KO-H~ zd@%FHj%JQlWS2!*(cW7hE-Zog-BxrW8`txN=fMf696J6W(+D+^mlXXWUxf=CNGdLo#S9s0{yb%=P9=Q-zP z+3oiiDHx99LC#9Q=BxV{zyky0g>L5V9FipaJTZ=}Y$mHaLaVN$w2{h`C-m-i z7r4ESq(42d!QjU~&DnA$2-*m6f>(u01BU@HV=-(LJc-cTg*!Woh-(edi$%0CKmyGn zpk~)jXB6P>24W*~7oooaGBfvx(2SpI1ku1m062gr?wIhwsYz+=m~#Z7cj&ZrJs_Ah zJ1iuPtZH@|N)Ct1a4i5-5Vzjxm4(jWO>yh}c*M~GK0JXJqw0lq(s2NwmnC7Y;ScM% z)&kfl^j5hylbFXTPKkBPTxlVp7Za_~C8MsiDbXrO)yj73F!$cEi05ocQpuyGfk0^z zRI~>}>8*pnFpR6h0d#^jIGap>n<=FZUBr$=n<66s8Y84yH=f6#LZ=I} zjI~yKx2dg^l{m9bN|}eb=*yyOU^r7sumPD}pBSB)Y1QVl0tIg{gb7BvEbOBt!yhUT ztG*owbtA~G#nWo#vXO&}QS+RIMG(QN>x~WTgeAG@u#yToJlvU!6yeBHp zdT1sTMj1Rz4NW35&V{TJp}(xcTM*izr#z2QmZ%;sPyqA*n25llW(O-p*Se_Uo~hFu z;bNWZ$qO6S2Q*BBl%hytg>j;AzrR6k=5XQ|vK0@Oi%Z=vEJ@Au`qWh_o#Ft2KrY!8Bo_)+&qJcKp{N z@I>IgE_KjX0!G7m{h*7hs%mYubNT=Y`gkQXk9eP~hDBSJz|6vB7`xMc_<5b=6 zFLpb&Tk^53TEm1G@VQmOrS%UH!8(f5>6VhlVxvGVMbio!b{QZ@(vDd;B6{yl1ywww z;pIgrBaTbdlg-`1sbQo>E2bF*JY$JU7sRe&?yP6{pI%o;wI==WeC@&Yh`yF0aCHmy z$;-<5Huln8hc`J+^<8;K=ZW=%4Dxk#9f9izC<3Q_aY96W{+|>3M4n&3CgZ7o0TS0N zzhV*i=bDzg3E!>nS8Q}&QHEwjUYtuWT85XxqlNL-XgQ}^YAL(~_c97^mb~xgOttVS zFt{-TXRfvI0-AW|=9|BFIL%$a8z+3dgHMzez@r-)U(Jno_{OU{C}}JcsvkASkBA7? z+IkxjG|VIgA~}=|(93skut7Hyv)D)1sA$nMYJ8DzYMRN~z$Ai+-tnz53Nta&J&~@W zE{t|~t&J{p!=@TGpsPi92cOVr(T_IzdK(1{5;Y3N35HtuhfZ3!s9H=4gLuFJqDnmg z29#k>y&Zp0cC6`wMRaryKnq0pL5^KRa`Gs=ba!>OMu%iX=>6%Cb`@;s*JN?=qoEQm z=VK2^21q{^J}Mt%P-XhusqqKBV$v_E(r&SBz4Rg6f4X3&W2l#~6a7qK8 zU8;vUs2n;p8--s3Fp4z3QoDO=y>&q1Xu||RFGT828B+X)GSFisW>Jr6IQN(gI7*^{ zJVm5TlA5pjQnqzHzyPr|JnF5HQdc&-Rt`q8)#Bu6Tt_;aEC3?vDHRRSBgii(-2k#} z@ZTi&byPZ)`(?kl*IJK^a-rJIQIqUC2B9tTOjK}!$M_;*p`zb_v$7PM9R=lE% z-(;*ffXTU#B46&r+LKssF&As?K|c(gh01UM;)5U- z@hT-!kZcn|XK>~*1azA*E}d6q263LH+jd|FO%2rUhHA#nqb6t0#Bk)-c3FY7aeUWtPp@ zzs-!jK*ZWGs!3#+gMnFNNy}B#!ZvCq{Yb&kpqK}a)0*1c3HF@xs7;9#wa8Jp zVDF}s@&Zq0AW%wKhr^&G-|zbSKB6W%zXzyk!O>SCdyY7iSpYqGd3#}nJk<=a?zm}`1`7^OAE4Ww39i`J6xCbb}O zw4!MmMxXW{bHEf26$Oic1Cxk38}m{t(`^w?cJ@0Mkkv$j?5JgOpw=kPEE>v-E?c96z57CC#f)_Ktq6hx?* zIx~3~^2btQ+0aa=MQZSynH%PNpJRs;aA!4g=$X6tOVM9$#ZUqTL6}Qnufe7(nO1pR zGSUUjz3bpgDNX;O41@zv^MyWU3LcE2gn^(99DXx)1P{%;jDfdNAP#1ZJ_RIHj+#Sf zMPswer838!#(LM86Oo_~SxY(!j1qyvTomcSJwm6)MDP9b@-|-K8vt8Ugm_-a1DXIl zwd#1GMlH;>Y6ih)7p%2%&gjI3f(WC7h(d-F!Ftf1>bie;>TXw<(zfmcjv$Ey^g?j1n!8y+&Jg; ziQ&1Cb9V6OW<2%4bq*)`HS#Ys0;f6oa=e(r&n|hlzGs*Cnx@WhP``*#!ad>nW%!u+ z5+>ded4uQUWL+=m;02V=IRGLbkT-AMW2Vne=pbeW8*jI2Iwm0;;nZ;F``k)xE2;-f zgj%o_YH~T$g3(;B>MME`Wh+-rQb9;n_z&x*t}-bQfqEFPy6W9%KHUZLscWc`2G}MH z%G1p2lr1t%7qAw6tAT9gNSr(y)`27c&@gb(K~4ZqDTm>ky3~By0eo9GdWXa4KlLJx z6vGsS-XSuGMb@K>@jftMQI0z9J3}&!vWvA$U;qNF1I#C(fhyxn!Xaqr__4V3uPW!~p|= zC=J7t4GNs=rbP(lu*nd_86wr29D_n{>)kkjfa9^GRG@x(fBJw@(rx~eWNs!%z3p=* zd7=LYi&8eOf9B~2k+0}l>*eJw=zQew_cwZL;1OwL5E4l%ObtA5o9>*DGh7;Z*+F9udPUq)RE}ww7AU?c291 zWsIuU(p$rgZ7bk}I+U3ud57lBzaRP>x3!7A{esDM-$$4ycjHt z{x4PBEnNQ}RBmo&DKY!FMCy~9SFAug284Bmh%+KBMOKlN$Cy=Sw)cjKQuG&TtTqq; zTe#%Teq{&;IKZi4Mg(y82(plj1D~1Y;|e52hHhZnS8;}?F z(F=`89*w#~)Gn~$hP#GF=-iooW=fn$p{kDK3&f0pYu|yhi^G{*-M-|^T2&fX1{%AJ zA+i?~Hz;@>L57{JVJNpzS|dq>1ELc~Gjcy;6{f_DPKk=8if$) ziXhrr()cqey~}O7%(SRra5oC(7{#VXu_lftQHKItUf#Za`xafW_1>W)1>h2FXa>h3 zT_En>AsvAsXj*Bx8)JqC+)Turwf!R^jVwPz7$Ve!(lmUc!MHZcm7sj47f$pRHPCde)pOR#hTx4GHz%I6T!La_ z;y^G2%y=TznvU@+4Je02kkXP;iV&E|+fuX*88y%vkNHc)VE`wLwHDU`;V{=F4O=E9 z{Im$Ya%`Ipkd5a`;U)%cwbnvm646Et8-PNHwaO)$beSj-?MN8oe|#qsB6=U{g) z=d9p&XTI*ej=*&UzKjU4v(DiKXgFsFe~}U|fc=`~mpcMX+k_WwXo^ukizL(u&(inx zN&0fa@%%D+TP2<;9TDC*dFADmaksyKPUZ-l_g!!RB3a3#CAHPw+Ot7_HsY6XwsvZsl<-jlK4oVOkB}xqbOCLa-spNJpkWe`f*F|2 z^BNv{C*=y~qoqNd(E8EbsR`u-5W#1Set;$bB4~{+5bD;O>LzWi3CCRPO~g^d1~f`< zZGf5snLLx&dV>x?q@KhRGMjWY$}?n7Y$pVM@RKLtP|g8W0LmbOOa>5|lPIKXP^T_> zPe3m?T>uD8kXeHO!kff}^ma#0bHe1D8mMVbpQ&k{0A{*qw(~O7(k1#C4kujHlYTshUfy+?1N4< zkx_q1*PuMj+1oTad3rw`K{|-|;b0lv4Jau;Ie@I)0~ z{?vKg7$FHy1PV!)-~hP{AK&@PU!42a7;5h@mr{|+nL8~~U}Rh;$otu+#%aI&7oRRV$+icSQi7OW6jHbvd+(x0+bkU?83# z@Z`(|jB-h}YAmI29ZA!YoC#_eMy(Lxn3-=Q0*K=Vb!#10i;B$kuH+6~EDaLkWhAOF zXQul?>Z~c7o`4F_P%BHtmhp!R=uBzJN`sOMR;Io+<$9Pqkcc$=N0a4zoEPZ8FddYn zqJKaQQG8|)U``_^i%X>_>@*=Fg?pF=Xik2P6NZ2k8rGG3+*Y+>3CJ<#&=Eu=LMtB) zFaW!ekOBcpEr)~d0+(gKEG%*+p#)1y3q=30* zN`$%y#j4a5Tuir?IvB*>SgKT9)=!yv9aKbS|(v4m` zs@k2*DJzG(Han%$8zKI1U7?M^GDq4Gjloq`8rP*9MqC4EknS+2S+~{+duy$fZ5<)S zD7My>yu?h`Ua0G!lw9vH&c*C=Mrh-XyQQR=g>&$5mve~FYZwljjp5P`l9D9yI>pRj zZu&aHW+Q zW+~N?aZ=>mal(Z&)~XEQCnlVq;D(IJ^#~@>B3N3Lf*$a!^`B~G>ab7EB}9q{8bdj< zFnZ2t*1ICZnL1l%zQo*BV6UZ=bp*ML%?NpJOvXz$8aPRiMIF#v!-t5p*MC-;N!PZ8 zMi=6>YU6OE!vM?$Ko{buLUV+YrwpCo42tDU#vCU#z`@UW6%ceHmC^!{wF-j5lsK_P z0YNQ17)1{_Pz$S32ZeB4(Qt^20HryT7oPDch|o0Suwp^tGm~xb}M#uvdu`M2e)B>8DOwxZf1-qLbGYcN@&}* zq81{^wrw_UR-lxES6Udb(aZ3W0I1YiIVtVN;5766@kzu%*ZUZ8hf5~HfrqB3emn)qhQx>{(h zw^7u4{D&8sP-Kw;=!{4a!Nog6+Z1ZcneBsJ_Cmlj0UiJx5wua$jL_T-A~aSD{7@uF zZ_Z2BE}N69F)quVvwB&Wf`xeQcKUlSrUN$k@zq_AU=$KDqMbDghKoxqE2M~$mIu}c z=rG|tskPKmT4Qann6*kX!$_PwJn<{^h@<9Ob%}*hGhAir=ix>_px~6TS!f`|s78>r zvnJ)_*wDc8FbX=?jpH<3T-;<(DbR@zt*W4dGmTMbi{X^JF4b0@pW1HQ#!}JxLC+n4 z0}L}Ic|})ehKx{XP`JUA;i^ZV8aCVmnRIj_8^^=k+%@(Tc!f~Ip%cJHFUnEXyY>Qg zN{egf^6X|#Q%adZbvyo^#AYHym2?*;aXDtSJP?B{{V!HLN;AAbiUJ6e}mK-k+ zecR+M76)|7K(4D_k_cQY`Q?oOw@^R$k&pb)bNnsT)3!Ox&f)2fYwS7#*Ae&?iNN^= z1b+cG;W~%slQ`!Ee?Io>{$JJzFayAsV*;@W&mufKsGp_p>yShsfEPD#1b}Ck(W@st zw{AT(UIclkG(I7AyM5K0sQ&+-=;d{m*ItmKe>Q7$9Y%VE*LR4{`ztS-01a51-kW(( z1$e)f#;dN;Z-z5~T@^THlllZ#o%#)fex3cmHe0jnj+)*H@XRg{DAXsIO=8h~@+AQMi_iA)~4CIS(B)*usR*Q{q3H86WYPB1B_8anu_K_<|g zs;I#y&_#3B6M;_i4xsA}Iuv+LHN5~$YG5L>rU{&wK_<`(LKg@C0zd&j)gSWHCw84Q9BX~_dN{`ssLmz#Nt`uAGRU>^nJfU| zo4nTJ_qG`)9LWMD0ee>#V;k9x)@GJG`!LFvw!8B+-g~dgZzh`SrvIiNU*`03sG=5t z&Nn>BsMEG_Q$mu6BUU2F_OAcv7Kbe+kcA&2M%VRn5^Gg*ma{g3uX+-`ZC!Okz$g$g zvxpc{BZIaq;1Dsy@OsyOVFm{5xd;03jV=W1h(Pac+jL(7L(zZwh8&YRNMz6j3?+t6 zWU0|y<&RO9T9!ZI0+AGnJ1?)al=jYwuNH|&{_-y}qqQd*WBk#UF3Y9-+MXWD3hZF=R-sKuDa zJ>2Lbq>VubV|Egq?eg+A0Kbh~Gk(&WQs%A&JnV807?Kgz+tBqFFE_&SV=6K0=I8Jg_FH& zdq(J8tM?AYgWd{)p8(?Y=Df6~+}~^_t}qhUrM;95Ln*QRG5Yca39yGR+gAWsgg)t6Lsil1{f6)h%w8O*VL1FN4Wynkac!Frr31U zM4rqt>?tDAi=GJiO69V^X`{_T6Xg+*dKpImO!SX2R1Q-PlnBl`*U>yV4ijb{RB?1E!Ot9CeVL%ha zfQb&RB53+&4N!zN%@p{u?DII-!CULdqJ7&~X*_2cg4RqMrB-sE?FvpQ$16h{1qOG6fffz}2m;V$L@SneDh0E#kyt=1HKb7DU@o3XPYEeKmxqVw z35xR*IL6-5j3YGx4cn%hUD>XMTE-iq1;@~wl1>SjaUhMo5Rqv1UJ+!-rEIP;7as3C z3_%Akw^opcHjc8n^@yG`4-srPJ$-T}+KB?v>Cj)Tabon=O3p0lK*NZhMQ}69Ws9oT>;!gQt|M?A zfv=tNwKx@07ey&bLN-&3Y-7ms+E^n>$?sIsjf?0au~lT-EVM z-w5_J#f3hwEMEe<<$;~jNb0kv3pu2lDT#A0hWnRHs!83h>b{(jdKwn->{F<77=0iw zk{$FT5xN_1){+`JcY|H(_z@Goo(;M!=Jzh?fgvUFWu!Kzh#QWH$UtBK7C9rzME1)) zDJh+T1HhC5F=EHhosi9M<|J_x?v|JA#=uYfLmbENTk?tL-X(=ymC0$A+;Qyw$+j#r z8hd?yTydU$Ux}Ou^7iS5-HShH*e!(JCw=~!H54>}1KT@`CorotMkP}QcYAA5d z8U#4uATU6gKodCO6QQ2OS6%1p0OF*akW+I~W(^T|COFcEUku z-oXG7fH+~|u$>TafL*wrx7(D;sP@cCNmq|${^&Nce{P>t#>u~ zlCQN;Xf8Wa!=js6O1ZVV-`^k;fe1J}K!grUbnQisU-*!1zrO*1t($I}(6DWM|07kGaX&G}<@kYD zxIrDEKkPsuU}khJc>ynlOiiQ4E^O!oiEwy;T9uxlMhP0Wjl?l&=mv!t)(TP>{(gUf zD)_0Bo)XfG32vC+1Ud;^>jNS1L^b8XhR&1-%ayqzbGT7Tt%dv``sOHzxo$Erk%j?c zQp6Cu-38Wx2xZeSg#U<*CRzK2kKmKP_r7gp%4)4B4bAk`~ln@SD*u=v}j?SCsQd5R;efg1P>x~F&)%s zCg80x*PvvYSl*6@t+n1;Yh2FZJapDGalmuO5RT>Jn%wXoNjTBG+wqu6vq>D#(0j)d zc+iFCbd{paFU;WX%2#r201hVzY!J=3IYz*^U2JYqaIcnHO6g6dR%zbt_RF#ZB2om7Q8PjSJVJ@W0ylQC zj&d|ZWXd8~u^z$h?kt1Wn4`rE=QT|N=f?ds=z#Z8FH-^G9vJ} zlday&l;5mXqo8Xt!&Vqe*Xm^}A;`?;j1L+wYyh0SBgOn`N$+*1Lb~|?Dg1bhxP|}& z*Q-k{N^#a&E-!B%4hN@%b}qvQogRiLI)u>=L?jPN!dre?s{y&#AH zcwQ^}Iz`}yMWj$+(e_fLq4(YzTe6`R>p5%v;{#lX$B{qWC0S?XhXrDlz8*ivS*lPJ{J;* znJvpcjroO>CO~ty=T#9s9iw%-v^@!F>U1X8OS|8bQ74DpUP;AY4oL_mm@03UM3 zhcMG3X^nGrccOq`lrEr+a)p$kjh2Rti3l{;)=F#K=%huT4&3WB3cWckIp<~B0})J+ z1o0oYw+**Jbv1|*X2*jeq&OCy+H8%DMKuYnfnr55L<|kkQETQoXU^C>RxfrLe$H$V z%;B5(Q4YOUoM*BKJLj-YFo@{cwgV#cmLg}|EhVfM!V86_8M{)}2hRo(De&G2?{o>Z z+6Cx=d4NpgA)wdjdb4KvN0k4HD+rD!97Fgi2b)Ab$)PVZW8%fiEm z7|KZ)7A+ozOfXr=ERU^f$h|inK>E+wp@-q4pPDWrVONEv6Oo|f0QKZ_*QA6BYAq!k z(;p+YrUNZ!9YoYq2V6M7DF-Z>SA{umh%7lXQkFz-ddRwsB^Ln$2d3j+87n6z%`$kW z7^`;$Z%rpvir6-qnw_rsN*5P5LRYq}6fFtZpf`Rou!?&LZ(#sH%(Mcjp_*|BUyiXW zp0zTMngRmIO75N0p0%g2*Q!~Df>t!6iuVw-mBJdv6CX@Kq84HtadP0Iy#R`-|ay0j956UUURbGw`A%5tzatcf#zTzO&=& zuuT*uyoj;iDR6w(=XEgWT`A-scz@+$f258U^= z-t^iZfb%_K{u96It>5<01JLyW?)JTJefTfTE_wm*_rCLAf7Q!hcXQ8Y0WZPd_f2p9 zf%m)vD}Vl5-f>TIa}${T%P+nEzk>drcmBC=e*3%cyC-ZEdU2Q<7=%*=feV;#eenMO z_$_bvfh$9({f<|^{52Q*G?c#g{(HawTgISZ0ERR0O!y1$dFQ|X@M}o34PM^cuXIm~ zv_Pl_aQXC}m)`e#-t@XZkCW(m&pZFvyWa8}9(v%V`^B%=BJ9-{`#<#dH!3)T=X>7# zhS%S?V3b3Ls^tE*m)!FkAA0GZ{^sErYyOg0cyQBQz4VKz_oiDx3z0KG7S04IDR)DvI;P7LQn z=(9O{!A}VI319=xyJnO6oM+-EBK+Xg&}U8ago6N+KI`*dC;*fR;CC?7oLwLQ_=yL6 z0`xwqTAOTt$j}5d=;B;*vJ90LAJu%ENAQKOCI}zN?nv})UAdm;;~BQOQ91lLFgX}W z7DOoh;X_YEdy5jf;6yp9dM90&mW8{G#%Fxa z%cS(iDN9E6`2Rt*WUj>IBtECKQ4;Cnhnwpf_bw)C31Grm3ka>v~y=^e@Yv z5`i<0eq;$0oCAmk!B9dFhM|pqICVqTTF(pDHYo1frd;hDJ{*!gdc`C%%ZgR4Wq>j% zt+mU`TQm`dnYz|WoO>g;r6IJ|=g^=JP0HrQ&a(Z~UHIBV5^Cnu>80j*ek z03zfVi0lLHv1*pAMT>`M11EZ7ODUJa zBGi9D4p}pECzVFTAan6a%dpiu6!yyj&9G$^-J0xnN{DxDagRu5=u8oMdb@+;r&#$( z`m-u2K^0pV3TzPsDtM3)nsq%ih1w{1REpA$5Q#Y=S;GI0>lzW-SKLmvj`kYDJ%m^ zDT#9-WtlKZD9jvy0XBR#vrMisDLAEQ(j$b^J9q*HM!}$%ZtQLwvo`laEX&?K23_lf zDA7b5!SJJCDYf@T`j(huXgTI;(TW8;F;_*Clq=zCltIzB5J48TAoySgYww-JW%8ll z45Q=r=;jY&sy#PQ4wSwVrqh>oiFVMhu>>w4K5Z`2D5 zHD^5$KtiMNS;LQCW^9&-ND+!NM5NfioNP=`t(wQ2a}0)1NveVc&(76}hpj5Ryti*i z4V>)>8Ly-q6Qyu)rDb8uAczq|$)wjR6X4i2lk=lX(_v71m!j5isjM6qVi^9Myv2$y zd6)EDVDYf)ahwgsxu+Wllw=K`>62F|U&f;ZI;v>`;ATvUj9&Sprj0Tkz!zFDFUvk> zHi)!MN-131_@EOU1mz?TnrRmvGh!}c&bc)$P7qXSP^F+B4Zz`WS&L3Wck!nrpTX@| zIt3zv)0ruV!U&AYc^ET~NLiti2*3-lm;1Kq!U-q$`-^EkLUdHo%$fTJR%1sD`fkq( z+`$~7I5S=}<1ICStF19)Jw)&sk=AgWU86D5MCTA>_8EvY4C0)0)uR_p(`T`vlgKkb zWN{{EEx9?^2!1DOpvkTt`Y-@YdW7^3CF1F_y3hoNqU z`Zy|6$QEpumzT&|XLQF&*~TLvf|EfWf&d(S0IINu25Q%HS;q@a^bGw9OG;^U5fjej zsX=tJj#NafBVE9PpPZ9^(0}^X_j{g<`q!=y=K!zkui^-N{ki_xTeoxz_3=+!j)(8p zUjVL0d>w(Wp$NFyIoR`*UoPI~F?-$p;v;aHsuwMKH_5y8y=X&Uqw?6oi?|tW+ zfA^c;_^Yqje$%U7@m+6z`0e-J%;O92f!*#s555$^Zy8Fc!T-p+-u5Tn{q{HAv(L%@ zx1ayq!}r{aq1WEL@vi&t3mLa${%^ka72o=@2cd`i&pvglT{))y6RvQHz|TE7{l2%n z;Say-E&txb-|*fC~Pc{&Uz(lBl z^X9}M0(an3!>rG{Cg-GsPoN2$aFBD6iBAUbiBJP@0uz}v%@a%tBETfxL7B~G*6>3F zKoC43-~dek}0s&UHknN3aqy7IM8o>cTUvOEw+FPQ~UV91ZER=)hXP1&1yM3|APP@V_`NGZF^ zEJ#*a+{H6ZOa@GlW`e%kU36th^o5_71@>jx?{@p%I5RqiI!A|DO3E5@dbcKjhLY5p zG9Wn6yYhy$Z0kxgwAD)T;?mvGL+_Hw;ziE#s#c}=u}c$x$IR`j^xk2Zbt#qqm4dmZ z{jM=88?tR&JB2&o7Z*3u80@mhM52+oHd7eU3}hU$XhY{jaOs3V zZ>^W2BeZwL*_}y2N&qJerQk5hbS`z6Ce0w65tEGp<<>Ncs#FvUwYHIgS{9z&jD_4# zLIb@R%}NVug>?NF`F1p!oZU_<7B^ax9-N^Uk#*Ir-tdP-!uH6^m{4Y_R^p(1d}~}R zdCrpoWgre~Yx<8#@{&M&`WRQOB*E$7Qbbm00y#5GV%U0D8ml!@_BoH$f*UZPXIXap zy;c;xuu<14HfmO2&Y5w66L}CK);lf*H9(Z0xE7RyqYdJwyqlsF?igl(?g`lm(;Riq zq=2=6r<9H4;Pk2#t$DLf=!OF*XMHj{;@{_CGJH<0PEOvS7^c>nnc;~$#*w1dDN#o0 z9e1>jTRTccpw`_Dq$+@JX71YcG}E|kVmQ4s%Q!+tkBd((p*8QllV*iqdkqoOR@HID z&=?Vui~r!g6AB1zSr$~FGiM!5SZu9e#awQ?A7>dotyTO*1HHAfH?zT+gahR;X=?nDpMGKUBz8gVnt z{!{`3%Xlb(lW4Q{^rsBBZ{KQ75nIr;+f&Qf2xe;pjqoz8h9ILRN~LJLEU;R22%sE@ z&>Dk+ClSZ>g98(wEMxtkVbguK_Diiy>(Oq`OE}IiQ#^v1LaPOs^ISO2U{{m^ohV@} zaKI3lqr+HKIYLSp2ZqcXZHyWsV5W&1Qa+nd@+fA?P>;bTx&Uy91JQc0q1@dEU52DN z9O=OWxxoWu1`i1ZQZB zeK0V5MxQBWVvC4n*#S^ss|8QBTcMljKQdX$mh-fZAc*e##%&j8PHU{z-iEhqG5LdC zBGXi=@TN%O9t0GkmVtvaFlt;%kvOuJg{KDQc;aXXIDu?d!6IALQeyZ#LC~hvg)FK7 zbY201T9zJ8Tp9oX5CBO;K~%%KHtcSvi%)pm^#~hmm}Od7{LC!4BEUnFMZ!WtFalnu zh8e*~%nNMHS43zRW0$T8csK^Ge>VU^lVQ>YPwy>IgCa@GVY>GFiyJrYiC`&qk7&Iy zOgN2o+c5!611x0~(S2PHW`;u%+G{>k*(fP#q_q-1CTs2v_F#%J^{}|Z&55Ly32}s1 zTYCtmh(y6*n#-aGnFocKAUZZi)ro>1}Vu+y? zb8~0K@?5Z#v}ACXK#g^Ns4@YY4E4?~)3R@^f%mT3UCx_s%H^2LqK~FbXBC!&&dhE6 z`=^Km556J3*B`CwPp_KJRgE`-H)I}#(rl)A?_E3BuFG`3!GF9E4wYfoHsY z{^TQ%z3+>Uy#I@j@(uLhe*gM=?s?O_HyPJA+}QvAx4iM458Th|?c>|_6JLDvXC8mN zn7!kH`~Qny^|m+PbKz&IKK{g$X!yiaPd!!2y-Vii<`2K~Ew9<_e*DqLKmO#Cy!^iA z=FQ*xmWTI@zT0bV>|T9wfr-mf{`yBh@z|!}%jGkL1`fca4txEL{cm{1%fIp7d)C@M zHf(+D$tOup+|21Wyz=F*+UIj;c*p<1BabpD;540OP#bOAh64l$9;7W$G*G;_ySo*N zySux)yB2pX1Sk}TqQxDGyIYas{^faRzTf*No0*-x_qvYrIAK2o{^am}?(fRm^;N>Z zc`U{~OQgA$$DY+dgO{0a&nvY)9DTblFDXiE#=0~;?+fq4ee4B&uYyGiwmbx%mmLCb zs%~jt=86+urtkbNik0|VmEb13o-k^)R5DgR+Uxt?>5#m-)p|a}<>aq6VF^8QzZU#W z>T7ceco|1~Ax$v!Z40t;G~}!-R2G9%gng|migS}sP~C*W*5IiwNEa>z9|Bo3E3H&u zSGhp|#EedMYWO`&?s6sH`AGS|02N_C9$>%&`X4rzM;jhFC z01Z5}4dI|bglok>_&`+z+{~Lw6lY9TB2-W#PyThF6Ae$735ojg)?jIjgR_U<&ja~w zHECcJ+zf9Hf~m~)I2IQ2R?$;JxGwZm$ge7eVnV4?pm^5&Fzt(k6{hXjk3M2E7CRwH7A8S4hnDO92ZmVHLLxJ zOG=}n=@ATp>=d#j$c+`o$}&5mmMfZuA#da{ApIWU4|s>%fO-bm$T6x;?2^#;9mmD!NWW2$9kDci z#E?B7+A0jU``%d4lU>h`IF`7Ks4Qq}n+#DZD=!<0y%(nDUQRcYYDj*x$+^ot3L!;Z zmYwcWi$E5@WgcH5;) zCnz%;(T7o6mllAv*lP5cWJJl~F-znBu&Bt%cK^V`=9(3s8(I4fPGx?d)o9I_kqi?wLS67%saRn2{iVf3!x6U1^KQTS%6C(+oco>obOE5^8K--MqeJc}lCY5{)vR za}Z!3iI?r%ST`K;BO}_mKRxwhnpOY8O|pIg-d_=q&)<#0#+ZJEW+GS0i+%htk_z&~ zbN?9jUc48l&~8sL)a%2{2DfNXX>9KwD*N(O>p$=lTIXLn@8;R>xDDgUDW$VHiTX&t zM%nvm-42ml2XvLNQHruj;2x#AW{S%{(zxENPkm)+V1ekZ&e$w#-S#)_!1dTE;(lsk+Nk`s9v32|8vVFIXtvyhpf^0(JEvx?RDOpHapXtUo_K|O$Uc+pRS%= zU1JcLt=jRphxxaTiJnz3RjK+51-j$nVHT(%hwZy1+`pdKM-Wd#%5{fj+~^zvGSvhd z29b>|LAAJYDJXEz(!m))>+_IyCas>2d=h^(y4G`!ltS|tumg1ZPliU^w{jBt#0Uo7 z?o$2(9@8eZ-LVJe+xql=ey@M^rwy3Hh10wzsEu9;367Av?3K7#m_IY_Wx-BOVh z9Gh2&`_SxMox5yY2uI^hbt0W zl+XLttE$ODxAWUX>$;Z6Szp`Y{i55st~Omhr8$yG*n^|Y>( z$85f&8=nZI%?9{I@=0@AuFObm11Y!`yG2kJQZ$9v=}>Pl$`Dc(=h;a7(H zMMxEhfUD8$|GJAT^sFcJ{3-+!bKKwKDotMuq(;K`FJe`HSs5aXNY&;3x zBm18s2wlvQ?g*lg)L8i6as48nrbc{x_(=NH@9{G9^p>6A`&|2SI+(xc$<}lyct5jo zdtsADw^!?XdO*^uo7Bd1@bv9dM8NFJUFXf~ljCzpg5d2=f}lv56kS=9R^Mlw^FLSL z1e(&iUMeSjALsveJxnLOP3PZFdAwXay`JR1E=~$Od_8}G4J-KcuVi`H%*G4edPrY3 z&tJCg-lSl+aVPN4(n{qn!2i)jsd1SatI=|R+3r1!#!$1s_2wv(tJrO&PV*~X&qLDP z+wc6x!@)eyWGo8%4F7|VT|sD+o(4@D=PHlAdwcmWQ&O*6OoIOw1RtXY7u@n^c98wh zoIc&2J)QfUkLqXjwFW#kkUm!mJ)4k{iN6ge_-!UU-y^?HANXIM``un4`*HINNM!Wk_9UtGR=gmIJ< zWb-T-GMI^X92Jt&CJZ<{a5OGJBLcu}W^&*3E8U1wVR3`_sWVblG2o}YON>&T^}$r$EJUKpr2>tkY{G*7fK6P(425HqDUrMw z#f8w}?$*A%uikQBagYWC6Et2PfHrPWF&OKEB(+uJg){B_439-n6B{CKL!M0!xvE??|^O;~@% zGNE5jE<5)3=Ae9sNtD?@)+Wrs6X~ZNvWJUD$`vf;^~B3g{jEAvSrnTnBx5lr@P#?F36;=3EF8^qX#R`A z=Q<8|)ohqVs?|_Lc;7=)Lgga*KK&r%@%}5$7H(MFZ6-&R@5wS| zw<7KStykf5{1H|IGlsY{b1JSWZc^Nz0FBRI@snWodqQRfj48Hjn}O+l`!nMhGH4|q z8yi>Hw?G|r#YD9>W8(diT?Yx73BK?tKG|M9^nT{h!EH85BkwV~{1Wff460c|#pyXp?!$s+{ILLT(IOm(k{CU-ZL z)jOlTcN*M)hghfn5YhlWGFWXu$9crD<{@A5z%d1x;mx(Vs1K2TM08PJ4T1E?E2^^) z^$il}*=7{cV0NUvI@ya`mdt?(7$W)5!cqQQeBsk5JK>CU92Zj9VHd-i9igSZbBxuP z2Zi;%aF5>qo&rmu0M_|L%-t8U)10oibb;9t&3G$KJ^O|G@37x9{Chv(REWP#E_z17 znnv4iw=!Up!8grjqDtfF8fNe4wdd-{UMmad(CEDKBfXbGjEjrbh|q3#>K#i*FkBCa zb@{MZ&S*}P(=@aA*HP&L%rhrj*Qyih$!w&7C_7JF2SLISNz6plY*8HqyOb+ajx*_L z7E+xqE_kIS7s-b7l%=NsXcAM;z{@aWg#6f~h#Yew2s{{@yDsY6uCvo+?i;Jd#r=); z%Fe!HZr)!}maDZT>%tX}dYXwV*c*AHEeF-+QP%Do0V0LLV_5t%oRE(=s6Xtb5bcSQ z#wITukPb7!MkRr1jtu$XH>N_gU5{tWIKVUv_d6s#xFu6qE)yt3-QZCU$}=$~(K?R( zQ5riM7O@9>&zxl2Pyas)81TEr=16CIhK|dyUl)81-o%BIJWgfV6{ca{1SW1sF{d~% z&&fve1YdvP2Wx2q#4#tobPZb`d$%e2jRq$Knd*HhO3FVx;Aa7VZbL{gkgRyhLw=oKc9pRX7p2( zWM&U9Rvx60{!J#iiPQ~O|HZR$rKyo_^OV?blJh-LO1cW+*x3YMRGt$9zT@e&V%XJ{ zsitL7;UC%E%kS!~TQ!-zjH#)bY^PEJVSE&v#S7?-E-J!>hH>R-?0xwSw|K{X0K2pC)C(<@Xp8*^ zA15aYh_{rs;H(=4jGBkRHfdzeun|KVGunb6j6Bewf$w0=>C=P0&akcjS#>*ziR`wr z*AE>t?abai&Gt3ux`~Cqxe61moxZrhoUEeWVA!Nh+9Tf)P8S(E+#YYd5|v@9Z7M+$ z1_&OFd!Jy40nUrT=YV?&C$0sD7kSfpUuAi5;+=9Gr+|*1(39+vi}dBsnVrsEUDQ`A zua_19Tco~cX!!;wLJz;CUJsP~vovh`@2fj9XIrV9zXqH%blqzR-d4VC?c`J1b>E;n zT+^QVB?!Dum*-h`cHO*w^PQE0jVc7V{GUGR`zTH9BEB6@`fg9F+^_@}9W7R~FvC3t zDjC!S+?eD)vXMU1GX7k@yN8x%y}V5N1;r3`~eq2@TO5Z@JCh8{$0#Y1m#%=zn0$WQ<}5!a=-WM7g8v4x|KrsORdy^Urctk}1RySu!H^Fnq_w6Y zgMs~1IUFFzUTUmV+#FTIV%Qa=L|jBuoJnka0L|QWo;5fU7T6n!!W3+$62*{5y@|qj z1|FcNfL6rKF%TSk&ksv^d@L|N;sH$IT>+?$Mf|uC7PsrAf|q2N@)NM|-&`FWEUj0d z#64{ljBo)v1Lkv#!@0Kcv1{iRO`5Ys*wUK)YPK;eX7|QKR^fasqUu@WS@9;-!wH)u z#>R>FX@f}DGC-5w$(|`PNtIU8>?JiY>RCcp;LO1jYKzuTO2U7T9+ej1k*CgI1Jno{ z)@uoa|Gw`c#&2OYNwfS^;rwa$aV0mKL~y^gIS`a!M}Oq7C&`k__L!!g{oY3^q+f(N z2px(ODv+u46-R3Aw~6LJ3Y?fE~dAID|f?gb;}mr4t#{2 zbqt6GfTu!r*h9pgH5APDjE_hHq(;!=Mhe>(P1a>8lt6lbF!Alfqb%R6pu%ayn|$FN zE~E%%2y}KtPZJf!uir=9Zey)Mdeiz=gk4C92@$SB-Il+y;_r%HtN$){OeaWM?Pt! z3u)-u)cRpMuR25bU2XVfKEo*vbm_0&WLG*m&~d$<(f>o*+s?ERuVVdO^t?32iTfat zKGY&OQyQB|DqpqWnR}7_lrM7;J)R;MqNp-J5@HjT&e!}}j zzi_{`FmW18%Q8I~vNrW;`{qe4icjAC<#&=AHrj16_1=;*l#-nd7pXs;7Yby_Ymo_* z7M0O^rp~V=to2kg)zZzT-+p83@i3LrxHSLp*uS;#d}KP(E9w8MSKDX|PdL`eg@rWT z9G4x4K@I0x2;3cr^8q_?-L;-%Qrr?3YaWIndjn-ezIdOPUeHN+Gh%1151)rfg>FZ^ z3ZnA6+>LKcuty*nI>7^da$sz4>`E$O^lp;qH>{$iFGBUSRxI5}*!fybv_EA1 zT(|DwiA4Ywh6QEx+%<06^m)q0c-)glQ(w)R@|-X)T$Qi-Lk!I*;s0Jo;?aF~nPAkA zBPMcGtkm`@so`ce?)6|yGL2>U2$hfIq4$paKqla!auV5_sA+e0Utp=ki8nJy*h2-< z|5>IFpYFy^o6(sdGNW+;77$m#+>*4xprEDpXQSxHptYWZq^a~0Dcf9vvapF3oB{iG zCJm0DmAXZ132K8g)}YFH?dT4MQ%t0=cOV8zDK^dXYMS)SeMFL291Qd?vqZ?b>q$*^ zd&~?SAMHOnM0M!RMdOq#1*SJhMl^>aVvt!DIFS9DH-#mKUON^SZJXw+QZ-{=Z2mVV z*u&0fRt~s>m9)l&y{HLh+1%Cs$M%09g3EKFZmF7zLficoep#dKzr@#Nj?PSqtA8C? zhJTZroJh60ba^xH|BL2g0-AWyJ5qH}abqBw&lI`y2RF-b^YPB0z4KLqpS8p0-wcXH zOX}flgoah1ptVQw8Qqy@j~|E_0p{Ecn(aH+3dsg{`^U9zhSd4f&cMg z^u~>g5yljdI(vvaG#_gcLGpc%Zx5KTz;9_0`nMx`O(I0rQ?&!oWxKF{uH6h`xL+Lhf>51rG#ePC93Uf z)_+O;w|)#h%;R^&tO$Pk;o83Dn$S3ZTR2GaHY`Q@boy6pXJ!4b-QD_C4f5IG`~ee_ zP|e#QEgptZ6ox4d4A)=o7a6nPz21Bc9&P%z>x!V0V&q!*I!NkudTHnLXZ+*F&3?q& zT>HkYfP>Gh++F*m0g3~gLQOAWbqM!jom27g($Fh zIEkT(W!|PZzne(mH!1*ppge?w8vsuXC>M-S{m_4<53^*UY=(+ra`44Ab2`Fjr4kgN%wp_iO z*D&~=$6cdxyQzNsgDdZaZ&kz?Om>Cdv8d(4Qqh@z1VcGiAXXj0u z0Ik&Vp2@9@91)9i-{vbFN8<`LlwXxXN6VGB#pW1b@7Pd8(E1o*V`DN<<}7_Tgxl^J zPRb^uf?`_ueeqrx5zQa_@_WbfQn=e1d94XTMVbI{`%*m=Ze4S>fnco~{|m z8hps&CUxT%NfKY2HL;`-G|&WqUFq!4_tpwG-hx$R^v3V4HOTB_9NMO0Zq(vT;Mlbc z`0zmOdS>Ecs05ajb6u>2vVmM9NEEok^!GwyV*ZE7f8c$z@4<&dpRyuSojzqcQw*hEWQH))nl@`7$1AN-TOf&^z{HFaBt^rc%U+cEypzuM=;L zJP5I-MSZ7D-~MCDLaugx zCxH(4pHy4jx|Z<;WGYqZK#&+i*tmqfb~a*6NRYs9H&)dy3aTMi#6W@{GnI(zK1~0L zlqG$C(rJoK4Z7&c{oI;gT(0=r38m+%9n37Ehp_PJg&|07MH}KQb^XK00j1VomPHUc zrV8t(BgRDT$j4?#iBIr(U!pp|(KIGM>ON^!MP_I6nYtqjvNF+h8@MYgdG2=&aX`L=@40B6iDUl?9WyCU*G7Oh$0ZyNyWuD{n4sr7TLTYRQHX`Yp0Kh>e}dtd*gjR%F!RN4BC<}|hzGv& zY^Qhqnv~&l*a<4FIM8MEk0y@4MXa^E;80Xi_=%P4Z zD6fjLjwBpGpy zQyr7_Mm&oJOHRo+c-5otH39#H2S{M;v;G$pqz{EBIu*75ygJ<9VCH#$pr;gHk6vR= zi?F{H{`vR4wkt%5z+r$s_=H$K63zqsClnR*~4?<rf9idsmZbzuV!G ze|{}DpZ((N^4Dyqm{@Y<$40Gm%d(~&g;o-4W9rcJa{eaXO7!k#Tr$7 zgYY)P74YV>e&cuU{qYoAbYTo@_|kkEoeU^zS27{>JeB!HTX^N~ zSFTtQxDr7UkQ|Ep-ks$a*XsJ);f^l%)&U<$%NuN_KjPy&Fu(D1ZIRC)VO{RfAc_8| zTbwG%o3jvM)BfD+;&tPGBtoUX_~a3`yKpI8!3wy%Jb#$Rdd>^D{Uvn$3rj$dJz#~N z#CN!!>}6@?8)?9CQ;{fw@NlRLQDcZSVN@;p)W+lE!pjdB;c)IbF7_WSIQ!P8nzJ9T zI41BYmj8&ZVe@uOZ*X~{|1gz()_&(+`Sw&U__9Uq&}i@Q>n?9$)x~50Y~M^C(~4ql zfFmF;#-+**;}`*4qgzLGuOZBI&3F^k#b2ln=9o`#5rHE>M*vZhMQ@a#SH)HkNIqvD zg)A8MQoonauuT!X^CR&=BZ%nTAM&r`U-T@~SHk>|bH1-2HWJx0O%V;)>b zQDAn9VeA3f$>GUTKrjmdvy-)VRAK{vjVrp)Pc5pz1V|!; zaRNCs|Dy?k>~L8rq`-{(Y6~WDn9u+KN@YTHe@Su-`+*_1Wc_DD3>2r!|b1>L%3$8~7oFQ@nL{(vLR)`RX?)p8_5jn|;ZRtOVB*p*5y!b5&;~JxYbd8?|XuL=8BEr5dn1?GwQ=-|x0|G`*qxu0zI#IoWlR zDKrXAw4jL+GPB$3>YZElRPG6{pdcz0Y9bgmSnEMc=@LvA**Kq?a5W>zI#jCCaH?pU zL5x)TW2~pB?oJ=IKbq6C9>SDAtdFh6hF0pfY5XPmb>B$hPa zA**PMM0u6?WDIdCO<|`9(*O^Hy{~oUuhs>&Eox<0Ig5}QT6Nr!Fi{{#$o6E*S&w5> z8MOH|hMFc!sI-H@IlBTL1TmW*)qL*cO4OD+`OiiWm|UZkY;}NG)}a1C3^G394lUr3 z>RCbd6659gT>+JtKIz;+n(N+RES|MALfF@6sY0Yy#5v7WIcc(s)o-rDj((V`{Tl_XHcO~dM~z8&HyQ&lg$nz-#l2)0g{FMD ztC7I`welB4_={!7JYL9;Syif}W+q%wJw7Kh2b&j5wa(m`HV5l|2aoL`q$(}96gquD z03(7vqS~01@WSEZyBmz$yg%LWr7Ow`K-Xh`dMA$6XP#qG6ts2vX zS?_@Htnbsrwfla(VlucAlw8PqjMd1Byu0CiwfRa@7zLObSZcI8fdNlnYtPa zv04Yww*ee%69Vk%OAI8~B$yWB(TRoHX+I_2*>FgHT~O1q!Zc#Ijinpgo;W-t6WfSJVv`sR zMI)hEukf^FUUt zYr>V{ADiCGCimv1Toy7&V6Q+6Tw-XncFy#egD2w|1@i;oEQSEmw2gQIT~mh3Xt0<* zkIkPRlur-|OBtBenfRd25l@jwn@PV<>T^De+T+U7&UNbq`_K&&Og(^#RVmcOyYTI#&c&sT{R!F>qSVev? z`Ktb~N1UDgiM{;GonexxyD_uyIaK4FaY$6W9;_@vYOcPAvjc8_zDas!&|UTZ zQ_X&dT%1l!=u~vMz~=g=Tdid8ni4VSd_qGKp644bCKb<w(sSz zf1gk5SxE3HhSXwVTj1hIZ#`P4guX16uQ5vWBmAtd#S+G zdPmIE8u2qaQbTBJ!+%4d>-g2j11?_%Ea1-hQzV?M01eEE-#uwGQ>g^Go+-%#U{3MD zLB_Sj;E>I6O?xX*;Bywu&#RTLm*g45!}@8JGapw`IK{EAZa12=Qhusnt^j7{X;RD|FLo;HY&ZTQ+QB&`%JwI}r! z5YV+zZ>E~4YD6c0_f>D0nKt_Pkf|2n$mX+TLPnd!u?@CVwO+%-rnOiD$go!ZEHm|+ zKr=XnCVLG=ml!!FxT&gpY}TvLqr~X{9-#Iss~Da8opJo5IdC@Z3Z6OodobBCnz|!8 z5>O|la82~K->Pj8Hq-^sCQCvq@1k)BBNJkK!v*Jxtc44s^l5kwRGQs7`^9Z2IdBxf zdDs^Wqj}UIY}hx=ql;i3fmf>bb#2tNn1i_Cx1j>$o-ZlA>f4p`y%b2Owk1MT2mS#F zuaS7d_Bt0+6g=m~_rp+u#E;H6W0?a~+gm-W@vLixeC34&z+&tOD zE<8-_YZ9?Qh}Zxrq}8s9PvuZvoXo_(d64DKu#Uzmi%Z3JTDh=Pl-2uVi!n$CsCoqD z{E8h%*UTY5Hxs7#lcRLSRW(vkGD6$KE9a_y!=QvLs?1%s#X6~iSj!_~X$+iDpxU|v zTS6FU=+Q-{AJ}Pss1HjE6 zDW4LwiJ%{p!2;D5Wd@jQ(_P;x3KbhZY+=oA!0KYu0vsZK$9r)Hf$;uK42(p<8tOn{ z)LM%w#@d;DVQZ2-sJ6hA_npjlHO)mijr(6f0-`&mNUNz$XMLpBG^Od^cT&gCip6D7 zc(X2zl)=ZHqcq~+do)q8skK#N`nVxAq>507b3#0h9M@K*a86oBQD9y0m1bc)CE{UsI3VFDvH4VvXhs2F!s;{!{;Q&q3)!vQ1*TF@d3j&^TNia1p~Wd zauCVZwLEFMM7u4RK-w&L3QM>!966?uwJ?@|Y_o+z(VJSyuJlN=kJLAbnn(3Oodr6o zfzt0(57`YVdQUf6-^W5GT1c|*`YD}l`j8tzUd)k==mJF{tlNI22_70}5`=7K)OZ*M zmyfKcsv3Pu#aoVZE!{Q_TaYkg|BkDHBRtwPdi=RN7MZd2S@u*j#{-k*P@Xm{kIH!* ziF$)0QiF(rpQ6kmCbMX;W4AhEfo>0N@Zc4a(187*-I}sUBM;6IGd)WsvqX1Uxju#` zHXNR=_QppHqY?*BBT(aYhgb}f*tn*j|NkuDB``CaKwKOgikxfCJKpW&Ip?WHt`B{% z)4REI>GZ&d;Ij+(099uy#v^qq8>jf(wmEGJdpS#*(;!G}b`}k-0zGa_zvnVAxjLbR z9bQZUWWfV&L@&3lWCj_d)qJN_HCj|dM#AStjEMo#EVlv-5 z0zKHE956946rD&dgG_veNo005Q2_R+GM}a<^KBXX93}Or25piJ6%14~4n^Pz=w37! z?wgq9t)mmQOT{dP;nKeEz9^ZU9vCM=g_CTKEk}6|mxT`RpMf1JsyE_vdACj-))R79 zL*6nPS2;UI`=5p9f&)9~zt8n3s}7QWH=utdMR#^DN}kSL6yk1c>tSI4{Qbg*=aD#f zq>M+2Y;h#d_be6N4X(Z~iTFZ}9P2ynNBS}Xe(R=w#z`03rG(05;UA>d`L@dGEd(`& z94|isL=s)jEWU}Vz-2ZYS+57ct@9!phJ@M~{>wd%ihUKjOA)#;@ZS{EE#+@9`1SW4 z)=R0u)#rfCzYe}PB<;tN*OI8eip@jNup&b3*#SlRFJoodo;8+_0{2}l>2K$k)SgBW zz1goD53NdXW2(*Np{ZCT5h2pMbgmwfB@%Nx(f8Z(crFv4!#!hb8NS0IbP zu3J8GiBI48oZdlK`2KlsZ_;GcWF|rVuzRH1E_I3hX$ZIZ^`Df`@b4LulUrcxl>OU+ zh0xud&=s0*Qnz!Jam)tJ*73=?|5;4e+uKXj#>=GtvycDo%iBr0;2n+pAv=BN+CH0% z?hZ1FVSyA(qs@aSGd#|^p)osx5zr-tAG zAb8e}U;xk)X8hxXt>*a~Wc+$97OKgEmH#*FN48X4ic&=YS5l9y%fRJ}XL)QMq%OI^ z%45##uat|p&H$2b71v)M|sKOe*Q*B%%bKer=j#-mNTPMvH# z#)4nnLs2xw&WkkE6%I{KKBF|oF z^`Xg*2N!!S@sGB*MP=gtj&a$yqWx>I2qb)n$P@Z*!fZ)|_R-{n3$=*5?+_%I0T&s3 zrPG{OP4QbPjt4lMp0+(FI^wlery%nIaDmGXBOXKAP4Hq$4}S>SUUI`-Pwwha7%zT` z`<>zX;SXURb%qECxIG7T``S3~O^qez4>g8B?$*CY4@CL`QAElrh5KaK0mSNJZ1Yj; z_FB7?ot6WCLAQiDv9`I%>R_Fev`AolUTSCof9WZw`o>-$b zBUY=H|dc=$W6?8EcjsLSs{0YjzR)#evTK1Fqq680iqH2?Wrz0!Q z*9RoVB?DskL%!HlH5LpeD9)gO;}ntg-0(am*ws&2Itp1>e`>m4mV zv_J!Ls2hYBrdcSNZq?bNi|j)tC8OD-acEIXcyeXeii5vMW$!}A7;m&@gCG$L56P<< z8)#3N7uj5D*KPcKU(u5FCsuI4sD!|PU zmT5WIVMe$uM&82m{itYVDot@Q0u!Nu7y`i0qP8Jh+zFedy$LdvtbJ-Nz*$Cos*$vb z9^sa6l~6o+OB`5Xj&YSLA$IpzMG$OP4=zy8!?c-ZuUv>dns2!P(+kI{1!?;?t*Z(%@DO)S#70u%U2PjKCWqT7RVz% zRn4psj*=7JJSj!pI>eH$U4(Dkb+b87o2rtlk zze83^&~ue#BeXq`hVE_}=?FQS5NRG17Y|guYQIx&gwLd1TaI@+k{n0JAk=`K4z7QV z$NV`kvOssNH!UVJF=%Hz&{K24IEsl+<+?0h66xqNOXUU$Dh%}0m3lUIH)T1%h7;o4 z3TjYS6gBQ%DkV=ZD(9SMiC~KgOaHdMSJboC>Sg?;!GB&m1{s3c$??85QF~8_!+R0r zDs>S(^us~wq(@AF?Ne^rRl%C0$}{+2-rpGR;b70({^2C=AOV02;1}8;CK{4&39(O+^|KgU zP|EJXnmRx&p5R%K{iS3@ktICQtMTG-;Q;FivHT}0gR$D-RZEbs@`%LAwyrpir^P0dz+sPHG7yDLYc`?tZJPRZU{G-Q8{}E& zZ4Mgn7{+w0Q~=Io_B^bQ5(XB&KRU`k^>jyxQ;Q{ z?fY#g3DgH$H)x!uFRXPCoaJ}AJxuE~-@L%*>H|tX>UqXYfKs?!*_E?jrYr>CI)!di z0*(<#UtuU8vxaNHi;2+PM}r&ZBBkV`fXCf(=?>zT)1ily@w|##aW*tRlCc^r{@Yy( zhZMgPb9W_KIqvGsNqBz=K5`A9f53^{dBEEE$F9A`+Sjw@Uze|l9}1S@QvD~ner@R( z+-}zTKZJDc{lQ8q&y+OV)nsE%jZq$8881>T_}Vb6d5jqT*zajQUP~3 zm!c?;tqjOI5dJVOBUGy-4mPY0T7{dUCi4-c!cvHYb=eL9FJ$t^RWXQt=R<eBwHxv6&@GqGFtbSFDt5BEi{;f>Caza$cb)WT|`_s}qX0slpA=6?c zvI#<@#H%bSW?JgqAte$KV&DClzAbT#i?~|!Udwj+7*sKvT^$b|dfFz2Hq0OwE%#l3 z{f0lCh4V;>^W4Xz``7x#{LBqP%L?xYaXL*MBdGr*p^ zCa}1Rjqfp=JO*=WS_L=>E`rn)P*Z;wk)_{M6&W-QXl#RWf|~_#jB^gS&bt1 zS9f=TBN@}G0}pInyAK~Qii^L;Wu@lu7hTs{Hg-)!uadGaPnU8Sgon>uUge)WkOn+w)l zJ;UYvxE-DcE;|1wt;?WqkOP}Pr_2jpKvZOi=GIyK7q=d8;a;5C?noIAqLF4uL-T;V z8BGmNXi)-Aq0^rc?@dwAO>0G6gK_gt`WF_F`8Ac1lkcZ_>O?iy@8d~y<05zC-7+g0 zNiZMLkk}puW{i1Cfe51^%vVHnJYtb##ve}?+Q#0sPQtno8i0#j$^5_(mBy7-*8 z=%6l%ovFIN=$kDd49gVs0ygLMs z<0F3elmNUFPt-U4wG^)X^F9j1IITesRTQA*p}#uYXS`e9>=6s^ChUt7XxN$HHx@0^ zIl-1kmdbQzRAJuC9*@kP&c>;V{8+mJ{V~m53F4c-&i`Xf;6Pth`mNq=ZzSp#lax8g zFmz_V(}wIYG_o(l(E}V9RqPIhuy#e;#U}Aq_ZS;a(&=KO2-}&&EqF0nAr|365(nlj z=_>fcVHF^6LOuZ>T~^%J?u<;vI2P6qbhUA4wbCtRJQmn94Q*uf~ z&wTp*P44nv?j8SR!$OwJ{vD~wU$Vjd^uL{ zAW%7e4b6ys+~^GwoauLOoRhc|HR<1r1bMAWDT)x*C>aicvoLIyP&mb9oN@F3wb8GM zIh3WgxH{1@>7tQlqgfQIG3oz!M5>=hBE7kZoE$A~UE}Kk_uoIW=&9`%$h_`CM4o3mc&c8ja&GIhGU+*=h&ij;H;k4F z4i+j#pX5w1RQ`V!fRbBNwQfQt(sps{g%m|T)-P%sGymP=Fw^BlnJymlEjkXxoua?gscXDxe-u^-vnlmu*9@eK(;o?;c3isgurzs&o7@T=m=%Qe2 zLq}p^Om3cmZqBLjSSQICrZ_r&b93Y>Rtw9B9{iX;1aE7JHrwBcf)=PN2M(c02IV+u zlz2{le!tgf*JP)?N<2XHyZh$;+(ebW=&Lt{;n{o^gH9AY_U8NgmU?knWt_q z22B_y2l+iX1-Oq53?NtcprKhxR$OOZy*@A2uGZE(&*N%-4-yehXD&-suz-ZXFjXGl z(O!CsBM15Ic<)2kKbq!TPxH6uqw74SfOKSQ`O^a575+clcV+*Yp6=GGEexL8^WS>Q zYnP0@a%@-w?6dL$Mw@>i{^oqQ_BvMUcU#5{z*X$p<`-Z`?Ay4q?3}ymkxyOJ5A|zQ+>$7o_ovIc;Pi%!Sh6J*D~;X~2^XZE?co z2ZP5yOu6%eYZATNw=a`xJ{Rc@0Sg}fgXeriM2XzIqK?_oUCV<{f=|EmpH{yK`Zc^B z30=pZ`^;vKy*PCJd#Fv6Z9S#^Y>fN%Y_*jQ=`4PoeA~o&HtD(>cgQiLA$b;rlU2RoJ- zyvpT!W-`g#3yPQuQlQf)pcFt1W%Eo#S6tH zNN{&|hvEgE;uQA)#ofKQ1SnG6-5n}eic4{~{CO|FtN$(|BV(Vv&lx#ut-0o!Q|{*> zp%S^qr%WA1bz&xPGXo1FX4HcHK1(U8sDt+(bXOanM+S*>*Pm{pbh=u(Gw-yz(WWX|@xDZP&TX1jO$7 z-!!tbtEL%pN{!_*-f5sw<@CU7I?MT|rD?l4aGb>0=Nj;NjaMK0MQIX@>lTdlSd68} zN($8lXRzhY(mOmw+^njKhyHwyo2P$}jZPnV`l*3~)AHhTCcZoaaytD_pn-1Qt;ai& z(vsg}P3(v{(#>EU>F3l(p(0ux(9Djh6=kF-F~W&7gxg|yO}QZuhhkC?lgM##oa2QnkP`;`+z#_USG1^mmu{dmdsb}YZoh8WLZ z2`@I2sZ||M$Yr^3X7n{X8?q&0JXD0&{dl!y&}`6hYsr>8rHr=_Lg(eX;rjGdC>sRwzPdU`TX;9ztliDS`!ZzJXutKC zsYuA)Juh+^<2#VPi~omMWT(7V)-R=saEcYZ^ekT%lUHp|?|dfCclyg%Zr>d9E2`Z2 zwOR3H;yu2zcdR-Pr|Dt)wvQiJ^{FQ!nSLm%T;!?zK3}d>6;r;R)-mVF(>(GNflJgu ze#X*Hmv&B-^V!U-jV|27tg8B3V&sNDH2pu#Ul;@D^7L2B=B;-U?vlROPDiR`TmTM{42xKJA31_3h;TbGd1u#7g6CFA{Uz5o35ddVX|&Qp|YZJYSF#%-dW?K#ogeIz10 z{=)E&xB;xT^m){?LkcOW1;+Z_n?fx2m82-jd}z`@m?}GAE2!an;s2E?8~^=Qwj|{IDeD|-K~EQ(6lwVC%g0x*{G?AY zBZ1+Di!|oj)@JsItb6_(_G!e|(ydT9orG;hN?6TK*=ecGYLljva#8Ia85*0r(S9E{gFe`)QCM+Y%`sT#hW z_G@QrI^BWz6fQzEU30f(#H=+nI4+cmDQ5rV;6Fl=hcmT{Lyh0sV01>7yflXt)d-^S z1e$tKf}%7>FIERmcW$W51o=nOqs@o&sIxD{JuDhCW?J5$b2TB<0AA+6>7xboSCg$9 zew{V)LUB~pz=g%>S!obP&>!Rvhd*F=MOXKgT9+YXM0Cfb3Q+Bfr2|1hgR$e^_wFbO zMAB^+Yi(h*H3h5vz8#TQ!0B+7W~>XYLm$=%$pIt7reW~!zxxU zxcrD%;9u}io<1Of3jlHU*g5d!ua|#GUohgLHY@+G`)L=PiV#40r>ep zmzT}gIg!_@*6y3>sE4H|jiBqYz1@EA?p@^J;L+COTsEciD1s-LOYoxirU-qHd*Dm< zG3C|g-*^CC|KsjK_}_Of@Jx$)28j!VLcmt;DapxvEY(!dR{K-%W#`5-*E7uf`AXtB zA^0#Ko(?~{3lO}WH8+FbXaw$oDr{vVuS*A+5Aq;-KZB3UECL^nsuM2;H!uDL? zMz;C#jo}0m4^IvJ8{_LQc25;}9W}wY3G5)(#uXq;(|Jcl9B>W6f#uk6eUivpZ?;2HdEVMF67?zKM+!b?m5jLr}-RjA5<4rby>!0)4rpXpyTjyXk5?W zW&D)(#t~`%ER^3yK%_#b>Ut?-&8-MUp_SZPlI-;{pA!r)w+IYZQN|DkPR)Zr;u zGn7%iMH7mNp?5r$H+5x7BRDO(%xPTZz)0tsW5~b+dMF_K-FQ%8j3^&$bND3hyZ!HA zSGDg&(Y*D|)d8S67yy%QXbQOs^2mZ4n$QMOt^#C@6e*1K1d{O(dvk{OLp;8WkaaiV z`NpsP=B*l#3T)x!eEAm3*o_nYZ0tJ(^>)9M8cH@J=UTLxiAgDM9gbExHAmRzwL9Ld zO?}XtJZNd8t&@8ognCUd=vRcGB#b^qZHuuocd|h_?Fer-CQ2c-Jld9LCEl!?BwCa{dnssGysZThHl`8M23!OEri`|8N*3qB@#i@haY` zsZnsHDwbQFQU({aZAIf24k@w46d?{I>f{dMkgX^bng4b;%gj zK4Yd)wM>)yCLCcE6prn`KR|1GH|{I0i2;y})bqx8eqcn=d?|<7*ItIFSQ=fk=uGT5 z2jT*){;gGWqI#FPiDuu{)EHppl}7`qO)?_to${NesEl`LthY3kFWTJ4G_4nm83bic z0cx%M@6iW-xur{#UE+)JxRf4&1)Mck!9^(ek0Ac?cV0P6emvWI0j06VzV#&9%hd!q zi-&&8xB#P!#R0D}6#WjSE3(Higcimt75y1QGTgzj66@7Y91q4_C2{A?NX<>>Em2E%G8`TXZVkr3T z)PR$vJ?QI>aoW83gM4l<;s3`QX7fTfw@Sr9C)ttq`sW-jbD1A7E{GIchh>e1aij5B5jatB-u1k&+yB;ge_6Qy#1cRS~|M>@<JUIO8x`*6V3^XAiQ>q}}c9J)HG9L8K8 z@nHa_LD;DY-&2ry&6K#s`ch16^(FO5qxX8D!e!=315KJdOT9B^>;0zMVYcWy?tiTA zVbP43QX#+vWc*_3XbbEyLvJc_G!p5MFLY{|RBUJ|;($uvk$R<4C;#%!VFoW1iQorY zA42fJ`vL%M^EN;vlsS}^k(m`esZ^IpgPe*aAqRqsTpokKJ!m!Q?`cbOo(cQYJQ3u+ z(7}Fh6sbs=&X73D=eNkxt&+MZbddZtqCT_I;64fq|H05Rc-Oo0E%9L}0dA1+;j!>$ z^LpzIN^LFkx=oIq^_N2>%TxBy%mJ@JIq%X4+6?o)hN?Z zlv!-H<-6{Fmk+{SM|VY6+~kxy#t|D;2}n(a)bcj6d@xbnI7FC{K^ zad{jQ{2qO8Cv(8&77{2tFH9lJg6i@5y9@0rsLmY5x-&V%!%GxbCu2dOFh$Pqdx;y@?Lf@HPJsYaaSyZ4}|j-k${FRfmY zTcc3VSwV@$`N0b7Fh7E^zU6Ppfc~@wi*2>=cFijW>9Bt`w$2;62+ndPcw`Pr7TO)J z!DpKsOUoGitAIXF507b)8e%aO;3rZjzkd1kD#Ky-C?vJJ%0B-f3(pAqpfprRK30C$ z)UK>DQd^hK$n72KO5;HBFKZ_Sdq`LoT0lmGn?>gp^{Bd;se|yL8FR4zQ`_-CxLRD# zj4D<-H!~!0zR9WD&>&`M1hg(S%-^?S_^g*mq-kqyH%B)f9r1w#^OFs~2}z0fTkPYP zCzp<3c>6^~zDsIbwgunum+9R@6NIiK7hQLBlGJoHMDbs=M57hCeCOF^+HG&77+i|G4~ zo1ph7R`y1fyQdwcr0#@n%s0)09A%*2zLl%@DJUPAch-~iJFe9B@ILXGh3GUNr6D;& z!~FKGih`;rWR^IdQP%CPsCq|sd&j4>_Xp^~;GNSnDOv={KRd?PuA|w{$&U8DBU9ec z4#ANP6TDjREAJL)*j9#>@b4mph`C>`=I7{8RD|yX_a`%ZY`78gyV-xuk*GTTGi(M- zi~I*Q{AOl5#f*Yn5wWF&osFhW@`<#i{8w#OQOD-WK^)12YADHc0j}i?AQBC*wS~c{ zHPxYFQTC6o*YlqXhgEUTW=H*st=$ zX~#-PELP$g0vOe0bEq&rrZQ8NGcZfz>7$i)mH&AE7LR1&zw#a3Amf{0r0QQ&CnrVi z)#LPUz$mF}F5fYb!Pi_poc`CN5lmZe_y92wmv+?_|3 zUn1R-EQ^>Z&hPz9-+pm@n2=61J)g?Dbx@2zkoqHlZ3dyPcG16eU?X0Dng2XRDOPbg zb6^fuM;J=qGaA#SSOG(E{###sb@`b>=MT|fA;E;sl{S%Nx-2&N%E^C(K;8chQiW^O zkrPnuJ!G9-5L&ZGB)0qO$_s$<(RXUtejwdU4dN!npKCLTM{~D~)Un#<^^oE4@u8a0 zEZQvzwL4@W#ZovAZ|5*4aY9H!%T!No3kaf6MN~VQvnuH|mCjY^Srt}0okc2%We|VQ zL;QB)OEwK?NB4Fg`pAw9L{olGs*lEA+Iag^mz{$3?p6CodyKZPg6mSc{*p~jc@^q%IHVKE*xFfvmvR53ti0x%vPndqVJq}ybs%h{De`7G3Paa(V-4u+&SQ<^6}-X3Jn)?4H1Uz6>1 z9K9hjcM>~Fq*MjyX%v!OPzVaHDvHWp5}!q2s@YHYG^2Uu7;&SfZBY|`(iC^~8*?ql zoUSvm_K)uV_E(@?W|GXpETb3R&h@;T82mT0$M0sM@ma$Bap!+9z^v)IrfGDZMHk{t zU?23aKJW-s*kL}Ef0mrMB2Vbo7pmZ}LlAhV0zZlpf3}x+UdR+~_=opC--RLp8P#pg z7hCr$(r6l0Kl`Kcc%g0pTkgcgLWu}wtiVa{)5~ToWZxp-aNA<<;$;90KhW7o;^E+^ zX7X`&@i4sbWo@D3pSW{=J@RSd%FUIaAkD*NCVVYQ{IUXm%JsZdVJ-xNP|8Nwgnl7M zCV5sp!GFQz>b*pW6PEPemvMoL+Lk#}kazh<`J z+zjU~)*Msx2KyZ@8szbm(9ctcNfNL9 z$O$jX*n7(e$rOeyR60p4CJnDlEw}J5jJsxPm|y@T2@=Qbeo36vpPb5R3)DT(mh2%x zNkJ=+zQmQqAia>Df1gb#$aQFXELC!xd(Nk)FTeKUI@iICA7ITDQKk*$aNisp+Krth zd&edVuvl45_fE_R`uP(@=m_38cu6nU@F|5&zk}u@y^K5W>{Y19z7Q0hceR=XHW>O3 zA%sW;aERxZTIo%>Thaf5qW@xIR<;}TXTY)=+v4vgslsPN5HvDXJpUkL`G_V21dJR6 zHYD&IB%nCjPUlck-lUF{vnb~n&CT~vu;S0bih_~E)riZrvnzS{;-^0FzQcRJbmj#- zhzQ&NS!1}mxV&5wd%Mv*)Ku-Z`0-a*SU!X_TY-fr&`XVZoS>zeteRuqb>_k7EpOcM zF`Mdj*!((^G*+eR)a@N)mZ=jKQbHr-7)BRsBVbiZj8%#)1X{i7}q4;aJ{kZX>1TH-?CBn z_FAq!Ggjg$6Xgh%`?~=SW2Y{hfCUS!YyOA4Y;#5hDhSp#TCSIR2JVsSO9AdgIS6CHgWuE-& z>I4PjYQ@TBOvWF+MMUE(Z5pV^D_?&T@{ZulM2N?fRE-i>q z$_JWGU3KLOroJKY{K@regMX+%eM(?={K2!sZa}2M=|5DKwBsNTk3eAuu}5P3ozhKT z@v-V(xtdP3^SL|^j~sG~+SE1K#-4FOfc1K+7?{XY1ZX+XaVOplF8BD3>1-v6wx zuW#T*E&UATz%g?&)m8DOHGP=Ubra}oNP)!W*`ra5$*=yW*~NMP?Ks9eUg7IXCQC}5 zyob34FjOq3Q;q29gDH}AoVvvhoohkMiBox#e9E`%`IIt|b_@^cw9dVZ-(ZCy{b^CM z%(hqd{l>iW?0p$1=zTF0zge?a!7{`9B%x@?!fWl5^MVhn>A9!|Z*VSh0#L?Rd_}ypjSzMDn&fptUvNSDe$ANivDV~7M;Q=> zM2$r-N%S4DOisLU!DU?}rP7vEp63I%TpVcvW*0woywKtAQbdA2&_X=Jp828GkJa)w zM+e5rE=0zutHQHtOM?}tJRCRGyuCIv99PUySJmJ>vunI4F)_E%F#1Y!)hA*2N9O;q z02YRcsfrkaJINW|%UrV6Ew5T8!ct!ezb8*3s5jEEcgTBhRdVJmpVh} zkyBTNS3g10{wj2TZl`o5^i)Bs^)or-RS8D<1?_5Y$4?hlNW|I5&!^Pg-bNy)7l=;M zF4qR*u%ePE>*!hESZI9>DdXn-BI~;0*ymf|wOOg9q(x1Yj@_Q-@Hy|RfCsb4CwAH_ zC#bJ~>2I&$VjU1mD;#Ds16kv1yuxt9H zM-HA>KwG1qC5D+gbY%2t@w_in#o!Dl)PbN@M7O4p53Vvc|IoZ$UM@jY83q@WRXiu2 z!caCEK6mcze>w+FIX~Hjc({zBvq8cO+M+YpVIRv)h;A5&Pc0%mKA#@pIQ^BmqslF> zO4DW|Ev`cwz{+M4Gf2Xl)ovq*TU3&urhm&;fy63K!t7ekw8ov>K-^qKjJ*=)hONkp z;exj;bE0m2{bMifk{XTL`aEcr{KV0(1NG(`WJxAbXa0lm`#KyZ_O$qqqE~oU#!hR7 zJ^+{lbn&dieRQwgnL0At!6sy9(|JjCgl{(-$nq<9U)$h!s9;%=#+~G(QmlCrOS$_> zjI)*B&;SnR*AL+QAM&qR8NBU(`aX75Wt&@72p@a*E%GJ9_V!|$@BS+6P)|>3R5-_VZ_YD6wYe!@Pcr$(LoJ)dWEpKOUkgFi7g+0c7?b_k5x?XDSO*YVYs3an3n1&khqtM*G%!(@!%Vpp!>JqS1)H@y5T3x7LQ9u5nl~f zUxVT48eR9Xz0I93h45Gcc(%p;aPXNFYp!z|j>B z!SN0_^^d{I&8$Lo?`>74Mu1$jvQ5yD!zT1{?l`mO@xTH;x2@b*zXNYg47griG35C* zc0vCn>cWNUC@F{l-i%KkhdRw{ga=!Kv4Tt`nv zKkmb4HsK+N6xyQksAuIu}=voZp@HmRypDr6$j zLv4)qvalq&{vBEoOXY`_@*&v$#|Rk!kXDpM3J4GqV%o_kToXcpcTCO`o-VcQRX!shx)hb1TuzK{>(e}-J^x1tLX(b_jQblP9yoA|OSy~Ob zkWm-S70e59jco{%0XRs@OUi{LaXloUGL@nFEDUpCipXpAcr*TL%%c{2WVL8`kPj5T zfEJ`9gy@T;*G9{uxqb#%+L7mb$*g}hUJOIYb6MSy?Bft>6?P7}3fLMMOL>DRzfTu+ zotC8~>CvP^JiFy58Otg~s!_9tYAmJ0VKR#uzdf`1 zrZYu22j0jxJ?;^H3>sc`Ev>E@@l3rhp%S{*7YVvh2c@sgQ)lsSr$C*beP`JCss;Hs zAHq5|r(gq9br>mMqrJTI3^1&<*=uDJlmpC ztjApk-jH2-0K5{4^3QVa4aDQj6m>-R`cs;Maibe28AwPaJ8Rrw0naA-Gj59N;*jaw za))-vL?7|`zlunwP!NBztC4zF=$O!mp+Ozm1e*=5y%XCy@5Tm?9rdXJn46=kr5(&t zKL^;MgAV^HW$l8Moxi0vGeFnyjuP5vs@P2nq|4<0`fR&1xmidS@Ui3rylkf3b$D*?VjzH&{AGLh`jHP7f zgRrkMEcgofOx?ZM242?t)^o;-=+quw{JDy%+`-ghpzvDTcZ^NL((ze}*U)UjDd$?oF;2`1mIai7rHTK~b7y$skqZ3of}97=acmq{=%*BZBC+!y1;C15Zq&kVgizl6Bq2IFGbL1r0Hz z=@>RnFk&eD9(t_JZ;s8Bi(#JEIchgd7yYUX%OB%Q@X~t=#85YO@7H?cXv$Hk`qj^5 znUp5ev?XM6K!M~;L0s(`f1q9eQO{x#Qbf0%AuHeq>HKl3IQuNZnhhfwK1w5RBw)7zSt@uxp! z{w&wVjA^_q_gnRNADWK3u}z9or^nPU1-_3tn(JQwc^kL2h8$&Vme=qLfGU1RhNtlDo%L{>QOVuboZ)@J2Rguj}RE0T;erlL7?pMysLl* zMONo2iI}sKT@kk6B8hY41fH**@l=vm!W17pN>xL(z1fb99Nu5GibBo1ejV%zk~@)( z+|bp1+yZzop*&^#WQga@scPz&{fpHb*GPru^5|calca`NRA( zVd?29GhU5afM{sscw?EuHG)od>zk9u_5@BgpO);?9;~_GEr`($k{*-n*X3J|LbdmNiv!70sU`He zfv?R0mJSjZvAvh@QXj`i@z=}X*X5e}Tb}b!*KipCIgUa^xTO8VBorPjUOXV~(e&R4 zU;iSWB{T5DONup$QUcQZ1f+jHVdw9DK{Ekc>YX6`&Mp%jB!v(efDaR$%$SHmo18;8 zx*auG|DbAR2-fx<7Kx;xOkRNY6)8%a_APl(RhX%E&KES2U;v{n*qzWlXA8)hR=(4! zD+vT3BO>ZgEFD5cM2p`WMM(&qm$nZXHU^ZgcKxtyCaG3P+?R^f~(jk;B=$G9W6dgh^a2z{MU}audEN;hbnZ5c>i8;ihLJ zukJyAQzX_q>it_c1cRyATOaxUFVy6N``*wH#U@!TI(yj%-!t~dh9tkljdi0*9b#|e z+wrZ6MShf5;y&#+C^xx0>?QLmEa=E=f{uRPc%SJtvf7dz9gRywI0TlBFX$LwwC)Dn zmqHCZZp{!5^$9!~yE_HlN!bw?`igv5s}~CBPWcQmyNpm}?ii{!bWr}Kg9ORtJRQG4 zXfW_y>IhYWml+FK4Kl|tRFo8}Z*1sT>|+a{Vbx-7dV^of1FH*;SLs!}uVqu=4p99m zO0z2Oo{!!^%REMAY*JjkVWh$0ie1D|?p@FlFy-pXG%HGD%^zjUqz3rk`>`-f7O-ur z7wc6w!JUoy0TpJe-LGp{qo04!p(+h5S|NL5&R*acnoeMqF@=xGfxXBD`CLE%u%kHX zn3$eo;y67BlNH#09M8j*MWNH>b#lwrIcr{_Ku;`w93?yULxDj?{JyWOB-2I8pV{S* z%WE~;b>#0RVQzo^93gBF_r=ZA3XBesEKB2gBrEay_eR|B+R@2)D358vGG@@<~?;{A7t%Wul(n37c!tKIAv9GHKH*&$%Oyg_+ar7p|jYwKQ$op0O$NJ(!G zYvTrscsiDkM-QpeA~`McE8AwYkFbW~{)(F($kp}~YZKWYGt2v1>7jq-*Hju(b~nHM zR<@Q^@SnyU4sF%c^{GlW@0wTmH6Fcu~Yf2BT6iKYLzepIAl9+SCI|&sW?I*32pXmtYZ<)+z_&;!GTbYtTw9h=)7Z=yAHSV*MoLM@8cf?qR|_s7 zR5>gC{JEGqk0tu&1dmDZacAd0jA08P3NTaD=Kw3zV% zrP%HfJ4#xn4@E&f>Y%;f=Ok#Vl)>ANc4(hyKXwq&s)BtKY+ZdM}!Z6O)Z7z ze$K@F-g5c6`=xr8B2R8|z&d~he-jGvFbBwTZ^s=6cC(+{8A7}6%2LQ7IV$ta3}y7& zaj3GZ$w|jCPUh>#E5>dg=0D`(p39O=DqRIo$jq1-h@5?S7sT>^SbzvUahQfS#GTyw z40IQ=9f+XVCXO^Zdvg!;g(HsNok+XxtE~0Hc+w3*yBDPa&=Gtzd`IqDkQf)6(nlwH zF{*2?CcR3^uBHy{a?@r0t_MFY=3+BoAG$&<*-~W*rT3)|5G;Os_bbaPhH@MTY3~mM`sY$ zh)lx&<$#}(m|HC!>zi>N40ki1;LUp3K6sc|o=|l4rkTCH&=>*L-0-BK`4-$rO_>xt zn+b+WmDufw3(FLF;zN1d@zzuY9qm#iQ)J3q1v#5}{1TBnJWlWL$pB^C@+AzQWqE}z zsWF0?e|5Ye58Sg+h&o}r{D^Z_I}4{y4-fLZm_|M}zC3V6MqsT<>jm{xFs4SDQp~eG zuWEMXN)f6%@|s@nEPhk_*sGP2Bt3ml)AmG`mrSVUFBC@PnP-}PC*y))^NS3u-hfwNUMz)Z=H{9y z<>nQ47P9*g9TvIOmrH*nf}FXrsI{+B%OYqX$gz`9{~rF~!>zRB&?X2+8!#xkZptzD z5w#}iU-~cXe!G5wgxqYKDBp5kW`VI81W(NuoBV4WuuYivyXs#SObHE=4JDYJGZ1#0 z^ESg(x})JQRfy{Fx=jDf8=?XAD)YZ%hA>TItyJvj0H?GapP{}*yaEUag$kQA;m;h( z-6xdq(kTVE*!zDl`bx!INnMB2j%K82Ra*hvfqmY{oh-{c_l)=ok$uT@ zJB&$;OJ;p^wqP&>=^uj5KbXuTHRh^|<}-0#D$6a!!i?Xm`&~MkQ3F#FK;H4b)FkX& z*DaiL*9?6Kk3>3BTM(nP zA5)Lm?*!lXa8tI4SbUw%9}e@in{HNhTwW`WZUF`Ii03=s6V6nlZ~kd7E>1y%)KAln z_j6FRsyWBC%*=^89e?A0t7fS4@m;9M?t)>mVM~mfl&2JYXubjgTRNe=hx6gV-e(w% ztBz>}uemH4#fmrG68anq*8op()wTyPS-&f}#?ZuO>2n?^>f5~KTI=%CPq=oO9oIk% z=0gze-{Z@*XX{VwcR#C|t3zW%ntuhjPdDJw82a0fM}lfp z-jEz04u#>-@vARH}DWTaG(_1Q!ULtaGWwRwZnE%X@DxB`HmvYpd$m6%^ zlVxMAo)jJC=VDrBh6jt3vV0d_B_7&Z9w8b)+fl@gl014~Sjky3P$ zLk@7NmVcwEW0G!r%9Yl8TbLyxLYWP+pK>X7<> zbUK%~olsI>9BbBNk*L7?*(E^dDs3XinMIv7FZjQ%E!fIWVtWBR8jaJj87SWeG z_L~KlokYO>@|J^RxfSDWBn&4^hRBwkG^Uaan|ZHc*O%_=cGM8^`GBE;>a~`l8YmJIjkst+HjscMq?0T4L?LC+8BBzV-H+1E{^0Hj9p1 zWdB>A65MAT#bOqc*Qmkd0EC@%SN>?xpB{EWU3D?t;U~wO2K=4o1@xOV?MR9*8=iiO zuB%h6<#*t>Yd&_A$(rhJ;4UgC~9H*pNPk|;{M)co6~)*1Gwi#dDkaai}-N0c2SXg zgz*S2_q>uuk%hrH+5Kk?+5>?{j+$d3{umljw#$QYBF4m3T2ZwDWGPze&&h5`5T7=* zP$Y!_31mnXMcy0bU%cVx@zk;qcO}Wn^MIk34r$?vKehl~2tO7kfE>RpDZt=O(Yq;E zAQ~7f?XLSl5AA?ZA(9ZXNw2EZdT#cfgO{p#h zCIz(8hxA>9YRj)<0Xrf}qz_Y3s00Bp!eEZDn*~hFB$XbM{#3$HW>{Q^!#-^#5QUaX zIs!(F-u*(aZR=0% z(^*G%1tM}{HD%ue9FLf`ERi%;^Grd`rPSa2lR?(k2qLOsJ7(iXU`P92%{`evmBnF8 z$iO{+kFD6>Ns*AXd?2o&eXU43HVjc~1n%*rd6NIR^?)yQ}UK3L| zPGo|spO=kMU&|WWe9=r-%b><8IflO%RuXJL_CU0hsI%v#HHsRt?dCi((qrhBbwjmw zn&tcv$4f%-zidQ-we32$DPw&PC`VU@-qe0>?+KDkM8J84Q^ymyb8h&bk+YdH@OMS! zC8&PV!d_>w4czRFT~}C5SpMYTZ;4J~+QcA-(DqHUqf=$M3sdB<*$pC?^1ICLj)4$$ z?|r~LHejp6ku}2*fNDR6T*s$f%u8UHToE0}wemYl`-MQx6_t^>`N&@Waatc*>)trA zqFjvOC6x?y&{yiIn`~@IsCTknkbd}q@p!Ooz|*p_q8AHI))%*NR@>!ydkMrLuqtH9 z^!L2&XTh*v`w-&#RZ^XkNmBaYT>=3Uz?3dr$bP!A^@sEpxRlu)fZ#WkQ2?8$#P?Ac zP?sF6f)u?11Jy3v@IDP>`ojMAjx;8Zl|I=wDE{ z@$`IM;Qej`K9G0hzY%z5UqmDJ%6DyjCvpGr_0aQvej76-=;U=aauBnj=a`o5sL2;P~qNt==9mH{jbJKlx-76&)+|`Ad zFq=pnOo1G=UvVdnxO_+wFzEU|)NBOS{~QE77(ER>*XTLiCmX(66!@lk|1oGYaihfe zrZY2M0`kaQ@Fc{_c)NbL69OVvjJ;XE3&O~o4}JdWK_lxEpOS%BRML|W7yD=xvSmm!b;dvi4PpYO{v%kbnhDBkbN3t<%i2^} z>P&-m19mnK*WIv@ioM^7_aV_t5kI`vo+l>s;wNYSClV3PX$&E)&Wol;9N4pGhBh^N z_Di>zX8#lis7P56Kl!|WD(;2-vJ>C*HqQ?+ig&xtehY zv#E}AY2T|pX;9?FMVy9I07d`9@;)=6vsu@b74hNu^RPcrHUz;Drv4`B3ZP=Ue!e!} zgA7nlo!O&UfDilt&tm6Uc&F0BMg)6z#iyjtsL%FlBIL9&p#_D+a$Bf3HFOd`1F}9a z!MeGorXs)f(LEPq{weKFR7q38nR$pf;M9pgbrBmDmvGD6B7E$-+9yKrZzx|MZe)jCH@EBydZoPzscmQEQ?^URx z%IFK%P?{W>jI&YI4)L)DGhS3lb)Viu+e( z$rO*&VD2+gQTsxXYP*vNyJ6b2|HA?v#m`9{_3sNvt$r(Aeq0d)4HmAxPwS2a{oH4c z$6<5W4AgLeVe*uDzI@bw2{}v1hU^c$j<@}@4g?m2!cW2^xlO{ zRFkmDn#Tw=S^8!B)^_JaB(;lj6gOPk&TA{;hu|O{3@#nBLdXI+BbE&_uvVnlN;-nM zEDsD|g}5SGtVw+RT69VI42(VDfL1`E?76D+I$~yA7g10$NmLiZtLLbQkRSx%^s2ar2#(LT7fD?fmK={fz>Fz~Fz79Z#+Of26E73?NwluU`uiL51bx zsv_8B+{B+Lv#Nqp_+CV;I7S!O-4}X|@NKN*3YtBo69J6uWj5q@r(&b8$h>r54>o2A zVmg(@zMFwU^p}%wJl>Pj2i@b}%tBY1t8}n)wJZOVXgG7XYPi>-940am#bFDryrhT^ z%GRJ#l>S_?INed8Tx?e^XST)9w+zu>mo$9BcOAzy%T#j(r6`#R1S} zaDRR*sri2F;o+fHt&I)-4wGmMU79e`Y=Jsipmh;DZm~B|GFqBtvb}s`6PzXM40>M5 z@foU4G4l8S9cby^rmKjPj4e3e#um}!us8&nd&i%!LNUzUIqB}=8w&*Zo+DP7R>t2IdRhGGwC#7%%q9SGcJD*PXAvdMdw5 zdpz;Q&bjxHCK?2(%zme!etlr(JF=zf=H?*b(x4}xhW1w;L)TA1?Hj8%r`ZPBZ#502 z&yFse-@(T!0&ELph276NWWO@V~lvo#F@h+`@zHfar?_E}9VE#lG@04-D6Ad>IbgmA#JyoJQ;4m5sgOlbb4JD&prqzo&E9_v*^mJ8yQ=?63Zx z`l&~G1WVk97gaa0I;6r5S6ym2?urA#LQYFviV16FJ(k`N3`shdd0dmy|MTtj_>sb9 z{W1a8j2v>JC-PE#`4N(Sm9F`BeOGM@Os)H8%EjWH=LZzsmd0@vmN(WMMqW+q$f4!+ z6c;6u=7eYJetBy0&P*kQDBcJMCW^@j%fdtVn3oDQ6k`Aw(nFt+nmP+#&YMxa)Bj zz5h`_JMrt2*J2GLglJVCSZ_q(v1tx)N7N9s^ukV{=LV06`=ngTc86=p8GGS8WPH}NAEw{i z`~rH7=M*0jq+t@dqwx^sya*xVAk{n5#tA}63Tbixp;%ZWCS!LaY`SmQP81zz+xeCZ zJJIb;wa@v<;!=zHrL7m)pjGYb_LlAR^?pLucfxC}0|Re2HcIlA7BvyAmG%sa3cs0d z={>)%O0E1lN+JKZbCwWM*Sj%3`ie2*IAfx3ryh=znX+T}2XFCLH7GQH5?)mFENzI^ z@Q=;F|)~GPC8h%x{toG@E7ivJ_50iKTSEN13ov@FDo@%x+ek!nOF&NoWUo66{J8+qSY2$Q|Q-{4ExoAQCD5 zX|XuZr%vq&4KwYU)tlr|Gm!L5xYydg<;M}b_0YF8KFjrwQiX2ODfBK&e!B#2K`vIZ z`fBl0lXnz??2JVKXjV#OqYqrtha**dgTdy-9W}0}<)l(K)ycE8;n&Pm1fL2TgC8HtJtpWe&1%xY1GjMEkc?r&U;SM317WMZFHO}UcF3@I(dctYfTOK zH)$?$Z(|i*$tehM_R}81enH{+NT{|BW!-_md5#k$C>G%y@3$T?+5J#_?o#_CPG>Fd@;~WhQCZuudhMt4r`W0|*al)2 zLJ4|ReU%N4gnZfc=W*_W4)s9A;0?)m-%hqnH$ZPdxxBWpy)FHqmn$5ZwpKW0P=|n5s~>96?)1PrGaEOmZdYyf~s}7Scv#Gv%8|B;hGV6ls>4> zCAcRD{1$*Cs!(w~Zp!aUBiM6_6S~k+ks2B(`KMM;5cD{MxO1dodB zP8!IE3@$m*R{(jk!6I8)8ay5M{O4oaSRIL?$Nk$0Q5zhH+a+AeNTw0LaD(z*LERFoZ(j-eyrr9b|1w(#YSM6{Ym^wji2AuHoPUJLV+DZXcU2dFJ zWR1IQJz9}8t&e#bT^IUy_~SsZ0T_ZuEw<#NhGm8fJq0fUk-3nuRq<6if`5P5oVj#r zXGQ4y0KWtUA`ol8SK-M!gx=3fkeZywO)x_Nd1pXv_Jdxo0jY5XgX!k@epkQ40lusv{^+@{e=p5Mtej=Pw*C8x=IPzP-}q>X zuXFEicmAb*xzc}2c`+(4`Tj@MTl@vj=lOOoH69(qD`FLhZT<{|)9Z|^*lihIc#@OZWoN*qh2;cVmZU6fR2$emc$@wYv z?YJJWv0+=m)%=Tecj)`Tkdx}D(|;>exE=AUXtehXgyU?P0C zx;xFmH4K_+L|`JoS)%%h-xc*wtA{hm4Rv;z#&UotIzeLvLqhsN5uHwe=_u7&W={4A zln8hS4ltSA0&6wq57v}CfT~n^RiUtaX1+Gg4)OCrbx9|y8!JIe#qG9fl)4}E|NGsP zQ)&LhY^B#t}?e3E{9!~z^ znXI~Z5L^h#yX;{SpjV?8wgU$^ta_vy8^U_=-}inhFc}yVQyu)l zD)9ctj}P%n#{6C79T^-wiVqeLC%xHG3rwSMpp&%|!=uYyYep&s1!jLs(u9oIwSvAi zHGYEGGX0%nvHnw#_>)voKNf@i`;SGZaNH!RmpOb??4_f;SZbi&!zE>iV-znwKTO*0 z%>(^)CbqYxmbY6GC2dW*Uh>%b!T1mIKfC=#T?;-xeBp{L4$BrLlWAKfS(;K)ajji@ z%*P}ssKG;^@PD@eT0BELPC;|uBxc9^qI-%OiTu`B zgzTj{87y}EU@MbpwRh4WyRE?OQp?(%vj=ixEN_K6M$l;kv1%5vbDr@l78}4AQ}(}2 zN9P9%Rh{{d{;c1-+4%1qci**iVsqn6lKyIJ3T+~Hq_`9_;gKh@1FvIXYILwNK$6l? zq=5BEF%$X%!@p2V zEwF|RNHUVzmoy&!X(fSFyArAgmO)6RacQ4(3klM}Q}T%qMg~BReBGZ`2oQ(TWE=fk z^T&H>2TUc#TLj&O>|nI76geb|X!VFPN7%K-s3pd+B=zr4@h%%7bk7sk|*%D#WJ*YT~3UznVb0)qIAVe)GpCO zMF7YkG%~)5m?RdNZjy1I{NU{S*0yiPfJlL0v!2jckKHXf{5pdRRrk>E!R_k5j2=3!UcuE+Pm&CeXus5q!27EuwR@FL7y9W zfGrZ}$vUiL6Lw#7d+1HvJG!LmIEc8zVg=1>^&g@#s##w5&?OCx@C!R(B-zLi1-7|s zGg-pmYiA0CSw5vE?NAJSB>7F?x#DiAoooz`rDdt!;{|5NsMFYttQXb#lb-{ro0FR( zlC+=>Pa^%Y*p(D{lj92IX_bTrcu1)Gu#?qtg+r{|EiZoyVI*%6zTbf=B~N$=B&4@N z=}?wK8KG4fr-SOOszMuC?Tjz1ZEtU^)<`09xXI}O4sL4ad1{ID7Ot$@v5Y2mCYu;; z; zl=<888hZ%cG3he|F<$R*;kwm1GfRe9lzgn^eExd>9Q2#xPcWYG$b1*9^c({vcua&M z)Ir@@z(kgegec_|saNF3wu?B@uLxjf_?!FtL1*y?FIC^r0gjLBuetef1gwuD+Vhra zW%{t3NFGUq{IFO48=HSK^5(tRm`|k^6meyrZ zkE^NF<68ipyWhoAAb8G0cq}L}J3+4&YjQ_=b8J|qv};1DC#`fptcXtKow`~Ld0My! zi8dqt6vPL6B+nf^G;p6BPJWcety*6YlGbdxUEdp_3^+Gi+iczrX^1LE0Tpn>6;Y}J zL$Lm84ow2>w2YXdAl8;*g6vamFeBbKs6JvGOe7d2@Lhu114R%MLMW$?>Bp-Gcu#F& z7>Q!|a3y%2113Y45zVJ3aDr;gFR^?%L9b~*SSCR&aPm#`f6Ll69?xnO^!d%}`}=7_ zG-ik``m2Ypi?DXS#G9l3(pOh$iu#gX2Z&pGH|zI%m%xN}y1AI=ZjBoQUFe$r(wJn%4E86+ilRd#0v?v{ z&FWY;q`u`MI?Pd!iN0wlt7(t_&wEv>IPaz5G~#u;>0F7A@;gRO>jaJ|{>zvB2~PE4Ty4#-7TJMjLcLFK z&1V!PA!Eu*vw}9=nkO$Px?m1vt8MgJ?LoK>Q!May7?f*tZGb;}cN}gL6dg8r2 zU1ui(mrv%reQsmHkqu7P9sfp*Yc_kYAgn7FZB4hat86}?T>ZLfzmxB^^Uv=f+brHc zgOct=AMH{^o?BNv@)4h1Q}0RFA|R)nGR9-(OKZ5>p>yqf4KX`tTjbe0cOceL@9STLe>X|E^PzN zdO$Eb&RYtD=%I_HkOXsVf8CyBZ!=Vq5(x| zXIUTf^tM@lia@f9S8BDRyrp{RslakIpyNf^0_?`vI#xmPjf=tkp?RV*?BP-A}1iJd-6LgBJx{JEm|H<|2cyT_TwKUq(n^qPv6HLsxab^)dx2+lH3Q{- zjdL0%7_5m{bskoYQSG0d>R_53cL+!#W>)1|%#gYFZ4o3vpfx*6K>Q{!(Aru`zl(%q z%49C>u+57up`06Nh@g?kSAPu-QYw!zOqrJ*wWTJT93h19Qm_rKaO7eV zr~)NmyA5q{+7zJGgHEVqA;DXTd}NUX&vg!o$H;oV62IfNtT4NO#xZbf4Z)AfKtkz5 z69WKQ%rFit=s+`ekiQD|?u^ceUybVVXVe8(diV5;?CAbx<4s2|s^7a&0OQiKXr zp%S;^@Q84@a=N93*YaEI0r&l7vA<==)(L5ZH zjQ*z#7_?AAYLZEtp9)G|??2>iN!!h^@eXUW4~x%ki2ZVjy+3X6kYm_t3yXJM0RDo=Hm2Tj(C-$E%RbsuJD4;ser*GzRl8EWs!i7ejOG* zBJK)=_k1rRerXA-ax<5RLY)p>>Q>q&j9=W9DEY>;b!-zqy6A=I--ou2mk}EKeuo_R z;U)9*hW#6iNO$~Ss*dsq(#M%Lwv%AT`t6=-uT^VD+9$aMD}oAZJwVgZWI|Ju{o8l% zwuvdNotCfBjAa;?d$XQ-7|c%uwswZH&r=) zd*72UYq#b@CFx$qslc;8yU)sgSpC-1Qx~9*2?mJOqh1Z^UgBYV;KE2CwX0- zJ2*1eS9;1PFbolue>BY5u&Xd7^!(2TqaTXTBxd|EYqASmhOMjcNyY>r@A;U71`jnrQ8k`2@M1aVwYV8Vby|(8 zrClIcqS_LRpl#GPLdwhbZ2Ec-@hGV;Mi*D{b_+0WOpCBTL!6Y7Cwe)sR3 zW!L@4FnOo|t2U3)k6f4sj7Uc=j*-pktD1&M;&YA;?$KYWG?65u(on=sN`Syj|`Rz zBjpG6yHQ3wV_Rg$m0F~NHaY3J>!o0Oco22Kq#A`bz_RHZ32k`vX610dZ3%O)5r*H@ zu&{YtpGx8V4*Z$J{*##)sJsm zL@_O-Ms6+YmE$0MnHe?_8tGo zzTDX+V7>8DsK2<>9?Gw-@9kSY8vnjXQ~LWzlOBV}@mpgZ_oBK>p?CxTOZsCD*c;u6 z=WoaQ-6BGv1U)}MIYH~EGu8M;V6}J{^i=V)b7aDYdn;a+#@pms(i}*Lkyq)NHoccy z1YQZV7~`PmEWeYRpa;$BEz`WGoI#NkZv+Km@u{NF@d;We8h_tU&=HfXwL^|l7{b5) zubRqnWWdaT03F7%9AJPv6giG@XU0Su!D4K9@lqf97>b%AB8VbwC>=BgG)4i#5BJ*R zTNogqEJp$|NJw3#NP@=fmYR?lq92+P47W|y&!>IA7In~H%VYpXhL}cSkfGb-Knz$m z=Jx-=#}l*!6=vC0QQX}9rg5r<=6<-t)-kTFp-TJq|GNcb_CMO#AG(dNcKw8IX8bP8HZkM?AtF3{4(FjJ)1xjs7ya(ZRj-}z zIeIKxYXjs(UZ>Sj5W%8{@Q;I@UY8vmZ)DDIaJ&vmY4fXWhU0^mtuHU zGGRL2AlZCfWUA%g`>0Rcju-EpSfcGx{bjfM?NR=2G)UH3ZHW=nn}jn?>X(C8CT-%# zFkE*4`~Iu~?qR!EE=r)rfH8guH(sfzdSoXz<5Zb4+J;*H3^JBo()C)`Iz!q&Y?x{h zW11w0DI#@eb*lAT@_8`N_?y+|s>E#QQak7F)vJdO)2)~M+_h{brAS*}mC8xlv}Gb; z-+8>XH1ySbsZ(;OH?-?n9qt;Ee(=Z1s5>`b9V?IJu@D7H#C5c5X}W$Fn3t9%xl$>V zr`$y!)#OCkC&_c=O&Y@hB?6#(6y;cnh?i%GuNdgMl>XU}bXv($*oThPkCT_$V{CGr z9()}JxB7-<Y6u=fW?rCE6;`w=w1PIv?$d#TjZFTp7^i3MH^OixlKtJ7w0jMX>h~Df5A8EN(WBfc<#iJGG);Xs>M-nm|Byzp z=_pF)Z)!71SnuOiv|y7+Ww4U|+Lc6$|6habyB||5(V__f2n=a};%=lVj1v zG^RBo#D#kfE63FDfef9sk&ypN!-|6-pYVy ze<*Xegq~|iInkAh+ozgo(*^F=Z(*LIkgMJr%*FS7wOu1Ll1-WLju+W}BH(Z*d%2|X zh#o!!Ht;6$xpu6{YooX0=_L36$go<1$pT2euo^gg(>5wG<6aRiTsWY+E6^gL?J`{> z;GQ$$?@+7p&Z4%WwV=K47?-Xo*=`^m|J3Lv)Lk$=- zMF&i=?1^u#8q8GJVum9aeRF)$iyH$}M1^_bN&^66H;szqQ)s8hPa0*XEeGKF9!3SP z()iR`D6!g&LuTnG@BY%71-ywPr()j_BYeDj+B`sjEBri!=0~b<+NMBQ;G1tb=lZXn zeZ;*9;Cn0Xx^>Y`Ib!pNy#g`X@K=QM>*nwsli`6~&ueMo-(N35bzffoW%W4O@*xd) zhWN^^s3^Ht80RN;=2ypl6r?jJdE6s9r*!qi($#4uEtV5p#%a~907;8@GhB7Sq1SGa zvGVJQfW?*NpY0pFYQ4v_y&RACjkC}4O?Wd6kC$S;n?_Dbg&EN%fVu)>e!V|)5y%8&`_=Nl#AEz}zC3tz z0Gt(aV*&;LPn9Bx?*xNj6OGsy^v8iW$1#jLZe5t?En<~oiJAlB0hm(!Wy!KmA~HX@ zkWeKygplE2R%y$Xu4FNs@e!n4oD5ELBXrF}xJ}B_MY+|Pp=)Z5g)7xb@T4V`tn3a>0jM46MiRi2tYZKiIZ$)f62OmV z7n8~6IP~DNro}1-vk6SKo=xSf>@rmC^6bsmjctj>M;I0jCznXpnLY1-1C0s~81U!@ zo(qK;tl(FT+R|+53i$sBz0Fnx)^ z?NQjZF)_J~v${PyDw5f{NXsDhXSfKOkko4+Vu$?{J8?j9ZBH}Jg7l5>$JpA#a@4J zWCy)I_`N#FXWP;ik#R+?T&RgkK&a!x;y!iuVE^3}AJA5&m?Vuo&~X`Zv$!vvG;A#- z*zCzG61<%r;gRxSyXgB{*gQwcJ0>6V78};;^oKtVgmv$}C(iJ>y4GkeJ>zWWesVe3 zFOgVyQP3nV&n%}JQJcus`LC2w$wbU}D==j|xc%|0a;Si*S7VZyw}5E!Gh%%iNUeup ztXWB>0Yhn4V|#AN7P^?L11kzrf))Junu_1N6m`W$IepZ2M8fcSOEwS7cvxPVI9|C6 z%==wa8^jbkCURYHmUN7!t*trzOw<|OV(`K?*0a=*c=*853-PMT1{KMl6YG2rurt<0 zXHMom%@H!o1GNedNRw?w#VXuJ#f9bRgehp_xDRoi5IUHhb3Gjb))!=FQmGfqz^nE1baO{tpD^~w>l09t zcp6^c1yzN)X*y&O*n=kxLd(eaISdBO;|gqaw!Z}^YjnWO7tSP#0Mxbl=xv@dRa1R~ zGmofrOemEhw2qK)=6cy-3m(+D;2S$)k$$4R&;F=+!G`h!ab3}f24s;jz5ZG zX`y^pQoFLg-?ei;!MPKQ(ULS0Y$m514}&vdhRzANlL3F~q=^{0ToQ+Z(){sd+dNQu z$ufuLYFT&<{hi@p=n`Rx8t^<|jIxqm8wob{txrQP_@)uyQT?y|FrIHlU<>N&A(weC z^g+35EQaBh^uMR)xi5xPl$rjEo*QDvTz@g?HR`K)Px_W{?la;;#{1C*?InbHJ9Z>o zXc}oRd+NrJ%yWov|4-u+$4l1hB1xh6x;_bfFas%IQ{%tR3(Fd5=dgraj?3(oU^&i{ zD%9AuGK$dRha7pG^{F|fM#%ENBUF0&u`gJrOdu>lTIwlTKWX<7B~CGSC-S2AM(iPZ zpo>0DqLx$t@0qu9Cd0_jmzH32uvP9)OIz1G}` zM)Hn%(01Q?-zr8M^$KW~08*ZIY`iFEYs~Oz+z;%y5mUVoOEx1QdT`nwYgU@yy$voi z_q-LtS(&G^GCr+9k?|zfiwP9RH1;!K>X&S}Z&vQNxHqNCeaI3SblX)O|I@LI zewDKLDD3jm{uHMA>Rc@%W2BB4f~a5Vp2Yc=buS7i&6;1^-scbuMHinRn&q+O2p9&9rg*l}v-0xl)3a{14vZ5AW zj}I&JQrgA)f?psx<>s z?ADHAotR+oLm8KiYUGAX-+%w)ELwfM>|b;UeR7BKVCAqY8|@8CYw~jvsTI$)_37E+ z2E}eaw!x{yR~jq5w4)B%cK?`5JQjJ?yr=*-x3`li(D(120sIv%uK$zv-%&3=8p4GJ zUnEdfYt=l{b^PtP-Uc=FT6+Q=X(>q%bg}*<)YaYCPW{965Wy9sCL_D5A%)(sT+xIw z%|2GLOIgsC-F`RIJ-9qu!&MwoacW(d`dPt~bo>2Fz6WfT&t$}YeeGtDA(gUh^%;sb zi`X6bR~}f&D%mPO7hiRkuUk;7?dDPR>2|Rj>0q?VTvmVGMw($mIsIp^a6&w%@*X2@ zbb<@rG~M5k9!2wENkR5p`@NR4r`&x5s9^SdTWhOClXYvTPoJaDD}TZqlNEE$sQ@B4 z4G}Mfl&}ufF;<|Aepzrpjo%7vcR-$>7YlW1o|{MkC^UTEU?uc#o|JZ5_#~=}OM0B? zJ(p%HJVQU5PS|T%?rWz@0TsT(t4=#E%I{qUm*68k1+5@(upOda^T#zO6;vh(dJh@wnK zfQd>ht)r=~!QGI7F~iLHSCf0G*Ed4t>|#~d*_(lnm1n1ei&hEUCUJ~D$Am1q1$cf`qGoJD7)Dvv=}xn;MhpUHVVGO zaxS8gK-n<}w*Pkvz|mwh;^z{gHQ@b$^I?iEn>R?_7lfm7o!*hoP$IfKARW=Ht4@Nq zYbcU8La|n&raXC`SbT_lkq{C4%|)Woivj!PrGIm(v$(FD`k=^~b8eQAs1|)x(W-w4 z-<1JTC{Oo~iTLg+YbgLwJhXXQFyBZ3T@cGcB9`_`Y>kvVmMo3VJR{8#rp>g6u8re^ z3)qimmdrxW$%^hinXJntI0s&Ef0=htheG5jEu&{AYSdUBP$V#`&R{d7UMgsR)LoU8 z2)NLi;~$Mg%Blfu<^0tng>73Op*>o<|5R6DF!pYMh148hOkE+Ir#)Qx{H_*2HBhM@ zuxzwEK#v0W0m*K40iqZFCF;u5X*6;(1oK%&wlk2;%eY#Q+Pps|je&)_I4wPv9|n>Y ziy}DW_pXQ$H-D@WLA1^Sjmd%#%KwfKC^W6;m6eg~oQh-O#g1)@ra_sRP0!?e99wpI zX~mkTa$lLWn$rAtk@PnzJed`e`DTk)c`9LkD;GcSmq2WSa@Ptqc_Q5&^qHj;lC5@E zl#TT6;4OTQ=lV}jBwx_@j>Yp_{XJ!N;K#3in;^xbHr_j%k8^glAHRThrHTF;VT_aV~KOE$+9ry?Rz3(VS%R8LQWUfY4-xQY!(ppvc z)1f$Ct==y#4zs7xU?}Hvc#W8L~&iNU7xA=d&O-K9s@Z3c1K%>LIc$sFS3ChtL%Q$54s^LK6JZ zER{tobX)a(SN+kzL*`q!dzW*fY5F=aSTkiNH?oTm4SiBs z6Wv?vrB=`OTdTukl18GVdvGr^TWy^E9$nZ(j2^#R;ZmKz$Cr~n7*q%Sw>A^H=_W$x zhVek6#&}a~aTu)gU09D_tJ1+Z2(eI`L6C^@_FG)aZZXfw9JkXBQ3gZ~cd<2gs}4sQ zBP61};WA=~$t5KrAH^*#_d7@((N!_hXC;BYzRp3uk87HnU;iLvde?m@l6?GZ*V(`1 zX_Po=nL76cWpng>zDtiL9RcC6R@SZKnEs*vrV^8w<#5Y*#k(^*R30LksEl^Bl%@5d62A9kT;`3WM6y8&GD!A zf?=svuT$Eie`;Y#E;`8}n`}HdJuDnQ2HXaQkCSJWysJ(0iHjr13^Bf6nm8Db%Z|hV zy^>4Q?M7p0pd?*K_Z)4#u;6Llzsj^X)l~|8qmA#^SAt0|sziC8+2s`n+ZoicCwb`8 zt6O^Awnm<=v^kSW%#B$+$$4%I0&9U$rph}rLJKLYOb_PPmc7@!g!T5NJ_IXu z7yrIg=nJ-+PGLnRz|whUxgih)s+nuPv++aQ!QaSS533!va^^|hP8TZ{O5=ihijqcr zoX>DZMZ1P3ddM*)ZH}et%AzhwQcjyh`S8Cy3)+J>4CFQLCrO>8zn|4D>A%XIrbzY5 z^(J_Wl~9F4h+o~K*3@%$_ampyY;7O4g=K`><*ls1v7#NU^lu$_$ceTT?{&%RF7$r? ztn}Bf=YVo@+Q-g+B^Wj4>MMm!qaH2CLHE))C0O7Nn$`Puivu%?5J%rPMD^=sF4 z=WB3k+OpBzg2P2|6<=6yZ{g2-yG;68K!xl9e{lKBYSrL%XmXs2CKdxJ_(Vn9lbb9c zC4K`)>FOPH*|z_l3I{A}EF% zQ|I42#WYI@CF#y4)JW=gM1hutS$S)x#%cWXSjc0!qq&ONG{-v#hLS&;Y7wtG(9P4^ zsh(>-lqGZd5};{9oS&^LRz%DXpq&U7i-9Y`(EBb6kS4v|JZ-k+Y$BRYX#dW6d;%0!d7!qR$VNIy!+S4~b9ZP@`Mpq7H&NU#CR zdPK?-NQK>s-5G#zAOQ+Atsm*G^39okmdieW*HtAcKn>efY#pF|)>9LeNp`Fz{%=O!ehyM%Isw z4WraJzCT$9qWofiWE)wiW2$|%`ZkO&%+*O)Qqf?dP>OME5Q5lmgY}x@OYHWmE8)jG zWwD6M@sp-_#O2LDQqBLu3Kd1roys%7%l7XDCkKU+8Io6eKTW9&)3q7ymJ7aUH>2Hz zXQ0d1V+(al!LK9*bBJEZ0EHC?U>NKe6;9vpR>p0j&N~b#7P;G6FH1AvOt8092QJCd zP<%>M%3Kk#KqSpgx=q{NTJ27prfm2FxK%Sx`9OxNyAZw37E-N5bFMM@ZU9;mVFnJ- zDe?Z5z(}OcB~KEZD#giuXnY6NYC0ihAeAHGOL)ITPBw+PGPdFNVF|;DDC6jO(=`NjOw24|lk;wZj$5jA>4Dr_)L_l7TX{Z)^IhGt z$ojP)%3OXJ1FN7!nT~;DWJV#kFW3T|0N8%);a;yc(C{Dgpe*nn{9ZH$eP-nH)daT{ zNn7&3^;cS*6>#fNSxfbCFrScT#`ivr-FxTa*3dA9eHRVH>@Zh9S$5}-M_g7?7sW)> zc9gHV*;pbmfdL2OFLF@Qz!GWf*sg0tV}t~<*=lglbATaW8UN?WPx4Zh>eb{{* za9cxrbRriCC=5&e4Hw!%$L*|GbNhm_q+1u(tS$eQ?KQMinYu%rK?pt{s(Dd1hm+I~ zVe)J`m3CAp)Q3lJ0`FfPe{nO%`_1nSzkM?2FY@NQeHEQk^0U){o}SCmHJM5gZ2^*a z@iyH7rEs5f0rmIvf;AADTWLCv%vC;jyaB-1 z!`0qDc;0&f6a}qCWcZMgxJmBE7}M=HN&mp$dEq+=X=Hr4umtGBRuE}O_%>WJAj{;ZWvS9;LCC(EV z@@?lz4n?F+0snPR6Tn1o5);0qt+sH|f;nW%hLGS>G>`$0wdo;@TOE1%^rGBa6$kveX5d2;|9zwmc#FGc%jhRL2?*b6)&fFR_L4O4|Q|BW?;SY}_XfCu8Lr zfgC8j6vC_71+5uT)(3)Dj5ZNy8WdBB?A!%YYiSUi~{>~tE-+I8#V)C z><|DYjPYFD*o59-o+VI3FPPxzRh2(b?luW%u7&9m*YinBf@CJo=6V{MFB?HRich%` zqkC-vu+_rk0}LPQWiGVTrC@>{L zowY3Ehk}Xa0&W<`NCYA(|5!fn04izJ*Z%H5l%W=0iMN7=ptSyE@x3cvPS;>*7Tg}` zSG$ftr4I?Hg;?E-b`2$65~omCoi#FST{r-u#KaI6RMGI0cqMODDmMj$SpG4Q1Nbh8 zg87%4f#-;5r~+R17aJHM1JSnc6BAI%3J;rbMjXXO1aQXmm0b+}SX2Y5lUAnml^Y#8 zABn5d8I}QkeFZ@Sw!-%5HRFmK#Qy2T6)L_4$sPk#=fF5eJVli+jetBaZ1jRh~aErf&*>(4dY^|yG+^cR7Ic9Gx_ z6pa@`nD|W%UL!{4R6|M)D>3*e3vK>2v?K|AU=$-P%rE``Lu=US+`Ju4GgrC=1cSe^ z?DOqJl1>L6iec}QkX6Qsy_GTC2spGV!0ov)lA#i4l3BaTMI!YaGLC4&RP}v?$V*IS zj9^tHPEB#7E@svZRBD^Xbdlfh~Cr3D4l1BtFeCYbe>|dzjjaf~bCHePtdENmg<6{Y~=&eG# zebCNe{2=iEzY6BTk)4zFI(eFIEQK!D?b~V0;0u%Cps z{nh5|)eFBfi;8dI=cS{=^SsNnauymSrpq-<`FRi!*kaz`Zscks?ZwvI{Qva!U@;YDk zHgW6A7XeOA0kV)h7nO#vIX&;9tKUyaJ=sDAecYZ$@jTOHH8e|t@ipKhH^M@N>8D(k z!^H|31$&%wm9t;;7-UK1RdZ#HCT0{meVR`2MA3yWF5jsO@fMtJ(RuBLmQCJ;HO8FN z>A(D!aaBn?L4+HscWABT@qWj&I0<6Mnz&;N_7mPs_4ttYpbMd#=)`^Sdu|EkUpOr67}HgXa;Q zOJRFBuv)BMm@=Wa=F9USrxhy=8k30>8zvf0qpz-2Kl6D#qEd2C;cxErogyq48{Dy9 z|C0Z{rlx8Zo;p-WvTS6jT(&b57NrP&xi87+z5`htlq7J0XZaGQhRz zM%h3z8QuJ(rlv>5MNKw&`+tS!-U`NP99;04t)*KeZ@T{2rZ01`8kFGCIg<_CG%xJ^ z``fVI%Jqv)0u&@rG)$YQ^D-sIte~;ci9%7I;4Gcq<30s7m{*nr2~;%SYHWg8`}T|5 zndLqVUw8UiHkeiyC^Qm4dYYMHtd{D)YgzDVVHC)!KLUcuX@d0@fR$$~FoH_{>Y#7i2X2Q8eRe)@6lmP(Zm(n zuXZ!1#sAqJ9SzV@;pe2ICV7+W$cjk-n2y9bR~yJ^{->_k<2{@JfBnS=k?Eb6v118Byt z)uWMM?gkdu+TFK)ZJ7_~pGAyeox&#C(|1hiI2rL*#Kqbgz(7BMmb!UWA(wm-LGv&%;k~ZhF@mlNdy+FNHzQDXmk2@(2@oRMr7qQ8vzFTKm(*asUp}*C?_gVySI`n0F#;+nT}!A3 z$I;TMFer$rBG*(NWU)>hs=3nl=j79#$Qs{CN^CxYe#`PV1a)GFw{=BgaEw&!C9KeT zelk6Vl#H$>keBDniHGXV>2bG0o#aZUFhnD`sDN1i7L(;ne8A=+kwAZh~=t&QaqhiT^Om!@Lx&Oy$GHg)&AR2;o4C+ znem3QiKK=sKo`{J*keX3yIR8S(uQJ@i5Myac@B5(O@nX&jI-~$-1EUB#jr80JyD7R z%KOzckj8qt<3Gsn@ma1BiU-!PV9KdbJ=rqzBbtHqzP~hd00c&iS%0W=Q(LGvK zkwMjA%>_%+O`XbQk}T&6zh9^wAg;Hmk0z}s;?$@OYz$Q+8+^wss^{QL)m-M}j~UsW zJrDsRG_v)OW4wWt%!i8>l1aHP7Ib4Rmgx)e8?%C&%|)B*gh)3gbqyfBSqOpg;<&w+ zu@tnxtU=p!#`8Qfh>pA5-54li-~w_3gNc&G=?9DOwZyD@;j8}`>j0T zu+v`|#H$l3;NLH3*eYanUtn64ld2M6ewUC#$HsZtm(3SCi#=`(78z(w3f6Z?Q0>G7o{9>u)uu*b z@~&30x<9&vLp5@2w#>nhdaPe^Li>|o#THc|$e+aBovaMJAmJoLM(^&?bfDq$d(oJ; zE)uLr2T<5~8DH5<&dmY0vLlCPy_K%>{HHT0Q%`kAn3H~+aS+_+&3<8mD93d1H@JlB z*%_0K_lMdz&6LU6atn#gx+e}1WJtV)E*S-8aE|985tn?89~vRQ?Cd`}8ZjpjRGuuN ztb7i~Sd_3 zyE~BFZ=kHPAqsxT$z`Z+17*u@qy6SB>hnY5$AoRkl}1&eebQ5eHTOT4JKJ}2Y5LTi z>Qq!*HBTl6(?u#1MqzC*YTd!wtNzDVJ1Y!Y z*BmysyO9`;(0~J=Q}y^}IR|zs?-JL!`_+K~4h`HwX}khyPK=M!=QvOQvBpsWCq3*yAtK(Ngo!$>xfO%d^S&2Lb$%AAVE%F)&YxO6e8H0@}I^PrRZB&#l zPSc0;7?7?__@yt=h~uhM`9yA_ak@O)uUj1HIJVsd%gc?;!P*)|PX5Cg0N}i~Mme=! z#V|y)?tLnfCUIv(1*LtF&PZg$nP`G&w*K-6hfev)5-k{klkbC5gJJk9GR|#8Seo!J z0$YjA%EU#R?BYP?K|eoyU0{AO0F1L+L#9mx273zX$*2HfEkC!$(r0VwX3NvQ9(u`w z&Ky(r=?{41TV$WmX)pt_GKqGPwN^p-n4(9q>-KoEKP9u$pF_x8e;f^VZbB)j@OLYd zq%v*=%V8}U3>0CSQ4Vq3B+?1)?>81o6G5fNZS^KkAkC^?oFvkGR_FQp(<^G(6YKV@@_s%K$=w(`cNjmOca-B87mXpJlb z-@-a%Qz2f~Oawl78sX~3ab$2$iRK{?sfVBV`+PD0mvlu>Z04HQbp-3J8!t?Q6qvQPEDO;X{7%+k+ z*Oq%1quK}pdA>`R1GubVt}HyLTRkKDc7D7FAQ2TIS|4aQWOkYY_mzf=aa7}1t?D8k zH54e^6xc+p(Z&g&I5qAp63-yuzW0#D1x27l%{980-@Z759p`_!vN@fH$(&%2^ z&~v_Nh=9H303}0vKn9X7`dhpVMr_zc{uU4mvkLllTM%y-2aLp`3xL|tGqdFDw=~ee z)PCsl^;F%BeYA!|JY178ahKYuy@+AyR~)OSNEs4=8>JJ<2zxwTiptcY5DT=EPTmh} zv4{m7$XN%AK8z}6FC(UTKGv`EHYxpxiJAysc(bcd9`Uz;FVEQ+im8oG zTBeJ-4f{BRH2+OVYh3m*y!LubgQ7_(93&G*{&}^L!#5EEA2h|5u7Qw6W>{fW(s(Z*=CCSod#YX@u*|ZA^Q$6IgPdEOWyydk_n6U> zapo~ZY?Ed{kj2MIhPj3cr;R)6)JfZJpLcJLQ46SgAt^8EH%Kh>8XZm+S(V`GR8wFF zp;cdvbUTgWXi3s!qFg*{@pVpe6Kc2d;ul6(>h8zax;Sn1PsG$RZAC6Sl=fx~&0Z#$ z*Uj?#a7n;i5SkWmBxegje+TOCK?S2?C_LySFN2zlBc%3;T5fYR1Cqb9cvtt#PDg#3 z0nepd`RACOTTL}IcS}14gsz%g(^-~My^yArot>R7E2i(P#eVC|#TkQ2q=Vc6z!>NS ziZr4O->?VdDtO?TC9S_D@gH>cN42P(+M=a=gcfqKsjaxGea>rQ!ss*C&ECgH23@Pi zDD*s8?CH{C2&OLKHGZo3O+U!oBm(vK`}*bAll66Rgi{4(eWgbh1Tf2ni`osByeh3_ zq#!J5{p`W)cG~4)m2=el1*mFwOnl?%f#D}{SnRuVrJ2D89)a+>z?g^;pE6z&G5g1- z>Tv%Tn67fEdJs3F zny*J%Q_`y&>-2!f{u1SJ0b1BaT#LsT9v!M9EX~L(c#^tJJTL)Lvoivr%(%r^46>cl zIsH>RBi9qZ>Ks$ooG?A`ZhR(lX6$9zz1>r7rx2vC*?caN$G`hzdAfza%g)M~9!Jua z_1DG&)c)t-nTD?Lw)TJ^y?WL`8eBKSEcpWz z4cB82CP%Ika`URF_!Tqd*C(v-70IiNud7LJUT*H}1_vixKmJb(7?e$B#MGu_Cf7-% zb6ze==^Vq?W~>pHXBVZXZUG{<6Wt<0b-#n~6Jy^Bghq%>Udv1YYY;FIj;C>&Qn z5FrkaT`l@10nnVGK^|ViYD^k4Oy30e$C=EVe&WlRRPN`fp%OQ%^`*9)WjpN`HYt#* z8s^IM%s8P0i~TvHMOlBR@GLgh5hWv#K*9kCa@vDX%48>86}Tu->&KM86Ollv4(p_j zBymz9#KdI+BO@lEf#HevquR*YL0-XfZh;IN+9A)BU7{}#gF{hgCh8dhTLRh_gM{2H zuT7dojj}B`Q7h9yWB}9OZd=2S@o}_VNHLu)>D}~+V@Pgi>NeeTejGA8;-DyM_XIns z^l=h=Waa)Eoh z0di(v8xQ4PSy3HEVOO+W#mhpzX%8+f0AYcgBq^FbD13Ohx?r+RL}0m3L*<`QPLA4Z zHEm>Umj^k)=rz0eRN zTLK=!p2m%57t1uqBh9W2RcQuz6B_KQ8Q2+fEb&QbBpuxAUnNgb)V#+p8{K)dWSd1O zq1!4T(v4R^>)LJf+1gYujP5bqIqlYqf;NQ5J30|F&DNJpYggRy`qAm*?f*6~PA3jV z!&UG9q*9nECK@O+6Jt zS0+cKD1hR940Qp@T_%#44yHCBW2zIC`ZmX$U=ZJs2n-zkdONKtM;`$j=?5`6L&*%9 zz>S<5lz?!eMLpUC7j045ylEMId@31B15z>uf@}?qOh)+@Y9Lx`2w8B&i?EYDTS0On z@tcm^)Tk%QwaeW7D9Z@R^X7T+UwAsgz0~}p3x_9`+I=FW8^NTw;uUeIlnFG+6C&zI z02lBfm3VAWoCpjB!!K`x=3gKs8D{j5P*&t$W3mlyV(Nzj)8SM{aSyB5rZdd)Y6y^$8{00n&mgx) z^%!V0m?&mhW!d~%nw)701;e}IXopk;L()3eODR5prbsyS>j6-0vVnCpp@hcrr+hQY-fpcIUEui+KmbacL zCduftlY95~8I%l$f8%*|No~uls&IRj`^Jo6Vb!R;Oi^Sgq-0co2oL?CiabqE&wxWh zKT%{)j?nospKbk-LTf`zRspgGC~8O>>BLKN?)xW7fAb%ERyyajoYTK>+>X&hI9@`T zS{m=F|B@2Bb47S~Zg!jK_w|eoi7ERWr@MR3D$eF*hql71Z)R9AQ_eCAZT(pawCRBZ zUJ&w=b@$y)BAXLiR~GEIM%>iXs!Nbhd@HV`A>>u7j?IYVwg9S$oh(J&f zGHbm5T)17O_4X!Xqfd3@(*o@MoI)25z9jhzyEp$vyei)_r#NBHnz@hweXYfNmvouj zj3_7rsi9gaXEUajUnISHNK|&`8NwPC(~<&q8zUANMuFJ)Gpa712bH&T*Ip(9=-)P0 z7pl}|RJ~7eg{&bO3qJ^+nOCoK>L9sR9;SAgdD#|Yii>_iBEy;OtmB#oP79_ zKS%c(#x(F=NS*(wGJngQd(g{f4t~5lGijzKBosJMwv#uLQ&V9N#+?b0^`=_TMp_X$&A4cBff|KH(5O7reVU}zX*YV; zyl&+glBgU^>iFa)!JZqoseP2*+|Sg7y0_O0Hi=4V+2ck9?G$#i4?G;Nd6(!o?;z)Tx_#=CZl*|ln;x3Pm* z@*`Y&>S^lQ;zKyC5g0}rvh6hpKX~y{i@8 zK#S|U7Hr(^l!>dxO7mRQm}?^~&1VfiRun`Hz@u$00rR9OXjWKek_u#?^`uff9P~p{ zGPXtR5U~WNBEhT9Qii#)Ib#SzU8&!d_fT0JqoT)4zcfaMkSU^gG%g zbG-LJ1Je^SdvscLl_$IM+|6BQ@RmdbAI33ywm#BDbs1F|J;rs0oiFkBnNide0@8ORd29e>*qtQ)9#5VjK{jj ze+0MqdixTbLW#6#oR>blpQ_vv!mQ|qpbf$vpR%}Yq;GIQG8$~DkrlgNPu8kGz6^dg zEYDKOpNF%ic56+;h#~5TDTJ(cPKy$K_mjnFAgM@Bq?2vd${EtS+`gALN$F5AM+l~y z0&yRX-N>ssb&Oh9=U|UkK6trsmcxxJbqYA85`g+XC&!gF4eIZ_*~K}e=0fK8_lqRj zn7OCKxlNX>cZanmTG*QPsekq4a@JEup<62b%uP8fxO4_X7qjG(|D8Qh42aJ?x7rPu znjp)vi#YU%m6GA>;<^T!T}ING%`eVjwW9bf5C zUIqQnqiE-NIfI?E{X+0#urogG^PYB1ihAB{$tD!DpQ)(_b-u`VSI7+D!$v8O_!d+9? zBjuUpNBejYBQ#zav0TLJDoFU|kTqkPzrn-Vh9FE4K0i?_p1;b-y~kH@&$|W=!O1D$vUPBcWs8iYXg)n}rqS<>b%780 z>NIxGP4J4t$D_2&7)K{!(s^q!Dk4|Zs?>-BE|$qD{@=r{j%bH599JpaCRbC{g|rLx z67G37uE#+#Ga`)RYVC{*<8whEdkm0dpF|;J@Jy19>j&p`B5Pm`P>TiH929%;3pH&m zMs&H<9q@lzKyfN+_qpv}=@cDu?+F%umltjF^Kx6o95ZM0)~qf0i|WYC*J~O;F0|{3 z7sz(;A=}^3Ho)!S5aj|s^I`vH`~d?W8G2B~8#iEJ!n;}O86Ob63M5yO4GHTvBcP%< zppE~Tj*xIKdSYL>E?Y%{EbHN@spV}`bqv2SRhQ|g{7FVB1IIIhrioW_7+@vE#(wPi zW*M;>{o(eh#WTfAD-5I1gQDcezd_PoG4~ zzq;Aw#$~4qgqV&cQF=P3JT~@F%ER!r^ysozK%2x)Gv=0VKe~U zPwAeA0y|}~ZFNO*VJf-uDL4`8#VS;}#ofg7#BDH8E*O%#0|?x&^$UeKV!QHoh+|nI zqEsM-ROUor$crd-jMsM=JDzTw$im-@+C+gAkn2)x(lvIhNjos%q+$Vv5bca(y)<~} z?NYzA6ghx>5ehO%%xF4>o9=>ofrCyfn;mmnGUy*e0LFa)L^}qopNLbs`}`gjE%uzb zHd!^T&(b8`;`X=lo6&ChZ~W&HRd~cU>?OG}E%opDP51lPl&^{tv{Bj|WO>bz29VW1`&v5LQqLQ+4HW`bZKl}f z1S{i|_++gp79y=3L-|jNj16d+J`u*?@Ze|5a5cXe5!=fyuJiD-OIm2lgPu*1!!8YVP5g0g z*XH9@bVt3+NtVx(;1xdapr58+FLtYM|4Vwo8a#fl_sEE%IxiZfnOec2R+SH4;1!wu zG}2x4JG!If^)IZ>(aT`a+>E1HYF_0_7p>0yYmh`5L?$+3i(3^qJitqggLgLGTb#JM zW{Zp^y?$yZkDejfKVc91Gvd;7VjTM;Hc5cRH%tchgj+J*Ql6N^B@_;q1qhMk2KiG( zViGiIVmwF2MiM1E2`ChgRx82+4j&ZH&UiQyw@D_B`;cs=FB`6jjK zOnmtE;GWfVHp7%^G{ONhlT>Z^#sA7@{TDbyWoU{kmQ|#+^kCBS&-VDmuBbW~rJ2R@ z$MAeQ+;bm&S@z27*dQO0v-ZXQ%iY=BSk;mvC%-0=C_qI|+<9=`s-9$VMxdm@?00gB z+V5#26<2>@(jj#Q2wqJC%!}A7>2u#P-!|(GVZhaN1;yH2sO>F{O7ml0js%YK1Pxyv z|1=p}5mgZq0SEfy`MU+P={HYics`o#4$xpG_^VK+^Bnn-!#FatD4;69S>gvb-gkA& zKm{lNyc2D&Ii(anp|0+XaxR<^Phy0=T15EH;ZVGh>gM=*Hm3s-n*mzgfewt&D}t~I zZfb9?a+L3O#$nzizb7JQSOu~-$BF=5vM*6kU-PAYUeb8T!LHckrx8-}CRJ2R?U|!h z`V2>8YkHiI$*?^dKe(trc{e*D$Wc^#gb*@JEZu{%Gw#lt1YUrsHcuoJUA)(N=6iT! zsQg#MPt?0kXtFbDY7*BVVZ7_VY21{Rj0B-pp3A4U?A{JBKf6ENl=b_4Lp!97ZhS3d zeLYM6rN#fJkmDDZchTe39dnIRva|G|-}YgYTZYJGwREa+GHt1H$dKc@AX1D#TS7xM zec2AaDmbEW2yU3BNGNBx9?ew<`1?Znc5^Q!z1xQ+U=_Dd=J)wKr3Z;>?^lP(fZlIT zVI*8uqFyR)g>?+8(6eG(b_~kKcc7#Fy!dDl&I32@dp zeTTIxVHph2vW5o&e#HG|PNzb>-nMNJO9A5-DO$Ma3C=l2Qt69Z7fm_%OL_}$>AsrTgkV4X#> zIdq4$AWVm$_)GXJDguF7(e~&1@vhX;|1}hcn^|zue3>y?qW$m8t zsxqe+f=Zy-eGSy$q+lMa-Qp_Q80+`ZCtg7rc^MKq?jE5}!g!6({%|WaH43E9OI*%` zOdD&c+Yxw9LgxwI$FQ8&i+y2Jvd*}E?rF}iH6wQOQpMf5D~`lR|9cSn+B{Xs+K3ix zJN-;EHlY^Cxip}groR`>{L~H9qCGrApGTBk^JnE%O7H=7$-@t3uMcO7&*VbBiM~UB30P85l>2a+NJh=Uo1p@162P`IHfyEGsB2dL1fCmYmtW3OeRRNe%b?{ArPB zM@w;wTVdw~MAF4JL*iI}epUg*Zoj$vE=w7D`?cp{=8XooIJVG=5JyD{2D(U5N&o4C zYc*V@wYT3yBpm$1!?3jm3$*DN*k#NI0wm=43s9Dz6NX+hM3Nm0HhlUIx82_bg=msV^B zn6TxqrAp1iK)|`)8fQ-Ww+>ds- zSCU^G$UfYzNcW6CF@MDSvq@x1@Vb_NGbei+;vT!hQI6CSDJ1@ccWk#W?XHUR?D@`x z3;>AFkH+S23iXeeB4f}MilQ23MhLj9h8f3X3#1lP-ci{=cSPVf7>E1Aeg8}hUyUDc zf{x-HwF3{Nuy0gd&>UVoKQ0_N%sdJhO(^RGCc+K{!11a2;GN{wvmRNVk30S)$v(bn zQUlMQgk0ja1{L zC^$Z_zxvB6@iq;%!(Q##k=o1hAIFGavcdlTFU32b*!Xe!xgOB$%-{U0kH?8$KZdgd zZe7FQTOJX5w}-fY z*t5vBfA=o+IFx7l=R&x5kFw{q_x^jz6cCtq<4*7)v8xOBwcp-h%iX)tP`>j4Do>?; z<7>rne~ZR;pF<_jf78YC?D=0It%9+uV>*j8DP*=Z_>Q4Q;1~p!{`G60Yq8@v;grSY$CJk-pk8Z+lNWFNZ29(QkzsT& z9-XQF!$AazYzj_%Wi2&dgrBynhrIV}k6@WrTrSb<+@jQ@D$D-=ysM;N{GS$(CmI#( zeoH-E$?IP$Uy6)WFWwg8R|4Sy@vy|!cOczBGXPH&mC`x|OzBJ@gUUl+P>hGOzSu-K zN<+hw{LJ(q*oK!+V2Bt58!1>eD8KAv23%{va$Vm6S*52`7c4xRC_>e6>%g{5V{C4s zeGxE1uF?+&-CrC9lQ~yGr-*cI5?`xhP}0y+4tcF;>%bIZJakkiB=Bp^uMUZ{3589K zJ!s(e+a9zK!8x1Lv!~1J->IoHdu>x^erQmG{Af20g-ARS(kdGph_-upNtP?Wy72VI z`pvzR?UhhcGmbytD{#u`Ydle?Rz<1@Is{7vj`}zc*YbZ~|L|;IhblzNKyP}76+7;! zsO%{;V-#KBobu(tVIxGBV5~|V3Zi1KzS+VD!T*Emjh#}E6OMFDI zHdS7#?)GS?r6u)qrQ0Fil;xU4m&w`kn7Gip5np}A=4M#}Uo5k2xru$hZI$!qm4SrG{DZ;PPIE)-C&uO3#f zoi7aye9J3oxTrUL_(fv#H}E;k{H&>t9WOCvf-ZT1j}S={l)>5i`i1`3p{{` zj<2kFL=aiqOL}YocCx_mpL}?1O1JTm2lT+%tl|}b0y7!wiA?=wBQ+nsK{H2P@m(=d z1lW8q%7N!NS!;j`TZY4~NSj>GQ8%sy+OAB6c;*6;i*cGEF6JK`U_|X37)yEeVHh>) ziuH(9dvYG0PxK`1Na@TqaQ@3xytl$F^oHg2yvdllg5xkQg650Kv}4knmXd{}OW&C- zy%#zPGI%AK{W)m$=8Z%XTH54numMhbR7U=M+>j><#Zq|-Vxaw$qU9Ns6haFxv`BL zX(&$sJ{1m0{`^1CRtCLYhrYGu?N5m(-LIQo&aiS5LwpPx`YeNR)Z!dF|Jid7HI4p7 znwT&Q>r~W7y5>HS@$@$UNvc!;aKz(8)HU7oQ-ouh#Cd=dch;KlCeTyHIx7T0!jJ~F zkU6PX#zuMlU}08nNFu8W))&W<(ZLn9al-Ry&B=eYG$wH3`BHkixKy%z0@V~XDYPpb zQ(OEbGs2if)S1`W;wS7oGES#+%$OWSNypSe(s?kf*?Q}xE*Wjg%$cJlr6i&%8m{W>2a;=+DDhI7OS!_1_szuDnULNn2pspv_|9+R>dx%!S`(7q|-$e9NSzYUkPy>4}#Z0kqboI>kX5*)C-`AEhV>0pu&HP*RcfCwE9@e#Dw6^&Q$ba=`fId-jEvHTEe_uB{yF4F4M4yf6AND!*<8O=GgqP+Ydsp(<(8#Oa`ceodK;<<~ z_w3XNBU%JgH{?umxMcV@G=ZKNz7XXtL$w`y8V~&ROQYmC4+oAgb_TeD;eW?Or>IXE ziUzN))s-$UqKZnIrVPS5QDdwjvR+{y#~Q2IoU4?dzMsFZOzfLba{EjaDiJAc*`mcU z6V+ZAHd#g~)-go!k6}L;L?M5y9?Q~cnxhmN`&>EnI7;bKWNJ@c&u^3M_52O{%YLc& zw=NnmcV=M*$&{(T1R=uzj-7uGtG;Qz8Pq!MJR_n^9?{s3W9`s|v-jNH_9ILJ>8Ez{Y=NQRfSCfRNcOreG__F(*63{p3>{5C8t=G#d(MHR%g~Pq>e-; z#g=_x-;?&ESju3Kd1z@W%jI_8n)gqkyIb@~qLTk{)WFvl7r63=bi*{IF!rV)zJ&)x zB1P1MwJ(PEA`a%6n#>Zu!Jzc^Vasw1C&)Sdhi2(K2{6G+?9BB)k+l_>_O*}k@m{?$W-Jv%^nu-YfOI1jvzy|$F>fpa0fuX8pG zdfR`4KP4E|29#tBi(Rc7TCbUh6fki_7RsifZxu5f&6Q{TQ zcZ+2_NgVvgvh8Hma%hzUMk>2XK$(qePp^p8nR6RE4MXII}{`cvorP-Iu1`LBwNmYfI{e=hbdwh+BxChy z5wAPT~lRmF7@J%kw}8sETtTsEaS#>D|q%?i7f=!`HBJM+~mWROg8x zRF+sT^ZnP8E8h$Ofkg?4p-vNhYJyNT7Bt@;OL@l8okE8+U%pSp^}3SJh+&Z50d42| z9$mP^j~4s1AdO77ZE$$H7&mRv2<4_6t{+b~q&_Zg^!BjE_gX#oQ}Dk-S>@i~nRS78 z-3Mr8#r33Gyopu&F2V9>v+}57PBtyJ59eGi_g`sUihnI$BLcv!?sM1Ib+~1Tb3vce zV^4X?KRKIczEwm$4PGJgQ3w5=f1CJ1_K4K`@9m8(9*?+u2~FU?37%c&|F$SOqMEGH zMfaD~@sS2Hm##%$FUqT5HavS6_7K^@@4&Pw1x@6iEAOmU?0OD2K zD-D}6Z!0C9g_J8@easC#C-wd*oL&Byk+r(_PUFHU@dbE6y62eB%wxx;I8rbRx%kHv z!Yo_yC+gY5b)Ca{2ixy){Htdz%*K~nK2Xreyg?Svpb=q~m zRlk?AU0%%}ceC%84?ksA$an&+XN<}q;y8+AZ5L&xPfdjG{1JYgF!ChE6eYg6nwam~ z8nG91fl%?V;JO5a9>lPu{`Z~mcZmC+~e zUzcN?JG2xg{B}F|cH@>Y+PV%MmMs@#2>{e{Q+2}qg3VSV3;>ivMfl5UWt%X)Q%h>XvnFC~#p=F0jjAMZ4d>gZ<%hh@*BjG? zeqU0BU0ltGIF=%!omD76zNX`mjTsrb%V`P80FfVDgR04)FUAq?EFINKj@7p zi4tgU7he=$@s~C1PVYPJ7&SYp8hat7fXqH)Jykl4k|0cacAl}ikLhAuhUH|sCG@aY zc-`kF*!$&L^Kix+j?|=J^U+CMV@2gf`x@nkuxF3&%)B}hdRs3yf@7bD1^x7`x_r;W z61b(`v0j~J1QCj#Uk7WV6^I}AC{_LW*>U$5VaJ94Z zi+$+L1_#kippu!FxDeg433K-Em;>A?e&gyRBk+Pj^|GO`AqutD! z*6kn#(i@T{wX~@hxzso_{}DzymtPrmu$Bus-u;tr6?9pQy;D+YcYCSmp=*Z7Z_~0J z7CzB^J~q+bd@&$?FUAsPuNe=(gBz<2Nx9P0y!a=55Z7-OWX9TS7i)3eHz!Vi-t5q) zEUjO57Sj8fwe#VGt@CuexLtQx>~#J_mH0~ur!Qz+#U#E-SW%%-YV#41CzT+`MbM5w==7H-1w4?X!4{c?8;pmK&l;B*z{5AO+yG69)$hY0{ZIht zsF6dxI0+|0B`8pgAAn8C-UP&|l=|Qjfq=NaxJ1AJ!WXpc02wqTdfwQ@7Z<%`c74Tc9mB72qD+$z zw}qpDe;?^Trmuw1?wjjraAonB(A@v!jQk|H_uPH4?u4m`*wJc3nt!VNz3LRGUk9Fs306o63X8dRK4e@)TEx*$X2*EiFCH$JAHS5hK* z;sdsKQ2?ES@=wXGwX4H;*p2%vf-$?**S-SKFq^0LG)C)hYqY6UKQN(>teop|s}#g& zi84M16g#!MhC^33C&-oqvm2Jpa)x$L{8KIW!;bGh&;7Q|IjE>&4PJj!hH!e*r$hA# zwd@=EvN!(NQ!*Ch{?xG#bj@J7HbB;?8Ay*nOjznWEDBE{Wmv*Nab(cSn&lz?Pgz#i zj(>I3b@}$}gp4v64DQ?}=a^^wUURM^;!yGjc@4(RPqR2OEnE3nS)X#faaa^7Md<2W zXDUzSWgYDEC_*~UwwKb0@&ZE(M|cQJRkiKFf#G(<)~8Pi)NKJ=4_3}O~BrKQX$)q|K(XI z{T#mXl=r46E~~?W*z}kpQz=Tw8SS z!}bC8M%q5PZ+PrfMP*dO3L7oyFJ%oCzjyMm++R|LMWZj|KU1nZ5HM5Pzfq*mNG`Ih zxlE|Dc+|H$TJdn(;BvQ}n``TXzZkkxc&6KYxfSyH=;NitQl|1R+DVv86CV+s-??HS z_ho8I*qD=r^|>jj{*Zs#oWfQ0=dYbH+2Gf9667plPjBfzrZ(^HKKM|liW@vIS5a#7 z=Nw1q1`f$S;avv)t(1O!yZG$(2f6fC%*LCdYc`hg!-|R+Zo!QZi)YeRvivQqOI!U{ zYYs==Vc!F2Mjw}8u^-FT^-!uz&@=OEa^ctfb^mRCE^5bW;R=6Y&)_LvaWq#zOahSk z2dn`BD}%#y)Y8NLw9m17*(qcyTnKT?JELidMq z?4v=Jv0*ot1cKiL41#V$3~uBmCe-h|gBCIiJ6*fadhV9&fcL*T!sw2)Sb7XynU0N# zHn?vnU$^x9jI zBJ^?HDIuvQg)wGE+bkDyjuJ8MnwR2U|v%ZIJFByHui^NxHYieqoP0ZFYHB zUSlx=Kl7b%yN6@$wdlJh-P`M-H`Il}OVmu7(&fLr+Pc0PS*6dTL9C-@Pv1DO1w#%* zNvM^vDA0$XuqycBq~z6D@d=g_gayNa_B30a8r89hQ(U7FA>U^I;G;C5!K<6@efMxf z!mxeSsc}u9|JHZOcdrN7@neEaXZ{~mZxz&L`*!gbD-Hn)6xRX;io0up;>C-*ySoK< zC@v{dB)Ge~ySuv=C$RJW_k1&ZpX2~$63BCK-S=9*wJy3~&h6)f_^(ldA9@ooSMgo% zGFG?q#Ck&qr(Ix9J;;}E%noi(_He{|k+@XsT^{Re{GivxNf89y zXiVg4_tx%*;p>ymYL_4-5PrAG_!us_EiZ7t;R|zuUTW7H+2tDHFzNt@Chw3vJ4^ar z1=97J=N0bQTSJwyx6QH;6|^B3y~_txu32PgRJOcE5-~@`{ZJ2ZxFLR<`b(~%?~j_^ zobh|)CU#SmaWQP;l~|u4C5k@~%c0}CP}_ao6A?)8X$N!sulHrk_-nIpQ`&;@3;Ueo zVctmV!F8O_p3J2GAsNZLyL(xt*Lf7^q|n~)AV$<=QmXy)^Ymm&=PjqdD3}~YK`g6V z_!)CEom3SUajio4?vyI$ZD3!cqUUL&@Oawn?=o%^bbIV5~8v3&#tyh>DI`yv;=x2gWi*f$#2V^@spDzkaU}SH?5zqe7wnEz&U%FSv zUxGt0mpo&2qxd6t__@oTUvV|w2V+Vv8Bqk7n|;r{zdRVDDzL0QTZKVtO{AQ+Rjox-5FdlYy2ALRzz~)-~fX zDZ+4^Qj;rY>P?`4M}o1YZ8||BJ^|oo1&d3>IIEVC7>b1kLw|>##UIg(>AacKc=-ivCQ za6x|9SS8Z-n(_4dw~Bn1l%jATTXb=50wL!blR$6c?Z~tvLPp(#M7*w<+n#D$M{jy zmUtPhOB=Xs4saF`uE?=GSma?>{pp`Dp*A%WW9GNOTnUc-uVCB4^g^q;yGBQu)JA%!L-SFE~zS>GFXYI0wLSQr90? z5r6A-T+ht}<$cN7x=m?CV|uoJrF*48*bi@?S7yGD0^$>FHjHhVg7 zl~}evNdLOY?GbNvu}rk+6y{~+4Z|A#W2I7hN-uj$U41}TqDqid?yn7{E>{+>rRY7h z@BlKQ;(ll$fHHcu{kK3CR=UzpJVRK_Nc7}F1$lm6wx5%zMF&*5IW?4$`wNa`CBILb ztn*~0=FeprJ6!FGRB2#%a18ardv{DNrpCM z!fJ!iQ?(PHxr}(j1)wtL0dqMh7S;lc0o#(ILLIPAAXYq{F z6QXL~_EIO>&%l|v_Miv-*2}hCtT3Ug$09+mZj9BAm)%WD_~$hO;j@PuDFGK@6FMZE zPr^*iJE88`Zr=e~P-f#Y>!EfX|H7fKdlbCF^Z-5o_}^^4CEb}Xx;}*P``zeIw7B%U z7Mtr|MfpPx9v;@c8`~c=9oAzS?bzLSurReoAij^Hqki=}UW1~~p7-sjOvv)Rc3XGc zl@wQSpy!Xs!{2Q$pO+Sq0)<}oov->j!Q6zO-W_WgNW|0@b@~jIzjZ!;FEe@RD(Z-3 zk+1*KeA1FBQhaY}58)8QvG+I_N;Y2rd-YfgxxGm?bbGz^r>bl)p*FBK7JeN$iP~)Y zklr)#e!VZmsXCG`U8piRz{2^V=la348Tw~$zHKNrK+WrGQq;7qN2m64aeX7L3;nhaD2xjEG;lvSLQl*5>^3Gw6_zDEG3)(t+G7}Pwf*2Ga16Onz1+5=tUT@}#Q(i}+eag!7DKXU|4RtFXiRg$&h{DZdn>=c^ftg?PE5v%qEZc(nFAS6U z7i={h_vx7~pgQb(JOtlfr)$x?jJMvA-Fej^^C>$3Wk|=PUzNW3|FnR~=b!9UKX%sZ zUMl!0T2~)igNc^dS*X^0a=~D)#bfieYP(47MsWEffg4U{a?pOu5T&$BREo&fKbZFq4?^_%*EvBr*Rxk8GM0(k#UD6!Cm)(2ZWL2In)|T3t zwp|ovjyULgYNpC)OI8v?XG2&HTMv@>OT=R1HN+Tc{q{0q3W-2ruaHfwr&Y zao|oLCiRf%Aw`ZVwk}}6kLkH3*{65dTSb-xySQAcC-WqW( zyMM#K=3_;P^=MKZ$b+aMqej{Sal5_A>ijO`-LF;z zJrT|&FXlM*f(>Wo3XT=p1#tC+wDi@*k#V%Z;IqEk#g{*}huL)xq;VUTt-Jx02Z!m| zvH}C90glPABIJnK`FyVGbB@dFBII%aXXowXD_vxll(8j2)mraF^&+ z7=RC#zzHA}++afK6G{sXb{K+!r~CxaKu7=!F9jUbS0(_6g@^|zkRv(Jnjj%+@WbE| zZ(z|N&GV`w)l)%nnhh*4&V)h*-{3fc95h*aJ@sh&Eu(Id&slj)00dh(;D%hb+2z+l zuf3)(8oTnpof(V}dbs@yBYr%T*T}S1hS;ZTFrPgLsbXpC?BKG69Y+f;{%m z+pDuX4+iSGR-{Ts|3uT~)@pbCfw)8<;4@p}WThs6!sAAhMiR;9VK&4{49Vof@dG5E zi#LDIGtNdKx|E*hH<53%&c_LO8J>~&KR>+b)Fs&Pdvjj`=xTrboN+Qk@#X(KH{xbK zfZn~p3Y_BLv`VD@olPx(NnKybS4N072CkVL*-}dRB5e9$c*?rdpsJ!=&A8Us!Y8rM z3YANRax`y?Ra^oNb~|ge`?uEXed`NdGEkCtt;%rSpej%x;+x^Z=|duQiS-KZUcr;Z zb+OvmEElkbkwKQvc7ZG3j7EDIG4m&EZq3fuiI4`DPs)q9?8Qb!^fc9~Xu8gdzk3U5 zXk~dq%rgqxb9`%!bQ^`5V18O<7-VcQQTvS{A5)uH`L zkxVR*5rZ2R`qdYCU5iglre@mC>PadP)+?%&qIpe04=jw7n&qH`>5KfWr1pivH6}R| z6g3obkuZ)*!>;}@h+Eypf-v-;sBx!@M7rCgi>$*Cj%2*X?rdGc04bLdm2P|EXtni^ zB_SSfZLi-S0Kyj;l<=>kPA1qiB@{?Xx*C>N+-h1FGHUY;1@bC5LH@>HSV@ROG(~=# zuNIv)$vBOOhe#zo_0dYaZs^9y+GzTWD^a;sR-HFwzeLjtysky1yzeDiw*W!UBh9ym z@zUsEI=kIqRZ|}D}%OaZQwqp1u-1cs|nB`6n41f~yEsh*?H)au7h>|jM zw40DTd6NG?iN6{;{yXe%S17+aFWx^qcNEe!tA= zKPwy-kvmTaTfrCa_T^*$PW&*~C+B-Hq)WQjD#Ko*EL>|4q1k>-X>PLW(vNphN5bDT z$$x>V?)MP<-Q4#IDk-g+cHdtM;a7(MP6}46D?pxy;dL|%@wwR;nk^QK2(zWYNgl}6 z&glJ;sg&IZi$jt|NVnu@Nmk}|T&zb`SZ{)87qW?(2IScd9?5)!=VlASBKUR`yv%ce z66C(85x5$>XR`F~qw}P--DCacWCfwU`KZb`hd(Qd3|(kqR=jA}x}mJkz+Xph@Xo@% z`ae~q;s86>i<1<)j{^{N=IhvNY+(pyQk8E@06oZ$I9+w;Y~D=<)kF) z)%H$}MCa@Mi%Ec-RjcWR%9(N_15m! z?qD3$TH}s6?{8hc!(>)?KD1Ffe6%(79oQscx~#XLJt3=%U%iXv=dMym()PL;`;3*0 zyY!Q^Y-;5$c)oGNkX-^xa3}ZWrcLm&XLR=m{KDE{c!K#^prXfoj#LNG3==%dbxYe! zq@_(tqI%bN*gktL|0oxLIx?HgolVsA%)YUbnN9P?NQEhr7wf;GEI=;|`FlwzzH1#a zBF6dvNo8DtHVF6lXmAK!%ln?odyW6Y{OWFy>!I=1i}+pGPUwnFRRnBWSh^th{^;!g zs6zH~WqUZuyIoJFi?y0X{=Xqziko&WwqD6JXv6yOjB-^Q2fEsIsl;UcVIdv?`4vrG zI|%VYXp&IKES>pwC!jWIeub(D{6 z7g}FwVYUA)%OPEQHiEl%#MMZvJA(3-X?AX|Q@_)TUhgYKR9sjW3RUZeFp2w3vyI@!O)fQE zc4ED&)768+cBmu9tmnKtt^#)vDaGv5H39KaT6CQ~<8`0-iYRp0uABIz2Wt?Qb;AxndWR!Sa5Sn!l41WMRQ%E;^dObLn~$xzgS@;FOdXt`|3`@_g(M!SGUKajOy z5~WVxg1Q79uFAS9dI(2HK`z*){&ww|$#SHRQ>MxL27KVDQ}jBd^o6B1Bbi#R09?%F z;Bco5L*aAsIfytyNQIpkLyK5obf#m4l_qywef1A|`(Jp5iRhfec0fi;!`L3Y25w$P z;r4UN-|bJKBUS~LOh)77fHN}#3pQG-#x#z(36SMP)&|tQ5lpmCBiv{{JaZi@<>PxY*5CYTlXaI89a`JFRF5u4)~?={GD(H85!Wu; zU^LnJ=)^cg&OKn3cp2Yu9<0yzW*PUkZ$b4k;i}^Q1dgk+U722m`X;cK80Aej15~lz zINM>uCdZMNen*~){$tU_IQs5{mS0297q7XJ^<{Adx0j?qjw_owZXv$Ro4cTgic^io z>;?kQ&*AIZznDABN9@kf!pe)ae^rzN$5>b^?R{@tKXvK6UGdV|mkbdo@17KOdfd+# z>mAoYjS-(4)Xl|Tz7!InlKl%lsCG`zd!28z;_m{)RvC=)zQAh zUA}AJ$9Ab1%dF2iHh?R2>qAKlTa;{SlECcEB1lnP=Mqj8$4{AS1{VuX-c*fwM>IW1 zP5dD-K9@T_?iYLC*3lk%zP!!+`*I*AykFoE(HgNSdG0AVOd>Q0wP604r|S8>DKd!*KIF-Ij!umdG}|7u-A^1NGO9HXMl#s% zk?h^1@YvT~bFo|w%5Sbv?|~D*-d&05#oqsl*E}xdtYvZKck7~>%Ctd`bq{GK_A{Lu zV{t@c zAtbM9ajkiB)p}aSdr&~u&Hqth)kG%CyRJty`J0?Ym|n+ipTtfuu*x>)oZVlD!4>k1 zF5GHsOC`fB|4jH*mNpSBnUngpbg}$b$Gt*>C8&Av!h0gUcCpPBq9zK*M z(vq7h`Yg#(jGp)?rQPfO%jBl_ba2BajSA{2lX*U`=O8ol`}8+!!uhB6jb|{Q{oQzH z+c^fGBBD*_`rYZG|3zf!v94OT9d=@!$uwI#OMW#FE(wPXnz|3#+N%k^a_oV@MQoaF zI#a(=5Fw?_TA#aC=t5^8hId+4Gm+XN&rIBHG7QQW8;VB_h#&oLwEUN?R|OJqkjA2I zf20sWx`>PZfEXD6Uo7HdGaT^=F+hpJ{rh>bI3ElSTiY#&;*XIlSyO3j6H3t5+;Aq+ zN#iH(B70?o)dbq19E}xHd6je&!ji>PbFDa9?M`7<^9g|lFqX&+hdrS;;f-`38Mi!- z2b^Uz&Q;$p(Z}DO8<@Ez^xih1fHjWKa_DEyy!XSnKflPl2vHIvW+f@}P{`Cl2?6wk zfey)WV`>GUfU63Ae-)UKh&`9|M1q`XVh$5l!xnUPW+`>s=RVkq|s|Kr55l*FqEFi%RUTiIrzL@+_^asU1SVij}A&qc+VhTf=xcsHd8!qzT;(q=jc{ z30gP&BycM*m=0363d2-Y5#YT=GiJV=POR1r^83h%sK*#Nm1=}VGbO$A+jI?EV6T|o zI)kQf5Z^PSaJVekROU0#f|)Jq$=i*{;D<7WyL2M(DhTgaZ-xVC>ks+w5zR-Duj6e~ zs+{Q4qKWaN-zV7^$Qz@+1nx*U7)z+hVB>YK(2xB{rfe=Nkk9Da-}Rj2mr4TO^%XG( zbuJp%N~#X!2XT@knrZ>l$O4o52occ_#IdwU#c=ZAXw)uzE*RDFw91s2G)RxmrGuV*z%s_pMm&Y-^PE9jHatJn zIMI{-QrmTguEJ(fyXvOyS5?43-G*!1C)K!gP;5gUUNNi*b)J(wSu68epwKLL$BXkN zgHG$og8pVh3e%_E*V#^g|K8A@zTMdG8^6E*)eNC39i8abLE_#p0kJKcW4;i>9ijCM zGXaV$w$AEKCswD$(wae~V);G7V52BeEc(`O9Fy~%9VEcgO=+RHguWyKzq?y}hy4sPvqejin^&ovC(E8I(b@%UYy?XR#A}7)&L8?9-Uu z^mydg|*% z?A_7taP3z2EsBw=(ya)e?l$tx^T1r9!qjcpIhjAZ-v~}iI6dKPtke}=a&AOq(V|tK zwA`cAF|FXtcad&vj5;Q@y>r5~`{j&S(gHcfb*#<&cFgpo4sS;Ui%g4L!gcqL$VRxc z+h`Q0xxKrvJ-rykUQ6nCQaew~tRTIOfI}@CKH=JhiGnt{PlF3P%l`YtmyLNL%)YVQ zZ_%AtV?Sa~*Kx@Zxfz_vW|(%`MOJOr3*={5jJVS-s=H*fOExd58o2~}; zbFSNivsw=dKFk)|Lj_{bE5BWeO!fUq2D>xIMsMm`br;6B-L>~1=T^7sw+mAJrI;Ln z?9G9o%CUvpKBU&LI02W=U}#@%7=Gmk!x4dTkI|_Ba{|!|taXpuawrfcF|IrJIO5>g z%yg*Zp=G`gdtKqPmpe+AOoL-cYTK&>y%*$jnUg58 zF-%r;T{wB78LYE{wl!>f!xGsf*r)(tTZ#VT~lsL8X-u-Tt(H;g+ zY@YH~NoF{9+pJo!8eO!^ucuLfO6$gn^djtVrvSc{p9-sKw`70S)>zJY$bCzo)^Ff9 z(np>U05QjVP2Z=Ck4p1?uHRi}JgVAf-zrKdmni&lLmh&o?h@;`K41-=W$o9KS;oI0CJ z{8)?WtPalD&ppOe!mj;lrz1CCquerk)tw}`OfPvJyYMet3r1Dc>mkFO2U3T}&@_R9 zPTNts_u0)+Hd*`^WDWQEIhKp&dcV`m(9IK2okP*#W&3J`cP9HQGOGKS3d1v^wOyy- zh>&2FOXd@^PRpT5M&kA?Lq$t%@roo(j7G=T!8%q!@5^hBpfOzrl90e24B{342 zloD$od6%wREK0b50{Ijg{CqdoAxWS3aE|Z~ys>amRe3|j;G&sYHBF8ybBek5SW9Vtujo2=fw$kKOR;S)KbwjN9iV7P5IkYIpwv7QPd{V&*dVoKnE;r znBRK%8&5+Z*w9yj+Ru?g4}U>i5wvrbui4PY$LdN##gKLUtn?W|&%EKqrP_Zqr?kk0 z*IUD8V&DeYp9UJ2_3bp_dTYY02LeXi@;tl$`3{apdB)PgM!;vmsz*7 z`x?u_HI&zX)|V&mKplSfciiQ?*XeP*2Fn%2gT#Ja>^Uxd{#g&R))o38&%q#_j`OzR zFhP%D`Np-_=X?;8R8H0rX4GO)2Pwn*__hX2N8jG{tt9^O5XF(oK-fi~Ts~D9 z8I|JW0&t(Nv~yO6i!*0Zp%Ye|tjWXYozUc14|P-E`CbyA)k#icH>}u>4LyJLEN>V@1t<` z4a#E^v*gU=>e=|!W^>_PV_O;5>alDzmtJ?;7%bD0BhfRwfsPUrYma((vkUu* zd0fbOt0kks080FA@}%!fnl4xCN?p)L$)}-5+|+-{9%<2GHd+UIp?hs)t5VB5{Fvf9q%gdctY$Q5GwucftR^feF?+D&2#)q61xwT>Eu0e z{ww*d$=i`vP5I}*5~>qoe`|Zo42fyY9pz@rP$o56pJQ$O=*sP|_xtA2`wfKC3jRxn zUHSX;xqJ-%EqwDgNT%L>QNZq;!mHpcj(*Dn(=}fGmE)uWX)D24(d~PxJtUs{;1n7O zdD!bP<Rfl$h#AZ_-iLD&X zw-)3KsLS01)fGl3!~@W|;ydv8r^22Hj|Bac#%8DCFpF0WM>FJ)2{9@ujy-c>QhYh` z87MAY^3CKyl3Aw#$c0N4ge8Fd2C*m$bXxFjDj4wI; zPk!_rt|&b-0p-ttHoaCO?^NX70}F8^q2VC`*xl&wKXEf6#|1u;aEGrcbLn?(7YZJX z`}X_Ex@YnqrgU#nrIt7C-MhZnu=}qHedEjhwEcPVOa_W0b)ir|ljy2Q(5^H&g@EjU zk|ZpsJ!dQyDqajY;TacEq9DE^I}9LqKq3}90>DFQb7ClOju99vG8A7r0b`C-{20AE zL}J*JtD@_M5gq^+G>e7{C=H%~rv0$E_5w~=yuYWjj@WQ!%23O*bAdhGD2nMZ&Q$ObbWt|Ax)KYa ziETD(jCpzXbvao3jEryga^QciY-@m_4++$hFIski^e92X>XSMtl3FWxuT#&0Z3vzM z(it@gcKY4ith_QS9GtxM)91I8?Ru-z6u5gHvscsxq=2-7`*q)iJFIH2ks4_ZWlpVR zQdn4n|I-3u9`%sq)wHaoBxdGvHs+8MwT-_z{PS86fl}*9xuGo;`4Pq73QHo@kURSf zy~@i0)9c$p#t&>1=j9cYh;h`1c<31{+$v@wgGC|HBE?kR zLIeyBha|U{y@Fw7$`uwy4njseC_CEj^@i9=K|l}Alz<<7;$Cj1I5$&!#k-WMY9%A9 zA<1?1Mk8REjG1TpYZ-PX0^ai^H4110+}8tYnWWz$cJ>uP;eana2x{uaELHwrWF*3g}){7_L*=?m(e{hi6)E!xb%dC6~Wk|-==p`J`UGzM$VzAVV&XC8+r%) zLxcRqk!Y!NB}CW`deiR)$ng{}O&Y(8mLAD{mv~a-u@U9rHKq6`e!H0)ChQOgMRT`S z_!rxE9tYd+Dsw*SdPBy|vplzhQ<=m1;qQr=kUyE~er@Vj5n6*9Vc@7T52dFf1PG^9lqQrXtx`f;v+1gp^z zb`ZsBw$k4JzFH~?@DmFK?(Arxz7c9$b&u2vd)+k`)dasLHu^-iD0<&OQ*7ppcW?dZjPTDn6kkGW>NO{T$)+j^aGNZ|pwQqXnv$+?2} zQWXhw?O%v+cM)&j@Yefs4q{1fE2ZR?f2^3D;DJ&^(4w!w3ZBzXh0PB+sKPJFmyVN} zw54XWhMDu71~HV!`94o$WRgpt^FhwrU+g{mXIVvM@7F@Ib=YmTCG$;L7zf=!*YB?y z9qv%SGv49oT8eCp3u2bvECOFc(uRxJ5Nxkko1#2ab+aO!X7Dcvi`! zz{aJ6KO`aD_eq#Kftt z9$M<(%C_BJ=%K_#ow#EKkE`26#N%_5Pk{Lj}5btQBRQef~u<8t#-W$ zVdo6jkGnXVwU#iuYSlgO&*PW1E7K5C7L z_lx&=&FhGol;BwaRI7b}fEX{=xERLL9-(IS__aJYq*LC8@Gde*7%rT)HnjCUl0hT; zY9+45B48@Q|2{35=$-$k#I@4%oMvkj_5ZxaM%+KBcM>el}4?n~o(H`5A}GYwhmC>&|W>^2d$S{Caz<{oHtJS7xmvb>Q)~Z0r7dbI;#!`EdGZ8jO`W ztmn7gKS??4iT}py@)n{|wmM~#6?(8hBI!6-Ww8@`I8txD2^rmAwE4_M*)gIss`sOu zt=L)s70=%XP&-sl^f9$Uca(_+@3BZ-uilEqW^fzcunWg&nU|b{DeCpMo;$1d`QUQX zXB5*;tG9yPt%z}2c-{A~Q_x`(u5pz~Hj!-IXY^a}w#;Zsn@i^x|Juz&;dR??H%}ve ze9`})uve< zA*NPb#Uax&06p--5wYRN?JcAr=-UlB$o;>ytAb&K`yckSK5cSZOj*ccRNMZTm;Ywu zJ)3qik|773Mv{$x8Bbf}W()8i_GdXVv$CQT6AR#zJ_FZn=Yd6(NOnvCR8tWt!njfJ+Sb;dy3laJ*CiaQFv%6=CDR~(! zfR)+L*eT^de#Ck4UIxmV-M!lZoD`9K{9t4DUPRckb7Mmni!!p_$sB5#s64vWI5Oqj zpK_I(TuE1hLja{psne+Eb=v$7A1R4s{@eM0*AL)6ap~#C5^;ics+LB=!WC0V>8)Xe zZjh}!s#4v5c6G;2Htk5GkU!pmSI720sr2kXw8JF@ty$>^RaEHeV8=?A#MS@6@p4*d zKn^7R8HZ4I8hNTcNR=x(GZppYGhtXxIlFHL+vp9oOlFf#xB7hw0LHw`b=*qzceii9cciJwzYa*lAJ(;JMLGE9#oAN4 z9#}S|l*9W|smj5)p~6^1P7yR9<|%;~xo|#*Jj0*FNY?9aPPwc-8zJ)2%Gj{nX6=?m;6+3Vg+ zFX;ZH(`$4vfkHqKek0Ih2XhCAnSN8Y$G&6ud~a%Go^zn~Wp2amT?z@&09mqI zr+c{siu;6X7>Q7-U~=(YF!L6a9f3E}U*h7c>?9ydi1|z*Mf^aMC7Li;8z=xBLDa<0 zQ5t>#ZsHHyyLOK*sS!UgJV&fsf2M!MSvySA5K-hk_65@ez7Aa27!6}4yt`gPXq)hZ zHOzZP=*ZI?K1i7{j{Ny-G9-TydIC(=q=khh3fhvC`Bw`5&S}Y!JLB(*Ck>)e7GwI& zlx{w;daGQK3SB}ugxBATv!)V$(C^T34%F$|pImxHQ0Z11;@J?}8mI4N(j&98;OHvp zQ}jr@owjD4756gMM39EBJSEuD2YR|$&Up{9e}hj=YbAW6W%gk9M=v4zo~3rOFwPn; zxND2Nq3c))NP3Ab)eY(Rbioolc}0LZn8bOFwT%{u8{hgHNX~es-+s;>Yb>^8LjZIT zr7};s=>;+QuO%RU)3pIv!(=IcK$;7T7DFco;3r`5;|5|8;NwV0bMu{yTVHggJ0K|n ziYh#=n6jvc$N|b|Kz8Ehs4q`VuC<=weAjnHWOrkYWo;vGae;@#-v6Mr1A>=>_ub5L z4M_Rca=&U^`;O)UFfBbXSU7G9;T2?bKgp~erYj2gID;5JIVGkiJ929XW(k-$uX!%g zes@(Yj7A$*`Z{C(;iu=#?)$&u%*D00bmp9p+h+W?6VbSL;r}{uhBC1^aptk;g&ax` z2UDSs{{%W@Swjfkpw}x>>&?q&pa#~e*4Me_ysXbYWJLZlcfLrWB24 z2j(4NmP^RqW9YcNPF93uc5|Rx5WKN72HvOC>feG!zqt!Hyll0q8cJ!G#jlT_;uG+QQLTje3ppa(HM<{pl$-w^)xo9?7jmlLL5)1&tfq;Yw z4%UT@evh69hz7+;x>Ayd(1UNhiVQtxtIWdCQXPNkbH5_9a!($Zoz2H;7w)qSq4(ZA zQ_lQpi@_rvs1AI40++tuypp~5KQOo1LA(z5g(rvq=1JmIv^kS38g%dVCGgt{mkbZ4 z=--`P>i-)*wKvI6Al`M^e=c!%{>pJTJd2vbS8f+MZ8$7AfOpmpW?f4Ab5yHkDV=}FZ@M7zdwx9iQ2m4-$C z;f@yp$5aFe2gZn|C?h^BkkJU-2S=R~W9Y;tIfkgV6G+4+VD(M>e2797-@y&$;*Ybc zMJO(GtrW6Y2!Hb#ai8x1?-trg7Kyw0ow=+%UtP2#Z0I>QSPp~we+Pie&nviUr2L3q6?yr@v?{=Rw9qy=oUYmW&Bn?q zxFR}i8krZ9i#snggq*^AH?m76uF~ zu2z1D9`Eg~ar`~ttN!|vsK-UYDEla;`dD!^FstP6=-`MOzNthc?YD8{kpOlSX|p&X zJTh#f;Q-_?flCS#V&3Ivm&B38Lp()-+|)$V4}u^eih>?q_-8T%dPRN3{a%EM8cnCy zbzlITq)|6w*ox5H{K3CSZ^4g$l@r+2wU(!VN}sKx{FTv0Ylhgg9bS(VXT{TL2ljE+1R%EmA4H&vzOgm}&Q!6LfM60r*w1#nLtl$cbVh+8XctyEg z;1XH{4sIC5g>Jxw&6K+QKP@1maKiala8J+Ak5pXp!CxoGJMo1FX?mInmQOr5UIQ9H z32QN&R5UV?!gx*L``v-CO~a)l3k{nfRkaH|r+Y7)B)70CBqMT*?;trXsWQuqqWg$1 zp~lY<_`OZ(PX*Lr(EO4QfSftbJE9(4-Xf#LQf%CX!Fy9#TsQTVz9+~;Yaj$Qx5V0K zOHD0#EmteW+>EX76dCiSf^k%E4vmlw{)l8;+`)*rQ;kz%*#_B`A1oTIK+V*hvzEk-a-dq0()Akvno3ArP z3ENSdEv@ex8w*j(iLQ8{|JJys{r_K@-pfQWA89ww#s3F229w^V?+RTmyIQq56mUYcw{=Bp1Y_Q$RDbkZ5c0pdu-3Z8jqDR(nK?6Xu4 z=B{S%rn6m&)_~y<$BjTFs-BHm;OloJ88Mh>n$O>bqP?YF$zJu_Y>>^AyU_8oNRJjI^`<2qpFWX?`2mwj*ywK2bIzxMOs_G_g-LohUxp8qj z&Rx4oymL_J4bnnnM}oI#pVs2m8(OQe{x1Xcwlj05vIW$0K5W6)cVMlKprK`4whq%< z(ZjI$1m!cbr?&M1oXZq4e>n#5m7>OOozW8$oWMgXz5s{Nc4;hPU@#91Wmk55b<5cr z7SEpa;RjgWCCB&)7?>V-#ISe@4J?s(XrM9|4lC;ew3-677^A0KnZl$g3928mP>4ep zj{>K#Fqm4m7NCj9SWH-G*D4ycFf)`2u4U_gH5hyVcxcLC9)V}?v1x0PtaTeGZy_3@ z12t43aOMZqOsTUg?lkF%vR{}7`&LPhAAYP^!f2nvt}aa&RuE{60G3?!J7%toinfSH%JhshzyYJ7 ziXaRh^Rp=-H6K*3{E=8kZ>hE1mc~p`Ru1+ZqZ?@8Rl`;E(493Z@C&^<#vID(3zCV2 zV?#O}5LsKK{#u&HC@VKDI+Cb075w#MuxJ?0&&B!|C2?I1cx(kE)MRQ)+l2x!y?~^2 zkJrq@$=x#q$YpEmTekGM#x=ZpYzBmm?|paq)oWT8-)Ec`aolR-@yjn&?MztN_3j~hP|MMAr?CA`Ni9^6QBW+(CQDUmex`J@me;pw zPK|>`$D!zQj*t8+p3vi)EFQ_r%){hkQ&+pd9?h|8%kam(s)$|)jK{_-S?x|M*?*{_ z-(rb=E4Pr9WPW!9Z&h5ssuhB8--+TU7vW<7PmyGVk zY_~Wgsfq1#GRR0r+!Mn)(i~EjAQU|K-?p?flvlm7t~2WYI~k%fOkKE|XxiUru)^Pa zs{`cqC_1@foNCVW>#?ZyqV0B%TJKCXyW=%dblt~#e!LMM0ZVb&c-ot^=DqfQZNKkJ z>-%y}>tAqP;oErz5uyBjS{9Gp^u*+v@3wfuD$N&7;CRj8rPUBS-njsGM3UNeswWiz z33+%ysQ50l4)YHxQ?C?9XDamb#jLo*!s~3_vP^u?lG*Jv+bh7NT?GwSVSP~MZq~i= zXUV3@bV{alThp`wB{$~iyQc5$xwv+uxZ9fFahr^ekkgY|BSxrBDne2c^QQf9ZL#4) z$f_9;WK?hVtC_Tr7&m`eW^(>&hGBC<*+`2*(q4L$yZ-@c>(BE9RJROi6%iVq`5`r; zkF@VMH|}p%PdEICI5Gpc)Sz<=8kz35KfpWO)$9(cJ_ELP1xF+mF(y6zwdkB^M3C?JI~IxXV1>gbH{aE_kGzwa798!M03RgWl}Nk zLunpjth2adTyd9S7X;CbWbXnzDN<+yuX9&uU>eFWO(x*M1cEm^@(XSLT4%X{O7>Xg z(*t(L)@C-^FaqG}kTb z|6Fo$a(yfC?WLUQtdeMt8RA1E5;INi_>$Z)k+sV3mr&I7`x_L@C3r^q21`d z5byR5oS+u3s|d_1T!zxL!?#8u7y(-?6K6O^06a5eNgbQO43|!!Mm#s#e`%T`;Q#(b zLXNt3q82rfW_DF~9n`2I3KC01Zo(_XOlauQ6jmQ4^DZb&@iamRBEHnUGE z{DK)LyIU@+W^;J!`%+DwXVCk-NXUCD56)_&we5RcBeUdF3l1NOSTJsy)P^cD;wa}p z`_fP9&(0rf*WUFv$Mm!7?g!_={IyfAV{s^>8o7Gmt;452EKT)?@0zZ}SI*}L5mLq(F9FELeut_3 z-u`_lXm(!$4Md%KSaSFmzM{Nc0BS=UZ~ExqU3>KW1E;cu*HPnyUZ#czbS&3+!u zMo|4V5^4hd$H4f1J{+`KU_Z>UPPP`DMUqi_{fZeZD&hDx;7tM9!-^*A>`E@V-3vp; zl;E$be`*bOE0~$SQ+oIove&92u1qGn1)OzGSZ^9gn{!>5YxP>Ho}{VgsWIiLNM9=v zpCru4O`p?Fy!XE?ao@>8xg11`FL~U=H?ven-d6Hgys9lM?fLFkasJEioaIaqcSpRn zJ2_!zYQL3(#kcL(PuH>^K|GuMz*1I6>9DHG?n|$lQHv4LdUDq5*C^V=}LQ>(o)ROpipj>?2;ri+if1i@q$VxG7 z2flmBY&Ws0)-7hgN=k*PaA^iDE6dB4dntmN>$!%V{kyF*aa$7dsN2idH=1S3f4-Oq z3mWzlj)y27ueIDSVZ|680LX5;zm_+++ddI62Gh>-uG(lCWCe=^HUYZF522ng-^|LO zj;z@E@Fj5c5(8fdzG%==Ncfi(2#n>Ta5bBDuf!Gi-y&DZjDBQsk4wt(zxcPl0_9!- zH0($fXCZf3z^tkm+P59Q0VDba!sL)L4B#GFk&vx=S6y6F84sH19R^<JpxGJ zCl4AhW_9cmt!EqYGOcB2OI;^c>N&Ka1X)8L8xiE8mB#!u-8&-e_9U?6$hW^Vbaedi zFqIi^c00*kdxvmJVBuG#|3m20__J#gFDJDK^&YlDb{WL2~qFkL(Fo_wQE@s zRqz&#F##r+mq@{U`<_>qEM*8uJo6d`M^V%=YtM5oOQ8Xhkziw%p6ZiH8Fg8rvC1To z;nYua#p(#umRPgl0Fz`MOjlqtVI9& zBRj1Zj%t>I_5A#VZG}5fBuopA7)*@cnwnz_$$V-d`Q&J2pdRDoRg*YVj0;jYlhOYz zA0C85Bu!VEof@9#;Tj7L&8KLePb0u2@@2@=cmf<9-FWLdq|4TTkECiRW)q2`NrM^mh55lExO!&64O6wZm46UT|aaXu$&NnX`s|lBvC}K7hp2 zlC}ut8qaKP6i@R^+lhLI)J7imTOiM_{>g53kwjQTVLrstYSKdWR+89J|8Ty~v^#M} zS+GdtT;#ro;L^{lmfvbYsP=w%Ap(bb^YkDK+mYEmTbOc(X`&!5>O zjJ*V_Z_IuWX7F>qx%>j}orV@TbXsO-JYlUV$%{%YUi@sRLH3T>6wTJV5|vgJpWMu) zx6n6-j(n({{I{wUT@C8T=i;pV9|t(aNN2Sdj5~dAEn-kaEii|_NJAT+l`Pw~9F zt~s{)d8c}L@r;eNl`U3@OI={tDfI{-Haa%+gumrxem^UqBTBe-7xHNS{R+E*>1{rL z>tWLVe5`Jv>3u7A^U+Tm|J$0c6%AFC<3pEsr}x+S&lfRP7mLm>%%!KZD>s#hgqhNX zG?G~Lujf%^sZXYdCot8XoD{U0Dl!B3i=cC7O*rFmxAU+d^X%qKe5mm>Rl-T_{^G^( z6S#m)<2D58UFB$#NeNy-(`@+pLbAnqq4KFNN@kETAWMjAE)W%+)jQIbX0{%z?1GI_ zM`~fkEHS2{duZ?q&>|s*!Xa2@59kR9WiT&GsX}lS2-=|P;;7)EFgRdc2CzN81eoQ_ z#X;k00vMKLka=+Q2n--Vfpl>hWkkh*mOAqxEC70!7NSRXA^?0QIy{?v0+A>Pl|(y+ z6OBLKy%l)r)$XG^-ZEF}XeULc#&4OE%~{Qca*|y<|2V5q_o4Sm)&BL6*yD*e>8kpG zv!<_aK+<5LCUKL7k6-hkxNN&V$J$0Om~f>_U&z&}YcKJdqmIS@JQ}}^VvYwGTOt#1><|j;PY-*CA-6*ZJAaQ1n6%sg+I9Oj@ zjdvV6yyHL-{8}gHKco3IMpLLw#i0&PKS`y|Tw2zCJD-7e4DTFwpC$?fx;+%Z=sl?J`;? z8i@*K0M7lX+<)2@jNIz1M?0?tZz8uA_g2M`?v}BGhU+Ff8 zk%M6Sj`Jm(g=*g?UNzPUnMaaoi)5X8ZVG*_bA(LYprcl!37LY36xmYCxf;UX-@gd( z6w3JZ_ot{Yq6D5AfP!--7&uRo%3c3##OQ16PP)xXvW>xISyzoL#)?p4`n3P znx0gSQ(CFKUwQoe^_vH2b+puo-c$C&I``!G*1#AcmTXr0NrXTyHNRF|CIudT=;!`k ze=-UYp_y174RNol9~rmV?(6FA>!U?k5y|n^*vVvu`esIf|9uc;5NK{3mBl6GEg`ws z#*RO08a_%F5~N?tqY%!U-=$<_I-7Fp#l%tdDdEZG(!hRmT4sR5>&&*)FwsC@7;(Js zNuPbdzWw^mP}<`AzV#M?_I=+=>QgbQBFpEYi8C{u}CFuOI*9~+o73i+*V+B`%D zh;C`z>k?{e~?bfuF8pgfn_oK4k6?bcEiz2t2twEwPNmA#ZQvyyM(q$Y7 zjF&b(nl!jyah050@{9^p@9DlyAAdz4IY=zNtX}x&!T+wn->dG_6_pMB=U;_XHuq+Wz5Ncsf z@cKb;Vl5s3Wv~d^kR%6L$d!{b3hY!gW1tj*k2nfIe*h2JMud1EUxsM4;UV6z$pA*o z=!1YF05B4QG{h|j;Fy4y(_urDyf^LxibHJg+7+3)@C4o`%885E&`RRbnop(NEj)$ z8nlt>$Gz&4t~}AUWAt&aAiG?~oW<5pR`02tS#17>PplAKhigeFYvZ%R=f{<4j~dy+pVoo`6U3yq6r@>_tLRy*l|IkhKxP}= zpX=#uU~vy#xf|&NXe2^prmQ1hf1tXJvl@(HKTiJ3{1;1#cr9^P=_hP99jDu&%Cr076Aawhpw@kWey zCt+=hgZpI)PC7@4*^o#mo=mK+WmFFpqmsY&WHyfuKkcZ;M4`6Aw`tPGDt|a02T(uh z_CpaYEL4bMGWhhKjs4@J5B&BLGM<-=IjTE8P)S{y+xrcw**Qr)y zjil(WuKC=Cr(f)DlEVmF#byl=NgHX)_ttMLq-=SJm=;frVSG}xoY!s5_!|E32>*kh z5Lz#tf76ppu{ZW95I-y+QLilfAT2^zdvQJIfj}&j*ap!Hte$qtz~^r*>L!> z)K>jXPs;O|a_f5Pv)ha@Y`d3cw7)(86&I8o3MO$>?UsLe)fT>V_A#U3r;a^k_L+x zufld~S^zs@>Q)jYe-}**gq)|n+hzuAm`4;xi}?}mLkv5jUV{$C6l=^HZ-F}e`!y|Y z6DIZ6Vi$`qn(jHb&e|J5#C0Y4-iI&v5#J|XLvdWP)J8*TqmWaEDj`>}tE`-6E>6;4a7^)BeU=~tgY#sNve12HjiI+%8G zq#dJaCR5Ga<#gHj8L3k`Yb2$cIp=a8qt0i_%k4C#vDFvW2R&~5~afy-x0Z-$fy@eUXVU5HIW z;7c`@Zb~3;@VF9HP#)IF*_8`Gf$0K90zup;5|BVERYWBJ#JLEf00MwOVZaP8SQP>2 z240Z^XbYUM3708YmgI@wxBpDW`@|2YVZVg^d@Eed#^{&OVv|5kxOt@SGkLi8?3>a2 z`2?Z1bwp;9S+Jhz@ar>oFUgsyvt~Ov@p|};+SjJiQio?>78~8a!lJ5WhZWXb9HXM6 z|4_!vspv4$tkup3r0z6ayM3D`U>9R2&e&Wcj|*c@`7AmAYuLtSVcMY&dN(tpzXAH~ zxJ$m>WQIL9m+ieE?2NUV=3#y`?sfgrbz5M9#0a(ep>3Usc@#}UryA;nqv6p zaS&X-Tou%X@9ei23`}5cs?mgWJktVSdnt;_v86s>u`K=(QGU z8k&!I0!>;4Rcsr4w!>c_o%47GjT36>K?UQ5+Fj&*Ep z%o z`>yBk#g}pRKTnr#PfXiY#%-zZSa;Cy@3~Wc)Dh!U2$#)pc`Iv9Z6Dl1&QDhUS`WKl zNy<>OwX&BKb~Na0Jza@Q`L#Jh7Fi_vP-+hH9;>j17{l;%{I8DepraJId%YAOl%cM_ zvoE6{j+&>edyk}e&ah8gMP!YXLfY~feK2Ff8&G~NBN$K!USB+$hRYSCr-f09SfS!z z$Ov-0gujpSIF8?JCEXh)00r zq3TW5V`h^;ECL`Y0D{KrCh&wrXxpA+p>W96%s?(n@?0QQlo@W(_ihz)3#d$RHwJUW zJhw&LAq2#bV@xQ334S054Kv#SbmJZLgaR^yL4an63Q%N;m_kg%ra;-^WCdT!EpkXj z2CEzkNKe(?W{0?m!;%E4+LAK-=f)2+>E@LO5KoyGD1T72uo0-E0KvWk*Z|w4b48X4 zYyfp65C!Ng=6{GV1utV7B^c&o74>CG=+hQ-EXK4KIBDQ-`y+XAlK6BIR;qBQ^EvRYz)323ReZv%q_o|~E zn~HAUlZ@rVg8V#bXkO#xAvf1dCsAgEG1WBbGTbFQ5B^dGEf=P{bLqOx$s4KnRsT_v zOq-(r)DHGTWz}+TxR6?Pdr0WO=muhKLU6<~;tKK9atrO=Jmd(^Pd8-6Q%=FQ`!6hj z^=pPlmAT$$EB^zNN%zRAfw7;qpV4?oR||XN7oZ7e894ZzfV9fv0D4+{)lg1};HRNy z^4a4Pp|uC*X*ngbc_pP7yjz`{l=HWMT9!?fy1b3XnPzy)KxpNLh4Lh!xoXkE<)?j3 zT{6M~q_AGPg;TTsAzg{SRG@q<3K#+%+SK9}F?V)lI z0h;}Sf3>#7rko1tYP)Sd>w)6)w zmF>74?&k?%d4I)evTDd^acZEiZzL-*cKhthzQfxj_}5^*-)M=?!}kSV|?D6yBc#as~F+=irSfY?2i0a$$xqjWOq`8ZR3r7t8nmD>={wjZDo z?Hi~VeJo5~cT->b#Qr+xG4*j-(|mlKpoB(p6a7gS_B-tQ#8A>F+m4?C8v@nkt2sDu ze((W}g{BVWHSB_a+ouivulu_a$boR^t9;ri1#OZr8^(uHOCpKB_JW}TvxZQqkWX)} zf1FW@l7Ps~$NEKK4zay|0+AZo0M+hoNGkLIXsgOVlZonu?Z_hlHa;>op{f^XTfv8H zJV%s_L0DDLOd^jv6@=Su+=_g+N}v{a7fDKSIRcQ!wH-$jWFb*5E`?(UfpH!n>{K&U zG<*q(S*w?YBQAnVEN{!28~8Ktcv)nTSN;NkIX^E*dn2wv#Epu53EwOgKm!1|fZ|A) zLg7pDVTy*jC>)b;z9j)wTL1`3VYVSK)h4PQtW3M1=ptBvXamr6!=PcA0C{n)UoLat zACiQ)GW1BpkX_L|V3rmbDAN6z01m)h1PrPk3|vQ!0>yD>@I;^l=3;~>6qby*2w@Jq zhGYaP1!e*|038+o=I-OciTY+ywG zL)Lc7{?s4yMPD(~PqO(`7B!*jOEQ)bRQek-E)Qx6k0!3@o%-kbz+$`!iQX&@H^iYc3z(U!_`F2WUwjH$@f3%8-R5ajfyP&7FRx#zgJ z=y9cGshzuBe>j_?+-{uIq;@)xZ7=&Rdl0=**%3pUU;R2&vOmZxMgB3nt(+o%QQFAU zFB(JU*8Ukje#0iLC~a%G0CFv`(89gP*uAx0c)R{({K~NJ!$e_Q@71 zV0D<}p^TB0y}VksiJdbN0}*_5sSsi`vsZB^irlyICk&N?Qk2z*@Hftt$BB}@|t>NUx`UyDV0r3)GZnQ&fjV@>CIkCb5Bjx z>XhiVC30AfRjIBf!yhg#8uxTN)n!sPw`L9G?q;xXRs8mu*pNi~8F-P`Kx;}o-)^Uh zc}K@1=r}ReyIlc3!W3a`N0`@Zg?$^lJ^gK}fyFOpW`fRh`&#N>hX5l{L6k*xxGbXLhlCbGY^n-CMxRxs|d&r68$!HZz&K}FDOdI_9-aK>`gRiAHXslL( zA9uANCI4x3_FhlePM;SPn5B@};liwdQ|M~tpNoa(%B&Oo72BT+uExW^zc{T%fHR0OQ({3I`A(z*w-M5I`oDhYPU)SQ}Fe9V`O~ zfDjRYK&40s9vX}_7dlm2dCM;JB)<5TWtfniSB?Xbm{QC|r)b_>T=HUhV*PsDrJf#C zQrJfu(?m~U5T=_XZr&x3&{%Fi4F`p4Myfhxr=rtTSzze=T`P+K{i1D$;VhMd>2oCm zy`M^AncRz(hd6`?H`f;y4izguzGt0NSbn^(E=?~)js0bHJ|N$%Ovb7sIMg8p&OR}A z+G!+b0ca&#Kl6L`v5R1hlatd0vFnO3o&3$etvDzdTgv_^#>;fr<$;#raiNV0L6}&? zoS5*-cNZlB2c@n;DdYtj1F4@f(@Y_X2^o}oh;Fl2+Us%kU%68vG&2g-?Q9hu+rK|Z z_&TU+|J&-j>FkR~q26mBca-VY;D*elije|rJ4RnQq$7e8$~)S#Lyo`jt4OI=F^zI{%>t8Z=e)AnZ(AI!v{ipx?;yWQhiDLclQK3H}GhL|Lx zQxRGjALlnQpE~zr;~J;vPfAi#l%4G6R)LfP28i>FW(s(fSU?sz-be6)L{vH{c0>?= zlY-4R_K$9>Hna?zK8YE1_5%g>7(LY&KTEnbkxu!(-`QhdzA+ZmmDzdx5z-!{xLyc{ zxdOmz+mJRB6D-q7xtg-y-?%urkuV3XcZ@)2M`8gR1Y;B8C9laSOTw~XC|0PsF#3g+ zZfi^@6A2@^Hr7`Sq|zhPS|EjpahrW*_A<&TwWB)Zd^#T9qfCy=vR23o;J7bG8n58= zPfjEYCr)w5W5vhB^?VY?dNF5mw?ny3bNh|QdtmHUQwKW9O3%9f$8F7_zK4pb=(V_^ zE`yth+2Ti}ey73R9^uZl&%ic{OQ3%+zbR1yZm0zSX}&hpi|G&in#yEB%M zX|_2q323Z!J>XDrb6tUAAh`Gm=cKUc!5hMqA;?WIMlPI7>kG+&3jlb7j@u4^5CFRX z;vwQYJ@>m2HyM(4-p(Nawwcye4ZreEXTB}18o>tOAP)$^wUO%pV;Tdy^?DWxWH1Pf zsV~e@%>bAZWP}M*uh1010k$?lK>8qJAdHCwgv6?cSgdmWQdthBRU%fkO@&2MMgwrY ziTS}xxkNy&hX=Gv^2oqA3=}yE!?wk=F29#V2vIl;00?QO%K*$}<}<;gHpK`UgW%Sl z5W34S0DZeBlKcM^+H*v4SAV`Wdf;=Dwxu5__pLNqHy(DfM}`1&9d;Y*9GhpPry5_KMlKlVF-LROG2y^mMzZNb{VnW&0$O1 zE$?Rp6iTiZi<~_Lrplfl*h^=;-bCOAQN@GO)y7J~OFWKikqoJc-s9EKkFYXIA$P(e zt}^Qnq=T^1EG$BL)EVB|aVel^c<0P0!1UFF}uK{4P>{jp8`HF+af$>VYTuJUiT zx`V98+BdKPL|0hIdp0>@*AE%q+Y=d$LoXCA@B$xn-Qf~AUAJ`0KkIZ<>u%BTvi%TM z)k&1%ZIfkief`F7_y<*~8~e0&A;s5UE#7e~+lc^`KHkfzs|YGqCMKc1ejP9twea&{ zu0_7il!;2JctYReS7R1la#;B&D<=Ad)FnTMr+g|jmo_a?!gCSehF9N)N;yTbT+0>mG7ijuKdQIHuWkzXgD@nH}dQ}e`-v&$Y!iNpdWiSKy_{G=%6?L z6{*`&ZV!)|Me8#(?dk)XhRdqrrH3L+rN>ARP4|Wj5||1d3iJRGAQWt9+eXr0Y)D!q zZ|2PX_q49_BknX!w#4EA^92Mzg>q30KtbOoS}w!~uUkjES$DHVA|YlQQ+ON1nJe$D z{@@}vDL@pTVFztP;AVy0AW#NTAvZDmbAo`W z|A>h!A`%Ka2`=bz2M`PP2|^VeJQl`)MzoEnM^51>L@d4egozX~xp+8B^5Q5LOhw|t ztVA{R4^|{sRKMmjLzw~mDv9y}<4}O5NKDS}f)Rt4z!WZ0ose=gEN(1%S)>YWU|Qdr zhek0kc{1z0g*8%5Oqx?SJKB4cN3_3y7JHgLmqy+mS~V>ob|NOHey+WSgw8warE|*P zvxBd()E(_(dR%-uHI|Q!>HiB0sAdhfKn=2AKJc$UXIoM3BK!Qj#9T0_#9Yg_nMcPXQh>SHV^~7`uP1@9|z` z(|x(MgasZ_Qj!`3cO@pG`Hd7FS0H8V%7c_}Tq3`02{;x=fxYDjHouIlvb`lMB{F{k zV=Vfb7e0RHt&?CZdrT>=AhKVEtV=ZfxK!EkY=^Ne`1TQ@v55cbN7DM3m)cjVrPc0I zu|jG(lN~w8c4JB-RUh*3zqVBA=Gw_5@qN>2PZwQ#-`T09LTC}#dyP=m0qWyGsBfQ2 zEJBZrz%9$Pk+DPbU1qNscdRyPTtihK)O73uuHdFC*v0plO7y2ywb&YUkpAyyM*6DH zBuexN2f~!~bhgYvChUk$lE+pw3VzZxVGIxgbxj|v!o+lxr+#-MYkv~HF7q#U+VlbH zvdFxB1Zx4sv1VsHBLOLz@ywtpsI2UAU`=goD(7*=syefnZ9Cqj?W|acoE`#>On&P) z*h*n(^y14;=&BH*?BN&15O_i~1NA<`nETT>k=Qim?BVaUx8qnbS6j-9zGtipjTfJN zTaW5P#YygP7tbD^U;VL>rpuD{?HyAp47j9|UwS<3AN1ASXY1a3{^Hg@HQ-OhJ$1Uu zBgKO%P%1>~mk*uC_kVrI{o&dpKa#F zow0^mE)CY3w@-%yHxI(svsMe~eTMrpzg;FupN1NcOCkj2F^(vyO=J{Q#BbPqYWDg> z*#MTzs^^icl3TgA=U1x%0ireAFbXOhF3mViy9R8Ztli_iY@fTDy_nEW^( zOc6UMbQ2KOqjrE1JHW`QWO>4u(4HNhEoVk5dMC6MUTa_Ok6Z6fsRNF0G@37IEBsmZ zEmOmkT!@?$l?aHRG#(u+#S&AnBdPi#mdlQ1VmI!mIRj{0e9&*e1qZabSwzb;2m#fD z#UGnq*E_YdoUabRKbmg^hfQdzVPF{wu427y;}>5<9@l! zbicoNY4HoZaJXetT?qa0W%%-f{%!3_EQQiv#US=n2sZj_s9W5}M7Sz|b;G6h6M>A5 z;{||G1Z@$`L?R{dW){nUn1u~6yNx&vy}MET@u`dv73m}oV zjsJuZEjtMG)~flR)!)Tr8T#GXf6Bjax@ZsAuv*8A#_X9j)tW&*J&&MgD2F))YzB(t zxZAeZnCv$aQ)OaQb+5emZ8<3(wSzCGH&xu;6}X#|7@(+4|Bdi5h%k&I?t_wwR3_18 zh$RZmI0%zRr@>qRm>`Wh0EWHY0Mp>6$jJj>XqCvmAs`kTfcqT*i3PYo97}*!6D2dq z+sVj48!E0VBeo@jVSj-*nl8xwkQK!^S9Cd+5-yrh|AOlb@O}HB26+`Ezk0G=S3zj40ZE-~~*mW0d z=8|bw{sPGl&+Hw+L!d_#MMph3%j9sq`@A=LmG^ewr zQ>a)f2vWnibqOsR=xo`1v&-_=s*lHBox5&V2x+%Gso%mI3Kh{Qs6xfd;%8D%C z?)yb&_b!gZ*B%r6EE}P(BYuxZm+cf4C7PtGg*SX8{czd~!=AM%61I#nA9dCwG*#YN zgVFB&N)5}^MChJsmN^#U^DE8n2?ync3CcaQk0l6u$z!!VFBoJbkIZ@4S1-|F!3qV32xU}TSrX~OM_XImRbh!W`#O~pa)Q~$XWjvuiC-h^R`)iEEaw@CTK4FZ{5WPvj*v$S-m*xDO zzcTGnq37NFsPypmiC&~TeQ};{r)a8!L#*FbpL+CZop@%BRimLlILQ~;ATcca*3_UH({r4duv$Y zq?`VFPTKoq>{a)#NUw&n6-)n}*vaPIj#QG_HrySx%pu(SKc51Q=J%zsNAJaVx4{El z0;;6`rv;%}gcq%seV)=c7oW_dD^+ez@XoLQq^;*EP3cB9Hjw^V2&D&;5GQDxZ~eGz z=VV(7#@M*KLq%;DOCoXioH_l`Qaj?nCP(zQ<6UB9ezNS0NzQ47bG&u?WJ+u(n`H>|Ki+Njcv1Mqs^+Dwf zJeKqUhO2|^q?|wnQwIK9aP~hAJoJIH&)-cKsx?(pc4kw)Pcikt>WJA9dUn?w8VLDC z@w~u{V&@bYj3f1Uy_s4GE5u9{Cv0je$dCwP_QV3E`j^Hw^lg2!t*#92rU+)>*u#)i zmI=f}g=dQqJgHV<)dWYNq1@Q~3K%Wa354Jg@a_+c3c3bknrk0XOwA>r!(a(8sgSU; zB%(*6BM4xaB64M^E{r0GQcMO5K`92rS^9@yC}Aj=PDWf748@bDjKu54WXgId4J*2Q z4Lk+JzEF<|AtK(5bdjPU8K>a~=e9*G;U54mq(U$x4F!@PBwv6*CsNfJK)G!IFkl(q z3<(D;0-+(65VN?~kop!&lz52ZW7lBVJQ4PEj>%7 zqD!>p39#TlId~p67>C6RB}r^%-HEW*B@}0!^3xEV3azCz()n73`|7hoYk^s4`Vo42j*xB#ne89W4HU|aG=%P_QH8}cz)aa}DM z#%1(oc1o*goYmfaWW+)VRGvzeQ1>(3i(Tq5PsSYQo1;M6m!HX%A|K<9eN>6N_JT!i zj!m0=4BaCYlc~|$YwM(!W5W-svJMI(whr!sg1*^5#q18)a>SEk$dXNC`0_B0-?FBI zz;g9jrJF**_QyF;PkMI0W?*BTRa3dK@oZ2+Ilmp(^Kx4ni{}X1pu&%%`0aA&%)t$Q zc4g&Y4zOGPUkg(VDBVlYu2Ud_7g$d8ywGoWYrv3pMgmT1y$Ln2sIkZS4t>ugI{Y{U z9cf-(>NWbYVcW>w;1LJq&NdkDoAr~%@+e4Engi@o`2-(nHNAkislas-$KuZv0`=~n$$lE zTa_T`u8TWf6{4SWyIWh;$O#xtLKmrDZ^>TotGPmWc>HgD7SES8S|s?8!@cty z5DCdSI$J86r(uUmVMB)Ad!%Lk)w?9m0(FT!w)E(eP?h9CHzK?ao-Fsf!)}7zd}`+x zK8vB!JeZC@M(WSin#)f?57RcLS2^NS_DwOHc?H<$kSb%KqqNj#1_GM;)EX z{2XdM;kX!RcbC)t?n0RB!MU9IfIDD*)~j^`SL*JweX9=>tr3~%=BV`3hORd{FJIHs zY8%>CGg*g;mvXW~Byj zYlwXR5b*tV?5Eu+$dQbe+Qw|hAu~=!ZMX3}L^0iLJteZ1?UuGym{=Y9`Rzh|dH&gr z$qT2Srz^yb!%e$QDaWHm192wx3hX>kEt$0KfFEW{B8W$US|q3q8E1OteBvK&wk_wY z!y*ZE)Or}R^3eY4o97jGUlVp;ZfSQr)piIoyYLS%(suNVobQp1%e#g}5AcT$Ouz_6mnf*vegHoAp3B-Hd z;~!gcX4lf4=qc=*BYfKI*Ql$E+HIYBx8@1yp28Y21Kfqd>u?QRq)u!_-eEc*u()K& zB}|IO7C^Prfr;LPm_CU@ESCrkWXNoY_9%Q#3>>1wqYpC01rY;)k*c=HWsCreP$m+= zAp;l+b&;XOFkyh@4n@!m5F2f0;7Wkot{A=SpplD3Z^*3aiX@VWnZgq(Z;88GxiA|@tRX$F@xH$w3 zG>e`}b74RqJi;qlmS=beB0vMh>mlCEm>Gy-;K;x9vai}bq`V5Ikdj9T0NP+6q!|P# zg8|zGQsESL5X|q4yop1DDME`y3EOUQVWYVoui}@N_N;s=F8zOdI!b1oO^8=XFOY!d zvCB9Dc3yu-4(9YU%{YJanJv708?nE{Jp09u##Gox5N?$MD8->i!5iy!kA6LHV|Y zk<#`X!&Z(pCk!$rlBc7smrzn-k*pny5w=|EDLx;*$B93GVH-Mf?CLsqrn+!`qgwS8 zk02q|n2G(=bTWCu?ditA>$4Ama8k9gVp?-+>kFS3tL+5`3aB-F(JqzD3EAEnzcvRQ z<8HR=Nb9GWe=*&UisB7rMM#*!miNZ3jB3$YXf2y=r9Qr#eF#E}O-}P?GDE^CON1f8 zD>K7sR~7x=12HS3=LlP+D~<9a!byWqT5&_m-sgfg_#tx*Y4{MHoSUbOZmiEO@` z?AiFaBz}}T4STho;O7>**QIiO%cp+YzsE^ZO<$NuFlVSyDX2yj{c5Rd4S@BXQrOoZJQ)!kB= z(r46Xv-UCbotJ7Pf!C}odyuS7IC{Awpw7dPZr1Q0nd`0 z2uqLA7I8zY_t*UmCU3EKxMcNxbDBLqkxD(lXaG{@_)OxOM*D8V^#)6n=^F3pnw-2> zgJb?ddS^U;ERA~ocm-|AoepO@NLk)QsB%~mba9 zHXDkXVdhD^TFh)k4ouB`c0M;<9N8-qKjNPpoY>i}+=fL<9lJbs>-T{7O^N=1SI@`(M~iVM$WfW;`fuLF$ran72;zRT20bQTZk5;Mqm%YsQZp`HC`x`ddC8eipy z8A7v-J{SQl`6lDGcsH*Y6VNo|7wRW6jgv?cr;v_;95y6C6GRwc=Eg-33VSfdEA0Z~ z%_JFx2w6RFV`S8M-5-;;(k_vU#Q;)vwNB?X7Ud34Z7W3MsU|Lm(5O}d9P;C0pqLNl ztU$UMnm&YGWK#2WVzxqjnI7qoZ-X225+emxy&hoV1)qUX4!^umjZtK<8=cIW4QrZ? zA-1Lx2_i=k+}*CagqzdM%eXX5tOY5yn`q znuxdIj$F%6gyTnBM&q&`=QRXHljmW(@W=5o(EvU$65uOF(?9`HqVK6w_0+$G4JiPT zN&(P9Kmyzsg22eW9YwC+f@mZNx*tSDbK>UzBVG&3japz-46kqcZ`RbIz6hJLpu zUvR=mLKLEwH}I(r@|G)~yt=>$?25jduPIVy!b2pS%_(N``wl~7lInLacG*sQA$r!^ zX-)BA?<}iRVhcF1meFD_S_?k;bgsFZYEX*_$4}|4D?MT|8a2puZYvjw3dCEe#xq`6 z%ln4Y8*-;$(Q;Y%)O0u4Nz^kk~RW3#wJ;nM0 z^r1w}V0A(lVx=iGfx=Uzm2+uv-ZRi6Q=wF5)Dtwn&ZY>eb=)eflA7lFzKFk#JCc!~ z*Iw7+-l~%PbS+M$jk%$D)oER8`jecRWCo$SL)cRYmux{+N6l*3F@@Ud6Gl>712nG7 zbBPOP1d9FpHsb$~^;SV~Z~>4m&fpC0?ht|pcXxNf;2ucu;O_43F2M=z?(Xiv-Qmu^ z_wLs2-ZzS(YF?;0=XCeiZ8%SE`!5hx=r<9|5j+k}!U&AnTSff+@(@E>wUuR&_AOc? z-cF)?qJ!x<^=ZD!g3kAJ(1IlZ8#WakDOUn`{JpYL+c4y0w9dG?x?Xpp;~rgM1FN=w zVRV$i2D+q4q9ji8+t?o*urGbOy4YIaY~f>3Yo=PvSov{SvU_Aj25eKDCO;)&Q?wlv zG#o4sCx|1%UX`X-DA8M5JhLGjA;^^_cU!JNe}XjO`vZ-sa~eU$iR@fqlP)%hERq2x zOI++=;6`a-FeoI$io965!!6U&hsgnOk&gT22G_8W?_~ujMwIK#e3T~oNd^`ATea^2C zufbvF+L69FOX<43l4^&b=l!4?uh{y{c6VZ7XZ|%Cv7oWOf5n29pX>BQv`U>?0g&jY zSKnD0)s6kD7t`=#9=GHE>6KI_Bg8x=;>QH%c6zgKOJ!9MzcmX^%l?gx@XN9 zbeUO3a|{BfT(Fqc3!CAjLkic?$Bl{q%i1jH2|iWO3fR^*H}}DSMbao$rpey$?fu1G z2Wm7KpMOXex8DWNjHX;ePN5ug_F%yoT0YZO%MiB^o?q@vToo>s0LN=l>Pcd_uvI{N zRrTM|^ax4|#r*{{7A#0>LQrGq6XyJ-)rBMEXZXMo3&s80?Q`*iO07W_wz(~2qM1!TW97B+ZrB54% z<;9ovCmvF$KXG-hdD(d0M3BGL3yb7rE!}dviy)2k4$B=qS!7rA zv8Rj6L!{#GP4q_KFsJ~(q{Hc02YS#^3f4yby!f)J&#Gi$&3ZeQ=?yeynr=?r`AcWQ z{`J>Ba)e!)V)?AOt39Z&C632}zC>8T7rRNgIVK4XvrA2cloylbZNh%C8x6bBl zv{d+KQX6J&$}=-V*YrCX2uWL&Rf!l0>*_Fg&?4U*54j?~4+qEyEe@esDM~Y*Y*efO zxq1{tS0IPd7YOa*%j^hYw&-Vtio}oJven38+cvgR6`6sdw|90}kDqap55m+}xmZ5^ zQ6&WYiN7*nUXZD&Hedi$+*nrltLdzw9~c=eV(41W%r5LA+F zBjy-#osD2JdQ^y1-G;mpHA$$X>`hWn#SZYa-{YVrWyA;gZZR%_nww&sD|}BL;9t&VB`9 zxc^gIa;Epw)0KBSeobB}Bew=eEPI2EWWiitPoO831ms2&=StE6)oKq@Ur{JWQMU6? zpHpk&=~)^=YGJT<*f1Unx`=BF|A`Cn~c9z#Cz-{pQj$EktE zxce=opjCjD*W)W#u6j`ukw1Q8H6pD;YunoNh&23rB+uf}=5f|4%Lr!jTx!t-LH6>J zs4(&zXv-E#$HY(`i)Z?zY(D$OA-pU<+xn!@&(W8$iW_U5hz-FHjL(avJ1;Biftv7qE-QBN`*eRsg8rXKo} z?Ez%nJ~Y%fbaDZt&Xw@oM>_te%8g{HZjJsrpI*zfy3{3C!;ilG+R0!D_fVBInO~S- zy(Z?za^gD6%zL;QB6#=rm8HF)J3~9=yZgqU?7QhK>fvzq4Ium_S|@Sr9|J?B4bPb* z)8EbS7rT4JzfE9gj9_t#*4ShC&whBEHH9S^sIQTCq*At={k-*nDtbWjXt-}_>Qa^p zI!BNVNq`puJ*^60J#5)1@#bpj-+Sq3Tedv2YEOJR;rCwuqfiX~G@ejukFxjiWd1&j zobtc-di<{txLvug9Vuw~un7~)n9?D>!WLJToL$xwzz;o7v##a@7;~pp`bH@G`pxTo zMHIFDX0&z*C|{dN@2bv<;tVO{lF288f4~+y< zeue%mrDbW-qau|@WI21Ci76e39f0mlQn7}I>4LrIR^e3epCW;a4tsYMrSq3qf>I;I zH>wB4hd}qDshcyv_poF_t3gLzK`ciivzabEz{{5kWGdg32^`H35BL{^ZGTL|2-U_3NF4LJyL**`@W>dE zIXr9opla&B6qOT%Au+=_$QC09pW=xgg#emXAgs9~B+`j02ofss3HGh~dRbGF5Br`j zc(kD7e!9_z8#kpn2rlbWn&FUh%mINyem`x(C^Ei)7A zvUyQRp~%#*&~+ffmuyd(D2gQq#K{7ogE)M~K$#LNgA`(d{_gDAIcC!$k?=$4Zo?qe zU-4XkXulo zC95v^01i52a>H(kWR9$Zi0|aav8h_Q;S0jVev`A1Lm=;f0amHr!cri#>rE22hq0u%ii08m zlEBO#ay_C}$J$`)!L#or&nNAG{m@D_ee+5 z?Q_Rl49aKw8+54{TfW-9G3|7sTx{tU9AG}DEhm4Y05!R~ii7-`O==3;({1F!;yAMd zsXmbry32EDPApb_}L-gbPHLeBn&;N~uJWtv5t{@7hm5r=rs;IV62?prvz}D;Vx}k~}Ya$lA@Jd$KQlMPE8c}fg z<{svIe_a|_FLvyq!R1p*1u>QxaFDOf|&BT%ysd6 z*CzvN%4M}QQH<#&rhjs$#Ugjhrp`O#{M4}qx{`gFh#7F@GfB^g+YuHmTL`Jog1hMQ zRGm?_)?fHLLY7ETJ`g_RAli_3jJ>4a^;%tl#(QY_1V&>pqj}GS$C3L{lYC`DD-54j z2Pj^~x~`^u;iI~4BZn?p#~7@ix~}R@yPRhZV%(pgCHCJUsteDZ_7wE+vwtoM@rCUC ze2$SI2A>^D0w+5O;bn15!toQh2KQl8-sj{(Kj;4le2BlsCCui$9hC^4U(+(vjqEC3 zh{d!`C3s)Jq}1JyZ@$>`p8(G^`||9sdksHZKJRPitf<=ed13;fyZySN!xA3fN9-wy z{R~cGa=;+M&<4Dj#RoX@$6Y|YZ z$y0`B;;Rw1S%Vm;f}nZRyl+afSp!o4Lk5{MY8TwJaWaqFyM zfR!h66y|i{JpA!tU}4CA+ivJKuQaU!+9Nz^H8uRui}6`;B>gsp(Ncl{4dR9vdlcGy zgJLn^I(X-83F`lR*`Jy%<~u9@Rp;$ z%($a`-$TO-I4unT1PzU|0IbcXknFqYXP5vH$27PD3KE!8uEBmz zQM;8l?^?lJATTmNf4>=a%=Qa_t5@$u2i zJ|_sO-Y!Gu;t>QWsriUIK%IGPkgtqq7R6Waj?RUPtvp2+Tbkja?6R)5;xzr&)Mzg^ zHma(zI8M1bsW}`!QDj2DqeGa1-2*%7*y(lteJ%cj;D;DMkl3O(7fL5*l9a?UNoT#Z z#hpmkxWPqRb`gu1H&m0_Txmo$gl5`V+~gdGNU`Lu!xE=*KPTR$);WtBqkz+yNfu}v z(Wf$KIjvSS$d7If@G}Ce(t4z@&dg_jELMG6xQ}!dXZ9c$+kbG+9orx% zKKAekl?`kTOA3Vmgpmc@8>T|nB z`%(YZDA;tKOXl<;3g02^dc8zl^|`DUx?V(Uzki(KJ?dRS?F@~{oVEGf?aO&Bx&8jp zK9uuW)|}}xs)s6M`uXU6tUfLUqJ0FX!-6)usdGHm*1q2p<_Nx@sobTObR~Zb{pUsi zJMO-by7ooc&q`PthE297T~^P@o`q# zhvqp5PAuHMx1Cf57VJhNj4KJ*)Jxsxn#8nn8umX%rnD1dQW#0TIDQ`O8Lrma#IbjJ zLn4;uMIvB3ObnD${Qi_uB9zGCyKT3rZu6VmvY6tAH)|R`EiMAWqM)A}=Dej@@SmtW z!FV6$4S8?xwX6i&62@}X*vV^L*1aXw6uxF0KeblK$jhKPB6o#gJWL+BXI{&M7`K(6auWIH0Jh`tVK9gI}0l zVUW2xHyM9CzfHRCgZI6wTP}X*MEA}DcFMa4CNb`Y&Zeo5uiTG(GUD^Q0DNt|GcwOy z0Lb=7u^e}BO5yR2Rxq=I*gi(^S{r%iD^vtuC;jwJ$Dq?`>Z9Nr+2-&SF3Qpj-*{XR z(IvuZ_2x`w3(nVhVmKZKK9Q4;mwh$E>$ilzQa?-lpOL11@AZC3)?;qJ7hY-k1qk49 z|MR62-&NCblyg%i6w}dg$mjaJt55E?m+;v2|8ea7e~`_8oNbF_o*m%>VnjaJvGiY2 zU#&Zk1V9i3jhJFX(Z6cGX~u@ckvG73L?S3?Y|Ygge(by+a>~1S+0wCDQy^-Gg`#%J z(lTrh z{rjnEhPMiW}~x%yn;3YHPvL_ znI7#OQnRKUHaVQv7Ny%JfAs1@I@@hcE^(k_q9bZuv_=d6egCzDVk=`J6p|lG1U?4W znza2aTq-$H)*c(EDM+Rv+awH@#@T*lLOeDZDhXh~Sh*Hp_iaA6C?lgCpuAE

BoundingBox, + /// Recursive box approximation: split the bounds wherever a wide empty + /// gap separates geometry, so L- and T-shapes decompose into a small set of + /// boxes (one cube mesh instanced by transforms downstream). + BoxSet, } [Serializable] @@ -71,6 +75,9 @@ public sealed class RemeshSettings // What the remesh stage builds from the capture: the voxelized geometry, or a // bounding-box proxy per captured model (keep-hierarchy) / for the whole weld. public RemeshShape sourceShape = RemeshShape.LOD0; + // Box-set shape: the smallest EMPTY gap (fraction of a box's extent) that still + // splits it in two; smaller values chase finer protrusions with more boxes. + public float boxSplitGap = 0.2f; // Keep hierarchy: remesh every captured node SEPARATELY and save the result as a // hierarchy of meshes under one root (per-node materials, local transforms kept), // instead of welding everything into one _LOD0 mesh with one baked material. diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index df7ce58f..bc5c45a3 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -126,12 +126,17 @@ public void OnDrawSidebar() if (StageHeader(RemeshPipeline.Stage.Remesh)) { settings.sourceShape = (RemeshShape)EditorGUILayout.EnumPopup(new GUIContent("Shape", "LOD0: voxelize the captured geometry. Bounding box: replace every captured model with its axis-aligned box — a proxy for far LODs; " + - "materials and lighting still bake from the original geometry, projected onto the box."), settings.sourceShape); + "materials and lighting still bake from the original geometry, projected onto the box. Box set: recursively split wherever a wide empty " + + "gap separates geometry, decomposing L- and T-shapes into a small union of boxes."), settings.sourceShape); + if (settings.sourceShape == RemeshShape.BoxSet) + settings.boxSplitGap = EditorGUILayout.Slider(new GUIContent("Split gap", + "The smallest empty gap (a fraction of a box's extent) that still splits it in two. Lower values chase finer protrusions with more boxes."), + settings.boxSplitGap, 0.05f, 0.5f); settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", "Remesh every renderer SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); - using (new EditorGUI.DisabledScope(settings.sourceShape == RemeshShape.BoundingBox)) { + using (new EditorGUI.DisabledScope(settings.sourceShape != RemeshShape.LOD0)) { settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); From 684bda08dfa0759afe8507505121142f7ddcb2a6 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 19:37:56 +0200 Subject: [PATCH 065/130] =?UTF-8?q?fix(remesh):=20box=20set=20partitions?= =?UTF-8?q?=20by=20renderer=20=E2=80=94=20no=20more=20collapse=20into=20on?= =?UTF-8?q?e=20box?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The weld-lane box set split the whole capture as one point cloud, and a dense courtyard model fills its bounds so completely that no gap ever reached the threshold — everything collapsed into a single box. The primary partition is now per renderer node: every mesh with a renderer keeps its own box, the recursive gap split running inside each renderer's geometry only (a renderer's own L-shape still falls apart into arms). The weld source stays the full capture, so the bake projects every renderer's materials onto the merged box set as usual; keep-hierarchy already partitioned per node and is unchanged. --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 16 +++++++-------- Editor/RemeshPipeline.cs | 34 +++++++++++++++++++++++++++---- Editor/RemeshSource.cs | 31 ++++++++++++++++++++++++++++ Editor/Tools/RemeshBakeTool.cs | 4 ++-- 5 files changed, 72 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b7c7ea..81817837 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **Box set partitions by renderer — no more collapse into one box.** The weld-lane box set split the WHOLE capture as one point cloud, and a dense courtyard model fills its bounds so completely that no gap ever reached the threshold — everything collapsed into a single box. The primary partition is now per renderer node (every mesh with a renderer keeps its own box), with the recursive gap split running inside each renderer's geometry only. Keep-hierarchy already partitioned per node and is unchanged. - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 5d2bd47d..add00314 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -36,14 +36,14 @@ settings, marked "settings changed" in its header) and clears everything after i far-LOD proxy whose faces still receive the original's materials and baked lighting through the normal projection (weld: one box for the whole model; keep-hierarchy: one box per node), or - *Box set* recursively decompose the capture into a union of boxes: every - box scans its axes for the widest empty gap between geometry and splits - there (a *Split gap* fraction gates the recursion), so L- and T-shaped - buildings fall apart into their arms and detached canopies become their - own boxes — plain cubes, one mesh instanced by transforms, never special - primitives. The stage status reports the box count and the share of the - original bounds' volume the boxes cover; the bake projects the original's - materials and lighting onto them exactly as onto a single box. + *Box set* a union of boxes partitioned BY RENDERER first — every node with a + renderer keeps its own box(es), the recursive gap split running inside each + renderer's geometry (a *Split gap* fraction gates it) so L- and T-shaped + meshes fall apart into their arms — plain cubes, one mesh instanced by + transforms, never special primitives. The stage status reports the box + count and the share of the original bounds' volume the boxes cover; the + bake projects the original's materials and lighting onto them exactly as + onto a single box. SkinnedMeshRenderers are baked at their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 93aacb8e..21dd19c4 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -215,22 +215,41 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; var shape = options.sourceShape; int boxes = 0; double boxVolume = 0; + // Weld + box set: the primary partition is BY RENDERER — every node with a + // renderer keeps its own box(es), the recursive gap split running INSIDE + // each renderer's points (a courtyard model otherwise fills its bounds so + // densely that the split finds no gap and the whole set collapses into one + // box). The weld SOURCE stays the full capture, so the bake projects every + // renderer's materials onto the merged box set as usual. + List weldLeaves = null; + if (!hierarchy && shape == RemeshShape.BoxSet) { + Report("Decomposing renderers into boxes…"); + weldLeaves = new List(); + foreach (var renderer in renderers) { + token.ThrowIfCancellationRequested(); + var points = RemeshSource.CollectPoints(worldToRoot, renderer); + if (points.Length == 0) continue; + SplitRecursive(points, 0, points.Length, options.boxSplitGap, weldLeaves); + } + if (weldLeaves.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); + } for (int i = 0; i < captures.Count; ++i) { var node = captures[i]; foreach (var warning in node.source.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } token.ThrowIfCancellationRequested(); Report(hierarchy ? $"{(shape == RemeshShape.LOD0 ? "Voxel remeshing" : "Bounding")} {node.name} ({i + 1}/{captures.Count})…" - : (shape == RemeshShape.LOD0 ? "Voxel remeshing…" : shape == RemeshShape.BoundingBox ? "Building the bounding-box proxy…" : "Decomposing into boxes…")); + : (shape == RemeshShape.LOD0 ? "Voxel remeshing…" : shape == RemeshShape.BoundingBox ? "Building the bounding-box proxy…" : "Assembling the renderer box set…")); var captured = node.source; var stats = shape == RemeshShape.BoxSet ? new BoxStats() : null; // The box shapes replace the voxelizer with the capture's own bounds — - // a single AABB, or a recursive gap-split decomposition into a box set; + // a single AABB, or the renderer-partitioned gap-split box set; // materials and lighting still bake from the captured geometry, // projected onto the boxes downstream. node.voxel = await Task.Run(() => shape == RemeshShape.LOD0 ? RemeshNative.Voxelize(captured.positions, captured.indices, options, token) : shape == RemeshShape.BoundingBox ? BoxMesh(captured.positions) + : weldLeaves != null ? AssembleBoxes(weldLeaves, stats) : BoxSetMesh(captured.positions, options.boxSplitGap, stats), token); if (stats != null) { boxes += stats.boxCount; boxVolume += stats.volumeFraction; } sourceTriangles += captured.indices.Length / 3; @@ -283,6 +302,15 @@ internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, float m { var leaves = new List(); SplitRecursive(positions, 0, positions.Length, minGap, leaves); + return AssembleBoxes(leaves, stats); + } + + // One merged mesh of the leaf boxes: 8 vertices + 12 triangles per box, indices + // offset per leaf — the same shape every other stage consumes. The stats carry + // the box count and the covered share of the union bounds' volume (gap splits + // never overlap, so Σleaf volumes / union volume is the occupancy). + internal static RemeshNative.IndexedMesh AssembleBoxes(List leaves, BoxStats stats) + { double total = 0; Bounds initial = leaves[0]; foreach (var box in leaves) { @@ -292,8 +320,6 @@ internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, float m double whole = Volume(initial); stats.boxCount = leaves.Count; stats.volumeFraction = whole > 0 ? (float)(total / whole) : 1f; - // One merged mesh of all leaves: 8 vertices + 12 triangles per box, indices - // offset per leaf — the same shape every other stage consumes. var vertices = new Vector3[leaves.Count * 8]; var indices = new int[leaves.Count * 36]; int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 52005367..3b648c26 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -97,6 +97,37 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) return Capture(root.transform.worldToLocalMatrix, CollectRenderers(root, lod0Only)); } + /// + /// One renderer's vertices in the space whose world→local matrix is worldToSpace — + /// the point cloud the box decomposition partitions BY RENDERER, without any + /// material readback. Empty when the renderer contributes nothing. Main thread. + /// + public static Vector3[] CollectPoints(Matrix4x4 worldToSpace, Renderer renderer) + { + Mesh mesh; + if (renderer is SkinnedMeshRenderer skin) { + mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; + var bones = skin.bones; + skin.bones = Array.Empty(); + skin.bones = bones; + skin.BakeMesh(mesh); + } + else if (renderer is MeshRenderer) { + var filter = renderer.GetComponent(); + if (!filter || !filter.sharedMesh) return Array.Empty(); + mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); + } + else return Array.Empty(); + try { + var p = mesh.vertices; + var transform = worldToSpace * renderer.localToWorldMatrix; + var points = new Vector3[p.Length]; + for (int i = 0; i < p.Length; ++i) points[i] = transform.MultiplyPoint3x4(p[i]); + return points; + } + finally { Object.DestroyImmediate(mesh); } + } + /// /// Snapshot of the given renderers expressed in the space whose world→local /// matrix is worldToSpace. Returns null when they contribute no triangles and diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index bc5c45a3..33b98e1f 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -126,8 +126,8 @@ public void OnDrawSidebar() if (StageHeader(RemeshPipeline.Stage.Remesh)) { settings.sourceShape = (RemeshShape)EditorGUILayout.EnumPopup(new GUIContent("Shape", "LOD0: voxelize the captured geometry. Bounding box: replace every captured model with its axis-aligned box — a proxy for far LODs; " + - "materials and lighting still bake from the original geometry, projected onto the box. Box set: recursively split wherever a wide empty " + - "gap separates geometry, decomposing L- and T-shapes into a small union of boxes."), settings.sourceShape); + "materials and lighting still bake from the original geometry, projected onto the box. Box set: one box per renderer node, recursively " + + "split inside wherever a wide empty gap separates that renderer's geometry (L-/T-shapes fall apart into arms)."), settings.sourceShape); if (settings.sourceShape == RemeshShape.BoxSet) settings.boxSplitGap = EditorGUILayout.Slider(new GUIContent("Split gap", "The smallest empty gap (a fraction of a box's extent) that still splits it in two. Lower values chase finer protrusions with more boxes."), From f837d780704b8ccbbdc51fe3ce520d457c3fd387 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 19:43:19 +0200 Subject: [PATCH 066/130] fix(remesh): one hostile mesh no longer kills the capture; blocked imports read through their importer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A non-triangle submesh or a mesh without UV0 threw and aborted the entire scene-block run. Non-triangle submeshes now drop out individually (the renderer survives on its triangle submeshes; a renderer with none left is skipped), UV0-less renderers skip with a warning, and every renderer is isolated so any single failure costs its own exclusion. Unity 6000.2's read-only MeshData still throws isReadable-is-false for some Read/Write-disabled imports; when it does, the read falls back to flipping that file's ModelImporter to Read/Write, reading, and restoring it — a reimport pair only for files the MeshData path cannot serve, never the flip-everything cost that was reverted before. --- CHANGELOG.md | 2 + Editor/Framework/UvCanvasView.cs | 36 +++++++++++++-- Editor/RemeshSource.cs | 78 ++++++++++++++++++++------------ 3 files changed, 84 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81817837..113b181a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **One hostile mesh no longer kills the whole capture.** A non-triangle submesh (`WindowsCurtain_15`'s line geometry) or a mesh without UV0 threw and aborted the entire scene-block run. Non-triangle submeshes now drop out individually (the renderer survives on its triangle submeshes; a renderer with none left is skipped), UV0-less renderers skip with a warning, and every renderer is isolated so an unreadable import costs its own exclusion — never the capture. +- **Read/Write-disabled imports the MeshData path refuses are read through their importer.** Unity 6000.2's `AcquireReadOnlyMeshData` still throws `isReadable is false` for some imports. When it does, the read falls back to flipping THAT file's ModelImporter to Read/Write, reading, and restoring it — a reimport pair only for files the MeshData path cannot serve (typically none), never the flip-everything cost that was reverted before. - **Box set partitions by renderer — no more collapse into one box.** The weld-lane box set split the WHOLE capture as one point cloud, and a dense courtyard model fills its bounds so completely that no gap ever reached the threshold — everything collapsed into a single box. The primary partition is now per renderer node (every mesh with a renderer keeps its own box), with the recursive gap split running inside each renderer's geometry only. Keep-hierarchy already partitioned per node and is unchanged. - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 791ae569..0da91804 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1216,8 +1216,39 @@ public static Mesh MakeReadableCopy(Mesh src) { var dst = new Mesh(); dst.indexFormat = src.indexFormat; - if (!src.isReadable) - return MakeReadableCopyFromMeshData(src, dst); + if (!src.isReadable) { + try { + return MakeReadableCopyFromMeshData(src, dst); + } + catch (Exception e) when (e.Message != null && e.Message.IndexOf("isReadable", StringComparison.OrdinalIgnoreCase) >= 0) { + // Unity 6000.2's read-only MeshData still refuses some Read/Write-disabled + // imports. The only sanctioned read left is through the importer itself: + // flip THIS file's Read/Write for the read and put it back afterwards — + // a reimport pair only for files the MeshData path cannot serve, never + // for the readable or MeshData-served majority. + string path = AssetDatabase.GetAssetPath(src); + if (!(AssetImporter.GetAtPath(path) is ModelImporter model)) + throw new InvalidOperationException(src.name + " is Read/Write-disabled with no importer to read it through; enable Read/Write on its import or drop it from the capture.", e); + model.isReadable = true; + model.SaveAndReimport(); + try { + FillReadableCopy(src, dst); + return dst; + } + finally { + if (AssetImporter.GetAtPath(path) is ModelImporter restore) { + restore.isReadable = false; + restore.SaveAndReimport(); + } + } + } + } + FillReadableCopy(src, dst); + return dst; + } + + static void FillReadableCopy(Mesh src, Mesh dst) + { dst.SetVertices(new List(src.vertices)); if (src.normals != null && src.normals.Length > 0) dst.SetNormals(new List(src.normals)); if (src.tangents != null && src.tangents.Length > 0) dst.SetTangents(new List(src.tangents)); @@ -1248,7 +1279,6 @@ public static Mesh MakeReadableCopy(Mesh src) dst.subMeshCount = src.subMeshCount; for (int s = 0; s < src.subMeshCount; s++) dst.SetTriangles(src.GetTriangles(s), s); dst.bounds = src.bounds; - return dst; } // The classic vertex getters log "Not allowed to access" and return EMPTY arrays diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 3b648c26..d7e40593 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -147,36 +147,52 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende string[] warnings; using (var reader = new Reader()) { foreach (var renderer in renderers) { - // A skinned source is baked at its current pose into a fresh runtime - // mesh. BakeMesh bakes the LAST EVALUATED skinning, which in edit mode - // can predate the current bone transforms — every part then lands at - // its authored origin instead of its posed place, so the bone list is - // reassigned first to mark the skinning dirty and force a re-evaluation. - // The result stays in the renderer's local space with no transform - // scale, and the shared path below applies the transform exactly once, - // like a static mesh under the same node. - Mesh mesh; - if (renderer is SkinnedMeshRenderer skin) { - mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; - var bones = skin.bones; - skin.bones = Array.Empty(); - skin.bones = bones; - skin.BakeMesh(mesh); - if (skin.sharedMesh) mesh.name = skin.sharedMesh.name; - } - else if (renderer is MeshRenderer) { - var filter = renderer.GetComponent(); - if (!filter || !filter.sharedMesh) continue; - // An Instantiate clone of a Read/Write-disabled import carries no CPU data, - // but editor code can still read the imported asset; copy from that. - mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); - } - else continue; + // One hostile mesh (line submeshes, no UV0, an unreadable import) + // must cost its own exclusion, never the whole scene-block capture: + // every renderer is isolated, and recoverable offenders degrade to + // a warning + skip. + Mesh mesh = null; try { + // A skinned source is baked at its current pose into a fresh runtime + // mesh. BakeMesh bakes the LAST EVALUATED skinning, which in edit mode + // can predate the current bone transforms — every part then lands at + // its authored origin instead of its posed place, so the bone list is + // reassigned first to mark the skinning dirty and force a re-evaluation. + // The result stays in the renderer's local space with no transform + // scale, and the shared path below applies the transform exactly once, + // like a static mesh under the same node. + if (renderer is SkinnedMeshRenderer skin) { + mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; + var bones = skin.bones; + skin.bones = Array.Empty(); + skin.bones = bones; + skin.BakeMesh(mesh); + if (skin.sharedMesh) mesh.name = skin.sharedMesh.name; + } + else if (renderer is MeshRenderer) { + var filter = renderer.GetComponent(); + if (!filter || !filter.sharedMesh) continue; + // An Instantiate clone of a Read/Write-disabled import carries no CPU data, + // but editor code can still read the imported asset; copy from that. + mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); + } + else continue; + // Non-triangle submeshes (curtain lines, quad exports) drop out of the + // capture; the renderer survives on its triangle submeshes alone and is + // skipped with a warning when none remain. + int triangleSubmeshes = 0; for (int sub = 0; sub < mesh.subMeshCount; ++sub) - if (mesh.GetTopology(sub) != MeshTopology.Triangles) throw new InvalidOperationException(renderer.name + ": only triangle meshes are supported."); - if (mesh.uv.Length != mesh.vertexCount) - throw new InvalidOperationException(renderer.name + " needs source UV0 for material transfer."); + if (mesh.GetTopology(sub) == MeshTopology.Triangles) ++triangleSubmeshes; + if (triangleSubmeshes == 0) { + reader.warnings.Add(renderer.name + ": no triangle submeshes, skipped."); + continue; + } + if (triangleSubmeshes < mesh.subMeshCount) + reader.warnings.Add(renderer.name + ": " + (mesh.subMeshCount - triangleSubmeshes) + " non-triangle submesh(es) skipped."); + if (mesh.uv.Length != mesh.vertexCount) { + reader.warnings.Add(renderer.name + ": no source UV0 for material transfer, skipped."); + continue; + } if (mesh.normals.Length != mesh.vertexCount) mesh.RecalculateNormals(); if (mesh.tangents.Length != mesh.vertexCount) mesh.RecalculateTangents(); var p = mesh.vertices; var n = mesh.normals; var t = mesh.tangents; @@ -220,6 +236,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende else for (int i = 0; i < p.Length; ++i) colors.Add(Color.white); var shared = renderer.sharedMaterials; for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + if (mesh.GetTopology(sub) != MeshTopology.Triangles) continue; if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); if (!materialIds.TryGetValue(shared[sub], out int material)) { material = materials.Count; @@ -235,7 +252,10 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende } } } - finally { Object.DestroyImmediate(mesh); } + catch (InvalidOperationException e) { + reader.warnings.Add(renderer.name + ": " + e.Message + " Skipped."); + } + finally { if (mesh) Object.DestroyImmediate(mesh); } } warnings = reader.warnings.ToArray(); } From 3f51f48dfa8a36f0ce3bcf7356a487acf5132974 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 20:11:46 +0200 Subject: [PATCH 067/130] fix(remesh): box set samples the surface and pads thin leaves MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The gap histograms ran on raw vertices, and the interior of a large flat quad — four corner points — reads as emptiness, so boxes split through live geometry in phony places. The decomposition now works over an area-weighted stratified barycentric sample cloud (deterministic, about three samples per triangle, clamped) plus the vertices, and non-triangle submeshes stop contributing garbage points. Paper-thin leaves — a plaza's or road atlas's tight AABB with a zero axis — rendered as zero-thickness sheets that vanish edge-on and z-fight; degenerate axes now get a minimal slab, 0.4 percent of the leaf's largest side, centred on the true extent. --- CHANGELOG.md | 1 + Editor/RemeshPipeline.cs | 77 ++++++++++++++++++++++++++++++++++------ Editor/RemeshSource.cs | 26 +++++++++----- 3 files changed, 85 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 113b181a..55e63008 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **Box set samples the surface, not just vertices; thin leaves get thickness.** The gap histograms ran on raw vertices, and the interior of a large flat quad — four corner points — read as emptiness, so boxes split through live geometry in phony places. The decomposition now works over an area-weighted, stratified barycentric sample cloud (deterministic, ~3 samples per triangle clamped 512–16384) plus the vertices. Paper-thin leaves (plazas, road atlases, decals — a tight AABB with a zero axis) render as zero-thickness sheets and z-fight; degenerate axes now get a minimal slab (0.4% of the leaf's largest side), and non-triangle submeshes no longer contribute garbage points. - **One hostile mesh no longer kills the whole capture.** A non-triangle submesh (`WindowsCurtain_15`'s line geometry) or a mesh without UV0 threw and aborted the entire scene-block run. Non-triangle submeshes now drop out individually (the renderer survives on its triangle submeshes; a renderer with none left is skipped), UV0-less renderers skip with a warning, and every renderer is isolated so an unreadable import costs its own exclusion — never the capture. - **Read/Write-disabled imports the MeshData path refuses are read through their importer.** Unity 6000.2's `AcquireReadOnlyMeshData` still throws `isReadable is false` for some imports. When it does, the read falls back to flipping THAT file's ModelImporter to Read/Write, reading, and restoring it — a reimport pair only for files the MeshData path cannot serve (typically none), never the flip-everything cost that was reverted before. - **Box set partitions by renderer — no more collapse into one box.** The weld-lane box set split the WHOLE capture as one point cloud, and a dense courtyard model fills its bounds so completely that no gap ever reached the threshold — everything collapsed into a single box. The primary partition is now per renderer node (every mesh with a renderer keeps its own box), with the recursive gap split running inside each renderer's geometry only. Keep-hierarchy already partitioned per node and is unchanged. diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 21dd19c4..037b9a3a 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -227,9 +227,10 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken weldLeaves = new List(); foreach (var renderer in renderers) { token.ThrowIfCancellationRequested(); - var points = RemeshSource.CollectPoints(worldToRoot, renderer); - if (points.Length == 0) continue; - SplitRecursive(points, 0, points.Length, options.boxSplitGap, weldLeaves); + RemeshSource.CollectSurface(worldToRoot, renderer, out var positions, out var surface); + if (positions == null || surface == null || surface.Length == 0) continue; + var samples = SurfaceSamples(positions, surface); + SplitRecursive(samples, 0, samples.Length, options.boxSplitGap, weldLeaves); } if (weldLeaves.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); } @@ -250,7 +251,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken shape == RemeshShape.LOD0 ? RemeshNative.Voxelize(captured.positions, captured.indices, options, token) : shape == RemeshShape.BoundingBox ? BoxMesh(captured.positions) : weldLeaves != null ? AssembleBoxes(weldLeaves, stats) - : BoxSetMesh(captured.positions, options.boxSplitGap, stats), token); + : BoxSetMesh(captured.positions, captured.indices, options.boxSplitGap, stats), token); if (stats != null) { boxes += stats.boxCount; boxVolume += stats.volumeFraction; } sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; @@ -298,22 +299,62 @@ internal static RemeshNative.IndexedMesh BoxMesh(Vector3[] positions) // buildings decompose into their arms at the empty notches, a detached canopy // splits off on its own — unions of plain boxes, never special primitives, so // every leaf is one cube mesh instanced by a transform. - internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, float minGap, BoxStats stats) + internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, int[] triangles, float minGap, BoxStats stats) { + var samples = SurfaceSamples(positions, triangles); var leaves = new List(); - SplitRecursive(positions, 0, positions.Length, minGap, leaves); + SplitRecursive(samples, 0, samples.Length, minGap, leaves); return AssembleBoxes(leaves, stats); } + // Area-weighted stratified surface samples plus the original vertices. Raw + // vertices misrepresent occupancy — the interior of a large flat quad is four + // corner points, and the histograms read that emptiness as a gap, splitting + // boxes through live geometry. Deterministic (fixed seed). + internal static Vector3[] SurfaceSamples(Vector3[] positions, int[] triangles) + { + int faces = triangles.Length / 3; + var areas = new double[faces]; + double total = 0; + for (int f = 0; f < faces; ++f) { + int a = triangles[f * 3], b = triangles[f * 3 + 1], c = triangles[f * 3 + 2]; + areas[f] = (double)(Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).magnitude * 0.5f); + total += areas[f]; + } + var samples = new List(positions.Length + 4096); + samples.AddRange(positions); + if (total <= 0 || faces == 0) return samples.ToArray(); + int target = Mathf.Clamp(faces * 3, 512, 16384); + var random = new System.Random(0x5eed); + double accumulator = 0; int emitted = 0; + for (int f = 0; f < faces && emitted < target; ++f) { + accumulator += areas[f]; + int want = Mathf.Min((int)(accumulator / total * target) - emitted, target - emitted); + int a = triangles[f * 3], b = triangles[f * 3 + 1], c = triangles[f * 3 + 2]; + for (int s = 0; s < want; ++s) { + float r1 = (float)random.NextDouble(), r2 = (float)random.NextDouble(); + float q = Mathf.Sqrt(r1); + float u = 1f - q, v = q * (1f - r2), w = q * r2; + samples.Add(positions[a] * u + positions[b] * v + positions[c] * w); + } + emitted += want; + } + return samples.ToArray(); + } + // One merged mesh of the leaf boxes: 8 vertices + 12 triangles per box, indices - // offset per leaf — the same shape every other stage consumes. The stats carry - // the box count and the covered share of the union bounds' volume (gap splits - // never overlap, so Σleaf volumes / union volume is the occupancy). + // offset per leaf — the same shape every other stage consumes. Paper-thin + // leaves (ground planes, road atlases, decals) get a minimal thickness so they + // render as slabs instead of zero-thickness sheets. The stats carry the box + // count and the covered share of the union bounds' volume (gap splits never + // overlap, so Σleaf volumes / union volume is the occupancy). internal static RemeshNative.IndexedMesh AssembleBoxes(List leaves, BoxStats stats) { double total = 0; Bounds initial = leaves[0]; - foreach (var box in leaves) { + for (int i = 0; i < leaves.Count; ++i) { + var box = PadThin(leaves[i]); + leaves[i] = box; total += Volume(box); initial.Encapsulate(box); } @@ -336,6 +377,22 @@ internal static RemeshNative.IndexedMesh AssembleBoxes(List leaves, BoxS return new RemeshNative.IndexedMesh { positions = vertices, indices = indices }; } + // Degenerate axes (a flat plaza's height, a decal's depth) become a minimal + // visible slab: 0.4% of the leaf's largest side, centred on the true extent. + static Bounds PadThin(Bounds box) + { + var size = box.size; + float maxSide = Mathf.Max(size.x, Mathf.Max(size.y, size.z)); + if (maxSide <= 0f) return box; + float minSide = maxSide * 0.004f; + if (size.x >= minSide && size.y >= minSide && size.z >= minSide) return box; + var center = box.center; + if (size.x < minSide) { center.x = (box.min.x + box.max.x) * 0.5f; size.x = minSide; } + if (size.y < minSide) { center.y = (box.min.y + box.max.y) * 0.5f; size.y = minSide; } + if (size.z < minSide) { center.z = (box.min.z + box.max.z) * 0.5f; size.z = minSide; } + return new Bounds { center = center, extents = size * 0.5f }; + } + static double Volume(Bounds box) { var s = box.size; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index d7e40593..3389cb51 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -98,12 +98,14 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) } /// - /// One renderer's vertices in the space whose world→local matrix is worldToSpace — - /// the point cloud the box decomposition partitions BY RENDERER, without any - /// material readback. Empty when the renderer contributes nothing. Main thread. + /// One renderer's vertices AND triangle indices (non-triangle submeshes dropped) + /// in the space whose world→local matrix is worldToSpace — the geometry the box + /// decomposition partitions BY RENDERER, without any material readback. Null when + /// the renderer contributes no triangles. Main thread. /// - public static Vector3[] CollectPoints(Matrix4x4 worldToSpace, Renderer renderer) + public static void CollectSurface(Matrix4x4 worldToSpace, Renderer renderer, out Vector3[] positions, out int[] triangles) { + positions = null; triangles = null; Mesh mesh; if (renderer is SkinnedMeshRenderer skin) { mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; @@ -114,16 +116,22 @@ public static Vector3[] CollectPoints(Matrix4x4 worldToSpace, Renderer renderer) } else if (renderer is MeshRenderer) { var filter = renderer.GetComponent(); - if (!filter || !filter.sharedMesh) return Array.Empty(); + if (!filter || !filter.sharedMesh) return; mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); } - else return Array.Empty(); + else return; try { var p = mesh.vertices; var transform = worldToSpace * renderer.localToWorldMatrix; - var points = new Vector3[p.Length]; - for (int i = 0; i < p.Length; ++i) points[i] = transform.MultiplyPoint3x4(p[i]); - return points; + positions = new Vector3[p.Length]; + for (int i = 0; i < p.Length; ++i) positions[i] = transform.MultiplyPoint3x4(p[i]); + var tris = new List(mesh.triangles.Length); + for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + if (mesh.GetTopology(sub) != MeshTopology.Triangles) continue; + var t = mesh.GetTriangles(sub); + for (int i = 0; i < t.Length; ++i) tris.Add(t[i]); + } + triangles = tris.ToArray(); } finally { Object.DestroyImmediate(mesh); } } From 9f0c5b61159286c312c0b32c812608a9b9e3cd35 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Wed, 30 Sep 2026 21:12:41 +0200 Subject: [PATCH 068/130] fix(remesh): an unsplit box is Unity's own renderer bbox; splits stay strictly planar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A renderer whose geometry needs no split now takes renderer.bounds directly — the bbox the game already has, expressed in the capture space through its eight corners — instead of a recomputed point-cloud box. Splits remain axis-aligned planes through the centre of the widest empty slab, so every leaf face lies on a geometry plane, and split children take their tight boxes from real surface samples. --- CHANGELOG.md | 1 + Editor/RemeshPipeline.cs | 15 +++++++++++---- Editor/RemeshSource.cs | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55e63008..c4435801 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed +- **An unsplit box is Unity's own renderer bbox; splits stay strictly planar.** A renderer whose geometry needs no split now takes `renderer.bounds` directly (the bbox the game already has, expressed in the capture space through its 8 corners) instead of a recomputed point-cloud box. Splits remain axis-aligned planes through the centre of the widest empty slab, so every leaf face lies on a geometry plane; split children take their tight boxes from real geometry. - **Box set samples the surface, not just vertices; thin leaves get thickness.** The gap histograms ran on raw vertices, and the interior of a large flat quad — four corner points — read as emptiness, so boxes split through live geometry in phony places. The decomposition now works over an area-weighted, stratified barycentric sample cloud (deterministic, ~3 samples per triangle clamped 512–16384) plus the vertices. Paper-thin leaves (plazas, road atlases, decals — a tight AABB with a zero axis) render as zero-thickness sheets and z-fight; degenerate axes now get a minimal slab (0.4% of the leaf's largest side), and non-triangle submeshes no longer contribute garbage points. - **One hostile mesh no longer kills the whole capture.** A non-triangle submesh (`WindowsCurtain_15`'s line geometry) or a mesh without UV0 threw and aborted the entire scene-block run. Non-triangle submeshes now drop out individually (the renderer survives on its triangle submeshes; a renderer with none left is skipped), UV0-less renderers skip with a warning, and every renderer is isolated so an unreadable import costs its own exclusion — never the capture. - **Read/Write-disabled imports the MeshData path refuses are read through their importer.** Unity 6000.2's `AcquireReadOnlyMeshData` still throws `isReadable is false` for some imports. When it does, the read falls back to flipping THAT file's ModelImporter to Read/Write, reading, and restoring it — a reimport pair only for files the MeshData path cannot serve (typically none), never the flip-everything cost that was reverted before. diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 037b9a3a..3580340d 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -230,7 +230,10 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken RemeshSource.CollectSurface(worldToRoot, renderer, out var positions, out var surface); if (positions == null || surface == null || surface.Length == 0) continue; var samples = SurfaceSamples(positions, surface); - SplitRecursive(samples, 0, samples.Length, options.boxSplitGap, weldLeaves); + // The unsplit leaf IS Unity's own renderer bbox — no recomputed box + // for a node the game already measures. + SplitRecursive(samples, 0, samples.Length, options.boxSplitGap, weldLeaves, + RemeshSource.RendererBounds(worldToRoot, renderer)); } if (weldLeaves.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); } @@ -401,7 +404,11 @@ static double Volume(Bounds box) const int BoxHistogramBins = 32; - static void SplitRecursive(Vector3[] points, int start, int count, float minGap, List leaves) + // seed is the leaf used when no split fires — Unity's own renderer bounds for a + // whole renderer, so an unsplit node is exactly the bbox the game already has. + // Splits stay strictly axis-aligned planes through the centre of the widest + // empty slab, so every leaf face lies on a geometry plane. + static void SplitRecursive(Vector3[] points, int start, int count, float minGap, List leaves, Bounds? seed = null) { var mn = points[start]; var mx = mn; @@ -435,7 +442,7 @@ static void SplitRecursive(Vector3[] points, int start, int count, float minGap, if (gap > bestGap) { bestGap = gap; bestAxis = axis; bestSplitBin = widestAt + widest / 2; } } if (bestAxis < 0 || bestGap < minGap) { - leaves.Add(new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); + leaves.Add(seed ?? new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); return; } float axisSize = bestAxis == 0 ? extent.x : bestAxis == 1 ? extent.y : extent.z; @@ -449,7 +456,7 @@ static void SplitRecursive(Vector3[] points, int start, int count, float minGap, int leftCount = left - start; if (leftCount == 0 || leftCount == count) { // Degenerate partition (all points in one bin run) — keep the box tight. - leaves.Add(new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); + leaves.Add(seed ?? new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); return; } SplitRecursive(points, start, leftCount, minGap, leaves); diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 3389cb51..209cc6a2 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -97,6 +97,26 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) return Capture(root.transform.worldToLocalMatrix, CollectRenderers(root, lod0Only)); } + /// + /// The renderer's own world bounds expressed in the space whose world→local + /// matrix is worldToSpace (the 8 corners transformed, re-axised) — Unity's + /// bbox, not a recomputed one. Main thread. + /// + public static Bounds RendererBounds(Matrix4x4 worldToSpace, Renderer renderer) + { + var b = renderer.bounds; + var result = new Bounds(worldToSpace.MultiplyPoint3x4(b.center), Vector3.zero); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(b.min)); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(b.max)); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.min.y, b.max.z))); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.max.y, b.min.z))); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.min.y, b.min.z))); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.max.y, b.max.z))); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.min.y, b.max.z))); + result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.max.y, b.min.z))); + return result; + } + /// /// One renderer's vertices AND triangle indices (non-triangle submeshes dropped) /// in the space whose world→local matrix is worldToSpace — the geometry the box From 80471cbf0e979e9592e621909d57247e2701d1ea Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 11:03:47 +0000 Subject: [PATCH 069/130] feat(remesh): oriented-box and hull proxy shapes, part filter before remesh, vertex color albedo tint The Box set shape (recursive gap splitting of a point cloud) is replaced by two proxy shapes: Bounding box builds one oriented box per captured renderer, measured along the renderer's own axes and placed back in capture space (flat renderers get a minimal slab); Hull runs the capture through a coarse solid voxel pass and a strongly regularized simplification to a triangle budget. Before any shape, a connected-component filter drops pieces whose bounds diagonal or thinnest side falls under a fraction of the capture diagonal, so bolts, railings and decal sheets stop inflating boxes, hulls and voxel noise. Proxy shapes bake through proxy projection: each texel casts along its face normal from just outside the proxy through the proxy depth, first source hit wins, no cage and no nearest fallback. Texels that see no geometry are filled from the nearest hit via jump flooding and written with alpha 0 as a coverage mask; the status counts them. A new "Vertex color tints albedo" toggle multiplies the baked albedo by the interpolated source vertex color (linear RGB). Staleness keys cover all new settings; tests cover the filter, the boxes, the tint and the seed fill. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 5 +- Documentation~/REMESH_AND_BAKE.md | 44 +++-- Editor/RemeshBaker.cs | 142 ++++++++++++++-- Editor/RemeshPipeline.cs | 266 +++++------------------------- Editor/RemeshSettings.cs | 40 +++-- Editor/RemeshSource.cs | 202 ++++++++++++++++------- Editor/Tools/RemeshBakeTool.cs | 24 ++- Tests/Editor/RemeshBakeTests.cs | 108 ++++++++++++ 8 files changed, 488 insertions(+), 343 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4435801..c22c2d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,14 +20,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than / thinner than** (fractions of the capture diagonal) run before any shape and drop the connected components of the position-welded triangle graph whose bounds diagonal or thinnest side is under the threshold, so bolts, railings and decal sheets stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, off by default) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed -- **An unsplit box is Unity's own renderer bbox; splits stay strictly planar.** A renderer whose geometry needs no split now takes `renderer.bounds` directly (the bbox the game already has, expressed in the capture space through its 8 corners) instead of a recomputed point-cloud box. Splits remain axis-aligned planes through the centre of the widest empty slab, so every leaf face lies on a geometry plane; split children take their tight boxes from real geometry. -- **Box set samples the surface, not just vertices; thin leaves get thickness.** The gap histograms ran on raw vertices, and the interior of a large flat quad — four corner points — read as emptiness, so boxes split through live geometry in phony places. The decomposition now works over an area-weighted, stratified barycentric sample cloud (deterministic, ~3 samples per triangle clamped 512–16384) plus the vertices. Paper-thin leaves (plazas, road atlases, decals — a tight AABB with a zero axis) render as zero-thickness sheets and z-fight; degenerate axes now get a minimal slab (0.4% of the leaf's largest side), and non-triangle submeshes no longer contribute garbage points. - **One hostile mesh no longer kills the whole capture.** A non-triangle submesh (`WindowsCurtain_15`'s line geometry) or a mesh without UV0 threw and aborted the entire scene-block run. Non-triangle submeshes now drop out individually (the renderer survives on its triangle submeshes; a renderer with none left is skipped), UV0-less renderers skip with a warning, and every renderer is isolated so an unreadable import costs its own exclusion — never the capture. - **Read/Write-disabled imports the MeshData path refuses are read through their importer.** Unity 6000.2's `AcquireReadOnlyMeshData` still throws `isReadable is false` for some imports. When it does, the read falls back to flipping THAT file's ModelImporter to Read/Write, reading, and restoring it — a reimport pair only for files the MeshData path cannot serve (typically none), never the flip-everything cost that was reverted before. -- **Box set partitions by renderer — no more collapse into one box.** The weld-lane box set split the WHOLE capture as one point cloud, and a dense courtyard model fills its bounds so completely that no gap ever reached the threshold — everything collapsed into a single box. The primary partition is now per renderer node (every mesh with a renderer keeps its own box), with the recursive gap split running inside each renderer's geometry only. Keep-hierarchy already partitioned per node and is unchanged. - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. @@ -45,7 +43,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: Normal smoothing now applies after UV generation and works with every hard-edge mode.** Previously the value was passed into the native normal generation *before* the unwrap, where the UV-island hard-edge rebuild (`SmoothWithinSplitVertices`) overwrote the result — leaving the slider dead in the default mode. The pass now runs in C# on the split unwrap output for all modes (a port of meshoptimizer's alignment-weighted smoothing kernel: up to 10 passes, each averaging normal deltas over mesh edges with aligned neighbours pulling more and opposing ones not at all). Because crease splits and chart borders are already materialized as vertex splits by that point, and mesh edges never cross a split, smoothing flows along the surface and stops at every hard edge regardless of its source. The native call now receives `smoothing: 0`; the ABI and binaries are unchanged. ### Added -- **Remesh & Bake: box-set shape — recursive box approximation.** The Shape selector's third mode decomposes the capture into a minimal union of plain boxes: every box histograms its geometry along each axis, finds the widest empty gap, and splits there when the gap exceeds a *Split gap* fraction of the axis extent — recursively, each half taking its tight box. L- and T-shaped buildings fall apart into their arms at the empty notches and detached canopies split off on their own, without ever inventing special primitives (every leaf is one cube mesh instanced by a transform, GPU-driven-friendly). The status line reports the box count and the covered share of the original bounds' volume — the occupancy error at a glance; silhouette-first, with the bake projecting the original's materials and lighting onto the boxes exactly as onto a single box once the shape is acceptable. - **Remesh & Bake: bounding-box source shape — a far-LOD box proxy.** The remesh stage's new *Shape* selector picks *LOD0* (voxelize the capture, as before) or *Bounding box*: every captured model is replaced by its axis-aligned bounding box, and THAT mesh flows through the rest of the pipeline unchanged — unwrap gives the box its own atlas, and the bake projects the ORIGINAL captured geometry's materials and lighting (Materials and Beauty alike) onto the box's faces. The weld lane produces one box for the whole model; keep-hierarchy produces one box per node. Voxel controls disable in box mode, and the stage cache key covers the shape. - **Remesh & Bake: Beauty mode — the object baked as the player sees it, into one lit texture.** A new *Bake mode* selector folds the scene's lighting into the BaseColor map and saves an **Unlit/Texture** material with that single texture (the other maps still export alongside for reference): realtime/mixed direct light with hard shadow rays through the source BVH, the renderer's baked lightmaps (captured per face at its UV2 with the renderer's scale/offset, RGBM/HDR decoded at readback), ambient (flat, trilight, or the ambient probe evaluated by Unity itself into a direction grid the bake workers interpolate) and reflection probes (equirectangular readbacks, roughness-lerped toward the probe average, simplified Standard Fresnel). Baked-only lights are skipped so lightmapped faces count nothing twice; the lightmap is the base there (it already contains albedo × GI × baked emission). Specular is view-dependent — it bakes for the scene view camera's position at bake time. Beauty previews render unlit, matching the saved material. Works in both the weld and keep-hierarchy lanes. - **Remesh & Bake: LOD0-only source filtering.** A *LOD0 only* toggle (default on, remesh stage) skips meshes named `Name_LOD1` and higher wherever they sit — LODGroups already contribute LOD0 only, but machines that emit LOD levels as separate nodes produced duplicate captures. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index add00314..c9cf223c 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -31,19 +31,25 @@ settings, marked "settings changed" in its header) and clears everything after i combined in root-local coordinates; LODGroups contribute LOD0 only, collision nodes are excluded, and **LOD0 only** (default on) skips meshes named `Name_LOD1` and higher wherever they sit. **Shape** picks what the remesh - stage builds from the capture: *LOD0* voxelize the geometry (the default), or - *Bounding box* replace every captured model with its axis-aligned box — a - far-LOD proxy whose faces still receive the original's materials and baked - lighting through the normal projection (weld: one box for the whole model; - keep-hierarchy: one box per node), or - *Box set* a union of boxes partitioned BY RENDERER first — every node with a - renderer keeps its own box(es), the recursive gap split running inside each - renderer's geometry (a *Split gap* fraction gates it) so L- and T-shaped - meshes fall apart into their arms — plain cubes, one mesh instanced by - transforms, never special primitives. The stage status reports the box - count and the share of the original bounds' volume the boxes cover; the - bake projects the original's materials and lighting onto them exactly as - onto a single box. + stage builds from the capture: *LOD0* voxelizes the geometry (the default); + *Bounding box* replaces every captured renderer with its own oriented box — + measured over the renderer's geometry along the renderer's authored axes and + placed back in the capture space, so a yawed building keeps a yawed box + instead of the inflated axis-aligned one (weld: one box per renderer, all in + one mesh; keep-hierarchy: one box per node; a flat renderer gets a minimal + slab thickness); *Hull* runs the same geometry + through a coarse voxel pass (*Hull resolution*, solid fill, no shell fit) and + a strongly regularized simplification down to *Hull triangles*, giving a + closed, rounded blob that follows L- and T-shapes without the box + decomposition's guesswork. Both proxy shapes bake the original's materials + and lighting through the proxy projection described under **Bake**. + **Exclude parts smaller than / thinner than** (fractions of the capture + diagonal, applied before any shape) drop connected pieces of the capture — + the connected components of the position-welded triangle graph, so a bolt or + railing goes even when it shares a mesh with the wall — whose bounds diagonal + or smallest bounds side falls under the threshold; the stage status reports + how many pieces went, and a filter that would remove everything is skipped + with a warning instead of producing an empty remesh. SkinnedMeshRenderers are baked at their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static @@ -120,6 +126,18 @@ settings, marked "settings changed" in its header) and clears everything after i and Laplacian-smoothed over the welded connectivity, and each shell's offset stops short of self-intersection (cast against the surface itself), so a tight concavity shows a pinch instead of folding through to the far side. + For the *Bounding box* and *Hull* shapes the cage is replaced by **proxy + projection**: every texel casts straight along its face normal from just + outside the proxy through the proxy's full depth and takes the first source + surface it meets, so each proxy face shows what a viewer looking at that face + would see; there is no nearest-surface fallback. Texels whose ray meets no + geometry (the empty corners of a box around an L-shaped building) are written + with **alpha 0** in the color map and filled from the nearest hit texel, and + the stage status counts them — a shader that clips on alpha turns the proxy + into a silhouette-correct impostor. **Vertex color tints albedo** multiplies + the baked albedo by the source's interpolated vertex color (RGB, read as + linear, the way vertex-tinting shaders do), independently of the vertex color + transfer toggles; it is off by default. **Bake mode** selects what lands in the maps: *Materials* transfers the source maps; *Beauty* bakes the object as the player sees it — realtime/mixed light with hard ray shadows, the renderer's lightmaps (sampled at its UV2, RGBM/HDR diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 2fde9da3..7397ff83 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -13,6 +13,10 @@ internal sealed class Maps public Color[] emission; public Color[] vertexColors; // per result vertex, null unless a transfer was requested public int size, misses, covered; + // Proxy shapes: covered texels whose inward ray met no source geometry (the + // empty part of a box face). Filled from their nearest hit and written with + // alpha 0 in the base color, not counted as misses. + public int empty; // Bake health counters surfaced through the RemeshDiag log category. public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels, zeroNormals; public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; @@ -40,6 +44,18 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto result.beauty = beauty != null; if (beauty != null) beauty.BindShadows(bvh); float distance = source.diagonal * settings.projectionDistance; + // Proxy shapes (boxes, hull) are far from the surface they stand for, so + // their texels look INWARD along the face normal through the whole proxy — + // an orthographic snapshot of the model from that side — instead of the + // short two-sided cage ray; nothing behind a texel means "empty", not a miss. + bool proxy = settings.sourceShape != RemeshShape.LOD0; + Vector3[] faceDirs = null; float depth = 0; + if (proxy) { + faceDirs = FaceNormals(target.positions, target.indices); + Vector3 mn = target.positions[0], mx = target.positions[0]; + foreach (var pv in target.positions) { mn = Vector3.Min(mn, pv); mx = Vector3.Max(mx, pv); } + depth = (mx - mn).magnitude * 1.01f + source.diagonal * 1e-4f; + } // Projection rays follow a smooth welded "cage" direction, not the vertex // normal: island hard-edge modes leave chart-border normals one-sided, // and casting along them samples a displaced source point, which bakes @@ -70,7 +86,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int f = 0; f < faces; ++f) faceNormals[f] = -faceNormals[f]; result.facingFilter = facingFilter; Vector3[] facing = facingFilter ? faceNormals : null; - int misses = 0, rayFallbacks = 0; + int misses = 0, rayFallbacks = 0, empties = 0; + var emptyTexels = proxy ? new bool[count] : null; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { var candidates = new int[9]; @@ -98,6 +115,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; if (!Project(source, target, tangents, cage, bvh, facing, beauty, face, w, distance, + proxy, faceDirs, depth, settings.vertexColorTint, out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; if (rayFallback) Interlocked.Increment(ref rayFallbacks); color += sc.linear; metal += sm; ao += sa; emission += se; @@ -105,6 +123,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto ++hits; } if (hits == 0) { + if (proxy) { emptyTexels[pixel] = true; Interlocked.Increment(ref empties); continue; } Interlocked.Increment(ref misses); result.color[pixel] = new Color32(255, 0, 255, 255); result.normal[pixel] = new Color32(128, 128, 255, 255); @@ -122,6 +141,8 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto }); result.misses = misses; result.rayFallbacks = rayFallbacks; + result.empty = empties; + if (proxy && empties > 0) FillEmpty(result, owners, emptyTexels, token); // Normal-map tilt health: how far encoded normals lean away from the // tangent plane's up axis. Loud, strongly-tilted maps on smooth-ish // sources are the visual signature of displaced projection samples. @@ -198,35 +219,48 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // the (possibly hard) vertex normal so encode matches how the mesh shades. // facing (when non-null) carries the orientation-consensus source face normals // that keep the ray and the fallback on the side of the surface facing the texel. + // proxy: the ray starts just outside the proxy face and travels inward along the + // face normal through the whole proxy (depth), first hit wins, no fallback. static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, TriangleBvh bvh, Vector3[] facing, RemeshBeauty beauty, int face, Vector3 w, float distance, + bool proxy, Vector3[] faceDirs, float depth, bool vertexTint, out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; - Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; - var hit = facing != null - ? bvh.RaycastFacingFiltered(p + rayN * distance, -rayN, distance * 2, facing) - : bvh.Raycast(p + rayN * distance, -rayN, distance * 2); - int sourceFace = hit.triangleIndex; - Vector3 sw = hit.barycentric; + int sourceFace; Vector3 sw; rayFallback = false; - if (sourceFace < 0) { - // Both fallbacks stay bounded by the projection distance: an unbounded - // filtered query would smear an unrelated far part across a gap. - var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, distance) - : bvh.FindNearest(p, distance); - sourceFace = nearest.triangleIndex; sw = nearest.barycentric; - rayFallback = true; + if (proxy) { + Vector3 dir = faceDirs[face]; + float eps = depth * 1e-4f; + var hit = facing != null + ? bvh.RaycastFacingFiltered(p + dir * eps, -dir, depth, facing) + : bvh.Raycast(p + dir * eps, -dir, depth); + sourceFace = hit.triangleIndex; sw = hit.barycentric; + } + else { + Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; + var hit = facing != null + ? bvh.RaycastFacingFiltered(p + rayN * distance, -rayN, distance * 2, facing) + : bvh.Raycast(p + rayN * distance, -rayN, distance * 2); + sourceFace = hit.triangleIndex; sw = hit.barycentric; + if (sourceFace < 0) { + // Both fallbacks stay bounded by the projection distance: an unbounded + // filtered query would smear an unrelated far part across a gap. + var nearest = facing != null + ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, distance) + : bvh.FindNearest(p, distance); + sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + rayFallback = true; + } } if (sourceFace < 0) { color = normal = metal = ao = emission = default; return false; } - Evaluate(source, sourceFace, sw, n, tangent, out color, out normal, out metal, out ao, out emission); + Evaluate(source, sourceFace, sw, n, tangent, vertexTint, out color, out normal, out metal, out ao, out emission); if (beauty != null) color = BeautyLight(beauty, source, sourceFace, sw, color, metal, emission).gamma; return true; } @@ -355,12 +389,23 @@ internal static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out internal static void Evaluate(RemeshSource source, int face, Vector3 w, Vector3 targetNormal, Vector4 targetTangent, out Color color, out Color normal, out Color metal, out Color ao, out Color emission) + => Evaluate(source, face, w, targetNormal, targetTangent, false, out color, out normal, out metal, out ao, out emission); + + // vertexTint multiplies the albedo by the interpolated source vertex color (RGB, + // taken as linear, the way vertex-tinting shaders read it). + internal static void Evaluate(RemeshSource source, int face, Vector3 w, Vector3 targetNormal, Vector4 targetTangent, bool vertexTint, + out Color color, out Color normal, out Color metal, out Color ao, out Color emission) { int a = source.indices[face * 3], b = source.indices[face * 3 + 1], c = source.indices[face * 3 + 2]; Vector2 uv = source.uv[a] * w.x + source.uv[b] * w.y + source.uv[c] * w.z; var surface = source.materials[source.faceMaterials[face]]; Color albedo = surface.color.Sample(uv, Color.white); - color = (albedo * surface.tint).gamma; color.a = 1; + Color linear = albedo * surface.tint; + if (vertexTint && source.colors != null) { + Color vc = source.colors[a] * w.x + source.colors[b] * w.y + source.colors[c] * w.z; + linear = new Color(linear.r * vc.r, linear.g * vc.g, linear.b * vc.b, linear.a); + } + color = linear.gamma; color.a = 1; var n = (source.normals[a] * w.x + source.normals[b] * w.y + source.normals[c] * w.z).normalized; var t = source.tangents[a] * w.x + source.tangents[b] * w.y + source.tangents[c] * w.z; if (surface.normal.image != null) { @@ -389,6 +434,69 @@ static void Basis(Vector3 n, Vector4 tangent, out Vector3 t, out Vector3 b) b = Vector3.Cross(n, t) * (tangent.w < 0 ? -1 : 1); } + static Vector3[] FaceNormals(Vector3[] positions, int[] indices) + { + var normals = new Vector3[indices.Length / 3]; + for (int f = 0; f < normals.Length; ++f) { + int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; + normals[f] = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).normalized; + } + return normals; + } + + // Proxy "empty" texels take the maps of their nearest hit texel (jump flooding + // over the whole atlas, O(n log n), so holes hundreds of texels wide fill + // without seams) and keep alpha 0 in the base color as the coverage mask. + static void FillEmpty(Maps maps, int[] owners, bool[] empty, CancellationToken token) + { + int size = maps.size, count = owners.Length; + var seed = new bool[count]; + for (int i = 0; i < count; ++i) seed[i] = owners[i] >= 0 && !empty[i]; + var nearest = NearestSeeds(seed, size, token); + for (int i = 0; i < count; ++i) { + if (!empty[i]) continue; + int from = nearest[i]; + if (from >= 0) { + maps.color[i] = maps.color[from]; maps.normal[i] = maps.normal[from]; + maps.metal[i] = maps.metal[from]; maps.ao[i] = maps.ao[from]; maps.emission[i] = maps.emission[from]; + } + else { maps.normal[i] = new Color32(128, 128, 255, 255); maps.ao[i] = new Color32(255, 255, 255, 255); } + var c = maps.color[i]; c.a = 0; maps.color[i] = c; + } + } + + // Jump flooding: for every texel, the index of the nearest seed texel (-1 when + // there is none). + internal static int[] NearestSeeds(bool[] seed, int size, CancellationToken token) + { + int count = size * size; + var nearest = new int[count]; var next = new int[count]; + for (int i = 0; i < count; ++i) nearest[i] = seed[i] ? i : -1; + long DistSq(int from, int to) { long dx = from % size - to % size, dy = from / size - to / size; return dx * dx + dy * dy; } + for (int step = Math.Max(1, size / 2); step >= 1; step /= 2) { + token.ThrowIfCancellationRequested(); + Array.Copy(nearest, next, count); + for (int y = 0; y < size; ++y) + for (int x = 0; x < size; ++x) { + int i = y * size + x; + int best = next[i]; + long bestD = best >= 0 ? DistSq(i, best) : long.MaxValue; + for (int dy = -step; dy <= step; dy += step) + for (int dx = -step; dx <= step; dx += step) { + int xx = x + dx, yy = y + dy; + if (xx < 0 || yy < 0 || xx >= size || yy >= size) continue; + int candidate = nearest[yy * size + xx]; + if (candidate < 0) continue; + long d = DistSq(i, candidate); + if (d < bestD) { bestD = d; best = candidate; } + } + next[i] = best; + } + var swap = nearest; nearest = next; next = swap; + } + return nearest; + } + static void Dilate(Maps maps, int[] owners, int padding, CancellationToken token) { int size = maps.size, count = owners.Length; diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 3580340d..79874ef1 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -112,12 +112,13 @@ public string Summary(Stage stage) public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { - case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|{s.sourceShape}|{s.boxSplitGap:F2}"; + case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|" + + $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minPartThickness:F4}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}"; } } @@ -212,50 +213,35 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken } if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); } - long sourceTriangles = 0, resultTriangles = 0; int warnings = 0; + long sourceTriangles = 0, resultTriangles = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; var shape = options.sourceShape; - int boxes = 0; double boxVolume = 0; - // Weld + box set: the primary partition is BY RENDERER — every node with a - // renderer keeps its own box(es), the recursive gap split running INSIDE - // each renderer's points (a courtyard model otherwise fills its bounds so - // densely that the split finds no gap and the whole set collapses into one - // box). The weld SOURCE stays the full capture, so the bake projects every - // renderer's materials onto the merged box set as usual. - List weldLeaves = null; - if (!hierarchy && shape == RemeshShape.BoxSet) { - Report("Decomposing renderers into boxes…"); - weldLeaves = new List(); - foreach (var renderer in renderers) { - token.ThrowIfCancellationRequested(); - RemeshSource.CollectSurface(worldToRoot, renderer, out var positions, out var surface); - if (positions == null || surface == null || surface.Length == 0) continue; - var samples = SurfaceSamples(positions, surface); - // The unsplit leaf IS Unity's own renderer bbox — no recomputed box - // for a node the game already measures. - SplitRecursive(samples, 0, samples.Length, options.boxSplitGap, weldLeaves, - RemeshSource.RendererBounds(worldToRoot, renderer)); + // Part filter first, whatever the shape: small and thin pieces (bolts, + // railings, decals, glass) only add voxel noise to a remesh and inflate a + // proxy's boxes or hull. + for (int i = captures.Count - 1; i >= 0; --i) { + var node = captures[i]; + if (!node.source.FilterSmallParts(options.minPartSize, options.minPartThickness, out int small, out int thin)) { + if (hierarchy) { UvtLog.Warn("[Remesh] " + node.name + ": every part is below the size/thickness filter, skipped."); captures.RemoveAt(i); continue; } + UvtLog.Warn("[Remesh] Every part is below the size/thickness filter; the filter was not applied."); } - if (weldLeaves.Count == 0) throw new InvalidOperationException("No remeshable renderers under the root."); + droppedSmall += small; droppedThin += thin; } + if (captures.Count == 0) throw new InvalidOperationException("Every node fell below the part filter; nothing to remesh."); for (int i = 0; i < captures.Count; ++i) { var node = captures[i]; foreach (var warning in node.source.warnings) { UvtLog.Warn("[Remesh] " + warning); ++warnings; } token.ThrowIfCancellationRequested(); - Report(hierarchy - ? $"{(shape == RemeshShape.LOD0 ? "Voxel remeshing" : "Bounding")} {node.name} ({i + 1}/{captures.Count})…" - : (shape == RemeshShape.LOD0 ? "Voxel remeshing…" : shape == RemeshShape.BoundingBox ? "Building the bounding-box proxy…" : "Assembling the renderer box set…")); + string verb = shape == RemeshShape.LOD0 ? "Voxel remeshing" : shape == RemeshShape.BoundingBox ? "Boxing" : "Hulling"; + Report(hierarchy ? $"{verb} {node.name} ({i + 1}/{captures.Count})…" : verb + "…"); var captured = node.source; - var stats = shape == RemeshShape.BoxSet ? new BoxStats() : null; - // The box shapes replace the voxelizer with the capture's own bounds — - // a single AABB, or the renderer-partitioned gap-split box set; - // materials and lighting still bake from the captured geometry, - // projected onto the boxes downstream. + // The proxy shapes replace the voxelizer: one oriented box per renderer, + // or a coarse voxel hull; materials and lighting still bake from the + // captured geometry, projected onto the proxy downstream. node.voxel = await Task.Run(() => shape == RemeshShape.LOD0 ? RemeshNative.Voxelize(captured.positions, captured.indices, options, token) - : shape == RemeshShape.BoundingBox ? BoxMesh(captured.positions) - : weldLeaves != null ? AssembleBoxes(weldLeaves, stats) - : BoxSetMesh(captured.positions, captured.indices, options.boxSplitGap, stats), token); - if (stats != null) { boxes += stats.boxCount; boxVolume += stats.volumeFraction; } + : shape == RemeshShape.BoundingBox ? captured.OrientedBoxes() + : Hull(captured, options, token), token); + if (node.voxel == null) throw new InvalidOperationException("The proxy shape produced no geometry."); sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; } @@ -267,200 +253,23 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken voxelMesh = BuildMesh(ResultName + "_Voxel", primary.voxel.positions, primary.voxel.indices); Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + - (shape == RemeshShape.BoundingBox ? " (bounding box)." - : shape == RemeshShape.BoxSet ? $" — {boxes:N0} boxes, {(boxVolume / Mathf.Max(1, nodes.Count)) * 100:F0}% volume covered." - : ".") + + (shape == RemeshShape.BoundingBox ? $" ({resultTriangles / 12:N0} oriented boxes)" : shape == RemeshShape.Hull ? " (hull)" : "") + + (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small, {droppedThin:N0} thin part(s)" : "") + "." + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); } - /// Box-set decomposition stats filled by the worker (out parameters - /// cannot cross a lambda; a captured mutable holder can). - internal sealed class BoxStats - { - public int boxCount; - public float volumeFraction; - } - - // Axis-aligned box mesh around a point cloud — the Bounding-box remesh shape. - // Outward winding, capture-space in and out. - internal static RemeshNative.IndexedMesh BoxMesh(Vector3[] positions) - { - Vector3 mn = positions[0], mx = positions[0]; - foreach (var p in positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } - var corners = new[] { - new Vector3(mn.x, mn.y, mn.z), new Vector3(mx.x, mn.y, mn.z), new Vector3(mx.x, mx.y, mn.z), new Vector3(mn.x, mx.y, mn.z), - new Vector3(mn.x, mn.y, mx.z), new Vector3(mx.x, mn.y, mx.z), new Vector3(mx.x, mx.y, mx.z), new Vector3(mn.x, mx.y, mx.z), - }; - int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; - return new RemeshNative.IndexedMesh { positions = corners, indices = faces }; - } - - // Recursive box approximation — the BoxSet remesh shape. Every box scans a - // 32-bin histogram per axis for the widest EMPTY run between geometry; a gap - // wider than minGap (a fraction of that axis's extent) splits the point set - // there and both halves take their tight box, recursively. L- and T-shaped - // buildings decompose into their arms at the empty notches, a detached canopy - // splits off on its own — unions of plain boxes, never special primitives, so - // every leaf is one cube mesh instanced by a transform. - internal static RemeshNative.IndexedMesh BoxSetMesh(Vector3[] positions, int[] triangles, float minGap, BoxStats stats) - { - var samples = SurfaceSamples(positions, triangles); - var leaves = new List(); - SplitRecursive(samples, 0, samples.Length, minGap, leaves); - return AssembleBoxes(leaves, stats); - } - - // Area-weighted stratified surface samples plus the original vertices. Raw - // vertices misrepresent occupancy — the interior of a large flat quad is four - // corner points, and the histograms read that emptiness as a gap, splitting - // boxes through live geometry. Deterministic (fixed seed). - internal static Vector3[] SurfaceSamples(Vector3[] positions, int[] triangles) - { - int faces = triangles.Length / 3; - var areas = new double[faces]; - double total = 0; - for (int f = 0; f < faces; ++f) { - int a = triangles[f * 3], b = triangles[f * 3 + 1], c = triangles[f * 3 + 2]; - areas[f] = (double)(Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).magnitude * 0.5f); - total += areas[f]; - } - var samples = new List(positions.Length + 4096); - samples.AddRange(positions); - if (total <= 0 || faces == 0) return samples.ToArray(); - int target = Mathf.Clamp(faces * 3, 512, 16384); - var random = new System.Random(0x5eed); - double accumulator = 0; int emitted = 0; - for (int f = 0; f < faces && emitted < target; ++f) { - accumulator += areas[f]; - int want = Mathf.Min((int)(accumulator / total * target) - emitted, target - emitted); - int a = triangles[f * 3], b = triangles[f * 3 + 1], c = triangles[f * 3 + 2]; - for (int s = 0; s < want; ++s) { - float r1 = (float)random.NextDouble(), r2 = (float)random.NextDouble(); - float q = Mathf.Sqrt(r1); - float u = 1f - q, v = q * (1f - r2), w = q * r2; - samples.Add(positions[a] * u + positions[b] * v + positions[c] * w); - } - emitted += want; - } - return samples.ToArray(); - } - - // One merged mesh of the leaf boxes: 8 vertices + 12 triangles per box, indices - // offset per leaf — the same shape every other stage consumes. Paper-thin - // leaves (ground planes, road atlases, decals) get a minimal thickness so they - // render as slabs instead of zero-thickness sheets. The stats carry the box - // count and the covered share of the union bounds' volume (gap splits never - // overlap, so Σleaf volumes / union volume is the occupancy). - internal static RemeshNative.IndexedMesh AssembleBoxes(List leaves, BoxStats stats) - { - double total = 0; - Bounds initial = leaves[0]; - for (int i = 0; i < leaves.Count; ++i) { - var box = PadThin(leaves[i]); - leaves[i] = box; - total += Volume(box); - initial.Encapsulate(box); - } - double whole = Volume(initial); - stats.boxCount = leaves.Count; - stats.volumeFraction = whole > 0 ? (float)(total / whole) : 1f; - var vertices = new Vector3[leaves.Count * 8]; - var indices = new int[leaves.Count * 36]; - int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; - for (int b = 0; b < leaves.Count; ++b) { - var box = leaves[b]; - Vector3 mn = box.min, mx = box.max; - int v = b * 8, f = b * 36; - vertices[v + 0] = new Vector3(mn.x, mn.y, mn.z); vertices[v + 1] = new Vector3(mx.x, mn.y, mn.z); - vertices[v + 2] = new Vector3(mx.x, mx.y, mn.z); vertices[v + 3] = new Vector3(mn.x, mx.y, mn.z); - vertices[v + 4] = new Vector3(mn.x, mn.y, mx.z); vertices[v + 5] = new Vector3(mx.x, mn.y, mx.z); - vertices[v + 6] = new Vector3(mx.x, mx.y, mx.z); vertices[v + 7] = new Vector3(mn.x, mx.y, mx.z); - for (int i = 0; i < 36; ++i) indices[f + i] = v + faces[i]; - } - return new RemeshNative.IndexedMesh { positions = vertices, indices = indices }; - } - - // Degenerate axes (a flat plaza's height, a decal's depth) become a minimal - // visible slab: 0.4% of the leaf's largest side, centred on the true extent. - static Bounds PadThin(Bounds box) - { - var size = box.size; - float maxSide = Mathf.Max(size.x, Mathf.Max(size.y, size.z)); - if (maxSide <= 0f) return box; - float minSide = maxSide * 0.004f; - if (size.x >= minSide && size.y >= minSide && size.z >= minSide) return box; - var center = box.center; - if (size.x < minSide) { center.x = (box.min.x + box.max.x) * 0.5f; size.x = minSide; } - if (size.y < minSide) { center.y = (box.min.y + box.max.y) * 0.5f; size.y = minSide; } - if (size.z < minSide) { center.z = (box.min.z + box.max.z) * 0.5f; size.z = minSide; } - return new Bounds { center = center, extents = size * 0.5f }; - } - - static double Volume(Bounds box) - { - var s = box.size; - return (double)s.x * s.y * s.z; - } - - const int BoxHistogramBins = 32; - - // seed is the leaf used when no split fires — Unity's own renderer bounds for a - // whole renderer, so an unsplit node is exactly the bbox the game already has. - // Splits stay strictly axis-aligned planes through the centre of the widest - // empty slab, so every leaf face lies on a geometry plane. - static void SplitRecursive(Vector3[] points, int start, int count, float minGap, List leaves, Bounds? seed = null) + // The Hull shape: a coarse voxelization without surface fitting (blocky by + // design), then a strongly regularized simplification down to a small budget + // with small-part pruning, so the result is a chunky silhouette that keeps L/T + // footprints, courtyards and roof steps. + static RemeshNative.IndexedMesh Hull(RemeshSource captured, RemeshSettings options, CancellationToken token) { - var mn = points[start]; - var mx = mn; - for (int i = start + 1; i < start + count; ++i) { - mn = Vector3.Min(mn, points[i]); - mx = Vector3.Max(mx, points[i]); - } - var extent = mx - mn; - // Widest empty run across the three axes' histograms, in fractions of the - // box's own extent on that axis — the split axis is whichever gap wins. - float bestGap = 0; int bestAxis = -1, bestSplitBin = 0; - var bins = new int[BoxHistogramBins]; - for (int axis = 0; axis < 3; ++axis) { - float size = axis == 0 ? extent.x : axis == 1 ? extent.y : extent.z; - if (size <= Mathf.Epsilon) continue; - Array.Clear(bins, 0, bins.Length); - for (int i = start; i < start + count; ++i) { - float value = axis == 0 ? points[i].x - mn.x : axis == 1 ? points[i].y - mn.y : points[i].z - mn.z; - int bin = Mathf.Clamp((int)(value / size * BoxHistogramBins), 0, BoxHistogramBins - 1); - ++bins[bin]; - } - int run = 0, widest = 0, widestAt = 0; - for (int bin = 0; bin < BoxHistogramBins; ++bin) { - if (bins[bin] == 0) { ++run; if (run > widest) { widest = run; widestAt = bin - run + 1; } } - else run = 0; - } - // Interior runs only: a gap touching either edge is just thin bounds. - int gapEnd = widestAt + widest; - if (widestAt == 0 || gapEnd == BoxHistogramBins) continue; - float gap = widest / (float)BoxHistogramBins; - if (gap > bestGap) { bestGap = gap; bestAxis = axis; bestSplitBin = widestAt + widest / 2; } - } - if (bestAxis < 0 || bestGap < minGap) { - leaves.Add(seed ?? new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); - return; - } - float axisSize = bestAxis == 0 ? extent.x : bestAxis == 1 ? extent.y : extent.z; - float split = (bestAxis == 0 ? mn.x : bestAxis == 1 ? mn.y : mn.z) + axisSize * bestSplitBin / BoxHistogramBins; - int left = start, right = start + count - 1; - while (left <= right) { - float value = bestAxis == 0 ? points[left].x : bestAxis == 1 ? points[left].y : points[left].z; - if (value < split) ++left; - else { (points[left], points[right]) = (points[right], points[left]); --right; } - } - int leftCount = left - start; - if (leftCount == 0 || leftCount == count) { - // Degenerate partition (all points in one bin run) — keep the box tight. - leaves.Add(seed ?? new Bounds { center = (mn + mx) * 0.5f, extents = extent * 0.5f }); - return; - } - SplitRecursive(points, start, leftCount, minGap, leaves); - SplitRecursive(points, start + leftCount, count - leftCount, minGap, leaves); + var coarse = JsonUtility.FromJson(JsonUtility.ToJson(options)); + coarse.voxelResolution = options.hullResolution; coarse.solve = false; coarse.shell = false; + var voxel = RemeshNative.Voxelize(captured.positions, captured.indices, coarse, token); + coarse.targetTriangles = options.hullTriangles; coarse.maximumError = 0.5f; + coarse.regularize = RemeshRegularize.Strong; coarse.preserveFolds = false; coarse.pruneSmallParts = true; + return RemeshNative.Simplify(voxel, coarse, token, out _); } async Task RunSimplify(RemeshSettings options, CancellationToken token) @@ -518,7 +327,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to if (!root) throw new InvalidOperationException("The source root is gone; reselect it and rerun the remesh stage."); beauty = new RemeshBeauty(root, SourceDiagonal); } - long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0; int warnings = 0; + long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0, empty = 0; int warnings = 0; for (int i = 0; i < nodes.Count; ++i) { var node = nodes[i]; token.ThrowIfCancellationRequested(); @@ -535,7 +344,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to // A re-bake without the transfer must not keep the previous colors. node.mesh.colors = node.maps.vertexColors; sourceTriangles += source.indices.Length / 3; targetTriangles += target.indices.Length / 3; - misses += node.maps.misses; covered += node.maps.covered; warnings += source.warnings.Length; + misses += node.maps.misses; covered += node.maps.covered; empty += node.maps.empty; warnings += source.warnings.Length; LogDiagnostics(node); } token.ThrowIfCancellationRequested(); @@ -544,6 +353,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to baseColorPreview.SetPixels32(primary.maps.color); baseColorPreview.Apply(); Status = (hierarchy ? $"{nodes.Count} node(s): " : "") + $"{sourceTriangles:N0} → {targetTriangles:N0} triangles. " + (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake.") + + (empty > 0 ? $" {empty:N0} proxy texels see no geometry (alpha 0, filled from neighbours)." : "") + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); UvtLog.Info("[Remesh] " + Status); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index b4f5fd40..34b5b2bf 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -52,14 +52,15 @@ public enum RemeshShape { /// Voxelize the captured geometry (the default remesh). LOD0, - /// Replace every captured model with its axis-aligned bounding box — a - /// proxy for far LODs; materials and lighting still bake from the original - /// geometry, projected onto the box. + /// One box per captured renderer, aligned to that renderer's own axes + /// (the mesh's authored bounds carried by its transform) — a far-LOD proxy; + /// materials and lighting bake from the original geometry, projected onto the + /// box faces. BoundingBox, - /// Recursive box approximation: split the bounds wherever a wide empty - /// gap separates geometry, so L- and T-shapes decompose into a small set of - /// boxes (one cube mesh instanced by transforms downstream). - BoxSet, + /// A coarse blocky hull: the (filtered) capture voxelized at a low + /// resolution without surface fitting and simplified to a small triangle + /// budget, so L/T footprints, courtyards and roofs keep their silhouette. + Hull, } [Serializable] @@ -72,12 +73,19 @@ public sealed class RemeshSettings // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already // contribute LOD0 only). public bool lod0Only = true; - // What the remesh stage builds from the capture: the voxelized geometry, or a - // bounding-box proxy per captured model (keep-hierarchy) / for the whole weld. + // What the remesh stage builds from the capture: the voxelized geometry, one + // oriented box per renderer, or a coarse voxel hull. public RemeshShape sourceShape = RemeshShape.LOD0; - // Box-set shape: the smallest EMPTY gap (fraction of a box's extent) that still - // splits it in two; smaller values chase finer protrusions with more boxes. - public float boxSplitGap = 0.2f; + // Hull shape: voxel resolution of the coarse pass and the triangle budget the + // strong-regularized simplification stops at. + public int hullResolution = 24; + public int hullTriangles = 120; + // Part filter, applied to the capture before any shape is built: connected + // pieces whose bounds diagonal is below minPartSize × capture diagonal (bolts, + // railings, debris) or whose smallest bounds side is below minPartThickness × + // capture diagonal (decals, glass sheets) are excluded. 0 = off. + public float minPartSize = 0.02f; + public float minPartThickness; // Keep hierarchy: remesh every captured node SEPARATELY and save the result as a // hierarchy of meshes under one root (per-node materials, local transforms kept), // instead of welding everything into one _LOD0 mesh with one baked material. @@ -125,6 +133,9 @@ public sealed class RemeshSettings public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 public bool transferVertexColor; public bool transferVertexAlpha; + // Multiply the source albedo by the source vertex color (RGB) while projecting, + // for shaders that use the vertex color as an albedo tint. + public bool vertexColorTint; // Save (FBX): embed the baked maps into the binary FBX instead of // linking them by absolute path. Portable, but the file grows by the @@ -147,7 +158,10 @@ public void Validate() chartIterations < 1 || chartIterations > 16 || !NonNegative(maxChartArea) || !NonNegative(maxChartBoundary) || textureResolution < 64 || textureResolution > 8192 || (textureResolution & (textureResolution - 1)) != 0 || padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1 || - (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16)) + (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16) || + hullResolution < 4 || hullResolution > 256 || hullTriangles < 12 || hullTriangles > 100000 || + !Finite(minPartSize) || minPartSize < 0 || minPartSize > 0.5f || + !Finite(minPartThickness) || minPartThickness < 0 || minPartThickness > 0.5f) throw new ArgumentException("Invalid remesh settings."); } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 209cc6a2..060716a4 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -45,6 +45,11 @@ public void ReadLightmaps() public Surface[] materials; public float diagonal; public string[] warnings = Array.Empty(); + // Which captured renderer each vertex came from, and that renderer's local → + // capture-space matrix: the oriented-box shape measures every renderer's + // (filtered) geometry along its own authored axes. + public int[] vertexRenderer; + public Matrix4x4[] rendererToSpace; internal sealed class Image { @@ -97,65 +102,6 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) return Capture(root.transform.worldToLocalMatrix, CollectRenderers(root, lod0Only)); } - /// - /// The renderer's own world bounds expressed in the space whose world→local - /// matrix is worldToSpace (the 8 corners transformed, re-axised) — Unity's - /// bbox, not a recomputed one. Main thread. - /// - public static Bounds RendererBounds(Matrix4x4 worldToSpace, Renderer renderer) - { - var b = renderer.bounds; - var result = new Bounds(worldToSpace.MultiplyPoint3x4(b.center), Vector3.zero); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(b.min)); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(b.max)); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.min.y, b.max.z))); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.max.y, b.min.z))); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.min.y, b.min.z))); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.min.x, b.max.y, b.max.z))); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.min.y, b.max.z))); - result.Encapsulate(worldToSpace.MultiplyPoint3x4(new Vector3(b.max.x, b.max.y, b.min.z))); - return result; - } - - /// - /// One renderer's vertices AND triangle indices (non-triangle submeshes dropped) - /// in the space whose world→local matrix is worldToSpace — the geometry the box - /// decomposition partitions BY RENDERER, without any material readback. Null when - /// the renderer contributes no triangles. Main thread. - /// - public static void CollectSurface(Matrix4x4 worldToSpace, Renderer renderer, out Vector3[] positions, out int[] triangles) - { - positions = null; triangles = null; - Mesh mesh; - if (renderer is SkinnedMeshRenderer skin) { - mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; - var bones = skin.bones; - skin.bones = Array.Empty(); - skin.bones = bones; - skin.BakeMesh(mesh); - } - else if (renderer is MeshRenderer) { - var filter = renderer.GetComponent(); - if (!filter || !filter.sharedMesh) return; - mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); - } - else return; - try { - var p = mesh.vertices; - var transform = worldToSpace * renderer.localToWorldMatrix; - positions = new Vector3[p.Length]; - for (int i = 0; i < p.Length; ++i) positions[i] = transform.MultiplyPoint3x4(p[i]); - var tris = new List(mesh.triangles.Length); - for (int sub = 0; sub < mesh.subMeshCount; ++sub) { - if (mesh.GetTopology(sub) != MeshTopology.Triangles) continue; - var t = mesh.GetTriangles(sub); - for (int i = 0; i < t.Length; ++i) tris.Add(t[i]); - } - triangles = tris.ToArray(); - } - finally { Object.DestroyImmediate(mesh); } - } - /// /// Snapshot of the given renderers expressed in the space whose world→local /// matrix is worldToSpace. Returns null when they contribute no triangles and @@ -172,6 +118,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende var faceLightmaps = new List(); var lightmapRefs = new List(); var lightmapIds = new Dictionary<(Texture2D, Texture2D, Vector4), int>(); + var vertexRenderer = new List(); var rendererToSpace = new List(); string[] warnings; using (var reader = new Reader()) { foreach (var renderer in renderers) { @@ -230,7 +177,10 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende var normalTransform = transform.inverse.transpose; float sign = transform.determinant < 0 ? -1 : 1; int first = positions.Count; + int rendererId = rendererToSpace.Count; + rendererToSpace.Add(transform); for (int i = 0; i < p.Length; ++i) { + vertexRenderer.Add(rendererId); positions.Add(transform.MultiplyPoint3x4(p[i])); Vector3 nn = normalTransform.MultiplyVector(n[i]).normalized; normals.Add(nn); @@ -297,7 +247,139 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende return new RemeshSource { positions = positions.ToArray(), normals = normals.ToArray(), tangents = tangents.ToArray(), uv = uv.ToArray(), uv2 = uv2.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), faceLightmaps = faceLightmaps.ToArray(), lightmapRefs = lightmapRefs.ToArray(), materials = materials.ToArray(), - diagonal = bounds.size.magnitude, warnings = warnings }; + diagonal = bounds.size.magnitude, warnings = warnings, + vertexRenderer = vertexRenderer.ToArray(), rendererToSpace = rendererToSpace.ToArray() }; + } + + /// + /// Drops connected pieces that are too small or too thin to matter for a proxy: + /// a piece whose bounds diagonal is under minSize × capture diagonal, or whose + /// smallest bounds side is under minThickness × capture diagonal (0 disables + /// either test). Pieces are the connected components of the position-welded + /// triangle graph, so bolts and railings go even when they share a mesh with the + /// wall. Vertices are compacted; the capture diagonal is kept so later fractions + /// stay relative to the original model. Returns false (and changes nothing) when + /// every piece would go. + /// + public bool FilterSmallParts(float minSize, float minThickness, out int removedSmall, out int removedThin) + { + removedSmall = removedThin = 0; + if (minSize <= 0 && minThickness <= 0) return true; + int vertexCount = positions.Length, faceCount = indices.Length / 3; + // Weld by exact position so split-normal / UV-seam duplicates join their piece. + var slot = new int[vertexCount]; + var slots = new Dictionary<(int, int, int), int>(vertexCount); + for (int i = 0; i < vertexCount; ++i) { + var p = positions[i]; + var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); + if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; } + slot[i] = id; + } + var parent = new int[slots.Count]; + for (int i = 0; i < parent.Length; ++i) parent[i] = i; + int Find(int x) { while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } return x; } + void Union(int a, int b) { a = Find(a); b = Find(b); if (a != b) parent[a] = b; } + for (int f = 0; f < faceCount; ++f) { + Union(slot[indices[f * 3]], slot[indices[f * 3 + 1]]); + Union(slot[indices[f * 3]], slot[indices[f * 3 + 2]]); + } + var mins = new Dictionary(); var maxs = new Dictionary(); + for (int i = 0; i < vertexCount; ++i) { + int root = Find(slot[i]); + if (mins.TryGetValue(root, out var mn)) { mins[root] = Vector3.Min(mn, positions[i]); maxs[root] = Vector3.Max(maxs[root], positions[i]); } + else { mins[root] = positions[i]; maxs[root] = positions[i]; } + } + var drop = new HashSet(); + foreach (var pair in mins) { + var size = maxs[pair.Key] - pair.Value; + bool small = minSize > 0 && size.magnitude < minSize * diagonal; + bool thin = !small && minThickness > 0 && Mathf.Min(size.x, Mathf.Min(size.y, size.z)) < minThickness * diagonal; + if (small) ++removedSmall; else if (thin) ++removedThin; + if (small || thin) drop.Add(pair.Key); + } + if (drop.Count == 0) return true; + if (drop.Count == mins.Count) { removedSmall = removedThin = 0; return false; } + // Compact faces, then vertices. + var keptFaces = new List(faceCount); + for (int f = 0; f < faceCount; ++f) + if (!drop.Contains(Find(slot[indices[f * 3]]))) keptFaces.Add(f); + var remap = new int[vertexCount]; + for (int i = 0; i < vertexCount; ++i) remap[i] = -1; + int next = 0; + var newIndices = new int[keptFaces.Count * 3]; + var newFaceMaterials = new int[keptFaces.Count]; + var newFaceLightmaps = new int[keptFaces.Count]; + for (int k = 0; k < keptFaces.Count; ++k) { + int f = keptFaces[k]; + for (int c = 0; c < 3; ++c) { + int v = indices[f * 3 + c]; + if (remap[v] < 0) remap[v] = next++; + newIndices[k * 3 + c] = remap[v]; + } + newFaceMaterials[k] = faceMaterials[f]; + newFaceLightmaps[k] = faceLightmaps[f]; + } + T[] Compact(T[] source) { + if (source == null) return null; + var result = new T[next]; + for (int i = 0; i < vertexCount; ++i) if (remap[i] >= 0) result[remap[i]] = source[i]; + return result; + } + positions = Compact(positions); normals = Compact(normals); tangents = Compact(tangents); + uv = Compact(uv); uv2 = Compact(uv2); colors = Compact(colors); vertexRenderer = Compact(vertexRenderer); + indices = newIndices; faceMaterials = newFaceMaterials; faceLightmaps = newFaceLightmaps; + return true; + } + + /// + /// One box per captured renderer, measured over that renderer's (filtered) + /// vertices along the renderer's own axes and placed back in capture space — + /// the authored bounding box carried by the transform, not an axis-aligned box + /// in the root's frame. Flat renderers get a minimal thickness. All boxes merged + /// into one outward-wound mesh. + /// + public RemeshNative.IndexedMesh OrientedBoxes() + { + int renderers = rendererToSpace.Length; + var mins = new Vector3[renderers]; var maxs = new Vector3[renderers]; var any = new bool[renderers]; + var toLocal = new Matrix4x4[renderers]; + for (int r = 0; r < renderers; ++r) toLocal[r] = rendererToSpace[r].inverse; + for (int i = 0; i < positions.Length; ++i) { + int r = vertexRenderer[i]; + var local = toLocal[r].MultiplyPoint3x4(positions[i]); + if (!any[r]) { any[r] = true; mins[r] = local; maxs[r] = local; } + else { mins[r] = Vector3.Min(mins[r], local); maxs[r] = Vector3.Max(maxs[r], local); } + } + var vertices = new List(); var tris = new List(); + int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; + for (int r = 0; r < renderers; ++r) { + if (!any[r]) continue; + Vector3 mn = mins[r], mx = maxs[r]; + // A flat renderer (plaza, road sheet, decal) would give a zero-thickness box: + // degenerate side faces and two z-fighting sheets. Pad any axis under 0.4% of + // the largest side to that, centred on the true extent. + var size = mx - mn; + float minSide = Mathf.Max(size.x, Mathf.Max(size.y, size.z)) * 0.004f; + for (int axis = 0; axis < 3; ++axis) { + if (size[axis] >= minSide) continue; + float centre = (mn[axis] + mx[axis]) * 0.5f; + mn[axis] = centre - minSide * 0.5f; mx[axis] = centre + minSide * 0.5f; + } + int baseIndex = vertices.Count; + var m = rendererToSpace[r]; + vertices.Add(m.MultiplyPoint3x4(new Vector3(mn.x, mn.y, mn.z))); vertices.Add(m.MultiplyPoint3x4(new Vector3(mx.x, mn.y, mn.z))); + vertices.Add(m.MultiplyPoint3x4(new Vector3(mx.x, mx.y, mn.z))); vertices.Add(m.MultiplyPoint3x4(new Vector3(mn.x, mx.y, mn.z))); + vertices.Add(m.MultiplyPoint3x4(new Vector3(mn.x, mn.y, mx.z))); vertices.Add(m.MultiplyPoint3x4(new Vector3(mx.x, mn.y, mx.z))); + vertices.Add(m.MultiplyPoint3x4(new Vector3(mx.x, mx.y, mx.z))); vertices.Add(m.MultiplyPoint3x4(new Vector3(mn.x, mx.y, mx.z))); + bool mirrored = m.determinant < 0; + for (int i = 0; i < 36; i += 3) { + tris.Add(baseIndex + faces[i]); + tris.Add(baseIndex + faces[mirrored ? i + 2 : i + 1]); + tris.Add(baseIndex + faces[mirrored ? i + 1 : i + 2]); + } + } + if (tris.Count == 0) return null; + return new RemeshNative.IndexedMesh { positions = vertices.ToArray(), indices = tris.ToArray() }; } /// diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 33b98e1f..3564d42e 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -125,13 +125,19 @@ public void OnDrawSidebar() if (StageHeader(RemeshPipeline.Stage.Remesh)) { settings.sourceShape = (RemeshShape)EditorGUILayout.EnumPopup(new GUIContent("Shape", - "LOD0: voxelize the captured geometry. Bounding box: replace every captured model with its axis-aligned box — a proxy for far LODs; " + - "materials and lighting still bake from the original geometry, projected onto the box. Box set: one box per renderer node, recursively " + - "split inside wherever a wide empty gap separates that renderer's geometry (L-/T-shapes fall apart into arms)."), settings.sourceShape); - if (settings.sourceShape == RemeshShape.BoxSet) - settings.boxSplitGap = EditorGUILayout.Slider(new GUIContent("Split gap", - "The smallest empty gap (a fraction of a box's extent) that still splits it in two. Lower values chase finer protrusions with more boxes."), - settings.boxSplitGap, 0.05f, 0.5f); + "LOD0: voxelize the captured geometry. Bounding box: one box per renderer along the renderer's own axes — a far-LOD proxy; " + + "materials and lighting bake from the original geometry, projected onto the box faces. Hull: a coarse blocky voxel hull " + + "simplified to a small triangle budget, keeping L/T footprints, courtyards and roof steps."), settings.sourceShape); + if (settings.sourceShape == RemeshShape.Hull) { + settings.hullResolution = EditorGUILayout.IntSlider(new GUIContent("Hull resolution", "Voxels along the longest axis of the coarse pass."), settings.hullResolution, 8, 64); + settings.hullTriangles = Mathf.Clamp(EditorGUILayout.IntField(new GUIContent("Hull triangles", "Triangle budget the hull is simplified to."), settings.hullTriangles), 12, 100000); + } + settings.minPartSize = EditorGUILayout.Slider(new GUIContent("Exclude parts smaller than", + "Connected pieces whose bounds diagonal is below this fraction of the model's diagonal (bolts, railings, debris) are left out before any shape is built. 0 = keep everything."), + settings.minPartSize, 0, 0.2f); + settings.minPartThickness = EditorGUILayout.Slider(new GUIContent("Exclude parts thinner than", + "Connected pieces whose smallest bounds side is below this fraction of the model's diagonal (decals, glass sheets, fences) are left out. 0 = keep everything."), + settings.minPartThickness, 0, 0.1f); settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", @@ -205,7 +211,9 @@ public void OnDrawSidebar() settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); settings.transferVertexAlpha = EditorGUILayout.Toggle("Vertex alpha", settings.transferVertexAlpha); - if (pipeline.Has(RemeshPipeline.Stage.Remesh) && !pipeline.SourceHasColors && (settings.transferVertexColor || settings.transferVertexAlpha)) + settings.vertexColorTint = EditorGUILayout.Toggle(new GUIContent("Vertex color tints albedo", + "Multiply the projected albedo by the source vertex color (RGB), for shaders that use the vertex color as a tint."), settings.vertexColorTint); + if (pipeline.Has(RemeshPipeline.Stage.Remesh) && !pipeline.SourceHasColors && (settings.transferVertexColor || settings.transferVertexAlpha || settings.vertexColorTint)) EditorGUILayout.HelpBox("The source has no vertex colors; the transfer writes white.", MessageType.None); StageButton(RemeshPipeline.Stage.Bake, "Bake"); } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 481dfd8b..b9a51d0c 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -31,6 +31,9 @@ public void SettingsRejectNaNAndInvalidResolution() Assert.Throws(() => new RemeshSettings { projectionDistance = 0 }.Validate()); Assert.Throws(() => new RemeshSettings { bakeSamples = 3 }.Validate()); Assert.Throws(() => new RemeshSettings { chartIterations = 0 }.Validate()); + Assert.Throws(() => new RemeshSettings { hullResolution = 2 }.Validate()); + Assert.Throws(() => new RemeshSettings { minPartSize = 0.6f }.Validate()); + Assert.Throws(() => new RemeshSettings { minPartThickness = float.NaN }.Validate()); Assert.DoesNotThrow(() => new RemeshSettings { targetTriangles = 0 }.Validate()); } [Test] @@ -213,5 +216,110 @@ public void ImageSamplingUsesLinearInterpolationAndWrapModes() image.wrapU=TextureWrapMode.Clamp; Assert.That(image.Sample(new Vector2(1.25f,0.5f)).r,Is.EqualTo(1).Within(1e-5f)); } + + static RemeshSource TwoParts(float diagonal) + { + // A 1×1 wall triangle and a 0.01-sized bolt triangle, two renderers, no shared vertices. + return new RemeshSource { + positions = new[] { Vector3.zero, Vector3.right, Vector3.up, + new Vector3(5,5,5), new Vector3(5.01f,5,5), new Vector3(5,5.01f,5) }, + normals = new Vector3[6], tangents = new Vector4[6], uv = new Vector2[6], + colors = new[] { Color.red, Color.red, Color.red, Color.blue, Color.blue, Color.blue }, hasColors = true, + indices = new[] { 0,1,2, 3,4,5 }, faceMaterials = new[] { 0, 0 }, faceLightmaps = new[] { -1, -1 }, + vertexRenderer = new[] { 0,0,0, 1,1,1 }, rendererToSpace = new[] { Matrix4x4.identity, Matrix4x4.identity }, + diagonal = diagonal, materials = new[] { new RemeshSource.Surface() } + }; + } + [Test] + public void FilterSmallPartsDropsTinyComponentsAndCompactsEveryStream() + { + var source = TwoParts(10); + Assert.IsTrue(source.FilterSmallParts(0.05f, 0, out int small, out int thin)); + Assert.AreEqual(1, small); Assert.AreEqual(0, thin); + Assert.AreEqual(3, source.positions.Length); + Assert.AreEqual(new[] { 0,1,2 }, source.indices); + Assert.AreEqual(1, source.faceMaterials.Length); Assert.AreEqual(1, source.faceLightmaps.Length); + Assert.AreEqual(3, source.colors.Length); Assert.AreEqual(Color.red, source.colors[2]); + Assert.AreEqual(new[] { 0,0,0 }, source.vertexRenderer); + Assert.AreEqual(10, source.diagonal); + // Thin test: both triangles are flat (zero z extent), so a thickness floor drops everything → refused, untouched. + var flat = TwoParts(10); + Assert.IsFalse(flat.FilterSmallParts(0, 0.01f, out small, out thin)); + Assert.AreEqual(0, small); Assert.AreEqual(0, thin); + Assert.AreEqual(6, flat.positions.Length); + // 0/0 is a no-op. + Assert.IsTrue(TwoParts(10).FilterSmallParts(0, 0, out _, out _)); + } + [Test] + public void OrientedBoxesFollowTheRendererAxesAndWindOutward() + { + // A 2×1 rectangle authored in renderer-local XZ, the renderer yawed 45°. + var yaw = Matrix4x4.TRS(new Vector3(3,0,0), Quaternion.Euler(0,45,0), Vector3.one); + Vector3[] local = { Vector3.zero, new Vector3(2,0,0), new Vector3(2,0,1), new Vector3(0,0,1) }; + var source = new RemeshSource { + positions = new Vector3[4], indices = new[] { 0,1,2, 0,2,3 }, + vertexRenderer = new[] { 0,0,0,0 }, rendererToSpace = new[] { yaw } + }; + for (int i = 0; i < 4; ++i) source.positions[i] = yaw.MultiplyPoint3x4(local[i]); + var box = source.OrientedBoxes(); + Assert.AreEqual(8, box.positions.Length); Assert.AreEqual(36, box.indices.Length); + // Corners land on the local 2×0×1 box, not on the ~2.1×2.1 axis-aligned one. + var inv = yaw.inverse; var mn = Vector3.one * float.MaxValue; var mx = Vector3.one * float.MinValue; + foreach (var p in box.positions) { var l = inv.MultiplyPoint3x4(p); mn = Vector3.Min(mn, l); mx = Vector3.Max(mx, l); } + Assert.That(mn.x, Is.EqualTo(0).Within(1e-5f)); Assert.That(mx.x, Is.EqualTo(2).Within(1e-5f)); + Assert.That(mn.z, Is.EqualTo(0).Within(1e-5f)); Assert.That(mx.z, Is.EqualTo(1).Within(1e-5f)); + // The flat axis is padded to 0.4% of the longest side, centred on the sheet. + Assert.That(mx.y - mn.y, Is.EqualTo(0.008f).Within(1e-5f)); + Assert.That(mx.y + mn.y, Is.EqualTo(0).Within(1e-5f)); + // A mirrored renderer gets its winding flipped back, so the signed volume keeps its sign. + float Volume(RemeshNative.IndexedMesh m) { + float v = 0; + for (int i = 0; i < m.indices.Length; i += 3) + v += Vector3.Dot(m.positions[m.indices[i]], Vector3.Cross(m.positions[m.indices[i+1]], m.positions[m.indices[i+2]])); + return v / 6; + } + var cube = new RemeshSource { positions = new[] { Vector3.zero, Vector3.one }, indices = new int[0], + vertexRenderer = new[] { 0, 0 }, rendererToSpace = new[] { Matrix4x4.identity } }; + var mirrored = new RemeshSource { positions = new[] { Vector3.zero, new Vector3(-1,1,1) }, indices = new int[0], + vertexRenderer = new[] { 0, 0 }, rendererToSpace = new[] { Matrix4x4.Scale(new Vector3(-1,1,1)) } }; + float straight = Volume(cube.OrientedBoxes()), flipped = Volume(mirrored.OrientedBoxes()); + Assert.That(Mathf.Abs(straight), Is.EqualTo(1).Within(1e-5f)); + Assert.That(flipped, Is.EqualTo(straight).Within(1e-5f)); + // No vertices at all → no box. + Assert.IsNull(new RemeshSource { positions = new Vector3[0], indices = new int[0], vertexRenderer = new int[0], + rendererToSpace = new[] { Matrix4x4.identity } }.OrientedBoxes()); + } + [Test] + public void VertexColorTintMultipliesTheLinearAlbedo() + { + var source = Source(); + RemeshBaker.Evaluate(source,0,new Vector3(1,0,0),Vector3.forward,new Vector4(1,0,0,1),true, + out var color, out _, out _, out _, out _); + // Vertex 0 is pure red: the tinted albedo keeps only the red channel of the material tint. + Assert.That(color.r, Is.EqualTo(new Color(0.25f,0.5f,0.75f).gamma.r).Within(1e-5f)); + Assert.That(color.g, Is.EqualTo(0).Within(1e-5f)); Assert.That(color.b, Is.EqualTo(0).Within(1e-5f)); + Assert.AreEqual(1, color.a); + // Half-way between red and green vertices: both channels at half strength, blue gone. + RemeshBaker.Evaluate(source,0,new Vector3(0.5f,0.5f,0),Vector3.forward,new Vector4(1,0,0,1),true, + out color, out _, out _, out _, out _); + Assert.That(color.r, Is.EqualTo(new Color(0.125f,0,0).gamma.r).Within(1e-5f)); + Assert.That(color.g, Is.EqualTo(new Color(0,0.25f,0).gamma.g).Within(1e-5f)); + Assert.That(color.b, Is.EqualTo(0).Within(1e-5f)); + // Off: untouched. + RemeshBaker.Evaluate(source,0,new Vector3(1,0,0),Vector3.forward,new Vector4(1,0,0,1),false, + out color, out _, out _, out _, out _); + Assert.That(color.g, Is.EqualTo(new Color(0.25f,0.5f,0.75f).gamma.g).Within(1e-5f)); + } + [Test] + public void NearestSeedsAssignsEveryTexelToItsClosestSeed() + { + var seed = new bool[16]; seed[0] = true; seed[15] = true; + var nearest = RemeshBaker.NearestSeeds(seed, 4, CancellationToken.None); + Assert.AreEqual(0, nearest[0]); Assert.AreEqual(0, nearest[1]); Assert.AreEqual(0, nearest[4]); + Assert.AreEqual(15, nearest[15]); Assert.AreEqual(15, nearest[14]); Assert.AreEqual(15, nearest[11]); + foreach (var n in nearest) Assert.That(n, Is.GreaterThanOrEqualTo(0)); + // No seeds at all: everything stays unassigned. + foreach (var n in RemeshBaker.NearestSeeds(new bool[16], 4, CancellationToken.None)) Assert.AreEqual(-1, n); + } } } From e5f133642222cacae71f9255b17d826da98525b3 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 13:22:39 +0000 Subject: [PATCH 070/130] fix(remesh): the part filter drops rods by cross-section, not sheets by thickness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Thin" was the wrong criterion: a gate leaf is thin but large and lies along the wall, and it was being excluded with the pipes. The filter now measures each connected piece along its own principal axes (covariance eigenvectors, so a diagonal pipe reads long × thin × thin, not as a fat axis-aligned box) and drops it only when the two smaller extents are both under the threshold: a cross-section the voxel grid cannot carry. One thin extent is a sheet and stays. The threshold is expressed in voxel cells (the capture's longest side over the voxel or hull resolution), default 1, replacing the diagonal-fraction "thinner than" slider. Settings key, UI, docs, changelog and tests follow. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Documentation~/REMESH_AND_BAKE.md | 20 ++++-- Editor/RemeshPipeline.cs | 13 ++-- Editor/RemeshSettings.cs | 11 +-- Editor/RemeshSource.cs | 111 +++++++++++++++++++++++------- Editor/Tools/RemeshBakeTool.cs | 8 ++- Tests/Editor/RemeshBakeTests.cs | 83 +++++++++++++++------- 7 files changed, 179 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c22c2d72..f82e27d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than / thinner than** (fractions of the capture diagonal) run before any shape and drop the connected components of the position-welded triangle graph whose bounds diagonal or thinnest side is under the threshold, so bolts, railings and decal sheets stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, off by default) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. The remesh and bake staleness keys cover the new settings. +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, off by default) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index c9cf223c..5029c0da 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -43,13 +43,19 @@ settings, marked "settings changed" in its header) and clears everything after i closed, rounded blob that follows L- and T-shapes without the box decomposition's guesswork. Both proxy shapes bake the original's materials and lighting through the proxy projection described under **Bake**. - **Exclude parts smaller than / thinner than** (fractions of the capture - diagonal, applied before any shape) drop connected pieces of the capture — - the connected components of the position-welded triangle graph, so a bolt or - railing goes even when it shares a mesh with the wall — whose bounds diagonal - or smallest bounds side falls under the threshold; the stage status reports - how many pieces went, and a filter that would remove everything is skipped - with a warning instead of producing an empty remesh. + **Exclude parts smaller than** (a fraction of the capture diagonal) and + **Exclude rods thinner than** (in voxel cells) run before any shape over the + connected pieces of the capture — the connected components of the + position-welded triangle graph, so a pipe goes even when it shares a mesh + with the wall. A piece goes when its extent is under the size fraction, or + when its cross-section — the two smaller of its three extents along its own + principal axes — is under the rod threshold, a cell being the model's + longest side divided by the voxel (or hull) resolution: that is the section + the grid cannot carry anyway. Thin is not the criterion: a gate leaf, a + glass pane or a decal has one thin extent and stays; pipes, cables, railings + and bolts have two and go. The stage status reports how many pieces went, + and a filter that would remove everything is skipped with a warning instead + of producing an empty remesh. SkinnedMeshRenderers are baked at their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 79874ef1..7c8a7db9 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -113,7 +113,7 @@ public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|" + - $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minPartThickness:F4}"; + $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minRodVoxels:F3}|{s.voxelResolution}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -215,12 +215,13 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken } long sourceTriangles = 0, resultTriangles = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; var shape = options.sourceShape; - // Part filter first, whatever the shape: small and thin pieces (bolts, - // railings, decals, glass) only add voxel noise to a remesh and inflate a - // proxy's boxes or hull. + // Part filter first, whatever the shape: small pieces and rods whose section + // the voxel grid cannot carry (bolts, pipes, cables, railings) only add voxel + // noise to a remesh and inflate a proxy's boxes or hull. for (int i = captures.Count - 1; i >= 0; --i) { var node = captures[i]; - if (!node.source.FilterSmallParts(options.minPartSize, options.minPartThickness, out int small, out int thin)) { + int gridResolution = shape == RemeshShape.Hull ? options.hullResolution : options.voxelResolution; + if (!node.source.FilterSmallParts(options.minPartSize, options.minRodVoxels, gridResolution, out int small, out int thin)) { if (hierarchy) { UvtLog.Warn("[Remesh] " + node.name + ": every part is below the size/thickness filter, skipped."); captures.RemoveAt(i); continue; } UvtLog.Warn("[Remesh] Every part is below the size/thickness filter; the filter was not applied."); } @@ -254,7 +255,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + (shape == RemeshShape.BoundingBox ? $" ({resultTriangles / 12:N0} oriented boxes)" : shape == RemeshShape.Hull ? " (hull)" : "") + - (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small, {droppedThin:N0} thin part(s)" : "") + "." + + (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small part(s), {droppedThin:N0} rod(s)" : "") + "." + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 34b5b2bf..b4c85d1b 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -81,11 +81,12 @@ public sealed class RemeshSettings public int hullResolution = 24; public int hullTriangles = 120; // Part filter, applied to the capture before any shape is built: connected - // pieces whose bounds diagonal is below minPartSize × capture diagonal (bolts, - // railings, debris) or whose smallest bounds side is below minPartThickness × - // capture diagonal (decals, glass sheets) are excluded. 0 = off. + // pieces whose extent is below minPartSize × capture diagonal (bolts, debris), or + // whose cross-section — the two smaller principal extents — is under minRodVoxels + // voxel cells (pipes, cables, railings: a section the voxel grid cannot carry) + // are excluded. Sheets of any thickness stay. 0 = off. public float minPartSize = 0.02f; - public float minPartThickness; + public float minRodVoxels = 1f; // Keep hierarchy: remesh every captured node SEPARATELY and save the result as a // hierarchy of meshes under one root (per-node materials, local transforms kept), // instead of welding everything into one _LOD0 mesh with one baked material. @@ -161,7 +162,7 @@ public void Validate() (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16) || hullResolution < 4 || hullResolution > 256 || hullTriangles < 12 || hullTriangles > 100000 || !Finite(minPartSize) || minPartSize < 0 || minPartSize > 0.5f || - !Finite(minPartThickness) || minPartThickness < 0 || minPartThickness > 0.5f) + !Finite(minRodVoxels) || minRodVoxels < 0 || minRodVoxels > 16f) throw new ArgumentException("Invalid remesh settings."); } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 060716a4..f283ce16 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -252,27 +252,37 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende } /// - /// Drops connected pieces that are too small or too thin to matter for a proxy: - /// a piece whose bounds diagonal is under minSize × capture diagonal, or whose - /// smallest bounds side is under minThickness × capture diagonal (0 disables - /// either test). Pieces are the connected components of the position-welded - /// triangle graph, so bolts and railings go even when they share a mesh with the - /// wall. Vertices are compacted; the capture diagonal is kept so later fractions - /// stay relative to the original model. Returns false (and changes nothing) when - /// every piece would go. + /// Drops connected pieces that are too small or too rod-like to matter: a piece + /// whose extent is under minSize × capture diagonal, or whose CROSS-SECTION — the + /// two smaller of its three extents along its own principal axes — is under + /// minRodVoxels voxel cells (a cell = the capture's largest side / resolution, + /// the grid the voxel remesh runs on). Pipes, cables, railings and bolts go; a + /// sheet of any thickness (a gate leaf, a glass pane, a decal) is one thin + /// extent, not two, and stays. 0 disables either test. Pieces are the connected + /// components of the position-welded triangle graph, so a pipe goes even when it + /// shares a mesh with the wall. Vertices are compacted; the capture diagonal is + /// kept so later fractions stay relative to the original model. Returns false + /// (and changes nothing) when every piece would go. /// - public bool FilterSmallParts(float minSize, float minThickness, out int removedSmall, out int removedThin) + public bool FilterSmallParts(float minSize, float minRodVoxels, int resolution, out int removedSmall, out int removedThin) { removedSmall = removedThin = 0; - if (minSize <= 0 && minThickness <= 0) return true; + if (minSize <= 0 && minRodVoxels <= 0) return true; int vertexCount = positions.Length, faceCount = indices.Length / 3; + if (vertexCount == 0) return true; + Vector3 boundsMin = positions[0], boundsMax = positions[0]; + foreach (var p in positions) { boundsMin = Vector3.Min(boundsMin, p); boundsMax = Vector3.Max(boundsMax, p); } + var extent = boundsMax - boundsMin; + float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, resolution); + float rodLimit = minRodVoxels * cell; // Weld by exact position so split-normal / UV-seam duplicates join their piece. var slot = new int[vertexCount]; var slots = new Dictionary<(int, int, int), int>(vertexCount); + var unique = new List(vertexCount); for (int i = 0; i < vertexCount; ++i) { var p = positions[i]; var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); - if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; } + if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; unique.Add(p); } slot[i] = id; } var parent = new int[slots.Count]; @@ -283,22 +293,22 @@ public bool FilterSmallParts(float minSize, float minThickness, out int removedS Union(slot[indices[f * 3]], slot[indices[f * 3 + 1]]); Union(slot[indices[f * 3]], slot[indices[f * 3 + 2]]); } - var mins = new Dictionary(); var maxs = new Dictionary(); - for (int i = 0; i < vertexCount; ++i) { - int root = Find(slot[i]); - if (mins.TryGetValue(root, out var mn)) { mins[root] = Vector3.Min(mn, positions[i]); maxs[root] = Vector3.Max(maxs[root], positions[i]); } - else { mins[root] = positions[i]; maxs[root] = positions[i]; } + var members = new Dictionary>(); + for (int i = 0; i < unique.Count; ++i) { + int root = Find(i); + if (!members.TryGetValue(root, out var list)) members[root] = list = new List(); + list.Add(unique[i]); } var drop = new HashSet(); - foreach (var pair in mins) { - var size = maxs[pair.Key] - pair.Value; - bool small = minSize > 0 && size.magnitude < minSize * diagonal; - bool thin = !small && minThickness > 0 && Mathf.Min(size.x, Mathf.Min(size.y, size.z)) < minThickness * diagonal; - if (small) ++removedSmall; else if (thin) ++removedThin; - if (small || thin) drop.Add(pair.Key); + foreach (var pair in members) { + var extents = PrincipalExtents(pair.Value); // descending + bool small = minSize > 0 && extents.magnitude < minSize * diagonal; + bool rod = !small && rodLimit > 0 && extents.y < rodLimit; + if (small) ++removedSmall; else if (rod) ++removedThin; + if (small || rod) drop.Add(pair.Key); } if (drop.Count == 0) return true; - if (drop.Count == mins.Count) { removedSmall = removedThin = 0; return false; } + if (drop.Count == members.Count) { removedSmall = removedThin = 0; return false; } // Compact faces, then vertices. var keptFaces = new List(faceCount); for (int f = 0; f < faceCount; ++f) @@ -331,6 +341,61 @@ T[] Compact(T[] source) { return true; } + /// + /// The extents of a point set along its own principal axes (covariance + /// eigenvectors), largest first — a pipe lying diagonally reads as long × thin × + /// thin here where its axis-aligned bounds would read as fat. + /// + internal static Vector3 PrincipalExtents(List points) + { + int n = points.Count; + if (n == 0) return Vector3.zero; + Vector3 mean = Vector3.zero; + foreach (var p in points) mean += p; + mean /= n; + // Covariance (symmetric 3×3), then Jacobi rotations to diagonalize it. + double xx = 0, yy = 0, zz = 0, xy = 0, xz = 0, yz = 0; + foreach (var p in points) { + double dx = p.x - mean.x, dy = p.y - mean.y, dz = p.z - mean.z; + xx += dx * dx; yy += dy * dy; zz += dz * dz; xy += dx * dy; xz += dx * dz; yz += dy * dz; + } + var a = new double[3, 3] { { xx, xy, xz }, { xy, yy, yz }, { xz, yz, zz } }; + var v = new double[3, 3] { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; + for (int sweep = 0; sweep < 32; ++sweep) { + double off = a[0, 1] * a[0, 1] + a[0, 2] * a[0, 2] + a[1, 2] * a[1, 2]; + if (off < 1e-24) break; + for (int p = 0; p < 2; ++p) + for (int q = p + 1; q < 3; ++q) { + if (Math.Abs(a[p, q]) < 1e-30) continue; + double theta = (a[q, q] - a[p, p]) / (2 * a[p, q]); + double t = Math.Sign(theta) / (Math.Abs(theta) + Math.Sqrt(theta * theta + 1)); + if (theta == 0) t = 1; + double c = 1 / Math.Sqrt(t * t + 1), sn = t * c; + for (int k = 0; k < 3; ++k) { + double akp = a[k, p], akq = a[k, q]; + a[k, p] = c * akp - sn * akq; a[k, q] = sn * akp + c * akq; + } + for (int k = 0; k < 3; ++k) { + double apk = a[p, k], aqk = a[q, k]; + a[p, k] = c * apk - sn * aqk; a[q, k] = sn * apk + c * aqk; + } + for (int k = 0; k < 3; ++k) { + double vkp = v[k, p], vkq = v[k, q]; + v[k, p] = c * vkp - sn * vkq; v[k, q] = sn * vkp + c * vkq; + } + } + } + var extents = new float[3]; + for (int axis = 0; axis < 3; ++axis) { + var dir = new Vector3((float)v[0, axis], (float)v[1, axis], (float)v[2, axis]); + float lo = float.MaxValue, hi = float.MinValue; + foreach (var p in points) { float d = Vector3.Dot(p - mean, dir); if (d < lo) lo = d; if (d > hi) hi = d; } + extents[axis] = hi - lo; + } + Array.Sort(extents); + return new Vector3(extents[2], extents[1], extents[0]); + } + /// /// One box per captured renderer, measured over that renderer's (filtered) /// vertices along the renderer's own axes and placed back in capture space — diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 3564d42e..bad4b165 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -135,9 +135,11 @@ public void OnDrawSidebar() settings.minPartSize = EditorGUILayout.Slider(new GUIContent("Exclude parts smaller than", "Connected pieces whose bounds diagonal is below this fraction of the model's diagonal (bolts, railings, debris) are left out before any shape is built. 0 = keep everything."), settings.minPartSize, 0, 0.2f); - settings.minPartThickness = EditorGUILayout.Slider(new GUIContent("Exclude parts thinner than", - "Connected pieces whose smallest bounds side is below this fraction of the model's diagonal (decals, glass sheets, fences) are left out. 0 = keep everything."), - settings.minPartThickness, 0, 0.1f); + settings.minRodVoxels = EditorGUILayout.Slider(new GUIContent("Exclude rods thinner than (voxels)", + "Connected pieces whose cross-section — the two smaller of their extents along their own axes — is under this many voxel cells " + + "(pipes, cables, railings, bolts) are left out; the grid cannot carry their section anyway. Sheets of any thickness (gate leaves, " + + "glass panes, decals) stay. A cell is the model's longest side divided by the voxel (or hull) resolution. 0 = keep everything."), + settings.minRodVoxels, 0, 4f); settings.lod0Only = EditorGUILayout.Toggle(new GUIContent("LOD0 only", "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index b9a51d0c..61008a51 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -33,7 +33,7 @@ public void SettingsRejectNaNAndInvalidResolution() Assert.Throws(() => new RemeshSettings { chartIterations = 0 }.Validate()); Assert.Throws(() => new RemeshSettings { hullResolution = 2 }.Validate()); Assert.Throws(() => new RemeshSettings { minPartSize = 0.6f }.Validate()); - Assert.Throws(() => new RemeshSettings { minPartThickness = float.NaN }.Validate()); + Assert.Throws(() => new RemeshSettings { minRodVoxels = float.NaN }.Validate()); Assert.DoesNotThrow(() => new RemeshSettings { targetTriangles = 0 }.Validate()); } [Test] @@ -217,38 +217,73 @@ public void ImageSamplingUsesLinearInterpolationAndWrapModes() Assert.That(image.Sample(new Vector2(1.25f,0.5f)).r,Is.EqualTo(1).Within(1e-5f)); } - static RemeshSource TwoParts(float diagonal) + // A 1×1 wall sheet at the origin, a 5-long × 0.01-wide rod strip at z = 3 (optionally + // yawed 45° so its axis-aligned bounds read fat), two renderers, no shared vertices. + // Rodrigues rotation: the test runs outside Unity too, where Quaternion is native. + static Vector3 Rotate(Vector3 p, Vector3 axis, float degrees) { - // A 1×1 wall triangle and a 0.01-sized bolt triangle, two renderers, no shared vertices. + axis.Normalize(); + float c = Mathf.Cos(degrees * Mathf.Deg2Rad), s = Mathf.Sin(degrees * Mathf.Deg2Rad); + return p * c + Vector3.Cross(axis, p) * s + axis * (Vector3.Dot(axis, p) * (1 - c)); + } + static RemeshSource SheetAndRod(float diagonal, bool diagonalRod) + { + Vector3 R(float x, float y) => (diagonalRod ? Rotate(new Vector3(x, y, 0), Vector3.forward, 45) : new Vector3(x, y, 0)) + new Vector3(0, 0, 3); return new RemeshSource { - positions = new[] { Vector3.zero, Vector3.right, Vector3.up, - new Vector3(5,5,5), new Vector3(5.01f,5,5), new Vector3(5,5.01f,5) }, - normals = new Vector3[6], tangents = new Vector4[6], uv = new Vector2[6], - colors = new[] { Color.red, Color.red, Color.red, Color.blue, Color.blue, Color.blue }, hasColors = true, - indices = new[] { 0,1,2, 3,4,5 }, faceMaterials = new[] { 0, 0 }, faceLightmaps = new[] { -1, -1 }, - vertexRenderer = new[] { 0,0,0, 1,1,1 }, rendererToSpace = new[] { Matrix4x4.identity, Matrix4x4.identity }, + positions = new[] { Vector3.zero, Vector3.right, Vector3.up, new Vector3(1, 1, 0), + R(0, 0), R(5, 0), R(5, 0.01f), R(0, 0.01f) }, + normals = new Vector3[8], tangents = new Vector4[8], uv = new Vector2[8], + colors = new[] { Color.red, Color.red, Color.red, Color.red, Color.blue, Color.blue, Color.blue, Color.blue }, hasColors = true, + indices = new[] { 0,1,2, 1,3,2, 4,5,6, 4,6,7 }, faceMaterials = new[] { 0, 0, 0, 0 }, faceLightmaps = new[] { -1, -1, -1, -1 }, + vertexRenderer = new[] { 0,0,0,0, 1,1,1,1 }, rendererToSpace = new[] { Matrix4x4.identity, Matrix4x4.identity }, diagonal = diagonal, materials = new[] { new RemeshSource.Surface() } }; } [Test] - public void FilterSmallPartsDropsTinyComponentsAndCompactsEveryStream() + public void FilterSmallPartsDropsRodsNotSheetsAndCompactsEveryStream() { - var source = TwoParts(10); - Assert.IsTrue(source.FilterSmallParts(0.05f, 0, out int small, out int thin)); - Assert.AreEqual(1, small); Assert.AreEqual(0, thin); - Assert.AreEqual(3, source.positions.Length); - Assert.AreEqual(new[] { 0,1,2 }, source.indices); - Assert.AreEqual(1, source.faceMaterials.Length); Assert.AreEqual(1, source.faceLightmaps.Length); - Assert.AreEqual(3, source.colors.Length); Assert.AreEqual(Color.red, source.colors[2]); - Assert.AreEqual(new[] { 0,0,0 }, source.vertexRenderer); + // Longest side 5 (x) at resolution 50 → one cell = 0.1: the 0.01-wide rod's section is + // under a cell, the sheet's second extent (1) is ten cells — it stays. + var source = SheetAndRod(10, false); + Assert.IsTrue(source.FilterSmallParts(0, 1f, 50, out int small, out int rods)); + Assert.AreEqual(0, small); Assert.AreEqual(1, rods); + Assert.AreEqual(4, source.positions.Length); + Assert.AreEqual(new[] { 0,1,2, 1,3,2 }, source.indices); + Assert.AreEqual(2, source.faceMaterials.Length); Assert.AreEqual(2, source.faceLightmaps.Length); + Assert.AreEqual(4, source.colors.Length); Assert.AreEqual(Color.red, source.colors[3]); + Assert.AreEqual(new[] { 0,0,0,0 }, source.vertexRenderer); Assert.AreEqual(10, source.diagonal); - // Thin test: both triangles are flat (zero z extent), so a thickness floor drops everything → refused, untouched. - var flat = TwoParts(10); - Assert.IsFalse(flat.FilterSmallParts(0, 0.01f, out small, out thin)); - Assert.AreEqual(0, small); Assert.AreEqual(0, thin); - Assert.AreEqual(6, flat.positions.Length); + // The same rod yawed 45°: its axis-aligned box is 3.5 × 3.5, its principal section still 0.01. + var yawed = SheetAndRod(10, true); + Assert.IsTrue(yawed.FilterSmallParts(0, 1f, 50, out small, out rods)); + Assert.AreEqual(1, rods); Assert.AreEqual(4, yawed.positions.Length); + // A coarser grid (cell 0.5) still keeps the sheet: one thin extent is not a rod. + var coarse = SheetAndRod(10, false); + Assert.IsTrue(coarse.FilterSmallParts(0, 1f, 10, out _, out rods)); + Assert.AreEqual(1, rods); Assert.AreEqual(4, coarse.positions.Length); + // Size test: the rod's extent (5) passes a 0.2 × 10 floor, the sheet's (√2) does not. + var sized = SheetAndRod(10, false); + Assert.IsTrue(sized.FilterSmallParts(0.2f, 0, 50, out small, out rods)); + Assert.AreEqual(1, small); Assert.AreEqual(0, rods); Assert.AreEqual(4, sized.positions.Length); + Assert.AreEqual(Color.blue, sized.colors[0]); + // A filter that would drop everything is refused and changes nothing. + var all = SheetAndRod(10, false); + Assert.IsFalse(all.FilterSmallParts(0.9f, 0, 50, out small, out rods)); + Assert.AreEqual(0, small); Assert.AreEqual(0, rods); Assert.AreEqual(8, all.positions.Length); // 0/0 is a no-op. - Assert.IsTrue(TwoParts(10).FilterSmallParts(0, 0, out _, out _)); + Assert.IsTrue(SheetAndRod(10, false).FilterSmallParts(0, 0, 50, out _, out _)); + } + [Test] + public void PrincipalExtentsFollowThePointSetsOwnAxes() + { + var pts = new System.Collections.Generic.List(); + foreach (var x in new[] { 0f, 4f }) foreach (var y in new[] { 0f, 2f }) foreach (var z in new[] { 0f, 0.5f }) + pts.Add(Rotate(Rotate(new Vector3(x, y, z), Vector3.up, 45), new Vector3(1, 0, 1), 30) + Vector3.one * 7); + var e = RemeshSource.PrincipalExtents(pts); + Assert.That(e.x, Is.EqualTo(4).Within(1e-3f)); + Assert.That(e.y, Is.EqualTo(2).Within(1e-3f)); + Assert.That(e.z, Is.EqualTo(0.5f).Within(1e-3f)); + Assert.AreEqual(Vector3.zero, RemeshSource.PrincipalExtents(new System.Collections.Generic.List())); } [Test] public void OrientedBoxesFollowTheRendererAxesAndWindOutward() From 78edac4a9bab4adfea2eacd82d74cee647babf9a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 13:41:55 +0000 Subject: [PATCH 071/130] feat(remesh): vertex color tints albedo by default; one shader warning per capture Vertex-tinting shaders multiply the albedo by the vertex color, so the bake now does the same unless turned off; meshes without colors are unaffected (the capture fills white), and the "no vertex colors" hint only follows the transfer toggles. Materials on shaders other than Standard / URP Lit were reported one line each on every capture. They are now collected per shader and reported in one summary line per capture naming the shader and its materials. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Documentation~/REMESH_AND_BAKE.md | 3 ++- Editor/RemeshSettings.cs | 7 ++++--- Editor/RemeshSource.cs | 19 ++++++++++++++++++- Editor/Tools/RemeshBakeTool.cs | 4 ++-- 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f82e27d3..970321ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, off by default) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. The remesh and bake staleness keys cover the new settings. +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 5029c0da..3940c771 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -143,7 +143,8 @@ settings, marked "settings changed" in its header) and clears everything after i into a silhouette-correct impostor. **Vertex color tints albedo** multiplies the baked albedo by the source's interpolated vertex color (RGB, read as linear, the way vertex-tinting shaders do), independently of the vertex color - transfer toggles; it is off by default. + transfer toggles. It is on by default and does nothing on meshes without + vertex colors; turn it off for shaders that ignore the vertex color. **Bake mode** selects what lands in the maps: *Materials* transfers the source maps; *Beauty* bakes the object as the player sees it — realtime/mixed light with hard ray shadows, the renderer's lightmaps (sampled at its UV2, RGBM/HDR diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index b4c85d1b..a4f16b5b 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -134,9 +134,10 @@ public sealed class RemeshSettings public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 public bool transferVertexColor; public bool transferVertexAlpha; - // Multiply the source albedo by the source vertex color (RGB) while projecting, - // for shaders that use the vertex color as an albedo tint. - public bool vertexColorTint; + // Multiply the source albedo by the source vertex color (RGB) while projecting — + // the way vertex-tinting shaders read it. On by default; a mesh without colors + // is unaffected. + public bool vertexColorTint = true; // Save (FBX): embed the baked maps into the binary FBX instead of // linking them by absolute path. Portable, but the file grows by the diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index f283ce16..b675d9c8 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -235,6 +235,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende } finally { if (mesh) Object.DestroyImmediate(mesh); } } + reader.FlushWarnings(); warnings = reader.warnings.ToArray(); } if (indices.Count == 0) { @@ -506,6 +507,21 @@ public Reader() } public void Dispose() { Object.DestroyImmediate(blit); } public readonly List warnings = new List(); + // Materials on shaders other than Standard / URP Lit, grouped by shader: one + // summary line per capture instead of one warning per material. + readonly Dictionary> genericShaders = new Dictionary>(); + public void FlushWarnings() + { + if (genericShaders.Count == 0) return; + int count = 0; var parts = new List(); + foreach (var pair in genericShaders) { + count += pair.Value.Count; + parts.Add("'" + pair.Key + "' (" + string.Join(", ", pair.Value) + ")"); + } + warnings.Add(count + " material(s) use shaders other than Standard or URP/Lit; baking base colour, normal, occlusion and emission from common property names: " + + string.Join("; ", parts) + "."); + genericShaders.Clear(); + } public Surface Capture(Material m) { string shaderName = m.shader ? m.shader.name : ""; @@ -539,7 +555,8 @@ public Surface Capture(Material m) // say so, instead of refusing the whole model. Surface CaptureGeneric(Material m, string shaderName) { - warnings.Add(m.name + ": shader '" + shaderName + "' is not Standard or URP/Lit; baking base colour, normal, occlusion and emission from common property names."); + if (!genericShaders.TryGetValue(shaderName, out var names)) genericShaders[shaderName] = names = new List(); + names.Add(m.name); string color = First(m, "_BaseMap", "_MainTex", "_BaseColorMap", "_AlbedoMap", "_Albedo"); string normal = First(m, "_BumpMap", "_NormalMap"); bool emissive = m.HasProperty("_EmissionColor") && (m.IsKeywordEnabled("_EMISSION") || m.HasProperty("_EmissionMap") && m.GetTexture("_EmissionMap")); diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index bad4b165..02d8cea3 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -214,8 +214,8 @@ public void OnDrawSidebar() settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); settings.transferVertexAlpha = EditorGUILayout.Toggle("Vertex alpha", settings.transferVertexAlpha); settings.vertexColorTint = EditorGUILayout.Toggle(new GUIContent("Vertex color tints albedo", - "Multiply the projected albedo by the source vertex color (RGB), for shaders that use the vertex color as a tint."), settings.vertexColorTint); - if (pipeline.Has(RemeshPipeline.Stage.Remesh) && !pipeline.SourceHasColors && (settings.transferVertexColor || settings.transferVertexAlpha || settings.vertexColorTint)) + "Multiply the projected albedo by the source vertex color (RGB), the way vertex-tinting shaders read it. Meshes without vertex colors are unaffected; turn off for shaders that ignore the vertex color."), settings.vertexColorTint); + if (pipeline.Has(RemeshPipeline.Stage.Remesh) && !pipeline.SourceHasColors && (settings.transferVertexColor || settings.transferVertexAlpha)) EditorGUILayout.HelpBox("The source has no vertex colors; the transfer writes white.", MessageType.None); StageButton(RemeshPipeline.Stage.Bake, "Bake"); } From 2738e4c1856a1f44a9c4801353001221d66455d1 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 13:53:47 +0000 Subject: [PATCH 072/130] fix(remesh): no normal-tilt warning on heavy reductions and proxy shapes The RemeshDiag "map is dominated by extreme normals" warning assumed a mild decimation; at 5:1 and beyond, and on box/hull proxies, the geometry is meant to move into the normal map and a strongly tilted map is the correct result. The warning now fires only when the target keeps more than a fifth of the source triangles under the LOD0 shape. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/RemeshPipeline.cs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 970321ab..cf371145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The remesh and bake staleness keys cover the new settings. +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 7c8a7db9..297ea2f6 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -346,7 +346,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to node.mesh.colors = node.maps.vertexColors; sourceTriangles += source.indices.Length / 3; targetTriangles += target.indices.Length / 3; misses += node.maps.misses; covered += node.maps.covered; empty += node.maps.empty; warnings += source.warnings.Length; - LogDiagnostics(node); + LogDiagnostics(node, options.sourceShape); } token.ThrowIfCancellationRequested(); var primary = Primary; @@ -363,7 +363,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to // border normals, nearest-query fallbacks and normal-map tilt. A loud, // strongly-tilted map on a smooth-ish source is the signature of displaced // projection samples; loud fraction > 5% also warns on its own. - static void LogDiagnostics(Node node) + static void LogDiagnostics(Node node, RemeshShape shape) { var baked = node.maps; var captured = node.source; var target = node.geometry; // Source and target live in the same capture space by construction; the @@ -392,7 +392,12 @@ static void LogDiagnostics(Node node) UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + $"target/source bounds diagonal ratio is {scaleRatio:F2} — the remeshed mesh no longer matches the source size. " + "Check voxel resolution, small-part pruning and simplification settings, and rebake."); - if (baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) + // A heavy reduction (or a proxy shape) moves the geometry INTO the normal map + // on purpose; a strongly tilted map is the correct result there, not a sign + // of displaced samples, so the warning only fires on mild decimations. + int sourceFaces = captured.indices.Length / 3, targetFaces = target.indices.Length / 3; + bool heavyReduction = shape != RemeshShape.LOD0 || targetFaces * 5 < sourceFaces; + if (!heavyReduction && baked.loudTexels > baked.covered / 20 && baked.meanTiltDeg > 30f) UvtLog.Warn(UvtLog.Category.RemeshDiag, prefix + $"{100.0 * baked.loudTexels / Mathf.Max(1, baked.covered):F1}% of texels lean >45° with a {baked.meanTiltDeg:F0}° mean tilt — " + "the map is dominated by extreme normals. Check the hard-edge mode, projection distance and cage fit, " + From a7000d93c3c38ec8948e6b6062944e739260059e Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 16:08:16 +0000 Subject: [PATCH 073/130] feat(remesh): outside-in winding probe; Scene highlight of what the capture keeps and drops The front-face filter's orientation probe compared source face normals with the target's cage normals at the nearest point, which splits its vote once the target is a coarse proxy and switched the filter off where thin walls matter most. It now judges from outside: 256 rays from a sphere around the source toward its centre meet an outer surface first, and that triangle's winding against the ray decides. Same 70% majority rule and off state for open sheets; the target's density no longer matters. "Highlight capture in Scene" (remesh stage) paints the source in the Scene view as the remesh stage will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar. It is a geometry-only capture (no material or texture reads) drawn over the originals with a depth offset. The part filter is split into a non-mutating classifier the highlight paints from and the compaction the pipeline runs. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 3 +- Documentation~/REMESH_AND_BAKE.md | 15 ++- Editor/RemeshBaker.cs | 60 +++++++--- Editor/RemeshCaptureHighlight.cs | 150 +++++++++++++++++++++++++ Editor/RemeshCaptureHighlight.cs.meta | 11 ++ Editor/RemeshSource.cs | 156 ++++++++++++++++++-------- Editor/Tools/RemeshBakeTool.cs | 38 ++++++- Tests/Editor/RemeshBakeTests.cs | 37 ++++++ 8 files changed, 400 insertions(+), 70 deletions(-) create mode 100644 Editor/RemeshCaptureHighlight.cs create mode 100644 Editor/RemeshCaptureHighlight.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index cf371145..29f93208 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. The remesh and bake staleness keys cover the new settings. +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed @@ -29,6 +29,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. +- **Remesh & Bake: the front-face filter's orientation probe no longer depends on the target's density.** The probe compared source face normals with the target's cage normals at the nearest point, which splits its vote once the target is a coarse proxy (a 112-triangle garage block, a box, a hull) and switched the filter off exactly where thin walls matter most. It now judges from outside: 256 rays from a sphere around the source toward its centre meet an outer surface first, and that triangle's winding against the ray decides; the 70% majority rule and the off state for open sheets are unchanged. - **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. - **Skinned captures bake the pose the scene shows.** `BakeMesh` uses the last evaluated skinning, which in edit mode can predate the current bone transforms — every skinned part then baked at its authored origin instead of its posed place. The bone list is reassigned before baking to mark the skinning dirty and force a re-evaluation. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 3940c771..0f1e60b2 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -55,7 +55,13 @@ settings, marked "settings changed" in its header) and clears everything after i glass pane or a decal has one thin extent and stays; pipes, cables, railings and bolts have two and go. The stage status reports how many pieces went, and a filter that would remove everything is skipped with a warning instead - of producing an empty remesh. + of producing an empty remesh. **Highlight capture in Scene** paints the + source in the Scene view as the remesh stage will see it, before any stage + runs and live with the filter sliders: green = captured, orange = dropped + as a small part, red = dropped as a rod, grey = renderer the capture skips + (LOD1+, collision, disabled). It is a geometry-only capture (no material or + texture reads) drawn over the originals with a depth offset; the sidebar + shows the triangle counts per class. SkinnedMeshRenderers are baked at their current pose (skinning re-evaluated first — in edit mode it can be stale and bake every part at its authored origin) and then captured like static @@ -122,8 +128,11 @@ settings, marked "settings changed" in its header) and clears everything after i Rays only accept source triangles facing them (front-face filter): a plain closest-hit ray travels twice the projection distance through the target and pierces thin walls, sampling the far side's texture as periodic mirrored - patches; the filter's orientation is set by a consensus probe, and it stays - off when the probe has no clear majority. The 3D preview's **Cage** toggle + patches; the filter's orientation comes from a probe that looks at the + source from OUTSIDE — rays cast from a sphere around it toward its centre + meet an outer surface first, and that triangle's winding against the ray + gives the answer whatever the target's density — and it stays off when + fewer than 70% of the rays agree (open sheets, mixed winding). The 3D preview's **Cage** toggle draws the projection limits — the result mesh inflated by ±the ray travel along the same welded cage normals, orange for the outer (ray origin) shell, blue for the inner (ray end) shell — live from the current projection diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 7397ff83..26c2e29c 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -66,24 +66,14 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // travels 2×distance THROUGH the target and can pierce a thin wall, sampling // the far side's texture (periodic mirrored/garbled patches). The filter only // accepts source triangles whose normal faces the ray origin. Source winding - // is not guaranteed to agree with the target's, so a consensus probe orients - // the normals first; without a clear majority (≥70% of ≥8 samples) the filter - // stays off and the bake behaves exactly as before. - int faces = source.indices.Length / 3; - var faceNormals = new Vector3[faces]; - for (int f = 0; f < faces; ++f) { - int a = source.indices[f * 3], b = source.indices[f * 3 + 1], c = source.indices[f * 3 + 2]; - faceNormals[f] = Vector3.Cross(source.positions[b] - source.positions[a], source.positions[c] - source.positions[a]).normalized; - } - int agree = 0, conflict = 0, stride = Math.Max(1, target.positions.Length / 128); - for (int i = 0; i < target.positions.Length; i += stride) { - var nearest = bvh.FindNearest(target.positions[i]); - if (nearest.triangleIndex < 0) continue; - if (Vector3.Dot(faceNormals[nearest.triangleIndex], cage[i]) >= 0f) ++agree; else ++conflict; - } - bool facingFilter = agree + conflict >= 8 && Math.Max(agree, conflict) * 10 >= (agree + conflict) * 7; - if (facingFilter && conflict > agree) - for (int f = 0; f < faces; ++f) faceNormals[f] = -faceNormals[f]; + // is not guaranteed to be outward, so a probe orients the normals first; + // without a clear majority the filter stays off and the bake behaves exactly + // as before. + var faceNormals = FaceNormals(source.positions, source.indices); + int winding = ProbeWinding(bvh, source.positions, faceNormals); + bool facingFilter = winding != 0; + if (winding < 0) + for (int f = 0; f < faceNormals.Length; ++f) faceNormals[f] = -faceNormals[f]; result.facingFilter = facingFilter; Vector3[] facing = facingFilter ? faceNormals : null; int misses = 0, rayFallbacks = 0, empties = 0; @@ -434,6 +424,40 @@ static void Basis(Vector3 n, Vector4 tangent, out Vector3 t, out Vector3 b) b = Vector3.Cross(n, t) * (tangent.w < 0 ? -1 : 1); } + /// + /// Which way the source winds, judged from OUTSIDE: rays from a sphere around the + /// source toward its centre always meet an outer surface first, so the sign of + /// that triangle's winding normal against the ray is the answer — whatever the + /// target looks like (the old probe compared source normals with the target's + /// cage, which falls apart once the target is a 100-triangle proxy of a 2000- + /// triangle block). +1 outward, -1 inverted, 0 when fewer than 8 rays hit or + /// under 70% agree (open sheets, mixed winding): the caller leaves the filter off. + /// + internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] faceNormals) + { + if (positions.Length == 0) return 0; + Vector3 mn = positions[0], mx = positions[0]; + foreach (var p in positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } + Vector3 centre = (mn + mx) * 0.5f; + float radius = Mathf.Max((mx - mn).magnitude * 0.5f, 1e-6f); + const int probes = 256; + int outward = 0, inward = 0; + float golden = Mathf.PI * (3f - Mathf.Sqrt(5f)); + for (int i = 0; i < probes; ++i) { + // Fibonacci sphere: evenly spread directions, deterministic. + float y = 1f - 2f * (i + 0.5f) / probes, r = Mathf.Sqrt(Mathf.Max(0f, 1f - y * y)), a = golden * i; + var dir = new Vector3(Mathf.Cos(a) * r, y, Mathf.Sin(a) * r); + var hit = bvh.Raycast(centre + dir * (radius * 2f), -dir, radius * 4f); + if (hit.triangleIndex < 0) continue; + // The ray travels along -dir; a triangle facing the ray origin has its + // winding normal pointing back along +dir. + if (Vector3.Dot(faceNormals[hit.triangleIndex], dir) > 0f) ++outward; else ++inward; + } + int total = outward + inward; + if (total < 8 || Math.Max(outward, inward) * 10 < total * 7) return 0; + return outward >= inward ? 1 : -1; + } + static Vector3[] FaceNormals(Vector3[] positions, int[] indices) { var normals = new Vector3[indices.Length / 3]; diff --git a/Editor/RemeshCaptureHighlight.cs b/Editor/RemeshCaptureHighlight.cs new file mode 100644 index 00000000..7480b04c --- /dev/null +++ b/Editor/RemeshCaptureHighlight.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Scene-view paint of what the remesh stage will capture under the source root, + /// built from a geometry-only capture (no material or texture reads): kept parts + /// green, parts the size filter drops orange, rods the section filter drops red, + /// renderers the capture skips (LOD1+, collision, disabled) grey. Drawn over the + /// scene with a depth offset so the paint wins the z-fight against the originals. + /// + internal sealed class RemeshCaptureHighlight : IDisposable + { + static readonly Color Kept = new Color(0.25f, 0.85f, 0.35f); + static readonly Color Small = new Color(1f, 0.6f, 0.1f); + static readonly Color Rod = new Color(0.95f, 0.2f, 0.2f); + static readonly Color Excluded = new Color(0.4f, 0.4f, 0.4f); + + Mesh painted; + Material paint, grey; + readonly List<(Mesh mesh, Matrix4x4 matrix)> excluded = new List<(Mesh, Matrix4x4)>(); + public string Key { get; private set; } + public string Summary { get; private set; } = ""; + public string Error { get; private set; } + + public static string KeyFor(GameObject root, RemeshSettings s) => + $"{(root ? root.GetInstanceID() : 0)}|{s.lod0Only}|{s.keepHierarchy}|{s.sourceShape}|{s.voxelResolution}|{s.hullResolution}|{s.minPartSize:F4}|{s.minRodVoxels:F3}"; + + /// Rebuilds the paint for root under the given settings (main thread). + public void Build(GameObject root, RemeshSettings settings) + { + Clear(); + Key = KeyFor(root, settings); + Error = null; + if (!root) return; + try { + var included = RemeshSource.CollectRenderers(root, settings.lod0Only); + var includedSet = new HashSet(included); + foreach (var renderer in root.GetComponentsInChildren()) { + if (includedSet.Contains(renderer)) continue; + var mesh = MeshOf(renderer); + if (mesh) excluded.Add((mesh, renderer.localToWorldMatrix)); + } + int gridResolution = settings.sourceShape == RemeshShape.Hull ? settings.hullResolution : settings.voxelResolution; + var vertices = new List(); var colors = new List(); var indices = new List(); + long keptFaces = 0, smallFaces = 0, rodFaces = 0; int skippedNodes = 0; + void Add(RemeshSource source, Matrix4x4 spaceToWorld, byte[] cls, bool nodeSkipped) + { + int baseIndex = vertices.Count; + var vertexClass = new byte[source.positions.Length]; + int faceCount = source.indices.Length / 3; + for (int f = 0; f < faceCount; ++f) { + byte c = nodeSkipped ? (byte)255 : cls != null ? cls[f] : RemeshSource.PartKept; + if (c == RemeshSource.PartKept) ++keptFaces; else if (c == RemeshSource.PartSmall) ++smallFaces; else if (c == RemeshSource.PartRod) ++rodFaces; + for (int k = 0; k < 3; ++k) vertexClass[source.indices[f * 3 + k]] = c; + } + for (int i = 0; i < source.positions.Length; ++i) { + vertices.Add(spaceToWorld.MultiplyPoint3x4(source.positions[i])); + byte c = vertexClass[i]; + colors.Add(c == RemeshSource.PartKept ? Kept : c == RemeshSource.PartSmall ? Small : c == RemeshSource.PartRod ? Rod : Excluded); + } + foreach (var index in source.indices) indices.Add(baseIndex + index); + } + if (!settings.keepHierarchy) { + var source = RemeshSource.Capture(root.transform.worldToLocalMatrix, included, required: false, geometryOnly: true); + if (source != null) { + var cls = source.ClassifyParts(settings.minPartSize, settings.minRodVoxels, gridResolution); + // The pipeline refuses a filter that would empty the weld: everything stays. + if (cls != null && Array.TrueForAll(cls, c => c != RemeshSource.PartKept)) cls = null; + Add(source, root.transform.localToWorldMatrix, cls, false); + } + } + else { + foreach (var renderer in included) { + var source = RemeshSource.Capture(renderer.transform.worldToLocalMatrix, new[] { renderer }, required: false, geometryOnly: true); + if (source == null) continue; + var cls = source.ClassifyParts(settings.minPartSize, settings.minRodVoxels, gridResolution); + // A node whose every part fails the filter is skipped by the pipeline. + bool skipped = cls != null && Array.TrueForAll(cls, c => c != RemeshSource.PartKept); + if (skipped) ++skippedNodes; + Add(source, renderer.transform.localToWorldMatrix, cls, skipped); + } + } + if (indices.Count > 0) { + painted = new Mesh { name = "RemeshCaptureHighlight", hideFlags = HideFlags.HideAndDontSave, + indexFormat = vertices.Count > 65000 ? IndexFormat.UInt32 : IndexFormat.UInt16 }; + painted.SetVertices(vertices); painted.SetColors(colors); + painted.SetIndices(indices, MeshTopology.Triangles, 0, false); + painted.RecalculateNormals(); painted.RecalculateBounds(); + } + Summary = $"{keptFaces:N0} triangles captured · {smallFaces:N0} in small parts · {rodFaces:N0} in rods · {excluded.Count:N0} renderer(s) excluded" + + (skippedNodes > 0 ? $" · {skippedNodes:N0} node(s) fully filtered" : ""); + } + catch (Exception e) { Clear(); Error = e.Message; } + } + + /// Draws the paint in the current Scene view (Repaint event only). + public void Draw() + { + if (Event.current.type != EventType.Repaint) return; + if (!EnsureMaterials()) return; + if (painted) { paint.SetPass(0); Graphics.DrawMeshNow(painted, Matrix4x4.identity); } + if (excluded.Count == 0) return; + grey.SetPass(0); + foreach (var (mesh, matrix) in excluded) { + if (!mesh) continue; + for (int sub = 0; sub < mesh.subMeshCount; ++sub) + if (mesh.GetTopology(sub) == MeshTopology.Triangles) Graphics.DrawMeshNow(mesh, matrix, sub); + } + } + + static Mesh MeshOf(Renderer renderer) + { + if (renderer is SkinnedMeshRenderer skin) return skin.sharedMesh; + if (renderer is MeshRenderer && renderer.TryGetComponent(out var filter)) return filter.sharedMesh; + return null; + } + + bool EnsureMaterials() + { + if (paint && grey) return true; + var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); + if (!shader) return false; + paint = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + paint.SetFloat("_UseVertexColor", 1); paint.SetFloat("_Lit", 1); paint.SetFloat("_DepthOffset", -1); + grey = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + grey.SetColor("_Color", Excluded); grey.SetFloat("_Lit", 1); grey.SetFloat("_DepthOffset", -1); + return true; + } + + public void Clear() + { + if (painted) Object.DestroyImmediate(painted); + painted = null; excluded.Clear(); Summary = ""; Key = null; + } + + public void Dispose() + { + Clear(); + if (paint) Object.DestroyImmediate(paint); + if (grey) Object.DestroyImmediate(grey); + paint = grey = null; + } + } +} diff --git a/Editor/RemeshCaptureHighlight.cs.meta b/Editor/RemeshCaptureHighlight.cs.meta new file mode 100644 index 00000000..e6646e82 --- /dev/null +++ b/Editor/RemeshCaptureHighlight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b3f7cae5aeb4a2b89261d3e053391b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index b675d9c8..809acd22 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -107,7 +107,7 @@ public static RemeshSource Capture(GameObject root, bool lod0Only) /// matrix is worldToSpace. Returns null when they contribute no triangles and /// required is false; throws otherwise. /// - public static RemeshSource Capture(Matrix4x4 worldToSpace, IList renderers, bool required = true) + public static RemeshSource Capture(Matrix4x4 worldToSpace, IList renderers, bool required = true, bool geometryOnly = false) { var positions = new List(); var normals = new List(); var tangents = new List(); var uv = new List(); var colors = new List(); @@ -195,7 +195,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende if (lmUv.Length == p.Length) uv2.AddRange(lmUv); else for (int i = 0; i < p.Length; ++i) uv2.Add(Vector2.zero); int lightmapId = -1; - int lightmapIndex = renderer.lightmapIndex; + int lightmapIndex = geometryOnly ? -1 : renderer.lightmapIndex; if (lightmapIndex >= 0 && lightmapIndex < LightmapSettings.lightmaps.Length) { var data = LightmapSettings.lightmaps[lightmapIndex]; var map = data.lightmapColor; @@ -215,10 +215,18 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende var shared = renderer.sharedMaterials; for (int sub = 0; sub < mesh.subMeshCount; ++sub) { if (mesh.GetTopology(sub) != MeshTopology.Triangles) continue; - if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); - if (!materialIds.TryGetValue(shared[sub], out int material)) { - material = materials.Count; - materials.Add(reader.Capture(shared[sub])); materialIds.Add(shared[sub], material); + int material = 0; + if (geometryOnly) { + // Geometry-only captures (the Scene highlight) never read materials + // or textures: one placeholder surface for every face. + if (materials.Count == 0) materials.Add(new Surface()); + } + else { + if (sub >= shared.Length || !shared[sub]) throw new InvalidOperationException(renderer.name + " has a missing material."); + if (!materialIds.TryGetValue(shared[sub], out material)) { + material = materials.Count; + materials.Add(reader.Capture(shared[sub])); materialIds.Add(shared[sub], material); + } } var tri = mesh.GetTriangles(sub); for (int i = 0; i < tri.Length; i += 3) { @@ -268,52 +276,27 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende public bool FilterSmallParts(float minSize, float minRodVoxels, int resolution, out int removedSmall, out int removedThin) { removedSmall = removedThin = 0; - if (minSize <= 0 && minRodVoxels <= 0) return true; - int vertexCount = positions.Length, faceCount = indices.Length / 3; - if (vertexCount == 0) return true; - Vector3 boundsMin = positions[0], boundsMax = positions[0]; - foreach (var p in positions) { boundsMin = Vector3.Min(boundsMin, p); boundsMax = Vector3.Max(boundsMax, p); } - var extent = boundsMax - boundsMin; - float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, resolution); - float rodLimit = minRodVoxels * cell; - // Weld by exact position so split-normal / UV-seam duplicates join their piece. - var slot = new int[vertexCount]; - var slots = new Dictionary<(int, int, int), int>(vertexCount); - var unique = new List(vertexCount); - for (int i = 0; i < vertexCount; ++i) { - var p = positions[i]; - var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); - if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; unique.Add(p); } - slot[i] = id; - } - var parent = new int[slots.Count]; - for (int i = 0; i < parent.Length; ++i) parent[i] = i; - int Find(int x) { while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } return x; } - void Union(int a, int b) { a = Find(a); b = Find(b); if (a != b) parent[a] = b; } + var cls = ClassifyParts(minSize, minRodVoxels, resolution); + if (cls == null) return true; + int faceCount = indices.Length / 3, vertexCount = positions.Length, dropped = 0; + foreach (var c in cls) if (c != PartKept) ++dropped; + if (dropped == 0) return true; + if (dropped == faceCount) return false; + // Pieces are counted once each: a component's faces all carry the same class, + // and a component is identified by its root slot below. + var slot = WeldSlots(out int slotCount); + var parent = ComponentForest(slot, slotCount); + var counted = new HashSet(); for (int f = 0; f < faceCount; ++f) { - Union(slot[indices[f * 3]], slot[indices[f * 3 + 1]]); - Union(slot[indices[f * 3]], slot[indices[f * 3 + 2]]); + if (cls[f] == PartKept) continue; + int root = FindRoot(parent, slot[indices[f * 3]]); + if (!counted.Add(root)) continue; + if (cls[f] == PartSmall) ++removedSmall; else ++removedThin; } - var members = new Dictionary>(); - for (int i = 0; i < unique.Count; ++i) { - int root = Find(i); - if (!members.TryGetValue(root, out var list)) members[root] = list = new List(); - list.Add(unique[i]); - } - var drop = new HashSet(); - foreach (var pair in members) { - var extents = PrincipalExtents(pair.Value); // descending - bool small = minSize > 0 && extents.magnitude < minSize * diagonal; - bool rod = !small && rodLimit > 0 && extents.y < rodLimit; - if (small) ++removedSmall; else if (rod) ++removedThin; - if (small || rod) drop.Add(pair.Key); - } - if (drop.Count == 0) return true; - if (drop.Count == members.Count) { removedSmall = removedThin = 0; return false; } // Compact faces, then vertices. var keptFaces = new List(faceCount); for (int f = 0; f < faceCount; ++f) - if (!drop.Contains(Find(slot[indices[f * 3]]))) keptFaces.Add(f); + if (cls[f] == PartKept) keptFaces.Add(f); var remap = new int[vertexCount]; for (int i = 0; i < vertexCount; ++i) remap[i] = -1; int next = 0; @@ -342,6 +325,85 @@ T[] Compact(T[] source) { return true; } + public const byte PartKept = 0, PartSmall = 1, PartRod = 2; + + /// + /// The part filter's verdict per face without changing the capture: PartKept, + /// PartSmall (extent under minSize × diagonal) or PartRod (cross-section under + /// minRodVoxels cells). Null when both thresholds are 0 or the capture is empty. + /// The Scene highlight paints from this; FilterSmallParts compacts by it. + /// + public byte[] ClassifyParts(float minSize, float minRodVoxels, int resolution) + { + if (minSize <= 0 && minRodVoxels <= 0) return null; + int vertexCount = positions.Length, faceCount = indices.Length / 3; + if (vertexCount == 0 || faceCount == 0) return null; + Vector3 boundsMin = positions[0], boundsMax = positions[0]; + foreach (var p in positions) { boundsMin = Vector3.Min(boundsMin, p); boundsMax = Vector3.Max(boundsMax, p); } + var extent = boundsMax - boundsMin; + float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, resolution); + float rodLimit = minRodVoxels * cell; + var slot = WeldSlots(out int slotCount); + var parent = ComponentForest(slot, slotCount); + var members = new Dictionary>(); + var firstOfSlot = new int[slotCount]; + for (int i = 0; i < slotCount; ++i) firstOfSlot[i] = -1; + for (int i = 0; i < vertexCount; ++i) { + if (firstOfSlot[slot[i]] >= 0) continue; // one point per welded position + firstOfSlot[slot[i]] = i; + int root = FindRoot(parent, slot[i]); + if (!members.TryGetValue(root, out var list)) members[root] = list = new List(); + list.Add(positions[i]); + } + var verdict = new Dictionary(); + foreach (var pair in members) { + var extents = PrincipalExtents(pair.Value); // descending + bool small = minSize > 0 && extents.magnitude < minSize * diagonal; + bool rod = !small && rodLimit > 0 && extents.y < rodLimit; + verdict[pair.Key] = small ? PartSmall : rod ? PartRod : PartKept; + } + var cls = new byte[faceCount]; + for (int f = 0; f < faceCount; ++f) cls[f] = verdict[FindRoot(parent, slot[indices[f * 3]])]; + return cls; + } + + // Weld by exact position so split-normal / UV-seam duplicates share a slot. + int[] WeldSlots(out int slotCount) + { + var slot = new int[positions.Length]; + var slots = new Dictionary<(int, int, int), int>(positions.Length); + for (int i = 0; i < positions.Length; ++i) { + var p = positions[i]; + var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); + if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; } + slot[i] = id; + } + slotCount = slots.Count; + return slot; + } + + // Union-find over the welded slots joined by the triangles. + int[] ComponentForest(int[] slot, int slotCount) + { + var parent = new int[slotCount]; + for (int i = 0; i < slotCount; ++i) parent[i] = i; + for (int f = 0; f * 3 + 2 < indices.Length; ++f) { + int a = FindRoot(parent, slot[indices[f * 3]]); + int b = FindRoot(parent, slot[indices[f * 3 + 1]]); + int c = FindRoot(parent, slot[indices[f * 3 + 2]]); + if (a != b) parent[a] = b; + a = FindRoot(parent, a); + if (a != c) parent[a] = c; + } + return parent; + } + + static int FindRoot(int[] parent, int x) + { + while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } + return x; + } + /// /// The extents of a point set along its own principal axes (covariance /// eigenvectors), largest first — a pipe lying diagonally reads as long × thin × diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 02d8cea3..d5444850 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -29,6 +29,8 @@ public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar GameObject source, lastSelection; RemeshSettings settings = new RemeshSettings(); readonly RemeshPipeline pipeline = new RemeshPipeline(); + readonly RemeshCaptureHighlight highlight = new RemeshCaptureHighlight(); + bool highlightCapture; readonly bool[] folds = { true, true, true, true }; bool chartFold; readonly RemeshPreview previews = new RemeshPreview(); @@ -71,6 +73,8 @@ void SaveSettingsAndClear() SaveSettings(); previews.Dispose(); pipeline.Dispose(); + highlight.Dispose(); + EditorApplication.hierarchyChanged -= InvalidateHighlight; } // Source root follows the hierarchy selection, as the status text asks. A pick @@ -96,11 +100,42 @@ public void OnRefresh() { } public void OnDrawToolbarExtra() { } public void OnDrawStatusBar() { GUILayout.Label(Status, EditorStyles.miniLabel); } public IEnumerable GetFillModes() => null; - public void OnSceneGUI(SceneView sceneView) { } + public void OnSceneGUI(SceneView sceneView) + { + if (!highlightCapture || !source) return; + if (highlight.Key != RemeshCaptureHighlight.KeyFor(source, settings)) { highlight.Build(source, settings); RequestRepaint?.Invoke(); } + highlight.Draw(); + } public void OnDrawCanvasOverlay(UvCanvasView canvas, float cx, float cy, float size) { } string Status => saveStatus ?? pipeline.Status; + // Scene paint of the capture: what the filters keep and drop, before any stage runs. + void DrawHighlightToggle() + { + bool on = EditorGUILayout.Toggle(new GUIContent("Highlight capture in Scene", + "Paint the source in the Scene view as the remesh stage will see it: green = captured, orange = dropped as a small part, " + + "red = dropped as a rod, grey = renderer excluded (LOD1+, collision, disabled). Follows the filter sliders live."), highlightCapture); + if (on != highlightCapture) { + highlightCapture = on; + if (on) { EditorApplication.hierarchyChanged -= InvalidateHighlight; EditorApplication.hierarchyChanged += InvalidateHighlight; } + else { EditorApplication.hierarchyChanged -= InvalidateHighlight; highlight.Clear(); } + SceneView.RepaintAll(); + } + if (!highlightCapture) return; + // The paint follows the filter sliders live: a changed key repaints the Scene, + // which rebuilds the highlight lazily in OnSceneGUI. + if (highlight.Key != RemeshCaptureHighlight.KeyFor(source, settings)) SceneView.RepaintAll(); + using (new EditorGUI.IndentLevelScope()) { + if (highlight.Error != null) EditorGUILayout.HelpBox(highlight.Error, MessageType.Warning); + else if (!string.IsNullOrEmpty(highlight.Summary)) EditorGUILayout.LabelField(highlight.Summary, EditorStyles.wordWrappedMiniLabel); + EditorGUILayout.LabelField("green captured · orange small part · red rod · grey excluded", EditorStyles.centeredGreyMiniLabel); + if (GUILayout.Button("Refresh highlight", EditorStyles.miniButton)) { InvalidateHighlight(); } + } + } + + void InvalidateHighlight() { highlight.Clear(); SceneView.RepaintAll(); } + public void OnDrawRightSidebar() { previewData.meshes[(int)RemeshPreview.Stage.Source] = pipeline.SourceMesh; @@ -144,6 +179,7 @@ public void OnDrawSidebar() "Capture ignores meshes named Name_LOD1 and higher; LODGroups already contribute LOD0 only."), settings.lod0Only); settings.keepHierarchy = EditorGUILayout.Toggle(new GUIContent("Keep hierarchy", "Remesh every renderer SEPARATELY and save the result as a hierarchy of meshes with per-node baked materials under one root, instead of welding everything into one mesh with one material."), settings.keepHierarchy); + DrawHighlightToggle(); using (new EditorGUI.DisabledScope(settings.sourceShape != RemeshShape.LOD0)) { settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 61008a51..45dd36d1 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -274,6 +274,43 @@ public void FilterSmallPartsDropsRodsNotSheetsAndCompactsEveryStream() Assert.IsTrue(SheetAndRod(10, false).FilterSmallParts(0, 0, 50, out _, out _)); } [Test] + public void ClassifyPartsLabelsFacesWithoutChangingTheCapture() + { + var source = SheetAndRod(10, false); + var cls = source.ClassifyParts(0, 1f, 50); + Assert.AreEqual(new[] { RemeshSource.PartKept, RemeshSource.PartKept, RemeshSource.PartRod, RemeshSource.PartRod }, cls); + Assert.AreEqual(8, source.positions.Length); Assert.AreEqual(12, source.indices.Length); + Assert.AreEqual(RemeshSource.PartSmall, SheetAndRod(10, false).ClassifyParts(0.2f, 0, 50)[0]); + Assert.IsNull(SheetAndRod(10, false).ClassifyParts(0, 0, 50)); + } + static void Cube(out Vector3[] positions, out int[] indices, bool inverted) + { + positions = new[] { new Vector3(0,0,0), new Vector3(1,0,0), new Vector3(1,1,0), new Vector3(0,1,0), + new Vector3(0,0,1), new Vector3(1,0,1), new Vector3(1,1,1), new Vector3(0,1,1) }; + // Unity-style clockwise-from-outside faces, the winding OrientedBoxes emits. + int[] faces = { 0,2,1, 0,3,2, 4,5,6, 4,6,7, 0,1,5, 0,5,4, 3,7,6, 3,6,2, 0,4,7, 0,7,3, 1,2,6, 1,6,5 }; + indices = new int[36]; + for (int i = 0; i < 36; i += 3) { indices[i] = faces[i]; indices[i+1] = faces[inverted ? i+2 : i+1]; indices[i+2] = faces[inverted ? i+1 : i+2]; } + } + [Test] + public void WindingProbeJudgesFromOutsideAndStaysOffOnOpenSheets() + { + Cube(out var p, out var tri, false); + var normals = new Vector3[12]; + for (int f = 0; f < 12; ++f) normals[f] = Vector3.Cross(p[tri[f*3+1]] - p[tri[f*3]], p[tri[f*3+2]] - p[tri[f*3]]).normalized; + int outward = RemeshBaker.ProbeWinding(new TriangleBvh(p, tri), p, normals); + Cube(out p, out tri, true); + for (int f = 0; f < 12; ++f) normals[f] = Vector3.Cross(p[tri[f*3+1]] - p[tri[f*3]], p[tri[f*3+2]] - p[tri[f*3]]).normalized; + int inverted = RemeshBaker.ProbeWinding(new TriangleBvh(p, tri), p, normals); + // The two windings are told apart with certainty, whatever the sign convention names them. + Assert.AreNotEqual(0, outward); Assert.AreEqual(-outward, inverted); + // A single sheet is seen from both sides half the time: no verdict, filter stays off. + var sheet = new[] { Vector3.zero, Vector3.right, Vector3.up, new Vector3(1, 1, 0) }; + var sheetTri = new[] { 0, 1, 2, 1, 3, 2 }; + var sheetN = new[] { Vector3.back, Vector3.back }; + Assert.AreEqual(0, RemeshBaker.ProbeWinding(new TriangleBvh(sheet, sheetTri), sheet, sheetN)); + } + [Test] public void PrincipalExtentsFollowThePointSetsOwnAxes() { var pts = new System.Collections.Generic.List(); From 1baaaa88cabb7e93645da3c148e9fa7dae53648f Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 16:32:55 +0000 Subject: [PATCH 074/130] =?UTF-8?q?fix(remesh):=20address=20Codex=20review?= =?UTF-8?q?=20=E2=80=94=20stage=20gating,=20deferred=20dispose,=20capture?= =?UTF-8?q?=20rollback,=20Beauty=20fidelity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stage readiness now requires every keep-hierarchy node to carry the output (Summary dereferenced a not-yet-run node between two nodes). Dispose during a run defers the clear to the run's exit instead of racing the stage. A renderer whose capture fails halfway is rolled back to the marks taken before it, so no orphan vertices reach the oriented boxes. The save resolves its folder from the captured root, not the current selection. Generic shaders keep each map's own tiling/offset. The benchmark sweep drains git's async output with a parameterless WaitForExit after the timed one. Beauty: shadow rays also test the scene's shadow casters (geometry-only capture, nearest first, 4M-triangle budget, world-space BVH shared across nodes), lights honour their culling mask per captured renderer layer, reflection probes blend by importance and blend distance with the environment taking the rest, and the skybox-generated reflection is the fallback when Environment Reflections is Skybox. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 + Documentation~/REMESH_AND_BAKE.md | 11 +++ Editor/BenchmarkSweep.cs | 3 + Editor/RemeshBaker.cs | 6 +- Editor/RemeshBeauty.cs | 154 ++++++++++++++++++++++++------ Editor/RemeshPipeline.cs | 31 ++++-- Editor/RemeshSource.cs | 60 +++++++++++- Editor/Tools/RemeshBakeTool.cs | 7 +- 8 files changed, 227 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29f93208..28f1f070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. +- **Remesh & Bake, Beauty: scene shadows, light culling masks, probe blending, skybox reflections.** Shadow rays saw only the source's own geometry, so a neighbouring building or a sibling keep-hierarchy node never shadowed it; the lighting snapshot now also captures the scene's shadow casters (geometry-only, nearest first, 4M-triangle budget) and tests them in world space. Lights whose culling mask excludes the captured renderer's layer no longer light or shadow it. Reflection probes are blended as the runtime blends them (weight 1 inside the box, 0 across the blend distance, two probes by importance, the environment taking the rest) instead of one hard-edged pick, and with Environment Reflections set to Skybox the generated skybox reflection is the fallback instead of black. +- **Remesh & Bake: a stage reports done only when every keep-hierarchy node has its output.** The stage check looked at the first node, so a repaint between two nodes of a Simplify, Unwrap or Bake dereferenced a node that had not run yet (an `OnGUI` null reference). A `Dispose()` during a run (tab switch, window close) cleared the node list under the still-running stage; the clear now waits for the run to observe its cancellation. A renderer that fails halfway through its capture (a missing material on a later submesh) is rolled back instead of leaving orphan vertices for the oriented boxes. The save resolves its output folder from the root the remesh stage captured, not from whatever is selected at save time. Unknown shaders keep each map's own tiling and offset instead of the base map's. The benchmark sweep drains git's asynchronous output before reading it. - **Remesh & Bake: the front-face filter's orientation probe no longer depends on the target's density.** The probe compared source face normals with the target's cage normals at the nearest point, which splits its vote once the target is a coarse proxy (a 112-triangle garage block, a box, a hull) and switched the filter off exactly where thin walls matter most. It now judges from outside: 256 rays from a sphere around the source toward its centre meet an outer surface first, and that triangle's winding against the ray decides; the 70% majority rule and the off state for open sheets are unchanged. - **Remesh & Bake: projection rays no longer sample through thin walls.** The bake raycast returned the closest intersection with no facing test, and the ray travels twice the projection distance through the target — on thin geometry (armor plates, fenders, any two-sided shell) it pierced the wall and baked the far side's texture as periodic mirrored/garbled patches. A front-face filter now only accepts source triangles facing the ray, on the ray path and on the nearest-fallback alike. Its orientation comes from a consensus probe of the source winding against the target's cage normals (inverted-winding imports are flipped automatically); without a clear ≥70% majority the filter stays off and the bake behaves exactly as before. The RemeshDiag projection line reports whether the filter engaged. - **Remesh & Bake: Read/Write-disabled sources capture again.** `MakeReadableCopy` read the classic vertex getters, which on a non-readable import log "Not allowed to access" and return EMPTY arrays — the copy came out triangle-less and the capture aborted with "No source triangles found". Non-readable meshes now clone through `Mesh.AcquireReadOnlyMeshData` (vertices, normals, tangents, colors, UV channels, submeshes; bone weights have no MeshData accessor and stay a readable-only path). The readable fast path is unchanged. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 0f1e60b2..bf73045d 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -168,6 +168,17 @@ settings, marked "settings changed" in its header) and clears everything after i Scene lighting is captured once in world space and every capture space (the weld, or each keep-hierarchy node) converts into it, so light ranges, shadow distances and probe bounds stay in world units whatever the source's scale. + Shadow rays test the source's own geometry and the rest of the scene's shadow + casters (enabled, LOD0, casting shadows — captured geometry-only, nearest + renderers first up to a 4M-triangle budget), so a neighbouring building, a + canopy or a sibling keep-hierarchy node shadows the source as in the game; + the Console lists what the snapshot held. Lights honour their culling mask + per captured renderer layer: a light that does not reach the object's layer + neither lights nor shadows it. Reflection probes are blended the way the + runtime does — weight 1 inside a probe's box, falling to 0 across its blend + distance, the two highest-importance probes sharing the sample and the + environment reflection (the custom cubemap, or the reflection Unity + generated from the skybox) taking the rest. Lightmaps are read only for a Beauty bake, right before it runs, and only the region each renderer occupies (its lightmap scale/offset rect, one texel of padding); a region above 2048² texels is downsampled to fit, and the diff --git a/Editor/BenchmarkSweep.cs b/Editor/BenchmarkSweep.cs index ed94860f..eacd72d3 100644 --- a/Editor/BenchmarkSweep.cs +++ b/Editor/BenchmarkSweep.cs @@ -1369,6 +1369,9 @@ static string TryRunGit(GitProbe probe) try { p.Kill(); } catch { /* best-effort */ } return ""; } + // The timed wait only says git exited; the async line callbacks may still + // be queued. The parameterless wait drains them before the builder is read. + p.WaitForExit(); return stdout.ToString().Trim(); } catch diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 26c2e29c..eb92aa0b 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -281,13 +281,15 @@ static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vec } Color albedoLinear = albedo.linear; int lightmapId = source.faceLightmaps != null && face < source.faceLightmaps.Length ? source.faceLightmaps[face] : -1; + // The face's renderer layer gates lights by their culling mask. + int layer = source.vertexRenderer != null && source.rendererLayer != null ? source.rendererLayer[source.vertexRenderer[a]] : 0; Color lit; if (lightmapId >= 0 && source.lightmaps != null && lightmapId < source.lightmaps.Length) { Vector2 uv2 = source.uv2[a] * w.x + source.uv2[b] * w.y + source.uv2[c] * w.z; - lit = albedoLinear * (beauty.SampleLightmap(source.lightmaps[lightmapId], uv2, n) + beauty.Direct(p, n)) + emission; + lit = albedoLinear * (beauty.SampleLightmap(source.lightmaps[lightmapId], uv2, n) + beauty.Direct(p, n, layer)) + emission; } else { - lit = albedoLinear * (beauty.Direct(p, n) + beauty.Ambient(n)) + emission; + lit = albedoLinear * (beauty.Direct(p, n, layer) + beauty.Ambient(n)) + emission; } lit += beauty.Specular(p, n, albedoLinear, metal.r, metal.a); return lit; diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 764b36a3..117045a8 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -41,16 +41,17 @@ internal sealed class Probe public bool bounded; public Vector3 worldPos, boxMin, boxMax; public bool boxProjection; - public float importance; + public float importance, blendDistance; } - struct Directional { public Vector3 dir; public Color color; public float shadowStrength; } + struct Directional { public Vector3 dir; public Color color; public float shadowStrength; public int cullingMask; } struct Local { public Vector3 pos, axis; // world space (axis used when spot) public Color color; public float rangeSqr, range, innerCos, outerCos, shadowStrength; public bool spot; + public int cullingMask; } const int AmbientW = 32, AmbientH = 16; @@ -69,7 +70,10 @@ struct Local readonly Vector3 viewPosition; // world space; specular is baked for this vantage Matrix4x4 localToWorld, worldToLocal; TriangleBvh bvh; // capture-space source BVH, bound by the bake before workers run + readonly TriangleBvh occluders; // world-space scene shadow casters (other renderers, sibling nodes) float shadowEpsilon; + /// What the scene shadow snapshot holds, for the bake status. + internal readonly string occluderSummary; /// Capture the lighting environment around root for geometry expressed in /// root-local space. Main thread only. @@ -86,22 +90,25 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) if (light.bakingOutput.lightmapBakeType == LightmapBakeType.Baked) continue; Color color = light.color.linear * light.intensity; float shadowStrength = light.shadows == LightShadows.None ? 0f : light.shadowStrength; + // The light's culling mask decides per captured renderer (layer) whether + // it lights and shadows that face at all; see Direct. + int mask = light.cullingMask; if (light.type == LightType.Directional) { dirList.Add(new Directional { dir = -(light.transform.rotation * Vector3.forward).normalized, - color = color, shadowStrength = shadowStrength, + color = color, shadowStrength = shadowStrength, cullingMask = mask, }); } else if (light.type == LightType.Point) { locList.Add(new Local { pos = light.transform.position, color = color, - rangeSqr = light.range * light.range, range = light.range, shadowStrength = shadowStrength }); + rangeSqr = light.range * light.range, range = light.range, shadowStrength = shadowStrength, cullingMask = mask }); } else if (light.type == LightType.Spot) { float outer = light.spotAngle * 0.5f * Mathf.Deg2Rad; float inner = Mathf.Min(light.innerSpotAngle * 0.5f * Mathf.Deg2Rad, outer - 1e-4f); locList.Add(new Local { pos = light.transform.position, axis = light.transform.forward.normalized, color = color, rangeSqr = light.range * light.range, range = light.range, - innerCos = Mathf.Cos(inner), outerCos = Mathf.Cos(outer), spot = true, shadowStrength = shadowStrength }); + innerCos = Mathf.Cos(inner), outerCos = Mathf.Cos(outer), spot = true, shadowStrength = shadowStrength, cullingMask = mask }); } } directionals = dirList.ToArray(); @@ -149,12 +156,21 @@ internal RemeshBeauty(GameObject root, float sourceDiagonal) probe.worldPos = rp.transform.position; probe.boxMin = rp.bounds.min; probe.boxMax = rp.bounds.max; probe.boxProjection = rp.boxProjection; + probe.blendDistance = Mathf.Max(0f, rp.blendDistance); probeList.Add(probe); } probes = probeList.ToArray(); - // No scene probe applies → the environment's custom reflection (Lighting ▸ - // Environment Reflections) is the fallback Unity would blend to. - fallbackProbe = RenderSettings.customReflection != null ? ReadProbe(RenderSettings.customReflection, ProbeMips) : null; + // Outside every probe (and in each probe's blend band) the game falls back to + // the environment reflection: the custom cubemap in Custom mode, else the + // reflection Unity generated from the skybox. + Texture environment = RenderSettings.defaultReflectionMode == DefaultReflectionMode.Custom + ? RenderSettings.customReflection : ReflectionProbe.defaultTexture; + fallbackProbe = environment != null ? ReadProbe(environment, ProbeMips) : null; + + // Shadow rays also test the rest of the scene: a neighbouring building, a + // canopy, or a sibling keep-hierarchy node shadows the source in the game, and + // the source's own BVH cannot see them. + occluders = CaptureOccluders(root, out occluderSummary); // Specular is view-dependent; bake it for the scene view camera's vantage // when one is open, else a three-quarter view of the object. @@ -189,21 +205,30 @@ void SetSpace(Matrix4x4 spaceToWorld, float sourceDiagonal) Vector3 WorldNormal(Vector3 n) => worldToLocal.transpose.MultiplyVector(n).normalized; /// Direct realtime/mixed light at a source point (capture space). Thread-safe. - internal Color Direct(Vector3 p, Vector3 n) + internal Color Direct(Vector3 p, Vector3 n) => Direct(p, n, 0); + + /// Direct light at a source point on a renderer of the given GameObject + /// layer: lights whose culling mask excludes the layer neither light nor shadow it. + internal Color Direct(Vector3 p, Vector3 n, int layer) { var sum = Color.black; + int layerBit = 1 << (layer & 31); Vector3 pw = localToWorld.MultiplyPoint3x4(p), nw = WorldNormal(n); Vector3 origin = p + n * shadowEpsilon; + Vector3 originWorld = localToWorld.MultiplyPoint3x4(origin); for (int i = 0; i < directionals.Length; ++i) { var d = directionals[i]; + if ((d.cullingMask & layerBit) == 0) continue; float ndl = Vector3.Dot(nw, d.dir); if (ndl <= 0f) continue; - float shadow = d.shadowStrength > 0f ? Shadow(origin, worldToLocal.MultiplyVector(d.dir).normalized, float.MaxValue) * d.shadowStrength : 0f; + float shadow = d.shadowStrength > 0f + ? Shadow(origin, worldToLocal.MultiplyVector(d.dir).normalized, float.MaxValue, originWorld, d.dir, float.MaxValue) * d.shadowStrength : 0f; if (shadow >= 1f) continue; sum += d.color * (ndl * (1f - shadow)); } for (int i = 0; i < locals.Length; ++i) { var l = locals[i]; + if ((l.cullingMask & layerBit) == 0) continue; Vector3 toLight = l.pos - pw; float distSq = toLight.sqrMagnitude; if (distSq > l.rangeSqr || distSq < 1e-10f) continue; @@ -225,7 +250,9 @@ internal Color Direct(Vector3 p, Vector3 n) // The shadow segment runs in capture space, so its length is the // capture-space distance to the light, whatever the root's scale. Vector3 toLightLocal = worldToLocal.MultiplyPoint3x4(l.pos) - p; - shadow = Shadow(origin, toLightLocal.normalized, toLightLocal.magnitude) * l.shadowStrength; + Vector3 toLightWorld = l.pos - originWorld; + shadow = Shadow(origin, toLightLocal.normalized, toLightLocal.magnitude, + originWorld, toLightWorld.normalized, toLightWorld.magnitude) * l.shadowStrength; } sum += l.color * (weight * attenuation * (1f - shadow)); } @@ -255,23 +282,19 @@ internal Color Ambient(Vector3 n) internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, float smoothness) { Vector3 worldP = localToWorld.MultiplyPoint3x4(p); - Probe probe = PickProbe(worldP); - if (probe == null) return Color.black; + ProbeWeights(worldP, out var first, out float w0, out var second, out float w1); + if (first == null && fallbackProbe == null) return Color.black; Vector3 v = viewPosition - worldP; if (v.sqrMagnitude < 1e-10f) return Color.black; v.Normalize(); Vector3 nw = WorldNormal(n); Vector3 worldR = Vector3.Reflect(-v, nw).normalized; - Vector3 dir = probe.boxProjection ? BoxProjected(worldR, worldP, probe) : worldR; float roughness = Mathf.Clamp01(1f - smoothness); - float remapped = roughness * (1.7f - 0.7f * roughness); - float mipFloat = remapped * (probe.mipCount - 1); - int m0 = Mathf.Clamp(Mathf.FloorToInt(mipFloat), 0, probe.mipCount - 1); - int m1 = Mathf.Min(m0 + 1, probe.mipCount - 1); - Color sample = Color.Lerp( - SampleEquirect(probe.mips[m0], probe.widths[m0], probe.heights[m0], dir), - SampleEquirect(probe.mips[m1], probe.widths[m1], probe.heights[m1], dir), - mipFloat - m0); + Color sample = Color.black; + float rest = 1f; + if (first != null) { sample += SampleProbe(first, worldR, worldP, roughness) * w0; rest -= w0; } + if (second != null && rest > 0f) { float w = rest * w1; sample += SampleProbe(second, worldR, worldP, roughness) * w; rest -= w; } + if (fallbackProbe != null && rest > 0f) sample += SampleProbe(fallbackProbe, worldR, worldP, roughness) * rest; float surfaceReduction = 1f / (roughness * roughness + 1f); Vector3 f0 = Vector3.Lerp(new Vector3(0.04f, 0.04f, 0.04f), new Vector3(albedo.r, albedo.g, albedo.b), metallic); @@ -281,6 +304,21 @@ internal Color Specular(Vector3 p, Vector3 n, Color albedo, float metallic, floa return new Color(specular.x * sample.r, specular.y * sample.g, specular.z * sample.b, 0f); } + // One probe's prefiltered reflection along the (box-projected) reflection ray: + // the r(1.7−0.7r)·maxMip remap with the fractional part lerped between levels. + static Color SampleProbe(Probe probe, Vector3 worldR, Vector3 worldP, float roughness) + { + Vector3 dir = probe.boxProjection ? BoxProjected(worldR, worldP, probe) : worldR; + float remapped = roughness * (1.7f - 0.7f * roughness); + float mipFloat = remapped * (probe.mipCount - 1); + int m0 = Mathf.Clamp(Mathf.FloorToInt(mipFloat), 0, probe.mipCount - 1); + int m1 = Mathf.Min(m0 + 1, probe.mipCount - 1); + return Color.Lerp( + SampleEquirect(probe.mips[m0], probe.widths[m0], probe.heights[m0], dir), + SampleEquirect(probe.mips[m1], probe.widths[m1], probe.heights[m1], dir), + mipFloat - m0); + } + // URP BoxProjectedCubemapDirection, verbatim: the reflection ray is bent toward // the probe-box faces so reflections localize inside the probe's volume. static Vector3 BoxProjected(Vector3 r, Vector3 p, Probe probe) @@ -315,22 +353,76 @@ internal Color SampleLightmap(Lightmap map, Vector2 uv2, Vector3 localNormal) // ── plumbing ── - float Shadow(Vector3 origin, Vector3 dir, float maxDist) + // The source's own BVH in capture space, then the scene's shadow casters in + // world space (the same segment, expressed in each space). + float Shadow(Vector3 origin, Vector3 dir, float maxDist, Vector3 originWorld, Vector3 dirWorld, float maxWorld) { - if (bvh == null) return 0f; - var hit = bvh.Raycast(origin, dir, maxDist); - return hit.triangleIndex >= 0 ? 1f : 0f; + if (bvh != null && bvh.Raycast(origin, dir, maxDist).triangleIndex >= 0) return 1f; + if (occluders != null && occluders.Raycast(originWorld, dirWorld, maxWorld).triangleIndex >= 0) return 1f; + return 0f; } - Probe PickProbe(Vector3 world) + // Unity's probe blending, per sample: a probe's weight is 1 inside its box and + // falls to 0 across its blend distance outside it; the two highest-importance + // probes with weight share the sample (second one takes what the first leaves), + // and the environment reflection takes the rest ("Blend Probes and Skybox"). + void ProbeWeights(Vector3 world, out Probe first, out float firstWeight, out Probe second, out float secondWeight) { - Probe best = null; + first = second = null; firstWeight = secondWeight = 0f; for (int i = 0; i < probes.Length; ++i) { var probe = probes[i]; - if (probe.bounded && !probe.bounds.Contains(world)) continue; - if (best == null || probe.importance > best.importance) best = probe; + float weight = 1f; + if (probe.bounded) { + var box = probe.bounds; + Vector3 outside = Vector3.Max(Vector3.zero, Vector3.Max(box.min - world, world - box.max)); + float distance = outside.magnitude; + if (distance > 0f) weight = probe.blendDistance > 0f ? Mathf.Clamp01(1f - distance / probe.blendDistance) : 0f; + if (weight <= 0f) continue; + } + if (first == null || Before(probe, first)) { second = first; secondWeight = firstWeight; first = probe; firstWeight = weight; } + else if (second == null || Before(probe, second)) { second = probe; secondWeight = weight; } + } + } + + // Unity orders candidates by importance, then by volume (the smaller box wins). + static bool Before(Probe a, Probe b) + { + if (a.importance != b.importance) return a.importance > b.importance; + float va = a.bounded ? a.bounds.size.x * a.bounds.size.y * a.bounds.size.z : float.MaxValue; + float vb = b.bounded ? b.bounds.size.x * b.bounds.size.y * b.bounds.size.z : float.MaxValue; + return va < vb; + } + + // Scene shadow casters outside the source's own BVH, captured in world space + // (geometry only). Nearest to the source first, up to a triangle budget so a city + // block does not turn one bake into a scene-wide BVH build. + const long OccluderTriangleBudget = 4_000_000; + static TriangleBvh CaptureOccluders(GameObject root, out string summary) + { + summary = ""; + var casters = RemeshSource.CollectSceneShadowCasters(); + if (casters.Count == 0) return null; + Bounds world = ComputeWorldBounds(root); + casters.Sort((a, b) => a.bounds.SqrDistance(world.center).CompareTo(b.bounds.SqrDistance(world.center))); + var chosen = new List(casters.Count); + long triangles = 0; int skipped = 0; + foreach (var renderer in casters) { + Mesh mesh = renderer is SkinnedMeshRenderer skin ? skin.sharedMesh + : renderer.TryGetComponent(out var filter) ? filter.sharedMesh : null; + if (!mesh) continue; + long count = 0; + for (int sub = 0; sub < mesh.subMeshCount; ++sub) + if (mesh.GetTopology(sub) == MeshTopology.Triangles) count += (long)mesh.GetIndexCount(sub) / 3; + if (triangles + count > OccluderTriangleBudget) { ++skipped; continue; } + triangles += count; chosen.Add(renderer); } - return best ?? fallbackProbe; + RemeshSource occluded = null; + try { occluded = RemeshSource.Capture(Matrix4x4.identity, chosen, required: false, geometryOnly: true); } + catch (InvalidOperationException) { } + if (occluded == null) return null; + summary = $"{chosen.Count:N0} scene shadow caster(s), {occluded.indices.Length / 3:N0} triangles" + + (skipped > 0 ? $" ({skipped:N0} farthest renderer(s) over the {OccluderTriangleBudget / 1_000_000}M-triangle budget left out)" : ""); + return new TriangleBvh(occluded.positions, occluded.indices); } static Vector2 EquirectUV(Vector3 dir) diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 297ea2f6..c5b302a6 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -46,6 +46,10 @@ internal sealed class Node CancellationTokenSource cancellation; int running; bool hierarchy; + bool disposeRequested; // Dispose() during a run: clear once the run has observed cancellation + /// The root the remesh stage captured; the save resolves its output folder from this, + /// not from whatever is selected at save time. Null until the stage ran. + public GameObject CapturedSource { get; private set; } // Previews come from the primary node: the weld itself, or the largest node of // a hierarchy so the existing preview panel keeps working. @@ -84,15 +88,20 @@ public Node Primary public float SourceDiagonal => Primary?.source != null ? Primary.source.diagonal : 0f; public bool SourceHasColors { get { foreach (var n in nodes) if (n.source != null && n.source.hasColors) return true; return false; } } + // True only when EVERY node carries the stage's output: a keep-hierarchy run + // fills the nodes one by one, and a repaint between two nodes must not read a + // half-finished stage (Summary dereferences every node). public bool Has(Stage stage) { if (nodes.Count == 0) return false; - switch (stage) { - case Stage.Remesh: return nodes[0].voxel != null; - case Stage.Simplify: return nodes[0].simplified != null; - case Stage.Unwrap: return nodes[0].geometry != null; - default: return nodes[0].maps != null; + foreach (var n in nodes) { + bool done = stage == Stage.Remesh ? n.voxel != null + : stage == Stage.Simplify ? n.simplified != null + : stage == Stage.Unwrap ? n.geometry != null + : n.maps != null; + if (!done) return false; } + return true; } /// Short stage summary for the UI headers; null before the stage ran. @@ -171,6 +180,9 @@ public async Task Run(GameObject source, RemeshSettings live, Stage from, finally { cancellation.Dispose(); cancellation = null; if (locked) EditorApplication.UnlockReloadAssemblies(); + // A Dispose() that arrived mid-run waited for this point: the stage code + // above never sees a cleared node list or a destroyed mesh. + if (disposeRequested) { disposeRequested = false; ClearFrom(Stage.Remesh); } Interlocked.Exchange(ref running, 0); Changed?.Invoke(); } } @@ -248,6 +260,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken } token.ThrowIfCancellationRequested(); nodes.AddRange(captures); + CapturedSource = root; var primary = Primary; sourceMesh = BuildMesh(ResultName + "_Source", primary.source.positions, primary.source.indices, primary.source.normals, primary.source.hasColors ? primary.source.colors : null); @@ -327,6 +340,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to Report("Capturing scene lighting…"); if (!root) throw new InvalidOperationException("The source root is gone; reselect it and rerun the remesh stage."); beauty = new RemeshBeauty(root, SourceDiagonal); + if (!string.IsNullOrEmpty(beauty.occluderSummary)) UvtLog.Info("[Remesh] Beauty shadows also test " + beauty.occluderSummary + "."); } long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0, empty = 0; int warnings = 0; for (int i = 0; i < nodes.Count; ++i) { @@ -466,13 +480,16 @@ public void ClearFrom(Stage stage) if (voxelMesh) Object.DestroyImmediate(voxelMesh); if (sourceMesh) Object.DestroyImmediate(sourceMesh); voxelMesh = null; sourceMesh = null; keys[(int)Stage.Remesh] = null; - nodes.Clear(); hierarchy = false; + nodes.Clear(); hierarchy = false; CapturedSource = null; } } + /// Cancels a running stage and drops every output. Cancellation is + /// cooperative, so during a run the clear is deferred to the run's exit instead of + /// racing the stage that is still executing. public void Dispose() { - cancellation?.Cancel(); + if (IsRunning) { disposeRequested = true; cancellation?.Cancel(); return; } ClearFrom(Stage.Remesh); } } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 809acd22..6b453e0c 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -50,6 +50,7 @@ public void ReadLightmaps() // (filtered) geometry along its own authored axes. public int[] vertexRenderer; public Matrix4x4[] rendererToSpace; + public int[] rendererLayer; // GameObject layer per captured renderer (light culling masks) internal sealed class Image { @@ -118,7 +119,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende var faceLightmaps = new List(); var lightmapRefs = new List(); var lightmapIds = new Dictionary<(Texture2D, Texture2D, Vector4), int>(); - var vertexRenderer = new List(); var rendererToSpace = new List(); + var vertexRenderer = new List(); var rendererToSpace = new List(); var rendererLayer = new List(); string[] warnings; using (var reader = new Reader()) { foreach (var renderer in renderers) { @@ -127,6 +128,11 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende // every renderer is isolated, and recoverable offenders degrade to // a warning + skip. Mesh mesh = null; + // A renderer that fails halfway (a missing material on its second submesh) + // is rolled back to these marks, so a "skipped" renderer leaves no orphan + // vertices for the oriented boxes or stray faces for the remesh. + int keepVertices = positions.Count, keepIndices = indices.Count, keepRenderers = rendererToSpace.Count; + bool keepColors = hasColors; try { // A skinned source is baked at its current pose into a fresh runtime // mesh. BakeMesh bakes the LAST EVALUATED skinning, which in edit mode @@ -178,7 +184,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende float sign = transform.determinant < 0 ? -1 : 1; int first = positions.Count; int rendererId = rendererToSpace.Count; - rendererToSpace.Add(transform); + rendererToSpace.Add(transform); rendererLayer.Add(renderer.gameObject.layer); for (int i = 0; i < p.Length; ++i) { vertexRenderer.Add(rendererId); positions.Add(transform.MultiplyPoint3x4(p[i])); @@ -240,6 +246,19 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende } catch (InvalidOperationException e) { reader.warnings.Add(renderer.name + ": " + e.Message + " Skipped."); + positions.RemoveRange(keepVertices, positions.Count - keepVertices); + normals.RemoveRange(keepVertices, normals.Count - keepVertices); + tangents.RemoveRange(keepVertices, tangents.Count - keepVertices); + uv.RemoveRange(keepVertices, uv.Count - keepVertices); + uv2.RemoveRange(keepVertices, uv2.Count - keepVertices); + colors.RemoveRange(keepVertices, colors.Count - keepVertices); + vertexRenderer.RemoveRange(keepVertices, vertexRenderer.Count - keepVertices); + indices.RemoveRange(keepIndices, indices.Count - keepIndices); + faces.RemoveRange(keepIndices / 3, faces.Count - keepIndices / 3); + faceLightmaps.RemoveRange(keepIndices / 3, faceLightmaps.Count - keepIndices / 3); + rendererToSpace.RemoveRange(keepRenderers, rendererToSpace.Count - keepRenderers); + rendererLayer.RemoveRange(keepRenderers, rendererLayer.Count - keepRenderers); + hasColors = keepColors; } finally { if (mesh) Object.DestroyImmediate(mesh); } } @@ -257,7 +276,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende uv = uv.ToArray(), uv2 = uv2.ToArray(), colors = colors.ToArray(), hasColors = hasColors, indices = indices.ToArray(), faceMaterials = faces.ToArray(), faceLightmaps = faceLightmaps.ToArray(), lightmapRefs = lightmapRefs.ToArray(), materials = materials.ToArray(), diagonal = bounds.size.magnitude, warnings = warnings, - vertexRenderer = vertexRenderer.ToArray(), rendererToSpace = rendererToSpace.ToArray() }; + vertexRenderer = vertexRenderer.ToArray(), rendererToSpace = rendererToSpace.ToArray(), rendererLayer = rendererLayer.ToArray() }; } /// @@ -543,6 +562,37 @@ internal static List CollectRenderers(GameObject root, bool lod0Only) // Repo LOD naming is Name_LOD{N} (see the LOD/collision naming rule); anything // above LOD0 is a coarser duplicate of what LOD0 already captures. + /// + /// Every renderer the game would draw as a shadow caster in the loaded scenes: + /// enabled, active, casting shadows, LOD0 of its LODGroup, no collision names — + /// the same filters as CollectRenderers, over all scene roots. The Beauty bake + /// casts its shadow rays against these so a neighbouring building, a canopy or + /// a sibling keep-hierarchy node shadows the source as it does in the game. + /// + internal static List CollectSceneShadowCasters() + { + var excluded = new HashSet(); + foreach (var group in Object.FindObjectsByType(FindObjectsSortMode.None)) { + var lods = group.GetLODs(); + var first = new HashSet(lods.Length > 0 ? lods[0].renderers : Array.Empty()); + for (int l = 1; l < lods.Length; ++l) + foreach (var r in lods[l].renderers) if (!first.Contains(r)) excluded.Add(r); + } + var result = new List(); + foreach (var renderer in Object.FindObjectsByType(FindObjectsSortMode.None)) { + if (!renderer.enabled || !renderer.gameObject.activeInHierarchy || excluded.Contains(renderer)) continue; + if (renderer.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.Off) continue; + Mesh mesh; + if (renderer is SkinnedMeshRenderer skin) mesh = skin.sharedMesh; + else if (renderer is MeshRenderer && renderer.TryGetComponent(out var filter)) mesh = filter.sharedMesh; + else continue; + if (!mesh) continue; + if (MeshHygieneUtility.IsCollisionNodeName(renderer.name) || MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; + result.Add(renderer); + } + return result; + } + internal static bool IsHigherLodName(string name) { if (string.IsNullOrEmpty(name)) return false; @@ -632,7 +682,9 @@ Surface CaptureGeneric(Material m, string shaderName) metallic = FloatOr(m, 0, "_Metallic"), smoothness = FloatOr(m, 0.5f, "_Smoothness", "_Glossiness"), normalScale = FloatOr(m, 1, "_BumpScale", "_NormalScale"), aoStrength = FloatOr(m, 1, "_OcclusionStrength") }; - ShareBaseTransform(surface); + // Unknown shaders get no shared base transform: each map keeps the tiling + // and offset its own property carries (Read captured them), since nothing + // says this shader samples everything through the base map's ST. return surface; } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index d5444850..afa9646c 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -338,9 +338,10 @@ async void ShowWhenDone(Task run, RemeshPipeline.Stage target) void Save() { - // Default output: a "remesh" subfolder next to the source model's asset. - // Falls back to the folder picker for scene-only objects with no asset. - string parent = RemeshExporter.ResolveDefaultFolder(source) ?? RemeshExporter.PickFolder(out saveStatus); + // Default output: a "remesh" subfolder next to the CAPTURED model's asset (the + // selection may have moved on since the bake). Falls back to the folder + // picker for scene-only objects with no asset, or a captured root that is gone. + string parent = RemeshExporter.ResolveDefaultFolder(pipeline.CapturedSource) ?? RemeshExporter.PickFolder(out saveStatus); if (parent == null) return; try { saveStatus = RemeshExporter.Export(pipeline, settings, parent); } catch (Exception e) { saveStatus = e.Message; } From b3e0f82b778e40dd1a434cbab99c1cebb71567a1 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 17:25:08 +0000 Subject: [PATCH 075/130] feat(hub): shared 3D view behind a UV | 3D canvas switch, open to every tool The canvas gains a UV | 3D switch at its bottom centre (remembered in EditorPrefs). The 3D side is one module, MeshViewport3D: an orbitable lit PreviewRenderUtility view (drag orbits, middle button / alt-drag pans, scroll zooms, F or middle double-click frames) with Shaded, Vert Colors, Normals, Tangents and UV0-UV3 shading, a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes with their scene materials, the same set the UV canvas lists. Tools take part through IUvTool3D: Get3DContent replaces the content, OnDraw3D adds overlays through the viewport API (meshes, cached wire, coloured line lists, screen-sized dots). Remesh & Bake shows its pipeline stage there instead of its small embedded preview; the right sidebar keeps the stage picker and the surface/cage toggles. Prefab Builder's Edges and Problems previews paint their edge classes and unused-vertex dots in it. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 2 +- Editor/Framework/IUvTool.cs | 17 + Editor/Framework/MeshViewport3D.cs | 403 +++++++++++++++++++++++ Editor/Framework/MeshViewport3D.cs.meta | 11 + Editor/Framework/UvToolHub.cs | 180 +++++++++- Editor/PrefabBuilderPreview.cs | 31 ++ Editor/RemeshPreview.cs | 143 +++----- Editor/Tools/PrefabBuilderTool.cs | 14 +- Editor/Tools/RemeshBakeTool.cs | 20 +- Tests/Editor/MeshViewport3DTests.cs | 45 +++ Tests/Editor/MeshViewport3DTests.cs.meta | 11 + 12 files changed, 767 insertions(+), 111 deletions(-) create mode 100644 Editor/Framework/MeshViewport3D.cs create mode 100644 Editor/Framework/MeshViewport3D.cs.meta create mode 100644 Tests/Editor/MeshViewport3DTests.cs create mode 100644 Tests/Editor/MeshViewport3DTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 28f1f070..4e8967f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch (bottom centre, remembered across sessions). The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index bf73045d..2abb8df7 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -132,7 +132,7 @@ settings, marked "settings changed" in its header) and clears everything after i source from OUTSIDE — rays cast from a sphere around it toward its centre meet an outer surface first, and that triangle's winding against the ray gives the answer whatever the target's density — and it stays off when - fewer than 70% of the rays agree (open sheets, mixed winding). The 3D preview's **Cage** toggle + fewer than 70% of the rays agree (open sheets, mixed winding). The 3D view's **Cage** toggle (the right sidebar's 3D panel drives the canvas's shared 3D view — switch the canvas to **3D** at its bottom centre) draws the projection limits — the result mesh inflated by ±the ray travel along the same welded cage normals, orange for the outer (ray origin) shell, blue for the inner (ray end) shell — live from the current projection diff --git a/Editor/Framework/IUvTool.cs b/Editor/Framework/IUvTool.cs index 9986bad7..620b91a0 100644 --- a/Editor/Framework/IUvTool.cs +++ b/Editor/Framework/IUvTool.cs @@ -66,6 +66,23 @@ public interface IUvTool System.Action RequestRepaint { set; } } + /// + /// Opt-in for tools that take part in the shared 3D canvas (the hub's UV | 3D + /// switch). Without it a tool's 3D view shows the context's meshes for the + /// preview LOD with their scene materials. + /// + public interface IUvTool3D + { + /// + /// Fill items with what the 3D canvas should show while this tool is active and + /// return true; return false to show the context's LOD meshes instead. + /// + bool Get3DContent(List items); + + /// Draw on top of the content (wire, lines, points) through the viewport's overlay API. + void OnDraw3D(MeshViewport3D view); + } + /// /// Opt-in marker for tools that want a right-side sidebar in addition to /// the standard left sidebar. The hub renders this sidebar to the right diff --git a/Editor/Framework/MeshViewport3D.cs b/Editor/Framework/MeshViewport3D.cs new file mode 100644 index 00000000..750fa73c --- /dev/null +++ b/Editor/Framework/MeshViewport3D.cs @@ -0,0 +1,403 @@ +// MeshViewport3D.cs — the shared 3D viewport of Mesh Lab: an orbitable, lit view of +// any set of meshes rendered off-screen into the canvas area. Owned by the hub and +// offered to every tool through IUvTool3D: a tool can hand it content (what to show) +// and overlays (wire, lines, points on top), while the hub keeps the camera, the +// shading modes and the input in one place. + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + public sealed class MeshViewport3D : IDisposable + { + /// How the content's surfaces are coloured. + public enum Shading { Shaded, VertexColors, Normals, Tangents, UV0, UV1, UV2, UV3 } + + /// One mesh to show: its matrix (any common space) and the materials the + /// Shaded mode draws it with (null or short arrays fall back to a lit grey). + public struct Item + { + public Mesh mesh; + public Matrix4x4 matrix; + public Material[] materials; + public Item(Mesh mesh, Matrix4x4 matrix, Material[] materials = null) { this.mesh = mesh; this.matrix = matrix; this.materials = materials; } + } + + public static readonly string[] ShadingNames = { "Shaded", "Vert Colors", "Normals", "Tangents", "UV0", "UV1", "UV2", "UV3" }; + + public Shading Mode = Shading.Shaded; + public bool Wireframe; + public bool Lit = true; + public Color Background = new Color(0.16f, 0.16f, 0.16f, 1f); + public Action RequestRepaint; + + // ── camera ── + Vector3 pivot; + Vector2 orbit = new Vector2(-135f, 20f); // yaw, pitch (degrees) + float distance = 5f, radius = 1f; + int framedKey; + bool framedOnce; + + PreviewRenderUtility utility; + Material surface, flat, wire, points; + Rect currentRect; + bool drawing; + readonly Dictionary encodedCache = new Dictionary(); + readonly Dictionary wireCache = new Dictionary(); + readonly List frameMeshes = new List(); // transient meshes built for this frame + + public Rect LastRect => currentRect; + public Camera Camera => utility?.camera; + + // ═══════════════════════════════════════════════════════════ + // Drawing + // ═══════════════════════════════════════════════════════════ + + /// Handles input in rect, then (on Repaint) renders the items with the + /// current shading, calls overlay for the tool's additions and blits the result. + public void Draw(Rect rect, IReadOnlyList items, Action overlay) + { + currentRect = rect; + var bounds = BoundsOf(items, out int key, out bool any); + if (any && (!framedOnce || key != framedKey)) { Frame(bounds); framedKey = key; framedOnce = true; } + HandleInput(rect, any ? bounds : (Bounds?)null); + if (Event.current.type != EventType.Repaint) return; + EditorGUI.DrawRect(rect, Background); + if (!EnsureResources()) return; + + utility.BeginPreview(rect, GUIStyle.none); + var camera = utility.camera; + camera.clearFlags = CameraClearFlags.SolidColor; + camera.backgroundColor = Background; + var rotation = Quaternion.Euler(orbit.y, orbit.x, 0f); + camera.transform.rotation = rotation; + camera.transform.position = pivot - rotation * Vector3.forward * distance; + camera.nearClipPlane = Mathf.Max(distance * 0.001f, 1e-4f); + camera.farClipPlane = distance + radius * 8f + 1f; + utility.lights[0].intensity = 1.1f; utility.lights[0].transform.rotation = rotation * Quaternion.Euler(30f, 30f, 0f); + utility.lights[1].intensity = 0.6f; utility.lights[1].transform.rotation = rotation * Quaternion.Euler(-20f, -150f, 0f); + utility.ambientColor = new Color(0.25f, 0.25f, 0.25f, 1f); + + drawing = true; + try { + if (items != null) + foreach (var item in items) { + if (!item.mesh) continue; + DrawItem(item); + if (Wireframe) DrawWire(item.mesh, item.matrix, Mode == Shading.Shaded ? new Color(0.05f, 0.05f, 0.05f, 1f) : new Color(0.4f, 0.85f, 1f, 1f)); + } + overlay?.Invoke(this); + utility.Render(); + } + catch (Exception ex) { UvtLog.Warn("[3D] " + ex.Message); } + finally { + drawing = false; + GUI.DrawTexture(rect, utility.EndPreview(), ScaleMode.StretchToFill, false); + foreach (var mesh in frameMeshes) if (mesh) Object.DestroyImmediate(mesh); + frameMeshes.Clear(); + } + } + + void DrawItem(Item item) + { + var mesh = item.mesh; + if (Mode == Shading.Shaded) { + for (int sub = 0; sub < mesh.subMeshCount; ++sub) { + var material = item.materials != null && sub < item.materials.Length ? item.materials[sub] : null; + if (material) utility.DrawMesh(mesh, item.matrix, material, sub); + else { surface.SetFloat("_UseVertexColor", 0); surface.SetFloat("_Lit", Lit ? 1 : 0); surface.SetColor("_Color", new Color(0.72f, 0.72f, 0.72f, 1f)); utility.DrawMesh(mesh, item.matrix, surface, sub); } + } + return; + } + var encoded = Encoded(mesh, Mode); + if (!encoded) return; + surface.SetFloat("_UseVertexColor", 1); surface.SetColor("_Color", Color.white); + // Data encodings read better unlit; the headlight stays for vertex colours. + surface.SetFloat("_Lit", Lit && Mode == Shading.VertexColors ? 1 : 0); + for (int sub = 0; sub < encoded.subMeshCount; ++sub) utility.DrawMesh(encoded, item.matrix, surface, sub); + } + + // ═══════════════════════════════════════════════════════════ + // Overlay API (valid inside the overlay callback) + // ═══════════════════════════════════════════════════════════ + + /// Draws a mesh with the given material (null = the viewport's lit grey). + public void DrawMesh(Mesh mesh, Matrix4x4 matrix, Material material = null, int submesh = -1) + { + if (!drawing || !mesh) return; + if (!material) { material = surface; surface.SetFloat("_UseVertexColor", 0); surface.SetFloat("_Lit", 1); surface.SetColor("_Color", new Color(0.72f, 0.72f, 0.72f, 1f)); } + if (submesh >= 0) utility.DrawMesh(mesh, matrix, material, submesh); + else for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, matrix, material, sub); + } + + /// Draws the mesh's unique triangle edges as lines (cached per mesh). + public void DrawWire(Mesh mesh, Matrix4x4 matrix, Color color) + { + if (!drawing || !mesh) return; + var edges = WireOf(mesh); + if (!edges) return; + wire.SetColor("_Color", color); + utility.DrawMesh(edges, matrix, wire, 0); + } + + /// Draws line segments given as consecutive point pairs. + public void DrawLines(IList pairs, Matrix4x4 matrix, Color color) + { + if (!drawing || pairs == null || pairs.Count < 2) return; + var mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + var vertices = new Vector3[pairs.Count]; var indices = new int[pairs.Count - pairs.Count % 2]; + for (int i = 0; i < vertices.Length; ++i) vertices[i] = pairs[i]; + for (int i = 0; i < indices.Length; ++i) indices[i] = i; + mesh.vertices = vertices; mesh.SetIndices(indices, MeshTopology.Lines, 0); + frameMeshes.Add(mesh); + wire.SetColor("_Color", color); + utility.DrawMesh(mesh, matrix, wire, 0); + } + + /// Draws per-segment coloured lines: pairs[i*2..i*2+1] in colors[i]. + public void DrawLines(IList pairs, IList colors, Matrix4x4 matrix) + { + if (!drawing || pairs == null || pairs.Count < 2) return; + int count = pairs.Count - pairs.Count % 2; + var mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + var vertices = new Vector3[count]; var vertexColors = new Color[count]; var indices = new int[count]; + for (int i = 0; i < count; ++i) { vertices[i] = pairs[i]; vertexColors[i] = colors != null && i / 2 < colors.Count ? colors[i / 2] : Color.white; indices[i] = i; } + mesh.vertices = vertices; mesh.colors = vertexColors; mesh.SetIndices(indices, MeshTopology.Lines, 0); + frameMeshes.Add(mesh); + utility.DrawMesh(mesh, matrix, points, 0); + } + + /// Draws camera-facing dots of a screen-constant size (pixels). + public void DrawPoints(IList positions, Matrix4x4 matrix, Color color, float sizePixels = 5f) + { + if (!drawing || positions == null || positions.Count == 0) return; + var camera = utility.camera; + Vector3 right = camera.transform.right, up = camera.transform.up; + float pixelsToWorld = 2f * Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad) / Mathf.Max(1f, currentRect.height); + var vertices = new Vector3[positions.Count * 4]; var vertexColors = new Color[vertices.Length]; var indices = new int[positions.Count * 6]; + for (int i = 0; i < positions.Count; ++i) { + Vector3 world = matrix.MultiplyPoint3x4(positions[i]); + float half = sizePixels * 0.5f * pixelsToWorld * Mathf.Max(1e-4f, Vector3.Dot(world - camera.transform.position, camera.transform.forward)); + int v = i * 4, t = i * 6; + vertices[v] = world - right * half - up * half; vertices[v + 1] = world + right * half - up * half; + vertices[v + 2] = world + right * half + up * half; vertices[v + 3] = world - right * half + up * half; + for (int k = 0; k < 4; ++k) vertexColors[v + k] = color; + indices[t] = v; indices[t + 1] = v + 2; indices[t + 2] = v + 1; indices[t + 3] = v; indices[t + 4] = v + 3; indices[t + 5] = v + 2; + } + var mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + mesh.vertices = vertices; mesh.colors = vertexColors; mesh.SetIndices(indices, MeshTopology.Triangles, 0); + frameMeshes.Add(mesh); + utility.DrawMesh(mesh, Matrix4x4.identity, points, 0); + } + + /// A material of the viewport's own shader: flat colour, optional + /// headlight, drawn on top of coincident geometry. + public Material FlatMaterial(Color color, bool lit) + { + if (!EnsureResources()) return null; + flat.SetColor("_Color", color); flat.SetFloat("_Lit", lit ? 1 : 0); flat.SetFloat("_UseVertexColor", 0); + return flat; + } + + // ═══════════════════════════════════════════════════════════ + // Camera + // ═══════════════════════════════════════════════════════════ + + /// Centres the camera on bounds at a distance that fits them. + public void Frame(Bounds bounds) + { + pivot = bounds.center; + radius = Mathf.Max(bounds.extents.magnitude, 1e-4f); + distance = radius / Mathf.Sin(15f * Mathf.Deg2Rad) * 1.05f; + RequestRepaint?.Invoke(); + } + + /// Re-frames the current content on the next draw. + public void FrameContent() { framedOnce = false; RequestRepaint?.Invoke(); } + + void HandleInput(Rect rect, Bounds? content) + { + int id = GUIUtility.GetControlID("MeshViewport3D".GetHashCode(), FocusType.Passive, rect); + var e = Event.current; + switch (e.GetTypeForControl(id)) { + case EventType.MouseDown: + if (!rect.Contains(e.mousePosition)) break; + if (e.button == 2 && e.clickCount == 2 && content.HasValue) { Frame(content.Value); e.Use(); break; } + GUIUtility.hotControl = id; e.Use(); + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl != id) break; + if (e.button == 2 || (e.button == 0 && e.alt)) { + // Pan: screen pixels to world at the pivot's depth. + float scale = 2f * distance * Mathf.Tan(15f * Mathf.Deg2Rad) / Mathf.Max(1f, rect.height); + var rotation = Quaternion.Euler(orbit.y, orbit.x, 0f); + pivot -= (rotation * Vector3.right) * (e.delta.x * scale); + pivot += (rotation * Vector3.up) * (e.delta.y * scale); + } + else { orbit += e.delta * 0.5f; orbit.y = Mathf.Clamp(orbit.y, -89f, 89f); } + e.Use(); RequestRepaint?.Invoke(); + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == id) { GUIUtility.hotControl = 0; e.Use(); } + break; + case EventType.ScrollWheel: + if (!rect.Contains(e.mousePosition)) break; + distance = Mathf.Clamp(distance * (1f + e.delta.y * 0.05f), radius * 0.05f, radius * 200f); + e.Use(); RequestRepaint?.Invoke(); + break; + case EventType.KeyDown: + if (e.keyCode == KeyCode.F && rect.Contains(e.mousePosition) && content.HasValue) { Frame(content.Value); e.Use(); } + break; + } + } + + static Bounds BoundsOf(IReadOnlyList items, out int key, out bool any) + { + var bounds = new Bounds(); any = false; key = 17; + if (items == null) return bounds; + foreach (var item in items) { + if (!item.mesh) continue; + key = unchecked(key * 31 + item.mesh.GetInstanceID()); + var local = item.mesh.bounds; + // Transform the eight corners so a rotated item still fits. + for (int c = 0; c < 8; ++c) { + var corner = new Vector3((c & 1) == 0 ? local.min.x : local.max.x, (c & 2) == 0 ? local.min.y : local.max.y, (c & 4) == 0 ? local.min.z : local.max.z); + var world = item.matrix.MultiplyPoint3x4(corner); + if (!any) { bounds = new Bounds(world, Vector3.zero); any = true; } else bounds.Encapsulate(world); + } + } + return bounds; + } + + // ═══════════════════════════════════════════════════════════ + // Resources + // ═══════════════════════════════════════════════════════════ + + bool EnsureResources() + { + if (utility == null) utility = new PreviewRenderUtility { cameraFieldOfView = 30f }; + if (surface && flat && wire && points) return true; + var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); + if (!shader) return false; + surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + flat = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + flat.SetFloat("_DepthOffset", -1); + wire = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + wire.SetFloat("_Lit", 0); wire.SetFloat("_DepthOffset", -1); + points = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + points.SetFloat("_Lit", 0); points.SetFloat("_UseVertexColor", 1); points.SetFloat("_DepthOffset", -2); + return true; + } + + // A clone carrying the mode's data as vertex colours, cached per (mesh, mode). + Mesh Encoded(Mesh mesh, Shading mode) + { + long key = ((long)mesh.GetInstanceID() << 8) | (byte)mode; + if (encodedCache.TryGetValue(key, out var cached) && cached) return cached; + var colors = EncodeColors(mesh, mode); + if (colors == null) { encodedCache[key] = null; return null; } + var clone = Object.Instantiate(mesh); + clone.name = mesh.name + "_" + mode; clone.hideFlags = HideFlags.HideAndDontSave; + clone.colors32 = colors; + encodedCache[key] = clone; + return clone; + } + + /// The colour encoding of a shading mode (null when the mesh lacks the + /// data): vertex colours as they are, normals and tangents as xyz×0.5+0.5, UVs as + /// frac(u), frac(v) in red and green. + public static Color32[] EncodeColors(Mesh mesh, Shading mode) + { + int n = mesh.vertexCount; + if (n == 0) return null; + var colors = new Color32[n]; + switch (mode) { + case Shading.VertexColors: { + var c = mesh.colors32; + if (c == null || c.Length != n) for (int i = 0; i < n; ++i) colors[i] = new Color32(200, 200, 200, 255); + else Array.Copy(c, colors, n); + return colors; + } + case Shading.Normals: { + var normals = mesh.normals; + if (normals == null || normals.Length != n) return null; + for (int i = 0; i < n; ++i) colors[i] = new Color32(Byte(normals[i].x), Byte(normals[i].y), Byte(normals[i].z), 255); + return colors; + } + case Shading.Tangents: { + var tangents = mesh.tangents; + if (tangents == null || tangents.Length != n) return null; + for (int i = 0; i < n; ++i) colors[i] = new Color32(Byte(tangents[i].x), Byte(tangents[i].y), Byte(tangents[i].z), 255); + return colors; + } + default: { + int channel = mode - Shading.UV0; + var uv = new List(); mesh.GetUVs(channel, uv); + if (uv.Count != n) return null; + for (int i = 0; i < n; ++i) { + float u = uv[i].x - Mathf.Floor(uv[i].x), v = uv[i].y - Mathf.Floor(uv[i].y); + colors[i] = new Color32((byte)(u * 255f), (byte)(v * 255f), 0, 255); + } + return colors; + } + } + } + + static byte Byte(float signed) => (byte)Mathf.Clamp(Mathf.RoundToInt((signed * 0.5f + 0.5f) * 255f), 0, 255); + + Mesh WireOf(Mesh mesh) + { + int key = mesh.GetInstanceID(); + if (wireCache.TryGetValue(key, out var cached) && cached) return cached; + var indices = EdgeIndices(mesh); + Mesh edges = null; + if (indices != null) { + edges = new Mesh { name = mesh.name + "_Wire", hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; + edges.vertices = mesh.vertices; + edges.SetIndices(indices, MeshTopology.Lines, 0); + } + wireCache[key] = edges; + return edges; + } + + /// Line-list indices of a mesh's unique triangle edges (null above 1M faces). + public static List EdgeIndices(Mesh mesh) + { + var tris = mesh.triangles; + if (tris.Length / 3 > 1000000) return null; + var seen = new HashSet(); + var indices = new List(tris.Length); + long stride = mesh.vertexCount; + for (int i = 0; i < tris.Length; i += 3) + for (int k = 0; k < 3; ++k) { + int a = tris[i + k], b = tris[i + (k + 1) % 3]; + if (seen.Add(Math.Min(a, b) * stride + Math.Max(a, b))) { indices.Add(a); indices.Add(b); } + } + return indices; + } + + /// Drops cached encodings and wires (call when source meshes change). + public void InvalidateCaches() + { + foreach (var mesh in encodedCache.Values) if (mesh) Object.DestroyImmediate(mesh); + foreach (var mesh in wireCache.Values) if (mesh) Object.DestroyImmediate(mesh); + encodedCache.Clear(); wireCache.Clear(); + } + + public void Dispose() + { + InvalidateCaches(); + utility?.Cleanup(); utility = null; + if (surface) Object.DestroyImmediate(surface); + if (flat) Object.DestroyImmediate(flat); + if (wire) Object.DestroyImmediate(wire); + if (points) Object.DestroyImmediate(points); + surface = flat = wire = points = null; + } + } +} diff --git a/Editor/Framework/MeshViewport3D.cs.meta b/Editor/Framework/MeshViewport3D.cs.meta new file mode 100644 index 00000000..5ae42df2 --- /dev/null +++ b/Editor/Framework/MeshViewport3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f9e55beb0414f79a4d8ea75ed6451da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index 33a6b5d0..ec3ee999 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -33,6 +33,12 @@ public T FindTool() where T : class, IUvTool // ── Shared components ── UvToolContext ctx; UvCanvasView canvas; + // The shared 3D viewport behind the canvas's UV | 3D switch. One instance per + // window; every tool draws into it through IUvTool3D. + MeshViewport3D viewport; + bool canvas3D; + const string Canvas3DPref = "MeshLab.Canvas3D"; + readonly List viewportItems = new List(); // ── Layout ── float sideW = 300f; @@ -95,6 +101,8 @@ void OnEnable() canvas = new UvCanvasView(); canvas.Init(); canvas.RequestRepaint = Repaint; + viewport = new MeshViewport3D { RequestRepaint = Repaint }; + canvas3D = EditorPrefs.GetBool(Canvas3DPref, false); // Discover all IUvTool implementations via reflection tools = new List(); @@ -180,6 +188,7 @@ void OnDisable() ctx.LodGroup.ForceLOD(-1); canvas?.Cleanup(); + viewport?.Dispose(); viewport = null; RestoreWorkingMeshes(); } @@ -381,16 +390,28 @@ void OnGUI() // Middle column with explicit Width so it's the first thing to // shrink when the window is too narrow. EditorGUILayout.BeginVertical(GUILayout.Width(canvasW)); - DrawCanvasToolbar(); + if (canvas3D) DrawViewportToolbar(); else DrawCanvasToolbar(); bool showGroupPanel = ctx.RepackPerMesh && ctx.MeshGroupCount(ctx.PreviewLod) > 1; if (showGroupPanel) EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); - canvas.OnGUI(ctx, - ActiveTool != null ? (Action)ActiveTool.OnDrawCanvasOverlay : null); - DrawStatusBar(); + if (canvas3D) + { + DrawViewport(); + DrawViewportStatusBar(); + } + else + { + // The switch takes its click before the canvas can (spot mode eats + // mouse-downs), and paints after it so the blit does not cover it. + HandleCanvasModeSwitchInput(canvas.LastCanvasRect); + canvas.OnGUI(ctx, + ActiveTool != null ? (Action)ActiveTool.OnDrawCanvasOverlay : null); + DrawCanvasModeSwitch(canvas.LastCanvasRect); + DrawStatusBar(); + } EditorGUILayout.EndVertical(); if (showGroupPanel) @@ -707,7 +728,13 @@ static string BuildWindowDebugTag() void DrawCanvasToolbar() { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); + DrawLodButtons(); + DrawUvCanvasToolbarBody(); + } + // The LOD row shared by the UV and 3D canvas toolbars. + void DrawLodButtons() + { // ── LOD buttons ── if (ctx.LodCount > 0) { @@ -742,7 +769,10 @@ void DrawCanvasToolbar() GUILayout.Label("▲ " + lodTris.ToString("N0"), triStyle, GUILayout.Width(72)); GUILayout.Space(4); } + } + void DrawUvCanvasToolbarBody() + { // ── UV channel toggle ── { var bg = GUI.backgroundColor; @@ -806,6 +836,148 @@ void DrawCanvasToolbar() EditorGUILayout.EndHorizontal(); } + // ════════════════════════════════════════════════════════════ + // 3D canvas (shared viewport) + // ════════════════════════════════════════════════════════════ + + /// The UV | 3D switch, floating at the bottom centre of the canvas. + static Rect CanvasModeSwitchRect(Rect canvasRect) => new Rect(canvasRect.center.x - 70f, canvasRect.yMax - 26f, 140f, 20f); + static bool CanvasModeSwitchFits(Rect canvasRect) => canvasRect.width >= 120f && canvasRect.height >= 40f; + + void HandleCanvasModeSwitchInput(Rect canvasRect) + { + if (!CanvasModeSwitchFits(canvasRect)) return; + var e = Event.current; + if (e.type != EventType.MouseDown || e.button != 0) return; + var rect = CanvasModeSwitchRect(canvasRect); + if (!rect.Contains(e.mousePosition)) return; + SetCanvas3D(e.mousePosition.x >= rect.center.x); + e.Use(); + } + + void DrawCanvasModeSwitch(Rect canvasRect) + { + if (!CanvasModeSwitchFits(canvasRect)) return; + var rect = CanvasModeSwitchRect(canvasRect); + int mode = GUI.Toolbar(rect, canvas3D ? 1 : 0, new[] { "UV", "3D" }, EditorStyles.miniButton); + if ((mode == 1) != canvas3D) SetCanvas3D(mode == 1); + } + + void SetCanvas3D(bool on) + { + if (canvas3D == on) return; + canvas3D = on; + EditorPrefs.SetBool(Canvas3DPref, on); + if (on) viewport?.FrameContent(); + Repaint(); + } + + /// Content for the 3D canvas: the active tool's, or the context's preview + /// LOD meshes with their scene materials (the same meshes the UV canvas shows). + List CollectViewportItems() + { + viewportItems.Clear(); + if (ActiveTool is IUvTool3D tool3D && tool3D.Get3DContent(viewportItems)) return viewportItems; + viewportItems.Clear(); + List groupKeys = ctx.RepackPerMesh && ctx.IsolatedMeshGroup >= 0 ? ctx.BuildGroupKeys(ctx.PreviewLod) : null; + foreach (var e in ctx.ForLod(ctx.PreviewLod)) + { + if (groupKeys != null && ctx.IsolatedMeshGroup < groupKeys.Count) + { + string key = e.meshGroupKey ?? (e.renderer != null ? e.renderer.name : null); + if (key != groupKeys[ctx.IsolatedMeshGroup]) continue; + } + Mesh mesh = ctx.DMesh(e); + if (mesh == null) continue; + var matrix = e.renderer != null ? e.renderer.localToWorldMatrix : Matrix4x4.identity; + viewportItems.Add(new MeshViewport3D.Item(mesh, matrix, e.renderer != null ? e.renderer.sharedMaterials : null)); + } + return viewportItems; + } + + void DrawViewport() + { + var rect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); + var items = CollectViewportItems(); + if (items.Count == 0) + { + EditorGUI.DrawRect(rect, new Color(.08f, .08f, .08f)); + GUI.Label(rect, "No meshes for this LOD.", new GUIStyle(EditorStyles.centeredGreyMiniLabel) { alignment = TextAnchor.MiddleCenter }); + } + else + { + HandleCanvasModeSwitchInput(rect); + var tool3D = ActiveTool as IUvTool3D; + viewport.Draw(rect, items, tool3D != null ? (Action)tool3D.OnDraw3D : null); + } + DrawCanvasModeSwitch(rect); + } + + void DrawViewportToolbar() + { + // Fresh content first: the UV-channel buttons below depend on it, and the + // toolbar paints before the viewport does. + CollectViewportItems(); + EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); + DrawLodButtons(); + + // ── Shading modes (UV channels only where some mesh carries data) ── + var bg = GUI.backgroundColor; + for (int i = 0; i < MeshViewport3D.ShadingNames.Length; i++) + { + var mode = (MeshViewport3D.Shading)i; + if (mode >= MeshViewport3D.Shading.UV0 && !AnyMeshHasUv(mode - MeshViewport3D.Shading.UV0)) continue; + bool active = viewport.Mode == mode; + GUI.backgroundColor = active ? new Color(.4f, .55f, 1f) : bg; + if (GUILayout.Button(MeshViewport3D.ShadingNames[i], EditorStyles.toolbarButton) && !active) + { + viewport.Mode = mode; + Repaint(); + } + } + GUI.backgroundColor = bg; + + GUILayout.Space(6); + viewport.Wireframe = GUILayout.Toggle(viewport.Wireframe, "Wire", EditorStyles.toolbarButton, GUILayout.Width(36)); + viewport.Lit = GUILayout.Toggle(viewport.Lit, "Lit", EditorStyles.toolbarButton, GUILayout.Width(30)); + if (GUILayout.Button("Frame", EditorStyles.toolbarButton, GUILayout.Width(44))) + viewport.FrameContent(); + + ActiveTool?.OnDrawToolbarExtra(); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + } + + bool AnyMeshHasUv(int channel) + { + var uv = new List(); + foreach (var item in viewportItems) + { + if (item.mesh == null) continue; + item.mesh.GetUVs(channel, uv); + if (uv.Count > 0) return true; + } + return false; + } + + void DrawViewportStatusBar() + { + EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); + int tV = 0, tT = 0; + foreach (var item in viewportItems) + { + if (item.mesh == null) continue; + tV += item.mesh.vertexCount; + for (int sub = 0; sub < item.mesh.subMeshCount; sub++) + if (item.mesh.GetTopology(sub) == MeshTopology.Triangles) tT += (int)(item.mesh.GetIndexCount(sub) / 3); + } + EditorGUILayout.LabelField($"3D · {viewportItems.Count}m V:{tV:N0} T:{tT:N0} · {MeshViewport3D.ShadingNames[(int)viewport.Mode]}", EditorStyles.miniLabel); + GUILayout.Label("drag: orbit · MMB / alt+drag: pan · scroll: zoom · F: frame", EditorStyles.centeredGreyMiniLabel); + GUILayout.FlexibleSpace(); + ActiveTool?.OnDrawStatusBar(); + EditorGUILayout.EndHorizontal(); + } + // ═���════════════════════════════════���═════════════════════════ // Status Bar // ═══���═════════════════════════════════════════════════���══════ diff --git a/Editor/PrefabBuilderPreview.cs b/Editor/PrefabBuilderPreview.cs index b4e35a40..2a21b989 100644 --- a/Editor/PrefabBuilderPreview.cs +++ b/Editor/PrefabBuilderPreview.cs @@ -456,6 +456,37 @@ public void DrawEdgeWireframe(SceneView sv) } } + /// The same edge wireframe in the shared 3D canvas. + public void DrawEdgeWireframe(MeshViewport3D view) + { + if (edgeOverlays == null) return; + foreach (var (segments, matrix) in edgeOverlays) + { + var pairs = new List(segments.Count * 2); + var colors = new List(segments.Count); + foreach (var seg in segments) + { + var color = GetEdgeColor(seg.flags); + if (color.a < 0.2f) continue; // interior edges stay out of the 3D paint; the Wire toggle shows them + pairs.Add(seg.a); pairs.Add(seg.b); colors.Add(color); + } + view.DrawLines(pairs, colors, matrix); + } + } + + /// The unused-vertex dots in the shared 3D canvas. + public void DrawUnusedVertexDots(MeshViewport3D view) + { + if (unusedVertOverlays == null) return; + foreach (var data in unusedVertOverlays) + { + var points = new List(); + for (int i = 0; i < data.mask.Length && i < data.positions.Length; i++) + if (data.mask[i]) points.Add(data.positions[i]); + view.DrawPoints(points, data.localToWorld, new Color(1f, 0.86f, 0.16f, 0.9f), 6f); + } + } + /// Draw yellow dots for unused vertices. Call from OnSceneGUI. public void DrawUnusedVertexDots() { diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 24fc9a96..5a57880f 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -8,8 +8,9 @@ namespace SashaRX.UnityMeshLab { /// - /// Right-sidebar previews for Remesh & Bake: an orbitable 3D view of any pipeline - /// stage, the result UV layout and the baked maps. Owns every Unity object it creates. + /// Right-sidebar previews for Remesh & Bake: the stage picker and surface toggles + /// for the shared 3D canvas (Fill3D / Overlay3D), the result UV layout and the baked + /// maps. Owns every Unity object it creates. /// internal sealed class RemeshPreview : IDisposable { @@ -35,11 +36,7 @@ internal sealed class Data Stage stage = Stage.Result; Channel channel; bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, uvTexture = true, uvTint = true; - Vector2 orbit = new Vector2(-135, 20); - float zoom = 1; - PreviewRenderUtility utility; Material surface, wire, lines; - readonly Dictionary wireCache = new Dictionary(); Mesh cageOuter, cageInner; int cageMeshId; float cageDistanceCached = -1; RemeshBaker.Maps mapSource; readonly Texture2D[] mapTextures = new Texture2D[5]; @@ -60,8 +57,6 @@ public void Draw(Data data) /// Drop cached per-mesh wireframes; call before destroying preview meshes. public void Invalidate() { - foreach (var mesh in wireCache.Values) if (mesh) Object.DestroyImmediate(mesh); - wireCache.Clear(); if (cageOuter) Object.DestroyImmediate(cageOuter); if (cageInner) Object.DestroyImmediate(cageInner); cageOuter = cageInner = null; cageMeshId = 0; cageDistanceCached = -1; @@ -73,13 +68,15 @@ public void Invalidate() public void Dispose() { Invalidate(); - utility?.Cleanup(); utility = null; if (surface) Object.DestroyImmediate(surface); if (wire) Object.DestroyImmediate(wire); if (lines) Object.DestroyImmediate(lines); } // ── 3D ── + // The stage mesh is shown in the hub's shared 3D canvas (UV | 3D switch): this + // panel only picks the stage and the surface/overlay toggles; Fill3D and + // Overlay3D feed the viewport through the tool's IUvTool3D implementation. void DrawMesh(Data data) { @@ -93,29 +90,19 @@ void DrawMesh(Data data) cageView = GUILayout.Toggle(cageView, "Cage", EditorStyles.miniButtonRight); } var mesh = data.meshes[(int)stage]; - Rect rect = GUILayoutUtility.GetAspectRect(1); - HandleOrbit(rect); EditorGUILayout.LabelField(mesh ? $"{mesh.vertexCount:N0} vertices · {Triangles(mesh):N0} triangles" : "Run this stage to preview it.", EditorStyles.miniLabel); - EditorGUILayout.LabelField("Drag to orbit, scroll to zoom.", EditorStyles.centeredGreyMiniLabel); - if (Event.current.type != EventType.Repaint) return; - EditorGUI.DrawRect(rect, new Color(0.16f, 0.16f, 0.16f)); - if (!mesh || !EnsureResources()) return; + EditorGUILayout.LabelField("Shown in the canvas's 3D view (UV | 3D switch at its bottom).", EditorStyles.centeredGreyMiniLabel); + if (GUI.changed) RequestRepaint?.Invoke(); + } - var bounds = mesh.bounds; - if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) - bounds.Expand(data.cageDistance * 2); - float radius = Mathf.Max(bounds.extents.magnitude, 1e-4f); - float distance = radius / Mathf.Sin(15 * Mathf.Deg2Rad) * zoom; - var rotation = Quaternion.Euler(orbit.y, orbit.x, 0); - utility.BeginPreview(rect, GUIStyle.none); - var camera = utility.camera; - camera.clearFlags = CameraClearFlags.SolidColor; - camera.backgroundColor = new Color(0.16f, 0.16f, 0.16f, 1); - camera.transform.rotation = rotation; - camera.transform.position = bounds.center - rotation * Vector3.forward * distance; - camera.nearClipPlane = Mathf.Max(distance - radius * 2, distance * 0.001f); - camera.farClipPlane = distance + radius * 2; + /// The selected stage mesh for the shared 3D canvas, with the surface + /// material this panel's toggles configure. False when no stage has run. + public bool Fill3D(Data data, List items) + { + var mesh = data.meshes[(int)stage]; + if (!mesh) return false; + if (!EnsureResources()) return false; if (shaded) { bool useTexture = textured && stage == Stage.Result && data.baseColor; surface.SetTexture("_MainTex", useTexture ? data.baseColor : null); @@ -129,98 +116,48 @@ void DrawMesh(Data data) // double it, so the surface renders unlit exactly like the saved material. surface.SetFloat("_Lit", stage == Stage.Result && data.maps != null && data.maps.beauty ? 0 : 1); surface.SetFloat("_UseVertexColor", vertexColors && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); - for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, Matrix4x4.identity, surface, sub); + surface.SetColor("_Color", Color.white); + var materials = new Material[mesh.subMeshCount]; + for (int sub = 0; sub < materials.Length; ++sub) materials[sub] = surface; + items.Add(new MeshViewport3D.Item(mesh, Matrix4x4.identity, materials)); } - if (wireframe) { - var edges = Wire(mesh); - wire.SetColor("_Color", shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); - if (edges) utility.DrawMesh(edges, Matrix4x4.identity, wire, 0); - } - if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) - DrawCage(mesh, data.geometry, data.cageDistance); - utility.Render(); - GUI.DrawTexture(rect, utility.EndPreview(), ScaleMode.StretchToFill, false); + else items.Add(new MeshViewport3D.Item(mesh, Matrix4x4.identity, new Material[0])); + return true; } - void HandleOrbit(Rect rect) + /// Wire and cage overlays for the stage mesh in the shared 3D canvas. + public void Overlay3D(Data data, MeshViewport3D view) { - int id = GUIUtility.GetControlID("RemeshPreviewOrbit".GetHashCode(), FocusType.Passive, rect); - var e = Event.current; - switch (e.GetTypeForControl(id)) { - case EventType.MouseDown: - if (rect.Contains(e.mousePosition)) { GUIUtility.hotControl = id; e.Use(); } - break; - case EventType.MouseDrag: - if (GUIUtility.hotControl != id) break; - orbit += e.delta * 0.5f; - orbit.y = Mathf.Clamp(orbit.y, -89, 89); - e.Use(); RequestRepaint?.Invoke(); - break; - case EventType.MouseUp: - if (GUIUtility.hotControl == id) { GUIUtility.hotControl = 0; e.Use(); } - break; - case EventType.ScrollWheel: - if (!rect.Contains(e.mousePosition)) break; - zoom = Mathf.Clamp(zoom * (1 + e.delta.y * 0.05f), 0.05f, 20); - e.Use(); RequestRepaint?.Invoke(); - break; - } + var mesh = data.meshes[(int)stage]; + if (!mesh || !EnsureResources()) return; + if (wireframe) view.DrawWire(mesh, Matrix4x4.identity, shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); + if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) + DrawCage(view, mesh, data.geometry, data.cageDistance); } bool EnsureResources() { - if (utility == null) utility = new PreviewRenderUtility { cameraFieldOfView = 30 }; - if (!surface || !wire) { - var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); - if (!shader) return false; - surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - wire = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - wire.SetFloat("_Lit", 0); wire.SetFloat("_DepthOffset", -1); - } + if (surface && wire) return true; + var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); + if (!shader) return false; + surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + wire = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + wire.SetFloat("_Lit", 0); wire.SetFloat("_DepthOffset", -1); return true; } - // One line per unique triangle edge, cached per mesh instance. - Mesh Wire(Mesh mesh) - { - int key = mesh.GetInstanceID(); - if (wireCache.TryGetValue(key, out var cached) && cached) return cached; - var indices = EdgeIndices(mesh); - if (indices == null) return null; - var edges = new Mesh { name = mesh.name + "_Wire", hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; - edges.vertices = mesh.vertices; - edges.SetIndices(indices, MeshTopology.Lines, 0); - wireCache[key] = edges; - return edges; - } - - static List EdgeIndices(Mesh mesh) - { - var tris = mesh.triangles; - if (tris.Length / 3 > 1000000) return null; - var seen = new HashSet(); - var indices = new List(tris.Length); - long stride = mesh.vertexCount; - for (int i = 0; i < tris.Length; i += 3) - for (int k = 0; k < 3; ++k) { - int a = tris[i + k], b = tris[i + (k + 1) % 3]; - if (seen.Add(Math.Min(a, b) * stride + Math.Max(a, b))) { indices.Add(a); indices.Add(b); } - } - return indices; - } - // The projection cage, drawn as its two limit shells: the result mesh inflated // by ±cageDistance along the same welded cage normals the bake rays follow // (outer = ray origins, inner = ray ends). Rebuilt when the mesh or the // distance changes; turn the surface Wire off to read a shell alone. - void DrawCage(Mesh mesh, RemeshNative.Geometry geometry, float distance) + void DrawCage(MeshViewport3D view, Mesh mesh, RemeshNative.Geometry geometry, float distance) { int id = mesh.GetInstanceID(); if (id != cageMeshId || Mathf.Abs(distance - cageDistanceCached) > 1e-6f) { if (cageOuter) Object.DestroyImmediate(cageOuter); if (cageInner) Object.DestroyImmediate(cageInner); var cageNormals = RemeshBaker.BuildCageNormals(geometry, null); - var indices = EdgeIndices(mesh); + var indices = MeshViewport3D.EdgeIndices(mesh); if (indices != null) { var folds = new TriangleBvh(geometry.positions, geometry.indices); cageOuter = CageShell(mesh, geometry, cageNormals, distance, "Outer", folds); @@ -230,9 +167,9 @@ void DrawCage(Mesh mesh, RemeshNative.Geometry geometry, float distance) cageMeshId = id; cageDistanceCached = distance; } wire.SetColor("_Color", new Color(1f, 0.55f, 0.15f, 0.9f)); - if (cageOuter) utility.DrawMesh(cageOuter, Matrix4x4.identity, wire, 0); + if (cageOuter) view.DrawMesh(cageOuter, Matrix4x4.identity, wire, 0); wire.SetColor("_Color", new Color(0.35f, 0.6f, 1f, 0.45f)); - if (cageInner) utility.DrawMesh(cageInner, Matrix4x4.identity, wire, 0); + if (cageInner) view.DrawMesh(cageInner, Matrix4x4.identity, wire, 0); } static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix, TriangleBvh folds) @@ -244,7 +181,7 @@ static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageN } var shell = new Mesh { name = mesh.name + "_Cage" + suffix, hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; shell.vertices = vertices; - shell.SetIndices(EdgeIndices(mesh), MeshTopology.Lines, 0); + shell.SetIndices(MeshViewport3D.EdgeIndices(mesh), MeshTopology.Lines, 0); return shell; } diff --git a/Editor/Tools/PrefabBuilderTool.cs b/Editor/Tools/PrefabBuilderTool.cs index e02ca5f5..a40271d5 100644 --- a/Editor/Tools/PrefabBuilderTool.cs +++ b/Editor/Tools/PrefabBuilderTool.cs @@ -10,7 +10,7 @@ namespace SashaRX.UnityMeshLab { - public class PrefabBuilderTool : IUvTool + public class PrefabBuilderTool : IUvTool, IUvTool3D { UvToolContext ctx; UvCanvasView canvas; @@ -2180,6 +2180,18 @@ public void OnSceneGUI(SceneView sv) } } + // ── Shared 3D canvas: the LOD meshes as the hub shows them, plus the edge and + // problem overlays of the active scene preview mode. ── + + public bool Get3DContent(List items) => false; + + public void OnDraw3D(MeshViewport3D view) + { + if (preview == null) return; + if (previewMode == PreviewMode.EdgeWireframe && preview.HasEdgeOverlays) preview.DrawEdgeWireframe(view); + if (previewMode == PreviewMode.ProblemAreas && preview.HasUnusedVertOverlays) preview.DrawUnusedVertexDots(view); + } + // ── Unused interface methods ── public void OnDrawToolbarExtra() { } diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index afa9646c..ee452888 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -11,7 +11,7 @@ namespace SashaRX.UnityMeshLab /// right-sidebar previews and the save action. The stage work itself lives in /// , the export in . /// - public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar + public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar, IUvTool3D { public string ToolName => "Remesh & Bake"; public string ToolId => "remesh_bake"; @@ -137,6 +137,12 @@ void DrawHighlightToggle() void InvalidateHighlight() { highlight.Clear(); SceneView.RepaintAll(); } public void OnDrawRightSidebar() + { + SyncPreviewData(); + previews.Draw(previewData); + } + + void SyncPreviewData() { previewData.meshes[(int)RemeshPreview.Stage.Source] = pipeline.SourceMesh; previewData.meshes[(int)RemeshPreview.Stage.Remesh] = pipeline.VoxelMesh; @@ -146,9 +152,19 @@ public void OnDrawRightSidebar() // Live from the current settings so the cage preview reflects projection // distance changes before a re-bake; zero until a source snapshot exists. previewData.cageDistance = pipeline.SourceDiagonal * settings.projectionDistance; - previews.Draw(previewData); } + // The shared 3D canvas shows the selected pipeline stage (in capture space) with + // the right sidebar's surface and overlay toggles; before the remesh stage ran it + // falls back to the hub's view of the selected model. + public bool Get3DContent(List items) + { + SyncPreviewData(); + return previews.Fill3D(previewData, items); + } + + public void OnDraw3D(MeshViewport3D view) => previews.Overlay3D(previewData, view); + public void OnDrawSidebar() { EditorGUILayout.LabelField("High-poly → Low-poly", EditorStyles.boldLabel); diff --git a/Tests/Editor/MeshViewport3DTests.cs b/Tests/Editor/MeshViewport3DTests.cs new file mode 100644 index 00000000..6f2ee12d --- /dev/null +++ b/Tests/Editor/MeshViewport3DTests.cs @@ -0,0 +1,45 @@ +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class MeshViewport3DTests + { + static Mesh Quad() + { + var mesh = new Mesh { hideFlags = HideFlags.HideAndDontSave }; + mesh.vertices = new[] { Vector3.zero, Vector3.right, Vector3.up, new Vector3(1, 1, 0) }; + mesh.normals = new[] { Vector3.forward, Vector3.back, Vector3.up, Vector3.right }; + mesh.tangents = new[] { new Vector4(1, 0, 0, 1), new Vector4(0, 1, 0, -1), new Vector4(0, 0, 1, 1), new Vector4(-1, 0, 0, 1) }; + mesh.uv = new[] { Vector2.zero, new Vector2(1.5f, 0.25f), new Vector2(-0.25f, 1f), Vector2.one }; + mesh.triangles = new[] { 0, 1, 2, 1, 3, 2 }; + return mesh; + } + + [Test] + public void ShadingModesEncodeTheMeshDataAsColors() + { + var mesh = Quad(); + try { + var normals = MeshViewport3D.EncodeColors(mesh, MeshViewport3D.Shading.Normals); + Assert.AreEqual(new Color32(128, 128, 255, 255), normals[0]); // +z + Assert.AreEqual(new Color32(128, 128, 0, 255), normals[1]); // -z + Assert.AreEqual(new Color32(128, 255, 128, 255), normals[2]); // +y + var tangents = MeshViewport3D.EncodeColors(mesh, MeshViewport3D.Shading.Tangents); + Assert.AreEqual(new Color32(255, 128, 128, 255), tangents[0]); + Assert.AreEqual(new Color32(0, 128, 128, 255), tangents[3]); + // UVs wrap: 1.5 → 0.5, -0.25 → 0.75, 1.0 → 0. + var uv = MeshViewport3D.EncodeColors(mesh, MeshViewport3D.Shading.UV0); + Assert.AreEqual(127, uv[1].r); Assert.AreEqual(63, uv[1].g); + Assert.AreEqual(191, uv[2].r); Assert.AreEqual(255, uv[2].g); + Assert.AreEqual(0, uv[3].r); Assert.AreEqual(0, uv[3].g); + // Missing data: no UV1 → null; no vertex colours → neutral grey. + Assert.IsNull(MeshViewport3D.EncodeColors(mesh, MeshViewport3D.Shading.UV1)); + Assert.AreEqual(new Color32(200, 200, 200, 255), MeshViewport3D.EncodeColors(mesh, MeshViewport3D.Shading.VertexColors)[0]); + // Unique edges of two triangles sharing one: five lines. + Assert.AreEqual(10, MeshViewport3D.EdgeIndices(mesh).Count); + } + finally { Object.DestroyImmediate(mesh); } + } + } +} diff --git a/Tests/Editor/MeshViewport3DTests.cs.meta b/Tests/Editor/MeshViewport3DTests.cs.meta new file mode 100644 index 00000000..e1890c6f --- /dev/null +++ b/Tests/Editor/MeshViewport3DTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3fb4c20c3244217871e91717ce6a712 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 39884a72bb99a6587b1ffb2b76d31f0437a8911e Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 18:09:18 +0000 Subject: [PATCH 076/130] perf(remesh): bounded proxy search depth with nearest fallback, ordered BVH traversal, occluder reach A proxy texel looked through the whole proxy depth (the capture diagonal) with no fallback: on a 56k-triangle block under a hull every texel that saw nothing paid a full BVH traversal, and faces showed the far side of a courtyard through the block. The look is now bounded by a new Proxy search depth setting (fraction of the capture diagonal, 0.1 by default, shown in place of the projection distance for proxy shapes) and falls back to the nearest surface within the same reach, so a hull's rounded corner still picks the wall beside it. TriangleBvh visits the nearer child first in both ray traversals, so a hit culls the rest of a long ray. Beauty's scene shadow casters are limited to the source's surroundings (bounds grown by twice their size on every side). The bake status ends with the elapsed seconds. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 3 ++- Documentation~/REMESH_AND_BAKE.md | 12 ++++++--- Editor/RemeshBaker.cs | 14 ++++++++--- Editor/RemeshBeauty.cs | 8 +++++- Editor/RemeshPipeline.cs | 6 +++-- Editor/RemeshSettings.cs | 7 ++++++ Editor/Tools/RemeshBakeTool.cs | 8 +++++- Editor/TriangleBvh.cs | 42 +++++++++++++++++++++++-------- 8 files changed, 77 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e8967f1..7343b7a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ### Added - **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch (bottom centre, remembered across sessions). The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. -- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy through its full depth and takes the first source hit — no cage, no nearest fallback — and texels that see no geometry are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. +- **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. ### Fixed @@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. +- **Remesh & Bake: proxy bakes are bounded and much faster; the bake reports its time.** A proxy texel looked through the whole proxy depth (the capture diagonal) with no fallback, so a 56k-triangle block under a hull cost a full BVH traversal for every texel that saw nothing and showed the far side of a courtyard through the block. The look is now bounded by *Proxy search depth* with a nearest-surface fallback within the same reach, the BVH visits the nearer child first so a hit culls the rest of a long ray, Beauty's scene shadow casters are limited to the source's surroundings (its bounds grown by twice their size), and the bake status ends with the elapsed seconds. - **Remesh & Bake, Beauty: scene shadows, light culling masks, probe blending, skybox reflections.** Shadow rays saw only the source's own geometry, so a neighbouring building or a sibling keep-hierarchy node never shadowed it; the lighting snapshot now also captures the scene's shadow casters (geometry-only, nearest first, 4M-triangle budget) and tests them in world space. Lights whose culling mask excludes the captured renderer's layer no longer light or shadow it. Reflection probes are blended as the runtime blends them (weight 1 inside the box, 0 across the blend distance, two probes by importance, the environment taking the rest) instead of one hard-edged pick, and with Environment Reflections set to Skybox the generated skybox reflection is the fallback instead of black. - **Remesh & Bake: a stage reports done only when every keep-hierarchy node has its output.** The stage check looked at the first node, so a repaint between two nodes of a Simplify, Unwrap or Bake dereferenced a node that had not run yet (an `OnGUI` null reference). A `Dispose()` during a run (tab switch, window close) cleared the node list under the still-running stage; the clear now waits for the run to observe its cancellation. A renderer that fails halfway through its capture (a missing material on a later submesh) is rolled back instead of leaving orphan vertices for the oriented boxes. The save resolves its output folder from the root the remesh stage captured, not from whatever is selected at save time. Unknown shaders keep each map's own tiling and offset instead of the base map's. The benchmark sweep drains git's asynchronous output before reading it. - **Remesh & Bake: the front-face filter's orientation probe no longer depends on the target's density.** The probe compared source face normals with the target's cage normals at the nearest point, which splits its vote once the target is a coarse proxy (a 112-triangle garage block, a box, a hull) and switched the filter off exactly where thin walls matter most. It now judges from outside: 256 rays from a sphere around the source toward its centre meet an outer surface first, and that triangle's winding against the ray decides; the 70% majority rule and the off state for open sheets are unchanged. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 2abb8df7..49dae3c6 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -143,10 +143,14 @@ settings, marked "settings changed" in its header) and clears everything after i tight concavity shows a pinch instead of folding through to the far side. For the *Bounding box* and *Hull* shapes the cage is replaced by **proxy projection**: every texel casts straight along its face normal from just - outside the proxy through the proxy's full depth and takes the first source - surface it meets, so each proxy face shows what a viewer looking at that face - would see; there is no nearest-surface fallback. Texels whose ray meets no - geometry (the empty corners of a box around an L-shaped building) are written + outside the proxy, as deep as **Proxy search depth** allows (a fraction of + the capture diagonal, 0.1 by default), and takes the first source surface it + meets, so each proxy face shows what sits behind it; a ray that meets + nothing falls back to the nearest surface within the same reach, so a hull's + rounded corner still picks the wall beside it. Keep the depth short: a deep + look sees across courtyards through the block and costs a whole BVH + traversal per empty texel. Texels that find no geometry within reach (the + empty corners of a box around an L-shaped building) are written with **alpha 0** in the color map and filled from the nearest hit texel, and the stage status counts them — a shader that clips on alpha turns the proxy into a silhouette-correct impostor. **Vertex color tints albedo** multiplies diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index eb92aa0b..6709d4e3 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -48,13 +48,14 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // their texels look INWARD along the face normal through the whole proxy — // an orthographic snapshot of the model from that side — instead of the // short two-sided cage ray; nothing behind a texel means "empty", not a miss. + // The look is bounded (proxyDepth × capture diagonal) and falls back to the + // nearest surface within the same reach: a hull's rounded corner still picks + // the wall beside it, and no texel traverses the whole model to find nothing. bool proxy = settings.sourceShape != RemeshShape.LOD0; Vector3[] faceDirs = null; float depth = 0; if (proxy) { faceDirs = FaceNormals(target.positions, target.indices); - Vector3 mn = target.positions[0], mx = target.positions[0]; - foreach (var pv in target.positions) { mn = Vector3.Min(mn, pv); mx = Vector3.Max(mx, pv); } - depth = (mx - mn).magnitude * 1.01f + source.diagonal * 1e-4f; + depth = Mathf.Max(source.diagonal * settings.proxyDepth, source.diagonal * 1e-4f); } // Projection rays follow a smooth welded "cage" direction, not the vertex // normal: island hard-edge modes leave chart-border normals one-sided, @@ -229,6 +230,13 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] ? bvh.RaycastFacingFiltered(p + dir * eps, -dir, depth, facing) : bvh.Raycast(p + dir * eps, -dir, depth); sourceFace = hit.triangleIndex; sw = hit.barycentric; + if (sourceFace < 0) { + var nearest = facing != null + ? bvh.FindNearestNormalFiltered(p, dir, facing, 0f, depth) + : bvh.FindNearest(p, depth); + sourceFace = nearest.triangleIndex; sw = nearest.barycentric; + rayFallback = sourceFace >= 0; + } } else { Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 117045a8..01f8ddf6 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -403,6 +403,12 @@ static TriangleBvh CaptureOccluders(GameObject root, out string summary) var casters = RemeshSource.CollectSceneShadowCasters(); if (casters.Count == 0) return null; Bounds world = ComputeWorldBounds(root); + // Only casters near the source take part: its bounds grown by twice their size + // on every side. A tower three blocks away at a low sun is out of reach, and a + // city scene no longer turns one bake into a scene-wide capture. + Bounds reach = world; reach.Expand(world.size * 4f); + casters.RemoveAll(r => !r.bounds.Intersects(reach) && !r.transform.IsChildOf(root.transform)); + if (casters.Count == 0) return null; casters.Sort((a, b) => a.bounds.SqrDistance(world.center).CompareTo(b.bounds.SqrDistance(world.center))); var chosen = new List(casters.Count); long triangles = 0; int skipped = 0; @@ -420,7 +426,7 @@ static TriangleBvh CaptureOccluders(GameObject root, out string summary) try { occluded = RemeshSource.Capture(Matrix4x4.identity, chosen, required: false, geometryOnly: true); } catch (InvalidOperationException) { } if (occluded == null) return null; - summary = $"{chosen.Count:N0} scene shadow caster(s), {occluded.indices.Length / 3:N0} triangles" + + summary = $"{chosen.Count:N0} scene shadow caster(s) within reach, {occluded.indices.Length / 3:N0} triangles" + (skipped > 0 ? $" ({skipped:N0} farthest renderer(s) over the {OccluderTriangleBudget / 1_000_000}M-triangle budget left out)" : ""); return new TriangleBvh(occluded.positions, occluded.indices); } diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index c5b302a6..6cd4a377 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -127,7 +127,7 @@ public static string Key(Stage stage, RemeshSettings s, GameObject source) case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}|{s.proxyDepth:F4}"; } } @@ -343,6 +343,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to if (!string.IsNullOrEmpty(beauty.occluderSummary)) UvtLog.Info("[Remesh] Beauty shadows also test " + beauty.occluderSummary + "."); } long sourceTriangles = 0, targetTriangles = 0, misses = 0, covered = 0, empty = 0; int warnings = 0; + var clock = System.Diagnostics.Stopwatch.StartNew(); for (int i = 0; i < nodes.Count; ++i) { var node = nodes[i]; token.ThrowIfCancellationRequested(); @@ -369,7 +370,8 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to Status = (hierarchy ? $"{nodes.Count} node(s): " : "") + $"{sourceTriangles:N0} → {targetTriangles:N0} triangles. " + (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (empty > 0 ? $" {empty:N0} proxy texels see no geometry (alpha 0, filled from neighbours)." : "") + - (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); + (warnings > 0 ? $" {warnings} material warning(s), see Console." : "") + + $" Bake {clock.Elapsed.TotalSeconds:F1} s."; UvtLog.Info("[Remesh] " + Status); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index a4f16b5b..d57f4872 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -131,6 +131,12 @@ public sealed class RemeshSettings // lighting into one BaseColor texture and the saved material becomes Unlit. public RemeshBakeMode bakeMode = RemeshBakeMode.Materials; public float projectionDistance = 0.02f; // fraction of source bounds diagonal + // Proxy shapes (boxes, hull): how deep behind a proxy face a texel looks for the + // source surface, as a fraction of the capture diagonal — the ray along the face + // normal, then the nearest surface within the same reach. A full-depth look + // sees the far side of a courtyard through the block and costs a whole BVH + // traversal per empty texel; a short one keeps each face to what sits behind it. + public float proxyDepth = 0.1f; public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 public bool transferVertexColor; public bool transferVertexAlpha; @@ -160,6 +166,7 @@ public void Validate() chartIterations < 1 || chartIterations > 16 || !NonNegative(maxChartArea) || !NonNegative(maxChartBoundary) || textureResolution < 64 || textureResolution > 8192 || (textureResolution & (textureResolution - 1)) != 0 || padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1 || + !Finite(proxyDepth) || proxyDepth < 0.005f || proxyDepth > 1 || (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16) || hullResolution < 4 || hullResolution > 256 || hullTriangles < 12 || hullTriangles > 100000 || !Finite(minPartSize) || minPartSize < 0 || minPartSize > 0.5f || diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index ee452888..bbee3d73 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -260,7 +260,13 @@ public void OnDrawSidebar() "Materials transfers the source maps. Beauty bakes the object as the player sees it — realtime/mixed light with ray shadows, " + "lightmaps, ambient and reflection probes folded into one lit BaseColor texture; the saved material becomes Unlit. " + "Specular uses the scene view camera's position at bake time."), settings.bakeMode); - settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); + if (settings.sourceShape == RemeshShape.LOD0) + settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); + else + settings.proxyDepth = EditorGUILayout.Slider(new GUIContent("Proxy search depth", + "How deep behind a proxy face a texel looks for the source, as a fraction of the model's diagonal: the ray along the face " + + "normal, then the nearest surface within the same reach. Short keeps each face to what sits behind it and bakes fast; " + + "long lets a face see across courtyards and costs a full traversal per empty texel."), settings.proxyDepth, 0.01f, 1f); settings.bakeSamples = EditorGUILayout.IntPopup(new GUIContent("Samples per texel", "Supersampling for smoother edges and detail."), settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index 7581f3ec..909620ec 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -306,12 +306,13 @@ void FindNearestNormFiltRecursive(int nodeIdx, Vector3 q, Vector3 qNrm, } // ─── Raycast query ─── + // Both traversals visit the nearer child first: once a hit shrinks best.t the far + // child is culled by the slab test, which matters for long rays (a proxy texel + // looking through a whole building, a shadow ray across a scene). void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) { ref Node node = ref nodes[nodeIdx]; - - // Ray-AABB intersection (slab method) - if (!RayIntersectsAabb(origin, dir, node.bMin, node.bMax, best.t)) + if (!RayEntersAabb(origin, dir, node.bMin, node.bMax, best.t, out _)) return; // Leaf: test triangles @@ -334,17 +335,15 @@ void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) return; } - // Traverse both children (order doesn't matter much for raycast, but - // we could optimize by traversing closer first based on ray direction) - RaycastRecursive(node.left, origin, dir, ref best); - RaycastRecursive(node.right, origin, dir, ref best); + OrderChildren(node, origin, dir, best.t, out int first, out int second); + if (first >= 0) RaycastRecursive(first, origin, dir, ref best); + if (second >= 0) RaycastRecursive(second, origin, dir, ref best); } void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] fNrm, ref RayHit best) { ref Node node = ref nodes[nodeIdx]; - - if (!RayIntersectsAabb(origin, dir, node.bMin, node.bMax, best.t)) + if (!RayEntersAabb(origin, dir, node.bMin, node.bMax, best.t, out _)) return; if (node.left == -1) @@ -366,8 +365,23 @@ void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] return; } - RaycastFacingRecursive(node.left, origin, dir, fNrm, ref best); - RaycastFacingRecursive(node.right, origin, dir, fNrm, ref best); + OrderChildren(node, origin, dir, best.t, out int first, out int second); + if (first >= 0) RaycastFacingRecursive(first, origin, dir, fNrm, ref best); + if (second >= 0) RaycastFacingRecursive(second, origin, dir, fNrm, ref best); + } + + // The children the ray enters, nearer entry first; -1 for a child the ray misses + // or that lies beyond the current best hit. + void OrderChildren(in Node node, Vector3 origin, Vector3 dir, float maxT, out int first, out int second) + { + ref Node l = ref nodes[node.left]; + ref Node r = ref nodes[node.right]; + bool hitL = RayEntersAabb(origin, dir, l.bMin, l.bMax, maxT, out float tL); + bool hitR = RayEntersAabb(origin, dir, r.bMin, r.bMax, maxT, out float tR); + if (hitL && hitR) { if (tL <= tR) { first = node.left; second = node.right; } else { first = node.right; second = node.left; } } + else if (hitL) { first = node.left; second = -1; } + else if (hitR) { first = node.right; second = -1; } + else { first = second = -1; } } // ─── Geometry helpers ─── @@ -385,9 +399,14 @@ static float AabbDistSq(Vector3 bMin, Vector3 bMax, Vector3 p) /// within [0, maxT]. /// static bool RayIntersectsAabb(Vector3 origin, Vector3 dir, Vector3 bMin, Vector3 bMax, float maxT) + => RayEntersAabb(origin, dir, bMin, bMax, maxT, out _); + + // Slab test that also reports the entry distance (0 when the origin is inside). + static bool RayEntersAabb(Vector3 origin, Vector3 dir, Vector3 bMin, Vector3 bMax, float maxT, out float tEnter) { float tmin = 0f; float tmax = maxT; + tEnter = 0f; for (int i = 0; i < 3; i++) { @@ -412,6 +431,7 @@ static bool RayIntersectsAabb(Vector3 origin, Vector3 dir, Vector3 bMin, Vector3 if (tmin > tmax) return false; } } + tEnter = tmin; return true; } From 45005183be0f8e22623a44244c65ef621be1b77c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 18:36:26 +0000 Subject: [PATCH 077/130] feat(hub): the 3D canvas is the UV viewer on the model The 3D side now carries the UV viewer's panel logic instead of its own controls: the shared bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the shared Spot / Lock / Clear and UV0 / UV1 toolbar controls drive both views; the 3D toolbar adds only the surface shading, Lit and Frame. UvLayer3D renders, per mesh, what the canvas would draw for it (preview background, the active fill mode, borders) into a UV-space texture through the canvas's own GL helpers (UvCanvasView.RenderUvLayer) and lays it over the surface through the preview UV channel with a new transparent, depth-offset shader (Hidden/MeshLab/UvOverlay). Wire draws as true 3D lines. Spot picks the face under the mouse along the viewport's camera ray (per-mesh BVH), fills the same hover/selection state the UV canvas and the tools read, highlights the hovered and selected shells on the surface and shows the canvas's info panel; double-click runs the same shell callback. Viewport draws now carry per-draw colours and textures in property blocks (queued draws rendered together shared one material state before, which also painted both cage shells in one colour), and render through the active SRP so URP materials show instead of the magenta fallback. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Framework/MeshViewport3D.cs | 63 ++++++++-- Editor/Framework/UvCanvasView.cs | 80 ++++++++++++ Editor/Framework/UvLayer3D.cs | 187 +++++++++++++++++++++++++++++ Editor/Framework/UvLayer3D.cs.meta | 11 ++ Editor/Framework/UvToolHub.cs | 139 ++++++++++++++------- Editor/RemeshPreview.cs | 6 +- Shaders/UvOverlay.shader | 47 ++++++++ Shaders/UvOverlay.shader.meta | 10 ++ 9 files changed, 488 insertions(+), 57 deletions(-) create mode 100644 Editor/Framework/UvLayer3D.cs create mode 100644 Editor/Framework/UvLayer3D.cs.meta create mode 100644 Shaders/UvOverlay.shader create mode 100644 Shaders/UvOverlay.shader.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 7343b7a9..7ba42151 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch (bottom centre, remembered across sessions). The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. +- **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch (bottom centre, remembered across sessions). The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. diff --git a/Editor/Framework/MeshViewport3D.cs b/Editor/Framework/MeshViewport3D.cs index 750fa73c..c0933144 100644 --- a/Editor/Framework/MeshViewport3D.cs +++ b/Editor/Framework/MeshViewport3D.cs @@ -92,14 +92,15 @@ public void Draw(Rect rect, IReadOnlyList items, Action ov if (Wireframe) DrawWire(item.mesh, item.matrix, Mode == Shading.Shaded ? new Color(0.05f, 0.05f, 0.05f, 1f) : new Color(0.4f, 0.85f, 1f, 1f)); } overlay?.Invoke(this); - utility.Render(); + // Scene materials of a URP project render through URP, not the built-in fallback. + utility.Render(true); } catch (Exception ex) { UvtLog.Warn("[3D] " + ex.Message); } finally { drawing = false; GUI.DrawTexture(rect, utility.EndPreview(), ScaleMode.StretchToFill, false); foreach (var mesh in frameMeshes) if (mesh) Object.DestroyImmediate(mesh); - frameMeshes.Clear(); + frameMeshes.Clear(); frameBlocks.Clear(); } } @@ -126,13 +127,32 @@ void DrawItem(Item item) // Overlay API (valid inside the overlay callback) // ═══════════════════════════════════════════════════════════ - /// Draws a mesh with the given material (null = the viewport's lit grey). - public void DrawMesh(Mesh mesh, Matrix4x4 matrix, Material material = null, int submesh = -1) + // Draws are queued and rendered together at the end of the frame, so per-draw + // values (a colour, a texture) travel in property blocks, never on the shared + // materials — otherwise the last value set would paint every queued draw. + readonly List frameBlocks = new List(); + MaterialPropertyBlock Block() { var block = new MaterialPropertyBlock(); frameBlocks.Add(block); return block; } + + /// Draws a mesh with the given material (null = the viewport's lit grey), + /// optionally with per-draw properties. + public void DrawMesh(Mesh mesh, Matrix4x4 matrix, Material material = null, int submesh = -1, MaterialPropertyBlock properties = null) { if (!drawing || !mesh) return; if (!material) { material = surface; surface.SetFloat("_UseVertexColor", 0); surface.SetFloat("_Lit", 1); surface.SetColor("_Color", new Color(0.72f, 0.72f, 0.72f, 1f)); } - if (submesh >= 0) utility.DrawMesh(mesh, matrix, material, submesh); - else for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, matrix, material, sub); + if (submesh >= 0) utility.DrawMesh(mesh, matrix, material, submesh, properties); + else for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, matrix, material, sub, properties); + } + + /// Draws a mesh with the given material and a per-draw texture/tint pair + /// (the UV layer: texture + white, a shell highlight: white texture + colour). + public void DrawTextured(Mesh mesh, Matrix4x4 matrix, Material material, Texture texture, Color tint, int uvChannel) + { + if (!drawing || !mesh || !material) return; + var block = Block(); + block.SetTexture("_MainTex", texture ? texture : Texture2D.whiteTexture); + block.SetColor("_Color", tint); + block.SetFloat("_UVChannel", uvChannel); + for (int sub = 0; sub < mesh.subMeshCount; ++sub) utility.DrawMesh(mesh, matrix, material, sub, block); } /// Draws the mesh's unique triangle edges as lines (cached per mesh). @@ -140,9 +160,31 @@ public void DrawWire(Mesh mesh, Matrix4x4 matrix, Color color) { if (!drawing || !mesh) return; var edges = WireOf(mesh); - if (!edges) return; - wire.SetColor("_Color", color); - utility.DrawMesh(edges, matrix, wire, 0); + if (edges) DrawLineMesh(edges, matrix, color); + } + + /// Draws a prebuilt line-topology mesh in one colour (cage shells, edge sets). + public void DrawLineMesh(Mesh lines, Matrix4x4 matrix, Color color) + { + if (!drawing || !lines) return; + var block = Block(); block.SetColor("_Color", color); + utility.DrawMesh(lines, matrix, wire, 0, block); + } + + /// The world-space ray under a GUI point of the last drawn rect, from the + /// camera the next repaint will use. False when the point is outside the rect. + public bool TryScreenRay(Vector2 guiPoint, out Vector3 origin, out Vector3 direction) + { + origin = direction = Vector3.zero; + if (currentRect.width <= 0f || currentRect.height <= 0f || !currentRect.Contains(guiPoint)) return false; + var rotation = Quaternion.Euler(orbit.y, orbit.x, 0f); + origin = pivot - rotation * Vector3.forward * distance; + float ndcX = (guiPoint.x - currentRect.x) / currentRect.width * 2f - 1f; + float ndcY = 1f - (guiPoint.y - currentRect.y) / currentRect.height * 2f; + float tanHalf = Mathf.Tan(15f * Mathf.Deg2Rad); + float aspect = currentRect.width / currentRect.height; + direction = (rotation * new Vector3(ndcX * tanHalf * aspect, ndcY * tanHalf, 1f)).normalized; + return true; } /// Draws line segments given as consecutive point pairs. @@ -155,8 +197,7 @@ public void DrawLines(IList pairs, Matrix4x4 matrix, Color color) for (int i = 0; i < indices.Length; ++i) indices[i] = i; mesh.vertices = vertices; mesh.SetIndices(indices, MeshTopology.Lines, 0); frameMeshes.Add(mesh); - wire.SetColor("_Color", color); - utility.DrawMesh(mesh, matrix, wire, 0); + DrawLineMesh(mesh, matrix, color); } /// Draws per-segment coloured lines: pairs[i*2..i*2+1] in colors[i]. diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 0da91804..d3f369ed 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -330,6 +330,86 @@ public void OnGUI(UvToolContext ctx, Action t DrawShellDebugOverlay(canvasRect); } + // ════════════════════════════════════════════════════════════ + // UV layer for the 3D canvas + // ════════════════════════════════════════════════════════════ + + /// + /// Renders what this canvas would draw for ONE mesh — the preview background + /// (checker, lightmap or main texture), the active fill mode, the border edges — + /// into a square UV-space texture (tile 0 only, transparent elsewhere), with the + /// same pixel matrix and helpers as the canvas, so the 3D canvas can lay the UV + /// viewer over the model. Wire is left to the 3D view (true 3D lines). Returns + /// the texture (reusing target when its size fits) or null when GL is unavailable. + /// + public RenderTexture RenderUvLayer(UvToolContext ctx, Mesh mesh, MeshEntry entry, RenderTexture target, int size) + { + if (GlMat == null || mesh == null) return null; + if (target == null || target.width != size || target.height != size) + { + if (target) { target.Release(); UnityEngine.Object.DestroyImmediate(target); } + target = new RenderTexture(size, size, 0, RenderTextureFormat.ARGB32) { hideFlags = HideFlags.HideAndDontSave, wrapMode = TextureWrapMode.Repeat, filterMode = FilterMode.Bilinear }; + } + var prevRT = RenderTexture.active; + RenderTexture.active = target; + GL.Clear(true, true, new Color(0f, 0f, 0f, 0f)); + bool push = false; + try + { + GlMat.SetPass(0); + GL.PushMatrix(); push = true; + GL.LoadPixelMatrix(0, size, size, 0); + float cx = 0f, cy = 0f, sz = size; + var draws = new List> { new ValueTuple(mesh, entry, 0) }; + var tile = new HashSet { new Vector2Int(0, 0) }; + Texture bgTex = ResolveUvPreviewBackgroundTexture(ctx, draws); + if (bgTex != null) + { + float bgAlpha = CheckerEnabled ? 0.5f : (CurrentPreviewMode == PreviewMode.Lightmap ? 0.95f : 0.95f); + float bgExposure = CurrentPreviewMode == PreviewMode.Lightmap ? LmExposure : 1f; + GlTextureBg(cx, cy, sz, bgTex, Vector2.one, Vector2.zero, bgAlpha, tile, bgExposure); + GlMat.SetPass(0); + } + else if (CheckerEnabled) + GlCheckerBg(cx, cy, sz, 8, 0.5f, ctx.PreviewUvChannel == 1, tile); + + ClearFrameCaches(); + var uvs = RdUvCached(mesh, ctx.PreviewUvChannel); + var tri = GetTrianglesCached(mesh); + if (uvs != null && tri != null) + { + if (CurrentPreviewMode == PreviewMode.Lightmap && ctx.PreviewUvChannel == 1 && entry?.renderer != null && entry.renderer.lightmapIndex >= 0) + { + var so = entry.renderer.lightmapScaleOffset; + var transformed = new Vector2[uvs.Length]; + for (int vi = 0; vi < uvs.Length; vi++) + transformed[vi] = new Vector2(uvs[vi].x * so.x + so.z, uvs[vi].y * so.y + so.w); + uvs = transformed; + } + int uN = uvs.Length, fN = tri.Length / 3; + bool hasFill = !FillHidden && FillModes.Count > 0 && ActiveFillModeIndex >= 0 && ActiveFillModeIndex < FillModes.Count; + if (hasFill) FillModes[ActiveFillModeIndex].drawCallback?.Invoke(this, cx, cy, sz, mesh, entry); + if (ShowBorder) + { + HashSet bdr = entry?.transferState?.borderPrimitiveIds; + if (bdr != null && bdr.Count > 0) GlBdr(cx, cy, sz, uvs, tri, fN, uN, bdr); + else GlUvBoundary(ctx, cx, cy, sz, mesh, uvs, tri, uN); + } + } + } + catch (Exception ex) { UvtLog.Warn("[UV] 3D layer GL: " + ex.Message); } + finally { if (push) GL.PopMatrix(); } + RenderTexture.active = prevRT; + return target; + } + + /// The spot-mode info panel for a hit found in the 3D canvas. + public ShellDebugHit MakeHit(UvToolContext ctx, MeshEntry entry, Mesh mesh, UvShell shell, Vector2 uvPoint) + => BuildHit(ctx, entry, mesh, shell, uvPoint, 0); + + /// The hover/selection info panel in the canvas's top-right corner. + public void DrawShellInfoPanel(Rect canvasRect) => DrawShellDebugOverlay(canvasRect); + // ════════════════════════════════════════════════════════════ // Input Handling // ════════════════════════════════════════════════════════════ diff --git a/Editor/Framework/UvLayer3D.cs b/Editor/Framework/UvLayer3D.cs new file mode 100644 index 00000000..3e1c3634 --- /dev/null +++ b/Editor/Framework/UvLayer3D.cs @@ -0,0 +1,187 @@ +// UvLayer3D.cs — the UV viewer laid over the model in the 3D canvas: the active fill +// mode, borders and preview background rendered per mesh into a UV-space texture +// and drawn through the preview UV channel; the canvas's wire toggle as true 3D +// lines; spot-mode picking (ray → face → shell) feeding the same hover/selection +// state the UV canvas and the tools read; hovered/selected shells highlighted on +// the surface. + +using System; +using System.Collections.Generic; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + public sealed class UvLayer3D : IDisposable + { + sealed class Layer { public RenderTexture texture; public string key; } + + public int LayerSize = 1024; + static readonly Color HoverColor = new Color(.25f, 1f, .95f, .35f); + static readonly Color SelectedColor = new Color(1f, .95f, .2f, .4f); + static readonly Color WireShaded = new Color(0.05f, 0.05f, 0.05f, 1f); + + readonly Dictionary layers = new Dictionary(); + readonly Dictionary bvhs = new Dictionary(); + readonly Dictionary shellMeshes = new Dictionary(); + Material overlay; + + bool EnsureMaterial() + { + if (overlay) return true; + var shader = Shader.Find("Hidden/MeshLab/UvOverlay"); + if (!shader) return false; + overlay = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; + return true; + } + + /// True when any part of the UV viewer would show on the model. + static bool LayerVisible(UvCanvasView canvas) => + (!canvas.FillHidden && canvas.FillModes.Count > 0) || canvas.ShowBorder || canvas.CheckerEnabled || + canvas.CurrentPreviewMode != UvCanvasView.PreviewMode.Off; + + string LayerKey(UvCanvasView canvas, UvToolContext ctx, Mesh mesh, MeshEntry entry) + { + int selected = canvas.HasSelectedShell && canvas.SelectedShell.meshEntry == entry ? canvas.SelectedShell.shellId : -1; + return $"{mesh.GetInstanceID()}|{canvas.ActiveFillModeIndex}|{canvas.FillHidden}|{canvas.FillAlpha:F3}|{canvas.ShowBorder}|{canvas.CurrentPreviewMode}|" + + $"{canvas.CheckerEnabled}|{canvas.LmExposure:F2}|{ctx.PreviewUvChannel}|{(int)canvas.ValidationFilterMask}|{selected}"; + } + + /// Draws the UV viewer over every context item (an item without an entry is + /// tool content and gets only the wire). Call from the viewport's overlay callback. + public void Draw(MeshViewport3D view, UvCanvasView canvas, UvToolContext ctx, + IReadOnlyList items, IReadOnlyList entries) + { + bool layerVisible = LayerVisible(canvas) && EnsureMaterial(); + // Many meshes share the window's memory budget: smaller layers past two dozen. + int size = items.Count > 24 ? 512 : LayerSize; + for (int i = 0; i < items.Count; i++) + { + var item = items[i]; + if (!item.mesh) continue; + var entry = i < entries.Count ? entries[i] : null; + if (entry == null) continue; // tool content draws its own wire and overlays + if (canvas.ShowWireframe) view.DrawWire(item.mesh, item.matrix, WireShaded); + if (layerVisible) + { + int id = item.mesh.GetInstanceID(); + string key = LayerKey(canvas, ctx, item.mesh, entry); + if (!layers.TryGetValue(id, out var layer)) layers[id] = layer = new Layer(); + if (layer.key != key || layer.texture == null) + { + layer.texture = canvas.RenderUvLayer(ctx, item.mesh, entry, layer.texture, size); + layer.key = key; + } + if (layer.texture) view.DrawTextured(item.mesh, item.matrix, overlay, layer.texture, Color.white, ctx.PreviewUvChannel); + } + if (canvas.SpotMode && EnsureMaterial()) + { + if (canvas.HasSelectedShell && canvas.SelectedShell.meshEntry == entry) + DrawShell(view, canvas, ctx, item, canvas.SelectedShell.shellId, SelectedColor); + if (canvas.HasHoveredShell && canvas.HoveredShell.meshEntry == entry && + !(canvas.HasSelectedShell && canvas.SelectedShell.meshEntry == entry && canvas.SelectedShell.shellId == canvas.HoveredShell.shellId)) + DrawShell(view, canvas, ctx, item, canvas.HoveredShell.shellId, HoverColor); + } + } + } + + void DrawShell(MeshViewport3D view, UvCanvasView canvas, UvToolContext ctx, MeshViewport3D.Item item, int shellId, Color color) + { + var mesh = ShellMesh(canvas, ctx, item.mesh, shellId); + if (mesh) view.DrawTextured(mesh, item.matrix, overlay, null, color, 0); + } + + // The faces of one shell as a mesh of their own (positions only), cached. + Mesh ShellMesh(UvCanvasView canvas, UvToolContext ctx, Mesh source, int shellId) + { + long key = ((long)source.GetInstanceID() << 20) ^ (uint)shellId ^ ((long)ctx.PreviewUvChannel << 40); + if (shellMeshes.TryGetValue(key, out var cached) && cached) return cached; + var cache = canvas.GetPreviewShellCache(ctx, source, ctx.PreviewUvChannel); + if (cache == null || !cache.shellById.TryGetValue(shellId, out var shell)) return null; + var vertices = source.vertices; + var indices = new List(shell.faceIndices.Count * 3); + foreach (int f in shell.faceIndices) + { + int t0 = f * 3; + if (t0 + 2 >= cache.triangles.Length) continue; + indices.Add(cache.triangles[t0]); indices.Add(cache.triangles[t0 + 1]); indices.Add(cache.triangles[t0 + 2]); + } + var mesh = new Mesh { name = source.name + "_Shell" + shellId, hideFlags = HideFlags.HideAndDontSave, + indexFormat = UnityEngine.Rendering.IndexFormat.UInt32 }; + mesh.vertices = vertices; + mesh.SetIndices(indices, MeshTopology.Triangles, 0); + shellMeshes[key] = mesh; + return mesh; + } + + /// The face under a GUI point: the nearest triangle of any context item + /// along the viewport's camera ray, with its shell for the preview UV channel. + public bool Pick(MeshViewport3D view, UvCanvasView canvas, UvToolContext ctx, Vector2 guiPoint, + IReadOnlyList items, IReadOnlyList entries, + out ShellUvHit hit, out UvCanvasView.ShellDebugHit debug, out Vector3 world) + { + hit = default; debug = null; world = Vector3.zero; + if (!view.TryScreenRay(guiPoint, out var origin, out var direction)) return false; + float bestDistance = float.MaxValue; int bestItem = -1, bestFace = -1; Vector3 bestBary = Vector3.zero; + for (int i = 0; i < items.Count && i < entries.Count; i++) + { + var item = items[i]; + if (!item.mesh || entries[i] == null) continue; + var toLocal = item.matrix.inverse; + Vector3 localOrigin = toLocal.MultiplyPoint3x4(origin); + Vector3 localDir = toLocal.MultiplyVector(direction); + float scale = localDir.magnitude; + if (scale < 1e-12f) continue; + localDir /= scale; + var bvh = BvhOf(canvas, item.mesh); + if (bvh == null) continue; + var ray = bvh.Raycast(localOrigin, localDir, float.MaxValue); + if (ray.triangleIndex < 0) continue; + Vector3 hitWorld = item.matrix.MultiplyPoint3x4(localOrigin + localDir * ray.t); + float distance = (hitWorld - origin).magnitude; + if (distance < bestDistance) { bestDistance = distance; bestItem = i; bestFace = ray.triangleIndex; bestBary = ray.barycentric; world = hitWorld; } + } + if (bestItem < 0) return false; + var mesh = items[bestItem].mesh; var entry = entries[bestItem]; + var uvs = canvas.RdUvCached(mesh, ctx.PreviewUvChannel); + var tris = canvas.GetTrianglesCached(mesh); + if (uvs == null || tris == null || bestFace * 3 + 2 >= tris.Length) return false; + int a = tris[bestFace * 3], b = tris[bestFace * 3 + 1], c = tris[bestFace * 3 + 2]; + if (a >= uvs.Length || b >= uvs.Length || c >= uvs.Length) return false; + Vector2 uv = uvs[a] * bestBary.x + uvs[b] * bestBary.y + uvs[c] * bestBary.z; + var cache = canvas.GetPreviewShellCache(ctx, mesh, ctx.PreviewUvChannel); + int shellId = -1; UvShell shell = null; + if (cache != null && cache.faceToShell.TryGetValue(bestFace, out shellId)) cache.shellById.TryGetValue(shellId, out shell); + hit = new ShellUvHit { meshEntry = entry, shellId = shellId, faceIndex = bestFace, uvHit = uv, barycentric = bestBary }; + debug = shell != null ? canvas.MakeHit(ctx, entry, mesh, shell, uv) : null; + return true; + } + + TriangleBvh BvhOf(UvCanvasView canvas, Mesh mesh) + { + int id = mesh.GetInstanceID(); + if (bvhs.TryGetValue(id, out var bvh)) return bvh; + var tris = canvas.GetTrianglesCached(mesh); + bvh = tris != null && tris.Length >= 3 ? new TriangleBvh(mesh.vertices, tris) : null; + bvhs[id] = bvh; + return bvh; + } + + /// Drops everything derived from the meshes (call when the mesh entries change). + public void Invalidate() + { + foreach (var layer in layers.Values) if (layer.texture) { layer.texture.Release(); Object.DestroyImmediate(layer.texture); } + layers.Clear(); + bvhs.Clear(); + foreach (var mesh in shellMeshes.Values) if (mesh) Object.DestroyImmediate(mesh); + shellMeshes.Clear(); + } + + public void Dispose() + { + Invalidate(); + if (overlay) Object.DestroyImmediate(overlay); + overlay = null; + } + } +} diff --git a/Editor/Framework/UvLayer3D.cs.meta b/Editor/Framework/UvLayer3D.cs.meta new file mode 100644 index 00000000..f71ad2ad --- /dev/null +++ b/Editor/Framework/UvLayer3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa873c142c7744c5971e021032436bd1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index ec3ee999..a11d6a33 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -36,9 +36,11 @@ public T FindTool() where T : class, IUvTool // The shared 3D viewport behind the canvas's UV | 3D switch. One instance per // window; every tool draws into it through IUvTool3D. MeshViewport3D viewport; + UvLayer3D uvLayer; bool canvas3D; const string Canvas3DPref = "MeshLab.Canvas3D"; readonly List viewportItems = new List(); + readonly List viewportEntries = new List(); // parallel to viewportItems; null for tool content // ── Layout ── float sideW = 300f; @@ -102,6 +104,7 @@ void OnEnable() canvas.Init(); canvas.RequestRepaint = Repaint; viewport = new MeshViewport3D { RequestRepaint = Repaint }; + uvLayer = new UvLayer3D(); canvas3D = EditorPrefs.GetBool(Canvas3DPref, false); // Discover all IUvTool implementations via reflection @@ -189,6 +192,7 @@ void OnDisable() canvas?.Cleanup(); viewport?.Dispose(); viewport = null; + uvLayer?.Dispose(); uvLayer = null; RestoreWorkingMeshes(); } @@ -240,7 +244,7 @@ void OnSelectionChange() ctx.Refresh(lg); _cachedLodCount = ctx.LodCount; _cachedRendererCount = CountValidRenderers(lg); - ActiveTool?.OnRefresh(); + ActiveTool?.OnRefresh(); InvalidateViewportCaches(); } else if (lg == null) { @@ -280,7 +284,7 @@ void OnSelectionChange() _cachedLodCount = 0; _cachedRendererCount = 0; } - ActiveTool?.OnRefresh(); + ActiveTool?.OnRefresh(); InvalidateViewportCaches(); } } } @@ -320,7 +324,7 @@ void OnUndoRedo() } } - ActiveTool?.OnRefresh(); + ActiveTool?.OnRefresh(); InvalidateViewportCaches(); Repaint(); } @@ -342,7 +346,7 @@ void OnGUI() _cachedLodCount = ctx.LodCount; _cachedRendererCount = CountValidRenderers(ctx.LodGroup); ctx.PreviewLod = Mathf.Clamp(ctx.PreviewLod, 0, Mathf.Max(0, ctx.LodCount - 1)); - ActiveTool?.OnRefresh(); + ActiveTool?.OnRefresh(); InvalidateViewportCaches(); } } @@ -400,7 +404,7 @@ void OnGUI() if (canvas3D) { DrawViewport(); - DrawViewportStatusBar(); + DrawStatusBar(); } else { @@ -772,6 +776,19 @@ void DrawLodButtons() } void DrawUvCanvasToolbarBody() + { + DrawUvChannelToggle(); + DrawSpotControls(); + + // ── Zoom + Fit ── + canvas.Zoom = EditorGUILayout.Slider(canvas.Zoom, .01f, 20f, GUILayout.Width(90)); + if (GUILayout.Button("Fit", EditorStyles.toolbarButton, GUILayout.Width(28))) + canvas.FitToUvBounds(ctx); + + DrawToolbarTail(); + } + + void DrawUvChannelToggle() { // ── UV channel toggle ── { @@ -790,7 +807,10 @@ void DrawUvCanvasToolbarBody() } GUILayout.Space(6); + } + void DrawSpotControls() + { // ── Spot / Lock / Clear ── bool spotNext = GUILayout.Toggle(canvas.SpotMode, "Spot", EditorStyles.toolbarButton, GUILayout.Width(52)); if (spotNext != canvas.SpotMode) @@ -810,12 +830,10 @@ void DrawUvCanvasToolbarBody() } GUILayout.Space(6); + } - // ── Zoom + Fit ── - canvas.Zoom = EditorGUILayout.Slider(canvas.Zoom, .01f, 20f, GUILayout.Width(90)); - if (GUILayout.Button("Fit", EditorStyles.toolbarButton, GUILayout.Width(28))) - canvas.FitToUvBounds(ctx); - + void DrawToolbarTail() + { // ── Tool extra toolbar ── ActiveTool?.OnDrawToolbarExtra(); @@ -876,8 +894,12 @@ void SetCanvas3D(bool on) /// LOD meshes with their scene materials (the same meshes the UV canvas shows). List CollectViewportItems() { - viewportItems.Clear(); - if (ActiveTool is IUvTool3D tool3D && tool3D.Get3DContent(viewportItems)) return viewportItems; + viewportItems.Clear(); viewportEntries.Clear(); + if (ActiveTool is IUvTool3D tool3D && tool3D.Get3DContent(viewportItems)) + { + for (int i = 0; i < viewportItems.Count; i++) viewportEntries.Add(null); + return viewportItems; + } viewportItems.Clear(); List groupKeys = ctx.RepackPerMesh && ctx.IsolatedMeshGroup >= 0 ? ctx.BuildGroupKeys(ctx.PreviewLod) : null; foreach (var e in ctx.ForLod(ctx.PreviewLod)) @@ -891,10 +913,59 @@ void SetCanvas3D(bool on) if (mesh == null) continue; var matrix = e.renderer != null ? e.renderer.localToWorldMatrix : Matrix4x4.identity; viewportItems.Add(new MeshViewport3D.Item(mesh, matrix, e.renderer != null ? e.renderer.sharedMaterials : null)); + viewportEntries.Add(e); } return viewportItems; } + void InvalidateViewportCaches() + { + uvLayer?.Invalidate(); + viewport?.InvalidateCaches(); + } + + // Spot mode in 3D: the face under the mouse (camera ray against the context + // meshes) feeds the same hover/selection state the UV canvas and the tools read. + void HandleViewportSpot(Rect rect) + { + if (!canvas.SpotMode) return; + var e = Event.current; + bool inside = rect.Contains(e.mousePosition); + if (!inside) + { + if (!canvas.LockSelection && canvas.HasHoveredShell) { canvas.HasHoveredShell = false; canvas.HoveredShellDebug = null; Repaint(); } + return; + } + if (e.type != EventType.MouseMove && e.type != EventType.MouseDown && e.type != EventType.MouseDrag) return; + if (!canvas.LockSelection) + { + if (uvLayer.Pick(viewport, canvas, ctx, e.mousePosition, viewportItems, viewportEntries, out var hit, out var debug, out var world)) + { + canvas.HoveredShell = hit; canvas.HasHoveredShell = true; canvas.HoveredShellDebug = debug; + canvas.HoveredShellId = hit.shellId; canvas.UvSpot = hit.uvHit; canvas.HoverHitValid = true; canvas.HoverWorldPos = world; + canvas.CanvasSpotUv = hit.uvHit; canvas.CanvasSpotValid = true; + } + else + { + canvas.HasHoveredShell = false; canvas.HoveredShellDebug = null; canvas.HoverHitValid = false; canvas.CanvasSpotValid = false; + } + Repaint(); SceneView.RepaintAll(); + } + if (e.type == EventType.MouseDown && e.button == 0 && !e.alt) + { + if (canvas.HasHoveredShell) { canvas.SelectedShell = canvas.HoveredShell; canvas.HasSelectedShell = true; } + else if (!canvas.LockSelection) canvas.HasSelectedShell = false; + canvas.SelectedShellDebug = canvas.HoveredShellDebug != null ? UvCanvasView.CloneHit(canvas.HoveredShellDebug) : null; + if (e.clickCount == 2 && canvas.HasSelectedShell) + { + try { canvas.OnDoubleClickShell?.Invoke(canvas.SelectedShell); } + catch (Exception ex) { UvtLog.Error($"[3D] Double-click shell focus failed: {ex.Message}"); } + e.Use(); + } + Repaint(); SceneView.RepaintAll(); + } + } + void DrawViewport() { var rect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); @@ -907,21 +978,29 @@ void DrawViewport() else { HandleCanvasModeSwitchInput(rect); + HandleViewportSpot(rect); var tool3D = ActiveTool as IUvTool3D; - viewport.Draw(rect, items, tool3D != null ? (Action)tool3D.OnDraw3D : null); + viewport.Draw(rect, items, view => + { + uvLayer.Draw(view, canvas, ctx, viewportItems, viewportEntries); + tool3D?.OnDraw3D(view); + }); + if (canvas.SpotMode) canvas.DrawShellInfoPanel(rect); } DrawCanvasModeSwitch(rect); } void DrawViewportToolbar() { - // Fresh content first: the UV-channel buttons below depend on it, and the - // toolbar paints before the viewport does. + // Fresh content first: the UV-channel shading buttons below depend on it, and + // the toolbar paints before the viewport does. CollectViewportItems(); EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); DrawLodButtons(); + DrawUvChannelToggle(); + DrawSpotControls(); - // ── Shading modes (UV channels only where some mesh carries data) ── + // ── Surface shading (in place of the UV zoom) ── var bg = GUI.backgroundColor; for (int i = 0; i < MeshViewport3D.ShadingNames.Length; i++) { @@ -936,16 +1015,12 @@ void DrawViewportToolbar() } } GUI.backgroundColor = bg; - - GUILayout.Space(6); - viewport.Wireframe = GUILayout.Toggle(viewport.Wireframe, "Wire", EditorStyles.toolbarButton, GUILayout.Width(36)); + GUILayout.Space(4); viewport.Lit = GUILayout.Toggle(viewport.Lit, "Lit", EditorStyles.toolbarButton, GUILayout.Width(30)); if (GUILayout.Button("Frame", EditorStyles.toolbarButton, GUILayout.Width(44))) viewport.FrameContent(); - ActiveTool?.OnDrawToolbarExtra(); - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); + DrawToolbarTail(); } bool AnyMeshHasUv(int channel) @@ -960,24 +1035,6 @@ bool AnyMeshHasUv(int channel) return false; } - void DrawViewportStatusBar() - { - EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); - int tV = 0, tT = 0; - foreach (var item in viewportItems) - { - if (item.mesh == null) continue; - tV += item.mesh.vertexCount; - for (int sub = 0; sub < item.mesh.subMeshCount; sub++) - if (item.mesh.GetTopology(sub) == MeshTopology.Triangles) tT += (int)(item.mesh.GetIndexCount(sub) / 3); - } - EditorGUILayout.LabelField($"3D · {viewportItems.Count}m V:{tV:N0} T:{tT:N0} · {MeshViewport3D.ShadingNames[(int)viewport.Mode]}", EditorStyles.miniLabel); - GUILayout.Label("drag: orbit · MMB / alt+drag: pan · scroll: zoom · F: frame", EditorStyles.centeredGreyMiniLabel); - GUILayout.FlexibleSpace(); - ActiveTool?.OnDrawStatusBar(); - EditorGUILayout.EndHorizontal(); - } - // ═���════════════════════════════════���═════════════════════════ // Status Bar // ═══���═════════════════════════════════════════════════���══════ @@ -1776,7 +1833,7 @@ void ResetSelectedUv2() if (ctx?.LodGroup != null) { ctx.Refresh(ctx.LodGroup); - ActiveTool?.OnRefresh(); + ActiveTool?.OnRefresh(); InvalidateViewportCaches(); } ctx.PostResetColoring = true; diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 5a57880f..8e136597 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -166,10 +166,8 @@ void DrawCage(MeshViewport3D view, Mesh mesh, RemeshNative.Geometry geometry, fl else cageOuter = cageInner = null; cageMeshId = id; cageDistanceCached = distance; } - wire.SetColor("_Color", new Color(1f, 0.55f, 0.15f, 0.9f)); - if (cageOuter) view.DrawMesh(cageOuter, Matrix4x4.identity, wire, 0); - wire.SetColor("_Color", new Color(0.35f, 0.6f, 1f, 0.45f)); - if (cageInner) view.DrawMesh(cageInner, Matrix4x4.identity, wire, 0); + if (cageOuter) view.DrawLineMesh(cageOuter, Matrix4x4.identity, new Color(1f, 0.55f, 0.15f, 0.9f)); + if (cageInner) view.DrawLineMesh(cageInner, Matrix4x4.identity, new Color(0.35f, 0.6f, 1f, 0.45f)); } static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix, TriangleBvh folds) diff --git a/Shaders/UvOverlay.shader b/Shaders/UvOverlay.shader new file mode 100644 index 00000000..c8300a07 --- /dev/null +++ b/Shaders/UvOverlay.shader @@ -0,0 +1,47 @@ +// Mesh Lab 3D canvas: the UV viewer's layer (shell fills, borders, checker or +// lightmap background) rendered into a UV-space texture and laid over the model +// through the preview UV channel. Transparent, depth-offset so it wins against the +// surface it covers; with a white texture it tints (shell highlights). +Shader "Hidden/MeshLab/UvOverlay" +{ + Properties + { + _MainTex ("Overlay", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + _UVChannel ("UV Channel", Float) = 0 + } + SubShader + { + Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } + ZWrite Off + Cull Off + Offset -1, -1 + Blend SrcAlpha OneMinusSrcAlpha + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + sampler2D _MainTex; + float4 _Color; + float _UVChannel; + struct appdata { float4 vertex : POSITION; float2 uv0 : TEXCOORD0; float2 uv1 : TEXCOORD1; float2 uv2 : TEXCOORD2; float2 uv3 : TEXCOORD3; }; + struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; + v2f vert(appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + int ch = (int)_UVChannel; + o.uv = ch == 1 ? v.uv1 : ch == 2 ? v.uv2 : ch == 3 ? v.uv3 : v.uv0; + return o; + } + fixed4 frag(v2f i) : SV_Target + { + fixed4 t = tex2D(_MainTex, i.uv); + return fixed4(t.rgb * _Color.rgb, t.a * _Color.a); + } + ENDCG + } + } +} diff --git a/Shaders/UvOverlay.shader.meta b/Shaders/UvOverlay.shader.meta new file mode 100644 index 00000000..cd8d70d4 --- /dev/null +++ b/Shaders/UvOverlay.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7e714280488b4cb89c0cb6a9758bb5da +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: From d088229dbf07a96b245eca867f67be9e7a3eb872 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 18:50:23 +0000 Subject: [PATCH 078/130] feat(remesh): trim the voxel remesh to the source surface The voxelizer closes every surface, so an open source (a wall sheet, a roof plane, a curtain) came back as a thin slab with a front, a back and rims, and the back side baked and shipped as geometry. RemeshTrim masks the remesh after voxelization: a face stays only when a source face lies within two voxel cells of it, parallel to it (either winding, since the voxelizer's orientation convention need not match the source's), with the remesh face on that source face's front side. The slab's back and rims have none and go; closed sources are left whole; double-sided sources keep both sides; a source wound inside out is judged by its flipped normals. Unreferenced vertices are compacted. "Trim to source surface" (voxel remesh stage, default on) toggles it and is part of the remesh staleness key; the status reports the trimmed faces. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 11 +++- Editor/RemeshPipeline.cs | 28 +++++--- Editor/RemeshSettings.cs | 4 ++ Editor/RemeshTrim.cs | 102 ++++++++++++++++++++++++++++++ Editor/RemeshTrim.cs.meta | 11 ++++ Editor/Tools/RemeshBakeTool.cs | 4 ++ Tests/Editor/RemeshBakeTests.cs | 31 +++++++++ 8 files changed, 183 insertions(+), 9 deletions(-) create mode 100644 Editor/RemeshTrim.cs create mode 100644 Editor/RemeshTrim.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ba42151..7a0f7d31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Collision meshes with suffixed names are excluded.** The collision matcher only accepted `Name_COL` and `Name_COL_Hull{N}` literally, so assets carrying variants like `Name_COL_M` (no UV0, rightly) aborted the whole capture with "needs source UV0". The matcher now takes the `_COL` token with any trailing suffix token (`_COL_M`, `_COL_S`, `_COL_Hull2`…) while ordinary words (`_COLOR`, `_COLLECTION`) stay out, and the capture checks the mesh asset's name for the suffix as well, not only the GameObject's. - **The projection cage is a proper smooth cage.** The welded cage directions were raw area-weighted sums, so the sliver noise of the adaptive decimation went straight into them — the preview shells inflated lumpy and every tight concavity folded through to the far side. The directions are now Laplacian-smoothed over the welded connectivity (smoothing runs on the welded mesh so it flows through chart borders and hard edges instead of re-splitting them — the "fully smooth cage" bakers prescribe, applied to the bake rays too), and each preview shell's offset stops short of self-intersection by casting its segment against the surface, showing a pinch in wheel wells instead of noise. - **Beauty bakes decode Bakery lightmaps correctly.** Unity's own RGBA32 lightmaps are RGBM (`rgb × a × 8`); Bakery's 8-bit output is plain linear with alpha pinned at 1, which the unconditional RGBM decode would overbrighten eightfold. HDR encodings (Bakery's default `.hdr`) always decoded directly; 8-bit maps are now auto-detected by the pinned alpha. Direction textures are not sampled (the colour map already carries each surface's irradiance) and shadowmask lights contribute through their realtime component with the bake's ray shadows standing in for the mask. +- **Remesh & Bake: the voxel remesh is trimmed to the source surface.** The voxelizer closes every surface, so an open source (a wall sheet, a roof plane, a curtain) came back as a thin slab — a front, a back and rims — and the back side baked and shipped as geometry. *Trim to source surface* (voxel remesh stage, default on) now masks the remesh after voxelization: a face stays only when a source face lies within two voxel cells of it, parallel to it (either winding), with the remesh face on that source face's front side; the slab's back and rims have none and go, closed sources are left whole, double-sided sources keep both sides, and a source wound inside out is judged by its flipped normals. The status reports the trimmed face count; the toggle is part of the remesh staleness key. - **Remesh & Bake: proxy bakes are bounded and much faster; the bake reports its time.** A proxy texel looked through the whole proxy depth (the capture diagonal) with no fallback, so a 56k-triangle block under a hull cost a full BVH traversal for every texel that saw nothing and showed the far side of a courtyard through the block. The look is now bounded by *Proxy search depth* with a nearest-surface fallback within the same reach, the BVH visits the nearer child first so a hit culls the rest of a long ray, Beauty's scene shadow casters are limited to the source's surroundings (its bounds grown by twice their size), and the bake status ends with the elapsed seconds. - **Remesh & Bake, Beauty: scene shadows, light culling masks, probe blending, skybox reflections.** Shadow rays saw only the source's own geometry, so a neighbouring building or a sibling keep-hierarchy node never shadowed it; the lighting snapshot now also captures the scene's shadow casters (geometry-only, nearest first, 4M-triangle budget) and tests them in world space. Lights whose culling mask excludes the captured renderer's layer no longer light or shadow it. Reflection probes are blended as the runtime blends them (weight 1 inside the box, 0 across the blend distance, two probes by importance, the environment taking the rest) instead of one hard-edged pick, and with Environment Reflections set to Skybox the generated skybox reflection is the fallback instead of black. - **Remesh & Bake: a stage reports done only when every keep-hierarchy node has its output.** The stage check looked at the first node, so a repaint between two nodes of a Simplify, Unwrap or Bake dereferenced a node that had not run yet (an `OnGUI` null reference). A `Dispose()` during a run (tab switch, window close) cleared the node list under the still-running stage; the clear now waits for the run to observe its cancellation. A renderer that fails halfway through its capture (a missing material on a later submesh) is rolled back instead of leaving orphan vertices for the oriented boxes. The save resolves its output folder from the root the remesh stage captured, not from whatever is selected at save time. Unknown shaders keep each map's own tiling and offset instead of the base map's. The benchmark sweep drains git's asynchronous output before reading it. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 49dae3c6..bf61d6f2 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -70,7 +70,16 @@ settings, marked "settings changed" in its header) and clears everything after i importers are never touched (no reimports). 2. **Voxel remesh** — voxel resolution (4–256), fit to source surface, two-sided shell. Higher resolution preserves smaller gaps but produces a denser, - uniform intermediate mesh. + uniform intermediate mesh. **Trim to source surface** (default on) masks the + result against the source: the voxelizer closes every surface, so an open + sheet (a wall, a roof plane, a curtain) comes back as a thin slab with a + front, a back and rims; a remesh face stays only when a source face lies + within two voxel cells of it, parallel to it, with the remesh face on that + source face's front side — the back of a one-sided sheet and the slab's rims + have none and go, a closed source is left whole, and a source that is + double-sided where it matters keeps both sides. The status reports how many + faces went. Turn it off to keep the slab, for instance with *Two-sided + shell*. 3. **Simplify** — quadric simplification of the voxel mesh. It collapses the cheapest edges first, so with *Regularize = None* flat areas reduce to a few large triangles while curved or detailed areas keep their density. *Maximum diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 6cd4a377..4b0ff819 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -122,7 +122,7 @@ public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|" + - $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minRodVoxels:F3}|{s.voxelResolution}"; + $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minRodVoxels:F3}|{s.voxelResolution}|{s.trimToSource}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + @@ -225,7 +225,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken } if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); } - long sourceTriangles = 0, resultTriangles = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; + long sourceTriangles = 0, resultTriangles = 0, trimmedFaces = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; var shape = options.sourceShape; // Part filter first, whatever the shape: small pieces and rods whose section // the voxel grid cannot carry (bolts, pipes, cables, railings) only add voxel @@ -250,11 +250,22 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken // The proxy shapes replace the voxelizer: one oriented box per renderer, // or a coarse voxel hull; materials and lighting still bake from the // captured geometry, projected onto the proxy downstream. - node.voxel = await Task.Run(() => - shape == RemeshShape.LOD0 ? RemeshNative.Voxelize(captured.positions, captured.indices, options, token) - : shape == RemeshShape.BoundingBox ? captured.OrientedBoxes() - : Hull(captured, options, token), token); - if (node.voxel == null) throw new InvalidOperationException("The proxy shape produced no geometry."); + int trimmed = 0; + node.voxel = await Task.Run(() => { + if (shape == RemeshShape.BoundingBox) return captured.OrientedBoxes(); + if (shape == RemeshShape.Hull) return Hull(captured, options, token); + var voxel = RemeshNative.Voxelize(captured.positions, captured.indices, options, token); + if (!options.trimToSource || voxel == null) return voxel; + // The remesh surface sits within a cell of the source; two cells of reach + // keep a closed source whole and still find nothing behind an open sheet. + Vector3 mn = captured.positions[0], mx = captured.positions[0]; + foreach (var p in captured.positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } + var extent = mx - mn; + float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, options.voxelResolution); + return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed); + }, token); + if (node.voxel == null || node.voxel.TriangleCount == 0) throw new InvalidOperationException("The remesh produced no geometry."); + trimmedFaces += trimmed; sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; } @@ -268,7 +279,8 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + (shape == RemeshShape.BoundingBox ? $" ({resultTriangles / 12:N0} oriented boxes)" : shape == RemeshShape.Hull ? " (hull)" : "") + - (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small part(s), {droppedThin:N0} rod(s)" : "") + "." + + (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small part(s), {droppedThin:N0} rod(s)" : "") + + (trimmedFaces > 0 ? $"; trimmed {trimmedFaces:N0} face(s) the source has no surface for" : "") + "." + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index d57f4872..6e7aa127 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -70,6 +70,10 @@ public sealed class RemeshSettings public int voxelResolution = 128; public bool solve = true; public bool shell; + // After the voxel remesh, drop the faces the source has no surface for: the + // voxelizer closes an open sheet into a slab, and its back side and rims have no + // source face nearby with an aligned normal. Closed sources are left whole. + public bool trimToSource = true; // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already // contribute LOD0 only). public bool lod0Only = true; diff --git a/Editor/RemeshTrim.cs b/Editor/RemeshTrim.cs new file mode 100644 index 00000000..4ba9c0d8 --- /dev/null +++ b/Editor/RemeshTrim.cs @@ -0,0 +1,102 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Mask applied to the voxel remesh: the voxelizer closes every surface, so an open + /// source (a wall sheet, a roof plane, a curtain) comes back as a thin slab with a + /// front, a back and rims. A remesh face stays only when the source has a face near + /// it (within a couple of voxel cells) whose normal points the same way; the back + /// side of a one-sided sheet and the slab's rims have none and go. Closed sources + /// are left whole, and a source that is double-sided where it matters keeps both + /// sides. Unreferenced vertices are compacted away. + /// + internal static class RemeshTrim + { + /// Minimum alignment between a remesh face and the source face that keeps it. + internal const float MinDot = 0.25f; + + internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, + float maxDistance, CancellationToken token, out int removedFaces) + { + removedFaces = 0; + int faces = mesh.indices.Length / 3; + if (faces == 0 || sourceIndices.Length < 3) return mesh; + var bvh = new TriangleBvh(sourcePositions, sourceIndices); + var sourceNormals = FaceNormals(sourcePositions, sourceIndices); + var keep = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int kept); + // A source wound inside out would reject everything; judge it by its flipped + // normals instead, and give up (keep all) when neither reading keeps a tenth. + if (kept * 10 < faces) { + for (int i = 0; i < sourceNormals.Length; ++i) sourceNormals[i] = -sourceNormals[i]; + var flipped = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int keptFlipped); + if (keptFlipped > kept) { keep = flipped; kept = keptFlipped; } + if (kept * 10 < faces) return mesh; + } + removedFaces = faces - kept; + if (removedFaces == 0) return mesh; + return Compact(mesh, keep, kept); + } + + // A face stays when a source face lies within reach that is parallel to it (either + // winding — the voxelizer's orientation convention need not match the source's) + // AND the face sits on that source face's front side: the slab's back lies behind + // the sheet, its rims are perpendicular to it, and both fail. + static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, float maxDistance, CancellationToken token, out int kept) + { + int faces = mesh.indices.Length / 3; + var keep = new bool[faces]; + int count = 0; + float behindTolerance = maxDistance * 0.1f; + Parallel.For(0, faces, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, f => { + int a = mesh.indices[f * 3], b = mesh.indices[f * 3 + 1], c = mesh.indices[f * 3 + 2]; + Vector3 pa = mesh.positions[a], pb = mesh.positions[b], pc = mesh.positions[c]; + Vector3 normal = Vector3.Cross(pb - pa, pc - pa); + if (normal.sqrMagnitude < 1e-30f) return; // degenerate: drop + normal.Normalize(); + Vector3 centroid = (pa + pb + pc) / 3f; + var same = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance); + var opposite = bvh.FindNearestNormalFiltered(centroid, -normal, sourceNormals, MinDot, maxDistance); + var hit = same.triangleIndex < 0 ? opposite : opposite.triangleIndex < 0 ? same : (same.distSq <= opposite.distSq ? same : opposite); + if (hit.triangleIndex < 0) return; + Vector3 sourceNormal = sourceNormals[hit.triangleIndex]; + if (Vector3.Dot(centroid - hit.point, sourceNormal) < -behindTolerance) return; // behind the sheet + keep[f] = true; Interlocked.Increment(ref count); + }); + kept = count; + return keep; + } + + static RemeshNative.IndexedMesh Compact(RemeshNative.IndexedMesh mesh, bool[] keep, int kept) + { + var remap = new int[mesh.positions.Length]; + for (int i = 0; i < remap.Length; ++i) remap[i] = -1; + var indices = new int[kept * 3]; + int next = 0, write = 0; + for (int f = 0; f < keep.Length; ++f) { + if (!keep[f]) continue; + for (int k = 0; k < 3; ++k) { + int v = mesh.indices[f * 3 + k]; + if (remap[v] < 0) remap[v] = next++; + indices[write++] = remap[v]; + } + } + var positions = new Vector3[next]; + for (int i = 0; i < remap.Length; ++i) if (remap[i] >= 0) positions[remap[i]] = mesh.positions[i]; + return new RemeshNative.IndexedMesh { positions = positions, indices = indices }; + } + + static Vector3[] FaceNormals(Vector3[] positions, int[] indices) + { + var normals = new Vector3[indices.Length / 3]; + for (int f = 0; f < normals.Length; ++f) { + int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; + normals[f] = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).normalized; + } + return normals; + } + } +} diff --git a/Editor/RemeshTrim.cs.meta b/Editor/RemeshTrim.cs.meta new file mode 100644 index 00000000..d9da5c9a --- /dev/null +++ b/Editor/RemeshTrim.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d107bbfc2a3845bf9424c3bbf6937081 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index bbee3d73..3493ba84 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -200,6 +200,10 @@ public void OnDrawSidebar() settings.voxelResolution = EditorGUILayout.IntSlider("Voxel resolution", settings.voxelResolution, 4, 256); settings.solve = EditorGUILayout.Toggle("Fit source surface", settings.solve); settings.shell = EditorGUILayout.Toggle("Two-sided shell", settings.shell); + settings.trimToSource = EditorGUILayout.Toggle(new GUIContent("Trim to source surface", + "After the voxel remesh, drop the faces the source has no surface for. The voxelizer closes an open sheet (a wall, a roof " + + "plane, a curtain) into a thin slab; its back side and rims have no source face nearby with an aligned normal and go. " + + "Closed sources are left whole. Turn off to keep the slab, e.g. with Two-sided shell."), settings.trimToSource); } StageButton(RemeshPipeline.Stage.Remesh, "Remesh"); } diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 45dd36d1..a5493ebd 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -311,6 +311,37 @@ public void WindingProbeJudgesFromOutsideAndStaysOffOnOpenSheets() Assert.AreEqual(0, RemeshBaker.ProbeWinding(new TriangleBvh(sheet, sheetTri), sheet, sheetN)); } [Test] + public void TrimKeepsTheSideTheSourceHasAndDropsTheSlabsBackAndRims() + { + // Source: one quad whose front faces -z (Unity's Quad winding). Remesh: a thin + // slab around it (a box 1×1×0.05), as the voxelizer returns for an open sheet. + var sourcePositions = new[] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(1, 1, 0), new Vector3(0, 1, 0) }; + var sourceIndices = new[] { 0, 2, 1, 0, 3, 2 }; + Cube(out var p, out var tri, false); + for (int i = 0; i < p.Length; ++i) p[i] = new Vector3(p[i].x, p[i].y, p[i].z * 0.05f - 0.025f); + var slab = new RemeshNative.IndexedMesh { positions = p, indices = tri }; + var trimmed = RemeshTrim.Trim(slab, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out int removed); + // The two faces on the source's front side (-z) survive; the back and the four rims (10 faces) go. + Assert.AreEqual(10, removed); + Assert.AreEqual(2, trimmed.TriangleCount); + Assert.AreEqual(4, trimmed.positions.Length); + foreach (var v in trimmed.positions) Assert.That(v.z, Is.EqualTo(-0.025f).Within(1e-5f)); + // The same slab with its winding inverted keeps the same side: the remesh's own + // orientation convention does not decide, the source's does. + Cube(out var pi, out var triInverted, true); + for (int i = 0; i < pi.Length; ++i) pi[i] = new Vector3(pi[i].x, pi[i].y, pi[i].z * 0.05f - 0.025f); + var inverted = RemeshTrim.Trim(new RemeshNative.IndexedMesh { positions = pi, indices = triInverted }, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed); + Assert.AreEqual(10, removed); + foreach (var v in inverted.positions) Assert.That(v.z, Is.EqualTo(-0.025f).Within(1e-5f)); + // A source facing +z keeps the +z side instead. + var flippedSource = RemeshTrim.Trim(slab, sourcePositions, new[] { 0, 1, 2, 0, 2, 3 }, 0.1f, CancellationToken.None, out removed); + Assert.AreEqual(10, removed); + foreach (var v in flippedSource.positions) Assert.That(v.z, Is.EqualTo(0.025f).Within(1e-5f)); + // A closed source keeps the whole remesh: the slab against a copy of itself. + var whole = RemeshTrim.Trim(slab, p, tri, 0.1f, CancellationToken.None, out removed); + Assert.AreEqual(0, removed); Assert.AreEqual(12, whole.TriangleCount); + } + [Test] public void PrincipalExtentsFollowThePointSetsOwnAxes() { var pts = new System.Collections.Generic.List(); From fefd6c7b31b8f8a98789a93ae95bc0368925cfb0 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 20:59:57 +0000 Subject: [PATCH 079/130] feat(hub): canvas switch present in every state, scene-like 3D view, shading row in the canvas The UV | 3D switch vanished whenever the UV canvas had nothing to draw: the canvas returned before reserving its rect, so the switch had no place and the way back to 3D was gone. The hub now owns the canvas area (an expanding group whose rect is captured on repaint) and paints the switch from it in both modes. The switch is a segmented pill with the active side in the accent colour and a Tab shortcut while the mouse is over the canvas; switching clears the hover state and keeps the selection. The 3D view reads like a scene view: blue-grey background, a fading ground grid under the content with a round step (Grid toggle in the toolbar), the pivot's axes, and the shading modes as a segmented row along the top of the canvas instead of toolbar buttons (Lit, Grid, Frame stay in the toolbar). Coloured line lists render through the translucent overlay shader, which now carries vertex colour, so grid lines fade. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Framework/MeshViewport3D.cs | 71 ++++++++++++-- Editor/Framework/UvToolHub.cs | 145 ++++++++++++++++++++++------- Shaders/UvOverlay.shader | 9 +- 4 files changed, 183 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a0f7d31..b50a2d38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch (bottom centre, remembered across sessions). The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. +- **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch: a segmented pill at the bottom centre with the active side in the accent colour, present in every canvas state (also when the UV canvas has nothing to draw), remembered across sessions, and flipped with **Tab** while the mouse is over the canvas. The 3D side looks like a scene view: a blue-grey background, a fading ground grid under the content (Grid toggle), the pivot's axes, and the shading modes as a segmented row along the top of the canvas. The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. diff --git a/Editor/Framework/MeshViewport3D.cs b/Editor/Framework/MeshViewport3D.cs index c0933144..0a5ea222 100644 --- a/Editor/Framework/MeshViewport3D.cs +++ b/Editor/Framework/MeshViewport3D.cs @@ -33,7 +33,8 @@ public struct Item public Shading Mode = Shading.Shaded; public bool Wireframe; public bool Lit = true; - public Color Background = new Color(0.16f, 0.16f, 0.16f, 1f); + public bool ShowGrid = true, ShowAxes = true; + public Color Background = new Color(0.16f, 0.19f, 0.24f, 1f); public Action RequestRepaint; // ── camera ── @@ -44,7 +45,8 @@ public struct Item bool framedOnce; PreviewRenderUtility utility; - Material surface, flat, wire, points; + Material surface, flat, wire, points, translucent; + Bounds contentBounds; bool hasContent; Rect currentRect; bool drawing; readonly Dictionary encodedCache = new Dictionary(); @@ -64,6 +66,7 @@ public void Draw(Rect rect, IReadOnlyList items, Action ov { currentRect = rect; var bounds = BoundsOf(items, out int key, out bool any); + contentBounds = bounds; hasContent = any; if (any && (!framedOnce || key != framedKey)) { Frame(bounds); framedKey = key; framedOnce = true; } HandleInput(rect, any ? bounds : (Bounds?)null); if (Event.current.type != EventType.Repaint) return; @@ -92,6 +95,10 @@ public void Draw(Rect rect, IReadOnlyList items, Action ov if (Wireframe) DrawWire(item.mesh, item.matrix, Mode == Shading.Shaded ? new Color(0.05f, 0.05f, 0.05f, 1f) : new Color(0.4f, 0.85f, 1f, 1f)); } overlay?.Invoke(this); + if (hasContent) { + if (ShowGrid) DrawGrid(bounds); + if (ShowAxes) DrawAxes(bounds); + } // Scene materials of a URP project render through URP, not the built-in fallback. utility.Render(true); } @@ -210,7 +217,56 @@ public void DrawLines(IList pairs, IList colors, Matrix4x4 matri for (int i = 0; i < count; ++i) { vertices[i] = pairs[i]; vertexColors[i] = colors != null && i / 2 < colors.Count ? colors[i / 2] : Color.white; indices[i] = i; } mesh.vertices = vertices; mesh.colors = vertexColors; mesh.SetIndices(indices, MeshTopology.Lines, 0); frameMeshes.Add(mesh); - utility.DrawMesh(mesh, matrix, points, 0); + utility.DrawMesh(mesh, matrix, translucent, 0); + } + + // A ground grid under the content: cells at a round step near a tenth of the + // content's size, fading toward the rim, every fifth line brighter. + void DrawGrid(Bounds bounds) + { + float step = NiceStep(Mathf.Max(bounds.size.x, bounds.size.z) / 8f); + if (step <= 0f) return; + int half = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(bounds.extents.x, bounds.extents.z) * 2.5f / step), 4, 60); + float y = bounds.min.y - radius * 0.002f; + float cx = Mathf.Round(bounds.center.x / step) * step, cz = Mathf.Round(bounds.center.z / step) * step; + float reach = half * step; + var pairs = new List(half * 8 + 4); var colors = new List(half * 4 + 2); + var tone = new Color(0.62f, 0.70f, 0.82f); + for (int i = -half; i <= half; ++i) { + float o = i * step; + float fade = 1f - Mathf.Abs(o) / reach; + float a = (i % 5 == 0 ? 0.40f : 0.18f) * fade; + var c = new Color(tone.r, tone.g, tone.b, a); + pairs.Add(new Vector3(cx + o, y, cz - reach)); pairs.Add(new Vector3(cx + o, y, cz + reach)); colors.Add(c); + pairs.Add(new Vector3(cx - reach, y, cz + o)); pairs.Add(new Vector3(cx + reach, y, cz + o)); colors.Add(c); + } + DrawLines(pairs, colors, Matrix4x4.identity); + } + + // The pivot's axes: X red, Y green, Z blue, a quarter of the content radius long. + void DrawAxes(Bounds bounds) + { + float length = radius * 0.25f; + if (length <= 0f) return; + Vector3 o = bounds.center; + float head = length * 0.12f; + Vector3[] dirs = { Vector3.right, Vector3.up, Vector3.forward }; + Color[] cols = { new Color(0.95f, 0.3f, 0.3f), new Color(0.45f, 0.9f, 0.3f), new Color(0.3f, 0.55f, 1f) }; + for (int i = 0; i < 3; ++i) { + Vector3 d = dirs[i], tip = o + d * length; + Vector3 side = i == 1 ? Vector3.right : Vector3.up; + var pairs = new List { o, tip, tip, tip - d * head + side * head * 0.5f, tip, tip - d * head - side * head * 0.5f }; + DrawLines(pairs, Matrix4x4.identity, cols[i]); + } + } + + static float NiceStep(float raw) + { + if (raw <= 0f || float.IsNaN(raw) || float.IsInfinity(raw)) return 0f; + float power = Mathf.Pow(10f, Mathf.Floor(Mathf.Log10(raw))); + float m = raw / power; + float nice = m < 1.5f ? 1f : m < 3.5f ? 2f : m < 7.5f ? 5f : 10f; + return nice * power; } /// Draws camera-facing dots of a screen-constant size (pixels). @@ -322,9 +378,11 @@ static Bounds BoundsOf(IReadOnlyList items, out int key, out bool any) bool EnsureResources() { if (utility == null) utility = new PreviewRenderUtility { cameraFieldOfView = 30f }; - if (surface && flat && wire && points) return true; + if (surface && flat && wire && points && translucent) return true; var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); - if (!shader) return false; + var overlayShader = Shader.Find("Hidden/MeshLab/UvOverlay"); + if (!shader || !overlayShader) return false; + translucent = new Material(overlayShader) { hideFlags = HideFlags.HideAndDontSave }; surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; flat = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; flat.SetFloat("_DepthOffset", -1); @@ -438,7 +496,8 @@ public void Dispose() if (flat) Object.DestroyImmediate(flat); if (wire) Object.DestroyImmediate(wire); if (points) Object.DestroyImmediate(points); - surface = flat = wire = points = null; + if (translucent) Object.DestroyImmediate(translucent); + surface = flat = wire = points = translucent = null; } } } diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index a11d6a33..c7512b2d 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -41,6 +41,7 @@ public T FindTool() where T : class, IUvTool const string Canvas3DPref = "MeshLab.Canvas3D"; readonly List viewportItems = new List(); readonly List viewportEntries = new List(); // parallel to viewportItems; null for tool content + Rect canvasArea; // the canvas column's content rect, from the last repaint // ── Layout ── float sideW = 300f; @@ -404,18 +405,24 @@ void OnGUI() if (canvas3D) { DrawViewport(); - DrawStatusBar(); } else { - // The switch takes its click before the canvas can (spot mode eats - // mouse-downs), and paints after it so the blit does not cover it. - HandleCanvasModeSwitchInput(canvas.LastCanvasRect); + // The canvas area always fills the column (the canvas itself draws only a + // help box when it has nothing to show), so the switch has a place in every + // state. Its click is taken before the canvas (spot mode eats mouse-downs) + // and it paints after the canvas blit. + HandleCanvasModeSwitchInput(canvasArea); + HandleCanvasModeKey(canvasArea); + EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); canvas.OnGUI(ctx, ActiveTool != null ? (Action)ActiveTool.OnDrawCanvasOverlay : null); - DrawCanvasModeSwitch(canvas.LastCanvasRect); - DrawStatusBar(); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndVertical(); + if (Event.current.type == EventType.Repaint) canvasArea = GUILayoutUtility.GetLastRect(); + DrawCanvasModeSwitch(canvasArea); } + DrawStatusBar(); EditorGUILayout.EndVertical(); if (showGroupPanel) @@ -858,18 +865,62 @@ void DrawToolbarTail() // 3D canvas (shared viewport) // ════════════════════════════════════════════════════════════ + // ── In-canvas controls: a segmented pill (dark track, accent on the active + // segment). Input is taken BEFORE the canvas or viewport consumes the event, + // the visual is painted AFTER their blit, so both halves read the same rect. ── + + static readonly Color SegmentTrack = new Color(0.10f, 0.11f, 0.13f, 0.92f); + static readonly Color SegmentAccent = new Color(0.96f, 0.52f, 0.14f, 1f); + static readonly Color SegmentText = new Color(0.82f, 0.84f, 0.88f, 1f); + static readonly Color SegmentTextActive = new Color(0.12f, 0.10f, 0.08f, 1f); + + static int SegmentHit(Rect rect, int count, Vector2 mouse) + { + if (count <= 0 || !rect.Contains(mouse)) return -1; + return Mathf.Clamp((int)((mouse.x - rect.x) / rect.width * count), 0, count - 1); + } + + static void DrawSegmented(Rect rect, string[] labels, int active, bool mini = false) + { + if (Event.current.type != EventType.Repaint) return; + EditorGUI.DrawRect(rect, SegmentTrack); + float w = rect.width / labels.Length; + var style = new GUIStyle(mini ? EditorStyles.miniLabel : EditorStyles.label) { alignment = TextAnchor.MiddleCenter, fontStyle = FontStyle.Bold }; + for (int i = 0; i < labels.Length; i++) + { + var cell = new Rect(rect.x + i * w, rect.y, w, rect.height); + if (i == active) EditorGUI.DrawRect(new Rect(cell.x + 2, cell.y + 2, cell.width - 4, cell.height - 4), SegmentAccent); + style.normal.textColor = i == active ? SegmentTextActive : SegmentText; + GUI.Label(cell, labels[i], style); + } + var outline = new Color(0f, 0f, 0f, 0.5f); + EditorGUI.DrawRect(new Rect(rect.x, rect.y, rect.width, 1), outline); + EditorGUI.DrawRect(new Rect(rect.x, rect.yMax - 1, rect.width, 1), outline); + } + /// The UV | 3D switch, floating at the bottom centre of the canvas. - static Rect CanvasModeSwitchRect(Rect canvasRect) => new Rect(canvasRect.center.x - 70f, canvasRect.yMax - 26f, 140f, 20f); - static bool CanvasModeSwitchFits(Rect canvasRect) => canvasRect.width >= 120f && canvasRect.height >= 40f; + static Rect CanvasModeSwitchRect(Rect canvasRect) => new Rect(canvasRect.center.x - 90f, canvasRect.yMax - 32f, 180f, 24f); + static bool CanvasModeSwitchFits(Rect canvasRect) => canvasRect.width >= 200f && canvasRect.height >= 60f; + static readonly string[] CanvasModeLabels = { "UV", "3D" }; void HandleCanvasModeSwitchInput(Rect canvasRect) { if (!CanvasModeSwitchFits(canvasRect)) return; var e = Event.current; if (e.type != EventType.MouseDown || e.button != 0) return; - var rect = CanvasModeSwitchRect(canvasRect); - if (!rect.Contains(e.mousePosition)) return; - SetCanvas3D(e.mousePosition.x >= rect.center.x); + int hit = SegmentHit(CanvasModeSwitchRect(canvasRect), 2, e.mousePosition); + if (hit < 0) return; + SetCanvas3D(hit == 1); + e.Use(); + } + + // Tab over the canvas flips the view, unless a text field has the keyboard. + void HandleCanvasModeKey(Rect canvasRect) + { + var e = Event.current; + if (e.type != EventType.KeyDown || e.keyCode != KeyCode.Tab || GUIUtility.keyboardControl != 0) return; + if (!canvasRect.Contains(e.mousePosition)) return; + SetCanvas3D(!canvas3D); e.Use(); } @@ -877,8 +928,42 @@ void DrawCanvasModeSwitch(Rect canvasRect) { if (!CanvasModeSwitchFits(canvasRect)) return; var rect = CanvasModeSwitchRect(canvasRect); - int mode = GUI.Toolbar(rect, canvas3D ? 1 : 0, new[] { "UV", "3D" }, EditorStyles.miniButton); - if ((mode == 1) != canvas3D) SetCanvas3D(mode == 1); + DrawSegmented(rect, CanvasModeLabels, canvas3D ? 1 : 0); + if (Event.current.type == EventType.Repaint) + GUI.Label(new Rect(rect.xMax + 6, rect.y + 4, 60, 16), "Tab", new GUIStyle(EditorStyles.miniLabel) { normal = { textColor = new Color(0.6f, 0.62f, 0.66f) } }); + } + + // ── The 3D shading row along the top of the viewport (UV channels only where a mesh carries them). ── + static Rect ShadingRowRect(Rect viewportRect) => new Rect(viewportRect.x + 8, viewportRect.y + 8, viewportRect.width - 16, 24); + readonly List shadingRow = new List(); + readonly List shadingRowLabels = new List(); + + void BuildShadingRow() + { + shadingRow.Clear(); shadingRowLabels.Clear(); + for (int i = 0; i < MeshViewport3D.ShadingNames.Length; i++) + { + var mode = (MeshViewport3D.Shading)i; + if (mode >= MeshViewport3D.Shading.UV0 && !AnyMeshHasUv(mode - MeshViewport3D.Shading.UV0)) continue; + shadingRow.Add(mode); shadingRowLabels.Add(MeshViewport3D.ShadingNames[i]); + } + if (!shadingRow.Contains(viewport.Mode)) viewport.Mode = MeshViewport3D.Shading.Shaded; + } + + void HandleShadingRowInput(Rect viewportRect) + { + var e = Event.current; + if (e.type != EventType.MouseDown || e.button != 0 || viewportRect.width < 320f) return; + int hit = SegmentHit(ShadingRowRect(viewportRect), shadingRow.Count, e.mousePosition); + if (hit < 0) return; + viewport.Mode = shadingRow[hit]; + e.Use(); Repaint(); + } + + void DrawShadingRow(Rect viewportRect) + { + if (viewportRect.width < 320f || shadingRow.Count == 0) return; + DrawSegmented(ShadingRowRect(viewportRect), shadingRowLabels.ToArray(), shadingRow.IndexOf(viewport.Mode), mini: true); } void SetCanvas3D(bool on) @@ -886,8 +971,10 @@ void SetCanvas3D(bool on) if (canvas3D == on) return; canvas3D = on; EditorPrefs.SetBool(Canvas3DPref, on); + // Hover belongs to the view it was picked in; selection carries over. + canvas.HasHoveredShell = false; canvas.HoveredShellDebug = null; canvas.HoverHitValid = false; if (on) viewport?.FrameContent(); - Repaint(); + Repaint(); SceneView.RepaintAll(); } /// Content for the 3D canvas: the active tool's, or the context's preview @@ -970,14 +1057,17 @@ void DrawViewport() { var rect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); var items = CollectViewportItems(); + BuildShadingRow(); + HandleCanvasModeSwitchInput(rect); + HandleCanvasModeKey(rect); if (items.Count == 0) { - EditorGUI.DrawRect(rect, new Color(.08f, .08f, .08f)); + EditorGUI.DrawRect(rect, viewport.Background); GUI.Label(rect, "No meshes for this LOD.", new GUIStyle(EditorStyles.centeredGreyMiniLabel) { alignment = TextAnchor.MiddleCenter }); } else { - HandleCanvasModeSwitchInput(rect); + HandleShadingRowInput(rect); HandleViewportSpot(rect); var tool3D = ActiveTool as IUvTool3D; viewport.Draw(rect, items, view => @@ -985,9 +1075,12 @@ void DrawViewport() uvLayer.Draw(view, canvas, ctx, viewportItems, viewportEntries); tool3D?.OnDraw3D(view); }); - if (canvas.SpotMode) canvas.DrawShellInfoPanel(rect); + DrawShadingRow(rect); + // The spot info panel sits under the shading row. + if (canvas.SpotMode) canvas.DrawShellInfoPanel(new Rect(rect.x, rect.y + 36, rect.width, rect.height - 36)); } DrawCanvasModeSwitch(rect); + if (Event.current.type == EventType.Repaint) canvasArea = rect; } void DrawViewportToolbar() @@ -1000,23 +1093,9 @@ void DrawViewportToolbar() DrawUvChannelToggle(); DrawSpotControls(); - // ── Surface shading (in place of the UV zoom) ── - var bg = GUI.backgroundColor; - for (int i = 0; i < MeshViewport3D.ShadingNames.Length; i++) - { - var mode = (MeshViewport3D.Shading)i; - if (mode >= MeshViewport3D.Shading.UV0 && !AnyMeshHasUv(mode - MeshViewport3D.Shading.UV0)) continue; - bool active = viewport.Mode == mode; - GUI.backgroundColor = active ? new Color(.4f, .55f, 1f) : bg; - if (GUILayout.Button(MeshViewport3D.ShadingNames[i], EditorStyles.toolbarButton) && !active) - { - viewport.Mode = mode; - Repaint(); - } - } - GUI.backgroundColor = bg; - GUILayout.Space(4); + // ── View options (the shading row lives inside the canvas) ── viewport.Lit = GUILayout.Toggle(viewport.Lit, "Lit", EditorStyles.toolbarButton, GUILayout.Width(30)); + viewport.ShowGrid = GUILayout.Toggle(viewport.ShowGrid, "Grid", EditorStyles.toolbarButton, GUILayout.Width(36)); if (GUILayout.Button("Frame", EditorStyles.toolbarButton, GUILayout.Width(44))) viewport.FrameContent(); diff --git a/Shaders/UvOverlay.shader b/Shaders/UvOverlay.shader index c8300a07..96f2b376 100644 --- a/Shaders/UvOverlay.shader +++ b/Shaders/UvOverlay.shader @@ -26,20 +26,21 @@ Shader "Hidden/MeshLab/UvOverlay" sampler2D _MainTex; float4 _Color; float _UVChannel; - struct appdata { float4 vertex : POSITION; float2 uv0 : TEXCOORD0; float2 uv1 : TEXCOORD1; float2 uv2 : TEXCOORD2; float2 uv3 : TEXCOORD3; }; - struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; + struct appdata { float4 vertex : POSITION; float2 uv0 : TEXCOORD0; float2 uv1 : TEXCOORD1; float2 uv2 : TEXCOORD2; float2 uv3 : TEXCOORD3; float4 color : COLOR; }; + struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float4 color : COLOR; }; v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); int ch = (int)_UVChannel; o.uv = ch == 1 ? v.uv1 : ch == 2 ? v.uv2 : ch == 3 ? v.uv3 : v.uv0; + o.color = v.color; return o; } fixed4 frag(v2f i) : SV_Target { - fixed4 t = tex2D(_MainTex, i.uv); - return fixed4(t.rgb * _Color.rgb, t.a * _Color.a); + fixed4 t = tex2D(_MainTex, i.uv) * _Color * i.color; + return t; } ENDCG } From cc34ae625e81d3ad64868d8b79e83102f34c818f Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 21:25:53 +0000 Subject: [PATCH 080/130] feat(remesh): sided, fitted projection cage The cage was one direction per welded position: area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet (a wall of a non-closed source turned into a one-cell slab by the voxel remesh and collapsed to zero thickness by the simplifier, both windings on the same vertices) the two sides summed to nothing and the normalized noise sent rays off at up to 180 degrees from their face; the cage preview spiked across the whole model and most texels baked from the wrong side. The cage is now built per face corner and per side: corners at one position are clustered by the hemisphere their face normals share (within 120 degrees), each cluster is averaged (face area x corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back. Every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. "Cage smoothing" (0-10, default 2) exposes the passes. "Fit cage to source" (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1x and 8x the projection distance and smooths it over the sides; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach with one line per welded side pair and rebuilds live from distance, smoothing, fit and source. RemeshDiag reports side and double-sided counts and the longest reach; the bake staleness key covers the new settings. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 63 ++++--- Editor/RemeshBaker.cs | 276 ++++++++++++++++++++++++------ Editor/RemeshPipeline.cs | 8 +- Editor/RemeshPreview.cs | 77 ++++++--- Editor/RemeshSettings.cs | 7 + Editor/Tools/RemeshBakeTool.cs | 16 +- Tests/Editor/RemeshBakeTests.cs | 63 +++++++ 8 files changed, 405 insertions(+), 106 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b50a2d38..2663d70d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **Remesh & Bake: a sided, fitted projection cage.** The cage was one direction per welded position: the area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet — a wall of a non-closed source that the voxel remesh turned into a one-cell slab and the simplifier collapsed to zero thickness, both windings on the same vertices — the two sides summed to nothing and the normalized noise sent rays off at up to 180° from their face, with the cage preview spiking across the whole model and most texels baking from the wrong side. The cage is now built per face corner and per **side**: corners at one position are clustered by the hemisphere their face normals share (within 120°), each cluster is averaged (face area × corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back; every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. **Cage smoothing** (bake stage, 0–10, default 2) exposes the passes. **Fit cage to source** (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1× and 8× the projection distance and smooths it over the sides, so the rays reach as far as the decimation drifted and no further; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach, one line per welded side pair (a double-sided sheet shows both shells), rebuilt live from distance, smoothing, fit and source. RemeshDiag reports the side and double-sided position counts and the longest reach; the bake staleness key covers the new settings. - **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch: a segmented pill at the bottom centre with the active side in the accent colour, present in every canvas state (also when the UV canvas has nothing to draw), remembered across sessions, and flipped with **Tab** while the mouse is over the canvas. The 3D side looks like a scene view: a blue-grey background, a fading ground grid under the content (Grid toggle), the pivot's axes, and the shading modes as a segmented row along the top of the canvas. The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. - **Remesh & Bake: Keep hierarchy.** A *Keep hierarchy* toggle (remesh stage, default off) remeshes every captured node SEPARATELY instead of welding the subtree into one mesh: each renderer that the weld would have folded in (active, non-collision, LOD0 — the same filters, with its own descendants merged into its node) runs the full voxel → simplify → unwrap → bake chain in its own local space, and the save produces a hierarchy — one root prefab named after the source, one child per node at its captured root-relative transform, each with its own baked material and mesh asset (`_LOD0.asset` + `.mat` + the five map files). The FBX lane stays a single-mesh feature (a multi-node FBX round-trip re-imports per-node normals/mappings for no gain over the native prefab), so the FBX option applies to the weld only; the source root's scale stays on the prefab root, and *Normalized size* (a single-vertex-space concept) logs that it is weld-only. Changing the toggle invalidates the remesh stage through the staleness key like any other capture-scope setting. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index bf61d6f2..2fc4ca6f 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -128,28 +128,49 @@ settings, marked "settings changed" in its header) and clears everything after i source vertex colors, interpolated at the nearest source surface point, onto the result mesh independently. Missed covered texels are magenta, not silently patched with unrelated material data. Projection rays are cast along a smooth - welded "cage" direction (area-weighted face normals averaged across coincident - vertices), not the vertex normal: UV-island hard edges leave chart-border - normals one-sided, and rays along them would sample a displaced source point, - baking artifact bands around every island. The tangent-space normal map is - still encoded against the vertex normal the result mesh shades with, so hard - island borders keep their crisp silhouette while the interior stays clean. - Rays only accept source triangles facing them (front-face filter): a plain - closest-hit ray travels twice the projection distance through the target and - pierces thin walls, sampling the far side's texture as periodic mirrored + welded "cage" direction, not the vertex normal: UV-island hard edges leave + chart-border normals one-sided, and rays along them would sample a displaced + source point, baking artifact bands around every island. The tangent-space + normal map is still encoded against the vertex normal the result mesh shades + with, so hard island borders keep their crisp silhouette while the interior + stays clean. The cage is built **per face corner and per side**: the corners + meeting at one position are clustered by the hemisphere their face normals + share (within 120°), and only one cluster's corners are averaged (face area × + corner angle) and Laplacian-smoothed together over the cluster connectivity + (**Cage smoothing**, 0–10 passes, 2 by default). UV-chart and crease splits + weld back into one smooth direction as a plain cage does, but a double-sided + sheet — the wall of a non-closed source, thinner than a voxel cell and + collapsed to zero thickness by the simplifier, both windings on the same + vertices — keeps a front side and a back side, where a position weld would + sum two opposite normals to nothing and normalize the noise (rays leaving at + 180° from their face, preview shells spiking across the whole model). Every + corner direction is checked against its own face and falls back to the + unsmoothed side, then to the face normal, so no ray starts behind the surface + it belongs to. **Fit cage to source** (default on) replaces the one global + ray travel with a per-side reach: each side casts along its direction both + ways (then asks for the nearest point) to measure where the source actually + is, doubles that for oblique surfaces, clamps it between 1× and 8× the + projection distance and smooths it over the side connectivity, never below a + side's own need — a cage that hugs the source where the decimation stayed + close and opens where it drifted, so fewer texels miss without deep rays + everywhere. Rays only accept source triangles facing them (front-face + filter): a plain closest-hit ray travels twice the reach through the target + and pierces thin walls, sampling the far side's texture as periodic mirrored patches; the filter's orientation comes from a probe that looks at the source from OUTSIDE — rays cast from a sphere around it toward its centre meet an outer surface first, and that triangle's winding against the ray gives the answer whatever the target's density — and it stays off when - fewer than 70% of the rays agree (open sheets, mixed winding). The 3D view's **Cage** toggle (the right sidebar's 3D panel drives the canvas's shared 3D view — switch the canvas to **3D** at its bottom centre) - draws the projection limits — the result mesh inflated by ±the ray travel - along the same welded cage normals, orange for the outer (ray origin) shell, - blue for the inner (ray end) shell — live from the current projection - distance, so the setting can be tuned before re-baking. The cage is a proper - smooth cage: its directions are area-weighted, welded across UV/crease splits - and Laplacian-smoothed over the welded connectivity, and each shell's offset - stops short of self-intersection (cast against the surface itself), so a - tight concavity shows a pinch instead of folding through to the far side. + fewer than 70% of the rays agree (open sheets, mixed winding). The 3D view's + **Cage** toggle (the right sidebar's 3D panel drives the canvas's shared 3D + view — switch the canvas to **3D** at its bottom centre) draws the projection + limits — every corner pushed ±its reach along its cage direction, one line + per welded side pair, orange for the outer (ray origin) shell, blue for the + inner (ray end) shell — live from the current distance, smoothing and fit + (the fit builds a BVH of the source once per capture), so the settings can be + tuned before re-baking; a double-sided sheet shows both of its shells. Each + shell's offset stops short of self-intersection (cast against the surface + itself), so a tight concavity shows a pinch instead of folding through to the + far side. For the *Bounding box* and *Hull* shapes the cage is replaced by **proxy projection**: every texel casts straight along its face normal from just outside the proxy, as deep as **Proxy search depth** allows (a fraction of @@ -215,8 +236,10 @@ settings, marked "settings changed" in its header) and clears everything after i grazing term, Schlick Fresnel) — and all lighting, lightmap response and specular alike, reacts to the source's normal map, as it does in play. With the **RemeshDiag** log filter enabled, every bake also prints its health - counters to the Console: welded cage positions and split copies, one-sided - border normals (max cage deviation), nearest-fallback projection samples, + counters to the Console: welded cage positions and split copies, cage sides + and double-sided positions, vertices whose normal sits >30° off their cage + (max deviation), the longest fitted reach as a multiple of the projection + distance, nearest-fallback projection samples, front-face filter state and the normal map's tilt statistics (mean/max angle from flat, texels >45°); a map dominated by extreme tilts additionally raises a warning. diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 6709d4e3..828db3d8 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -19,7 +19,11 @@ internal sealed class Maps public int empty; // Bake health counters surfaced through the RemeshDiag log category. public int rayFallbacks, weldedPositions, splitCopies, oneSidedNormals, loudTexels, zeroNormals; - public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg; + // Cage: welded (position, side) clusters and the positions carrying more than + // one side (double-sided sheets, collapsed slabs); the longest fitted reach as + // a multiple of the projection distance. + public int cageSides, foldedPositions; + public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg, maxReachRatio; public bool facingFilter; public bool beauty; } @@ -57,12 +61,15 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto faceDirs = FaceNormals(target.positions, target.indices); depth = Mathf.Max(source.diagonal * settings.proxyDepth, source.diagonal * 1e-4f); } - // Projection rays follow a smooth welded "cage" direction, not the vertex + // Projection rays follow the smooth welded "cage" direction, not the vertex // normal: island hard-edge modes leave chart-border normals one-sided, // and casting along them samples a displaced source point, which bakes // artifact bands around every island. The tangent frame stays the vertex // normal the result mesh shades with, so encode and decode still match. - var cage = BuildCageNormals(target, result); + // The cage is per corner and per side (see Cage), so a double-sided sheet + // projects each face from its own side, and its reach is fitted to where + // the source actually is when the settings ask for it. + var cage = BuildCage(target, distance, settings.cageSmoothing, settings.cageFit && !proxy ? bvh : null, result); // Front-face filter for the projection rays: a plain closest-hit raycast // travels 2×distance THROUGH the target and can pierce a thin wall, sampling // the far side's texture (periodic mirrored/garbled patches). The filter only @@ -105,7 +112,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, cage, bvh, facing, beauty, face, w, distance, + if (!Project(source, target, tangents, cage, bvh, facing, beauty, face, w, proxy, faceDirs, depth, settings.vertexColorTint, out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; if (rayFallback) Interlocked.Increment(ref rayFallbacks); @@ -206,14 +213,15 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // Trace from the destination surface point back to the source and evaluate its // material there. False when neither the ray nor the bounded nearest query hits. - // The ray direction comes from the welded cage normal; the tangent frame keeps - // the (possibly hard) vertex normal so encode matches how the mesh shades. + // The ray direction and reach come from the cage at the texel's corners; the + // tangent frame keeps the (possibly hard) vertex normal so encode matches how + // the mesh shades. // facing (when non-null) carries the orientation-consensus source face normals // that keep the ray and the fallback on the side of the surface facing the texel. // proxy: the ray starts just outside the proxy face and travels inward along the // face normal through the whole proxy (depth), first hit wins, no fallback. - static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Vector3[] cage, - TriangleBvh bvh, Vector3[] facing, RemeshBeauty beauty, int face, Vector3 w, float distance, + static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Cage cage, + TriangleBvh bvh, Vector3[] facing, RemeshBeauty beauty, int face, Vector3 w, bool proxy, Vector3[] faceDirs, float depth, bool vertexTint, out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { @@ -239,17 +247,18 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] } } else { - Vector3 rayN = (cage[a] * w.x + cage[b] * w.y + cage[c] * w.z).normalized; + Vector3 rayN = cage.Direction(face, w); + float reach = cage.Reach(face, w); var hit = facing != null - ? bvh.RaycastFacingFiltered(p + rayN * distance, -rayN, distance * 2, facing) - : bvh.Raycast(p + rayN * distance, -rayN, distance * 2); + ? bvh.RaycastFacingFiltered(p + rayN * reach, -rayN, reach * 2, facing) + : bvh.Raycast(p + rayN * reach, -rayN, reach * 2); sourceFace = hit.triangleIndex; sw = hit.barycentric; if (sourceFace < 0) { - // Both fallbacks stay bounded by the projection distance: an unbounded + // Both fallbacks stay bounded by the cage reach: an unbounded // filtered query would smear an unrelated far part across a gap. var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, distance) - : bvh.FindNearest(p, distance); + ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, reach) + : bvh.FindNearest(p, reach); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; rayFallback = true; } @@ -303,60 +312,215 @@ static Color BeautyLight(RemeshBeauty beauty, RemeshSource source, int face, Vec return lit; } - // Per-vertex raycast directions from area-weighted face normals welded across - // coincident vertices: UV chart borders (and crease edges) split vertices, and - // each copy's own normal is one-sided there, so rays cast along it land on a - // displaced source point. Welding by exact position — xatlas copies bit-identical - // coordinates — averages both sides back into a smooth cage direction, and a - // Laplacian pass over the WELDED connectivity smooths the sliver noise the - // adaptive decimation leaves in those directions (the "fully smooth cage" every - // baker prescribes). The pass runs on the welded mesh precisely so it flows - // through chart borders and hard edges instead of re-splitting them. - internal static Vector3[] BuildCageNormals(RemeshNative.Geometry target, Maps diag) + /// + /// The projection cage: a ray direction and a ray reach for every face CORNER of + /// the result mesh. Rays leave the surface point along the interpolated corner + /// directions, start reach away on the outside and travel 2 × reach. + /// + /// Directions are built per side, not per position: the corners meeting + /// at one position are clustered by the hemisphere their face normals share, + /// and only corners of one cluster are averaged (area × corner angle) and + /// smoothed together. UV-chart and crease splits (copies with agreeing normals) + /// weld back into one smooth direction as a plain welded cage does, but a + /// double-sided sheet — the walls of a non-closed source after the voxel + /// remesh, thinner than a cell and collapsed to zero thickness by the + /// simplifier — keeps a front side and a back side, where a position weld + /// would sum two opposite normals to nothing and normalize the noise (rays + /// leaving at 180° from their face, shells crossing the whole model). + /// Every corner direction is finally checked against its own face normal and + /// falls back to the unsmoothed side, then to the face normal, so no ray ever + /// starts behind the surface it belongs to. + /// + /// The reach is the projection distance everywhere, or, fitted, the distance the + /// source actually sits at along each side's ray (times a margin for oblique + /// surfaces, clamped between the projection distance and 8 × it) smoothed over + /// the side connectivity — a cage that hugs the source where the decimation + /// stayed close and opens where it drifted, instead of one global distance that + /// misses here and bleeds through there. + /// + internal sealed class Cage + { + public const float MinFacing = 0.05f; // cos ≈ 87°: a direction must leave its face's front + public const float SideCos = -0.5f; // corners within 120° of a side's sum join it + public const float FitMargin = 2f; // reach = source distance × margin + public const float FitRange = 8f; // the fit looks this many projection distances out + + public Vector3[] directions; // per corner (indices.Length) + public float[] reach; // per corner + public int[] side; // per corner: welded (position, side) cluster + public int positions, sides, folded, oneSided, zeroNormals; + public float maxDeviationDeg, maxReach, distance; + + public Vector3 Direction(int face, Vector3 w) + { + int c = face * 3; + Vector3 d = directions[c] * w.x + directions[c + 1] * w.y + directions[c + 2] * w.z; + return d.sqrMagnitude > 1e-20f ? d.normalized : directions[c]; + } + + public float Reach(int face, Vector3 w) + { + int c = face * 3; + return reach[c] * w.x + reach[c + 1] * w.y + reach[c + 2] * w.z; + } + } + + internal static Cage BuildCage(RemeshNative.Geometry target, float distance, float smoothing, TriangleBvh source, Maps diag = null) { - const float cageSmoothing = 2f; - var slots = new int[target.positions.Length]; - var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(target.positions.Length); - for (int i = 0; i < target.positions.Length; ++i) { - var p = target.positions[i]; + var positions = target.positions; var indices = target.indices; + int corners = indices.Length, faces = corners / 3; + // Bit-exact position weld: xatlas and the simplifier copy coordinates exactly. + var slots = new int[positions.Length]; + var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(positions.Length); + for (int i = 0; i < positions.Length; ++i) { + var p = positions[i]; var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } slots[i] = slot; } - var welded = new Vector3[map.Count]; - var weldedIndices = new int[target.indices.Length]; - for (int i = 0; i < target.indices.Length; i += 3) { - int a = target.indices[i], b = target.indices[i + 1], c = target.indices[i + 2]; - Vector3 n = Vector3.Cross(target.positions[b] - target.positions[a], target.positions[c] - target.positions[a]); - welded[slots[a]] += n; welded[slots[b]] += n; welded[slots[c]] += n; - weldedIndices[i] = slots[a]; weldedIndices[i + 1] = slots[b]; weldedIndices[i + 2] = slots[c]; + // Sides: per position a linked list of clusters; a corner joins the cluster + // whose running sum its face normal agrees with best (within 120°), else + // opens a new one. A sum only ever grows (every member has a positive dot + // with it), so it never cancels the way a plain position weld does. + var firstSide = new int[map.Count]; + for (int i = 0; i < firstSide.Length; ++i) firstSide[i] = -1; + var nextSide = new System.Collections.Generic.List(); + var sideSum = new System.Collections.Generic.List(); + var sideVertex = new System.Collections.Generic.List(); + var cornerSide = new int[corners]; + var faceNormal = new Vector3[faces]; + for (int f = 0; f < faces; ++f) { + int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; + Vector3 cross = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]); + float area2 = cross.magnitude; + Vector3 fn = area2 > 1e-30f ? cross / area2 : Vector3.zero; + faceNormal[f] = fn; + for (int k = 0; k < 3; ++k) { + int v = indices[f * 3 + k], slot = slots[v]; + Vector3 e1 = positions[indices[f * 3 + (k + 1) % 3]] - positions[v]; + Vector3 e2 = positions[indices[f * 3 + (k + 2) % 3]] - positions[v]; + // Area × corner angle: meshopt's accumulation and Blender's weighted + // normal in one, so decimation slivers barely steer the direction. + Vector3 contribution = cross * (Vector3.Angle(e1, e2) * Mathf.Deg2Rad); + int best = -1; float bestDot = float.NegativeInfinity; + for (int sd = firstSide[slot]; sd >= 0; sd = nextSide[sd]) { + Vector3 sum = sideSum[sd]; + float dot = sum.sqrMagnitude > 1e-30f && fn.sqrMagnitude > 0f ? Vector3.Dot(sum.normalized, fn) : 1f; + if (dot > Cage.SideCos && dot > bestDot) { best = sd; bestDot = dot; } + } + if (best < 0) { + best = sideSum.Count; + sideSum.Add(Vector3.zero); sideVertex.Add(v); + nextSide.Add(firstSide[slot]); firstSide[slot] = best; + } + sideSum[best] += contribution; + cornerSide[f * 3 + k] = best; + } + } + int sideCount = sideSum.Count; + var sideDir = new Vector3[sideCount]; + for (int sd = 0; sd < sideCount; ++sd) + sideDir[sd] = sideSum[sd].sqrMagnitude > 1e-30f ? sideSum[sd].normalized : Vector3.zero; + // Laplacian smoothing over the SIDE connectivity: the corners of a face all + // sit on compatible sides, so the pass flows through chart borders and + // creases of one surface and never across to the other side of a sheet. + var welded = new RemeshNative.Geometry { normals = (Vector3[])sideDir.Clone(), indices = cornerSide }; + RemeshNative.SmoothNormals(welded, smoothing); + var cage = new Cage { directions = new Vector3[corners], reach = new float[corners], side = cornerSide, + positions = map.Count, sides = sideCount, distance = distance }; + var deviated = new bool[positions.Length]; + for (int c = 0; c < corners; ++c) { + int sd = cornerSide[c], v = indices[c]; + Vector3 fn = faceNormal[c / 3]; + Vector3 d = welded.normals[sd]; + if (!Facing(d, fn)) d = sideDir[sd]; + if (!Facing(d, fn)) d = fn; + if (d.sqrMagnitude < 1e-20f) d = target.normals[v]; // degenerate face at a degenerate vertex + cage.directions[c] = d; + cage.reach[c] = distance; + if (target.normals[v].sqrMagnitude > 1e-12f) { + float dev = Mathf.Acos(Mathf.Clamp(Vector3.Dot(d, target.normals[v]), -1f, 1f)) * Mathf.Rad2Deg; + if (dev > cage.maxDeviationDeg) cage.maxDeviationDeg = dev; + if (dev > 30f) deviated[v] = true; + } } - for (int i = 0; i < welded.Length; ++i) - if (welded[i].sqrMagnitude > 1e-30f) welded[i] = welded[i].normalized; - var weldedMesh = new RemeshNative.Geometry { normals = welded, indices = weldedIndices }; - RemeshNative.SmoothNormals(weldedMesh, cageSmoothing); - var cage = new Vector3[target.positions.Length]; - float maxDev = 0; int oneSided = 0, zeroNormalVerts = 0; - for (int i = 0; i < cage.Length; ++i) { - bool zeroVertexNormal = target.normals[i].sqrMagnitude < 1e-12f; - if (zeroVertexNormal) ++zeroNormalVerts; - // Fall back to the (possibly zero) vertex normal only when the welded - // sum is degenerate; zero cage entries zero the projection ray. - cage[i] = welded[slots[i]].sqrMagnitude > 1e-30f ? welded[slots[i]].normalized : target.normals[i]; - float dev = Mathf.Acos(Mathf.Clamp(Vector3.Dot(cage[i], target.normals[i]), -1f, 1f)) * Mathf.Rad2Deg; - if (dev > maxDev) maxDev = dev; - if (dev > 30f) ++oneSided; + for (int i = 0; i < positions.Length; ++i) { + if (deviated[i]) ++cage.oneSided; + if (target.normals[i].sqrMagnitude < 1e-12f) ++cage.zeroNormals; } + for (int slot = 0; slot < firstSide.Length; ++slot) + if (firstSide[slot] >= 0 && nextSide[firstSide[slot]] >= 0) ++cage.folded; + cage.maxReach = distance; + if (source != null && distance > 0f) FitReach(cage, welded.normals, sideDir, sideVertex, positions, source); if (diag != null) { - diag.weldedPositions = map.Count; - diag.splitCopies = target.positions.Length - map.Count; - diag.oneSidedNormals = oneSided; - diag.maxOneSidedDeg = maxDev; - diag.zeroNormals = zeroNormalVerts; + diag.weldedPositions = cage.positions; + diag.splitCopies = positions.Length - cage.positions; + diag.cageSides = cage.sides; + diag.foldedPositions = cage.folded; + diag.oneSidedNormals = cage.oneSided; + diag.maxOneSidedDeg = cage.maxDeviationDeg; + diag.zeroNormals = cage.zeroNormals; + diag.maxReachRatio = distance > 0f ? cage.maxReach / distance : 1f; } return cage; } + static bool Facing(Vector3 d, Vector3 faceNormal) + => d.sqrMagnitude > 1e-20f && (faceNormal.sqrMagnitude < 1e-20f || Vector3.Dot(d, faceNormal) >= Cage.MinFacing); + + // Per side: the distance the source sits at along the side's ray (either way), + // or the nearest source point when the ray meets nothing — the bake's nearest + // fallback is bounded by the same reach, so a fitted reach lets it catch what + // the ray cannot. Smoothed over the side connectivity, never below a side's own + // measured need, so the shells stay shells instead of spiking per vertex. + static void FitReach(Cage cage, Vector3[] smoothed, Vector3[] sideDir, System.Collections.Generic.List sideVertex, + Vector3[] positions, TriangleBvh source) + { + float distance = cage.distance, range = distance * Cage.FitRange; + int sides = sideDir.Length; + var need = new float[sides]; + for (int sd = 0; sd < sides; ++sd) { + Vector3 d = smoothed[sd].sqrMagnitude > 1e-20f ? smoothed[sd] : sideDir[sd]; + Vector3 p = positions[sideVertex[sd]]; + float found = -1f; + if (d.sqrMagnitude > 1e-20f) { + float eps = distance * 1e-3f; + var outward = source.Raycast(p + d * eps, d, range); + var inward = source.Raycast(p - d * eps, -d, range); + if (outward.triangleIndex >= 0) found = outward.t + eps; + if (inward.triangleIndex >= 0 && (found < 0f || inward.t + eps < found)) found = inward.t + eps; + } + if (found < 0f) { + var nearest = source.FindNearest(p, range); + if (nearest.triangleIndex >= 0) found = Mathf.Sqrt(nearest.distSq); + } + need[sd] = found < 0f ? distance : Mathf.Clamp(found * Cage.FitMargin, distance, range); + } + var reach = (float[])need.Clone(); + var sum = new float[sides]; var count = new int[sides]; + var side = cage.side; + for (int pass = 0; pass < 2; ++pass) { + Array.Clear(sum, 0, sides); Array.Clear(count, 0, sides); + for (int c = 0; c < side.Length; c += 3) { + Neighbour(reach, sum, count, side[c], side[c + 1]); + Neighbour(reach, sum, count, side[c + 1], side[c + 2]); + Neighbour(reach, sum, count, side[c + 2], side[c]); + } + for (int sd = 0; sd < sides; ++sd) + if (count[sd] > 0) reach[sd] = Mathf.Max(need[sd], 0.5f * (reach[sd] + sum[sd] / count[sd])); + } + float max = distance; + for (int c = 0; c < side.Length; ++c) { cage.reach[c] = reach[side[c]]; if (reach[side[c]] > max) max = reach[side[c]]; } + cage.maxReach = max; + } + + static void Neighbour(float[] reach, float[] sum, int[] count, int a, int b) + { + if (a == b) return; + sum[a] += reach[b]; ++count[a]; + sum[b] += reach[a]; ++count[b]; + } + // Nearest source surface point per result vertex, interpolating its vertex colours. internal static Color[] TransferVertexColors(RemeshSource source, RemeshNative.Geometry target, TriangleBvh bvh, RemeshSettings settings, CancellationToken token) diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 4b0ff819..3edd176b 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -86,6 +86,7 @@ public Node Primary public RemeshBaker.Maps Maps => Primary?.maps; public Texture2D BaseColorPreview => baseColorPreview; public float SourceDiagonal => Primary?.source != null ? Primary.source.diagonal : 0f; + public RemeshSource Source => Primary?.source; public bool SourceHasColors { get { foreach (var n in nodes) if (n.source != null && n.source.hasColors) return true; return false; } } // True only when EVERY node carries the stage's output: a keep-hierarchy run @@ -127,7 +128,7 @@ public static string Key(Stage stage, RemeshSettings s, GameObject source) case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.bakeMode}|{s.projectionDistance}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}|{s.proxyDepth:F4}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.cageSmoothing:F3}|{s.cageFit}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}|{s.proxyDepth:F4}"; } } @@ -403,8 +404,9 @@ static void LogDiagnostics(Node node, RemeshShape shape) string prefix = "[" + node.name + "] "; if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) UvtLog.Info(UvtLog.Category.RemeshDiag, prefix + - $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), " + - $"{baked.oneSidedNormals:N0} one-sided border normals, max cage deviation {baked.maxOneSidedDeg:F0}°, {baked.zeroNormals:N0} zero normals; " + + $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), {baked.cageSides:N0} sides " + + $"({baked.foldedPositions:N0} double-sided positions), {baked.oneSidedNormals:N0} vertices off their cage by >30° (max {baked.maxOneSidedDeg:F0}°), " + + $"reach up to {baked.maxReachRatio:F1}× the projection distance, {baked.zeroNormals:N0} zero normals; " + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}; " + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 8e136597..b7086e9c 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -26,8 +26,11 @@ internal sealed class Data public Texture2D baseColor; // Ray travel of the bake projection (source diagonal × projection distance); // the Cage toggle draws the result mesh inflated by ±this along the cage - // normals, i.e. the exact shells the projection rays start and end on. - public float cageDistance; + // directions, i.e. the exact shells the projection rays start and end on. + // Smoothing and fit mirror the bake settings; the source feeds the fit. + public float cageDistance, cageSmoothing; + public bool cageFit; + public RemeshSource source; } static readonly string[] ViewNames = { "3D", "UV", "Maps" }; @@ -37,7 +40,8 @@ internal sealed class Data Channel channel; bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, uvTexture = true, uvTint = true; Material surface, wire, lines; - Mesh cageOuter, cageInner; int cageMeshId; float cageDistanceCached = -1; + Mesh cageOuter, cageInner; int cageMeshId; string cageKey; + RemeshSource cageSourceRef; TriangleBvh cageSourceBvh; RemeshBaker.Maps mapSource; readonly Texture2D[] mapTextures = new Texture2D[5]; @@ -59,7 +63,8 @@ public void Invalidate() { if (cageOuter) Object.DestroyImmediate(cageOuter); if (cageInner) Object.DestroyImmediate(cageInner); - cageOuter = cageInner = null; cageMeshId = 0; cageDistanceCached = -1; + cageOuter = cageInner = null; cageMeshId = 0; cageKey = null; + cageSourceRef = null; cageSourceBvh = null; foreach (var texture in mapTextures) if (texture) Object.DestroyImmediate(texture); Array.Clear(mapTextures, 0, mapTextures.Length); mapSource = null; @@ -132,7 +137,7 @@ public void Overlay3D(Data data, MeshViewport3D view) if (!mesh || !EnsureResources()) return; if (wireframe) view.DrawWire(mesh, Matrix4x4.identity, shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) - DrawCage(view, mesh, data.geometry, data.cageDistance); + DrawCage(view, mesh, data); } bool EnsureResources() @@ -146,40 +151,62 @@ bool EnsureResources() return true; } - // The projection cage, drawn as its two limit shells: the result mesh inflated - // by ±cageDistance along the same welded cage normals the bake rays follow - // (outer = ray origins, inner = ray ends). Rebuilt when the mesh or the - // distance changes; turn the surface Wire off to read a shell alone. - void DrawCage(MeshViewport3D view, Mesh mesh, RemeshNative.Geometry geometry, float distance) + // The projection cage, drawn as its two limit shells: every face corner pushed + // ±its reach along its cage direction (outer = ray origins, inner = ray ends), + // with one line per welded side pair so a double-sided sheet shows both of its + // shells. Rebuilt when the mesh, the distance, the smoothing, the fit or the + // source changes; turn the surface Wire off to read a shell alone. + void DrawCage(MeshViewport3D view, Mesh mesh, Data data) { + var geometry = data.geometry; int id = mesh.GetInstanceID(); - if (id != cageMeshId || Mathf.Abs(distance - cageDistanceCached) > 1e-6f) { + string key = $"{data.cageDistance:R}|{data.cageSmoothing:R}|{data.cageFit}|{(data.source != null ? data.source.GetHashCode() : 0)}"; + if (id != cageMeshId || key != cageKey) { if (cageOuter) Object.DestroyImmediate(cageOuter); if (cageInner) Object.DestroyImmediate(cageInner); - var cageNormals = RemeshBaker.BuildCageNormals(geometry, null); - var indices = MeshViewport3D.EdgeIndices(mesh); - if (indices != null) { - var folds = new TriangleBvh(geometry.positions, geometry.indices); - cageOuter = CageShell(mesh, geometry, cageNormals, distance, "Outer", folds); - cageInner = CageShell(mesh, geometry, cageNormals, -distance, "Inner", folds); + TriangleBvh source = null; + if (data.cageFit && data.source != null && data.source.indices != null && data.source.indices.Length > 0) { + if (!ReferenceEquals(cageSourceRef, data.source) || cageSourceBvh == null) { + cageSourceBvh = new TriangleBvh(data.source.positions, data.source.indices); + cageSourceRef = data.source; + } + source = cageSourceBvh; } - else cageOuter = cageInner = null; - cageMeshId = id; cageDistanceCached = distance; + var cage = RemeshBaker.BuildCage(geometry, data.cageDistance, data.cageSmoothing, source); + var folds = new TriangleBvh(geometry.positions, geometry.indices); + cageOuter = CageShell(mesh, geometry, cage, 1f, "Outer", folds); + cageInner = CageShell(mesh, geometry, cage, -1f, "Inner", folds); + cageMeshId = id; cageKey = key; } if (cageOuter) view.DrawLineMesh(cageOuter, Matrix4x4.identity, new Color(1f, 0.55f, 0.15f, 0.9f)); if (cageInner) view.DrawLineMesh(cageInner, Matrix4x4.identity, new Color(0.35f, 0.6f, 1f, 0.45f)); } - static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, Vector3[] cageNormals, float distance, string suffix, TriangleBvh folds) + static Mesh CageShell(Mesh mesh, RemeshNative.Geometry geometry, RemeshBaker.Cage cage, float sign, string suffix, TriangleBvh folds) { - var vertices = new Vector3[geometry.positions.Length]; - for (int i = 0; i < vertices.Length; ++i) { - Vector3 dir = distance >= 0 ? cageNormals[i] : -cageNormals[i]; - vertices[i] = geometry.positions[i] + dir * FoldLimitedOffset(folds, geometry.positions[i], dir, Mathf.Abs(distance)); + int corners = geometry.indices.Length; + if (corners == 0) return null; + var vertices = new Vector3[corners]; + for (int c = 0; c < corners; ++c) { + Vector3 p = geometry.positions[geometry.indices[c]]; + Vector3 dir = cage.directions[c] * sign; + vertices[c] = p + dir * FoldLimitedOffset(folds, p, dir, cage.reach[c]); } + // One line per pair of welded sides: the wire of each side's shell, drawn once. + var lines = new List(corners * 2); + var seen = new HashSet<(int, int)>(); + for (int c = 0; c < corners; c += 3) + for (int k = 0; k < 3; ++k) { + int a = c + k, b = c + (k + 1) % 3; + int sa = cage.side[a], sb = cage.side[b]; + if (sa == sb) continue; + var pair = sa < sb ? (sa, sb) : (sb, sa); + if (!seen.Add(pair)) continue; + lines.Add(a); lines.Add(b); + } var shell = new Mesh { name = mesh.name + "_Cage" + suffix, hideFlags = HideFlags.HideAndDontSave, indexFormat = IndexFormat.UInt32 }; shell.vertices = vertices; - shell.SetIndices(MeshViewport3D.EdgeIndices(mesh), MeshTopology.Lines, 0); + shell.SetIndices(lines.ToArray(), MeshTopology.Lines, 0); return shell; } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 6e7aa127..ab8a84eb 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -135,6 +135,12 @@ public sealed class RemeshSettings // lighting into one BaseColor texture and the saved material becomes Unlit. public RemeshBakeMode bakeMode = RemeshBakeMode.Materials; public float projectionDistance = 0.02f; // fraction of source bounds diagonal + // Cage: Laplacian passes over the welded side directions (0 = raw averaged + // normals), and whether each side's reach is fitted to where the source sits + // along its ray (clamped between 1× and 8× the projection distance) instead of + // the one global distance. + public float cageSmoothing = 2f; + public bool cageFit = true; // Proxy shapes (boxes, hull): how deep behind a proxy face a texel looks for the // source surface, as a fraction of the capture diagonal — the ray along the face // normal, then the nearest surface within the same reach. A full-depth look @@ -170,6 +176,7 @@ public void Validate() chartIterations < 1 || chartIterations > 16 || !NonNegative(maxChartArea) || !NonNegative(maxChartBoundary) || textureResolution < 64 || textureResolution > 8192 || (textureResolution & (textureResolution - 1)) != 0 || padding < 1 || padding > 32 || !Finite(projectionDistance) || projectionDistance <= 0 || projectionDistance > 1 || + !Finite(cageSmoothing) || cageSmoothing < 0 || cageSmoothing > 10 || !Finite(proxyDepth) || proxyDepth < 0.005f || proxyDepth > 1 || (bakeSamples != 1 && bakeSamples != 4 && bakeSamples != 9 && bakeSamples != 16) || hullResolution < 4 || hullResolution > 256 || hullTriangles < 12 || hullTriangles > 100000 || diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 3493ba84..adada32c 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -152,6 +152,9 @@ void SyncPreviewData() // Live from the current settings so the cage preview reflects projection // distance changes before a re-bake; zero until a source snapshot exists. previewData.cageDistance = pipeline.SourceDiagonal * settings.projectionDistance; + previewData.cageSmoothing = settings.cageSmoothing; + previewData.cageFit = settings.cageFit && settings.sourceShape == RemeshShape.LOD0; + previewData.source = pipeline.Source; } // The shared 3D canvas shows the selected pipeline stage (in capture space) with @@ -264,8 +267,17 @@ public void OnDrawSidebar() "Materials transfers the source maps. Beauty bakes the object as the player sees it — realtime/mixed light with ray shadows, " + "lightmaps, ambient and reflection probes folded into one lit BaseColor texture; the saved material becomes Unlit. " + "Specular uses the scene view camera's position at bake time."), settings.bakeMode); - if (settings.sourceShape == RemeshShape.LOD0) - settings.projectionDistance = EditorGUILayout.Slider("Projection / bounds", settings.projectionDistance, 0.001f, 0.2f); + if (settings.sourceShape == RemeshShape.LOD0) { + settings.projectionDistance = EditorGUILayout.Slider(new GUIContent("Projection / bounds", + "Ray travel each way from the result surface, as a fraction of the source diagonal. The cage preview in the 3D view shows the shells the rays start and end on."), + settings.projectionDistance, 0.001f, 0.2f); + settings.cageSmoothing = EditorGUILayout.Slider(new GUIContent("Cage smoothing", + "Smoothing passes over the cage directions (welded across UV and crease splits, kept apart on double-sided sheets). 0 casts along the raw averaged normals; more flattens the decimation's sliver noise out of the ray directions."), + settings.cageSmoothing, 0f, 10f); + settings.cageFit = EditorGUILayout.Toggle(new GUIContent("Fit cage to source", + "Measure where the source sits along each cage ray and reach that far (1× to 8× the projection distance), instead of one global distance: fewer missed texels where the decimation drifted, no deep rays where it stayed close."), + settings.cageFit); + } else settings.proxyDepth = EditorGUILayout.Slider(new GUIContent("Proxy search depth", "How deep behind a proxy face a texel looks for the source, as a fraction of the model's diagonal: the ray along the face " + diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index a5493ebd..0b2dfcb5 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -138,6 +138,69 @@ public void VertexColorAndAlphaTransferIndependently() Assert.That(alpha[1].r, Is.EqualTo(1).Within(1e-4f)); } [Test] + public void CageKeepsDoubleSidedSheetApart() + { + // A quad with both windings on the SAME four vertices: a wall thinner than a + // voxel after the simplifier collapsed its slab. A position weld sums the two + // sides to nothing; the sided cage gives every front corner +z and every back + // corner -z, with a uniform reach when no source is given. + var p=new[] { Vector3.zero, Vector3.right, new Vector3(1,1,0), Vector3.up }; + var sheet=new RemeshNative.Geometry { positions=p, normals=new Vector3[4], indices=new[] { 0,1,2, 0,2,3, 0,2,1, 0,3,2 } }; + var cage=RemeshBaker.BuildCage(sheet, 0.1f, 2f, null); + for (int c=0;c<6;++c) Assert.That(Vector3.Angle(cage.directions[c], Vector3.forward), Is.LessThan(0.01f), "front corner "+c); + for (int c=6;c<12;++c) Assert.That(Vector3.Angle(cage.directions[c], Vector3.back), Is.LessThan(0.01f), "back corner "+c); + Assert.AreEqual(4, cage.positions); Assert.AreEqual(8, cage.sides); Assert.AreEqual(4, cage.folded); + Assert.AreEqual(4, cage.zeroNormals); + foreach (float r in cage.reach) Assert.That(r, Is.EqualTo(0.1f).Within(1e-6f)); + Assert.That(cage.Direction(0, new Vector3(0.2f,0.3f,0.5f)).z, Is.GreaterThan(0.99f)); + Assert.That(cage.Reach(2, new Vector3(0.2f,0.3f,0.5f)), Is.EqualTo(0.1f).Within(1e-6f)); + } + [Test] + public void CageWeldsSplitCopiesAcrossACrease() + { + // The 90° fold split along its shared edge (a chart border): the copies at one + // position agree within 120°, so they share one side whose direction is the + // average of both faces, and the sheet's far corners keep their own face. + var p=new[] { Vector3.zero, Vector3.right, Vector3.forward, Vector3.up, Vector3.zero, Vector3.right }; + var fold=new RemeshNative.Geometry { positions=p, normals=new Vector3[6], indices=new[] { 0,1,2, 5,4,3 } }; + RemeshNative.GenerateSplitNormals(fold, RemeshNormalWeighting.FaceArea); + var cage=RemeshBaker.BuildCage(fold, 0.1f, 0f, null); + var average=Vector3.Normalize(new Vector3(0,-1,-1)); + Assert.AreEqual(4, cage.positions); Assert.AreEqual(4, cage.sides); Assert.AreEqual(0, cage.folded); + Assert.AreEqual(cage.side[0], cage.side[4], "coincident copies share a side"); + Assert.That(Vector3.Angle(cage.directions[0], average), Is.LessThan(0.01f)); + Assert.That(Vector3.Angle(cage.directions[4], average), Is.LessThan(0.01f)); + Assert.That(Vector3.Angle(cage.directions[2], Vector3.down), Is.LessThan(0.01f), "far corner of the floor face"); + Assert.That(Vector3.Angle(cage.directions[5], Vector3.back), Is.LessThan(0.01f), "far corner of the wall face"); + // Every direction leaves the front of its own face. + for (int c=0;c<6;++c) { + int f=c/3; int a=fold.indices[f*3], b=fold.indices[f*3+1], d=fold.indices[f*3+2]; + var fn=Vector3.Cross(p[b]-p[a], p[d]-p[a]).normalized; + Assert.That(Vector3.Dot(cage.directions[c], fn), Is.GreaterThan(RemeshBaker.Cage.MinFacing)); + } + Assert.AreEqual(4, cage.oneSided, "all four split copies along the crease sit 45° off the welded cage"); + } + [Test] + public void CageFitReachesTheSource() + { + // A flat target under a source sheet 0.3 above it: with a 0.1 projection + // distance the plain cage misses the source; the fitted reach measures 0.3 + // along the ray, doubles it for oblique surfaces and stays within 8×. + var target=new RemeshNative.Geometry { positions=new[] { Vector3.zero, Vector3.right, new Vector3(1,1,0), Vector3.up }, + normals=new[] { Vector3.forward, Vector3.forward, Vector3.forward, Vector3.forward }, indices=new[] { 0,1,2, 0,2,3 } }; + var sp=new[] { new Vector3(-2,-2,0.3f), new Vector3(3,-2,0.3f), new Vector3(3,3,0.3f), new Vector3(-2,3,0.3f) }; + var source=new TriangleBvh(sp, new[] { 0,1,2, 0,2,3 }); + var fitted=RemeshBaker.BuildCage(target, 0.1f, 2f, source); + foreach (float r in fitted.reach) Assert.That(r, Is.EqualTo(0.6f).Within(1e-4f)); + Assert.That(fitted.maxReach, Is.EqualTo(0.6f).Within(1e-4f)); + // Far beyond the 8× range the fit falls back to the projection distance. + var far=new TriangleBvh(new[] { new Vector3(-2,-2,5), new Vector3(3,-2,5), new Vector3(3,3,5), new Vector3(-2,3,5) }, new[] { 0,1,2, 0,2,3 }); + foreach (float r in RemeshBaker.BuildCage(target, 0.1f, 2f, far).reach) Assert.That(r, Is.EqualTo(0.1f).Within(1e-6f)); + // Closer than the projection distance the reach stays at the distance. + var near=new TriangleBvh(new[] { new Vector3(-2,-2,0.02f), new Vector3(3,-2,0.02f), new Vector3(3,3,0.02f), new Vector3(-2,3,0.02f) }, new[] { 0,1,2, 0,2,3 }); + foreach (float r in RemeshBaker.BuildCage(target, 0.1f, 2f, near).reach) Assert.That(r, Is.EqualTo(0.1f).Within(1e-6f)); + } + [Test] public void UvIslandNormalsAreHardOnlyAtSplitVertices() { // Two faces folded 90° along x. Shared vertices smooth; split vertices stay hard. From f01659194bf864a1c1e413b531b327d4b417d2c5 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 21:43:07 +0000 Subject: [PATCH 081/130] fix(remesh): trim by orientation; result atlas in the UV canvas Trim to source surface judged a remesh face by position (centroid behind the sheet?), but the voxel remesher fits its vertices onto the input surface: the slab around an open wall has its front and back ON the sheet, both at zero distance, so both passed and every wall of a non-closed source came back as a zero-thickness double-sided surface (half the positions of a bathroom interior carried two sides), which broke the projection cage and baked texels from the wrong side. A face now stays only when a source face within two cells points the same way; the back (opposite normal) and rims (perpendicular) go, closed or truly double-sided sources keep both sides, an inside-out source is judged by its flipped normals, and the stage warns when neither reading keeps a tenth instead of silently keeping everything. On a one-sided open room the trim removes 50% of the remesh where it removed 3%. The right sidebar's own UV view is gone. The canvas's UV mode shows the Remesh & Bake result once Normals & UV ran, through a new IUvToolUvContent opt-in (the hub sets UvCanvasView.EntriesOverride each frame; MeshEntry.previewTexture carries the baked base color as the background), with an "Islands" fill mode tinting every shell. The right panel keeps the 3D stage/overlay toggles (plus island count and texel usage) and the Maps view. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 + Documentation~/REMESH_AND_BAKE.md | 29 ++++++---- Editor/Framework/IUvTool.cs | 16 ++++++ Editor/Framework/MeshEntry.cs | 7 +++ Editor/Framework/UvCanvasView.cs | 28 +++++++--- Editor/Framework/UvToolHub.cs | 10 +++- Editor/RemeshPipeline.cs | 7 ++- Editor/RemeshPreview.cs | 91 ++++--------------------------- Editor/RemeshTrim.cs | 37 ++++++++----- Editor/Tools/RemeshBakeTool.cs | 39 ++++++++++++- Tests/Editor/RemeshBakeTests.cs | 24 +++++++- 11 files changed, 169 insertions(+), 121 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2663d70d..d84292e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel keeps the stage/overlay toggles for the 3D view (plus the atlas's island count and texel usage) and the Maps view. Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background. - **Remesh & Bake never touches the source importers.** The remesh stage used to flip `isReadable` on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture itself. Read/Write-disabled meshes are read through `Mesh.AcquireReadOnlyMeshData` regardless, so the flip is gone; skinned sources bake through `BakeMesh` as before. - **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction). `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. ### Fixed +- **Remesh & Bake: Trim to source surface now actually removes the back of an open sheet.** The trim judged a remesh face by position ("is its centroid behind the source sheet?"), but the voxel remesher fits its output vertices onto the input surface, so the slab around an open wall is not a cell thick: its front and back faces lie ON the sheet, both at zero distance, and both passed — a zero-thickness double-sided result on every wall of a non-closed source (half the positions of a bathroom interior carried two sides), which then broke the projection cage and baked texels from the wrong side. The trim now keeps a face only when a source face within two cells points the same way: the back (opposite normal) and the rims (perpendicular) go, a closed or genuinely double-sided source keeps both sides, an inside-out source is judged by its flipped normals, and when neither reading keeps a tenth of the remesh the stage warns instead of silently keeping everything. On a one-sided open room the trim removes 50% of the remesh (back and rims) where it removed 3% before. - **Remesh & Bake, keep hierarchy: nothing is captured twice, sheared transforms survive, and previews/exports are coherent.** A node's capture folded its whole subtree in while every child renderer was also its own node, so nested renderers baked into two meshes; each renderer is now exactly one node. A node's capture space is the TRS the save restores (root × TRS), so a rotated child under a non-uniformly scaled parent folds the residual shear into its geometry instead of losing it. The node list applies the same mesh-asset name filters (`_COL`, `_LOD{n}`) as the weld, so a normally named object carrying a collision mesh no longer aborts the whole run. Re-running Normals & UV destroys the previous node meshes (each iteration leaked one `HideAndDontSave` mesh per node); a re-bake with vertex color transfer off clears the colors the previous bake left on every node; the UV and cage previews show the largest node's geometry instead of "run the UV stage"; and the hierarchy save imports the map files before configuring their importers (one `AssetEditingScope` deferred the imports past the importer lookup, which could fail and roll the whole folder back). - **Remesh & Bake: Beauty bakes shade lightmapped faces as the game does.** The lightmap was written out as the colour itself; Unity lightmaps store irradiance that the Lit shader multiplies by albedo, so textured lightmapped objects baked as flat light. Lightmapped faces are now albedo × (lightmap + realtime direct) + emission. Point and spot lights respect their shadow setting and strength (they cast opaque shadows regardless before), light ranges and shadow distances are evaluated in world units (a root scaled to 0.01 or 100 no longer stretches or shrinks their reach), and keep-hierarchy nodes evaluate the lighting in their own space instead of the root's. - **Remesh & Bake: *Smooth* and *Angle* hard-edge modes are smooth across UV islands again.** The post-unwrap normal regeneration accumulated per output vertex, and xatlas splits vertices along every chart border, so every mode hardened island borders — *Smooth* behaved like *UV islands*, *Angle* like *UV islands + angle*. Copies along chart borders are now grouped back by position and native crease group, and normal smoothing runs over the same groups. Tangents are re-orthogonalized against the final normals so the saved frame matches the bake's. The front-face-filtered nearest fallback is bounded by the projection distance like the unfiltered one (it could sample an arbitrarily distant part across a gap). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 2fc4ca6f..863b6eab 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -19,11 +19,16 @@ settings, marked "settings changed" in its header) and clears everything after i smooth by design, so this toggle is what shows the transferred detail — the vivid pink/cyan atlas in **Maps ▸ Normal** is that same detail in tangent space, not corruption. -- **UV** — the final UV layout with islands tinted and the baked base color under - it; island count, triangle count and texel usage. + The 3D panel also reports the atlas: island count and texel usage. - **Maps** — each baked map (base color, normal, metallic/smoothness, occlusion, emission). +The canvas's **UV** mode (the UV | 3D switch at its bottom) shows the result's +atlas once Normals & UV ran — the same shells, wire, border, spot picking and +status line as any mesh — over the baked base color (or the checker when the +canvas asks for it), with an **Islands** fill mode that tints every UV shell. +Before the UV stage the canvas shows the selected model as usual. + 1. **Source.** Select a model root. **Source root** follows the selection: a LOD child resolves to its LODGroup, and selections without a MeshRenderer (lights, cameras) are ignored. An object dragged into the field @@ -72,14 +77,18 @@ settings, marked "settings changed" in its header) and clears everything after i shell. Higher resolution preserves smaller gaps but produces a denser, uniform intermediate mesh. **Trim to source surface** (default on) masks the result against the source: the voxelizer closes every surface, so an open - sheet (a wall, a roof plane, a curtain) comes back as a thin slab with a - front, a back and rims; a remesh face stays only when a source face lies - within two voxel cells of it, parallel to it, with the remesh face on that - source face's front side — the back of a one-sided sheet and the slab's rims - have none and go, a closed source is left whole, and a source that is - double-sided where it matters keeps both sides. The status reports how many - faces went. Turn it off to keep the slab, for instance with *Two-sided - shell*. + sheet (a wall, a roof plane, a curtain) comes back as a slab with a front, a + back and rims — and because the remesher fits its vertices onto the input + surface, the front and the back lie ON the sheet, a zero-thickness + double-sided surface rather than a cell-thick slab. A remesh face stays only + when a source face lies within two voxel cells of it whose normal points the + same way; the back of a one-sided sheet (opposite normal) and the slab's + rims (perpendicular) have none and go, a closed source is left whole, and a + source that is double-sided where it matters keeps both sides. A source + wound inside out is judged by its flipped normals; when neither reading keeps + a tenth of the remesh, nothing is trimmed and a warning says so. The status + reports how many faces went. Turn it off to keep the slab, for instance with + *Two-sided shell*. 3. **Simplify** — quadric simplification of the voxel mesh. It collapses the cheapest edges first, so with *Regularize = None* flat areas reduce to a few large triangles while curved or detailed areas keep their density. *Maximum diff --git a/Editor/Framework/IUvTool.cs b/Editor/Framework/IUvTool.cs index 620b91a0..8b6d3921 100644 --- a/Editor/Framework/IUvTool.cs +++ b/Editor/Framework/IUvTool.cs @@ -83,6 +83,22 @@ public interface IUvTool3D void OnDraw3D(MeshViewport3D view); } + /// + /// Opt-in for tools whose own output should fill the shared UV canvas (the hub's + /// UV mode) instead of the context's preview-LOD meshes — the Remesh & Bake + /// result with its new atlas. The canvas treats the entries like any other: fill + /// modes, wire, border, spot picking, checker or the entry's own preview texture. + /// + public interface IUvToolUvContent + { + /// + /// Fill entries with what the UV canvas should show while this tool is active and + /// return true; return false to show the context's LOD meshes instead. Keep the + /// MeshEntry instances stable across frames so hover and selection persist. + /// + bool GetUvContent(List entries); + } + /// /// Opt-in marker for tools that want a right-side sidebar in addition to /// the standard left sidebar. The hub renders this sidebar to the right diff --git a/Editor/Framework/MeshEntry.cs b/Editor/Framework/MeshEntry.cs index c3175747..25c1e181 100644 --- a/Editor/Framework/MeshEntry.cs +++ b/Editor/Framework/MeshEntry.cs @@ -33,6 +33,13 @@ public class MeshEntry public bool include = true; + /// + /// Background texture for the UV canvas when the entry has no renderer to take + /// a material from: tool-made meshes (the Remesh & Bake result shows its + /// baked base color). Not owned by the entry. + /// + public Texture previewTexture; + /// Pipeline step flag — true after UV0 false-seam welding. Prevents re-running the step. Reset on ResetPipelineState. public bool wasWelded; /// Pipeline step flag — true after edge-seam welding. Prevents re-running the step. Reset on ResetPipelineState. diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index d3f369ed..39deecb8 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -70,6 +70,17 @@ public class ShellDebugHit public bool Panning; public Rect LastCanvasRect; public List FillModes = new List(); + + /// + /// When set, the canvas shows these entries instead of the context's preview-LOD + /// meshes: a tool's own output (the Remesh & Bake result) laid out with the + /// same fill modes, wire, border, spot picking and backgrounds. The hub sets it + /// each frame from . + /// + public List EntriesOverride; + + /// The entries the canvas currently shows. + public List Entries(UvToolContext ctx) => EntriesOverride ?? ctx.ForLod(ctx.PreviewLod); public int ActiveFillModeIndex; public bool FillHidden; public bool ShowWireframe = true; @@ -188,11 +199,11 @@ public void ClearHoverState(bool repaint = true) public void OnGUI(UvToolContext ctx, Action toolOverlay) { - var ee = ctx.ForLod(ctx.PreviewLod); + var ee = Entries(ctx); if (ee.Count == 0) { EditorGUILayout.HelpBox("No meshes for this LOD.", MessageType.Info); HoveredShellDebug = null; return; } List canvasGroupKeys = null; - if (ctx.RepackPerMesh && ctx.IsolatedMeshGroup >= 0) + if (EntriesOverride == null && ctx.RepackPerMesh && ctx.IsolatedMeshGroup >= 0) canvasGroupKeys = ctx.BuildGroupKeys(ctx.PreviewLod); var draws = new List>(); @@ -200,7 +211,7 @@ public void OnGUI(UvToolContext ctx, Action t { if (canvasGroupKeys != null && ctx.IsolatedMeshGroup >= 0 && ctx.IsolatedMeshGroup < canvasGroupKeys.Count) { - string eKey = ee[i].meshGroupKey ?? ee[i].renderer.name; + string eKey = ee[i].meshGroupKey ?? (ee[i].renderer != null ? ee[i].renderer.name : null); if (eKey != canvasGroupKeys[ctx.IsolatedMeshGroup]) continue; } Mesh m = ctx.DMesh(ee[i]); @@ -498,7 +509,7 @@ void HandleCanvasInput(UvToolContext ctx, Rect canvasRect, float baseSz, float s public void FitToUvBounds(UvToolContext ctx) { - var ee = ctx.ForLod(ctx.PreviewLod); + var ee = Entries(ctx); float minU=float.MaxValue, minV=float.MaxValue, maxU=float.MinValue, maxV=float.MinValue; bool any = false; foreach (var entry in ee) @@ -1114,12 +1125,12 @@ public static bool TryBarycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, ou List FilteredEntries(UvToolContext ctx) { - var ee = ctx.ForLod(ctx.PreviewLod); - if (!ctx.RepackPerMesh || ctx.IsolatedMeshGroup < 0) return ee; + var ee = Entries(ctx); + if (EntriesOverride != null || !ctx.RepackPerMesh || ctx.IsolatedMeshGroup < 0) return ee; var keys = ctx.BuildGroupKeys(ctx.PreviewLod); if (ctx.IsolatedMeshGroup >= keys.Count) return ee; string isoKey = keys[ctx.IsolatedMeshGroup]; - return ee.Where(e => (e.meshGroupKey ?? e.renderer.name) == isoKey).ToList(); + return ee.Where(e => (e.meshGroupKey ?? (e.renderer != null ? e.renderer.name : null)) == isoKey).ToList(); } // ════════════════════════════════════════════════════════════ @@ -1163,6 +1174,9 @@ static void AddEdge(int a, int b, Dictionary counts, Dictionary> draws) { if (CheckerEnabled) return CheckerTexturePreview.GetCheckerTexture(); + // Tool-made entries carry their own background (a baked base color). + foreach (var item in draws) + if (item.Item2.renderer == null && item.Item2.previewTexture != null) return item.Item2.previewTexture; if (CurrentPreviewMode == PreviewMode.Lightmap) { foreach (var item in draws) diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index c7512b2d..36bec5dd 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -41,6 +41,7 @@ public T FindTool() where T : class, IUvTool const string Canvas3DPref = "MeshLab.Canvas3D"; readonly List viewportItems = new List(); readonly List viewportEntries = new List(); // parallel to viewportItems; null for tool content + readonly List uvContentEntries = new List(); // a tool's own UV canvas content (IUvToolUvContent) Rect canvasArea; // the canvas column's content rect, from the last repaint // ── Layout ── @@ -395,6 +396,10 @@ void OnGUI() // Middle column with explicit Width so it's the first thing to // shrink when the window is too narrow. EditorGUILayout.BeginVertical(GUILayout.Width(canvasW)); + // A tool may put its own output in the UV canvas (the Remesh & Bake result); + // resolved every frame so it follows the tool's stages and tab switches. + uvContentEntries.Clear(); + canvas.EntriesOverride = ActiveTool is IUvToolUvContent uvContent && uvContent.GetUvContent(uvContentEntries) ? uvContentEntries : null; if (canvas3D) DrawViewportToolbar(); else DrawCanvasToolbar(); bool showGroupPanel = ctx.RepackPerMesh && ctx.MeshGroupCount(ctx.PreviewLod) > 1; @@ -1280,13 +1285,14 @@ void DrawStatusBar() GUILayout.Space(6); // ── Status info ── - var ee = ctx.ForLod(ctx.PreviewLod); + var ee = canvas.Entries(ctx); int tV = 0, tT = 0; foreach (var e in ee) { Mesh m = ctx.DMesh(e); if (m == null) continue; tV += m.vertexCount; tT += m.triangles.Length / 3; } string hoverInfo = canvas.HoverHitValid ? $" | UV:{canvas.UvSpot.x:F3},{canvas.UvSpot.y:F3} S:{canvas.HoveredShellId}" : (canvas.SpotMode ? " | UV:--" : string.Empty); - EditorGUILayout.LabelField("LOD" + ctx.PreviewLod + " " + ee.Count + "m V:" + tV + " T:" + tT + " " + (ctx.PreviewUvChannel == 0 ? "UV0" : "UV1") + hoverInfo, EditorStyles.miniLabel); + string what = canvas.EntriesOverride != null ? ActiveTool.ToolName + " result" : "LOD" + ctx.PreviewLod + " " + ee.Count + "m"; + EditorGUILayout.LabelField(what + " V:" + tV + " T:" + tT + " " + (ctx.PreviewUvChannel == 0 ? "UV0" : "UV1") + hoverInfo, EditorStyles.miniLabel); GUILayout.FlexibleSpace(); diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 3edd176b..2c174b46 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -251,7 +251,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken // The proxy shapes replace the voxelizer: one oriented box per renderer, // or a coarse voxel hull; materials and lighting still bake from the // captured geometry, projected onto the proxy downstream. - int trimmed = 0; + int trimmed = 0; bool trimGaveUp = false; node.voxel = await Task.Run(() => { if (shape == RemeshShape.BoundingBox) return captured.OrientedBoxes(); if (shape == RemeshShape.Hull) return Hull(captured, options, token); @@ -263,9 +263,12 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken foreach (var p in captured.positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } var extent = mx - mn; float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, options.voxelResolution); - return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed); + return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed, out trimGaveUp); }, token); if (node.voxel == null || node.voxel.TriangleCount == 0) throw new InvalidOperationException("The remesh produced no geometry."); + if (trimGaveUp) { UvtLog.Warn("[Remesh] " + (hierarchy ? node.name + ": " : "") + "Trim to source surface kept under a tenth of the remesh " + + "with the source's winding and with its inverse, so nothing was trimmed. The source winding is mixed beyond one flip, or the remesh sits " + + "more than two cells from it (raise the voxel resolution)."); } trimmedFaces += trimmed; sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index b7086e9c..6947f84c 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -14,7 +14,7 @@ namespace SashaRX.UnityMeshLab /// internal sealed class RemeshPreview : IDisposable { - internal enum View { Mesh, Uv, Maps } + internal enum View { Mesh, Maps } internal enum Stage { Source, Remesh, Simplified, Result } internal enum Channel { BaseColor, Normal, MetallicSmoothness, Occlusion, Emission } @@ -33,13 +33,13 @@ internal sealed class Data public RemeshSource source; } - static readonly string[] ViewNames = { "3D", "UV", "Maps" }; + static readonly string[] ViewNames = { "3D", "Maps" }; public Action RequestRepaint; View view; Stage stage = Stage.Result; Channel channel; - bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, uvTexture = true, uvTint = true; - Material surface, wire, lines; + bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView; + Material surface, wire; Mesh cageOuter, cageInner; int cageMeshId; string cageKey; RemeshSource cageSourceRef; TriangleBvh cageSourceBvh; RemeshBaker.Maps mapSource; @@ -51,11 +51,7 @@ public void Draw(Data data) { view = (View)GUILayout.Toolbar((int)view, ViewNames, EditorStyles.toolbarButton); EditorGUILayout.Space(2); - switch (view) { - case View.Mesh: DrawMesh(data); break; - case View.Uv: DrawUv(data); break; - default: DrawMaps(data); break; - } + if (view == View.Mesh) DrawMesh(data); else DrawMaps(data); } /// Drop cached per-mesh wireframes; call before destroying preview meshes. @@ -75,7 +71,6 @@ public void Dispose() Invalidate(); if (surface) Object.DestroyImmediate(surface); if (wire) Object.DestroyImmediate(wire); - if (lines) Object.DestroyImmediate(lines); } // ── 3D ── @@ -97,7 +92,12 @@ void DrawMesh(Data data) var mesh = data.meshes[(int)stage]; EditorGUILayout.LabelField(mesh ? $"{mesh.vertexCount:N0} vertices · {Triangles(mesh):N0} triangles" : "Run this stage to preview it.", EditorStyles.miniLabel); - EditorGUILayout.LabelField("Shown in the canvas's 3D view (UV | 3D switch at its bottom).", EditorStyles.centeredGreyMiniLabel); + var g = data.geometry; + if (g != null) { + string coverage = data.maps != null ? $" · {100.0 * data.maps.covered / ((double)data.maps.size * data.maps.size):0.#}% texels used" : ""; + EditorGUILayout.LabelField($"Atlas: {g.chartCount:N0} islands{coverage}", EditorStyles.miniLabel); + } + EditorGUILayout.LabelField("The canvas shows the stage in 3D and the result's atlas in UV (switch at its bottom).", EditorStyles.centeredGreyMiniLabel); if (GUI.changed) RequestRepaint?.Invoke(); } @@ -232,75 +232,6 @@ static long Triangles(Mesh mesh) // ── UV ── - void DrawUv(Data data) - { - using (new EditorGUILayout.HorizontalScope()) { - uvTexture = GUILayout.Toggle(uvTexture, "Base color", EditorStyles.miniButtonLeft); - uvTint = GUILayout.Toggle(uvTint, "Tint islands", EditorStyles.miniButtonRight); - } - var g = data.geometry; - Rect rect = GUILayoutUtility.GetAspectRect(1); - if (g == null) EditorGUILayout.LabelField("Run Normals & UV to preview the layout.", EditorStyles.miniLabel); - else { - string coverage = data.maps != null ? $" · {100.0 * data.maps.covered / ((double)data.maps.size * data.maps.size):0.#}% texels used" : ""; - EditorGUILayout.LabelField($"{g.chartCount:N0} islands · {g.indices.Length / 3:N0} triangles{coverage}", EditorStyles.miniLabel); - } - if (Event.current.type != EventType.Repaint) return; - EditorGUI.DrawRect(rect, new Color(0.12f, 0.12f, 0.12f)); - if (uvTexture && data.baseColor) GUI.DrawTexture(rect, data.baseColor, ScaleMode.StretchToFill, false); - if (g == null || !EnsureLines()) return; - GUI.BeginClip(rect); - GL.PushMatrix(); - lines.SetPass(0); - float w = rect.width, h = rect.height; - int triangles = g.indices.Length / 3; - if (uvTint && triangles <= 500000) { - GL.Begin(GL.TRIANGLES); - for (int f = 0; f < triangles; ++f) { - GL.Color(ChartColor(g.charts[g.indices[f * 3]])); - for (int k = 0; k < 3; ++k) { - var uv = g.uv[g.indices[f * 3 + k]]; - GL.Vertex3(uv.x * w, (1 - uv.y) * h, 0); - } - } - GL.End(); - } - if (triangles <= 500000) { - GL.Begin(GL.LINES); - GL.Color(new Color(1, 1, 1, 0.55f)); - for (int f = 0; f < triangles; ++f) - for (int k = 0; k < 3; ++k) { - var a = g.uv[g.indices[f * 3 + k]]; var b = g.uv[g.indices[f * 3 + (k + 1) % 3]]; - GL.Vertex3(a.x * w, (1 - a.y) * h, 0); GL.Vertex3(b.x * w, (1 - b.y) * h, 0); - } - GL.End(); - } - GL.PopMatrix(); - GUI.EndClip(); - } - - bool EnsureLines() - { - if (lines) return true; - var shader = Shader.Find("Hidden/Internal-Colored"); - if (!shader) return false; - lines = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - lines.SetInt("_SrcBlend", (int)BlendMode.SrcAlpha); - lines.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); - lines.SetInt("_Cull", (int)CullMode.Off); - lines.SetInt("_ZWrite", 0); - lines.SetInt("_ZTest", (int)CompareFunction.Always); - return true; - } - - static Color ChartColor(int chart) - { - uint h = unchecked((uint)chart * 2654435761u); - var color = Color.HSVToRGB((h & 0xffff) / 65535f, 0.55f, 0.95f); - color.a = 0.35f; - return color; - } - // ── Maps ── void DrawMaps(Data data) diff --git a/Editor/RemeshTrim.cs b/Editor/RemeshTrim.cs index 4ba9c0d8..b2b0e6de 100644 --- a/Editor/RemeshTrim.cs +++ b/Editor/RemeshTrim.cs @@ -7,8 +7,10 @@ namespace SashaRX.UnityMeshLab { /// /// Mask applied to the voxel remesh: the voxelizer closes every surface, so an open - /// source (a wall sheet, a roof plane, a curtain) comes back as a thin slab with a - /// front, a back and rims. A remesh face stays only when the source has a face near + /// source (a wall sheet, a roof plane, a curtain) comes back as a slab with a + /// front, a back and rims — and since the remesher fits its vertices onto the + /// input surface, the front and the back lie ON the sheet, a zero-thickness + /// double-sided surface. A remesh face stays only when the source has a face near /// it (within a couple of voxel cells) whose normal points the same way; the back /// side of a one-sided sheet and the slab's rims have none and go. Closed sources /// are left whole, and a source that is double-sided where it matters keeps both @@ -21,8 +23,15 @@ internal static class RemeshTrim internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, float maxDistance, CancellationToken token, out int removedFaces) + => Trim(mesh, sourcePositions, sourceIndices, maxDistance, token, out removedFaces, out _); + + /// gaveUp: neither the source's winding nor its inverse kept a tenth of + /// the remesh, so nothing was trimmed — the source is far from the remesh or + /// its winding is mixed beyond a single flip. + internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, + float maxDistance, CancellationToken token, out int removedFaces, out bool gaveUp) { - removedFaces = 0; + removedFaces = 0; gaveUp = false; int faces = mesh.indices.Length / 3; if (faces == 0 || sourceIndices.Length < 3) return mesh; var bvh = new TriangleBvh(sourcePositions, sourceIndices); @@ -34,23 +43,27 @@ internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vec for (int i = 0; i < sourceNormals.Length; ++i) sourceNormals[i] = -sourceNormals[i]; var flipped = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int keptFlipped); if (keptFlipped > kept) { keep = flipped; kept = keptFlipped; } - if (kept * 10 < faces) return mesh; + if (kept * 10 < faces) { gaveUp = true; return mesh; } } removedFaces = faces - kept; if (removedFaces == 0) return mesh; return Compact(mesh, keep, kept); } - // A face stays when a source face lies within reach that is parallel to it (either - // winding — the voxelizer's orientation convention need not match the source's) - // AND the face sits on that source face's front side: the slab's back lies behind - // the sheet, its rims are perpendicular to it, and both fail. + // A face stays when a source face lies within reach that points the SAME way + // (dot ≥ MinDot). Orientation is the only usable test: the remesher fits its + // output vertices onto the input surface, so the slab around a sheet is not a + // cell thick but collapses onto the sheet with its front and back faces + // coincident — a position test ("is the centroid behind the sheet") sees both + // at zero distance and keeps both, which is exactly the double-sided result + // that breaks the cage and the bake. The back face's normal is opposite to the + // sheet's, the rims are perpendicular; both fail the alignment and go. A source + // wound inside out is handled by the caller's flipped retry. static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, float maxDistance, CancellationToken token, out int kept) { int faces = mesh.indices.Length / 3; var keep = new bool[faces]; int count = 0; - float behindTolerance = maxDistance * 0.1f; Parallel.For(0, faces, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, f => { int a = mesh.indices[f * 3], b = mesh.indices[f * 3 + 1], c = mesh.indices[f * 3 + 2]; Vector3 pa = mesh.positions[a], pb = mesh.positions[b], pc = mesh.positions[c]; @@ -58,12 +71,8 @@ static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] if (normal.sqrMagnitude < 1e-30f) return; // degenerate: drop normal.Normalize(); Vector3 centroid = (pa + pb + pc) / 3f; - var same = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance); - var opposite = bvh.FindNearestNormalFiltered(centroid, -normal, sourceNormals, MinDot, maxDistance); - var hit = same.triangleIndex < 0 ? opposite : opposite.triangleIndex < 0 ? same : (same.distSq <= opposite.distSq ? same : opposite); + var hit = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance); if (hit.triangleIndex < 0) return; - Vector3 sourceNormal = sourceNormals[hit.triangleIndex]; - if (Vector3.Dot(centroid - hit.point, sourceNormal) < -behindTolerance) return; // behind the sheet keep[f] = true; Interlocked.Increment(ref count); }); kept = count; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index adada32c..da3b018d 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -11,7 +11,7 @@ namespace SashaRX.UnityMeshLab /// right-sidebar previews and the save action. The stage work itself lives in /// , the export in . /// - public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar, IUvTool3D + public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar, IUvTool3D, IUvToolUvContent { public string ToolName => "Remesh & Bake"; public string ToolId => "remesh_bake"; @@ -36,6 +36,10 @@ public sealed class RemeshBakeTool : IUvTool, IUvToolRightSidebar, IUvTool3D readonly RemeshPreview previews = new RemeshPreview(); readonly RemeshPreview.Data previewData = new RemeshPreview.Data(); string saveStatus; + UvToolContext ctx; UvCanvasView canvas; + // The result mesh as a canvas entry: one stable instance so the canvas's hover + // and selection survive repaints; its mesh follows the pipeline. + readonly MeshEntry resultEntry = new MeshEntry { include = true }; internal GameObject Source => source; public RemeshBakeTool() @@ -50,8 +54,9 @@ public RemeshBakeTool() internal void SaveSettings() => EditorPrefs.SetString(SettingsKey, JsonUtility.ToJson(settings)); - public void OnActivate(UvToolContext context, UvCanvasView canvas) + public void OnActivate(UvToolContext context, UvCanvasView canvasView) { + ctx = context; canvas = canvasView; FollowSelection(); Selection.selectionChanged -= FollowSelection; Selection.selectionChanged += FollowSelection; @@ -99,7 +104,35 @@ internal void FollowSelection() public void OnRefresh() { } public void OnDrawToolbarExtra() { } public void OnDrawStatusBar() { GUILayout.Label(Status, EditorStyles.miniLabel); } - public IEnumerable GetFillModes() => null; + // The canvas's UV mode shows the result's atlas once Normals & UV ran: the same + // shells, wire, border and spot picking as any mesh, over the baked base color + // (checker when the canvas asks for it). "Islands" tints every UV shell. + public IEnumerable GetFillModes() + { + yield return new UvCanvasView.FillModeEntry { name = "Islands", drawCallback = DrawFillIslands }; + yield return new UvCanvasView.FillModeEntry { name = "None", drawCallback = null }; + } + + public bool GetUvContent(List entries) + { + var mesh = pipeline.ResultMesh; + if (!mesh) return false; + resultEntry.originalMesh = resultEntry.fbxMesh = mesh; + resultEntry.previewTexture = pipeline.BaseColorPreview; + entries.Add(resultEntry); + return true; + } + + void DrawFillIslands(UvCanvasView cv, float cx, float cy, float sz, Mesh mesh, MeshEntry entry) + { + if (ctx == null) return; + var uvs = cv.RdUvCached(mesh, ctx.PreviewUvChannel); + var tri = cv.GetTrianglesCached(mesh); + if (uvs == null || tri == null) return; + int hover = cv.HasHoveredShell && cv.HoveredShell.meshEntry == entry ? cv.HoveredShell.shellId : -1; + int selected = cv.HasSelectedShell && cv.SelectedShell.meshEntry == entry ? cv.SelectedShell.shellId : -1; + cv.GlFillSh(ctx, cx, cy, sz, mesh, tri.Length / 3, uvs.Length, entry, hover, selected, null); + } public void OnSceneGUI(SceneView sceneView) { if (!highlightCapture || !source) return; diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 0b2dfcb5..89a45345 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -389,13 +389,31 @@ public void TrimKeepsTheSideTheSourceHasAndDropsTheSlabsBackAndRims() Assert.AreEqual(2, trimmed.TriangleCount); Assert.AreEqual(4, trimmed.positions.Length); foreach (var v in trimmed.positions) Assert.That(v.z, Is.EqualTo(-0.025f).Within(1e-5f)); - // The same slab with its winding inverted keeps the same side: the remesh's own - // orientation convention does not decide, the source's does. + // Orientation decides, not position: the remesher fits both slab faces onto the + // sheet itself, so only the face whose normal agrees with the source can be + // told apart. The same slab wound inside out keeps the face at +z whose + // (inverted) normal points -z like the source. Cube(out var pi, out var triInverted, true); for (int i = 0; i < pi.Length; ++i) pi[i] = new Vector3(pi[i].x, pi[i].y, pi[i].z * 0.05f - 0.025f); var inverted = RemeshTrim.Trim(new RemeshNative.IndexedMesh { positions = pi, indices = triInverted }, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed); Assert.AreEqual(10, removed); - foreach (var v in inverted.positions) Assert.That(v.z, Is.EqualTo(-0.025f).Within(1e-5f)); + foreach (var v in inverted.positions) Assert.That(v.z, Is.EqualTo(0.025f).Within(1e-5f)); + for (int f = 0; f < inverted.indices.Length; f += 3) { + var fn = Vector3.Cross(inverted.positions[inverted.indices[f + 1]] - inverted.positions[inverted.indices[f]], + inverted.positions[inverted.indices[f + 2]] - inverted.positions[inverted.indices[f]]).normalized; + Assert.That(Vector3.Dot(fn, Vector3.back), Is.GreaterThan(0.99f)); + } + // A zero-thickness double-sided sheet — what the remesher really returns for an + // open source — keeps exactly the winding that matches the source. + var flat = new RemeshNative.IndexedMesh { positions = (Vector3[])sourcePositions.Clone(), + indices = new[] { 0, 2, 1, 0, 3, 2, 0, 1, 2, 0, 2, 3 } }; + var oneSided = RemeshTrim.Trim(flat, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed); + Assert.AreEqual(2, removed); Assert.AreEqual(2, oneSided.TriangleCount); Assert.AreEqual(4, oneSided.positions.Length); + for (int f = 0; f < oneSided.indices.Length; f += 3) { + var fn = Vector3.Cross(oneSided.positions[oneSided.indices[f + 1]] - oneSided.positions[oneSided.indices[f]], + oneSided.positions[oneSided.indices[f + 2]] - oneSided.positions[oneSided.indices[f]]).normalized; + Assert.That(Vector3.Dot(fn, Vector3.back), Is.GreaterThan(0.99f)); + } // A source facing +z keeps the +z side instead. var flippedSource = RemeshTrim.Trim(slab, sourcePositions, new[] { 0, 1, 2, 0, 2, 3 }, 0.1f, CancellationToken.None, out removed); Assert.AreEqual(10, removed); From 6ecf4dbe43a898df69ce9b719dc6260d1e92129c Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 21:50:34 +0000 Subject: [PATCH 082/130] feat(remesh): two-sided source faces through trim, bake filter and probe A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too: the back of such a sheet is surface the player sees, not slab thickness to trim and not a wall the bake should refuse to sample. "Source backfaces" (remesh stage) decides which faces count from behind: From materials reads each captured material's cull mode property or double-sided switch, Always covers a Cull Off written into the shader itself, Never keeps only fronts. Two-sided faces keep both sides of the remesh sheet around them through the trim (rims still go), pass the bake's front-face filter from either side on the ray and the nearest fallback, and cast no vote in the winding probe. The BVH's filtered queries take an optional per-face either-side mask. RemeshDiag reports the two-sided face count; both stage keys cover the setting. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 17 +++++++++--- Editor/RemeshBaker.cs | 25 ++++++++++++------ Editor/RemeshPipeline.cs | 10 ++++--- Editor/RemeshSettings.cs | 18 +++++++++++++ Editor/RemeshSource.cs | 43 +++++++++++++++++++++++++++++-- Editor/RemeshTrim.cs | 18 ++++++++----- Editor/Tools/RemeshBakeTool.cs | 4 +++ Editor/TriangleBvh.cs | 37 ++++++++++++++------------ Tests/Editor/RemeshBakeTests.cs | 25 ++++++++++++++++++ 10 files changed, 158 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d84292e0..fca87417 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **Remesh & Bake: two-sided sources.** A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too, so the back of such a sheet is surface the player sees — not slab thickness to trim, and not a wall the bake should refuse to sample. **Source backfaces** (remesh stage) decides which source faces count from behind: *From materials* (default) reads each captured material's cull mode property (`_Cull`, `_CullMode` = Off) or double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`), *Always* treats every face as two-sided (for a `Cull Off` baked into the shader, which no property reveals), *Never* keeps only fronts. Two-sided faces keep both sides of the remesh sheet around them through *Trim to source surface* (the rims still go), pass the bake's front-face filter from either side (ray and nearest fallback alike) and cast no vote in the winding probe. RemeshDiag reports the two-sided face count; both stage keys cover the setting. - **Remesh & Bake: a sided, fitted projection cage.** The cage was one direction per welded position: the area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet — a wall of a non-closed source that the voxel remesh turned into a one-cell slab and the simplifier collapsed to zero thickness, both windings on the same vertices — the two sides summed to nothing and the normalized noise sent rays off at up to 180° from their face, with the cage preview spiking across the whole model and most texels baking from the wrong side. The cage is now built per face corner and per **side**: corners at one position are clustered by the hemisphere their face normals share (within 120°), each cluster is averaged (face area × corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back; every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. **Cage smoothing** (bake stage, 0–10, default 2) exposes the passes. **Fit cage to source** (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1× and 8× the projection distance and smooths it over the sides, so the rays reach as far as the decimation drifted and no further; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach, one line per welded side pair (a double-sided sheet shows both shells), rebuilt live from distance, smoothing, fit and source. RemeshDiag reports the side and double-sided position counts and the longest reach; the bake staleness key covers the new settings. - **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch: a segmented pill at the bottom centre with the active side in the accent colour, present in every canvas state (also when the UV canvas has nothing to draw), remembered across sessions, and flipped with **Tab** while the mouse is over the canvas. The 3D side looks like a scene view: a blue-grey background, a fading ground grid under the content (Grid toggle), the pivot's axes, and the shading modes as a segmented row along the top of the canvas. The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 863b6eab..a21ffa79 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -88,7 +88,16 @@ Before the UV stage the canvas shows the selected model as usual. wound inside out is judged by its flipped normals; when neither reading keeps a tenth of the remesh, nothing is trimmed and a warning says so. The status reports how many faces went. Turn it off to keep the slab, for instance with - *Two-sided shell*. + *Two-sided shell*. **Source backfaces** decides which source faces count from + behind as well: *From materials* (default) marks a material two-sided when + its cull mode property (`_Cull`, `_CullMode`) is Off or a double-sided switch + (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`) is on; *Always* treats + every face as two-sided (for a `Cull Off` written into the shader itself, + which no property reveals); *Never* keeps only the front of every face. The + trim keeps both sides of the sheet around a two-sided face (only the rims + go), the bake's front-face filter accepts such a face from either side, and + the winding probe ignores it. The setting marks both the remesh and the + bake stage stale. 3. **Simplify** — quadric simplification of the voxel mesh. It collapses the cheapest edges first, so with *Regularize = None* flat areas reduce to a few large triangles while curved or detailed areas keep their density. *Maximum @@ -169,7 +178,9 @@ Before the UV stage the canvas shows the selected model as usual. source from OUTSIDE — rays cast from a sphere around it toward its centre meet an outer surface first, and that triangle's winding against the ray gives the answer whatever the target's density — and it stays off when - fewer than 70% of the rays agree (open sheets, mixed winding). The 3D view's + fewer than 70% of the rays agree (open sheets, mixed winding). Two-sided + source faces (see *Source backfaces*) pass the filter from either side and + cast no vote in the probe. The 3D view's **Cage** toggle (the right sidebar's 3D panel drives the canvas's shared 3D view — switch the canvas to **3D** at its bottom centre) draws the projection limits — every corner pushed ±its reach along its cage direction, one line @@ -249,7 +260,7 @@ Before the UV stage the canvas shows the selected model as usual. and double-sided positions, vertices whose normal sits >30° off their cage (max deviation), the longest fitted reach as a multiple of the projection distance, nearest-fallback projection samples, - front-face filter state and the normal map's tilt statistics (mean/max angle + front-face filter state, two-sided source face count and the normal map's tilt statistics (mean/max angle from flat, texels >45°); a map dominated by extreme tilts additionally raises a warning. 6. **Save**. The output lands in a `remesh` subfolder next to the source model's diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 828db3d8..b70e21b8 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -25,6 +25,7 @@ internal sealed class Maps public int cageSides, foldedPositions; public float maxOneSidedDeg, meanTiltDeg, maxTiltDeg, maxReachRatio; public bool facingFilter; + public int twoSidedFaces; // source faces whose back counts as surface (two-sided materials) public bool beauty; } @@ -77,13 +78,19 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // is not guaranteed to be outward, so a probe orients the normals first; // without a clear majority the filter stays off and the bake behaves exactly // as before. + // Two-sided source faces (Cull Off / double-sided materials, or the setting) + // are surface from behind too: they pass the filter from either side and cast + // no vote in the winding probe. + var twoSided = source.TwoSidedFaces(settings.sourceBackfaces); + if (twoSided != null) foreach (bool two in twoSided) if (two) ++result.twoSidedFaces; var faceNormals = FaceNormals(source.positions, source.indices); - int winding = ProbeWinding(bvh, source.positions, faceNormals); + int winding = ProbeWinding(bvh, source.positions, faceNormals, twoSided); bool facingFilter = winding != 0; if (winding < 0) for (int f = 0; f < faceNormals.Length; ++f) faceNormals[f] = -faceNormals[f]; result.facingFilter = facingFilter; Vector3[] facing = facingFilter ? faceNormals : null; + bool[] eitherSide = facingFilter ? twoSided : null; int misses = 0, rayFallbacks = 0, empties = 0; var emptyTexels = proxy ? new bool[count] : null; Parallel.For(0, size, new ParallelOptions { CancellationToken = token, @@ -112,7 +119,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, cage, bvh, facing, beauty, face, w, + if (!Project(source, target, tangents, cage, bvh, facing, eitherSide, beauty, face, w, proxy, faceDirs, depth, settings.vertexColorTint, out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; if (rayFallback) Interlocked.Increment(ref rayFallbacks); @@ -221,7 +228,7 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto // proxy: the ray starts just outside the proxy face and travels inward along the // face normal through the whole proxy (depth), first hit wins, no fallback. static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Cage cage, - TriangleBvh bvh, Vector3[] facing, RemeshBeauty beauty, int face, Vector3 w, + TriangleBvh bvh, Vector3[] facing, bool[] eitherSide, RemeshBeauty beauty, int face, Vector3 w, bool proxy, Vector3[] faceDirs, float depth, bool vertexTint, out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) { @@ -235,12 +242,12 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] Vector3 dir = faceDirs[face]; float eps = depth * 1e-4f; var hit = facing != null - ? bvh.RaycastFacingFiltered(p + dir * eps, -dir, depth, facing) + ? bvh.RaycastFacingFiltered(p + dir * eps, -dir, depth, facing, eitherSide) : bvh.Raycast(p + dir * eps, -dir, depth); sourceFace = hit.triangleIndex; sw = hit.barycentric; if (sourceFace < 0) { var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, dir, facing, 0f, depth) + ? bvh.FindNearestNormalFiltered(p, dir, facing, 0f, depth, eitherSide) : bvh.FindNearest(p, depth); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; rayFallback = sourceFace >= 0; @@ -250,14 +257,14 @@ static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] Vector3 rayN = cage.Direction(face, w); float reach = cage.Reach(face, w); var hit = facing != null - ? bvh.RaycastFacingFiltered(p + rayN * reach, -rayN, reach * 2, facing) + ? bvh.RaycastFacingFiltered(p + rayN * reach, -rayN, reach * 2, facing, eitherSide) : bvh.Raycast(p + rayN * reach, -rayN, reach * 2); sourceFace = hit.triangleIndex; sw = hit.barycentric; if (sourceFace < 0) { // Both fallbacks stay bounded by the cage reach: an unbounded // filtered query would smear an unrelated far part across a gap. var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, reach) + ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, reach, eitherSide) : bvh.FindNearest(p, reach); sourceFace = nearest.triangleIndex; sw = nearest.barycentric; rayFallback = true; @@ -606,8 +613,9 @@ static void Basis(Vector3 n, Vector4 tangent, out Vector3 t, out Vector3 b) /// cage, which falls apart once the target is a 100-triangle proxy of a 2000- /// triangle block). +1 outward, -1 inverted, 0 when fewer than 8 rays hit or /// under 70% agree (open sheets, mixed winding): the caller leaves the filter off. + /// Two-sided faces (twoSided, optional) are oriented either way and cast no vote. /// - internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] faceNormals) + internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] faceNormals, bool[] twoSided = null) { if (positions.Length == 0) return 0; Vector3 mn = positions[0], mx = positions[0]; @@ -623,6 +631,7 @@ internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] var dir = new Vector3(Mathf.Cos(a) * r, y, Mathf.Sin(a) * r); var hit = bvh.Raycast(centre + dir * (radius * 2f), -dir, radius * 4f); if (hit.triangleIndex < 0) continue; + if (twoSided != null && hit.triangleIndex < twoSided.Length && twoSided[hit.triangleIndex]) continue; // The ray travels along -dir; a triangle facing the ray origin has its // winding normal pointing back along +dir. if (Vector3.Dot(faceNormals[hit.triangleIndex], dir) > 0f) ++outward; else ++inward; diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 2c174b46..8fd3cb02 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -123,12 +123,12 @@ public static string Key(Stage stage, RemeshSettings s, GameObject source) { switch (stage) { case Stage.Remesh: return $"{(source ? source.GetInstanceID() : 0)}|{s.voxelResolution}|{s.solve}|{s.shell}|{s.lod0Only}|{s.keepHierarchy}|" + - $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minRodVoxels:F3}|{s.voxelResolution}|{s.trimToSource}"; + $"{s.sourceShape}|{s.hullResolution}|{s.hullTriangles}|{s.minPartSize:F4}|{s.minRodVoxels:F3}|{s.voxelResolution}|{s.trimToSource}|{s.sourceBackfaces}"; case Stage.Simplify: return $"{s.simplify}|{s.targetTriangles}|{s.maximumError}|{s.regularize}|{s.preserveFolds}|{s.pruneSmallParts}"; case Stage.Unwrap: return $"{s.hardEdges}|{s.normalCrease}|{s.normalSmoothing}|{s.normalWeighting}|{s.textureResolution}|{s.padding}|{s.chartMaxCost}|" + $"{s.chartNormalDeviation}|{s.chartNormalSeam}|{s.chartStraightness}|{s.chartRoundness}|{s.chartIterations}|" + $"{s.maxChartArea}|{s.maxChartBoundary}|{s.packRotate}|{s.packBlockAlign}|{s.packBruteForce}"; - default: return $"{s.bakeMode}|{s.projectionDistance}|{s.cageSmoothing:F3}|{s.cageFit}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}|{s.proxyDepth:F4}"; + default: return $"{s.bakeMode}|{s.projectionDistance}|{s.cageSmoothing:F3}|{s.cageFit}|{s.bakeSamples}|{s.transferVertexColor}|{s.transferVertexAlpha}|{s.vertexColorTint}|{s.proxyDepth:F4}|{s.sourceBackfaces}"; } } @@ -263,7 +263,8 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken foreach (var p in captured.positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } var extent = mx - mn; float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, options.voxelResolution); - return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed, out trimGaveUp); + return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed, out trimGaveUp, + captured.TwoSidedFaces(options.sourceBackfaces)); }, token); if (node.voxel == null || node.voxel.TriangleCount == 0) throw new InvalidOperationException("The remesh produced no geometry."); if (trimGaveUp) { UvtLog.Warn("[Remesh] " + (hierarchy ? node.name + ": " : "") + "Trim to source surface kept under a tenth of the remesh " + @@ -410,7 +411,8 @@ static void LogDiagnostics(Node node, RemeshShape shape) $"cage: {baked.weldedPositions:N0} welded positions ({baked.splitCopies:N0} split copies), {baked.cageSides:N0} sides " + $"({baked.foldedPositions:N0} double-sided positions), {baked.oneSidedNormals:N0} vertices off their cage by >30° (max {baked.maxOneSidedDeg:F0}°), " + $"reach up to {baked.maxReachRatio:F1}× the projection distance, {baked.zeroNormals:N0} zero normals; " + - $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}; " + + $"projection: {baked.rayFallbacks:N0} nearest-fallback samples, {baked.misses:N0} missed texels, front-face filter {(baked.facingFilter ? "on" : "off")}, " + + $"{baked.twoSidedFaces:N0} two-sided source faces; " + $"normal map tilt: mean {baked.meanTiltDeg:F1}° / max {baked.maxTiltDeg:F0}°, {baked.loudTexels:N0} texels >45°; " + $"bounds diagonal: source {captured.diagonal:F3} / target {targetDiagonal:F3} (ratio {scaleRatio:F2})"); if (baked.zeroNormals > 0) diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index ab8a84eb..42e8e0cb 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -47,6 +47,21 @@ public enum RemeshBakeMode Beauty, } + /// + /// Whether the source's back faces count as surface. A material that renders + /// both sides (Cull Off, double-sided) shows its sheet from behind too, so the + /// remesh keeps both sides of it and the bake samples it from either side. + /// + public enum RemeshBackfaces + { + /// Per material: two-sided when its cull mode or double-sided switch says so. + FromMaterials, + /// Every source face is two-sided. + Always, + /// Only the front of every source face counts. + Never, + } + /// What the remesh stage builds from the captured source. public enum RemeshShape { @@ -74,6 +89,9 @@ public sealed class RemeshSettings // voxelizer closes an open sheet into a slab, and its back side and rims have no // source face nearby with an aligned normal. Closed sources are left whole. public bool trimToSource = true; + // Which source faces count from behind as well (trim keeps both sides of them, + // the bake's front-face filter accepts either side). + public RemeshBackfaces sourceBackfaces = RemeshBackfaces.FromMaterials; // Source capture: skip meshes named Name_LOD1 and higher (LODGroups already // contribute LOD0 only). public bool lod0Only = true; diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 6b453e0c..134dd818 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -94,6 +94,43 @@ internal sealed class Surface public Color tint, emissionTint; public float metallic, smoothness, normalScale, aoStrength; public bool smoothnessFromAlbedo; + // The material renders both sides (Cull Off / double-sided), so its back + // faces are surface the player sees. + public bool twoSided; + } + + /// + /// Per source face, whether its back counts as surface too; null when no face + /// does. FromMaterials reads the captured materials' cull / double-sided state. + /// + public bool[] TwoSidedFaces(RemeshBackfaces mode) + { + if (mode == RemeshBackfaces.Never || faceMaterials == null) return null; + var result = new bool[faceMaterials.Length]; + bool any = false; + for (int f = 0; f < result.Length; ++f) { + bool two = mode == RemeshBackfaces.Always || + (materials != null && faceMaterials[f] >= 0 && faceMaterials[f] < materials.Length && materials[faceMaterials[f]].twoSided); + result[f] = two; any |= two; + } + return any ? result : null; + } + + /// + /// Whether a material renders its back faces: a cull-mode property set to Off + /// (Standard, URP and most master shaders expose `_Cull` or `_CullMode`), or + /// a double-sided switch (HDRP `_DoubleSidedEnable`, `_TwoSided`, + /// `_DoubleSided`). A `Cull Off` baked into the shader without a property is + /// invisible from here — the remesh stage's Source backfaces = Always covers it. + /// + internal static bool IsTwoSided(Material m) + { + if (!m) return false; + foreach (var name in new[] { "_Cull", "_CullMode", "_CullingMode" }) + if (m.HasProperty(name) && Mathf.RoundToInt(m.GetFloat(name)) == (int)UnityEngine.Rendering.CullMode.Off) return true; + foreach (var name in new[] { "_DoubleSidedEnable", "_TwoSided", "_DoubleSided", "_DoubleSidedMode" }) + if (m.HasProperty(name) && m.GetFloat(name) > 0.5f) return true; + return false; } /// The whole subtree under root welded into one snapshot in root-local space. @@ -656,7 +693,8 @@ public Surface Capture(Material m) metallic = specular ? 0 : m.GetFloat("_Metallic"), smoothness = m.GetFloat(urp ? "_Smoothness" : (metal || m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") ? "_GlossMapScale" : "_Glossiness")), normalScale = m.GetFloat("_BumpScale"), aoStrength = m.GetFloat("_OcclusionStrength"), - smoothnessFromAlbedo = m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A") + smoothnessFromAlbedo = m.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A"), + twoSided = IsTwoSided(m) }; ShareBaseTransform(surface); return surface; @@ -680,7 +718,8 @@ Surface CaptureGeneric(Material m, string shaderName) tint = ColorOr(m, Color.white, "_BaseColor", "_Color").linear, emissionTint = emissive ? m.GetColor("_EmissionColor").linear : Color.black, metallic = FloatOr(m, 0, "_Metallic"), smoothness = FloatOr(m, 0.5f, "_Smoothness", "_Glossiness"), - normalScale = FloatOr(m, 1, "_BumpScale", "_NormalScale"), aoStrength = FloatOr(m, 1, "_OcclusionStrength") + normalScale = FloatOr(m, 1, "_BumpScale", "_NormalScale"), aoStrength = FloatOr(m, 1, "_OcclusionStrength"), + twoSided = IsTwoSided(m) }; // Unknown shaders get no shared base transform: each map keeps the tiling // and offset its own property carries (Read captured them), since nothing diff --git a/Editor/RemeshTrim.cs b/Editor/RemeshTrim.cs index b2b0e6de..b80dbb98 100644 --- a/Editor/RemeshTrim.cs +++ b/Editor/RemeshTrim.cs @@ -27,21 +27,23 @@ internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vec /// gaveUp: neither the source's winding nor its inverse kept a tenth of /// the remesh, so nothing was trimmed — the source is far from the remesh or - /// its winding is mixed beyond a single flip. + /// its winding is mixed beyond a single flip. sourceTwoSided (optional, per + /// source face): faces whose back counts as surface too (two-sided materials), + /// so both sides of the sheet around them stay. internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, - float maxDistance, CancellationToken token, out int removedFaces, out bool gaveUp) + float maxDistance, CancellationToken token, out int removedFaces, out bool gaveUp, bool[] sourceTwoSided = null) { removedFaces = 0; gaveUp = false; int faces = mesh.indices.Length / 3; if (faces == 0 || sourceIndices.Length < 3) return mesh; var bvh = new TriangleBvh(sourcePositions, sourceIndices); var sourceNormals = FaceNormals(sourcePositions, sourceIndices); - var keep = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int kept); + var keep = Classify(mesh, bvh, sourceNormals, sourceTwoSided, maxDistance, token, out int kept); // A source wound inside out would reject everything; judge it by its flipped // normals instead, and give up (keep all) when neither reading keeps a tenth. if (kept * 10 < faces) { for (int i = 0; i < sourceNormals.Length; ++i) sourceNormals[i] = -sourceNormals[i]; - var flipped = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int keptFlipped); + var flipped = Classify(mesh, bvh, sourceNormals, sourceTwoSided, maxDistance, token, out int keptFlipped); if (keptFlipped > kept) { keep = flipped; kept = keptFlipped; } if (kept * 10 < faces) { gaveUp = true; return mesh; } } @@ -58,8 +60,10 @@ internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vec // at zero distance and keeps both, which is exactly the double-sided result // that breaks the cage and the bake. The back face's normal is opposite to the // sheet's, the rims are perpendicular; both fail the alignment and go. A source - // wound inside out is handled by the caller's flipped retry. - static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, float maxDistance, CancellationToken token, out int kept) + // wound inside out is handled by the caller's flipped retry. A two-sided source + // face passes with |dot|: both sides of the sheet around it are surface the + // player sees, only the rims go. + static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, bool[] twoSided, float maxDistance, CancellationToken token, out int kept) { int faces = mesh.indices.Length / 3; var keep = new bool[faces]; @@ -71,7 +75,7 @@ static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] if (normal.sqrMagnitude < 1e-30f) return; // degenerate: drop normal.Normalize(); Vector3 centroid = (pa + pb + pc) / 3f; - var hit = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance); + var hit = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance, twoSided); if (hit.triangleIndex < 0) return; keep[f] = true; Interlocked.Increment(ref count); }); diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index da3b018d..591c3df3 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -241,6 +241,10 @@ public void OnDrawSidebar() "plane, a curtain) into a thin slab; its back side and rims have no source face nearby with an aligned normal and go. " + "Closed sources are left whole. Turn off to keep the slab, e.g. with Two-sided shell."), settings.trimToSource); } + settings.sourceBackfaces = (RemeshBackfaces)EditorGUILayout.EnumPopup(new GUIContent("Source backfaces", + "Whether the source's back faces count as surface. From materials: two-sided when a material's cull mode is Off or its double-sided " + + "switch is on (a Cull Off written into the shader itself is not detectable — use Always). Two-sided faces keep both sides of their " + + "sheet through the trim and project from either side in the bake; Never keeps only the front of every face."), settings.sourceBackfaces); StageButton(RemeshPipeline.Stage.Remesh, "Remesh"); } if (StageHeader(RemeshPipeline.Stage.Simplify)) { diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index 909620ec..1bbff231 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -71,12 +71,14 @@ public HitResult FindNearestNormalFiltered(Vector3 queryPoint, Vector3 queryNorm Vector3[] faceNormals, float normalDotMin) => FindNearestNormalFiltered(queryPoint, queryNormal, faceNormals, normalDotMin, float.MaxValue); - /// Normal-filtered nearest triangle within maxDist; triangleIndex -1 when none qualifies. + /// Normal-filtered nearest triangle within maxDist; triangleIndex -1 when none qualifies. + /// eitherSide (optional, per face): a two-sided face passes the test with |dot|, + /// its back counting as front. public HitResult FindNearestNormalFiltered(Vector3 queryPoint, Vector3 queryNormal, - Vector3[] faceNormals, float normalDotMin, float maxDist) + Vector3[] faceNormals, float normalDotMin, float maxDist, bool[] eitherSide = null) { var best = new HitResult { triangleIndex = -1, distSq = maxDist >= float.MaxValue ? float.MaxValue : maxDist * maxDist }; - FindNearestNormFiltRecursive(0, queryPoint, queryNormal, faceNormals, normalDotMin, ref best); + FindNearestNormFiltRecursive(0, queryPoint, queryNormal, faceNormals, normalDotMin, eitherSide, ref best); return best; } @@ -107,10 +109,10 @@ public RayHit Raycast(Vector3 origin, Vector3 direction, float maxDist) /// pierces the wall and samples the far side's texture. /// faceNormals is indexed by local face index (same as returned triangleIndex). /// - public RayHit RaycastFacingFiltered(Vector3 origin, Vector3 direction, float maxDist, Vector3[] faceNormals) + public RayHit RaycastFacingFiltered(Vector3 origin, Vector3 direction, float maxDist, Vector3[] faceNormals, bool[] eitherSide = null) { var best = new RayHit { triangleIndex = -1, t = maxDist }; - RaycastFacingRecursive(0, origin, direction, faceNormals, ref best); + RaycastFacingRecursive(0, origin, direction, faceNormals, eitherSide, ref best); return best; } @@ -260,7 +262,7 @@ void FindNearestRecursive(int nodeIdx, Vector3 q, ref HitResult best) // ─── Normal-filtered nearest-point query ─── void FindNearestNormFiltRecursive(int nodeIdx, Vector3 q, Vector3 qNrm, - Vector3[] fNrm, float dotMin, ref HitResult best) + Vector3[] fNrm, float dotMin, bool[] eitherSide, ref HitResult best) { ref Node node = ref nodes[nodeIdx]; @@ -272,8 +274,11 @@ void FindNearestNormFiltRecursive(int nodeIdx, Vector3 q, Vector3 qNrm, for (int i = node.triStart; i < node.triStart + node.triCount; i++) { int f = triIndices[i]; - if (f < fNrm.Length && Vector3.Dot(fNrm[f], qNrm) < dotMin) - continue; + if (f < fNrm.Length) { + float dot = Vector3.Dot(fNrm[f], qNrm); + if (eitherSide != null && f < eitherSide.Length && eitherSide[f]) dot = Mathf.Abs(dot); + if (dot < dotMin) continue; + } int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; Vector3 closest = ClosestPointOnTriangle(q, verts[i0], verts[i1], verts[i2], @@ -295,13 +300,13 @@ void FindNearestNormFiltRecursive(int nodeIdx, Vector3 q, Vector3 qNrm, if (dL < dR) { - FindNearestNormFiltRecursive(node.left, q, qNrm, fNrm, dotMin, ref best); - FindNearestNormFiltRecursive(node.right, q, qNrm, fNrm, dotMin, ref best); + FindNearestNormFiltRecursive(node.left, q, qNrm, fNrm, dotMin, eitherSide, ref best); + FindNearestNormFiltRecursive(node.right, q, qNrm, fNrm, dotMin, eitherSide, ref best); } else { - FindNearestNormFiltRecursive(node.right, q, qNrm, fNrm, dotMin, ref best); - FindNearestNormFiltRecursive(node.left, q, qNrm, fNrm, dotMin, ref best); + FindNearestNormFiltRecursive(node.right, q, qNrm, fNrm, dotMin, eitherSide, ref best); + FindNearestNormFiltRecursive(node.left, q, qNrm, fNrm, dotMin, eitherSide, ref best); } } @@ -340,7 +345,7 @@ void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) if (second >= 0) RaycastRecursive(second, origin, dir, ref best); } - void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] fNrm, ref RayHit best) + void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] fNrm, bool[] eitherSide, ref RayHit best) { ref Node node = ref nodes[nodeIdx]; if (!RayEntersAabb(origin, dir, node.bMin, node.bMax, best.t, out _)) @@ -351,7 +356,7 @@ void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] for (int i = node.triStart; i < node.triStart + node.triCount; i++) { int f = triIndices[i]; - if (Vector3.Dot(fNrm[f], dir) > 0f) continue; // facing away from the ray origin + if (Vector3.Dot(fNrm[f], dir) > 0f && !(eitherSide != null && f < eitherSide.Length && eitherSide[f])) continue; // facing away from the ray origin int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; if (RayTriangleIntersect(origin, dir, verts[i0], verts[i1], verts[i2], out float t, out float u, out float v) @@ -366,8 +371,8 @@ void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] } OrderChildren(node, origin, dir, best.t, out int first, out int second); - if (first >= 0) RaycastFacingRecursive(first, origin, dir, fNrm, ref best); - if (second >= 0) RaycastFacingRecursive(second, origin, dir, fNrm, ref best); + if (first >= 0) RaycastFacingRecursive(first, origin, dir, fNrm, eitherSide, ref best); + if (second >= 0) RaycastFacingRecursive(second, origin, dir, fNrm, eitherSide, ref best); } // The children the ray enters, nearer entry first; -1 for a child the ray misses diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 89a45345..604184ea 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -421,6 +421,31 @@ public void TrimKeepsTheSideTheSourceHasAndDropsTheSlabsBackAndRims() // A closed source keeps the whole remesh: the slab against a copy of itself. var whole = RemeshTrim.Trim(slab, p, tri, 0.1f, CancellationToken.None, out removed); Assert.AreEqual(0, removed); Assert.AreEqual(12, whole.TriangleCount); + // A two-sided source (Cull Off material) is surface from behind too: both + // sides of the slab stay, only the four rims (8 faces) go; the flat + // double-sided sheet is kept whole. + var twoSided = new[] { true, true }; + var both = RemeshTrim.Trim(slab, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed, out _, twoSided); + Assert.AreEqual(8, removed); Assert.AreEqual(4, both.TriangleCount); + RemeshTrim.Trim(flat, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed, out _, twoSided); + Assert.AreEqual(0, removed); + } + [Test] + public void TwoSidedFacesFollowTheMaterialsOrTheSetting() + { + var source = Source(); + Assert.IsNull(source.TwoSidedFaces(RemeshBackfaces.FromMaterials), "no two-sided material"); + Assert.IsNull(source.TwoSidedFaces(RemeshBackfaces.Never)); + CollectionAssert.AreEqual(new[] { true }, source.TwoSidedFaces(RemeshBackfaces.Always)); + source.materials[0].twoSided = true; + CollectionAssert.AreEqual(new[] { true }, source.TwoSidedFaces(RemeshBackfaces.FromMaterials)); + Assert.IsNull(source.TwoSidedFaces(RemeshBackfaces.Never), "Never overrides the material"); + // The bake accepts a two-sided face from behind: a sheet facing away from the + // target bakes without misses when its material is two-sided. + var target = new RemeshNative.Geometry { positions = source.positions, normals = source.normals, uv = source.uv, indices = source.indices }; + var away = Source(); away.indices = new[] { 0, 2, 1 }; away.materials[0].twoSided = true; + var maps = RemeshBaker.Bake(away, target, source.tangents, new RemeshSettings { textureResolution = 64, padding = 2, sourceBackfaces = RemeshBackfaces.FromMaterials }, CancellationToken.None); + Assert.AreEqual(0, maps.misses); Assert.AreEqual(1, maps.twoSidedFaces); } [Test] public void PrincipalExtentsFollowThePointSetsOwnAxes() From 3b6730b1dad7099a9a2457e0967bb02f3117c284 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Thu, 1 Oct 2026 22:13:32 +0000 Subject: [PATCH 083/130] feat(remesh): trim mask preview, one sheet for two-sided sources, consistent re-winding The Remesh stage's new "Trim" toggle colours the untrimmed remesh by what Trim to source surface did with each face (green kept, red back of a sheet, orange rim / no source within reach), so the cut is visible before the simplifier runs. RemeshTrim returns the per-face classes and the pipeline keeps the raw remesh for the mask; the remesh status now also reaches the Console with the trimmed, re-wound and two-sided counts, and RemeshDiag prints the class breakdown. A two-sided source (Cull Off material) no longer keeps both sides of the sheet: the trim keeps one sheet and the saved material renders both sides instead (URP: cull Off, double-sided GI; Standard has no two-sided mode, so the save warns). After the cut the kept sheet is re-wound to one consistent orientation per connected piece, the majority keeping the side that agreed with the source, so a source modeled with arbitrary winding comes out orientable. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Documentation~/REMESH_AND_BAKE.md | 32 +++++-- Editor/RemeshExporter.cs | 14 ++- Editor/RemeshPipeline.cs | 71 +++++++++++--- Editor/RemeshPreview.cs | 22 ++++- Editor/RemeshTrim.cs | 152 +++++++++++++++++++++++------- Editor/Tools/RemeshBakeTool.cs | 5 +- Tests/Editor/RemeshBakeTests.cs | 53 +++++++++-- 8 files changed, 279 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fca87417..bca6958a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added -- **Remesh & Bake: two-sided sources.** A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too, so the back of such a sheet is surface the player sees — not slab thickness to trim, and not a wall the bake should refuse to sample. **Source backfaces** (remesh stage) decides which source faces count from behind: *From materials* (default) reads each captured material's cull mode property (`_Cull`, `_CullMode` = Off) or double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`), *Always* treats every face as two-sided (for a `Cull Off` baked into the shader, which no property reveals), *Never* keeps only fronts. Two-sided faces keep both sides of the remesh sheet around them through *Trim to source surface* (the rims still go), pass the bake's front-face filter from either side (ray and nearest fallback alike) and cast no vote in the winding probe. RemeshDiag reports the two-sided face count; both stage keys cover the setting. +- **Remesh & Bake: two-sided sources, a visible trim mask, and a re-wound sheet.** A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too. **Source backfaces** (remesh stage) decides which source faces count from behind: *From materials* (default) reads each captured material's cull mode property (`_Cull`, `_CullMode` = Off) or double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`), *Always* treats every face as two-sided (for a `Cull Off` baked into the shader, which no property reveals), *Never* keeps only fronts. A two-sided source still trims to ONE sheet — doubling the geometry would double the atlas and the triangle count for nothing — and the saved material renders both sides of it instead (URP Lit/Unlit: cull Off and double-sided GI; Standard and Unlit/Texture have no two-sided mode, so the save warns and says so in its status); two-sided faces pass the bake's front-face filter from either side (ray and nearest fallback alike) and cast no vote in the winding probe. After the cut the kept sheet is re-wound to one consistent orientation per connected piece, the majority of each piece keeping the side that agreed with the source, so a source modeled with arbitrary winding comes out orientable. The Remesh stage's new **Trim** toggle (3D panel) colours the untrimmed remesh by class — green kept, red back of a sheet, orange rim / no source within reach — so what the trim removes, and why, is visible before the simplifier runs; the remesh status now also reaches the Console, with the trimmed, re-wound and two-sided counts, and RemeshDiag prints the per-class breakdown. - **Remesh & Bake: a sided, fitted projection cage.** The cage was one direction per welded position: the area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet — a wall of a non-closed source that the voxel remesh turned into a one-cell slab and the simplifier collapsed to zero thickness, both windings on the same vertices — the two sides summed to nothing and the normalized noise sent rays off at up to 180° from their face, with the cage preview spiking across the whole model and most texels baking from the wrong side. The cage is now built per face corner and per **side**: corners at one position are clustered by the hemisphere their face normals share (within 120°), each cluster is averaged (face area × corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back; every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. **Cage smoothing** (bake stage, 0–10, default 2) exposes the passes. **Fit cage to source** (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1× and 8× the projection distance and smooths it over the sides, so the rays reach as far as the decimation drifted and no further; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach, one line per welded side pair (a double-sided sheet shows both shells), rebuilt live from distance, smoothing, fit and source. RemeshDiag reports the side and double-sided position counts and the longest reach; the bake staleness key covers the new settings. - **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch: a segmented pill at the bottom centre with the active side in the accent colour, present in every canvas state (also when the UV canvas has nothing to draw), remembered across sessions, and flipped with **Tab** while the mouse is over the canvas. The 3D side looks like a scene view: a blue-grey background, a fading ground grid under the content (Grid toggle), the pivot's axes, and the shading modes as a segmented row along the top of the canvas. The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. - **Remesh & Bake: proxy shapes rebuilt — oriented boxes and hulls, a part filter before the remesh, vertex-color albedo tint.** The *Box set* shape (recursive gap splitting of a point cloud, which guessed wrong on anything that fills its bounds) is gone. **Shape** now offers *Bounding box* — one oriented box per captured renderer, measured over the renderer's geometry along its own authored axes and placed back in the capture space (a yawed building keeps a yawed box, not the inflated axis-aligned one; weld lane: one mesh of per-renderer boxes; keep-hierarchy: one box per node) — and *Hull* — the capture run through a coarse solid voxel pass (*Hull resolution*) and a strongly regularized simplification to *Hull triangles*, a closed rounded blob that follows L- and T-shapes. **Exclude parts smaller than** (a fraction of the capture diagonal) and **Exclude rods thinner than** (in voxel cells) run before any shape over the connected components of the position-welded triangle graph: a piece goes when its extent is under the size floor or when its cross-section — the two smaller of its extents along its own principal axes — is under the rod threshold, the section the voxel grid cannot carry anyway. Thin alone is not the criterion: a gate leaf or a glass pane has one thin extent and stays, a pipe or railing has two and goes, so rods stop inflating boxes and hulls; the status reports the counts and a filter that would remove everything is skipped with a warning. Proxy shapes bake through **proxy projection**: each texel casts along its face normal from just outside the proxy as deep as *Proxy search depth* allows (a fraction of the capture diagonal, 0.1 by default), takes the first source hit, else the nearest surface within the same reach — no cage — and texels that find no geometry within reach are written with alpha 0 (filled from the nearest hit so the color map stays clean), counted in the status, so an alpha-clipping shader gets a silhouette-correct impostor. **Vertex color tints albedo** (bake stage, on by default, inert on meshes without colors) multiplies the baked albedo by the source's interpolated vertex color RGB as linear, the way vertex-tinting shaders read it. Materials on shaders other than Standard / URP Lit are reported in one summary line per capture, grouped by shader, instead of one warning per material. The RemeshDiag "map is dominated by extreme normals" warning is skipped for proxy shapes and for reductions stronger than 5:1, where the geometry is meant to move into the normal map. **Highlight capture in Scene** (remesh stage) paints the source in the Scene view as the capture will see it, live with the filter sliders: green captured, orange small parts, red rods, grey excluded renderers (LOD1+, collision, disabled), with per-class triangle counts in the sidebar — a geometry-only capture, no material reads. The remesh and bake staleness keys cover the new settings. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index a21ffa79..f3735f52 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -19,6 +19,11 @@ settings, marked "settings changed" in its header) and clears everything after i smooth by design, so this toggle is what shows the transferred detail — the vivid pink/cyan atlas in **Maps ▸ Normal** is that same detail in tangent space, not corruption. + The **Trim** toggle, at the *Remesh* stage, shows the untrimmed remesh coloured + by what *Trim to source surface* did with each face: green kept, red the back + of a sheet (a source face within reach faces the other way), orange a rim or a + face with no source within reach — so what the cut removes, and why, is + visible before the simplifier touches it. The 3D panel also reports the atlas: island count and texel usage. - **Maps** — each baked map (base color, normal, metallic/smoothness, occlusion, emission). @@ -86,18 +91,25 @@ Before the UV stage the canvas shows the selected model as usual. rims (perpendicular) have none and go, a closed source is left whole, and a source that is double-sided where it matters keeps both sides. A source wound inside out is judged by its flipped normals; when neither reading keeps - a tenth of the remesh, nothing is trimmed and a warning says so. The status - reports how many faces went. Turn it off to keep the slab, for instance with - *Two-sided shell*. **Source backfaces** decides which source faces count from - behind as well: *From materials* (default) marks a material two-sided when - its cull mode property (`_Cull`, `_CullMode`) is Off or a double-sided switch + a tenth of the remesh, nothing is trimmed and a warning says so. The kept + sheet is then re-wound to one consistent orientation per connected piece + (neighbours must traverse their shared edge in opposite directions; the + majority of each piece keeps the side that agreed with the source), so a + source modeled with arbitrary winding — common under a two-sided material — + comes out orientable. The status reports how many faces went and how many + were re-wound, and the Remesh stage's **Trim** toggle colours the untrimmed + remesh by class. Turn it off to keep the slab, for instance with *Two-sided + shell*. **Source backfaces** decides which source faces count from behind as + well: *From materials* (default) marks a material two-sided when its cull + mode property (`_Cull`, `_CullMode`) is Off or a double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`) is on; *Always* treats every face as two-sided (for a `Cull Off` written into the shader itself, - which no property reveals); *Never* keeps only the front of every face. The - trim keeps both sides of the sheet around a two-sided face (only the rims - go), the bake's front-face filter accepts such a face from either side, and - the winding probe ignores it. The setting marks both the remesh and the - bake stage stale. + which no property reveals); *Never* keeps only the front of every face. A + two-sided source still yields ONE sheet — the result material renders both + sides of it instead (URP Lit: Render Face Both; Standard has no two-sided + mode, and the save says so) — the bake's front-face filter accepts such a + face from either side, and the winding probe ignores it. The setting marks + both the remesh and the bake stage stale. 3. **Simplify** — quadric simplification of the voxel mesh. It collapses the cheapest edges first, so with *Regularize = None* flat areas reduce to a few large triangles while curved or detailed areas keep their density. *Maximum diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs index 0e07e050..00d073d8 100644 --- a/Editor/RemeshExporter.cs +++ b/Editor/RemeshExporter.cs @@ -112,9 +112,20 @@ public static string Export(RemeshPipeline pipeline, RemeshSettings settings, st root.transform.localScale = normalize ? Vector3.one : pipeline.RootScale; var materials = new Material[nodes.Count]; var meshes = new Mesh[nodes.Count]; + bool twoSidedWarned = false; for (int i = 0; i < nodes.Count; ++i) { var node = nodes[i]; materials[i] = CreateMaterial(shader, urp, node.maps.beauty, names[i] + "_Remesh", paths[i]); + // A source that renders both sides keeps one sheet in the result; the + // material renders both sides of it. URP Lit/Unlit expose the cull mode; + // Standard and Unlit/Texture do not, so the user is told once. + if (node.twoSided) { + if (materials[i].HasProperty("_Cull")) { materials[i].SetFloat("_Cull", (float)CullMode.Off); materials[i].doubleSidedGI = true; } + else if (!twoSidedWarned) { + twoSidedWarned = true; + UvtLog.Warn("[Remesh export] The source renders both sides, but " + shader.name + " has no two-sided mode; assign a two-sided shader to the result material or its back faces will be culled."); + } + } temporary.Add(materials[i]); meshes[i] = Object.Instantiate(node.mesh); meshes[i].name = names[i] + "_LOD0"; meshes[i].hideFlags = HideFlags.None; @@ -152,7 +163,8 @@ public static string Export(RemeshPipeline pipeline, RemeshSettings settings, st } AssetDatabase.SaveAssets(); EditorGUIUtility.PingObject(ping); - string status = hierarchy ? $"Saved: {folder} ({nodes.Count} node(s))" : "Saved: " + folder; + string status = (hierarchy ? $"Saved: {folder} ({nodes.Count} node(s))" : "Saved: " + folder) + + (twoSidedWarned ? ". Two-sided source: assign a two-sided shader (see Console)." : pipeline.ResultTwoSided ? ". Material renders both sides." : ""); UvtLog.Info("[Remesh export] " + status); return status; } diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 8fd3cb02..e5f8faf1 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -34,6 +34,13 @@ internal sealed class Node public Matrix4x4 spaceToWorld = Matrix4x4.identity; // captured at remesh time public RemeshSource source; public RemeshNative.IndexedMesh voxel, simplified; + // Trim mask: the untrimmed remesh and the class of each of its faces + // (RemeshTrim.Kept/Back/Rim), for the Remesh stage's preview; null without a trim. + public RemeshNative.IndexedMesh voxelRaw; + public byte[] trimClasses; + // The capture has faces whose material renders both sides: the result + // material does too. + public bool twoSided; public float simplifyError; public RemeshNative.Geometry geometry; public Vector4[] tangents; @@ -53,7 +60,7 @@ internal sealed class Node // Previews come from the primary node: the weld itself, or the largest node of // a hierarchy so the existing preview panel keeps working. - Mesh sourceMesh, voxelMesh, simplifiedMesh; + Mesh sourceMesh, voxelMesh, simplifiedMesh, trimMaskMesh; Texture2D baseColorPreview; /// Settings snapshot every stage output was built with, indexed by Stage. @@ -80,6 +87,11 @@ public Node Primary public Mesh SourceMesh => sourceMesh; public Mesh VoxelMesh => voxelMesh; + /// The untrimmed remesh of the primary node with one colour per trim + /// class (green kept, red back of a sheet, orange rim); null when nothing was trimmed. + public Mesh TrimMaskMesh => trimMaskMesh; + /// Any node's capture renders both sides (two-sided materials or the setting). + public bool ResultTwoSided { get { foreach (var n in nodes) if (n.twoSided) return true; return false; } } public Mesh SimplifiedMesh => simplifiedMesh; public Mesh ResultMesh => Primary?.mesh; public RemeshNative.Geometry Geometry => Primary?.geometry; @@ -226,7 +238,7 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken } if (captures.Count == 0) throw new InvalidOperationException("Every captured node was empty; nothing to remesh."); } - long sourceTriangles = 0, resultTriangles = 0, trimmedFaces = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; + long sourceTriangles = 0, resultTriangles = 0, trimmedFaces = 0, flippedFaces = 0, twoSidedFaces = 0; int warnings = 0, droppedSmall = 0, droppedThin = 0; var shape = options.sourceShape; // Part filter first, whatever the shape: small pieces and rods whose section // the voxel grid cannot carry (bolts, pipes, cables, railings) only add voxel @@ -251,7 +263,10 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken // The proxy shapes replace the voxelizer: one oriented box per renderer, // or a coarse voxel hull; materials and lighting still bake from the // captured geometry, projected onto the proxy downstream. - int trimmed = 0; bool trimGaveUp = false; + var twoSidedMask = captured.TwoSidedFaces(options.sourceBackfaces); + node.twoSided = twoSidedMask != null; + if (twoSidedMask != null) foreach (bool two in twoSidedMask) if (two) ++twoSidedFaces; + RemeshTrim.Result trim = null; node.voxel = await Task.Run(() => { if (shape == RemeshShape.BoundingBox) return captured.OrientedBoxes(); if (shape == RemeshShape.Hull) return Hull(captured, options, token); @@ -263,14 +278,24 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken foreach (var p in captured.positions) { mn = Vector3.Min(mn, p); mx = Vector3.Max(mx, p); } var extent = mx - mn; float cell = Mathf.Max(extent.x, Mathf.Max(extent.y, extent.z)) / Mathf.Max(1, options.voxelResolution); - return RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token, out trimmed, out trimGaveUp, - captured.TwoSidedFaces(options.sourceBackfaces)); + trim = RemeshTrim.Trim(voxel, captured.positions, captured.indices, cell * 2f, token); + node.voxelRaw = voxel; node.trimClasses = trim.classes; + return trim.mesh; }, token); if (node.voxel == null || node.voxel.TriangleCount == 0) throw new InvalidOperationException("The remesh produced no geometry."); - if (trimGaveUp) { UvtLog.Warn("[Remesh] " + (hierarchy ? node.name + ": " : "") + "Trim to source surface kept under a tenth of the remesh " + - "with the source's winding and with its inverse, so nothing was trimmed. The source winding is mixed beyond one flip, or the remesh sits " + - "more than two cells from it (raise the voxel resolution)."); } - trimmedFaces += trimmed; + if (trim != null) { + if (trim.gaveUp) UvtLog.Warn("[Remesh] " + (hierarchy ? node.name + ": " : "") + "Trim to source surface kept under a tenth of the remesh " + + "with the source's winding and with its inverse, so nothing was trimmed. The source winding is mixed beyond one flip, or the remesh sits " + + "more than two cells from it (raise the voxel resolution)."); + trimmedFaces += trim.removed; flippedFaces += trim.flipped; + if (UvtLog.IsCategoryEnabled(UvtLog.Category.RemeshDiag)) { + int back = 0, rim = 0; + foreach (byte c in trim.classes) { if (c == RemeshTrim.Back) ++back; else if (c == RemeshTrim.Rim) ++rim; } + UvtLog.Info(UvtLog.Category.RemeshDiag, "[" + node.name + "] trim: " + $"{trim.classes.Length:N0} remesh faces, kept {trim.classes.Length - trim.removed:N0}, " + + $"back of a sheet {back:N0}, rim/no source {rim:N0}, re-wound {trim.flipped:N0}{(trim.gaveUp ? ", GAVE UP (nothing trimmed)" : "")}; " + + $"two-sided source faces {(twoSidedMask == null ? 0 : CountTrue(twoSidedMask)):N0}"); + } + } sourceTriangles += captured.indices.Length / 3; resultTriangles += node.voxel.TriangleCount; } @@ -281,12 +306,35 @@ async Task RunRemesh(GameObject root, RemeshSettings options, CancellationToken sourceMesh = BuildMesh(ResultName + "_Source", primary.source.positions, primary.source.indices, primary.source.normals, primary.source.hasColors ? primary.source.colors : null); voxelMesh = BuildMesh(ResultName + "_Voxel", primary.voxel.positions, primary.voxel.indices); + trimMaskMesh = primary.trimClasses != null ? BuildTrimMask(ResultName + "_TrimMask", primary.voxelRaw, primary.trimClasses) : null; Status = (hierarchy ? $"Remesh: {nodes.Count} node(s), " : "Remesh: ") + $"{sourceTriangles:N0} → {resultTriangles:N0} triangles" + (shape == RemeshShape.BoundingBox ? $" ({resultTriangles / 12:N0} oriented boxes)" : shape == RemeshShape.Hull ? " (hull)" : "") + (droppedSmall + droppedThin > 0 ? $"; excluded {droppedSmall:N0} small part(s), {droppedThin:N0} rod(s)" : "") + - (trimmedFaces > 0 ? $"; trimmed {trimmedFaces:N0} face(s) the source has no surface for" : "") + "." + + (trimmedFaces > 0 ? $"; trimmed {trimmedFaces:N0} face(s) the source has no surface for" : options.trimToSource && shape == RemeshShape.LOD0 ? "; nothing to trim" : "") + + (flippedFaces > 0 ? $"; re-wound {flippedFaces:N0} face(s) to one orientation" : "") + + (twoSidedFaces > 0 ? $"; {twoSidedFaces:N0} two-sided source face(s), the result renders both sides" : "") + "." + (warnings > 0 ? $" {warnings} material warning(s), see Console." : ""); + UvtLog.Info("[Remesh] " + Status); + } + + static int CountTrue(bool[] mask) { int n = 0; foreach (bool b in mask) if (b) ++n; return n; } + + // The untrimmed remesh with one flat colour per face class, so the 3D view can + // show what the trim removed and why before the simplifier touches it. + static Mesh BuildTrimMask(string name, RemeshNative.IndexedMesh raw, byte[] classes) + { + int faces = classes.Length; + var positions = new Vector3[faces * 3]; var colors = new Color[faces * 3]; var indices = new int[faces * 3]; + var kept = new Color(0.45f, 0.8f, 0.45f); var back = new Color(0.9f, 0.25f, 0.25f); var rim = new Color(1f, 0.6f, 0.15f); + for (int f = 0; f < faces; ++f) { + var color = classes[f] == RemeshTrim.Kept ? kept : classes[f] == RemeshTrim.Back ? back : rim; + for (int k = 0; k < 3; ++k) { + positions[f * 3 + k] = raw.positions[raw.indices[f * 3 + k]]; + colors[f * 3 + k] = color; indices[f * 3 + k] = f * 3 + k; + } + } + return BuildMesh(name, positions, indices, null, colors); } // The Hull shape: a coarse voxelization without surface fitting (blocky by @@ -500,7 +548,8 @@ public void ClearFrom(Stage stage) if (stage <= Stage.Remesh) { if (voxelMesh) Object.DestroyImmediate(voxelMesh); if (sourceMesh) Object.DestroyImmediate(sourceMesh); - voxelMesh = null; sourceMesh = null; keys[(int)Stage.Remesh] = null; + if (trimMaskMesh) Object.DestroyImmediate(trimMaskMesh); + voxelMesh = null; sourceMesh = null; trimMaskMesh = null; keys[(int)Stage.Remesh] = null; nodes.Clear(); hierarchy = false; CapturedSource = null; } } diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index 6947f84c..a7f451fd 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -24,6 +24,8 @@ internal sealed class Data public RemeshNative.Geometry geometry; public RemeshBaker.Maps maps; public Texture2D baseColor; + // Remesh stage: the untrimmed remesh coloured per trim class (null without a trim). + public Mesh trimMask; // Ray travel of the bake projection (source diagonal × projection distance); // the Cage toggle draws the result mesh inflated by ±this along the cage // directions, i.e. the exact shells the projection rays start and end on. @@ -38,7 +40,7 @@ internal sealed class Data View view; Stage stage = Stage.Result; Channel channel; - bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView; + bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, trimMaskView = true; Material surface, wire; Mesh cageOuter, cageInner; int cageMeshId; string cageKey; RemeshSource cageSourceRef; TriangleBvh cageSourceBvh; @@ -87,11 +89,14 @@ void DrawMesh(Data data) textured = GUILayout.Toggle(textured, "Texture", EditorStyles.miniButtonMid); bumpMap = GUILayout.Toggle(bumpMap, "Bump", EditorStyles.miniButtonMid); vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonMid); + trimMaskView = GUILayout.Toggle(trimMaskView, new GUIContent("Trim", "Remesh stage: colour the untrimmed remesh by what Trim to source surface did with each face."), EditorStyles.miniButtonMid); cageView = GUILayout.Toggle(cageView, "Cage", EditorStyles.miniButtonRight); } var mesh = data.meshes[(int)stage]; EditorGUILayout.LabelField(mesh ? $"{mesh.vertexCount:N0} vertices · {Triangles(mesh):N0} triangles" : "Run this stage to preview it.", EditorStyles.miniLabel); + if (ShowTrimMask(data)) + EditorGUILayout.LabelField("Trim mask: green kept · red back of a sheet (opposite normal) · orange rim / no source within reach", EditorStyles.miniLabel); var g = data.geometry; if (g != null) { string coverage = data.maps != null ? $" · {100.0 * data.maps.covered / ((double)data.maps.size * data.maps.size):0.#}% texels used" : ""; @@ -103,12 +108,19 @@ void DrawMesh(Data data) /// The selected stage mesh for the shared 3D canvas, with the surface /// material this panel's toggles configure. False when no stage has run. + bool ShowTrimMask(Data data) => trimMaskView && stage == Stage.Remesh && data.trimMask; + + // The mesh the 3D view shows for the stage: the trim mask stands in for the + // trimmed remesh while its toggle is on. + Mesh DisplayMesh(Data data) => ShowTrimMask(data) ? data.trimMask : data.meshes[(int)stage]; + public bool Fill3D(Data data, List items) { - var mesh = data.meshes[(int)stage]; + var mesh = DisplayMesh(data); if (!mesh) return false; if (!EnsureResources()) return false; - if (shaded) { + bool trimMask = ShowTrimMask(data); + if (shaded || trimMask) { bool useTexture = textured && stage == Stage.Result && data.baseColor; surface.SetTexture("_MainTex", useTexture ? data.baseColor : null); surface.SetFloat("_UseTexture", useTexture ? 1 : 0); @@ -120,7 +132,7 @@ public bool Fill3D(Data data, List items) // Beauty maps already contain the lighting; shading them again would // double it, so the surface renders unlit exactly like the saved material. surface.SetFloat("_Lit", stage == Stage.Result && data.maps != null && data.maps.beauty ? 0 : 1); - surface.SetFloat("_UseVertexColor", vertexColors && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); + surface.SetFloat("_UseVertexColor", (vertexColors || trimMask) && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); surface.SetColor("_Color", Color.white); var materials = new Material[mesh.subMeshCount]; for (int sub = 0; sub < materials.Length; ++sub) materials[sub] = surface; @@ -133,7 +145,7 @@ public bool Fill3D(Data data, List items) /// Wire and cage overlays for the stage mesh in the shared 3D canvas. public void Overlay3D(Data data, MeshViewport3D view) { - var mesh = data.meshes[(int)stage]; + var mesh = DisplayMesh(data); if (!mesh || !EnsureResources()) return; if (wireframe) view.DrawWire(mesh, Matrix4x4.identity, shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) diff --git a/Editor/RemeshTrim.cs b/Editor/RemeshTrim.cs index b80dbb98..a1c08e64 100644 --- a/Editor/RemeshTrim.cs +++ b/Editor/RemeshTrim.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using UnityEngine; @@ -12,44 +13,62 @@ namespace SashaRX.UnityMeshLab /// input surface, the front and the back lie ON the sheet, a zero-thickness /// double-sided surface. A remesh face stays only when the source has a face near /// it (within a couple of voxel cells) whose normal points the same way; the back - /// side of a one-sided sheet and the slab's rims have none and go. Closed sources - /// are left whole, and a source that is double-sided where it matters keeps both - /// sides. Unreferenced vertices are compacted away. + /// side of a sheet (opposite normal) and the slab's rims (perpendicular, or no + /// source nearby) go. Closed sources are left whole, a source modeled with both + /// faces of a wall keeps both. A two-sided MATERIAL does not keep the back: the + /// result is one sheet, and the result material renders both sides instead. + /// After the cut the kept sheet is re-wound to one consistent orientation per + /// connected piece (a two-sided source is often modeled with arbitrary winding), + /// the majority of each piece keeping the side that agreed with the source. + /// Unreferenced vertices are compacted away. /// internal static class RemeshTrim { /// Minimum alignment between a remesh face and the source face that keeps it. internal const float MinDot = 0.25f; + /// Per raw remesh face: kept, the back of a sheet (a source face lies + /// within reach but faces the other way), or a rim (nothing parallel within reach). + internal const byte Kept = 0, Back = 1, Rim = 2; + + internal sealed class Result + { + public RemeshNative.IndexedMesh mesh; // trimmed (or the input when nothing went) + public byte[] classes; // per face of the INPUT mesh + public int removed, flipped; + public bool gaveUp; // neither winding kept a tenth: nothing trimmed + } + internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, float maxDistance, CancellationToken token, out int removedFaces) - => Trim(mesh, sourcePositions, sourceIndices, maxDistance, token, out removedFaces, out _); + { + var result = Trim(mesh, sourcePositions, sourceIndices, maxDistance, token); + removedFaces = result.removed; + return result.mesh; + } - /// gaveUp: neither the source's winding nor its inverse kept a tenth of - /// the remesh, so nothing was trimmed — the source is far from the remesh or - /// its winding is mixed beyond a single flip. sourceTwoSided (optional, per - /// source face): faces whose back counts as surface too (two-sided materials), - /// so both sides of the sheet around them stay. - internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, - float maxDistance, CancellationToken token, out int removedFaces, out bool gaveUp, bool[] sourceTwoSided = null) + internal static Result Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePositions, int[] sourceIndices, + float maxDistance, CancellationToken token) { - removedFaces = 0; gaveUp = false; int faces = mesh.indices.Length / 3; - if (faces == 0 || sourceIndices.Length < 3) return mesh; + var result = new Result { mesh = mesh, classes = new byte[faces] }; + if (faces == 0 || sourceIndices.Length < 3) return result; var bvh = new TriangleBvh(sourcePositions, sourceIndices); var sourceNormals = FaceNormals(sourcePositions, sourceIndices); - var keep = Classify(mesh, bvh, sourceNormals, sourceTwoSided, maxDistance, token, out int kept); + var classes = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int kept); // A source wound inside out would reject everything; judge it by its flipped // normals instead, and give up (keep all) when neither reading keeps a tenth. if (kept * 10 < faces) { for (int i = 0; i < sourceNormals.Length; ++i) sourceNormals[i] = -sourceNormals[i]; - var flipped = Classify(mesh, bvh, sourceNormals, sourceTwoSided, maxDistance, token, out int keptFlipped); - if (keptFlipped > kept) { keep = flipped; kept = keptFlipped; } - if (kept * 10 < faces) { gaveUp = true; return mesh; } + var flipped = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int keptFlipped); + if (keptFlipped > kept) { classes = flipped; kept = keptFlipped; } + if (kept * 10 < faces) { result.gaveUp = true; return result; } } - removedFaces = faces - kept; - if (removedFaces == 0) return mesh; - return Compact(mesh, keep, kept); + result.classes = classes; + result.removed = faces - kept; + if (result.removed > 0) result.mesh = Compact(mesh, classes, kept); + result.flipped = OrientConsistently(result.mesh); + return result; } // A face stays when a source face lies within reach that points the SAME way @@ -59,38 +78,37 @@ internal static RemeshNative.IndexedMesh Trim(RemeshNative.IndexedMesh mesh, Vec // coincident — a position test ("is the centroid behind the sheet") sees both // at zero distance and keeps both, which is exactly the double-sided result // that breaks the cage and the bake. The back face's normal is opposite to the - // sheet's, the rims are perpendicular; both fail the alignment and go. A source - // wound inside out is handled by the caller's flipped retry. A two-sided source - // face passes with |dot|: both sides of the sheet around it are surface the - // player sees, only the rims go. - static bool[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, bool[] twoSided, float maxDistance, CancellationToken token, out int kept) + // sheet's (Back), the rims are perpendicular (Rim); both go. A source wound + // inside out is handled by the caller's flipped retry. + static byte[] Classify(RemeshNative.IndexedMesh mesh, TriangleBvh bvh, Vector3[] sourceNormals, float maxDistance, CancellationToken token, out int kept) { int faces = mesh.indices.Length / 3; - var keep = new bool[faces]; + var classes = new byte[faces]; int count = 0; Parallel.For(0, faces, new ParallelOptions { CancellationToken = token, MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, f => { int a = mesh.indices[f * 3], b = mesh.indices[f * 3 + 1], c = mesh.indices[f * 3 + 2]; Vector3 pa = mesh.positions[a], pb = mesh.positions[b], pc = mesh.positions[c]; Vector3 normal = Vector3.Cross(pb - pa, pc - pa); - if (normal.sqrMagnitude < 1e-30f) return; // degenerate: drop + if (normal.sqrMagnitude < 1e-30f) { classes[f] = Rim; return; } // degenerate: drop normal.Normalize(); Vector3 centroid = (pa + pb + pc) / 3f; - var hit = bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance, twoSided); - if (hit.triangleIndex < 0) return; - keep[f] = true; Interlocked.Increment(ref count); + if (bvh.FindNearestNormalFiltered(centroid, normal, sourceNormals, MinDot, maxDistance).triangleIndex >= 0) { + classes[f] = Kept; Interlocked.Increment(ref count); return; + } + classes[f] = bvh.FindNearestNormalFiltered(centroid, -normal, sourceNormals, MinDot, maxDistance).triangleIndex >= 0 ? Back : Rim; }); kept = count; - return keep; + return classes; } - static RemeshNative.IndexedMesh Compact(RemeshNative.IndexedMesh mesh, bool[] keep, int kept) + static RemeshNative.IndexedMesh Compact(RemeshNative.IndexedMesh mesh, byte[] classes, int kept) { var remap = new int[mesh.positions.Length]; for (int i = 0; i < remap.Length; ++i) remap[i] = -1; var indices = new int[kept * 3]; int next = 0, write = 0; - for (int f = 0; f < keep.Length; ++f) { - if (!keep[f]) continue; + for (int f = 0; f < classes.Length; ++f) { + if (classes[f] != Kept) continue; for (int k = 0; k < 3; ++k) { int v = mesh.indices[f * 3 + k]; if (remap[v] < 0) remap[v] = next++; @@ -102,6 +120,72 @@ static RemeshNative.IndexedMesh Compact(RemeshNative.IndexedMesh mesh, bool[] ke return new RemeshNative.IndexedMesh { positions = positions, indices = indices }; } + /// + /// Re-winds faces so every connected piece (through edges shared by exactly two + /// faces, positions welded bit-exactly) has one consistent orientation: two + /// neighbours must traverse their shared edge in opposite directions. Within a + /// piece the majority keeps its current winding — after a trim that is the side + /// that agreed with the source — so a sheet cut from a source modeled with + /// arbitrary winding comes out orientable and mostly as the source had it. + /// Returns the number of faces flipped. Non-manifold edges do not propagate. + /// + internal static int OrientConsistently(RemeshNative.IndexedMesh mesh) + { + var positions = mesh.positions; var indices = mesh.indices; + int faces = indices.Length / 3; + if (faces < 2) return 0; + var slots = new int[positions.Length]; + var map = new Dictionary<(int, int, int), int>(positions.Length); + for (int i = 0; i < positions.Length; ++i) { + var p = positions[i]; + var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); + if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } + slots[i] = slot; + } + // Edge → the faces along it with the direction each traverses it (low→high). + var edges = new Dictionary<(int, int), List<(int face, bool dir)>>(faces * 3); + for (int f = 0; f < faces; ++f) + for (int k = 0; k < 3; ++k) { + int a = slots[indices[f * 3 + k]], b = slots[indices[f * 3 + (k + 1) % 3]]; + if (a == b) continue; + var key = a < b ? (a, b) : (b, a); + if (!edges.TryGetValue(key, out var list)) edges[key] = list = new List<(int, bool)>(2); + list.Add((f, a < b)); + } + var neighbours = new List<(int face, bool myDir, bool theirDir)>[faces]; + for (int f = 0; f < faces; ++f) neighbours[f] = new List<(int, bool, bool)>(3); + foreach (var list in edges.Values) { + if (list.Count != 2) continue; // open border or non-manifold: no constraint + var (fa, da) = list[0]; var (fb, db) = list[1]; + neighbours[fa].Add((fb, da, db)); neighbours[fb].Add((fa, db, da)); + } + var visited = new bool[faces]; var flip = new bool[faces]; + var queue = new Queue(); var component = new List(); + for (int seed = 0; seed < faces; ++seed) { + if (visited[seed]) continue; + component.Clear(); visited[seed] = true; queue.Enqueue(seed); + while (queue.Count > 0) { + int f = queue.Dequeue(); component.Add(f); + foreach (var (nb, myDir, theirDir) in neighbours[f]) { + if (visited[nb]) continue; + bool mine = myDir ^ flip[f]; + flip[nb] = (theirDir ^ false) == mine; // consistent: opposite directions + visited[nb] = true; queue.Enqueue(nb); + } + } + int flips = 0; + foreach (int f in component) if (flip[f]) ++flips; + if (flips * 2 > component.Count) foreach (int f in component) flip[f] = !flip[f]; + } + int flipped = 0; + for (int f = 0; f < faces; ++f) { + if (!flip[f]) continue; + int t = indices[f * 3 + 1]; indices[f * 3 + 1] = indices[f * 3 + 2]; indices[f * 3 + 2] = t; + ++flipped; + } + return flipped; + } + static Vector3[] FaceNormals(Vector3[] positions, int[] indices) { var normals = new Vector3[indices.Length / 3]; diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 591c3df3..22721a33 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -182,6 +182,7 @@ void SyncPreviewData() previewData.meshes[(int)RemeshPreview.Stage.Simplified] = pipeline.SimplifiedMesh; previewData.meshes[(int)RemeshPreview.Stage.Result] = pipeline.ResultMesh; previewData.geometry = pipeline.Geometry; previewData.maps = pipeline.Maps; previewData.baseColor = pipeline.BaseColorPreview; + previewData.trimMask = pipeline.TrimMaskMesh; // Live from the current settings so the cage preview reflects projection // distance changes before a re-bake; zero until a source snapshot exists. previewData.cageDistance = pipeline.SourceDiagonal * settings.projectionDistance; @@ -243,8 +244,8 @@ public void OnDrawSidebar() } settings.sourceBackfaces = (RemeshBackfaces)EditorGUILayout.EnumPopup(new GUIContent("Source backfaces", "Whether the source's back faces count as surface. From materials: two-sided when a material's cull mode is Off or its double-sided " + - "switch is on (a Cull Off written into the shader itself is not detectable — use Always). Two-sided faces keep both sides of their " + - "sheet through the trim and project from either side in the bake; Never keeps only the front of every face."), settings.sourceBackfaces); + "switch is on (a Cull Off written into the shader itself is not detectable — use Always). The trim still keeps one sheet; the result " + + "material renders both sides instead, and the bake samples two-sided faces from either side. Never: only fronts count."), settings.sourceBackfaces); StageButton(RemeshPipeline.Stage.Remesh, "Remesh"); } if (StageHeader(RemeshPipeline.Stage.Simplify)) { diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 604184ea..6edd9e98 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -421,14 +421,51 @@ public void TrimKeepsTheSideTheSourceHasAndDropsTheSlabsBackAndRims() // A closed source keeps the whole remesh: the slab against a copy of itself. var whole = RemeshTrim.Trim(slab, p, tri, 0.1f, CancellationToken.None, out removed); Assert.AreEqual(0, removed); Assert.AreEqual(12, whole.TriangleCount); - // A two-sided source (Cull Off material) is surface from behind too: both - // sides of the slab stay, only the four rims (8 faces) go; the flat - // double-sided sheet is kept whole. - var twoSided = new[] { true, true }; - var both = RemeshTrim.Trim(slab, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed, out _, twoSided); - Assert.AreEqual(8, removed); Assert.AreEqual(4, both.TriangleCount); - RemeshTrim.Trim(flat, sourcePositions, sourceIndices, 0.1f, CancellationToken.None, out removed, out _, twoSided); - Assert.AreEqual(0, removed); + // The classes name why each raw face went: 2 kept, 2 back (a source face within + // reach faces the other way), 8 rims (nothing parallel within reach). + var result = RemeshTrim.Trim(slab, sourcePositions, sourceIndices, 0.1f, CancellationToken.None); + int kept = 0, back = 0, rim = 0; + foreach (byte c in result.classes) { if (c == RemeshTrim.Kept) ++kept; else if (c == RemeshTrim.Back) ++back; else ++rim; } + Assert.AreEqual(2, kept); Assert.AreEqual(2, back); Assert.AreEqual(8, rim); + Assert.IsFalse(result.gaveUp); Assert.AreEqual(0, result.flipped); + } + [Test] + public void OrientConsistentlyRewindsTheMinorityOfEachPiece() + { + // A 3-quad strip with the middle quad wound the other way: both of its + // triangles flip; the majority (4 faces) keeps its winding. A detached quad + // keeps its own orientation (no shared edge constrains it). + var p = new[] { new Vector3(0,0,0), new Vector3(1,0,0), new Vector3(2,0,0), new Vector3(3,0,0), + new Vector3(0,1,0), new Vector3(1,1,0), new Vector3(2,1,0), new Vector3(3,1,0), + new Vector3(5,0,0), new Vector3(6,0,0), new Vector3(6,1,0), new Vector3(5,1,0) }; + var mesh = new RemeshNative.IndexedMesh { positions = p, indices = new[] { + 0,1,5, 0,5,4, // +z + 1,6,2, 1,5,6, // -z (flipped quad) + 2,3,7, 2,7,6, // +z + 8,10,9, 8,11,10 } }; // detached, -z + int flipped = RemeshTrim.OrientConsistently(mesh); + Assert.AreEqual(2, flipped); + for (int f = 0; f < 6; ++f) { + var n = Vector3.Cross(p[mesh.indices[f*3+1]] - p[mesh.indices[f*3]], p[mesh.indices[f*3+2]] - p[mesh.indices[f*3]]); + Assert.That(n.z, Is.GreaterThan(0), "strip face " + f); + } + for (int f = 6; f < 8; ++f) { + var n = Vector3.Cross(p[mesh.indices[f*3+1]] - p[mesh.indices[f*3]], p[mesh.indices[f*3+2]] - p[mesh.indices[f*3]]); + Assert.That(n.z, Is.LessThan(0), "detached face " + f); + } + // A sheet trimmed from a source with alternating winding comes out orientable: + // the remesh keeps per face the side agreeing with the source, then re-winds. + var src = new[] { new Vector3(0,0,0), new Vector3(1,0,0), new Vector3(2,0,0), new Vector3(0,1,0), new Vector3(1,1,0), new Vector3(2,1,0) }; + var srcIdx = new[] { 0,1,4, 0,4,3, 1,2,5, 1,5,4 }; // both +z + srcIdx = new[] { 0,1,4, 0,4,3, 1,5,2, 1,4,5 }; // right quad -z + var sheet = new RemeshNative.IndexedMesh { positions = (Vector3[])src.Clone(), + indices = new[] { 0,1,4, 0,4,3, 1,2,5, 1,5,4, 0,4,1, 0,3,4, 1,5,2, 1,4,5 } }; // both sides, both windings + var trimmed = RemeshTrim.Trim(sheet, src, srcIdx, 0.1f, CancellationToken.None); + Assert.AreEqual(4, trimmed.removed); Assert.AreEqual(4, trimmed.mesh.TriangleCount); + Assert.AreEqual(2, trimmed.flipped, "the right quad's two faces, kept as -z like the source, are re-wound to the majority"); + var tp = trimmed.mesh.positions; var ti = trimmed.mesh.indices; + for (int f = 0; f < 4; ++f) + Assert.That(Vector3.Cross(tp[ti[f*3+1]] - tp[ti[f*3]], tp[ti[f*3+2]] - tp[ti[f*3]]).z, Is.GreaterThan(0)); } [Test] public void TwoSidedFacesFollowTheMaterialsOrTheSetting() From c8d4576a110164601acc2caee8605493c7c1668b Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 07:34:38 +0000 Subject: [PATCH 084/130] refactor(remesh): vertical right panel, shared wire and UV layer on tool content The Remesh & Bake right panel is a vertical list fit for the narrow third column: Stage, Baked base color, Baked normal map, Trim mask, Cage shells, counts. Its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too (UvLayer3D draws the wire for every item), the 3D shading row's modes apply to the stage mesh, and the hub pairs a tool's 3D items with its UV entries by mesh so the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh. The 3D layer skips a tool entry's preview texture, which the surface already shows. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Documentation~/REMESH_AND_BAKE.md | 24 +++++++++------ Editor/Framework/UvCanvasView.cs | 3 ++ Editor/Framework/UvLayer3D.cs | 4 ++- Editor/Framework/UvToolHub.cs | 11 ++++++- Editor/RemeshPreview.cs | 49 +++++++++++++++---------------- 6 files changed, 56 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bca6958a..a0503d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel keeps the stage/overlay toggles for the 3D view (plus the atlas's island count and texel usage) and the Maps view. Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background. +- **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel is a vertical list fit for the narrow third column — Stage, Baked base color, Baked normal map, Trim mask, Cage shells, the atlas's island count and texel usage — and the Maps view; its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too, the 3D shading row's modes apply to the stage mesh, and the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh (the hub pairs a tool's 3D items with its UV entries by mesh). Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background in the UV canvas and is skipped by the 3D layer, which would only dim the surface already showing it. - **Remesh & Bake never touches the source importers.** The remesh stage used to flip `isReadable` on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture itself. Read/Write-disabled meshes are read through `Mesh.AcquireReadOnlyMeshData` regardless, so the flip is gone; skinned sources bake through `BakeMesh` as before. - **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction). `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index f3735f52..595a2c26 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -11,15 +11,21 @@ stage first brings every earlier stage up to date (missing output or changed settings, marked "settings changed" in its header) and clears everything after it. **Run all stages** re-runs the whole chain. The right panel previews the result: -- **3D** — orbitable view (drag to orbit, scroll to zoom) of the source, voxel - remesh, simplified mesh or final result, with wireframe, shading, baked base - color, baked normal map and vertex color toggles. The **Bump** toggle applies - the baked tangent-space normal map to the result stage only (earlier stages - have no tangents); with *Hard edges = UV islands* the vertex normals are - smooth by design, so this toggle is what shows the transferred detail — the - vivid pink/cyan atlas in **Maps ▸ Normal** is that same detail in tangent - space, not corruption. - The **Trim** toggle, at the *Remesh* stage, shows the untrimmed remesh coloured +- **3D** — a vertical list for the narrow right column: the **Stage** (source, + voxel remesh, simplified mesh or final result) shown in the canvas's 3D view, + then what is specific to this tool — **Baked base color** and **Baked normal + map** on the result, **Trim mask** on the remesh stage, **Cage shells** on the + result. Wireframe, the shading modes (vertex colours, normals, tangents, UV + channels), the UV fill mode, the island borders (**Bdr**) and spot picking are + the canvas's own controls (status bar and the 3D view's shading row) and + apply to the stage mesh like to any other mesh: with the result stage shown, + the UV layer draws the atlas's islands and their borders on the model in 3D. + The normal-map toggle applies the baked tangent-space normal map to the + result stage only (earlier stages have no tangents); with *Hard edges = UV + islands* the vertex normals are smooth by design, so this toggle is what + shows the transferred detail — the vivid pink/cyan atlas in **Maps ▸ Normal** + is that same detail in tangent space, not corruption. + **Trim mask**, at the *Remesh* stage, shows the untrimmed remesh coloured by what *Trim to source surface* did with each face: green kept, red the back of a sheet (a source face within reach faces the other way), orange a rim or a face with no source within reach — so what the cut removes, and why, is diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 39deecb8..301ff0f0 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -374,6 +374,9 @@ public RenderTexture RenderUvLayer(UvToolContext ctx, Mesh mesh, MeshEntry entry var draws = new List> { new ValueTuple(mesh, entry, 0) }; var tile = new HashSet { new Vector2Int(0, 0) }; Texture bgTex = ResolveUvPreviewBackgroundTexture(ctx, draws); + // A tool entry's preview texture is the surface the 3D view already shows; + // laying it over the model again would only dim it. + if (entry != null && entry.renderer == null && bgTex == entry.previewTexture && !CheckerEnabled) bgTex = null; if (bgTex != null) { float bgAlpha = CheckerEnabled ? 0.5f : (CurrentPreviewMode == PreviewMode.Lightmap ? 0.95f : 0.95f); diff --git a/Editor/Framework/UvLayer3D.cs b/Editor/Framework/UvLayer3D.cs index 3e1c3634..afc981e0 100644 --- a/Editor/Framework/UvLayer3D.cs +++ b/Editor/Framework/UvLayer3D.cs @@ -60,8 +60,10 @@ public void Draw(MeshViewport3D view, UvCanvasView canvas, UvToolContext ctx, var item = items[i]; if (!item.mesh) continue; var entry = i < entries.Count ? entries[i] : null; - if (entry == null) continue; // tool content draws its own wire and overlays + // The status bar's Wire is the one wireframe toggle of both canvas modes, + // tool content included; the UV layer and spot picking need an entry. if (canvas.ShowWireframe) view.DrawWire(item.mesh, item.matrix, WireShaded); + if (entry == null) continue; if (layerVisible) { int id = item.mesh.GetInstanceID(); diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index 36bec5dd..6f352931 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -989,7 +989,16 @@ void SetCanvas3D(bool on) viewportItems.Clear(); viewportEntries.Clear(); if (ActiveTool is IUvTool3D tool3D && tool3D.Get3DContent(viewportItems)) { - for (int i = 0; i < viewportItems.Count; i++) viewportEntries.Add(null); + // A tool item showing the same mesh as one of the tool's UV entries gets + // that entry, so the UV layer (fill, island borders) and spot picking work + // on it in 3D exactly as on a context mesh; other items only get the wire. + for (int i = 0; i < viewportItems.Count; i++) + { + MeshEntry match = null; + foreach (var e in uvContentEntries) + if (viewportItems[i].mesh != null && ctx.DMesh(e) == viewportItems[i].mesh) { match = e; break; } + viewportEntries.Add(match); + } return viewportItems; } viewportItems.Clear(); diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index a7f451fd..b0221726 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -40,8 +40,8 @@ internal sealed class Data View view; Stage stage = Stage.Result; Channel channel; - bool wireframe = true, shaded = true, textured = true, bumpMap = true, vertexColors, cageView, trimMaskView = true; - Material surface, wire; + bool textured = true, bumpMap = true, cageView, trimMaskView = true; + Material surface; Mesh cageOuter, cageInner; int cageMeshId; string cageKey; RemeshSource cageSourceRef; TriangleBvh cageSourceBvh; RemeshBaker.Maps mapSource; @@ -72,7 +72,6 @@ public void Dispose() { Invalidate(); if (surface) Object.DestroyImmediate(surface); - if (wire) Object.DestroyImmediate(wire); } // ── 3D ── @@ -80,34 +79,37 @@ public void Dispose() // panel only picks the stage and the surface/overlay toggles; Fill3D and // Overlay3D feed the viewport through the tool's IUvTool3D implementation. + // Vertical, for a narrow right column beside the canvas. Only what is specific + // to this tool lives here: the stage, the baked maps on the result, the trim + // mask and the cage. Wire, shading modes, UV fill and island borders are the + // canvas's own controls (status bar and the 3D view's shading row) and apply + // to the stage mesh like to any other. void DrawMesh(Data data) { - using (new EditorGUILayout.HorizontalScope()) { - stage = (Stage)EditorGUILayout.EnumPopup(stage, GUILayout.Width(90)); - wireframe = GUILayout.Toggle(wireframe, "Wire", EditorStyles.miniButtonLeft); - shaded = GUILayout.Toggle(shaded, "Shaded", EditorStyles.miniButtonMid); - textured = GUILayout.Toggle(textured, "Texture", EditorStyles.miniButtonMid); - bumpMap = GUILayout.Toggle(bumpMap, "Bump", EditorStyles.miniButtonMid); - vertexColors = GUILayout.Toggle(vertexColors, "Vertex color", EditorStyles.miniButtonMid); - trimMaskView = GUILayout.Toggle(trimMaskView, new GUIContent("Trim", "Remesh stage: colour the untrimmed remesh by what Trim to source surface did with each face."), EditorStyles.miniButtonMid); - cageView = GUILayout.Toggle(cageView, "Cage", EditorStyles.miniButtonRight); - } + stage = (Stage)EditorGUILayout.EnumPopup("Stage", stage); + bool result = stage == Stage.Result; + using (new EditorGUI.DisabledScope(!result || !data.baseColor)) + textured = EditorGUILayout.ToggleLeft(new GUIContent("Baked base color", "Result stage: show the baked base color on the surface."), textured); + using (new EditorGUI.DisabledScope(!result || data.maps == null)) + bumpMap = EditorGUILayout.ToggleLeft(new GUIContent("Baked normal map", "Result stage: shade with the baked tangent-space normal map (the saved material's look)."), bumpMap); + using (new EditorGUI.DisabledScope(stage != Stage.Remesh || !data.trimMask)) + trimMaskView = EditorGUILayout.ToggleLeft(new GUIContent("Trim mask", "Remesh stage: colour the untrimmed remesh by what Trim to source surface did with each face."), trimMaskView); + using (new EditorGUI.DisabledScope(!result || data.geometry == null)) + cageView = EditorGUILayout.ToggleLeft(new GUIContent("Cage shells", "Result stage: the projection limits — every corner pushed ±its reach along its cage direction; orange where the rays start, blue where they end."), cageView); var mesh = data.meshes[(int)stage]; EditorGUILayout.LabelField(mesh ? $"{mesh.vertexCount:N0} vertices · {Triangles(mesh):N0} triangles" : "Run this stage to preview it.", EditorStyles.miniLabel); if (ShowTrimMask(data)) - EditorGUILayout.LabelField("Trim mask: green kept · red back of a sheet (opposite normal) · orange rim / no source within reach", EditorStyles.miniLabel); + EditorGUILayout.LabelField("Trim mask: green kept · red back of a sheet (opposite normal) · orange rim / no source within reach", EditorStyles.wordWrappedMiniLabel); var g = data.geometry; if (g != null) { string coverage = data.maps != null ? $" · {100.0 * data.maps.covered / ((double)data.maps.size * data.maps.size):0.#}% texels used" : ""; EditorGUILayout.LabelField($"Atlas: {g.chartCount:N0} islands{coverage}", EditorStyles.miniLabel); } - EditorGUILayout.LabelField("The canvas shows the stage in 3D and the result's atlas in UV (switch at its bottom).", EditorStyles.centeredGreyMiniLabel); + EditorGUILayout.LabelField("Wire, shading modes, UV fill and island borders: canvas controls (status bar, 3D shading row).", EditorStyles.wordWrappedMiniLabel); if (GUI.changed) RequestRepaint?.Invoke(); } - /// The selected stage mesh for the shared 3D canvas, with the surface - /// material this panel's toggles configure. False when no stage has run. bool ShowTrimMask(Data data) => trimMaskView && stage == Stage.Remesh && data.trimMask; // The mesh the 3D view shows for the stage: the trim mask stands in for the @@ -120,7 +122,7 @@ public bool Fill3D(Data data, List items) if (!mesh) return false; if (!EnsureResources()) return false; bool trimMask = ShowTrimMask(data); - if (shaded || trimMask) { + { bool useTexture = textured && stage == Stage.Result && data.baseColor; surface.SetTexture("_MainTex", useTexture ? data.baseColor : null); surface.SetFloat("_UseTexture", useTexture ? 1 : 0); @@ -132,34 +134,31 @@ public bool Fill3D(Data data, List items) // Beauty maps already contain the lighting; shading them again would // double it, so the surface renders unlit exactly like the saved material. surface.SetFloat("_Lit", stage == Stage.Result && data.maps != null && data.maps.beauty ? 0 : 1); - surface.SetFloat("_UseVertexColor", (vertexColors || trimMask) && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); + surface.SetFloat("_UseVertexColor", trimMask && mesh.HasVertexAttribute(VertexAttribute.Color) ? 1 : 0); surface.SetColor("_Color", Color.white); var materials = new Material[mesh.subMeshCount]; for (int sub = 0; sub < materials.Length; ++sub) materials[sub] = surface; items.Add(new MeshViewport3D.Item(mesh, Matrix4x4.identity, materials)); } - else items.Add(new MeshViewport3D.Item(mesh, Matrix4x4.identity, new Material[0])); return true; } - /// Wire and cage overlays for the stage mesh in the shared 3D canvas. + /// The cage overlay for the result in the shared 3D canvas (the wire is + /// the canvas's own, drawn by the hub's UV layer for every item). public void Overlay3D(Data data, MeshViewport3D view) { var mesh = DisplayMesh(data); if (!mesh || !EnsureResources()) return; - if (wireframe) view.DrawWire(mesh, Matrix4x4.identity, shaded ? new Color(0.05f, 0.05f, 0.05f, 1) : new Color(0.4f, 0.85f, 1f, 1)); if (cageView && stage == Stage.Result && data.geometry != null && data.cageDistance > 0) DrawCage(view, mesh, data); } bool EnsureResources() { - if (surface && wire) return true; + if (surface) return true; var shader = Shader.Find("Hidden/MeshLab/RemeshPreview"); if (!shader) return false; surface = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - wire = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - wire.SetFloat("_Lit", 0); wire.SetFloat("_DepthOffset", -1); return true; } From 1615c8f3d5881f3111805b41800b60376f36970a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 07:54:30 +0000 Subject: [PATCH 085/130] refactor(geometry): one shared geometry and readback module for every baking tool Audit of the BVH and GPU paths: no duplicate BVH (one 3D TriangleBvh, one UV-space TriangleBvh2D, the GPU AO kernel consuming the 3D layout), but a ring of tool-local copies around them. Face normals were computed in five places, bit-exact position welding in four, golden-spiral sample directions in two, 2D barycentrics in two, a point-box distance and a closest-point-on-triangle duplicated in HierarchicalRepack for a brute-force O(N) nearest-face scan, and the blit-to-temporary-RT ReadPixels readback was written out three times. They now live in Editor/Geometry: MeshGeometry (FaceNormals, WeldPositions, SphereDirections, Barycentric, SqDistToAabb) and GpuReadback (Read, ReadColors), used by the remesh bake, trim and cage, the Beauty and source captures, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now. The BVH ray-triangle parallel test was an absolute 1e-7 on a determinant that scales with two edge lengths, so millimetre-scale meshes never registered a hit; it is relative to the triangle now, on the CPU and in the GPU AO kernel, with a regression test. The dead depth-based AO shaders (VertexAOAccum.compute, VertexAODepth.shader) are removed. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 + CLAUDE.md | 1 + Documentation~/REMESH_AND_BAKE.md | 9 ++ Editor/EdgeAnalyzer.cs | 9 +- Editor/Framework/UvCanvasView.cs | 13 +-- Editor/Geometry.meta | 8 ++ Editor/Geometry/GpuReadback.cs | 60 ++++++++++++ Editor/Geometry/GpuReadback.cs.meta | 11 +++ Editor/Geometry/MeshGeometry.cs | 88 +++++++++++++++++ Editor/Geometry/MeshGeometry.cs.meta | 11 +++ Editor/HierarchicalRepack.cs | 140 ++++++--------------------- Editor/RemeshBaker.cs | 45 ++------- Editor/RemeshBeauty.cs | 38 +------- Editor/RemeshSource.cs | 32 ++---- Editor/RemeshTrim.cs | 21 +--- Editor/TriangleBvh.cs | 7 +- Editor/VertexAOBaker.Cpu.cs | 16 +-- Editor/VertexAOBaker.Gpu.cs | 11 +-- Editor/VertexAOBaker.cs | 22 +---- Shaders/VertexAOAccum.compute | 130 ------------------------- Shaders/VertexAOAccum.compute.meta | 9 -- Shaders/VertexAODepth.shader | 63 ------------ Shaders/VertexAODepth.shader.meta | 9 -- Shaders/VertexAORayTrace.compute | 3 +- Tests/Editor/RemeshBakeTests.cs | 37 ++++++- 25 files changed, 292 insertions(+), 503 deletions(-) create mode 100644 Editor/Geometry.meta create mode 100644 Editor/Geometry/GpuReadback.cs create mode 100644 Editor/Geometry/GpuReadback.cs.meta create mode 100644 Editor/Geometry/MeshGeometry.cs create mode 100644 Editor/Geometry/MeshGeometry.cs.meta delete mode 100644 Shaders/VertexAOAccum.compute delete mode 100644 Shaders/VertexAOAccum.compute.meta delete mode 100644 Shaders/VertexAODepth.shader delete mode 100644 Shaders/VertexAODepth.shader.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index a0503d4b..66423f88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. - **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel is a vertical list fit for the narrow third column — Stage, Baked base color, Baked normal map, Trim mask, Cage shells, the atlas's island count and texel usage — and the Maps view; its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too, the 3D shading row's modes apply to the stage mesh, and the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh (the hub pairs a tool's 3D items with its UV entries by mesh). Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background in the UV canvas and is skipped by the 3D layer, which would only dim the surface already showing it. - **Remesh & Bake never touches the source importers.** The remesh stage used to flip `isReadable` on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture itself. Read/Write-disabled meshes are read through `Mesh.AcquireReadOnlyMeshData` regardless, so the flip is gone; skinned sources bake through `BakeMesh` as before. - **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction). `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. ### Fixed +- **BVH rays hit millimetre-scale meshes.** The ray–triangle test rejected a triangle as "parallel" when its Möller–Trumbore determinant was under an absolute 1e-7, but that determinant scales with the product of two edge lengths, so every face of a small model (edges around 1e-4 units) failed the test and the bake, the trim's reach and vertex AO saw nothing. The threshold is relative to the triangle's own scale now, on the CPU BVH and in the GPU AO kernel alike; a regression test casts at a 1e-4 triangle. - **Remesh & Bake: Trim to source surface now actually removes the back of an open sheet.** The trim judged a remesh face by position ("is its centroid behind the source sheet?"), but the voxel remesher fits its output vertices onto the input surface, so the slab around an open wall is not a cell thick: its front and back faces lie ON the sheet, both at zero distance, and both passed — a zero-thickness double-sided result on every wall of a non-closed source (half the positions of a bathroom interior carried two sides), which then broke the projection cage and baked texels from the wrong side. The trim now keeps a face only when a source face within two cells points the same way: the back (opposite normal) and the rims (perpendicular) go, a closed or genuinely double-sided source keeps both sides, an inside-out source is judged by its flipped normals, and when neither reading keeps a tenth of the remesh the stage warns instead of silently keeping everything. On a one-sided open room the trim removes 50% of the remesh (back and rims) where it removed 3% before. - **Remesh & Bake, keep hierarchy: nothing is captured twice, sheared transforms survive, and previews/exports are coherent.** A node's capture folded its whole subtree in while every child renderer was also its own node, so nested renderers baked into two meshes; each renderer is now exactly one node. A node's capture space is the TRS the save restores (root × TRS), so a rotated child under a non-uniformly scaled parent folds the residual shear into its geometry instead of losing it. The node list applies the same mesh-asset name filters (`_COL`, `_LOD{n}`) as the weld, so a normally named object carrying a collision mesh no longer aborts the whole run. Re-running Normals & UV destroys the previous node meshes (each iteration leaked one `HideAndDontSave` mesh per node); a re-bake with vertex color transfer off clears the colors the previous bake left on every node; the UV and cage previews show the largest node's geometry instead of "run the UV stage"; and the hierarchy save imports the map files before configuring their importers (one `AssetEditingScope` deferred the imports past the importer lookup, which could fail and roll the whole folder back). - **Remesh & Bake: Beauty bakes shade lightmapped faces as the game does.** The lightmap was written out as the colour itself; Unity lightmaps store irradiance that the Lit shader multiplies by albedo, so textured lightmapped objects baked as flat light. Lightmapped faces are now albedo × (lightmap + realtime direct) + emission. Point and spot lights respect their shadow setting and strength (they cast opaque shadows regardless before), light ranges and shadow distances are evaluated in world units (a root scaled to 0.01 or 100 no longer stretches or shrinks their reach), and keep-hierarchy nodes evaluate the lighting in their own space instead of the root's. diff --git a/CLAUDE.md b/CLAUDE.md index 41239920..dd8ac33d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,6 +31,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **Entry point:** `Editor/Framework/UvToolHub.cs` — main EditorWindow - **Context:** `Editor/Framework/UvToolContext.cs` — shared state - **Tools:** `Editor/Tools/` — each implements `IUvTool` +- **Geometry:** `Editor/Geometry/` — `MeshGeometry` (face normals, welding, sample directions, barycentrics) and `GpuReadback` (the one GPU → CPU texture read); spatial queries in `Editor/TriangleBvh.cs` / `TriangleBvh2D.cs`. Use these; never add a tool-local copy - **Native:** `Plugins/` binaries, `Native~/` C++ source - **Sidecar:** `Uv2DataAsset` persists UV2/collision data alongside FBX diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 595a2c26..8f9c3f91 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -328,6 +328,15 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. - `Editor/RemeshExporter.cs` — the save: maps, materials, meshes, prefab or FBX, one path for the weld and for hierarchy nodes. - `Editor/RemeshPreview.cs` — the 3D / UV / Maps previews. +- `Editor/Geometry/MeshGeometry.cs` — the shared geometry routines every + projecting or baking tool uses (face normals, bit-exact position welding, + Fibonacci sample directions, 2D barycentrics, point–box distance); + `Editor/Geometry/GpuReadback.cs` — the one GPU → CPU texture readback (blit + through an optional material or sub-rectangle into a linear temporary, then + ReadPixels). Spatial queries are `Editor/TriangleBvh.cs` (3D: ray, nearest, + normal- and facing-filtered, with the GPU layout the AO compute kernel + consumes) and `Editor/TriangleBvh2D.cs` (UV space). No tool carries its own + copy of any of these. ## Geometry implementation diff --git a/Editor/EdgeAnalyzer.cs b/Editor/EdgeAnalyzer.cs index b56cc170..02926f47 100644 --- a/Editor/EdgeAnalyzer.cs +++ b/Editor/EdgeAnalyzer.cs @@ -89,14 +89,7 @@ public static EdgeReport Analyze(Mesh mesh, } // ── 3. Compute face normals for hard edge detection ── - var faceNormals = new Vector3[triCount]; - for (int f = 0; f < triCount; f++) - { - int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; - faceNormals[f] = Vector3.Cross( - verts[i1] - verts[i0], - verts[i2] - verts[i0]).normalized; - } + var faceNormals = MeshGeometry.FaceNormals(verts, tris); // ── 4. Classify each edge ── var report = new EdgeReport(); diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index 301ff0f0..c2a5136a 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1111,19 +1111,12 @@ bool TryPickInShell(MeshEntry entry, PreviewShellData cache, Vector2 uv, int she return false; } + /// Barycentrics of p in the UV triangle abc, true when p is inside (with a small tolerance). public static bool TryBarycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 bary) { - Vector2 v0 = b - a, v1 = c - a, v2 = p - a; - float d00 = Vector2.Dot(v0, v0), d01 = Vector2.Dot(v0, v1), d11 = Vector2.Dot(v1, v1); - float d20 = Vector2.Dot(v2, v0), d21 = Vector2.Dot(v2, v1); - float denom = d00 * d11 - d01 * d01; - if (Mathf.Abs(denom) < 1e-8f) { bary = default; return false; } - float v = (d11 * d20 - d01 * d21) / denom; - float w = (d00 * d21 - d01 * d20) / denom; - float u = 1f - v - w; - bary = new Vector3(u, v, w); + if (!MeshGeometry.Barycentric(p, a, b, c, out bary)) { bary = default; return false; } const float eps = -1e-4f; - return u >= eps && v >= eps && w >= eps; + return bary.x >= eps && bary.y >= eps && bary.z >= eps; } List FilteredEntries(UvToolContext ctx) diff --git a/Editor/Geometry.meta b/Editor/Geometry.meta new file mode 100644 index 00000000..1018a83f --- /dev/null +++ b/Editor/Geometry.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b63907f67df544cc8a27f1d8f0f6454c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Geometry/GpuReadback.cs b/Editor/Geometry/GpuReadback.cs new file mode 100644 index 00000000..345864c5 --- /dev/null +++ b/Editor/Geometry/GpuReadback.cs @@ -0,0 +1,60 @@ +using UnityEngine; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + /// + /// The one way this package reads texture data back from the GPU: blit the + /// source (through an optional material, optionally a sub-rectangle) into a + /// temporary linear render texture and ReadPixels it into a CPU copy. Every + /// capture — source maps, lightmap regions, probe cubemaps — goes through here + /// so the format, colour-space and cleanup rules live in one place. Main thread + /// only (GPU access); the pixel arrays it returns are free to use on workers. + /// + internal static class GpuReadback + { + /// + /// A readable copy of at width × height. hdr selects + /// RGBAFloat (linear floats) over RGBA32. material (optional) is the blit + /// shader; scale/offset (optional) sample the source at uv × scale + offset, so + /// a sub-rectangle can be read without reading the whole texture. The caller + /// owns the returned texture (destroy it when done); null when the blit failed. + /// + public static Texture2D Read(Texture source, int width, int height, bool hdr, Material material = null, + Vector2? scale = null, Vector2? offset = null) + { + if (!source || width < 1 || height < 1) return null; + var previous = RenderTexture.active; + var rt = RenderTexture.GetTemporary(width, height, 0, hdr ? RenderTextureFormat.ARGBFloat : RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); + Texture2D copy = null; + try { + if (material) Graphics.Blit(source, rt, material); + else if (scale.HasValue || offset.HasValue) Graphics.Blit(source, rt, scale ?? Vector2.one, offset ?? Vector2.zero); + else Graphics.Blit(source, rt); + RenderTexture.active = rt; + copy = new Texture2D(width, height, hdr ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true) { hideFlags = HideFlags.HideAndDontSave }; + copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); + copy.Apply(); + return copy; + } + catch (System.Exception) { + if (copy) Object.DestroyImmediate(copy); + return null; + } + finally { + RenderTexture.active = previous; + RenderTexture.ReleaseTemporary(rt); + } + } + + /// Linear float pixels of the source (or of its sub-rectangle) at width × height; null when the blit failed. + public static Color[] ReadColors(Texture source, int width, int height, Material material = null, + Vector2? scale = null, Vector2? offset = null) + { + var copy = Read(source, width, height, true, material, scale, offset); + if (!copy) return null; + try { return copy.GetPixels(); } + finally { Object.DestroyImmediate(copy); } + } + } +} diff --git a/Editor/Geometry/GpuReadback.cs.meta b/Editor/Geometry/GpuReadback.cs.meta new file mode 100644 index 00000000..e0f13b87 --- /dev/null +++ b/Editor/Geometry/GpuReadback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d9178e4041640dd9b95b3ffb7ba3eba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Geometry/MeshGeometry.cs b/Editor/Geometry/MeshGeometry.cs new file mode 100644 index 00000000..531c56f5 --- /dev/null +++ b/Editor/Geometry/MeshGeometry.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// The one home for the small geometry routines every projecting or baking tool + /// needs — face normals, bit-exact position welding, evenly spread sample + /// directions, 2D barycentrics, point–box distance. Pure math, thread-safe, no + /// UnityEngine.Object access, so it runs inside the bake workers. + /// (3D) and (UV space) are the spatial queries; this + /// class is what feeds them and reads their answers. + /// + internal static class MeshGeometry + { + /// Unit face normals from the winding (Unity front = Cross(b − a, c − a)); zero for degenerate faces. + public static Vector3[] FaceNormals(Vector3[] positions, int[] indices) + { + var normals = new Vector3[indices.Length / 3]; + for (int f = 0; f < normals.Length; ++f) { + int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; + Vector3 n = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]); + float length = n.magnitude; + normals[f] = length > 1e-30f ? n / length : Vector3.zero; + } + return normals; + } + + /// + /// Welds vertices by bit-exact position: slot[i] is the index of vertex i's + /// position among the distinct ones (0..count−1). Exact, not tolerance-based, + /// because every producer in this package (xatlas, the simplifier, the capture) + /// copies coordinates verbatim when it splits a vertex. + /// + public static int[] WeldPositions(Vector3[] positions, out int count) + { + var slots = new int[positions.Length]; + var map = new Dictionary<(int, int, int), int>(positions.Length); + for (int i = 0; i < positions.Length; ++i) { + var p = positions[i]; + var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); + if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } + slots[i] = slot; + } + count = map.Count; + return slots; + } + + /// + /// count unit directions evenly spread over the sphere (Fibonacci / golden + /// spiral), deterministic. Hemisphere sampling filters by dot(dir, normal). + /// + public static Vector3[] SphereDirections(int count) + { + var directions = new Vector3[count]; + float golden = Mathf.PI * (3f - Mathf.Sqrt(5f)); + for (int i = 0; i < count; ++i) { + float y = 1f - 2f * (i + 0.5f) / count; + float r = Mathf.Sqrt(Mathf.Max(0f, 1f - y * y)); + float a = golden * i; + directions[i] = new Vector3(Mathf.Cos(a) * r, y, Mathf.Sin(a) * r); + } + return directions; + } + + /// Barycentric weights (u, v, w) of p in the 2D triangle abc, either winding; false when the triangle is degenerate. + public static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 weights) + { + Vector2 ab = b - a, ac = c - a, ap = p - a; + float det = ab.x * ac.y - ab.y * ac.x; + if (Mathf.Abs(det) < 1e-15f) { weights = Vector3.zero; return false; } + float v = (ap.x * ac.y - ap.y * ac.x) / det; + float w = (ab.x * ap.y - ab.y * ap.x) / det; + weights = new Vector3(1 - v - w, v, w); + return true; + } + + /// Squared distance from q to the box [min, max]; 0 inside. + public static float SqDistToAabb(Vector3 q, Vector3 min, Vector3 max) + { + float dx = q.x < min.x ? min.x - q.x : (q.x > max.x ? q.x - max.x : 0f); + float dy = q.y < min.y ? min.y - q.y : (q.y > max.y ? q.y - max.y : 0f); + float dz = q.z < min.z ? min.z - q.z : (q.z > max.z ? q.z - max.z : 0f); + return dx * dx + dy * dy + dz * dz; + } + } +} diff --git a/Editor/Geometry/MeshGeometry.cs.meta b/Editor/Geometry/MeshGeometry.cs.meta new file mode 100644 index 00000000..56fc694f --- /dev/null +++ b/Editor/Geometry/MeshGeometry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7cc63ba2432454ebecb7ce50195fb48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/HierarchicalRepack.cs b/Editor/HierarchicalRepack.cs index 731385fd..38d1f537 100644 --- a/Editor/HierarchicalRepack.cs +++ b/Editor/HierarchicalRepack.cs @@ -1104,114 +1104,42 @@ int Find(int x) // ─── Per-vertex projection (PR-2.7 — Frostbite-style) ──────── - /// Closest point on triangle ABC to query point P. Standard - /// Voronoi-region algorithm (Ericson, Real-Time Collision Detection - /// ch. 5). No allocations, ~30 ops, branch-heavy. - static Vector3 ClosestPointOnTriangle(Vector3 p, Vector3 a, Vector3 b, Vector3 c) + /// The deepest-LOD mesh as a nearest-surface index: a + /// over its non-degenerate faces. Replaces a brute-force scan with per-face + /// AABBs (O(N) per query) with the O(log N) query every projecting tool in the + /// package shares. Nearest() returns the face index in the input order. + sealed class DeepMeshIndex { - Vector3 ab = b - a, ac = c - a, ap = p - a; - float d1 = Vector3.Dot(ab, ap); - float d2 = Vector3.Dot(ac, ap); - if (d1 <= 0f && d2 <= 0f) return a; + readonly TriangleBvh bvh; + readonly int[] faceMap; - Vector3 bp = p - b; - float d3 = Vector3.Dot(ab, bp); - float d4 = Vector3.Dot(ac, bp); - if (d3 >= 0f && d4 <= d3) return b; - - float vc = d1 * d4 - d3 * d2; - if (vc <= 0f && d1 >= 0f && d3 <= 0f) - { - float v = d1 / (d1 - d3); - return a + v * ab; - } - - Vector3 cp = p - c; - float d5 = Vector3.Dot(ab, cp); - float d6 = Vector3.Dot(ac, cp); - if (d6 >= 0f && d5 <= d6) return c; - - float vb = d5 * d2 - d1 * d6; - if (vb <= 0f && d2 >= 0f && d6 <= 0f) - { - float w = d2 / (d2 - d6); - return a + w * ac; - } - - float va = d3 * d6 - d5 * d4; - if (va <= 0f && (d4 - d3) >= 0f && (d5 - d6) >= 0f) - { - float w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); - return b + w * (c - b); - } - - float denom = 1f / (va + vb + vc); - float vv = vb * denom; - float ww = vc * denom; - return a + ab * vv + ac * ww; - } - - /// Squared distance from point q to AABB [mn, mx]; 0 if inside. - /// Used as an early-out filter before the expensive triangle test. - static float SqDistToAabb(Vector3 q, Vector3 mn, Vector3 mx) - { - float dx = q.x < mn.x ? mn.x - q.x : (q.x > mx.x ? q.x - mx.x : 0f); - float dy = q.y < mn.y ? mn.y - q.y : (q.y > mx.y ? q.y - mx.y : 0f); - float dz = q.z < mn.z ? mn.z - q.z : (q.z > mx.z ? q.z - mx.z : 0f); - return dx * dx + dy * dy + dz * dz; - } - - /// Precomputed per-triangle AABBs for the deepest-LOD mesh — - /// pays for itself after ~3 vertex queries vs computing on the fly. - static void BuildDeepAabbs(Vector3[] worldVerts, int[] rawTris, - out Vector3[] mins, out Vector3[] maxs) - { - int n = rawTris.Length / 3; - mins = new Vector3[n]; - maxs = new Vector3[n]; - for (int f = 0; f < n; f++) + public DeepMeshIndex(Face3D[] faces, Vector3[] worldVerts, int[] rawTris) { - var a = worldVerts[rawTris[f * 3]]; - var b = worldVerts[rawTris[f * 3 + 1]]; - var c = worldVerts[rawTris[f * 3 + 2]]; - mins[f] = Vector3.Min(Vector3.Min(a, b), c); - maxs[f] = Vector3.Max(Vector3.Max(a, b), c); + var kept = new List(faces.Length); + for (int f = 0; f < faces.Length; f++) if (faces[f].area > 0f) kept.Add(f); + faceMap = kept.ToArray(); + if (faceMap.Length == 0) return; + var tris = new int[faceMap.Length * 3]; + for (int i = 0; i < faceMap.Length; i++) + { + int f = faceMap[i]; + tris[i * 3] = rawTris[f * 3]; tris[i * 3 + 1] = rawTris[f * 3 + 1]; tris[i * 3 + 2] = rawTris[f * 3 + 2]; + } + bvh = new TriangleBvh(worldVerts, tris); } - } - /// Find the deepest-LOD triangle whose surface is closest to - /// world-space query point . Brute-force scan with - /// AABB rejection — O(N) tris per query, but on our worst test models - /// (~4k deep tris × ~12k fine verts) totals well under a second. A BVH - /// is a follow-up if profiling justifies it. Returns -1 if the deep - /// mesh is empty. - static int ProjectVertexToDeepMesh(Vector3 q, - Face3D[] deepFaces, Vector3[] deepWorldVerts, int[] deepRawTris, - Vector3[] aabbMin, Vector3[] aabbMax, out float bestDist) - { - int closest = -1; - float bestSq = float.MaxValue; - int n = deepFaces.Length; - for (int f = 0; f < n; f++) + /// Face whose surface is closest to q, with the distance; -1 when the mesh is empty. + public int Nearest(Vector3 q, out float distance) { - if (deepFaces[f].area <= 0f) continue; - if (SqDistToAabb(q, aabbMin[f], aabbMax[f]) >= bestSq) continue; - var a = deepWorldVerts[deepRawTris[f * 3]]; - var b = deepWorldVerts[deepRawTris[f * 3 + 1]]; - var c = deepWorldVerts[deepRawTris[f * 3 + 2]]; - Vector3 pt = ClosestPointOnTriangle(q, a, b, c); - float dsq = (pt - q).sqrMagnitude; - if (dsq < bestSq) - { - bestSq = dsq; - closest = f; - } + distance = float.PositiveInfinity; + if (bvh == null) return -1; + var hit = bvh.FindNearest(q); + if (hit.triangleIndex < 0) return -1; + distance = Mathf.Sqrt(hit.distSq); + return faceMap[hit.triangleIndex]; } - bestDist = closest >= 0 ? Mathf.Sqrt(bestSq) : float.PositiveInfinity; - return closest; } - // ─── Public callable for the unified benchmark orchestrator ── /// Build the hierarchical atlas for a single LODGroup and write @@ -1940,8 +1868,7 @@ static void ProjectProxySamplesOntoFineLods(LODGroup lg, Options opts, out _, out _); int faceCount = fineFaces.Length; if (faceCount == 0) continue; - BuildDeepAabbs(fineWorldVerts, fineRawTris, - out var fineMin, out var fineMax); + var fineIndex = new DeepMeshIndex(fineFaces, fineWorldVerts, fineRawTris); var proj = new FineLodProjection { @@ -1964,9 +1891,7 @@ static void ProjectProxySamplesOntoFineLods(LODGroup lg, Options opts, for (int sIdx = 0; sIdx < r.proxySamples.Length; sIdx++) { var sm = r.proxySamples[sIdx]; - int closestFace = ProjectVertexToDeepMesh(sm.worldPos, - fineFaces, fineWorldVerts, fineRawTris, - fineMin, fineMax, out float dist); + int closestFace = fineIndex.Nearest(sm.worldPos, out float dist); if (closestFace < 0 || dist > distAbsThreshold) { proj.missedSamples++; @@ -2226,8 +2151,7 @@ static void CascadeGroupShells(LODGroup lg, Options opts, out _, out _); int fineFaceCount = fineFaces.Length; if (fineFaceCount == 0) continue; - BuildDeepAabbs(fineWorld, fineRawTris, - out var fineMin, out var fineMax); + var fineIndex = new DeepMeshIndex(fineFaces, fineWorld, fineRawTris); // perFineFace[shellId → hits]. List of dicts keeps total // memory proportional to "faces that got any hits". @@ -2236,9 +2160,7 @@ static void CascadeGroupShells(LODGroup lg, Options opts, int totalHits = 0, totalMissed = 0; foreach (var sm in samples) { - int closest = ProjectVertexToDeepMesh(sm.pos, - fineFaces, fineWorld, fineRawTris, - fineMin, fineMax, out float dist); + int closest = fineIndex.Nearest(sm.pos, out float dist); if (closest < 0 || dist > distAbsThreshold) { totalMissed++; diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index b70e21b8..90d561d6 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -59,7 +59,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto bool proxy = settings.sourceShape != RemeshShape.LOD0; Vector3[] faceDirs = null; float depth = 0; if (proxy) { - faceDirs = FaceNormals(target.positions, target.indices); + faceDirs = MeshGeometry.FaceNormals(target.positions, target.indices); depth = Mathf.Max(source.diagonal * settings.proxyDepth, source.diagonal * 1e-4f); } // Projection rays follow the smooth welded "cage" direction, not the vertex @@ -83,7 +83,7 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // no vote in the winding probe. var twoSided = source.TwoSidedFaces(settings.sourceBackfaces); if (twoSided != null) foreach (bool two in twoSided) if (two) ++result.twoSidedFaces; - var faceNormals = FaceNormals(source.positions, source.indices); + var faceNormals = MeshGeometry.FaceNormals(source.positions, source.indices); int winding = ProbeWinding(bvh, source.positions, faceNormals, twoSided); bool facingFilter = winding != 0; if (winding < 0) @@ -214,7 +214,7 @@ static int[] Rasterize(RemeshNative.Geometry target, int size, Vector2[] offsets static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vector3 w) { int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; - return Barycentric(uv, target.uv[a], target.uv[b], target.uv[c], out w) && + return MeshGeometry.Barycentric(uv, target.uv[a], target.uv[b], target.uv[c], out w) && w.x >= -1e-6f && w.y >= -1e-6f && w.z >= -1e-6f; } @@ -377,19 +377,12 @@ internal static Cage BuildCage(RemeshNative.Geometry target, float distance, flo var positions = target.positions; var indices = target.indices; int corners = indices.Length, faces = corners / 3; // Bit-exact position weld: xatlas and the simplifier copy coordinates exactly. - var slots = new int[positions.Length]; - var map = new System.Collections.Generic.Dictionary<(int, int, int), int>(positions.Length); - for (int i = 0; i < positions.Length; ++i) { - var p = positions[i]; - var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); - if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } - slots[i] = slot; - } + var slots = MeshGeometry.WeldPositions(positions, out int positionCount); // Sides: per position a linked list of clusters; a corner joins the cluster // whose running sum its face normal agrees with best (within 120°), else // opens a new one. A sum only ever grows (every member has a positive dot // with it), so it never cancels the way a plain position weld does. - var firstSide = new int[map.Count]; + var firstSide = new int[positionCount]; for (int i = 0; i < firstSide.Length; ++i) firstSide[i] = -1; var nextSide = new System.Collections.Generic.List(); var sideSum = new System.Collections.Generic.List(); @@ -434,7 +427,7 @@ internal static Cage BuildCage(RemeshNative.Geometry target, float distance, flo var welded = new RemeshNative.Geometry { normals = (Vector3[])sideDir.Clone(), indices = cornerSide }; RemeshNative.SmoothNormals(welded, smoothing); var cage = new Cage { directions = new Vector3[corners], reach = new float[corners], side = cornerSide, - positions = map.Count, sides = sideCount, distance = distance }; + positions = positionCount, sides = sideCount, distance = distance }; var deviated = new bool[positions.Length]; for (int c = 0; c < corners; ++c) { int sd = cornerSide[c], v = indices[c]; @@ -548,16 +541,6 @@ internal static Color[] TransferVertexColors(RemeshSource source, RemeshNative.G return colors; } - internal static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out Vector3 weights) - { - Vector2 ab = b - a, ac = c - a, ap = p - a; - float det = ab.x * ac.y - ab.y * ac.x; - if (Mathf.Abs(det) < 1e-15f) { weights = Vector3.zero; return false; } - float v = (ap.x * ac.y - ap.y * ac.x) / det; - float w = (ab.x * ap.y - ab.y * ap.x) / det; - weights = new Vector3(1 - v - w, v, w); return true; - } - internal static void Evaluate(RemeshSource source, int face, Vector3 w, Vector3 targetNormal, Vector4 targetTangent, out Color color, out Color normal, out Color metal, out Color ao, out Color emission) => Evaluate(source, face, w, targetNormal, targetTangent, false, out color, out normal, out metal, out ao, out emission); @@ -624,11 +607,9 @@ internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] float radius = Mathf.Max((mx - mn).magnitude * 0.5f, 1e-6f); const int probes = 256; int outward = 0, inward = 0; - float golden = Mathf.PI * (3f - Mathf.Sqrt(5f)); + var directions = MeshGeometry.SphereDirections(probes); // evenly spread, deterministic for (int i = 0; i < probes; ++i) { - // Fibonacci sphere: evenly spread directions, deterministic. - float y = 1f - 2f * (i + 0.5f) / probes, r = Mathf.Sqrt(Mathf.Max(0f, 1f - y * y)), a = golden * i; - var dir = new Vector3(Mathf.Cos(a) * r, y, Mathf.Sin(a) * r); + var dir = directions[i]; var hit = bvh.Raycast(centre + dir * (radius * 2f), -dir, radius * 4f); if (hit.triangleIndex < 0) continue; if (twoSided != null && hit.triangleIndex < twoSided.Length && twoSided[hit.triangleIndex]) continue; @@ -641,16 +622,6 @@ internal static int ProbeWinding(TriangleBvh bvh, Vector3[] positions, Vector3[] return outward >= inward ? 1 : -1; } - static Vector3[] FaceNormals(Vector3[] positions, int[] indices) - { - var normals = new Vector3[indices.Length / 3]; - for (int f = 0; f < normals.Length; ++f) { - int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; - normals[f] = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).normalized; - } - return normals; - } - // Proxy "empty" texels take the maps of their nearest hit texel (jump flooding // over the whole atlas, O(n log n), so holes hundreds of texels wide fill // without seams) and keep alpha 0 in the base color as the coverage mask. diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 01f8ddf6..2eeadfc3 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -478,25 +478,11 @@ internal static Color[] ReadEquirect(Texture cube, int lod, int width, int heigh var shader = Shader.Find("Hidden/MeshLab/RemeshBeautyEquirect"); if (!shader || !cube) return null; var material = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; - var previous = RenderTexture.active; - var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); - Texture2D copy = null; try { material.SetFloat("_Lod", lod); - Graphics.Blit(cube, rt, material); - RenderTexture.active = rt; - copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); - copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); - copy.Apply(); - return copy.GetPixels(); - } - catch (Exception) { return null; } - finally { - RenderTexture.active = previous; - RenderTexture.ReleaseTemporary(rt); - if (copy) Object.DestroyImmediate(copy); - Object.DestroyImmediate(material); + return GpuReadback.ReadColors(cube, width, height, material); } + finally { Object.DestroyImmediate(material); } } // Six-level equirectangular mip chain (256×128 halving down), mirroring the @@ -535,6 +521,7 @@ internal static Lightmap ReadLightmap(Texture2D lightmap, Texture2D lightmapDir, var region = LightmapRegion(st, lightmap.width, lightmap.height, out Vector4 regionSt); bool hdr = lightmap.format == TextureFormat.RGBAFloat || lightmap.format == TextureFormat.RGBAHalf; var pixels = ReadRegion(lightmap, region, out int width, out int height); + if (pixels == null) throw new InvalidOperationException("GPU readback of lightmap '" + lightmap.name + "' failed."); if (!hdr) { bool rgbm = false; int step = Math.Max(1, pixels.Length / 4096); @@ -588,23 +575,8 @@ static void RegionSize(Rect region, int texWidth, int texHeight, out int width, static Color[] ReadRegion(Texture2D texture, Rect region, out int width, out int height) { RegionSize(region, texture.width, texture.height, out width, out height); - var previous = RenderTexture.active; - var rt = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); - Texture2D copy = null; - try { - // Blit(scale, offset) samples the source at uv × scale + offset — the region. - Graphics.Blit(texture, rt, new Vector2(region.width, region.height), new Vector2(region.x, region.y)); - RenderTexture.active = rt; - copy = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true); - copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); - copy.Apply(); - return copy.GetPixels(); - } - finally { - RenderTexture.active = previous; - RenderTexture.ReleaseTemporary(rt); - if (copy) Object.DestroyImmediate(copy); - } + // Blit(scale, offset) samples the source at uv × scale + offset — the region. + return GpuReadback.ReadColors(texture, width, height, null, new Vector2(region.width, region.height), new Vector2(region.x, region.y)); } } } diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 134dd818..361c449b 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -424,19 +424,7 @@ public byte[] ClassifyParts(float minSize, float minRodVoxels, int resolution) } // Weld by exact position so split-normal / UV-seam duplicates share a slot. - int[] WeldSlots(out int slotCount) - { - var slot = new int[positions.Length]; - var slots = new Dictionary<(int, int, int), int>(positions.Length); - for (int i = 0; i < positions.Length; ++i) { - var p = positions[i]; - var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); - if (!slots.TryGetValue(key, out int id)) { id = slots.Count; slots[key] = id; } - slot[i] = id; - } - slotCount = slots.Count; - return slot; - } + int[] WeldSlots(out int slotCount) => MeshGeometry.WeldPositions(positions, out slotCount); // Union-find over the welded slots joined by the triangles. int[] ComponentForest(int[] slot, int slotCount) @@ -765,24 +753,16 @@ Map Read(Material material, string property, bool color, bool normal = false, bo if (!cache.TryGetValue(key, out var image)) { bytes += (long)texture.width * texture.height * (hdr ? 16 : 4); if (bytes > 512L * 1024 * 1024) throw new InvalidOperationException("Source texture readback exceeds 512 MiB. Process the model in smaller groups."); - var previous = RenderTexture.active; - var rt = RenderTexture.GetTemporary(texture.width, texture.height, 0, hdr ? RenderTextureFormat.ARGBFloat : RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); - Texture2D copy = null; + blit.SetFloat("_HDR", hdr ? 1 : 0); + blit.SetFloat("_DecodeNormal", normal ? 1 : 0); blit.SetFloat("_ColorMap", color ? 1 : 0); + var copy = GpuReadback.Read(texture, texture.width, texture.height, hdr, blit); + if (!copy) throw new InvalidOperationException(material.name + "." + property + ": GPU readback of '" + texture.name + "' failed."); try { - blit.SetFloat("_HDR", hdr ? 1 : 0); - blit.SetFloat("_DecodeNormal", normal ? 1 : 0); blit.SetFloat("_ColorMap", color ? 1 : 0); - Graphics.Blit(texture, rt, blit); - RenderTexture.active = rt; - copy = new Texture2D(texture.width, texture.height, hdr ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); - copy.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0); copy.Apply(); image = new Image { pixels = hdr ? null : copy.GetPixels32(), hdrPixels = hdr ? copy.GetPixels() : null, srgb = color && !hdr, width = texture.width, height = texture.height, wrapU = texture.wrapModeU, wrapV = texture.wrapModeV }; cache.Add(key, image); } - finally { - RenderTexture.active = previous; RenderTexture.ReleaseTemporary(rt); - if (copy) Object.DestroyImmediate(copy); - } + finally { Object.DestroyImmediate(copy); } } map.image = image; return map; diff --git a/Editor/RemeshTrim.cs b/Editor/RemeshTrim.cs index a1c08e64..7395809f 100644 --- a/Editor/RemeshTrim.cs +++ b/Editor/RemeshTrim.cs @@ -54,7 +54,7 @@ internal static Result Trim(RemeshNative.IndexedMesh mesh, Vector3[] sourcePosit var result = new Result { mesh = mesh, classes = new byte[faces] }; if (faces == 0 || sourceIndices.Length < 3) return result; var bvh = new TriangleBvh(sourcePositions, sourceIndices); - var sourceNormals = FaceNormals(sourcePositions, sourceIndices); + var sourceNormals = MeshGeometry.FaceNormals(sourcePositions, sourceIndices); var classes = Classify(mesh, bvh, sourceNormals, maxDistance, token, out int kept); // A source wound inside out would reject everything; judge it by its flipped // normals instead, and give up (keep all) when neither reading keeps a tenth. @@ -134,14 +134,7 @@ internal static int OrientConsistently(RemeshNative.IndexedMesh mesh) var positions = mesh.positions; var indices = mesh.indices; int faces = indices.Length / 3; if (faces < 2) return 0; - var slots = new int[positions.Length]; - var map = new Dictionary<(int, int, int), int>(positions.Length); - for (int i = 0; i < positions.Length; ++i) { - var p = positions[i]; - var key = (BitConverter.SingleToInt32Bits(p.x), BitConverter.SingleToInt32Bits(p.y), BitConverter.SingleToInt32Bits(p.z)); - if (!map.TryGetValue(key, out int slot)) { slot = map.Count; map[key] = slot; } - slots[i] = slot; - } + var slots = MeshGeometry.WeldPositions(positions, out _); // Edge → the faces along it with the direction each traverses it (low→high). var edges = new Dictionary<(int, int), List<(int face, bool dir)>>(faces * 3); for (int f = 0; f < faces; ++f) @@ -185,15 +178,5 @@ internal static int OrientConsistently(RemeshNative.IndexedMesh mesh) } return flipped; } - - static Vector3[] FaceNormals(Vector3[] positions, int[] indices) - { - var normals = new Vector3[indices.Length / 3]; - for (int f = 0; f < normals.Length; ++f) { - int a = indices[f * 3], b = indices[f * 3 + 1], c = indices[f * 3 + 2]; - normals[f] = Vector3.Cross(positions[b] - positions[a], positions[c] - positions[a]).normalized; - } - return normals; - } } } diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index 1bbff231..4998bd7d 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -449,14 +449,17 @@ static bool RayTriangleIntersect(Vector3 origin, Vector3 dir, out float t, out float u, out float v) { t = 0; u = 0; v = 0; - const float EPSILON = 1e-7f; Vector3 edge1 = b - a; Vector3 edge2 = c - a; Vector3 h = Vector3.Cross(dir, edge2); float det = Vector3.Dot(edge1, h); - if (det > -EPSILON && det < EPSILON) return false; // parallel + // Parallel test relative to the triangle's own scale: |det| ≤ |e1|·|e2|, so an + // absolute 1e-7 silently rejected every face of a millimetre-scale mesh + // (edges ~1e-4 → det ~1e-8) as "parallel" and the bake missed the whole model. + float scale = Mathf.Sqrt(edge1.sqrMagnitude * edge2.sqrMagnitude); + if (Mathf.Abs(det) <= 1e-7f * scale) return false; float invDet = 1f / det; Vector3 s = origin - a; diff --git a/Editor/VertexAOBaker.Cpu.cs b/Editor/VertexAOBaker.Cpu.cs index 7ed4bd89..eb0a4287 100644 --- a/Editor/VertexAOBaker.Cpu.cs +++ b/Editor/VertexAOBaker.Cpu.cs @@ -35,22 +35,10 @@ static Dictionary BakeMultiMeshCPU( var allVertsArr = allVerts.ToArray(); var allTrisArr = allTris.ToArray(); var bvh = new TriangleBvh(allVertsArr, allTrisArr); - var directions = GenerateSphereDirections(settings.sampleCount); + var directions = MeshGeometry.SphereDirections(settings.sampleCount); // Precompute face normals for backface culling - Vector3[] faceNormals = null; - if (settings.backfaceCulling) - { - int faceCount = allTrisArr.Length / 3; - faceNormals = new Vector3[faceCount]; - for (int f = 0; f < faceCount; f++) - { - var a = allVertsArr[allTrisArr[f * 3]]; - var b = allVertsArr[allTrisArr[f * 3 + 1]]; - var c = allVertsArr[allTrisArr[f * 3 + 2]]; - faceNormals[f] = Vector3.Cross(b - a, c - a).normalized; - } - } + Vector3[] faceNormals = settings.backfaceCulling ? MeshGeometry.FaceNormals(allVertsArr, allTrisArr) : null; Bounds combinedBounds = ComputeCombinedBounds(targets); float extent = Mathf.Max(combinedBounds.extents.magnitude, 0.0001f); diff --git a/Editor/VertexAOBaker.Gpu.cs b/Editor/VertexAOBaker.Gpu.cs index ce23e821..cb55a0c7 100644 --- a/Editor/VertexAOBaker.Gpu.cs +++ b/Editor/VertexAOBaker.Gpu.cs @@ -169,7 +169,7 @@ void Prepare( var bvh = new TriangleBvh(allVerts.ToArray(), allTris.ToArray()); bvh.GetGPUData(out var gpuNodes, out var gpuTriIndices, out var gpuVerts, out var gpuTris); - var directions = GenerateSphereDirections(settings.sampleCount); + var directions = MeshGeometry.SphereDirections(settings.sampleCount); dirCount = directions.Length; // Auto batch size: larger BVH → smaller batches to avoid TDR @@ -179,16 +179,9 @@ void Prepare( // Precompute face normals int faceCount = totalTris; - var faceNormals = new Vector3[faceCount]; var allVertsArr = allVerts.ToArray(); var allTrisArr = allTris.ToArray(); - for (int f = 0; f < faceCount; f++) - { - var a = allVertsArr[allTrisArr[f * 3]]; - var b = allVertsArr[allTrisArr[f * 3 + 1]]; - var c = allVertsArr[allTrisArr[f * 3 + 2]]; - faceNormals[f] = Vector3.Cross(b - a, c - a).normalized; - } + var faceNormals = MeshGeometry.FaceNormals(allVertsArr, allTrisArr); Bounds combinedBounds = ComputeCombinedBounds(targets); float extent = Mathf.Max(combinedBounds.extents.magnitude, 0.0001f); diff --git a/Editor/VertexAOBaker.cs b/Editor/VertexAOBaker.cs index 4e288499..12001e25 100644 --- a/Editor/VertexAOBaker.cs +++ b/Editor/VertexAOBaker.cs @@ -110,7 +110,7 @@ public static Dictionary ApplyFaceAreaCorrection( return rawAO; var bvh = new TriangleBvh(allVerts.ToArray(), allTris.ToArray()); - var directions = GenerateSphereDirections(settings.sampleCount); + var directions = MeshGeometry.SphereDirections(settings.sampleCount); Bounds combinedBounds = ComputeCombinedBounds(targets); float extent = Mathf.Max(combinedBounds.extents.magnitude, 0.0001f); @@ -394,26 +394,6 @@ static Mesh EnsureReadable(Mesh mesh) return copy; } - static Vector3[] GenerateSphereDirections(int count) - { - // Full sphere via golden spiral — per-vertex dot(dir, normal) filter - // selects the correct hemisphere. This ensures all normal orientations - // get equal sampling coverage (fixes black artifacts on sideways/downward faces). - var dirs = new Vector3[count]; - float goldenRatio = (1f + Mathf.Sqrt(5f)) / 2f; - for (int i = 0; i < count; i++) - { - float cosTheta = 1f - 2f * (i + 0.5f) / count; // -1 to +1 (full sphere) - float sinTheta = Mathf.Sqrt(1f - cosTheta * cosTheta); - float phi = 2f * Mathf.PI * i / goldenRatio; - dirs[i] = new Vector3( - sinTheta * Mathf.Cos(phi), - cosTheta, - sinTheta * Mathf.Sin(phi)); - } - return dirs; - } - static Bounds ComputeCombinedBounds(List<(Mesh mesh, Matrix4x4 transform)> meshes) { var bounds = new Bounds(); diff --git a/Shaders/VertexAOAccum.compute b/Shaders/VertexAOAccum.compute deleted file mode 100644 index e9971c8a..00000000 --- a/Shaders/VertexAOAccum.compute +++ /dev/null @@ -1,130 +0,0 @@ -// VertexAOAccum.compute — GPU vertex AO accumulation via depth-map hemisphere sampling. -// Two kernels: AccumulateAO (per direction) and FinalizeAO (compute final AO values). -// Uses cosine-weighted fixed-point accumulation with distance falloff. -// Depth is computed from view-space Z for platform independence (no reversed-Z dependency). - -#pragma kernel AccumulateAO -#pragma kernel FinalizeAO - -#define FP_SCALE 100000u - -// ── Buffers ── -StructuredBuffer _Positions; -StructuredBuffer _Normals; -RWStructuredBuffer _AOCounters; // (occludedWeight, totalWeight) per vertex, fixed-point -RWStructuredBuffer _AOResult; // final AO per vertex - -// ── Depth texture from current direction ── -Texture2D _DepthTex; - -// ── Uniforms ── -float4x4 _VP; // GPU-adjusted proj * view (for UV projection only) -float4x4 _ViewMatrix; // raw view matrix (for linear depth computation) -float _InvDepthRange; // 1 / (2 * extent) -float3 _SampleDir; -float _DepthBias; -float _NormalOffset; -float _Intensity; -uint _VertexCount; -uint _DepthTexSize; -float _DepthRange; // = 2 * extent (ortho near-to-far in world units) -float _MaxDist; // max occlusion distance for falloff (0 = no falloff) -float _CosineWeighted; // 1 = cosine-weighted, 0 = uniform -float _FlipNormals; // 1 = thickness mode (flip hemisphere), 0 = normal AO - -// ══════════════════════════════════════════════════════════ -// Kernel 0: AccumulateAO — dispatch once per hemisphere direction -// ══════════════════════════════════════════════════════════ - -[numthreads(64, 1, 1)] -void AccumulateAO(uint3 id : SV_DispatchThreadID) -{ - if (id.x >= _VertexCount) return; - - float3 pos = _Positions[id.x]; - float3 normal = _Normals[id.x]; - - // Thickness mode: flip hemisphere — rays go into the mesh - float3 hemisphereNorm = (_FlipNormals > 0.5) ? -normal : normal; - - // Per-vertex jitter: rotate sample direction around Y axis - // to break banding artifacts with low sample counts - uint hash = id.x * 2654435761u; - float jitterAngle = (float)(hash % 360u) * 0.01745329; // deg2rad - float jCos = cos(jitterAngle); - float jSin = sin(jitterAngle); - float3 jitteredDir = float3( - _SampleDir.x * jCos - _SampleDir.z * jSin, - _SampleDir.y, - _SampleDir.x * jSin + _SampleDir.z * jCos - ); - - // Backface cull using jittered direction (matches CPU path) - float ndot = dot(jitteredDir, hemisphereNorm); - if (ndot <= 0.0) return; - - // Cosine-weighted: ndot; uniform: 1.0 - float weight = (_CosineWeighted > 0.5) ? ndot : 1.0; - uint wWeight = (uint)(weight * FP_SCALE); - - // Offset position along hemisphere normal to avoid self-intersection - float3 offsetPos = pos + hemisphereNorm * _NormalOffset; - - // Project to clip space for UV lookup (GPU-adjusted VP handles Y-flip) - float4 clip = mul(_VP, float4(offsetPos, 1.0)); - float2 ndc_xy = clip.xy / clip.w; - float2 uv = ndc_xy * 0.5 + 0.5; - - // Compute linear depth from view-space Z (platform-independent, matches depth shader) - float viewZ = mul(_ViewMatrix, float4(offsetPos, 1.0)).z; - float vertexDepth = -viewZ * _InvDepthRange; - - // Out of bounds → not occluded from this direction - if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) - { - InterlockedAdd(_AOCounters[id.x].y, wWeight); - return; - } - - // Sample depth texture - int2 texCoord = int2(uv * (float)_DepthTexSize); - texCoord = clamp(texCoord, int2(0, 0), int2(_DepthTexSize - 1, _DepthTexSize - 1)); - float sampledDepth = _DepthTex.Load(int3(texCoord, 0)); - - // Compare: vertex is occluded if something closer blocks it - if (vertexDepth > sampledDepth + _DepthBias) - { - // Distance falloff: closer occluders contribute more - float depthDiff = vertexDepth - sampledDepth; - float worldDist = depthDiff * _DepthRange; - float falloff = (_MaxDist > 0.0) ? saturate(1.0 - worldDist / _MaxDist) : 1.0; - - uint wOccluded = (uint)(weight * falloff * FP_SCALE); - InterlockedAdd(_AOCounters[id.x].x, wOccluded); - } - InterlockedAdd(_AOCounters[id.x].y, wWeight); -} - -// ══════════════════════════════════════════════════════════ -// Kernel 1: FinalizeAO — dispatch once after all directions -// ══════════════════════════════════════════════════════════ - -[numthreads(64, 1, 1)] -void FinalizeAO(uint3 id : SV_DispatchThreadID) -{ - if (id.x >= _VertexCount) return; - - uint occluded = _AOCounters[id.x].x; - uint sampled = _AOCounters[id.x].y; - - float ao = 1.0; - if (sampled > 0) - ao = 1.0 - (float)occluded / (float)sampled; - - // Thickness: invert so closer hits = brighter (1=thin, 0=thick) - if (_FlipNormals > 0.5) - ao = 1.0 - ao; - - ao = pow(saturate(ao), _Intensity); - _AOResult[id.x] = ao; -} diff --git a/Shaders/VertexAOAccum.compute.meta b/Shaders/VertexAOAccum.compute.meta deleted file mode 100644 index bd53ad22..00000000 --- a/Shaders/VertexAOAccum.compute.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: e647246d2c5f41f49f790f72bc9a8d59 -ComputeShaderImporter: - externalObjects: {} - currentAPIMask: 0 - currentBuildTarget: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Shaders/VertexAODepth.shader b/Shaders/VertexAODepth.shader deleted file mode 100644 index 006af2b8..00000000 --- a/Shaders/VertexAODepth.shader +++ /dev/null @@ -1,63 +0,0 @@ -Shader "Hidden/UnityMeshLab/VertexAODepth" -{ - // Renders mesh geometry outputting linear depth (0=near, 1=far) to an RFloat color target. - // Depth is computed from view-space Z for platform independence (no reversed-Z dependency). - Properties - { - [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull Mode", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Opaque" } - - Pass - { - // Use BlendOp Min to keep the closest (smallest) depth per pixel. - // Eliminates all hardware Z-buffer / reversed-Z issues. - ZWrite Off - ZTest Always - BlendOp Min - Blend One One - Cull [_Cull] - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - - #include "UnityCG.cginc" - - float4x4 _AO_ViewMatrix; - float _AO_InvDepthRange; - - struct appdata - { - float4 vertex : POSITION; - }; - - struct v2f - { - float4 pos : SV_POSITION; - float depth : TEXCOORD0; - }; - - v2f vert(appdata v) - { - v2f o; - o.pos = UnityObjectToClipPos(v.vertex); - - // Compute linear depth from view-space Z (platform-independent). - // View matrix is the raw (non-GPU-adjusted) world-to-camera transform. - float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; - float viewZ = mul(_AO_ViewMatrix, float4(worldPos, 1.0)).z; - o.depth = -viewZ * _AO_InvDepthRange; - return o; - } - - float frag(v2f i) : SV_Target - { - return i.depth; - } - ENDCG - } - } -} diff --git a/Shaders/VertexAODepth.shader.meta b/Shaders/VertexAODepth.shader.meta deleted file mode 100644 index 085c22d9..00000000 --- a/Shaders/VertexAODepth.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: e91b3f31bfb14751998a5e47adb52919 -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/Shaders/VertexAORayTrace.compute b/Shaders/VertexAORayTrace.compute index 10f474e7..9a2af940 100644 --- a/Shaders/VertexAORayTrace.compute +++ b/Shaders/VertexAORayTrace.compute @@ -74,7 +74,8 @@ bool RayTriangle(float3 origin, float3 dir, float3 a, float3 b, float3 c, float3 h = cross(dir, edge2); float det = dot(edge1, h); - if (abs(det) < EPSILON) return false; + // Relative to the triangle's scale, like the CPU BVH: millimetre meshes must hit too. + if (abs(det) <= 1e-7 * sqrt(dot(edge1, edge1) * dot(edge2, edge2))) return false; float invDet = 1.0 / det; float3 s = origin - a; diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 6edd9e98..611f7e77 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -39,11 +39,42 @@ public void SettingsRejectNaNAndInvalidResolution() [Test] public void BarycentricSupportsBothWindings() { - Assert.IsTrue(RemeshBaker.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.right, Vector2.up, out var a)); - Assert.IsTrue(RemeshBaker.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.up, Vector2.right, out var b)); + Assert.IsTrue(MeshGeometry.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.right, Vector2.up, out var a)); + Assert.IsTrue(MeshGeometry.Barycentric(new Vector2(0.2f,0.3f), Vector2.zero, Vector2.up, Vector2.right, out var b)); Assert.That(a.x, Is.EqualTo(0.5f).Within(1e-5f)); Assert.That(a.y, Is.EqualTo(b.z).Within(1e-5f)); - Assert.IsFalse(RemeshBaker.Barycentric(Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero, out _)); + Assert.IsFalse(MeshGeometry.Barycentric(Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero, out _)); + } + [Test] + public void BvhRaycastHitsMillimetreScaleTriangles() + { + // Edges of 1e-4: the old absolute parallel epsilon rejected det ≈ 1e-8 and the + // ray passed straight through. The test is relative to the triangle now. + float s = 1e-4f; + var p = new[] { new Vector3(0,0,0), new Vector3(s,0,0), new Vector3(0,s,0) }; + var bvh = new TriangleBvh(p, new[] { 0,1,2 }); + var hit = bvh.Raycast(new Vector3(s*0.25f, s*0.25f, 1f), Vector3.back, 2f); + Assert.AreEqual(0, hit.triangleIndex); + Assert.That(hit.t, Is.EqualTo(1f).Within(1e-5f)); + Assert.That(hit.barycentric.x + hit.barycentric.y + hit.barycentric.z, Is.EqualTo(1f).Within(1e-4f)); + Assert.AreEqual(-1, bvh.Raycast(new Vector3(s*2f, s*2f, 1f), Vector3.back, 2f).triangleIndex, "beside the triangle"); + Assert.AreEqual(-1, bvh.Raycast(new Vector3(s*0.25f, s*0.25f, 1f), Vector3.right, 2f).triangleIndex, "parallel to it"); + } + [Test] + public void MeshGeometryHelpersAgreeWithTheirDefinitions() + { + var p = new[] { Vector3.zero, Vector3.right, Vector3.up, Vector3.zero, Vector3.right }; + var slots = MeshGeometry.WeldPositions(p, out int count); + Assert.AreEqual(3, count); Assert.AreEqual(slots[0], slots[3]); Assert.AreEqual(slots[1], slots[4]); Assert.AreNotEqual(slots[0], slots[2]); + var n = MeshGeometry.FaceNormals(p, new[] { 0,1,2, 0,0,1 }); + Assert.That(Vector3.Angle(n[0], Vector3.forward), Is.LessThan(1e-4f)); Assert.AreEqual(Vector3.zero, n[1]); + var dirs = MeshGeometry.SphereDirections(64); + Assert.AreEqual(64, dirs.Length); + Vector3 sum = Vector3.zero; + foreach (var d in dirs) { Assert.That(d.magnitude, Is.EqualTo(1f).Within(1e-5f)); sum += d; } + Assert.That(sum.magnitude, Is.LessThan(2f), "evenly spread: the directions nearly cancel"); + Assert.That(MeshGeometry.SqDistToAabb(new Vector3(2,0,0), Vector3.zero, Vector3.one), Is.EqualTo(1f).Within(1e-6f)); + Assert.AreEqual(0f, MeshGeometry.SqDistToAabb(new Vector3(0.5f,0.5f,0.5f), Vector3.zero, Vector3.one)); } [Test] public void MaterialChannelsRemainSeparateAndEmissionRetainsHdr() From 576017d788aa1856153e5b5fb695205d50edb392 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 08:15:21 +0000 Subject: [PATCH 086/130] feat(gpu): full-featured GPU BVH queries and a GPU projection path for the bake Shaders/BvhTraversal.hlsl is the one traversal for every compute kernel: the TriangleBvh node layout, the relative ray-triangle test, closest point on triangle with barycentrics, ordered ray traversal, nearest with box-distance pruning, the facing filter, the normal filter and the either-side mask. Shaders/BvhQueries.compute answers batches of ray and nearest-point queries with the CPU's hit records; GpuBvh (C#) uploads a TriangleBvh once, streams batches through it, or binds the tree to another kernel. The vertex-AO kernel includes the shared traversal and binds the tree through GpuBvh instead of carrying its own copy; the compute-shader lookup is shared too. The bake is one code path with a pluggable resolver: Prepare, then bands of rows (requests built on workers, answered by the CPU BVH in parallel or by the GPU in one dispatch per batch, evaluated on workers), then fills, diagnostics, dilation and vertex colours. "GPU projection" (bake stage, default on where compute shaders exist) picks the GPU resolver; the pipeline drives the band loop from the main thread, falls back to the CPU when the kernel is missing, and the status names the path. Results are the CPU's. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 18 +- Editor/Geometry/ComputeShaders.cs | 33 +++ Editor/Geometry/ComputeShaders.cs.meta | 11 + Editor/Geometry/GpuBvh.cs | 149 +++++++++++ Editor/Geometry/GpuBvh.cs.meta | 11 + Editor/RemeshBaker.cs | 334 ++++++++++++++++++------- Editor/RemeshPipeline.cs | 10 +- Editor/RemeshSettings.cs | 3 + Editor/Tools/RemeshBakeTool.cs | 4 + Editor/VertexAOBaker.Gpu.cs | 65 +---- Shaders/BvhQueries.compute | 40 +++ Shaders/BvhQueries.compute.meta | 9 + Shaders/BvhTraversal.hlsl | 222 ++++++++++++++++ Shaders/BvhTraversal.hlsl.meta | 7 + Shaders/VertexAORayTrace.compute | 123 +-------- 16 files changed, 776 insertions(+), 264 deletions(-) create mode 100644 Editor/Geometry/ComputeShaders.cs create mode 100644 Editor/Geometry/ComputeShaders.cs.meta create mode 100644 Editor/Geometry/GpuBvh.cs create mode 100644 Editor/Geometry/GpuBvh.cs.meta create mode 100644 Shaders/BvhQueries.compute create mode 100644 Shaders/BvhQueries.compute.meta create mode 100644 Shaders/BvhTraversal.hlsl create mode 100644 Shaders/BvhTraversal.hlsl.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 66423f88..d1bdd095 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **The GPU BVH does everything the CPU one does, and the bake uses it.** The only GPU tree so far was the vertex-AO kernel's private copy, which answered just "how far until a hit". `Shaders/BvhTraversal.hlsl` is now the one traversal for every compute kernel — the same node layout as `TriangleBvh`, the same relative ray–triangle test, closest-point-on-triangle with barycentrics, ordered (nearer child first) ray traversal, nearest with box-distance pruning, the facing filter, the normal filter and the either-side mask — and `Shaders/BvhQueries.compute` answers batches of ray and nearest-point queries with the same hit records the CPU returns (face index, t or distance², weights of vertices 0, 1, 2). `GpuBvh` (C#) uploads a `TriangleBvh` once and streams batches through it, or binds the tree to another kernel; the AO kernel now includes the shared traversal and binds the tree through it instead of carrying its own. The Remesh & Bake bake is restructured into one code path with a pluggable resolver: Prepare (coverage, BVH, cage, orientation probe), then bands of rows — sample requests built on workers, answered either by the CPU BVH in parallel or by the GPU in one dispatch per batch, evaluated on workers — then the fills, diagnostics, dilation and vertex colours. **GPU projection** (bake stage, default on where compute shaders exist) picks the GPU resolver; the pipeline drives the band loop from the main thread so the dispatches are legal, falls back to the CPU when the kernel asset is missing, and the bake status says which path ran. Results are the CPU's. - **Remesh & Bake: two-sided sources, a visible trim mask, and a re-wound sheet.** A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too. **Source backfaces** (remesh stage) decides which source faces count from behind: *From materials* (default) reads each captured material's cull mode property (`_Cull`, `_CullMode` = Off) or double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`), *Always* treats every face as two-sided (for a `Cull Off` baked into the shader, which no property reveals), *Never* keeps only fronts. A two-sided source still trims to ONE sheet — doubling the geometry would double the atlas and the triangle count for nothing — and the saved material renders both sides of it instead (URP Lit/Unlit: cull Off and double-sided GI; Standard and Unlit/Texture have no two-sided mode, so the save warns and says so in its status); two-sided faces pass the bake's front-face filter from either side (ray and nearest fallback alike) and cast no vote in the winding probe. After the cut the kept sheet is re-wound to one consistent orientation per connected piece, the majority of each piece keeping the side that agreed with the source, so a source modeled with arbitrary winding comes out orientable. The Remesh stage's new **Trim** toggle (3D panel) colours the untrimmed remesh by class — green kept, red back of a sheet, orange rim / no source within reach — so what the trim removes, and why, is visible before the simplifier runs; the remesh status now also reaches the Console, with the trimmed, re-wound and two-sided counts, and RemeshDiag prints the per-class breakdown. - **Remesh & Bake: a sided, fitted projection cage.** The cage was one direction per welded position: the area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet — a wall of a non-closed source that the voxel remesh turned into a one-cell slab and the simplifier collapsed to zero thickness, both windings on the same vertices — the two sides summed to nothing and the normalized noise sent rays off at up to 180° from their face, with the cage preview spiking across the whole model and most texels baking from the wrong side. The cage is now built per face corner and per **side**: corners at one position are clustered by the hemisphere their face normals share (within 120°), each cluster is averaged (face area × corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back; every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. **Cage smoothing** (bake stage, 0–10, default 2) exposes the passes. **Fit cage to source** (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1× and 8× the projection distance and smooths it over the sides, so the rays reach as far as the decimation drifted and no further; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach, one line per welded side pair (a double-sided sheet shows both shells), rebuilt live from distance, smoothing, fit and source. RemeshDiag reports the side and double-sided position counts and the longest reach; the bake staleness key covers the new settings. - **A shared 3D view in the canvas, for every tab.** The canvas gains a **UV | 3D** switch: a segmented pill at the bottom centre with the active side in the accent colour, present in every canvas state (also when the UV canvas has nothing to draw), remembered across sessions, and flipped with **Tab** while the mouse is over the canvas. The 3D side looks like a scene view: a blue-grey background, a fading ground grid under the content (Grid toggle), the pivot's axes, and the shading modes as a segmented row along the top of the canvas. The 3D side is one module, `MeshViewport3D`: an orbitable lit view (drag orbits, middle button or alt-drag pans, scroll zooms, F or a middle double-click frames) with shading modes *Shaded* (scene materials), *Vert Colors*, *Normals*, *Tangents* and *UV0–UV3* (channels offered only where a mesh carries them), a wire overlay and a Lit toggle. By default it shows the preview LOD's meshes exactly as the UV canvas lists them (isolated mesh group included). Tools take part through `IUvTool3D`: they can replace the content and draw overlays (meshes, wire, coloured lines, screen-sized dots). The 3D side is the UV viewer on the model: the same bottom bar (fill mode and alpha, Wire, Bdr, preview mode with checker channels and lightmap exposure) and the same Spot / Lock / Clear and UV0 / UV1 controls drive it — the active fill mode, borders and preview background are rendered per mesh into a UV-space layer and laid over the surface through the preview UV channel, Wire draws as true 3D lines, and Spot picks the face under the mouse (camera ray) into the same hover/selection state the UV canvas and the tools read, with the hovered and selected shells highlighted on the surface and the info panel in the corner. Remesh & Bake now shows its pipeline stage in that view — its right sidebar keeps the stage picker and the Wire / Shaded / Texture / Bump / Vertex color / Cage toggles, the small embedded preview is gone — and Prefab Builder's *Edges* and *Problems* scene previews paint their edge classes and unused-vertex dots there too. diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index 8f9c3f91..c80cde0e 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -157,7 +157,14 @@ Before the UV stage the canvas shows the selected model as usual. break on hard edges), straightness, roundness, iterations, max island area and border length (source units, 0 = unlimited), rotation, 4×4 block alignment and brute-force packing. Texture size and padding set the atlas. -5. **Bake** — projection distance (fraction of the source bounds diagonal), +5. **Bake** — **GPU projection** (default on where compute shaders exist) runs + the geometry queries — the projection rays and the nearest-point fallbacks — + on the GPU through `Shaders/BvhQueries.compute`, the same BVH as the CPU with + the same filters and the same hit records, so the result is the one the CPU + path produces, usually several times faster on large atlases; the atlas is + processed in bands of rows (sample requests built on workers, answered in one + dispatch per batch, evaluated on workers), and the status says which path + ran. Projection distance (fraction of the source bounds diagonal), *Samples per texel* (1, 4, 9 or 16; stratified supersampling that also covers texels only partly inside an island, for clean chart edges and less aliasing) and vertex color transfer: *Vertex color (RGB)* and *Vertex alpha* copy the @@ -334,9 +341,12 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. `Editor/Geometry/GpuReadback.cs` — the one GPU → CPU texture readback (blit through an optional material or sub-rectangle into a linear temporary, then ReadPixels). Spatial queries are `Editor/TriangleBvh.cs` (3D: ray, nearest, - normal- and facing-filtered, with the GPU layout the AO compute kernel - consumes) and `Editor/TriangleBvh2D.cs` (UV space). No tool carries its own - copy of any of these. + normal- and facing-filtered, either-side masks) and `Editor/TriangleBvh2D.cs` + (UV space); `Editor/Geometry/GpuBvh.cs` is the same tree on the GPU with the + same queries in batches (`Shaders/BvhQueries.compute`), and + `Shaders/BvhTraversal.hlsl` is the one traversal every compute kernel includes + (the vertex-AO kernel binds the tree through `GpuBvh.Bind`). No tool carries + its own copy of any of these. ## Geometry implementation diff --git a/Editor/Geometry/ComputeShaders.cs b/Editor/Geometry/ComputeShaders.cs new file mode 100644 index 00000000..822f152d --- /dev/null +++ b/Editor/Geometry/ComputeShaders.cs @@ -0,0 +1,33 @@ +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// Finds this package's compute shaders by name wherever the package is installed. + internal static class ComputeShaders + { + public static ComputeShader Find(string name) + { + // 1. Editor default resources (user may have copied it there). + var cs = (ComputeShader)EditorGUIUtility.Load(name + ".compute"); + if (cs != null) return cs; + // 2. AssetDatabase search by type + name. + foreach (var guid in AssetDatabase.FindAssets($"t:ComputeShader {name}")) + { + cs = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid)); + if (cs != null) return cs; + } + // 3. Relative to this package's Editor folder (UPM packages outside Assets). + foreach (var guid in AssetDatabase.FindAssets("t:Script MeshGeometry")) + { + string scriptPath = AssetDatabase.GUIDToAssetPath(guid); + string geometryDir = System.IO.Path.GetDirectoryName(scriptPath); + string editorDir = System.IO.Path.GetDirectoryName(geometryDir); + string packageRoot = System.IO.Path.GetDirectoryName(editorDir); + cs = AssetDatabase.LoadAssetAtPath(packageRoot + "/Shaders/" + name + ".compute"); + if (cs != null) return cs; + } + return null; + } + } +} diff --git a/Editor/Geometry/ComputeShaders.cs.meta b/Editor/Geometry/ComputeShaders.cs.meta new file mode 100644 index 00000000..aed1a129 --- /dev/null +++ b/Editor/Geometry/ComputeShaders.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a977750477114edfadee00579f4b935f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Geometry/GpuBvh.cs b/Editor/Geometry/GpuBvh.cs new file mode 100644 index 00000000..75eea007 --- /dev/null +++ b/Editor/Geometry/GpuBvh.cs @@ -0,0 +1,149 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// A on the GPU with the same queries: closest ray hit + /// (optionally only faces that face the ray, either-side faces excepted) and + /// nearest face within a radius (optionally only faces whose normal agrees with a + /// query normal). Queries run in batches, one thread each, through + /// Shaders/BvhQueries.compute; the hit records mean exactly what the CPU + /// ones do (face index, t / distance², barycentric weights of vertices 0, 1, 2), so a + /// caller can resolve a batch on either side without a code change. Main thread + /// only. lets another kernel (the AO bake) use the same uploaded + /// tree through BvhTraversal.hlsl instead of uploading its own. + /// + internal sealed class GpuBvh : IDisposable + { + [StructLayout(LayoutKind.Sequential)] + public struct RayHit { public int tri; public float t, u, v; } // 16 bytes + [StructLayout(LayoutKind.Sequential)] + public struct NearestHit { public int tri; public float distSq; public Vector3 point, bary; } // 32 bytes + + public const int MaxBatch = 1 << 20; + + public static bool Supported => SystemInfo.supportsComputeShaders; + + readonly ComputeShader shader; + readonly int rayKernel, nearestKernel; + ComputeBuffer nodes, triIndices, verts, tris, faceNormals, eitherSide; + ComputeBuffer rayOrigins, rayDirs, rayHits, points, queryNormals, nearestHits; + int capacity; + readonly int eitherSideCount; + public int FaceCount { get; } + + /// Null when compute shaders are unavailable or the kernel asset is missing (logged once). + public static GpuBvh TryCreate(TriangleBvh bvh, Vector3[] faceNormals = null, bool[] eitherSide = null) + { + if (!Supported) return null; + var shader = ComputeShaders.Find("BvhQueries"); + if (!shader) { UvtLog.Warn("[GPU] BvhQueries.compute not found; using the CPU BVH."); return null; } + try { return new GpuBvh(bvh, shader, faceNormals, eitherSide); } + catch (Exception e) { UvtLog.Warn("[GPU] BVH upload failed (" + e.Message + "); using the CPU BVH."); return null; } + } + + GpuBvh(TriangleBvh bvh, ComputeShader shader, Vector3[] normals, bool[] either) + { + this.shader = shader; + rayKernel = shader.FindKernel("Raycast"); + nearestKernel = shader.FindKernel("Nearest"); + bvh.GetGPUData(out var gpuNodes, out var gpuTriIndices, out var gpuVerts, out var gpuTris); + FaceCount = gpuTris.Length / 3; + nodes = new ComputeBuffer(Math.Max(1, gpuNodes.Length), Marshal.SizeOf()); nodes.SetData(gpuNodes); + triIndices = new ComputeBuffer(Math.Max(1, gpuTriIndices.Length), 4); triIndices.SetData(gpuTriIndices); + verts = new ComputeBuffer(Math.Max(1, gpuVerts.Length), 12); verts.SetData(gpuVerts); + tris = new ComputeBuffer(Math.Max(1, gpuTris.Length), 4); tris.SetData(gpuTris); + // The filters read these per face; unused, they stay 1-element dummies. + var n = normals != null && normals.Length == FaceCount ? normals : new Vector3[1]; + faceNormals = new ComputeBuffer(Math.Max(1, n.Length), 12); faceNormals.SetData(n); + uint[] mask = new uint[1]; + if (either != null && either.Length == FaceCount) { mask = new uint[FaceCount]; for (int i = 0; i < FaceCount; ++i) mask[i] = either[i] ? 1u : 0u; eitherSideCount = FaceCount; } + eitherSide = new ComputeBuffer(Math.Max(1, mask.Length), 4); eitherSide.SetData(mask); + } + + /// Binds the tree (nodes, faces, normals, either-side mask) to a kernel that includes BvhTraversal.hlsl. + public void Bind(ComputeShader target, int kernel) + { + target.SetBuffer(kernel, "_BVHNodes", nodes); + target.SetBuffer(kernel, "_TriVerts", verts); + target.SetBuffer(kernel, "_TriIndices", triIndices); + target.SetBuffer(kernel, "_Tris", tris); + target.SetBuffer(kernel, "_FaceNormals", faceNormals); + target.SetBuffer(kernel, "_EitherSide", eitherSide); + target.SetInt("_EitherSideCount", eitherSideCount); + } + + /// + /// Closest hit for count rays: origins.xyz / dirs.xyz with the reach in origins.w + /// (≤ 0 skips the ray). facingFilter mirrors TriangleBvh.RaycastFacingFiltered + /// with the uploaded (oriented) face normals and either-side mask. + /// + public void Raycast(Vector4[] origins, Vector4[] dirs, int count, bool facingFilter, RayHit[] results) + { + for (int start = 0; start < count; start += MaxBatch) { + int n = Math.Min(MaxBatch, count - start); + Ensure(n); + rayOrigins.SetData(origins, start, 0, n); + rayDirs.SetData(dirs, start, 0, n); + Bind(shader, rayKernel); + shader.SetBuffer(rayKernel, "_RayOrigins", rayOrigins); + shader.SetBuffer(rayKernel, "_RayDirs", rayDirs); + shader.SetBuffer(rayKernel, "_RayHits", rayHits); + shader.SetInt("_QueryCount", n); + shader.SetInt("_FacingFilter", facingFilter ? 1 : 0); + shader.Dispatch(rayKernel, (n + 63) / 64, 1, 1); + rayHits.GetData(results, start, 0, n); + } + } + + /// + /// Nearest face for count points: points.xyz with the radius in points.w (≤ 0 + /// skips the point). normalFilter mirrors TriangleBvh.FindNearestNormalFiltered + /// with normals.xyz as the query normal and normals.w as the minimum dot. + /// + public void Nearest(Vector4[] pts, Vector4[] normals, int count, bool normalFilter, NearestHit[] results) + { + for (int start = 0; start < count; start += MaxBatch) { + int n = Math.Min(MaxBatch, count - start); + Ensure(n); + points.SetData(pts, start, 0, n); + queryNormals.SetData(normals, start, 0, n); + Bind(shader, nearestKernel); + shader.SetBuffer(nearestKernel, "_Points", points); + shader.SetBuffer(nearestKernel, "_QueryNormals", queryNormals); + shader.SetBuffer(nearestKernel, "_NearestHits", nearestHits); + shader.SetInt("_QueryCount", n); + shader.SetInt("_NormalFilter", normalFilter ? 1 : 0); + shader.Dispatch(nearestKernel, (n + 63) / 64, 1, 1); + nearestHits.GetData(results, start, 0, n); + } + } + + void Ensure(int n) + { + if (n <= capacity) return; + ReleaseQueryBuffers(); + capacity = Math.Max(n, 4096); + rayOrigins = new ComputeBuffer(capacity, 16); rayDirs = new ComputeBuffer(capacity, 16); + rayHits = new ComputeBuffer(capacity, Marshal.SizeOf()); + points = new ComputeBuffer(capacity, 16); queryNormals = new ComputeBuffer(capacity, 16); + nearestHits = new ComputeBuffer(capacity, Marshal.SizeOf()); + } + + void ReleaseQueryBuffers() + { + rayOrigins?.Dispose(); rayDirs?.Dispose(); rayHits?.Dispose(); points?.Dispose(); queryNormals?.Dispose(); nearestHits?.Dispose(); + rayOrigins = rayDirs = rayHits = points = queryNormals = nearestHits = null; + capacity = 0; + } + + public void Dispose() + { + ReleaseQueryBuffers(); + nodes?.Dispose(); triIndices?.Dispose(); verts?.Dispose(); tris?.Dispose(); faceNormals?.Dispose(); eitherSide?.Dispose(); + nodes = triIndices = verts = tris = faceNormals = eitherSide = null; + } + } +} diff --git a/Editor/Geometry/GpuBvh.cs.meta b/Editor/Geometry/GpuBvh.cs.meta new file mode 100644 index 00000000..010edcf3 --- /dev/null +++ b/Editor/Geometry/GpuBvh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 008d296862144e43bcae248a1ce49996 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshBaker.cs b/Editor/RemeshBaker.cs index 90d561d6..8340eb75 100644 --- a/Editor/RemeshBaker.cs +++ b/Editor/RemeshBaker.cs @@ -27,12 +27,100 @@ internal sealed class Maps public bool facingFilter; public int twoSidedFaces; // source faces whose back counts as surface (two-sided materials) public bool beauty; + public bool gpu; // the geometry queries ran on the GPU } - // Thread-safe: no UnityEngine.Object access in this method or the BVH. - // beauty (optional) folds the scene lighting into the transferred albedo. + // ── Batched bake ── + // The bake is one code path with a pluggable query backend. Prepare builds + // everything the texel loop needs (coverage, BVH, cage, orientation probe); + // the atlas is then processed in bands of rows: BuildRequests turns a band's + // covered samples into ray and nearest-point queries, a resolver answers them + // (the CPU TriangleBvh in parallel, or GpuBvh in one dispatch per batch), and + // EvaluateBand turns the answers into texels. Finish adds the fills, the + // diagnostics, the dilation and the vertex colour transfer. + + /// CPU bake: thread-safe, no UnityEngine.Object access. beauty (optional) folds the scene lighting into the albedo. public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, RemeshSettings settings, CancellationToken token, RemeshBeauty beauty = null) + { + var ctx = Prepare(source, target, tangents, settings, token, beauty); + var band = new Band(ctx); + for (int y0 = 0; y0 < ctx.size; y0 += ctx.bandRows) { + int y1 = Math.Min(ctx.size, y0 + ctx.bandRows); + BuildRequests(ctx, band, y0, y1, token); + ResolveCpu(ctx, band, token); + EvaluateBand(ctx, band, token); + } + return Finish(ctx, token); + } + + /// + /// GPU bake, driven from the main thread: the geometry queries of every band go + /// through (a GpuBvh over this bake's source, created by + /// ), everything else runs on workers. Results mean the + /// same as 's. + /// + public static async Task BakeAsync(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, + RemeshSettings settings, CancellationToken token, RemeshBeauty beauty, Func createGpu) + { + var ctx = await Task.Run(() => Prepare(source, target, tangents, settings, token, beauty), token); + GpuBvh gpu = null; + try { + gpu = createGpu(ctx); + var band = new Band(ctx); + for (int y0 = 0; y0 < ctx.size; y0 += ctx.bandRows) { + int y1 = Math.Min(ctx.size, y0 + ctx.bandRows); + await Task.Run(() => BuildRequests(ctx, band, y0, y1, token), token); + if (gpu != null) ResolveGpu(ctx, band, gpu); + else await Task.Run(() => ResolveCpu(ctx, band, token), token); + await Task.Run(() => EvaluateBand(ctx, band, token), token); + } + ctx.result.gpu = gpu != null; + return await Task.Run(() => Finish(ctx, token), token); + } + finally { gpu?.Dispose(); } + } + + /// The GPU tree for a prepared bake: the source BVH with the oriented face normals and the either-side mask the filters use. + public static GpuBvh CreateGpu(Context ctx) => GpuBvh.TryCreate(ctx.bvh, ctx.faceNormals, ctx.twoSided); + + /// Everything the texel loop reads; built once per bake by Prepare. + public sealed class Context + { + public RemeshSource source; public RemeshNative.Geometry target; public Vector4[] tangents; + public RemeshSettings settings; public RemeshBeauty beauty; + public Maps result; public int size, bandRows; public Vector2[] offsets; public int[] owners; + public TriangleBvh bvh; public Cage cage; public bool proxy; public Vector3[] faceDirs; public float depth; + public Vector3[] faceNormals; // source faces, oriented by the winding probe + public bool[] twoSided; // source faces whose back counts (null = none) + public bool facingFilter; + public bool[] emptyTexels; + public int misses, rayFallbacks, empties; + } + + /// One band of rows as queries and answers; arrays are reused across bands. + public sealed class Band + { + public int y0, y1, count; + public int[] rowStart; // per row of the band (+1 sentinel): first sample index + public int[] pixel, face; // per sample + public Vector3[] weights; // per sample: barycentric on the target face + public Vector4[] rayOrigin, rayDir, point, pointNormal; // queries (w = reach / dotMin) + public GpuBvh.RayHit[] rayHit; public GpuBvh.NearestHit[] nearest; + public bool[] needNearest; + + public Band(Context ctx) + { + int capacity = ctx.bandRows * ctx.size * ctx.offsets.Length; + rowStart = new int[ctx.bandRows + 1]; + pixel = new int[capacity]; face = new int[capacity]; weights = new Vector3[capacity]; + rayOrigin = new Vector4[capacity]; rayDir = new Vector4[capacity]; point = new Vector4[capacity]; pointNormal = new Vector4[capacity]; + rayHit = new GpuBvh.RayHit[capacity]; nearest = new GpuBvh.NearestHit[capacity]; needNearest = new bool[capacity]; + } + } + + static Context Prepare(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, + RemeshSettings settings, CancellationToken token, RemeshBeauty beauty) { int size = settings.textureResolution; int count = checked(size * size); @@ -77,10 +165,9 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto // accepts source triangles whose normal faces the ray origin. Source winding // is not guaranteed to be outward, so a probe orients the normals first; // without a clear majority the filter stays off and the bake behaves exactly - // as before. - // Two-sided source faces (Cull Off / double-sided materials, or the setting) - // are surface from behind too: they pass the filter from either side and cast - // no vote in the winding probe. + // as before. Two-sided source faces (Cull Off / double-sided materials, or the + // setting) are surface from behind too: they pass the filter from either side + // and cast no vote in the probe. var twoSided = source.TwoSidedFaces(settings.sourceBackfaces); if (twoSided != null) foreach (bool two in twoSided) if (two) ++result.twoSidedFaces; var faceNormals = MeshGeometry.FaceNormals(source.positions, source.indices); @@ -89,12 +176,27 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto if (winding < 0) for (int f = 0; f < faceNormals.Length; ++f) faceNormals[f] = -faceNormals[f]; result.facingFilter = facingFilter; - Vector3[] facing = facingFilter ? faceNormals : null; - bool[] eitherSide = facingFilter ? twoSided : null; - int misses = 0, rayFallbacks = 0, empties = 0; - var emptyTexels = proxy ? new bool[count] : null; - Parallel.For(0, size, new ParallelOptions { CancellationToken = token, - MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, y => { + // Bands sized so one band's samples fit a query batch (and a modest amount of memory). + int bandRows = Mathf.Clamp(GpuBvh.MaxBatch / Math.Max(1, size * offsets.Length), 1, size); + return new Context { source = source, target = target, tangents = tangents, settings = settings, beauty = beauty, + result = result, size = size, bandRows = bandRows, offsets = offsets, owners = owners, bvh = bvh, cage = cage, + proxy = proxy, faceDirs = faceDirs, depth = depth, faceNormals = faceNormals, twoSided = twoSided, + facingFilter = facingFilter, emptyTexels = proxy ? new bool[count] : null }; + } + + // The band's covered samples as queries: which target face each sample lies on + // and where, the ray it casts (origin + reach, direction) and the nearest-point + // fallback (point + radius, filter normal). Row-parallel; rows are contiguous. + static void BuildRequests(Context ctx, Band band, int y0, int y1, CancellationToken token) + { + int size = ctx.size, rows = y1 - y0, spp = ctx.offsets.Length; + var target = ctx.target; var owners = ctx.owners; + band.y0 = y0; band.y1 = y1; + // Each row owns a fixed slice of the arrays (size × spp); rowStart records + // how much of it the row filled. + Parallel.For(0, rows, new ParallelOptions { CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, r => { + int y = y0 + r, write = r * size * spp; var candidates = new int[9]; for (int x = 0; x < size; ++x) { if ((x & 63) == 0) token.ThrowIfCancellationRequested(); @@ -110,26 +212,131 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto int f = owners[yy * size + xx]; if (f >= 0 && Array.IndexOf(candidates, f, 0, candidateCount) < 0) candidates[candidateCount++] = f; } - Color color = default, metal = default, ao = default, emission = default; - Vector3 normal = Vector3.zero; - int hits = 0; - foreach (var offset in offsets) { + foreach (var offset in ctx.offsets) { var uv = new Vector2((x + offset.x) / size, (y + offset.y) / size); int face = -1; Vector3 w = default; for (int c = 0; c < candidateCount && face < 0; ++c) if (Inside(target, candidates[c], uv, out w)) face = candidates[c]; if (face < 0) continue; - if (!Project(source, target, tangents, cage, bvh, facing, eitherSide, beauty, face, w, - proxy, faceDirs, depth, settings.vertexColorTint, - out var sc, out var sn, out var sm, out var sa, out var se, out var rayFallback)) continue; - if (rayFallback) Interlocked.Increment(ref rayFallbacks); + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], cc = target.indices[face * 3 + 2]; + Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[cc] * w.z; + band.pixel[write] = pixel; band.face[write] = face; band.weights[write] = w; + if (ctx.proxy) { + // From just outside the proxy face, inward through the whole + // proxy; the fallback looks for the nearest surface within reach. + Vector3 dir = ctx.faceDirs[face]; + float eps = ctx.depth * 1e-4f; + Vector3 origin = p + dir * eps; + band.rayOrigin[write] = new Vector4(origin.x, origin.y, origin.z, ctx.depth); + band.rayDir[write] = new Vector4(-dir.x, -dir.y, -dir.z, 0f); + band.point[write] = new Vector4(p.x, p.y, p.z, ctx.depth); + band.pointNormal[write] = new Vector4(dir.x, dir.y, dir.z, 0f); + } + else { + // From the cage's outer shell back through the surface to the + // inner shell; both fallbacks stay bounded by the cage reach (an + // unbounded filtered query would smear a far part across a gap). + Vector3 rayN = ctx.cage.Direction(face, w); + float reach = ctx.cage.Reach(face, w); + Vector3 origin = p + rayN * reach; + band.rayOrigin[write] = new Vector4(origin.x, origin.y, origin.z, reach * 2f); + band.rayDir[write] = new Vector4(-rayN.x, -rayN.y, -rayN.z, 0f); + band.point[write] = new Vector4(p.x, p.y, p.z, reach); + band.pointNormal[write] = new Vector4(rayN.x, rayN.y, rayN.z, 0f); + } + ++write; + } + } + band.rowStart[r] = write; // end of this row's slice (compacted below) + }); + // Compact the per-row slices into one contiguous range, rows in order. + int total = 0; + for (int r = 0; r < rows; ++r) { + int from = r * size * spp, n = band.rowStart[r] - from; + if (from != total && n > 0) { + Array.Copy(band.pixel, from, band.pixel, total, n); Array.Copy(band.face, from, band.face, total, n); + Array.Copy(band.weights, from, band.weights, total, n); + Array.Copy(band.rayOrigin, from, band.rayOrigin, total, n); Array.Copy(band.rayDir, from, band.rayDir, total, n); + Array.Copy(band.point, from, band.point, total, n); Array.Copy(band.pointNormal, from, band.pointNormal, total, n); + } + band.rowStart[r] = total; total += n; + } + band.rowStart[rows] = total; + band.count = total; + } + + // CPU resolver: the same two queries per sample the GPU kernel answers, through + // the TriangleBvh, in parallel. + static void ResolveCpu(Context ctx, Band band, CancellationToken token) + { + var bvh = ctx.bvh; var facing = ctx.facingFilter ? ctx.faceNormals : null; var either = ctx.facingFilter ? ctx.twoSided : null; + Parallel.For(0, band.count, new ParallelOptions { CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, i => { + Vector4 o = band.rayOrigin[i]; Vector3 d = band.rayDir[i]; + var hit = facing != null ? bvh.RaycastFacingFiltered(o, d, o.w, facing, either) : bvh.Raycast(o, d, o.w); + band.rayHit[i] = new GpuBvh.RayHit { tri = hit.triangleIndex, t = hit.t, u = hit.barycentric.y, v = hit.barycentric.z }; + if (hit.triangleIndex >= 0) { band.nearest[i].tri = -1; return; } + Vector4 q = band.point[i]; Vector3 qn = band.pointNormal[i]; + var near = facing != null ? bvh.FindNearestNormalFiltered(q, qn, facing, 0f, q.w, either) : bvh.FindNearest(q, q.w); + band.nearest[i] = new GpuBvh.NearestHit { tri = near.triangleIndex, distSq = near.distSq, point = near.point, bary = near.barycentric }; + }); + } + + // GPU resolver: one ray batch, then one nearest batch for the misses only. + static void ResolveGpu(Context ctx, Band band, GpuBvh gpu) + { + gpu.Raycast(band.rayOrigin, band.rayDir, band.count, ctx.facingFilter, band.rayHit); + int pending = 0; + for (int i = 0; i < band.count; ++i) { + band.nearest[i].tri = -1; + bool miss = band.rayHit[i].tri < 0; + band.needNearest[i] = miss; + // Skipped points carry radius 0 so the kernel answers "none" without traversing. + if (!miss) { var q = band.point[i]; band.point[i] = new Vector4(q.x, q.y, q.z, 0f); } + else ++pending; + } + if (pending > 0) gpu.Nearest(band.point, band.pointNormal, band.count, ctx.facingFilter, band.nearest); + } + + // Texels from answers: material (and lighting) at every sample's source hit, + // averaged per texel; misses are magenta (or "empty" on proxies). Row-parallel. + static void EvaluateBand(Context ctx, Band band, CancellationToken token) + { + int rows = band.y1 - band.y0; var result = ctx.result; var target = ctx.target; var source = ctx.source; + bool vertexTint = ctx.settings.vertexColorTint; + Parallel.For(0, rows, new ParallelOptions { CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1) }, r => { + int i = band.rowStart[r], end = band.rowStart[r + 1]; + int misses = 0, fallbacks = 0, empties = 0; + while (i < end) { + int pixel = band.pixel[i]; + Color color = default, metal = default, ao = default, emission = default; + Vector3 normal = Vector3.zero; + int hits = 0; + for (; i < end && band.pixel[i] == pixel; ++i) { + int sourceFace; Vector3 sw; + var ray = band.rayHit[i]; + if (ray.tri >= 0) { sourceFace = ray.tri; sw = new Vector3(1f - ray.u - ray.v, ray.u, ray.v); } + else { + var near = band.nearest[i]; + sourceFace = near.tri; sw = near.bary; + // Non-proxy counts every fallback; a proxy counts only the ones that found something. + if (sourceFace >= 0 || !ctx.proxy) ++fallbacks; + } + if (sourceFace < 0) continue; + int face = band.face[i]; Vector3 w = band.weights[i]; + int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; + Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; + Vector4 tangent = ctx.tangents[a] * w.x + ctx.tangents[b] * w.y + ctx.tangents[c] * w.z; + Evaluate(source, sourceFace, sw, n, tangent, vertexTint, out var sc, out var sn, out var sm, out var sa, out var se); + if (ctx.beauty != null) sc = BeautyLight(ctx.beauty, source, sourceFace, sw, sc, sm, se).gamma; color += sc.linear; metal += sm; ao += sa; emission += se; normal += new Vector3(sn.r * 2 - 1, sn.g * 2 - 1, sn.b * 2 - 1); ++hits; } if (hits == 0) { - if (proxy) { emptyTexels[pixel] = true; Interlocked.Increment(ref empties); continue; } - Interlocked.Increment(ref misses); + if (ctx.proxy) { ctx.emptyTexels[pixel] = true; ++empties; continue; } + ++misses; result.color[pixel] = new Color32(255, 0, 255, 255); result.normal[pixel] = new Color32(128, 128, 255, 255); result.ao[pixel] = new Color32(255, 255, 255, 255); @@ -143,11 +350,19 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto result.metal[pixel] = metal * inv; result.ao[pixel] = ao * inv; var e = emission * inv; e.a = 1; result.emission[pixel] = e; } + if (misses > 0) Interlocked.Add(ref ctx.misses, misses); + if (fallbacks > 0) Interlocked.Add(ref ctx.rayFallbacks, fallbacks); + if (empties > 0) Interlocked.Add(ref ctx.empties, empties); }); - result.misses = misses; - result.rayFallbacks = rayFallbacks; - result.empty = empties; - if (proxy && empties > 0) FillEmpty(result, owners, emptyTexels, token); + } + + static Maps Finish(Context ctx, CancellationToken token) + { + var result = ctx.result; var owners = ctx.owners; int count = owners.Length; + result.misses = ctx.misses; + result.rayFallbacks = ctx.rayFallbacks; + result.empty = ctx.empties; + if (ctx.proxy && ctx.empties > 0) FillEmpty(result, owners, ctx.emptyTexels, token); // Normal-map tilt health: how far encoded normals lean away from the // tangent plane's up axis. Loud, strongly-tilted maps on smooth-ish // sources are the visual signature of displaced projection samples. @@ -163,9 +378,9 @@ public static Maps Bake(RemeshSource source, RemeshNative.Geometry target, Vecto result.meanTiltDeg = tiltN > 0 ? (float)(tiltSum / tiltN) : 0; result.maxTiltDeg = tiltMax; result.loudTexels = loud; - Dilate(result, owners, settings.padding, token); - if (settings.transferVertexColor || settings.transferVertexAlpha) - result.vertexColors = TransferVertexColors(source, target, bvh, settings, token); + Dilate(result, owners, ctx.settings.padding, token); + if (ctx.settings.transferVertexColor || ctx.settings.transferVertexAlpha) + result.vertexColors = TransferVertexColors(ctx.source, ctx.target, ctx.bvh, ctx.settings, token); return result; } @@ -218,67 +433,6 @@ static bool Inside(RemeshNative.Geometry target, int face, Vector2 uv, out Vecto w.x >= -1e-6f && w.y >= -1e-6f && w.z >= -1e-6f; } - // Trace from the destination surface point back to the source and evaluate its - // material there. False when neither the ray nor the bounded nearest query hits. - // The ray direction and reach come from the cage at the texel's corners; the - // tangent frame keeps the (possibly hard) vertex normal so encode matches how - // the mesh shades. - // facing (when non-null) carries the orientation-consensus source face normals - // that keep the ray and the fallback on the side of the surface facing the texel. - // proxy: the ray starts just outside the proxy face and travels inward along the - // face normal through the whole proxy (depth), first hit wins, no fallback. - static bool Project(RemeshSource source, RemeshNative.Geometry target, Vector4[] tangents, Cage cage, - TriangleBvh bvh, Vector3[] facing, bool[] eitherSide, RemeshBeauty beauty, int face, Vector3 w, - bool proxy, Vector3[] faceDirs, float depth, bool vertexTint, - out Color color, out Color normal, out Color metal, out Color ao, out Color emission, out bool rayFallback) - { - int a = target.indices[face * 3], b = target.indices[face * 3 + 1], c = target.indices[face * 3 + 2]; - Vector3 p = target.positions[a] * w.x + target.positions[b] * w.y + target.positions[c] * w.z; - Vector3 n = (target.normals[a] * w.x + target.normals[b] * w.y + target.normals[c] * w.z).normalized; - Vector4 tangent = tangents[a] * w.x + tangents[b] * w.y + tangents[c] * w.z; - int sourceFace; Vector3 sw; - rayFallback = false; - if (proxy) { - Vector3 dir = faceDirs[face]; - float eps = depth * 1e-4f; - var hit = facing != null - ? bvh.RaycastFacingFiltered(p + dir * eps, -dir, depth, facing, eitherSide) - : bvh.Raycast(p + dir * eps, -dir, depth); - sourceFace = hit.triangleIndex; sw = hit.barycentric; - if (sourceFace < 0) { - var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, dir, facing, 0f, depth, eitherSide) - : bvh.FindNearest(p, depth); - sourceFace = nearest.triangleIndex; sw = nearest.barycentric; - rayFallback = sourceFace >= 0; - } - } - else { - Vector3 rayN = cage.Direction(face, w); - float reach = cage.Reach(face, w); - var hit = facing != null - ? bvh.RaycastFacingFiltered(p + rayN * reach, -rayN, reach * 2, facing, eitherSide) - : bvh.Raycast(p + rayN * reach, -rayN, reach * 2); - sourceFace = hit.triangleIndex; sw = hit.barycentric; - if (sourceFace < 0) { - // Both fallbacks stay bounded by the cage reach: an unbounded - // filtered query would smear an unrelated far part across a gap. - var nearest = facing != null - ? bvh.FindNearestNormalFiltered(p, rayN, facing, 0f, reach, eitherSide) - : bvh.FindNearest(p, reach); - sourceFace = nearest.triangleIndex; sw = nearest.barycentric; - rayFallback = true; - } - } - if (sourceFace < 0) { - color = normal = metal = ao = emission = default; - return false; - } - Evaluate(source, sourceFace, sw, n, tangent, vertexTint, out color, out normal, out metal, out ao, out emission); - if (beauty != null) color = BeautyLight(beauty, source, sourceFace, sw, color, metal, emission).gamma; - return true; - } - // Folds the captured scene lighting into the transferred albedo (all linear). // Unity lightmaps store incoming irradiance (GI + baked lights), which the Lit // shader multiplies by the material's diffuse response at runtime — so a diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index e5f8faf1..91db2189 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -420,7 +420,13 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to // thread, and dropped again after the bake — they are float readbacks // and only Beauty needs them. if (nodeBeauty != null) { Report($"Reading lightmaps for {node.name}…"); source.ReadLightmaps(); } - try { node.maps = await Task.Run(() => RemeshBaker.Bake(source, target, frame, options, token, nodeBeauty), token); } + try { + // GPU: the band loop is driven from here (main thread) so the compute + // dispatches are legal; CPU: the whole bake on a worker. + node.maps = options.gpuProjection && GpuBvh.Supported + ? await RemeshBaker.BakeAsync(source, target, frame, options, token, nodeBeauty, RemeshBaker.CreateGpu) + : await Task.Run(() => RemeshBaker.Bake(source, target, frame, options, token, nodeBeauty), token); + } finally { source.ReleaseLightmaps(); } // A re-bake without the transfer must not keep the previous colors. node.mesh.colors = node.maps.vertexColors; @@ -436,7 +442,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (empty > 0 ? $" {empty:N0} proxy texels see no geometry (alpha 0, filled from neighbours)." : "") + (warnings > 0 ? $" {warnings} material warning(s), see Console." : "") + - $" Bake {clock.Elapsed.TotalSeconds:F1} s."; + $" Bake {clock.Elapsed.TotalSeconds:F1} s ({(primary.maps.gpu ? "GPU" : "CPU")} queries)."; UvtLog.Info("[Remesh] " + Status); } diff --git a/Editor/RemeshSettings.cs b/Editor/RemeshSettings.cs index 42e8e0cb..f0936a96 100644 --- a/Editor/RemeshSettings.cs +++ b/Editor/RemeshSettings.cs @@ -166,6 +166,9 @@ public sealed class RemeshSettings // traversal per empty texel; a short one keeps each face to what sits behind it. public float proxyDepth = 0.1f; public int bakeSamples = 4; // per texel: 1, 4, 9 or 16 + // Run the bake's geometry queries (projection rays, nearest fallbacks) on the + // GPU through BvhQueries.compute; identical results, the CPU BVH otherwise. + public bool gpuProjection = true; public bool transferVertexColor; public bool transferVertexAlpha; // Multiply the source albedo by the source vertex color (RGB) while projecting — diff --git a/Editor/Tools/RemeshBakeTool.cs b/Editor/Tools/RemeshBakeTool.cs index 22721a33..05ee09ab 100644 --- a/Editor/Tools/RemeshBakeTool.cs +++ b/Editor/Tools/RemeshBakeTool.cs @@ -323,6 +323,10 @@ public void OnDrawSidebar() "long lets a face see across courtyards and costs a full traversal per empty texel."), settings.proxyDepth, 0.01f, 1f); settings.bakeSamples = EditorGUILayout.IntPopup(new GUIContent("Samples per texel", "Supersampling for smoother edges and detail."), settings.bakeSamples, Array.ConvertAll(SampleNames, n => new GUIContent(n)), SampleCounts); + using (new EditorGUI.DisabledScope(!GpuBvh.Supported)) + settings.gpuProjection = EditorGUILayout.Toggle(new GUIContent("GPU projection", + GpuBvh.Supported ? "Run the projection rays and nearest-point fallbacks on the GPU (BvhQueries.compute). Same results as the CPU BVH, usually several times faster on large atlases." + : "This platform has no compute shaders; the bake runs on the CPU."), settings.gpuProjection); settings.transferVertexColor = EditorGUILayout.Toggle("Vertex color (RGB)", settings.transferVertexColor); settings.transferVertexAlpha = EditorGUILayout.Toggle("Vertex alpha", settings.transferVertexAlpha); settings.vertexColorTint = EditorGUILayout.Toggle(new GUIContent("Vertex color tints albedo", diff --git a/Editor/VertexAOBaker.Gpu.cs b/Editor/VertexAOBaker.Gpu.cs index cb55a0c7..d1fa2225 100644 --- a/Editor/VertexAOBaker.Gpu.cs +++ b/Editor/VertexAOBaker.Gpu.cs @@ -67,8 +67,9 @@ enum Phase { Dispatching, ReadingBack, Cancelling, Done, Cancelled } // Kernels int bakeKernel, finalKernel; - // Shared GPU buffers - ComputeBuffer bvhNodeBuf, triVertBuf, triIdxBuf, trisBuf, faceNormBuf, dirBuf; + // Shared GPU buffers: the tree through GpuBvh, the directions here + GpuBvh gpuBvh; + ComputeBuffer dirBuf; // Per-mesh data struct MeshSlot @@ -167,7 +168,6 @@ void Prepare( throw new Exception("GPU bake did not receive any readable geometry."); var bvh = new TriangleBvh(allVerts.ToArray(), allTris.ToArray()); - bvh.GetGPUData(out var gpuNodes, out var gpuTriIndices, out var gpuVerts, out var gpuTris); var directions = MeshGeometry.SphereDirections(settings.sampleCount); dirCount = directions.Length; @@ -192,18 +192,9 @@ void Prepare( ? combinedBounds.min.y - settings.groundOffset : float.NegativeInfinity; - // Upload shared BVH data to GPU - int nodeStride = System.Runtime.InteropServices.Marshal.SizeOf(); - bvhNodeBuf = new ComputeBuffer(gpuNodes.Length, nodeStride); - bvhNodeBuf.SetData(gpuNodes); - triVertBuf = new ComputeBuffer(gpuVerts.Length, 12); - triVertBuf.SetData(gpuVerts); - triIdxBuf = new ComputeBuffer(gpuTriIndices.Length, 4); - triIdxBuf.SetData(gpuTriIndices); - trisBuf = new ComputeBuffer(gpuTris.Length, 4); - trisBuf.SetData(gpuTris); - faceNormBuf = new ComputeBuffer(faceNormals.Length, 12); - faceNormBuf.SetData(faceNormals); + // Upload the tree once (GpuBvh owns the buffers) and the directions + gpuBvh = GpuBvh.TryCreate(bvh, faceNormals); + if (gpuBvh == null) throw new Exception("GPU BVH unavailable (compute shaders unsupported or BvhQueries.compute missing)."); dirBuf = new ComputeBuffer(directions.Length, 12); dirBuf.SetData(directions); @@ -254,11 +245,7 @@ void Prepare( "Console for shader compilation errors."); } - cs.SetBuffer(bakeKernel, "_BVHNodes", bvhNodeBuf); - cs.SetBuffer(bakeKernel, "_TriVerts", triVertBuf); - cs.SetBuffer(bakeKernel, "_TriIndices", triIdxBuf); - cs.SetBuffer(bakeKernel, "_Tris", trisBuf); - cs.SetBuffer(bakeKernel, "_FaceNormals", faceNormBuf); + gpuBvh.Bind(cs, bakeKernel); cs.SetBuffer(bakeKernel, "_Directions", dirBuf); cs.SetInt("_DirectionCount", dirCount); @@ -443,13 +430,8 @@ void Cleanup() { EditorApplication.update -= Tick; - bvhNodeBuf?.Dispose(); - triVertBuf?.Dispose(); - triIdxBuf?.Dispose(); - trisBuf?.Dispose(); - faceNormBuf?.Dispose(); - dirBuf?.Dispose(); - bvhNodeBuf = triVertBuf = triIdxBuf = trisBuf = faceNormBuf = dirBuf = null; + gpuBvh?.Dispose(); gpuBvh = null; + dirBuf?.Dispose(); dirBuf = null; if (slots != null) { @@ -469,33 +451,6 @@ void Cleanup() } } - static ComputeShader FindComputeShader(string name) - { - // 1. EditorGUIUtility.Load (Editor Default Resources) - var cs = (ComputeShader)EditorGUIUtility.Load(name + ".compute"); - if (cs != null) return cs; - - // 2. AssetDatabase search by type + name - var guids = AssetDatabase.FindAssets($"t:ComputeShader {name}"); - foreach (var guid in guids) - { - cs = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid)); - if (cs != null) return cs; - } - - // 3. Resolve relative to this script (works for UPM packages) - var scriptGuids = AssetDatabase.FindAssets("t:Script VertexAOBaker"); - foreach (var guid in scriptGuids) - { - string scriptPath = AssetDatabase.GUIDToAssetPath(guid); - string editorDir = System.IO.Path.GetDirectoryName(scriptPath); - string packageRoot = System.IO.Path.GetDirectoryName(editorDir); - string shaderPath = packageRoot + "/Shaders/" + name + ".compute"; - cs = AssetDatabase.LoadAssetAtPath(shaderPath); - if (cs != null) return cs; - } - - return null; - } + static ComputeShader FindComputeShader(string name) => ComputeShaders.Find(name); } } diff --git a/Shaders/BvhQueries.compute b/Shaders/BvhQueries.compute new file mode 100644 index 00000000..34d8629f --- /dev/null +++ b/Shaders/BvhQueries.compute @@ -0,0 +1,40 @@ +// BvhQueries.compute — batched TriangleBvh queries on the GPU: one thread per +// query, the traversal from BvhTraversal.hlsl. GpuBvh (C#) binds the BVH once and +// streams query batches through; results carry the same meaning as the CPU +// TriangleBvh.Raycast / FindNearest(NormalFiltered) results. +#pragma kernel Raycast +#pragma kernel Nearest + +#include "BvhTraversal.hlsl" + +StructuredBuffer _RayOrigins; // xyz origin, w = maxDist (<= 0: no query) +StructuredBuffer _RayDirs; // xyz unit direction +RWStructuredBuffer _RayHits; + +StructuredBuffer _Points; // xyz query point, w = maxDist (<= 0: no query) +StructuredBuffer _QueryNormals; // xyz query normal, w = dotMin +RWStructuredBuffer _NearestHits; + +uint _QueryCount; +uint _FacingFilter; +uint _NormalFilter; + +[numthreads(64, 1, 1)] +void Raycast(uint3 id : SV_DispatchThreadID) +{ + if (id.x >= _QueryCount) return; + float4 o = _RayOrigins[id.x]; + float3 d = _RayDirs[id.x].xyz; + _RayHits[id.x] = BvhRaycast(o.xyz, d, o.w, _FacingFilter != 0); +} + +[numthreads(64, 1, 1)] +void Nearest(uint3 id : SV_DispatchThreadID) +{ + if (id.x >= _QueryCount) return; + float4 p = _Points[id.x]; + float4 n = _QueryNormals[id.x]; + BvhNearestHit miss; + miss.tri = -1; miss.distSq = 0; miss.point = p.xyz; miss.bary = float3(0, 0, 0); + _NearestHits[id.x] = p.w > 0.0 ? BvhNearest(p.xyz, p.w * p.w, _NormalFilter != 0, n.xyz, n.w) : miss; +} diff --git a/Shaders/BvhQueries.compute.meta b/Shaders/BvhQueries.compute.meta new file mode 100644 index 00000000..671aea35 --- /dev/null +++ b/Shaders/BvhQueries.compute.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f131b1e2a8ce480a934edd0c160d26ca +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 0 + currentBuildTarget: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/BvhTraversal.hlsl b/Shaders/BvhTraversal.hlsl new file mode 100644 index 00000000..847560bf --- /dev/null +++ b/Shaders/BvhTraversal.hlsl @@ -0,0 +1,222 @@ +// BvhTraversal.hlsl — the GPU side of TriangleBvh: the same node layout +// (TriangleBvh.GetGPUData), the same ray–triangle and closest-point tests, the +// same filters (facing, normal, either-side), the same hit records. Every +// compute kernel that traces or projects includes this; none carries its own +// traversal. Keep it in step with Editor/TriangleBvh.cs. +#ifndef MESHLAB_BVH_TRAVERSAL_INCLUDED +#define MESHLAB_BVH_TRAVERSAL_INCLUDED + +#define BVH_MAX_STACK 48 +#define BVH_DIR_EPSILON 1e-7 + +struct BVHNode +{ + float3 bMin; + float3 bMax; + int left; + int right; + int triStart; + int triCount; +}; + +StructuredBuffer _BVHNodes; +StructuredBuffer _TriVerts; // vertices in the BVH's space +StructuredBuffer _TriIndices; // leaf slot → face index +StructuredBuffer _Tris; // face → 3 vertex indices +StructuredBuffer _FaceNormals; // per face, unit, oriented as the caller wants (may be unused) +StructuredBuffer _EitherSide; // per face, 1 = both sides count as front (1-element dummy when unused) +uint _EitherSideCount; // faces covered by _EitherSide; 0 = none + +struct BvhRayHit +{ + int tri; // face index, -1 = miss + float t; // distance along the ray + float u; // barycentric of vertex 1 (vertex 0 weight = 1 - u - v) + float v; // barycentric of vertex 2 +}; + +struct BvhNearestHit +{ + int tri; // face index, -1 = none within range + float distSq; + float3 point; // closest point on the face + float3 bary; // weights of vertices 0, 1, 2 +}; + +bool BvhEitherSide(int f) +{ + return _EitherSideCount > (uint)f && _EitherSide[f] != 0; +} + +// Slab test; tEnter is the parametric entry (0 when the origin is inside). +bool BvhRayAabb(float3 origin, float3 invDir, float3 bMin, float3 bMax, float maxT, out float tEnter) +{ + float3 t1 = (bMin - origin) * invDir; + float3 t2 = (bMax - origin) * invDir; + float3 tmin3 = min(t1, t2); + float3 tmax3 = max(t1, t2); + float tmin = max(max(tmin3.x, tmin3.y), max(tmin3.z, 0.0)); + float tmax = min(min(tmax3.x, tmax3.y), tmax3.z); + tEnter = tmin; + return tmin <= min(tmax, maxT); +} + +// Möller–Trumbore. The parallel test is relative to the triangle's own scale +// (|det| <= |e1|·|e2|), so millimetre meshes register hits like metre ones. +bool BvhRayTriangle(float3 origin, float3 dir, float3 a, float3 b, float3 c, out float t, out float u, out float v) +{ + t = 0; u = 0; v = 0; + float3 edge1 = b - a; + float3 edge2 = c - a; + float3 h = cross(dir, edge2); + float det = dot(edge1, h); + if (abs(det) <= 1e-7 * sqrt(dot(edge1, edge1) * dot(edge2, edge2))) return false; + float invDet = 1.0 / det; + float3 s = origin - a; + u = invDet * dot(s, h); + if (u < 0.0 || u > 1.0) return false; + float3 q = cross(s, edge1); + v = invDet * dot(dir, q); + if (v < 0.0 || u + v > 1.0) return false; + t = invDet * dot(edge2, q); + return true; +} + +float BvhAabbDistSq(float3 bMin, float3 bMax, float3 p) +{ + float3 d = max(max(bMin - p, p - bMax), 0.0); + return dot(d, d); +} + +// Closest point on triangle abc to p (Ericson, Real-Time Collision Detection 5.1.5) +// with the weights of a, b, c — the same convention as TriangleBvh.ClosestPointOnTriangle. +float3 BvhClosestPointOnTriangle(float3 p, float3 a, float3 b, float3 c, out float3 bary) +{ + float3 ab = b - a, ac = c - a, ap = p - a; + float d1 = dot(ab, ap), d2 = dot(ac, ap); + if (d1 <= 0.0 && d2 <= 0.0) { bary = float3(1, 0, 0); return a; } + float3 bp = p - b; + float d3 = dot(ab, bp), d4 = dot(ac, bp); + if (d3 >= 0.0 && d4 <= d3) { bary = float3(0, 1, 0); return b; } + float vc = d1 * d4 - d3 * d2; + if (vc <= 0.0 && d1 >= 0.0 && d3 <= 0.0) { float v = d1 / (d1 - d3); bary = float3(1 - v, v, 0); return a + ab * v; } + float3 cp = p - c; + float d5 = dot(ab, cp), d6 = dot(ac, cp); + if (d6 >= 0.0 && d5 <= d6) { bary = float3(0, 0, 1); return c; } + float vb = d5 * d2 - d1 * d6; + if (vb <= 0.0 && d2 >= 0.0 && d6 <= 0.0) { float w = d2 / (d2 - d6); bary = float3(1 - w, 0, w); return a + ac * w; } + float va = d3 * d6 - d5 * d4; + if (va <= 0.0 && (d4 - d3) >= 0.0 && (d5 - d6) >= 0.0) { float w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); bary = float3(0, 1 - w, w); return b + (c - b) * w; } + float denom = 1.0 / (va + vb + vc); + float v2 = vb * denom, w2 = vc * denom; + bary = float3(1 - v2 - w2, v2, w2); + return a + ab * v2 + ac * w2; +} + +// Closest hit along the ray within maxDist. facingFilter rejects faces whose +// normal points along the ray (the surfaces the ray cannot "see"), except +// either-side faces. Children are visited nearer first, so a hit prunes the rest. +BvhRayHit BvhRaycast(float3 origin, float3 dir, float maxDist, bool facingFilter) +{ + BvhRayHit best; + best.tri = -1; best.t = maxDist; best.u = 0; best.v = 0; + if (maxDist <= 0.0) return best; + float3 invDir = float3( + abs(dir.x) > BVH_DIR_EPSILON ? 1.0 / dir.x : (dir.x >= 0 ? 1e20 : -1e20), + abs(dir.y) > BVH_DIR_EPSILON ? 1.0 / dir.y : (dir.y >= 0 ? 1e20 : -1e20), + abs(dir.z) > BVH_DIR_EPSILON ? 1.0 / dir.z : (dir.z >= 0 ? 1e20 : -1e20)); + int stack[BVH_MAX_STACK]; + int sp = 0; + stack[sp++] = 0; + while (sp > 0) + { + int nodeIdx = stack[--sp]; + BVHNode node = _BVHNodes[nodeIdx]; + float tEnter; + if (!BvhRayAabb(origin, invDir, node.bMin, node.bMax, best.t, tEnter)) continue; + if (node.left == -1) + { + for (int i = node.triStart; i < node.triStart + node.triCount; i++) + { + int f = _TriIndices[i]; + if (facingFilter && dot(_FaceNormals[f], dir) > 0.0 && !BvhEitherSide(f)) continue; + float3 a = _TriVerts[_Tris[f * 3]]; + float3 b = _TriVerts[_Tris[f * 3 + 1]]; + float3 c = _TriVerts[_Tris[f * 3 + 2]]; + float t, u, v; + if (BvhRayTriangle(origin, dir, a, b, c, t, u, v) && t >= 0.0 && t < best.t) + { + best.t = t; best.tri = f; best.u = u; best.v = v; + } + } + continue; + } + // Nearer child on top of the stack. + BVHNode l = _BVHNodes[node.left]; + BVHNode r = _BVHNodes[node.right]; + float tl, tr; + bool hitL = BvhRayAabb(origin, invDir, l.bMin, l.bMax, best.t, tl); + bool hitR = BvhRayAabb(origin, invDir, r.bMin, r.bMax, best.t, tr); + if (sp + 2 > BVH_MAX_STACK) continue; + if (hitL && hitR) + { + if (tl <= tr) { stack[sp++] = node.right; stack[sp++] = node.left; } + else { stack[sp++] = node.left; stack[sp++] = node.right; } + } + else if (hitL) stack[sp++] = node.left; + else if (hitR) stack[sp++] = node.right; + } + return best; +} + +// Nearest face to q within maxDistSq. normalFilter keeps only faces whose normal +// has dot >= dotMin with qNormal (|dot| for either-side faces). +BvhNearestHit BvhNearest(float3 q, float maxDistSq, bool normalFilter, float3 qNormal, float dotMin) +{ + BvhNearestHit best; + best.tri = -1; best.distSq = maxDistSq; best.point = q; best.bary = float3(0, 0, 0); + int stack[BVH_MAX_STACK]; + int sp = 0; + stack[sp++] = 0; + while (sp > 0) + { + int nodeIdx = stack[--sp]; + BVHNode node = _BVHNodes[nodeIdx]; + if (BvhAabbDistSq(node.bMin, node.bMax, q) >= best.distSq) continue; + if (node.left == -1) + { + for (int i = node.triStart; i < node.triStart + node.triCount; i++) + { + int f = _TriIndices[i]; + if (normalFilter) + { + float d = dot(_FaceNormals[f], qNormal); + if (BvhEitherSide(f)) d = abs(d); + if (d < dotMin) continue; + } + float3 a = _TriVerts[_Tris[f * 3]]; + float3 b = _TriVerts[_Tris[f * 3 + 1]]; + float3 c = _TriVerts[_Tris[f * 3 + 2]]; + float3 bary; + float3 closest = BvhClosestPointOnTriangle(q, a, b, c, bary); + float dSq = dot(closest - q, closest - q); + if (dSq < best.distSq) + { + best.distSq = dSq; best.tri = f; best.point = closest; best.bary = bary; + } + } + continue; + } + BVHNode l = _BVHNodes[node.left]; + BVHNode r = _BVHNodes[node.right]; + float dl = BvhAabbDistSq(l.bMin, l.bMax, q); + float dr = BvhAabbDistSq(r.bMin, r.bMax, q); + if (sp + 2 > BVH_MAX_STACK) continue; + // Nearer child on top of the stack. + if (dl <= dr) { if (dr < best.distSq) stack[sp++] = node.right; if (dl < best.distSq) stack[sp++] = node.left; } + else { if (dl < best.distSq) stack[sp++] = node.left; if (dr < best.distSq) stack[sp++] = node.right; } + } + return best; +} + +#endif diff --git a/Shaders/BvhTraversal.hlsl.meta b/Shaders/BvhTraversal.hlsl.meta new file mode 100644 index 00000000..287e5714 --- /dev/null +++ b/Shaders/BvhTraversal.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3a3b289303dc44849e831e7dcc4fd1c8 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/VertexAORayTrace.compute b/Shaders/VertexAORayTrace.compute index 9a2af940..38396735 100644 --- a/Shaders/VertexAORayTrace.compute +++ b/Shaders/VertexAORayTrace.compute @@ -1,30 +1,16 @@ // VertexAORayTrace.compute — GPU vertex AO via BVH ray tracing. // Identical algorithm to CPU path: per-vertex hemisphere sampling with BVH raycast. // Two kernels: BakeAO (main ray tracing) and FinalizeAO (compute final values). +// The tree and its traversal are BvhTraversal.hlsl, bound through GpuBvh.Bind. #pragma kernel BakeAO #pragma kernel FinalizeAO #define FP_SCALE 100000u -#define MAX_STACK 32 -#define EPSILON 1e-7 -// ── BVH Data ── -struct BVHNode -{ - float3 bMin; - float3 bMax; - int left; - int right; - int triStart; - int triCount; -}; - -StructuredBuffer _BVHNodes; -StructuredBuffer _TriVerts; // world-space triangle vertices -StructuredBuffer _TriIndices; // face index remapping -StructuredBuffer _Tris; // triangle vertex indices (i0,i1,i2,...) -StructuredBuffer _FaceNormals; // per-face normals (for backface culling) +// The BVH buffers, ray–triangle test and traversal come from the shared include +// (the same tree GpuBvh uploads for every GPU query in the package). +#include "BvhTraversal.hlsl" // ── Per-vertex Data ── StructuredBuffer _Positions; @@ -51,103 +37,14 @@ float _BackfaceCulling; float _GroundPlane; float _GroundY; -// ── Ray-AABB intersection (slab method) ── -bool RayAABB(float3 origin, float3 invDir, float3 bMin, float3 bMax, float maxT) -{ - float3 t1 = (bMin - origin) * invDir; - float3 t2 = (bMax - origin) * invDir; - float3 tmin3 = min(t1, t2); - float3 tmax3 = max(t1, t2); - float tmin = max(max(tmin3.x, tmin3.y), max(tmin3.z, 0.0)); - float tmax = min(min(tmax3.x, tmax3.y), tmax3.z); - return tmin <= min(tmax, maxT); -} - -// ── Möller–Trumbore ray-triangle intersection ── -bool RayTriangle(float3 origin, float3 dir, float3 a, float3 b, float3 c, - out float t, out float3 faceNorm) -{ - t = 0; - float3 edge1 = b - a; - float3 edge2 = c - a; - faceNorm = cross(edge1, edge2); - float3 h = cross(dir, edge2); - float det = dot(edge1, h); - - // Relative to the triangle's scale, like the CPU BVH: millimetre meshes must hit too. - if (abs(det) <= 1e-7 * sqrt(dot(edge1, edge1) * dot(edge2, edge2))) return false; - - float invDet = 1.0 / det; - float3 s = origin - a; - float u = invDet * dot(s, h); - if (u < 0.0 || u > 1.0) return false; - - float3 q = cross(s, edge1); - float v = invDet * dot(dir, q); - if (v < 0.0 || u + v > 1.0) return false; - - t = invDet * dot(edge2, q); - return true; -} - -// ── BVH Raycast (iterative with stack) ── -// Returns: hit distance (or maxDist if no hit), and face normal of hit triangle +// Closest hit distance (maxDist when nothing is hit) and the hit face's unit normal. float BVHRaycast(float3 origin, float3 dir, float maxDist, out float3 hitFaceNorm) { hitFaceNorm = float3(0, 0, 0); - float bestT = maxDist; - float3 invDir = float3( - abs(dir.x) > EPSILON ? 1.0 / dir.x : 1e20, - abs(dir.y) > EPSILON ? 1.0 / dir.y : 1e20, - abs(dir.z) > EPSILON ? 1.0 / dir.z : 1e20 - ); - - int stack[MAX_STACK]; - int stackPtr = 0; - stack[stackPtr++] = 0; // root node - - while (stackPtr > 0) - { - int nodeIdx = stack[--stackPtr]; - BVHNode node = _BVHNodes[nodeIdx]; - - if (!RayAABB(origin, invDir, node.bMin, node.bMax, bestT)) - continue; - - // Leaf node - if (node.left == -1) - { - for (int i = node.triStart; i < node.triStart + node.triCount; i++) - { - int f = _TriIndices[i]; - int i0 = _Tris[f * 3]; - int i1 = _Tris[f * 3 + 1]; - int i2 = _Tris[f * 3 + 2]; - - float3 a = _TriVerts[i0]; - float3 b = _TriVerts[i1]; - float3 c = _TriVerts[i2]; - - float t; - float3 fn; - if (RayTriangle(origin, dir, a, b, c, t, fn) && t >= 0.0 && t < bestT) - { - bestT = t; - hitFaceNorm = fn; - } - } - continue; - } - - // Internal node — push children - if (stackPtr < MAX_STACK - 1) - { - stack[stackPtr++] = node.right; - stack[stackPtr++] = node.left; - } - } - - return bestT; + BvhRayHit hit = BvhRaycast(origin, dir, maxDist, false); + if (hit.tri < 0) return maxDist; + hitFaceNorm = _FaceNormals[hit.tri]; + return hit.t; } // ══════════════════════════════════════════════════════════ @@ -204,7 +101,7 @@ void BakeAO(uint3 id : SV_DispatchThreadID) // ray, treat it as a miss for occlusion purposes so the ground // plane check below still runs (matches original goto semantics). bool isBackface = (_BackfaceCulling > 0.5) && (_FlipNormals < 0.5) - && (dot(jitteredDir, normalize(hitNorm)) > 0.0); + && (dot(jitteredDir, hitNorm) > 0.0); if (!isBackface) { From daa6ca077ffeff85edbd2e04e3f73366147b160a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 08:25:13 +0000 Subject: [PATCH 087/130] perf(bvh): binned SAH build and watertight ray-triangle test, CPU and GPU From a read of tinybvh and the Woop-Benthin-Wald JCGT 2013 paper. The ray-triangle test was Moller-Trumbore, which can leak a ray between two adjacent triangles along their shared edge or through a shared vertex, a missed texel for every seam a bake ray grazes. It is now the watertight test: vertices translated to the ray origin and sheared so the ray becomes (0,0,1), three 2D edge functions with an exact-zero edge re-evaluated in double precision and counted as inside, two-sided with the determinant's sign folded into the depth test; the same test in BvhTraversal.hlsl without the double fallback. The build was a midpoint split with 4-triangle leaves; it is now a binned SAH build (8 bins per axis over the centroid bounds, cheapest plane by surface area, split only when it beats testing the node, leaves capped at 8 with a midpoint fallback for coincident centroids), so rays and nearest queries visit fewer nodes; the GPU kernels traverse the same tree. Tests cast rays through every shared vertex and edge of a grid and compare the tree with an exhaustive scan over a random soup. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Documentation~/REMESH_AND_BAKE.md | 5 +- Editor/TriangleBvh.cs | 290 +++++++++++++++++++----------- Shaders/BvhTraversal.hlsl | 66 ++++--- Tests/Editor/RemeshBakeTests.cs | 71 ++++++++ 5 files changed, 308 insertions(+), 125 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1bdd095..5f5f8ac4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Remesh & Bake: the tool is split into a stage pipeline, an exporter and the tab.** `RemeshBakeTool` (1000+ lines mixing IMGUI, two copies of every stage for the weld and keep-hierarchy lanes, and two near-identical save paths) is now the tab only. `RemeshPipeline` runs the stages over a list of nodes — the weld is one node in root space, keep-hierarchy one node per renderer — with a single loop per stage, one `ClearFrom`, and previews drawn from the primary (largest) node; `RemeshExporter` writes maps, materials, meshes and the prefab/FBX through one path for both lanes; `RemeshSource.CollectRenderers` is the one renderer filter (the weld capture and the node list agree by construction). `RemeshBeauty` keeps its scene data in world space and converts per capture space (`ForSpace`), so one snapshot serves every node. No settings, ABI or asset formats changed. ### Fixed +- **BVH rays are watertight and the tree is SAH-built.** Two findings from a read of the open implementations (tinybvh, the Woop–Benthin–Wald JCGT 2013 paper). The ray–triangle test was Möller–Trumbore, which can leak a ray between two adjacent triangles exactly along their shared edge or through a shared vertex — on a bake that is a missed texel for every seam a ray happens to graze. The test is now the watertight one: vertices translated to the ray origin and sheared so the ray becomes (0,0,1), three 2D edge functions with an exact-zero edge re-evaluated in double precision and counted as inside, two-sided with the determinant's sign folded into the depth test; the same test in `BvhTraversal.hlsl` (conservative without the double fallback on GPUs). The build was a midpoint split of the longest axis with 4-triangle leaves; it is now a binned SAH build (8 bins on each axis over the centroid bounds, cheapest plane by surface-area heuristic, a split only when it beats testing the node, leaves capped at 8 with a midpoint fallback for coincident centroids), which visits fewer nodes per ray and per nearest query on the same geometry — the GPU kernels traverse the same tree. Tests cast rays through every shared vertex and edge of a grid and compare the tree's answers with an exhaustive scan over a random soup. - **BVH rays hit millimetre-scale meshes.** The ray–triangle test rejected a triangle as "parallel" when its Möller–Trumbore determinant was under an absolute 1e-7, but that determinant scales with the product of two edge lengths, so every face of a small model (edges around 1e-4 units) failed the test and the bake, the trim's reach and vertex AO saw nothing. The threshold is relative to the triangle's own scale now, on the CPU BVH and in the GPU AO kernel alike; a regression test casts at a 1e-4 triangle. - **Remesh & Bake: Trim to source surface now actually removes the back of an open sheet.** The trim judged a remesh face by position ("is its centroid behind the source sheet?"), but the voxel remesher fits its output vertices onto the input surface, so the slab around an open wall is not a cell thick: its front and back faces lie ON the sheet, both at zero distance, and both passed — a zero-thickness double-sided result on every wall of a non-closed source (half the positions of a bathroom interior carried two sides), which then broke the projection cage and baked texels from the wrong side. The trim now keeps a face only when a source face within two cells points the same way: the back (opposite normal) and the rims (perpendicular) go, a closed or genuinely double-sided source keeps both sides, an inside-out source is judged by its flipped normals, and when neither reading keeps a tenth of the remesh the stage warns instead of silently keeping everything. On a one-sided open room the trim removes 50% of the remesh (back and rims) where it removed 3% before. - **Remesh & Bake, keep hierarchy: nothing is captured twice, sheared transforms survive, and previews/exports are coherent.** A node's capture folded its whole subtree in while every child renderer was also its own node, so nested renderers baked into two meshes; each renderer is now exactly one node. A node's capture space is the TRS the save restores (root × TRS), so a rotated child under a non-uniformly scaled parent folds the residual shear into its geometry instead of losing it. The node list applies the same mesh-asset name filters (`_COL`, `_LOD{n}`) as the weld, so a normally named object carrying a collision mesh no longer aborts the whole run. Re-running Normals & UV destroys the previous node meshes (each iteration leaked one `HideAndDontSave` mesh per node); a re-bake with vertex color transfer off clears the colors the previous bake left on every node; the UV and cage previews show the largest node's geometry instead of "run the UV stage"; and the hierarchy save imports the map files before configuring their importers (one `AssetEditingScope` deferred the imports past the importer lookup, which could fail and roll the whole folder back). diff --git a/Documentation~/REMESH_AND_BAKE.md b/Documentation~/REMESH_AND_BAKE.md index c80cde0e..5cf4e258 100644 --- a/Documentation~/REMESH_AND_BAKE.md +++ b/Documentation~/REMESH_AND_BAKE.md @@ -340,8 +340,9 @@ Texture snapshots and Unity mesh/asset APIs stay on the main thread. Fibonacci sample directions, 2D barycentrics, point–box distance); `Editor/Geometry/GpuReadback.cs` — the one GPU → CPU texture readback (blit through an optional material or sub-rectangle into a linear temporary, then - ReadPixels). Spatial queries are `Editor/TriangleBvh.cs` (3D: ray, nearest, - normal- and facing-filtered, either-side masks) and `Editor/TriangleBvh2D.cs` + ReadPixels). Spatial queries are `Editor/TriangleBvh.cs` (3D: binned-SAH build, + watertight two-sided ray test, nearest point, normal- and facing-filtered, + either-side masks) and `Editor/TriangleBvh2D.cs` (UV space); `Editor/Geometry/GpuBvh.cs` is the same tree on the GPU with the same queries in batches (`Shaders/BvhQueries.compute`), and `Shaders/BvhTraversal.hlsl` is the one traversal every compute kernel includes diff --git a/Editor/TriangleBvh.cs b/Editor/TriangleBvh.cs index 4998bd7d..9c272f90 100644 --- a/Editor/TriangleBvh.cs +++ b/Editor/TriangleBvh.cs @@ -1,6 +1,10 @@ -// TriangleBvh.cs — AABB Bounding Volume Hierarchy for nearest-surface queries -// Used by SurfaceProjectionSolver to find closest source triangle for each target sample +// TriangleBvh.cs — the package's triangle BVH: binned-SAH build (Wald 2007, 8 bins +// per axis, SAH-terminated leaves), ordered ray traversal with the watertight +// two-sided ray–triangle test (Woop, Benthin, Wald 2013), nearest-point queries with +// optional normal / facing / either-side filters. GetGPUData hands the same tree to +// Shaders/BvhTraversal.hlsl, which mirrors every test here. +using System; using UnityEngine; namespace SashaRX.UnityMeshLab @@ -22,7 +26,16 @@ struct Node int[] tris; int nodeCount; - const int MAX_LEAF = 4; + // Leaves: the SAH decides (a split must beat C_INT × count), with a hard cap so + // piles of coincident triangles still terminate; below MIN_SPLIT nothing is tried. + const int MAX_LEAF = 8, MIN_SPLIT = 3, BINS = 8; + const float C_TRAV = 1f, C_INT = 1f; + + // Per face, for the build only: bounds and centroid; plus the SAH bin scratch. + Vector3[] faceMin, faceMax, faceCentroid; + readonly int[] binCount = new int[BINS], leftCount = new int[BINS - 1], rightCount = new int[BINS - 1]; + readonly float[] leftArea = new float[BINS - 1], rightArea = new float[BINS - 1]; + readonly Vector3[] binMin = new Vector3[BINS], binMax = new Vector3[BINS]; public TriangleBvh(Vector3[] vertices, int[] triangles) { @@ -31,15 +44,22 @@ public TriangleBvh(Vector3[] vertices, int[] triangles) int faceCount = triangles.Length / 3; triIndices = new int[faceCount]; - for (int i = 0; i < faceCount; i++) - triIndices[i] = i; + faceMin = new Vector3[faceCount]; faceMax = new Vector3[faceCount]; faceCentroid = new Vector3[faceCount]; + for (int f = 0; f < faceCount; f++) + { + triIndices[f] = f; + Vector3 a = verts[tris[f * 3]], b = verts[tris[f * 3 + 1]], c = verts[tris[f * 3 + 2]]; + faceMin[f] = Vector3.Min(a, Vector3.Min(b, c)); + faceMax[f] = Vector3.Max(a, Vector3.Max(b, c)); + faceCentroid[f] = (a + b + c) * (1f / 3f); + } - nodes = new Node[faceCount * 2 + 1]; + nodes = new Node[Math.Max(1, faceCount * 2)]; nodeCount = 0; - - BuildRecursive(0, faceCount); + if (faceCount == 0) { nodes[nodeCount++] = new Node { left = -1, right = -1, triStart = 0, triCount = 0 }; } + else BuildRecursive(0, faceCount); + faceMin = faceMax = faceCentroid = null; } - // ─── Nearest point on any triangle ─── public struct HitResult { @@ -98,7 +118,8 @@ public struct RayHit public RayHit Raycast(Vector3 origin, Vector3 direction, float maxDist) { var best = new RayHit { triangleIndex = -1, t = maxDist }; - RaycastRecursive(0, origin, direction, ref best); + var frame = new RayFrame(direction); + RaycastRecursive(0, origin, direction, in frame, ref best); return best; } @@ -112,7 +133,8 @@ public RayHit Raycast(Vector3 origin, Vector3 direction, float maxDist) public RayHit RaycastFacingFiltered(Vector3 origin, Vector3 direction, float maxDist, Vector3[] faceNormals, bool[] eitherSide = null) { var best = new RayHit { triangleIndex = -1, t = maxDist }; - RaycastFacingRecursive(0, origin, direction, faceNormals, eitherSide, ref best); + var frame = new RayFrame(direction); + RaycastFacingRecursive(0, origin, direction, in frame, faceNormals, eitherSide, ref best); return best; } @@ -129,52 +151,97 @@ public RayHit RaycastBidirectional(Vector3 origin, Vector3 normal, float maxDist } // ─── Build ─── + // Binned SAH (Wald 2007): BINS bins along each axis over the centroid bounds, + // the cheapest plane by surface-area heuristic; the split only happens when it + // beats testing the whole node. A midpoint split keeps the tree balanced where + // the SAH finds nothing (coincident centroids). int BuildRecursive(int start, int count) { int idx = nodeCount++; ref Node node = ref nodes[idx]; - - // Compute bounds - ComputeBounds(start, count, out node.bMin, out node.bMax); - node.left = -1; - node.right = -1; - - if (count <= MAX_LEAF) + ComputeBounds(start, count, out node.bMin, out node.bMax, out Vector3 cMin, out Vector3 cMax); + node.left = -1; node.right = -1; + if (count < MIN_SPLIT) { node.triStart = start; node.triCount = count; return idx; } + + int bestAxis = -1, bestBin = -1; float bestCost = float.MaxValue; + Vector3 cExtent = cMax - cMin; + var binCount = this.binCount; var leftArea = this.leftArea; var rightArea = this.rightArea; + var leftCount = this.leftCount; var rightCount = this.rightCount; var binMin = this.binMin; var binMax = this.binMax; + for (int axis = 0; axis < 3; axis++) { - node.triStart = start; - node.triCount = count; - return idx; + float extent = GetComponent(cExtent, axis); + if (extent <= 0f) continue; + float scale = BINS / extent, origin = GetComponent(cMin, axis); + for (int b = 0; b < BINS; b++) { binCount[b] = 0; binMin[b] = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue); binMax[b] = new Vector3(float.MinValue, float.MinValue, float.MinValue); } + for (int i = start; i < start + count; i++) + { + int f = triIndices[i]; + int b = Math.Min(BINS - 1, (int)((GetComponent(faceCentroid[f], axis) - origin) * scale)); + binCount[b]++; + binMin[b] = Vector3.Min(binMin[b], faceMin[f]); binMax[b] = Vector3.Max(binMax[b], faceMax[f]); + } + // Sweep from both ends: area and count of everything left / right of each plane. + Vector3 lMin = binMin[0], lMax = binMax[0]; int lCount = 0; + for (int b = 0; b < BINS - 1; b++) + { + lCount += binCount[b]; + if (b > 0) { lMin = Vector3.Min(lMin, binMin[b]); lMax = Vector3.Max(lMax, binMax[b]); } + leftCount[b] = lCount; leftArea[b] = lCount > 0 ? HalfArea(lMin, lMax) : 0f; + } + Vector3 rMin = binMin[BINS - 1], rMax = binMax[BINS - 1]; int rCount = 0; + for (int b = BINS - 1; b > 0; b--) + { + rCount += binCount[b]; + if (b < BINS - 1) { rMin = Vector3.Min(rMin, binMin[b]); rMax = Vector3.Max(rMax, binMax[b]); } + rightCount[b - 1] = rCount; rightArea[b - 1] = rCount > 0 ? HalfArea(rMin, rMax) : 0f; + } + for (int b = 0; b < BINS - 1; b++) + { + if (leftCount[b] == 0 || rightCount[b] == 0) continue; + float cost = leftArea[b] * leftCount[b] + rightArea[b] * rightCount[b]; + if (cost < bestCost) { bestCost = cost; bestAxis = axis; bestBin = b; } + } } - // Split along longest axis - Vector3 extent = node.bMax - node.bMin; - int axis = 0; - if (extent.y > extent.x) axis = 1; - if (extent.z > (axis == 0 ? extent.x : extent.y)) axis = 2; - - float splitVal = GetComponent(node.bMin, axis) + GetComponent(extent, axis) * 0.5f; - - // Partition - int mid = Partition(start, count, axis, splitVal); - - // Fallback: split in half if partition failed - if (mid == start || mid == start + count) - mid = start + count / 2; - - node.triStart = -1; - node.triCount = 0; - node.left = BuildRecursive(start, mid - start); - node.right = BuildRecursive(mid, start + count - mid); - + float nodeArea = HalfArea(node.bMin, node.bMax); + bool split = bestAxis >= 0 && nodeArea > 0f && C_TRAV + C_INT * bestCost / nodeArea < C_INT * count; + int mid = start; + if (split) + { + float plane = GetComponent(cMin, bestAxis) + (bestBin + 1) * GetComponent(cExtent, bestAxis) / BINS; + mid = Partition(start, count, bestAxis, plane); + if (mid == start || mid == start + count) split = false; + } + if (!split) + { + if (count <= MAX_LEAF) { node.triStart = start; node.triCount = count; return idx; } + // Forced split for oversize leaves the SAH would not cut: the middle of + // the longest centroid axis, or the middle of the range when all coincide. + int axis = 0; + if (cExtent.y > cExtent.x) axis = 1; + if (cExtent.z > GetComponent(cExtent, axis)) axis = 2; + mid = Partition(start, count, axis, GetComponent(cMin, axis) + GetComponent(cExtent, axis) * 0.5f); + if (mid == start || mid == start + count) mid = start + count / 2; + } + node.triStart = -1; node.triCount = 0; + int left = BuildRecursive(start, mid - start); + int right = BuildRecursive(mid, start + count - mid); + nodes[idx].left = left; nodes[idx].right = right; // `node` may be stale after recursion (no realloc, but be explicit) return idx; } + static float HalfArea(Vector3 min, Vector3 max) + { + Vector3 e = max - min; + return e.x * e.y + e.y * e.z + e.z * e.x; + } + int Partition(int start, int count, int axis, float splitVal) { int lo = start, hi = start + count - 1; while (lo <= hi) { - float c = TriangleCentroidAxis(triIndices[lo], axis); + float c = GetComponent(faceCentroid[triIndices[lo]], axis); if (c < splitVal) lo++; else @@ -188,32 +255,18 @@ int Partition(int start, int count, int axis, float splitVal) return lo; } - float TriangleCentroidAxis(int face, int axis) + void ComputeBounds(int start, int count, out Vector3 bMin, out Vector3 bMax, out Vector3 cMin, out Vector3 cMax) { - int i0 = tris[face * 3], i1 = tris[face * 3 + 1], i2 = tris[face * 3 + 2]; - return (GetComponent(verts[i0], axis) + - GetComponent(verts[i1], axis) + - GetComponent(verts[i2], axis)) / 3f; - } - - void ComputeBounds(int start, int count, out Vector3 bMin, out Vector3 bMax) - { - bMin = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue); - bMax = new Vector3(float.MinValue, float.MinValue, float.MinValue); - + bMin = cMin = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue); + bMax = cMax = new Vector3(float.MinValue, float.MinValue, float.MinValue); for (int i = start; i < start + count; i++) { int f = triIndices[i]; - for (int j = 0; j < 3; j++) - { - Vector3 v = verts[tris[f * 3 + j]]; - bMin = Vector3.Min(bMin, v); - bMax = Vector3.Max(bMax, v); - } + bMin = Vector3.Min(bMin, faceMin[f]); bMax = Vector3.Max(bMax, faceMax[f]); + cMin = Vector3.Min(cMin, faceCentroid[f]); cMax = Vector3.Max(cMax, faceCentroid[f]); } } - // ─── Nearest-point query ─── void FindNearestRecursive(int nodeIdx, Vector3 q, ref HitResult best) { ref Node node = ref nodes[nodeIdx]; @@ -314,7 +367,7 @@ void FindNearestNormFiltRecursive(int nodeIdx, Vector3 q, Vector3 qNrm, // Both traversals visit the nearer child first: once a hit shrinks best.t the far // child is culled by the slab test, which matters for long rays (a proxy texel // looking through a whole building, a shadow ray across a scene). - void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) + void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, in RayFrame frame, ref RayHit best) { ref Node node = ref nodes[nodeIdx]; if (!RayEntersAabb(origin, dir, node.bMin, node.bMax, best.t, out _)) @@ -327,25 +380,22 @@ void RaycastRecursive(int nodeIdx, Vector3 origin, Vector3 dir, ref RayHit best) { int f = triIndices[i]; int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; - - if (RayTriangleIntersect(origin, dir, verts[i0], verts[i1], verts[i2], - out float t, out float u, out float v) - && t >= 0f && t < best.t) + if (Watertight(in frame, origin, verts[i0], verts[i1], verts[i2], best.t, out float t, out Vector3 bary)) { best.t = t; best.triangleIndex = f; - best.barycentric = new Vector3(1f - u - v, u, v); + best.barycentric = bary; } } return; } OrderChildren(node, origin, dir, best.t, out int first, out int second); - if (first >= 0) RaycastRecursive(first, origin, dir, ref best); - if (second >= 0) RaycastRecursive(second, origin, dir, ref best); + if (first >= 0) RaycastRecursive(first, origin, dir, in frame, ref best); + if (second >= 0) RaycastRecursive(second, origin, dir, in frame, ref best); } - void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] fNrm, bool[] eitherSide, ref RayHit best) + void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, in RayFrame frame, Vector3[] fNrm, bool[] eitherSide, ref RayHit best) { ref Node node = ref nodes[nodeIdx]; if (!RayEntersAabb(origin, dir, node.bMin, node.bMax, best.t, out _)) @@ -358,21 +408,19 @@ void RaycastFacingRecursive(int nodeIdx, Vector3 origin, Vector3 dir, Vector3[] int f = triIndices[i]; if (Vector3.Dot(fNrm[f], dir) > 0f && !(eitherSide != null && f < eitherSide.Length && eitherSide[f])) continue; // facing away from the ray origin int i0 = tris[f * 3], i1 = tris[f * 3 + 1], i2 = tris[f * 3 + 2]; - if (RayTriangleIntersect(origin, dir, verts[i0], verts[i1], verts[i2], - out float t, out float u, out float v) - && t >= 0f && t < best.t) + if (Watertight(in frame, origin, verts[i0], verts[i1], verts[i2], best.t, out float t, out Vector3 bary)) { best.t = t; best.triangleIndex = f; - best.barycentric = new Vector3(1f - u - v, u, v); + best.barycentric = bary; } } return; } OrderChildren(node, origin, dir, best.t, out int first, out int second); - if (first >= 0) RaycastFacingRecursive(first, origin, dir, fNrm, eitherSide, ref best); - if (second >= 0) RaycastFacingRecursive(second, origin, dir, fNrm, eitherSide, ref best); + if (first >= 0) RaycastFacingRecursive(first, origin, dir, in frame, fNrm, eitherSide, ref best); + if (second >= 0) RaycastFacingRecursive(second, origin, dir, in frame, fNrm, eitherSide, ref best); } // The children the ray enters, nearer entry first; -1 for a child the ray misses @@ -444,34 +492,70 @@ static bool RayEntersAabb(Vector3 origin, Vector3 dir, Vector3 bMin, Vector3 bMa /// Möller–Trumbore ray-triangle intersection. /// Returns true if hit, with t (distance), u, v (barycentric of B, C). /// - static bool RayTriangleIntersect(Vector3 origin, Vector3 dir, - Vector3 a, Vector3 b, Vector3 c, - out float t, out float u, out float v) + /// + /// Per-ray part of the watertight ray–triangle test (Woop, Benthin, Wald, JCGT + /// 2013): the ray's dominant axis kz, the other two in winding-preserving order + /// (swapped when the ray points down kz), and the shear that maps the ray onto + /// the unit ray (0,0,1). + /// + public readonly struct RayFrame + { + public readonly int kx, ky, kz; + public readonly float sx, sy, sz; + + public RayFrame(Vector3 dir) + { + Vector3 a = new Vector3(Mathf.Abs(dir.x), Mathf.Abs(dir.y), Mathf.Abs(dir.z)); + kz = a.x > a.y ? (a.x > a.z ? 0 : 2) : (a.y > a.z ? 1 : 2); + kx = kz + 1; if (kx == 3) kx = 0; + ky = kx + 1; if (ky == 3) ky = 0; + if (GetComponent(dir, kz) < 0f) { int t = kx; kx = ky; ky = t; } + float dz = GetComponent(dir, kz); + if (dz == 0f) dz = 1e-30f; // a zero direction hits nothing anyway + sx = GetComponent(dir, kx) / dz; + sy = GetComponent(dir, ky) / dz; + sz = 1f / dz; + } + } + + /// + /// Watertight two-sided ray–triangle test (Woop, Benthin, Wald 2013). Vertices + /// are translated to the ray origin, sheared so the ray becomes (0,0,1), and + /// tested with three 2D edge functions; an edge that evaluates to exactly 0 is + /// re-evaluated in double precision, and a 0 that survives counts as inside, so + /// adjacent triangles never leak a ray between them (no cracks along shared + /// edges or at shared vertices, which Möller–Trumbore does not guarantee). The + /// hit is accepted when 0 ≤ t < maxT; bary holds the weights of a, b, c. + /// + public static bool Watertight(in RayFrame k, Vector3 origin, Vector3 a, Vector3 b, Vector3 c, float maxT, out float t, out Vector3 bary) { - t = 0; u = 0; v = 0; - - Vector3 edge1 = b - a; - Vector3 edge2 = c - a; - Vector3 h = Vector3.Cross(dir, edge2); - float det = Vector3.Dot(edge1, h); - - // Parallel test relative to the triangle's own scale: |det| ≤ |e1|·|e2|, so an - // absolute 1e-7 silently rejected every face of a millimetre-scale mesh - // (edges ~1e-4 → det ~1e-8) as "parallel" and the bake missed the whole model. - float scale = Mathf.Sqrt(edge1.sqrMagnitude * edge2.sqrMagnitude); - if (Mathf.Abs(det) <= 1e-7f * scale) return false; - - float invDet = 1f / det; - Vector3 s = origin - a; - u = invDet * Vector3.Dot(s, h); - if (u < 0f || u > 1f) return false; - - Vector3 q = Vector3.Cross(s, edge1); - v = invDet * Vector3.Dot(dir, q); - if (v < 0f || u + v > 1f) return false; - - t = invDet * Vector3.Dot(edge2, q); - return true; // t can be negative — caller checks t >= 0 + t = 0f; bary = default; + a -= origin; b -= origin; c -= origin; + float az = GetComponent(a, k.kz), bz = GetComponent(b, k.kz), cz = GetComponent(c, k.kz); + float ax = GetComponent(a, k.kx) - k.sx * az, ay = GetComponent(a, k.ky) - k.sy * az; + float bx = GetComponent(b, k.kx) - k.sx * bz, by = GetComponent(b, k.ky) - k.sy * bz; + float cx = GetComponent(c, k.kx) - k.sx * cz, cy = GetComponent(c, k.ky) - k.sy * cz; + float U = cx * by - cy * bx; + float V = ax * cy - ay * cx; + float W = bx * ay - by * ax; + if (U == 0f || V == 0f || W == 0f) + { + U = (float)((double)cx * by - (double)cy * bx); + V = (float)((double)ax * cy - (double)ay * cx); + W = (float)((double)bx * ay - (double)by * ax); + } + if ((U < 0f || V < 0f || W < 0f) && (U > 0f || V > 0f || W > 0f)) return false; + float det = U + V + W; + if (det == 0f) return false; // ray in the triangle's plane, or a degenerate triangle + float T = U * (k.sz * az) + V * (k.sz * bz) + W * (k.sz * cz); + // Scaled depth test with the determinant's sign folded in (two-sided). + float sign = det < 0f ? -1f : 1f; + float Ts = T * sign, dets = det * sign; + if (Ts < 0f || Ts >= maxT * dets) return false; + float rcp = 1f / det; + t = T * rcp; + bary = new Vector3(U * rcp, V * rcp, W * rcp); + return true; } /// diff --git a/Shaders/BvhTraversal.hlsl b/Shaders/BvhTraversal.hlsl index 847560bf..e6523c60 100644 --- a/Shaders/BvhTraversal.hlsl +++ b/Shaders/BvhTraversal.hlsl @@ -61,24 +61,49 @@ bool BvhRayAabb(float3 origin, float3 invDir, float3 bMin, float3 bMax, float ma return tmin <= min(tmax, maxT); } -// Möller–Trumbore. The parallel test is relative to the triangle's own scale -// (|det| <= |e1|·|e2|), so millimetre meshes register hits like metre ones. -bool BvhRayTriangle(float3 origin, float3 dir, float3 a, float3 b, float3 c, out float t, out float u, out float v) +// Watertight two-sided ray–triangle test (Woop, Benthin, Wald, JCGT 2013), the +// same as TriangleBvh.Watertight: vertices translated to the ray origin and sheared +// so the ray is (0,0,1), three 2D edge functions, an edge at exactly 0 counts as +// inside, so adjacent triangles never leak a ray between them. The CPU re-evaluates +// a zero edge in double precision; GPUs without doubles keep the conservative hit +// (the paper: a false positive once per ~million tests, on tiny far triangles only). +struct BvhRayFrame { int kx; int ky; int kz; float sx; float sy; float sz; }; + +BvhRayFrame BvhFrame(float3 dir) +{ + BvhRayFrame k; + float3 a = abs(dir); + k.kz = a.x > a.y ? (a.x > a.z ? 0 : 2) : (a.y > a.z ? 1 : 2); + k.kx = k.kz + 1; if (k.kx == 3) k.kx = 0; + k.ky = k.kx + 1; if (k.ky == 3) k.ky = 0; + if (dir[k.kz] < 0.0) { int t = k.kx; k.kx = k.ky; k.ky = t; } + float dz = dir[k.kz]; + if (dz == 0.0) dz = 1e-30; + k.sx = dir[k.kx] / dz; k.sy = dir[k.ky] / dz; k.sz = 1.0 / dz; + return k; +} + +bool BvhWatertight(BvhRayFrame k, float3 origin, float3 a, float3 b, float3 c, float maxT, out float t, out float3 bary) { - t = 0; u = 0; v = 0; - float3 edge1 = b - a; - float3 edge2 = c - a; - float3 h = cross(dir, edge2); - float det = dot(edge1, h); - if (abs(det) <= 1e-7 * sqrt(dot(edge1, edge1) * dot(edge2, edge2))) return false; - float invDet = 1.0 / det; - float3 s = origin - a; - u = invDet * dot(s, h); - if (u < 0.0 || u > 1.0) return false; - float3 q = cross(s, edge1); - v = invDet * dot(dir, q); - if (v < 0.0 || u + v > 1.0) return false; - t = invDet * dot(edge2, q); + t = 0; bary = float3(0, 0, 0); + a -= origin; b -= origin; c -= origin; + float az = a[k.kz], bz = b[k.kz], cz = c[k.kz]; + float ax = a[k.kx] - k.sx * az, ay = a[k.ky] - k.sy * az; + float bx = b[k.kx] - k.sx * bz, by = b[k.ky] - k.sy * bz; + float cx = c[k.kx] - k.sx * cz, cy = c[k.ky] - k.sy * cz; + float U = cx * by - cy * bx; + float V = ax * cy - ay * cx; + float W = bx * ay - by * ax; + if ((U < 0.0 || V < 0.0 || W < 0.0) && (U > 0.0 || V > 0.0 || W > 0.0)) return false; + float det = U + V + W; + if (det == 0.0) return false; + float T = U * (k.sz * az) + V * (k.sz * bz) + W * (k.sz * cz); + float sgn = det < 0.0 ? -1.0 : 1.0; + float Ts = T * sgn, dets = det * sgn; + if (Ts < 0.0 || Ts >= maxT * dets) return false; + float rcp = 1.0 / det; + t = T * rcp; + bary = float3(U, V, W) * rcp; return true; } @@ -125,6 +150,7 @@ BvhRayHit BvhRaycast(float3 origin, float3 dir, float maxDist, bool facingFilter abs(dir.x) > BVH_DIR_EPSILON ? 1.0 / dir.x : (dir.x >= 0 ? 1e20 : -1e20), abs(dir.y) > BVH_DIR_EPSILON ? 1.0 / dir.y : (dir.y >= 0 ? 1e20 : -1e20), abs(dir.z) > BVH_DIR_EPSILON ? 1.0 / dir.z : (dir.z >= 0 ? 1e20 : -1e20)); + BvhRayFrame frame = BvhFrame(dir); int stack[BVH_MAX_STACK]; int sp = 0; stack[sp++] = 0; @@ -143,10 +169,10 @@ BvhRayHit BvhRaycast(float3 origin, float3 dir, float maxDist, bool facingFilter float3 a = _TriVerts[_Tris[f * 3]]; float3 b = _TriVerts[_Tris[f * 3 + 1]]; float3 c = _TriVerts[_Tris[f * 3 + 2]]; - float t, u, v; - if (BvhRayTriangle(origin, dir, a, b, c, t, u, v) && t >= 0.0 && t < best.t) + float t; float3 bary; + if (BvhWatertight(frame, origin, a, b, c, best.t, t, bary)) { - best.t = t; best.tri = f; best.u = u; best.v = v; + best.t = t; best.tri = f; best.u = bary.y; best.v = bary.z; } } continue; diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 611f7e77..76354bc0 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -61,6 +61,77 @@ public void BvhRaycastHitsMillimetreScaleTriangles() Assert.AreEqual(-1, bvh.Raycast(new Vector3(s*0.25f, s*0.25f, 1f), Vector3.right, 2f).triangleIndex, "parallel to it"); } [Test] + public void BvhRaysAreWatertightAcrossSharedEdgesAndVertices() + { + // A 4×4 grid of quads split into triangles, all in z = 0; rays cast exactly + // through every shared vertex and through points along every shared edge + // must all hit (Möller–Trumbore can leak a ray between two triangles there). + const int n = 4; var p = new System.Collections.Generic.List(); var idx = new System.Collections.Generic.List(); + for (int y = 0; y <= n; ++y) for (int x = 0; x <= n; ++x) p.Add(new Vector3(x * 0.37f, y * 0.53f, 0)); + for (int y = 0; y < n; ++y) for (int x = 0; x < n; ++x) { + int a = y * (n + 1) + x; idx.AddRange(new[] { a, a + 1, a + n + 2, a, a + n + 2, a + n + 1 }); + } + var bvh = new TriangleBvh(p.ToArray(), idx.ToArray()); + var dirs = new[] { Vector3.back, new Vector3(0.3f, -0.2f, -1f).normalized, new Vector3(-0.7f, 0.4f, 1f).normalized }; + int tested = 0; + foreach (var d in dirs) { + // Shared vertices. + for (int y = 1; y < n; ++y) for (int x = 1; x < n; ++x) { + var target = new Vector3(x * 0.37f, y * 0.53f, 0); + var hit = bvh.Raycast(target - d * 2f, d, 5f); + Assert.GreaterOrEqual(hit.triangleIndex, 0, $"vertex {x},{y} along {d}"); ++tested; + } + // Points along shared edges (horizontal, vertical and diagonal). + for (int i = 1; i < 7; ++i) { + float s = i / 7f; + foreach (var target in new[] { new Vector3((1 + s) * 0.37f, 2 * 0.53f, 0), new Vector3(2 * 0.37f, (1 + s) * 0.53f, 0), new Vector3((1 + s) * 0.37f, (1 + s) * 0.53f, 0) }) { + var hit = bvh.Raycast(target - d * 2f, d, 5f); + Assert.GreaterOrEqual(hit.triangleIndex, 0, $"edge point {target} along {d}"); ++tested; + Assert.That(hit.t, Is.EqualTo(2f).Within(1e-4f)); + var w = hit.barycentric; int f = hit.triangleIndex; + var at = p[idx[f * 3]] * w.x + p[idx[f * 3 + 1]] * w.y + p[idx[f * 3 + 2]] * w.z; + Assert.That((at - target).magnitude, Is.LessThan(1e-4f), "barycentric weights locate the hit"); + } + } + } + Assert.Greater(tested, 50); + // Behind the origin and beyond the reach: no hit. + Assert.AreEqual(-1, bvh.Raycast(new Vector3(0.5f, 0.5f, -1f), Vector3.back, 5f).triangleIndex); + Assert.AreEqual(-1, bvh.Raycast(new Vector3(0.5f, 0.5f, 3f), Vector3.back, 2f).triangleIndex); + } + [Test] + public void BvhQueriesMatchBruteForceOnARandomSoup() + { + // The SAH build must not change what the queries answer: nearest point and + // first ray hit agree with an exhaustive scan over 400 random triangles. + var rng = new System.Random(7); + float R() => (float)rng.NextDouble(); + int faces = 400; var p = new Vector3[faces * 3]; var idx = new int[faces * 3]; + for (int f = 0; f < faces; ++f) { + var centre = new Vector3(R() * 4 - 2, R() * 4 - 2, R() * 4 - 2); + for (int k = 0; k < 3; ++k) { p[f * 3 + k] = centre + new Vector3(R() - 0.5f, R() - 0.5f, R() - 0.5f) * 0.6f; idx[f * 3 + k] = f * 3 + k; } + } + var bvh = new TriangleBvh(p, idx); + var frameDir = Vector3.zero; + for (int q = 0; q < 200; ++q) { + var point = new Vector3(R() * 5 - 2.5f, R() * 5 - 2.5f, R() * 5 - 2.5f); + var near = bvh.FindNearest(point); + float brute = float.MaxValue; + for (int f = 0; f < faces; ++f) { + var cp = TriangleBvh.ClosestPointOnTriangle(point, p[f * 3], p[f * 3 + 1], p[f * 3 + 2], out _); + brute = Mathf.Min(brute, (cp - point).sqrMagnitude); + } + Assert.That(near.distSq, Is.EqualTo(brute).Within(1e-5f), "nearest " + q); + var dir = new Vector3(R() - 0.5f, R() - 0.5f, R() - 0.5f).normalized; + var hit = bvh.Raycast(point, dir, 10f); + float bruteT = 10f; var frame = new TriangleBvh.RayFrame(dir); + for (int f = 0; f < faces; ++f) + if (TriangleBvh.Watertight(in frame, point, p[f * 3], p[f * 3 + 1], p[f * 3 + 2], bruteT, out float t, out _)) bruteT = t; + if (bruteT < 10f) { Assert.GreaterOrEqual(hit.triangleIndex, 0, "ray " + q); Assert.That(hit.t, Is.EqualTo(bruteT).Within(1e-5f)); } + else Assert.AreEqual(-1, hit.triangleIndex, "ray " + q); + } + } + [Test] public void MeshGeometryHelpersAgreeWithTheirDefinitions() { var p = new[] { Vector3.zero, Vector3.right, Vector3.up, Vector3.zero, Vector3.right }; From 31962cf86f7e83189b91766da71713e30bde4db5 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 08:43:41 +0000 Subject: [PATCH 088/130] refactor(mesh): MeshNaming, the one reader of LOD and collision naming rules LOD and collision suffixes were parsed by nine different regexes across UvToolContext, MeshHygieneUtility, LodPipelineOps, LodGenerationTool, CleanupTool, PrefabBuilderTool, VertexColorBakingTool, RemeshSource and LightmapTransferTool, and they had drifted: some required _LOD, some accepted -LOD and " LOD", one accepted FooLOD1 with no separator, and the collision rules disagreed on _COL_* and _Collider. Editor/Mesh/MeshNaming.cs is now the one implementation (TryParseLod with the LODGroup index limit, LodIndex, HasLodSuffix, StripLod, SplitLodSuffix keeping the suffix text verbatim for renames, LodName, IsCollision, StripCollision, HasLodOrCollisionSuffix, GroupKey, StripPipelineSuffixes). Every site calls it; ExtractGroupKey and the MeshHygieneUtility helpers forward to it so existing callers and the reflection-based tests keep working. A test file pins the accepted forms. CLAUDE.md points new code at MeshNaming. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 4 +- Editor/Framework/UvToolContext.cs | 10 +-- Editor/LodPipelineOps.cs | 15 +---- Editor/Mesh.meta | 8 +++ Editor/Mesh/MeshNaming.cs | 94 +++++++++++++++++++++++++++ Editor/Mesh/MeshNaming.cs.meta | 11 ++++ Editor/MeshHygieneUtility.cs | 59 ++--------------- Editor/RemeshSource.cs | 17 +---- Editor/Tools/CleanupTool.cs | 34 ++-------- Editor/Tools/LightmapTransferTool.cs | 16 ++--- Editor/Tools/LodGenerationTool.cs | 29 ++------- Editor/Tools/PrefabBuilderTool.cs | 28 +------- Editor/Tools/VertexColorBakingTool.cs | 22 +------ Tests/Editor/MeshNamingTests.cs | 92 ++++++++++++++++++++++++++ Tests/Editor/MeshNamingTests.cs.meta | 11 ++++ 16 files changed, 254 insertions(+), 197 deletions(-) create mode 100644 Editor/Mesh.meta create mode 100644 Editor/Mesh/MeshNaming.cs create mode 100644 Editor/Mesh/MeshNaming.cs.meta create mode 100644 Tests/Editor/MeshNamingTests.cs create mode 100644 Tests/Editor/MeshNamingTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f5f8ac4..2a45da21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). - **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. - **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel is a vertical list fit for the narrow third column — Stage, Baked base color, Baked normal map, Trim mask, Cage shells, the atlas's island count and texel usage — and the Maps view; its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too, the 3D shading row's modes apply to the stage mesh, and the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh (the hub pairs a tool's 3D items with its UV entries by mesh). Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background in the UV canvas and is skipped by the 3D layer, which would only dim the surface already showing it. - **Remesh & Bake never touches the source importers.** The remesh stage used to flip `isReadable` on for every imported model under the source root and back off afterwards — two reimports of every FBX per run, which in projects with heavy model postprocessors (Bakery's UV-overlap check) cost more than the capture itself. Read/Write-disabled meshes are read through `Mesh.AcquireReadOnlyMeshData` regardless, so the flip is gone; skinned sources bake through `BakeMesh` as before. diff --git a/CLAUDE.md b/CLAUDE.md index dd8ac33d..df01454f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -37,7 +37,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. ## Key Patterns -- LOD siblings: `baseName[_-\s]LOD{N}` regex, case-insensitive -- Mesh group key: `UvToolContext.ExtractGroupKey()` strips LOD/COL suffixes +- Names: `Editor/Mesh/MeshNaming.cs` is the only reader of the naming rules — LOD suffix `baseName[_-\s]LOD{N}` (case-insensitive, index < 8), collision suffixes (`_COL`, `_COL_Hull{N}`, `_Collider`, `_Collision`), pipeline suffixes, group key. Never write a LOD/COL regex in a tool +- Mesh group key: `MeshNaming.GroupKey()` (forwarded by `UvToolContext.ExtractGroupKey()`) strips LOD/COL suffixes - FBX export: clone prefab → replace meshes → add LOD/COL → `ModelExporter.ExportObjects` - Sidecar: generate → save to `_uv2data.asset` → export to FBX (non-destructive) diff --git a/Editor/Framework/UvToolContext.cs b/Editor/Framework/UvToolContext.cs index 7db51449..a92f58ba 100644 --- a/Editor/Framework/UvToolContext.cs +++ b/Editor/Framework/UvToolContext.cs @@ -259,15 +259,7 @@ public UvToolContext() /// /// Strip trailing LOD/COL suffixes to get a stable group key. /// - public static string ExtractGroupKey(string name) - { - if (string.IsNullOrEmpty(name)) return name; - return System.Text.RegularExpressions.Regex.Replace( - name, - @"(?:[_\-\s]+(?:LOD\d+|COL(?:_Hull\d+)?|Collider|Collision))+$", - "", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - } + public static string ExtractGroupKey(string name) => MeshNaming.GroupKey(name); /// /// Cleans up LOD slots: always removes null renderers from within a slot. diff --git a/Editor/LodPipelineOps.cs b/Editor/LodPipelineOps.cs index 92d3e905..47bf8789 100644 --- a/Editor/LodPipelineOps.cs +++ b/Editor/LodPipelineOps.cs @@ -11,17 +11,6 @@ namespace SashaRX.UnityMeshLab { internal static class LodPipelineOps { - static readonly System.Text.RegularExpressions.Regex LodSuffixRegex = - new System.Text.RegularExpressions.Regex( - @"(_wc|_repack|_uvTransfer|_optimized|_LOD\d+)+$", - System.Text.RegularExpressions.RegexOptions.Compiled); - - static readonly System.Text.RegularExpressions.Regex TrailingLodRegex = - new System.Text.RegularExpressions.Regex( - @"[_\-\s]+LOD\d+$", - System.Text.RegularExpressions.RegexOptions.Compiled | - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - internal struct Options { public int count; @@ -125,7 +114,7 @@ internal static Result Generate(UvToolContext ctx, int startLod, Options opts) UvtLog.Warn($"[LodPipelineOps] LOD{lodLevel}: target {ratio:P0} but got {actualRatio:P0} — increase Target Error"); string baseName = entry.fbxMesh != null ? entry.fbxMesh.name : srcMesh.name; - baseName = LodSuffixRegex.Replace(baseName, ""); + baseName = MeshNaming.StripPipelineSuffixes(baseName); string meshName = baseName + "_LOD" + lodLevel; r.simplifiedMesh.name = meshName; @@ -210,7 +199,7 @@ internal static Result Generate(UvToolContext ctx, int startLod, Options opts) foreach (var (entry, srcMesh) in sourceMeshes) { if (entry.renderer == null) continue; - if (!TrailingLodRegex.IsMatch(entry.renderer.name)) + if (!MeshNaming.HasLodSuffix(entry.renderer.name)) { Undo.RecordObject(entry.renderer.gameObject, "Rename LOD0"); string newName = entry.renderer.gameObject.name + "_LOD0"; diff --git a/Editor/Mesh.meta b/Editor/Mesh.meta new file mode 100644 index 00000000..f2cfcec2 --- /dev/null +++ b/Editor/Mesh.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d896666321d48ff8e50079ce85a23e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Mesh/MeshNaming.cs b/Editor/Mesh/MeshNaming.cs new file mode 100644 index 00000000..5f4ddb51 --- /dev/null +++ b/Editor/Mesh/MeshNaming.cs @@ -0,0 +1,94 @@ +using System; +using System.Text.RegularExpressions; + +namespace SashaRX.UnityMeshLab +{ + /// + /// The one place that reads and writes the package's naming conventions: the + /// Name_LOD{N} LOD suffix (separator _, - or whitespace, case-insensitive), + /// the collision suffixes (_COL, _COL_Hull{N}, _COL_*, _Collider, + /// _Collision), the pipeline suffixes the transfer tools append, and the group + /// key that pairs LOD and collision nodes of one asset. Every tool and library asks + /// here; none keeps a regex of its own. + /// + internal static class MeshNaming + { + /// Highest number of LOD levels a Unity LODGroup supports; name-derived indices at or above this are rejected, not clamped. + public const int MaxLodLevels = 8; + + const RegexOptions Ci = RegexOptions.IgnoreCase | RegexOptions.Compiled; + static readonly Regex LodSuffix = new Regex(@"^(.*?)([_\-\s]+LOD(\d+))$", Ci); + static readonly Regex CollisionSuffix = new Regex(@"[_\-\s]+(?:COL(?:_\w+)?|Collider|Collision)$", Ci); + static readonly Regex LodOrCollisionSuffix = new Regex(@"[_\-\s]+(LOD\d+|COL\w*|Collider|Collision)$", Ci); + static readonly Regex GroupSuffixes = new Regex(@"(?:[_\-\s]+(?:LOD\d+|COL(?:_Hull\d+)?|Collider|Collision))+$", Ci); + static readonly Regex PipelineSuffixes = new Regex(@"(_wc|_repack|_uvTransfer|_optimized|_LOD\d+)+$", RegexOptions.Compiled); + + /// True when the name ends with a LOD suffix of any index (valid or not). + public static bool HasLodSuffix(string name) => !string.IsNullOrEmpty(name) && LodSuffix.IsMatch(name); + + /// + /// Splits Base_LOD3 into "Base" and 3. False without a suffix, with an index + /// that does not parse or overflows, or with an index outside the LODGroup range. + /// + public static bool TryParseLod(string name, out string baseName, out int lod) + { + baseName = name; lod = -1; + if (string.IsNullOrEmpty(name)) return false; + var m = LodSuffix.Match(name); + if (!m.Success || !int.TryParse(m.Groups[3].Value, out lod) || lod < 0 || lod >= MaxLodLevels) { lod = -1; return false; } + baseName = m.Groups[1].Value; + return true; + } + + /// The LOD index of the name, or -1. + public static int LodIndex(string name) => TryParseLod(name, out _, out int lod) ? lod : -1; + + /// The name without its LOD suffix (any index), or the name itself. + public static string StripLod(string name) => SplitLodSuffix(name, out _); + + /// + /// The name without its LOD suffix, with the suffix text exactly as written + /// ("-LOD1", " LOD2", "_lod0") in so a rename can + /// put it back unchanged; suffix is "" when there is none. + /// + public static string SplitLodSuffix(string name, out string suffix) + { + suffix = ""; + if (string.IsNullOrEmpty(name)) return name; + var m = LodSuffix.Match(name); + if (!m.Success) return name; + suffix = m.Groups[2].Value; + return m.Groups[1].Value; + } + + /// The canonical LOD name: base_LOD{lod}. + public static string LodName(string baseName, int lod) => baseName + "_LOD" + lod; + + /// + /// Collision node or mesh: ends with _COL, _COL_Hull{N} or another + /// _COL_* form, _Collider or _Collision (case-insensitive). A + /// word that merely starts with COL (_COLOR) is not one. + /// + public static bool IsCollision(string name) => !string.IsNullOrEmpty(name) && CollisionSuffix.IsMatch(name); + + /// The name without its collision suffix, or the name itself. + public static string StripCollision(string name) + => string.IsNullOrEmpty(name) ? name : CollisionSuffix.Replace(name, ""); + + /// True when a clean base name still carries a LOD or collision suffix. + public static bool HasLodOrCollisionSuffix(string name) => !string.IsNullOrEmpty(name) && LodOrCollisionSuffix.IsMatch(name); + + /// + /// The stable key that pairs the LOD levels and collision nodes of one asset: + /// every trailing LOD / COL / COL_Hull / Collider / Collision suffix removed. + /// + public static string GroupKey(string name) => string.IsNullOrEmpty(name) ? name : GroupSuffixes.Replace(name, ""); + + /// + /// The mesh name without the suffixes the transfer pipeline appends + /// (_wc, _repack, _uvTransfer, _optimized, _LOD{N}, in any + /// order), the base a generated LOD is named from. + /// + public static string StripPipelineSuffixes(string name) => string.IsNullOrEmpty(name) ? name : PipelineSuffixes.Replace(name, ""); + } +} diff --git a/Editor/Mesh/MeshNaming.cs.meta b/Editor/Mesh/MeshNaming.cs.meta new file mode 100644 index 00000000..cf56d09e --- /dev/null +++ b/Editor/Mesh/MeshNaming.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 717c2875ac96480c922eab2bb10095fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/MeshHygieneUtility.cs b/Editor/MeshHygieneUtility.cs index d87e3c66..83d3fa9f 100644 --- a/Editor/MeshHygieneUtility.cs +++ b/Editor/MeshHygieneUtility.cs @@ -38,18 +38,6 @@ internal static class MeshHygieneUtility // The collision convention is the _COL token: Name_COL, Name_COL_Hull2, and the // suffixed variants assets carry (Name_COL_M, Name_COL_S…). The token rule keeps // ordinary words (_COLOR, _COLLECTION) out of the match. - static readonly System.Text.RegularExpressions.Regex collisionSuffixRegex = - new System.Text.RegularExpressions.Regex( - @"_COL(?:_\w+)?$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase | - System.Text.RegularExpressions.RegexOptions.Compiled); - - static readonly System.Text.RegularExpressions.Regex lodOrColSuffixRegex = - new System.Text.RegularExpressions.Regex( - @"[_\-\s]+(LOD\d+|COL\w*|Collider|Collision)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase | - System.Text.RegularExpressions.RegexOptions.Compiled); - static readonly System.Text.RegularExpressions.Regex invalidCharsRegex = new System.Text.RegularExpressions.Regex( @"[^A-Za-z0-9_]", @@ -60,37 +48,16 @@ internal static class MeshHygieneUtility @"_+", System.Text.RegularExpressions.RegexOptions.Compiled); - static readonly System.Text.RegularExpressions.Regex lodIndexSuffixRegex = - new System.Text.RegularExpressions.Regex( - @"_LOD(\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase | - System.Text.RegularExpressions.RegexOptions.Compiled); - // ── LOD naming ── /// /// Highest number of LOD levels a Unity LODGroup supports. Name-derived /// indices at or above this are rejected rather than silently clamped. /// - internal const int MaxLodLevels = 8; + internal const int MaxLodLevels = MeshNaming.MaxLodLevels; - /// - /// Parses the trailing _LOD{N} suffix of a node name. - /// Returns false when the suffix is missing, when the digits overflow - /// , or when the index is outside the LODGroup range - /// (also guards int.Parse against arbitrarily long digit runs). - /// - internal static bool TryParseLodIndex(string name, out int lodIndex) - { - lodIndex = 0; - if (string.IsNullOrEmpty(name)) return false; - - var match = lodIndexSuffixRegex.Match(name); - - return match.Success - && int.TryParse(match.Groups[1].Value, out lodIndex) - && lodIndex < MaxLodLevels; - } + /// Parses the trailing _LOD{N} suffix (see ). + internal static bool TryParseLodIndex(string name, out int lodIndex) => MeshNaming.TryParseLod(name, out _, out lodIndex); // ── Name helpers ── @@ -98,24 +65,10 @@ internal static bool TryParseLodIndex(string name, out int lodIndex) /// True for strict collision node naming: ends with _COL, _COL_Hull{N}, /// or _Collider (case-insensitive). Used for pipeline hierarchy normalization. /// - public static bool IsCollisionNodeName(string nodeName) - { - if (string.IsNullOrEmpty(nodeName)) return false; - return collisionSuffixRegex.IsMatch(nodeName) || - nodeName.EndsWith("_Col", StringComparison.OrdinalIgnoreCase) || - nodeName.EndsWith("_Collider", StringComparison.OrdinalIgnoreCase) || - nodeName.EndsWith("_Collision", StringComparison.OrdinalIgnoreCase); - } + public static bool IsCollisionNodeName(string nodeName) => MeshNaming.IsCollision(nodeName); - /// - /// True if the name has a trailing LOD/COL/Collider/Collision suffix that a - /// clean base name should not contain. - /// - public static bool HasLodOrColSuffix(string name) - { - if (string.IsNullOrEmpty(name)) return false; - return lodOrColSuffixRegex.IsMatch(name); - } + /// True if the name has a trailing LOD/COL/Collider/Collision suffix (see ). + public static bool HasLodOrColSuffix(string name) => MeshNaming.HasLodOrCollisionSuffix(name); /// /// True if the name contains any characters outside the FBX-safe ASCII diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 361c449b..6582c33f 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -578,7 +578,7 @@ internal static List CollectRenderers(GameObject root, bool lod0Only) else if (renderer is MeshRenderer && renderer.TryGetComponent(out var filter)) mesh = filter.sharedMesh; else continue; if (!mesh) continue; - if (MeshHygieneUtility.IsCollisionNodeName(renderer.name) || MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; + if (MeshNaming.IsCollision(renderer.name) || MeshNaming.IsCollision(mesh.name)) continue; if (lod0Only && (IsHigherLodName(renderer.name) || IsHigherLodName(mesh.name))) continue; result.Add(renderer); } @@ -612,24 +612,13 @@ internal static List CollectSceneShadowCasters() else if (renderer is MeshRenderer && renderer.TryGetComponent(out var filter)) mesh = filter.sharedMesh; else continue; if (!mesh) continue; - if (MeshHygieneUtility.IsCollisionNodeName(renderer.name) || MeshHygieneUtility.IsCollisionNodeName(mesh.name)) continue; + if (MeshNaming.IsCollision(renderer.name) || MeshNaming.IsCollision(mesh.name)) continue; result.Add(renderer); } return result; } - internal static bool IsHigherLodName(string name) - { - if (string.IsNullOrEmpty(name)) return false; - int at = name.LastIndexOf("_LOD", StringComparison.OrdinalIgnoreCase); - if (at < 0 || at + 4 >= name.Length) return false; - int level = 0; - for (int i = at + 4; i < name.Length; ++i) { - if (name[i] < '0' || name[i] > '9') return false; - level = level * 10 + (name[i] - '0'); - } - return level > 0; - } + internal static bool IsHigherLodName(string name) => MeshNaming.LodIndex(name) > 0; sealed class Reader : IDisposable { diff --git a/Editor/Tools/CleanupTool.cs b/Editor/Tools/CleanupTool.cs index fa7696c7..b2a6ea43 100644 --- a/Editor/Tools/CleanupTool.cs +++ b/Editor/Tools/CleanupTool.cs @@ -1209,9 +1209,7 @@ void ScanScene() if (child.GetComponent() == null) continue; // Check if name has LOD suffix - bool hasLodSuffix = System.Text.RegularExpressions.Regex.IsMatch( - child.name, @"_LOD\d+$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); + bool hasLodSuffix = MeshNaming.HasLodSuffix(child.name); // If prefab available, check if this child doesn't exist in prefab bool orphanedFromPrefab = prefabChildNames != null && !prefabChildNames.Contains(child.name); @@ -1287,9 +1285,7 @@ void ScanScene() foreach (var r in currentLods[0].renderers) { if (r == null) continue; - bool hasLodSuffix = System.Text.RegularExpressions.Regex.IsMatch( - r.name, @"[_\-\s]+LOD\d+$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); + bool hasLodSuffix = MeshNaming.HasLodSuffix(r.name); if (!hasLodSuffix) { sceneIssues.Add(new SceneIssue @@ -2096,15 +2092,7 @@ void FixMeshSplitByMaterial() // submesh child reuses these to build `{srcName}_{matName}{lodSuffix}`, // keeping `_LOD{N}` at the END for ExtractGroupKey compatibility. string srcName = e.renderer.name; - string lodSuffix = ""; - var lodMatch = System.Text.RegularExpressions.Regex.Match( - srcName, @"([_\-\s]+LOD\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (lodMatch.Success) - { - lodSuffix = lodMatch.Value; - srcName = srcName.Substring(0, srcName.Length - lodSuffix.Length); - } + srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); // Warn if material count doesn't line up with submeshes — slots beyond // the shorter of the two would be silently unassigned otherwise. @@ -2407,11 +2395,7 @@ void FixMeshMerge() // Build merged mesh name — always include LOD suffix from group string mergeSrcName = firstEntry.renderer.name; // Strip existing LOD suffix if present - var mergeLodMatch = System.Text.RegularExpressions.Regex.Match( - mergeSrcName, @"([_\-\s]+LOD\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (mergeLodMatch.Success) - mergeSrcName = mergeSrcName.Substring(0, mergeSrcName.Length - mergeLodMatch.Value.Length); + mergeSrcName = MeshNaming.StripLod(mergeSrcName); string mergedName = $"{mergeSrcName}_LOD{group.lodIndex}"; // Build merged mesh @@ -2564,15 +2548,7 @@ void DrawSplitMergeSection() { // Compute output names (same logic as FixMeshSplitByMaterial) string srcName = sc.entry.renderer.name; - string lodSuffix = ""; - var lodMatch = System.Text.RegularExpressions.Regex.Match( - srcName, @"([_\-\s]+LOD\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (lodMatch.Success) - { - lodSuffix = lodMatch.Value; - srcName = srcName.Substring(0, srcName.Length - lodSuffix.Length); - } + srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); EditorGUILayout.LabelField(" Remove:", EditorStyles.miniLabel); EditorGUILayout.LabelField($" {sc.entry.renderer.name}", EditorStyles.miniLabel); diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index 3be2ccba..bfeb8f9c 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -5330,18 +5330,12 @@ static Dictionary NormalizeExportHierarchy( if (!hasMesh) continue; - var match = System.Text.RegularExpressions.Regex.Match( - child.name, - @"^(.+)_LOD(\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (!match.Success) + // Any LOD index the name carries, even one the LODGroup cannot hold: this + // pass only groups and orders children, MeshNaming decides the rule. + string groupPrefix = MeshNaming.SplitLodSuffix(child.name, out string lodSuffix); + if (lodSuffix.Length == 0 || !int.TryParse(lodSuffix.Substring(lodSuffix.ToUpperInvariant().LastIndexOf("LOD") + 3), out int parsedIndex)) continue; - int parsedIndex; - if (!int.TryParse(match.Groups[2].Value, out parsedIndex)) - continue; - - string groupPrefix = match.Groups[1].Value; if (!groupedLodChildren.TryGetValue(groupPrefix, out var list)) { list = new List<(Transform, int, int)>(); @@ -5665,7 +5659,7 @@ void GenerateLods() if (!r.ok) { UvtLog.Error($"[GenerateLOD] Failed on {srcMesh.name}: {r.error}"); continue; } string baseName = entry.fbxMesh != null ? entry.fbxMesh.name : srcMesh.name; - baseName = System.Text.RegularExpressions.Regex.Replace(baseName, @"(_wc|_repack|_uvTransfer|_optimized|_LOD\d+)+$", ""); + baseName = MeshNaming.StripPipelineSuffixes(baseName); string meshName = baseName + "_LOD" + (ctx.SourceLodIndex + lodIdx + 1); r.simplifiedMesh.name = meshName; string assetPath = AssetDatabase.GenerateUniqueAssetPath(savePath + "/" + meshName + ".asset"); diff --git a/Editor/Tools/LodGenerationTool.cs b/Editor/Tools/LodGenerationTool.cs index 68369ce6..e16d9a8a 100644 --- a/Editor/Tools/LodGenerationTool.cs +++ b/Editor/Tools/LodGenerationTool.cs @@ -6,7 +6,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text.RegularExpressions; using UnityEngine; using UnityEditor; @@ -483,14 +482,6 @@ public void OnSceneGUI(SceneView sv) { } // ── Auto-detect LOD siblings ── // LODGroup supports at most eight levels; reject name-derived indices outside that range. - const int MaxSupportedLodIndex = 7; - - static bool TryGetSupportedLodIndex(Match match, out int lodIndex) - { - return int.TryParse(match.Groups[2].Value, out lodIndex) - && lodIndex <= MaxSupportedLodIndex; - } - /// /// Given a GameObject whose name ends with a LOD suffix (e.g. Gazebo_LOD0), /// find all sibling GameObjects under the same parent that share the same @@ -501,16 +492,13 @@ static bool TryGetSupportedLodIndex(Match match, out int lodIndex) { if (go == null) return null; - // Match trailing LOD suffix: _LOD0, -LOD1, LOD2, etc. - var m = Regex.Match(go.name, @"^(.+?)([_\-\s]*)LOD(\d+)$", RegexOptions.IgnoreCase); - if (m.Success) + // Trailing LOD suffix (_LOD0, -LOD1, " LOD2"): the one naming rule, MeshNaming. + if (MeshNaming.HasLodSuffix(go.name)) { - if (!int.TryParse(m.Groups[3].Value, out int selectedLodIndex) - || selectedLodIndex > MaxSupportedLodIndex) - return null; + if (!MeshNaming.TryParseLod(go.name, out string baseName, out _)) + return null; // an index the LODGroup cannot hold // Selected object has LOD suffix — search siblings - string baseName = m.Groups[1].Value; var parent = go.transform.parent; if (parent == null) return null; @@ -518,10 +506,8 @@ static bool TryGetSupportedLodIndex(Match match, out int lodIndex) for (int i = 0; i < parent.childCount; i++) { var child = parent.GetChild(i).gameObject; - var cm = Regex.Match(child.name, @"^(.+?)[_\-\s]*LOD(\d+)$", RegexOptions.IgnoreCase); - if (cm.Success - && string.Equals(cm.Groups[1].Value, baseName, System.StringComparison.OrdinalIgnoreCase) - && TryGetSupportedLodIndex(cm, out int lodIndex)) + if (MeshNaming.TryParseLod(child.name, out string childBase, out int lodIndex) + && string.Equals(childBase, baseName, System.StringComparison.OrdinalIgnoreCase)) results.Add((child, lodIndex)); } @@ -535,8 +521,7 @@ static bool TryGetSupportedLodIndex(Match match, out int lodIndex) for (int i = 0; i < go.transform.childCount; i++) { var child = go.transform.GetChild(i).gameObject; - var cm = Regex.Match(child.name, @"^(.+?)[_\-\s]*LOD(\d+)$", RegexOptions.IgnoreCase); - if (cm.Success && TryGetSupportedLodIndex(cm, out int lodIndex)) + if (MeshNaming.TryParseLod(child.name, out _, out int lodIndex)) childResults.Add((child, lodIndex)); } diff --git a/Editor/Tools/PrefabBuilderTool.cs b/Editor/Tools/PrefabBuilderTool.cs index a40271d5..bb189a3c 100644 --- a/Editor/Tools/PrefabBuilderTool.cs +++ b/Editor/Tools/PrefabBuilderTool.cs @@ -385,13 +385,7 @@ void DrawHierarchySection() } } - static int GetLodIndexFromName(string name) - { - var match = System.Text.RegularExpressions.Regex.Match( - name, @"_LOD(\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - return match.Success && int.TryParse(match.Groups[1].Value, out int lodIdx) ? lodIdx : -1; - } + static int GetLodIndexFromName(string name) => MeshNaming.LodIndex(name); void DrawEditableName(GameObject go, string suffix, int indent) { @@ -1639,15 +1633,7 @@ void DrawSplitMergeSection() if (sc.include) { string srcName = sc.entry.renderer.name; - string lodSuffix = ""; - var lodMatch = System.Text.RegularExpressions.Regex.Match( - srcName, @"([_\-\s]+LOD\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (lodMatch.Success) - { - lodSuffix = lodMatch.Value; - srcName = srcName.Substring(0, srcName.Length - lodSuffix.Length); - } + srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); EditorGUILayout.LabelField(" Create:", EditorStyles.miniLabel); for (int s = 0; s < mesh.subMeshCount && s < mats.Length; s++) @@ -1800,15 +1786,7 @@ void FixSplitByMaterial() var mats = sc.entry.renderer.sharedMaterials; string srcName = sc.entry.renderer.name; - string lodSuffix = ""; - var lodMatch = System.Text.RegularExpressions.Regex.Match( - srcName, @"([_\-\s]+LOD\d+)$", - System.Text.RegularExpressions.RegexOptions.IgnoreCase); - if (lodMatch.Success) - { - lodSuffix = lodMatch.Value; - srcName = srcName.Substring(0, srcName.Length - lodSuffix.Length); - } + srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); var parent = sc.entry.renderer.transform.parent; diff --git a/Editor/Tools/VertexColorBakingTool.cs b/Editor/Tools/VertexColorBakingTool.cs index d9235833..c73e23a4 100644 --- a/Editor/Tools/VertexColorBakingTool.cs +++ b/Editor/Tools/VertexColorBakingTool.cs @@ -1546,25 +1546,9 @@ static void CollectCollisionMeshCandidates( } } - // Collider mesh-name convention: "_COL" OR "_COL_Hull{digits}" - // (convex hull decomposition suffix). Both forms map to the same - // base name via StripColSuffix. - static bool EndsWithColSuffix(string name) - => StripColSuffix(name) != name; - - static string StripColSuffix(string name) - { - if (string.IsNullOrEmpty(name)) return name; - if (name.EndsWith("_COL", StringComparison.OrdinalIgnoreCase)) - return name.Substring(0, name.Length - 4); - int hullIdx = name.LastIndexOf("_COL_Hull", StringComparison.OrdinalIgnoreCase); - if (hullIdx < 0) return name; - int digitStart = hullIdx + 9; // "_COL_Hull".Length - if (digitStart >= name.Length) return name; - for (int i = digitStart; i < name.Length; i++) - if (!char.IsDigit(name[i])) return name; - return name.Substring(0, hullIdx); - } + // Collider mesh-name convention lives in MeshNaming (_COL, _COL_Hull{N}, _COL_*, _Collider, _Collision). + static bool EndsWithColSuffix(string name) => MeshNaming.IsCollision(name); + static string StripColSuffix(string name) => MeshNaming.StripCollision(name); void CollectSidecarCollisionOccluders( LodBakeBatch batch, diff --git a/Tests/Editor/MeshNamingTests.cs b/Tests/Editor/MeshNamingTests.cs new file mode 100644 index 00000000..1accc89e --- /dev/null +++ b/Tests/Editor/MeshNamingTests.cs @@ -0,0 +1,92 @@ +using NUnit.Framework; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class MeshNamingTests + { + [TestCase("Wall_LOD0", "Wall", 0)] + [TestCase("Wall-LOD1", "Wall", 1)] + [TestCase("Wall LOD2", "Wall", 2)] + [TestCase("Wall_lod7", "Wall", 7)] + [TestCase("Gate_01_LOD3", "Gate_01", 3)] + public void TryParseLod_AcceptsTheRepoSuffixForms(string name, string expectedBase, int expectedLod) + { + Assert.IsTrue(MeshNaming.TryParseLod(name, out string baseName, out int lod)); + Assert.AreEqual(expectedBase, baseName); Assert.AreEqual(expectedLod, lod); + Assert.AreEqual(expectedLod, MeshNaming.LodIndex(name)); + Assert.IsTrue(MeshNaming.HasLodSuffix(name)); + } + + [TestCase("Wall_LOD8")] + [TestCase("Wall_LOD100000000")] + [TestCase("Wall_LOD999999999999999999999")] + public void TryParseLod_RejectsIndicesTheLodGroupCannotHold(string name) + { + Assert.IsFalse(MeshNaming.TryParseLod(name, out _, out int lod)); Assert.AreEqual(-1, lod); + Assert.IsTrue(MeshNaming.HasLodSuffix(name), "the suffix is still a LOD suffix"); + } + + [TestCase("Wall")] + [TestCase("WallLOD1")] + [TestCase("LOD1")] + [TestCase("Wall_LOD")] + [TestCase("")] + [TestCase(null)] + public void TryParseLod_RejectsNamesWithoutASeparatedSuffix(string name) + { + Assert.IsFalse(MeshNaming.TryParseLod(name, out _, out _)); + Assert.IsFalse(MeshNaming.HasLodSuffix(name)); + Assert.AreEqual(name, MeshNaming.StripLod(name)); + } + + [Test] + public void SplitLodSuffix_KeepsTheSuffixTextVerbatim() + { + Assert.AreEqual("Wall", MeshNaming.SplitLodSuffix("Wall-LOD1", out string suffix)); Assert.AreEqual("-LOD1", suffix); + Assert.AreEqual("Wall", MeshNaming.SplitLodSuffix("Wall_lod0", out suffix)); Assert.AreEqual("_lod0", suffix); + Assert.AreEqual("Wall", MeshNaming.SplitLodSuffix("Wall", out suffix)); Assert.AreEqual("", suffix); + Assert.AreEqual("Wall_LOD2", MeshNaming.LodName("Wall", 2)); + } + + [TestCase("Wall_COL", true)] + [TestCase("Wall_col", true)] + [TestCase("Wall_COL_Hull3", true)] + [TestCase("Wall_COL_Box", true)] + [TestCase("Wall_Collider", true)] + [TestCase("Wall_Collision", true)] + [TestCase("Wall_COLOR", false)] + [TestCase("Wall_COLLECTION", false)] + [TestCase("Collider", false)] + [TestCase("Wall", false)] + public void IsCollision_FollowsTheSuffixRule(string name, bool expected) + { + Assert.AreEqual(expected, MeshNaming.IsCollision(name)); + Assert.AreEqual(expected ? "Wall" : name, MeshNaming.StripCollision(name)); + } + + [TestCase("Wall_LOD0", true)] + [TestCase("Wall_COL", true)] + [TestCase("Wall_Collider", true)] + [TestCase("Wall", false)] + [TestCase("Wall_COLOR", true)] // the hygiene check is deliberately broad: COL\w* + public void HasLodOrCollisionSuffix_MatchesTheHygieneRule(string name, bool expected) + => Assert.AreEqual(expected, MeshNaming.HasLodOrCollisionSuffix(name)); + + [TestCase("Wall_LOD2", "Wall")] + [TestCase("Wall_COL", "Wall")] + [TestCase("Wall_COL_Hull2", "Wall")] + [TestCase("Wall_LOD1_COL", "Wall")] + [TestCase("Wall-Collider", "Wall")] + [TestCase("Wall_COL_Box", "Wall_COL_Box")] // only Hull{N} is a group suffix; other COL_* forms keep the key + [TestCase("Wall", "Wall")] + public void GroupKey_PairsLodAndCollisionNodesOfOneAsset(string name, string expected) + => Assert.AreEqual(expected, MeshNaming.GroupKey(name)); + + [TestCase("Chair_wc_repack_LOD0", "Chair")] + [TestCase("Chair_LOD1_optimized", "Chair")] + [TestCase("Chair_uvTransfer", "Chair")] + [TestCase("Chair", "Chair")] + public void StripPipelineSuffixes_RemovesEveryTransferSuffix(string name, string expected) + => Assert.AreEqual(expected, MeshNaming.StripPipelineSuffixes(name)); + } +} diff --git a/Tests/Editor/MeshNamingTests.cs.meta b/Tests/Editor/MeshNamingTests.cs.meta new file mode 100644 index 00000000..353a1b66 --- /dev/null +++ b/Tests/Editor/MeshNamingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea2de66737254887831ddee7d98a60b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 9c1b538987b1d8bdcb9984c93dd0e7f0410892b1 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 08:48:40 +0000 Subject: [PATCH 089/130] refactor(mesh): MeshSplitMerge, one split-by-material and merge for both tabs The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. Editor/Mesh/MeshSplitMerge.cs is the one implementation: Scan, SplitByMaterial (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), MergeSameMaterial (into the first renderer, which keeps its components and references and is renamed {base}_LOD{n}; every attribute carried over; the others leave the LODGroup), ExtractSubmesh (all eight UV channels at their stored width, bone weights included; MeshHygieneUtility.ExtractSubmesh forwards to it). Both tabs keep only their buttons and lists. An EditMode test round-trips a two-material quad through a LODGroup: split to two children, merge back to one. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Editor/Mesh/MeshSplitMerge.cs | 382 +++++++++++++++++ Editor/Mesh/MeshSplitMerge.cs.meta | 11 + Editor/MeshHygieneUtility.cs | 73 +--- Editor/Tools/CleanupTool.cs | 504 +---------------------- Editor/Tools/PrefabBuilderTool.cs | 244 +---------- Tests/Editor/MeshSplitMergeTests.cs | 80 ++++ Tests/Editor/MeshSplitMergeTests.cs.meta | 11 + 8 files changed, 512 insertions(+), 794 deletions(-) create mode 100644 Editor/Mesh/MeshSplitMerge.cs create mode 100644 Editor/Mesh/MeshSplitMerge.cs.meta create mode 100644 Tests/Editor/MeshSplitMergeTests.cs create mode 100644 Tests/Editor/MeshSplitMergeTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a45da21..08f0e3ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. - **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). - **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. - **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel is a vertical list fit for the narrow third column — Stage, Baked base color, Baked normal map, Trim mask, Cage shells, the atlas's island count and texel usage — and the Maps view; its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too, the 3D shading row's modes apply to the stage mesh, and the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh (the hub pairs a tool's 3D items with its UV entries by mesh). Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background in the UV canvas and is skipped by the 3D layer, which would only dim the surface already showing it. diff --git a/Editor/Mesh/MeshSplitMerge.cs b/Editor/Mesh/MeshSplitMerge.cs new file mode 100644 index 00000000..035ada9e --- /dev/null +++ b/Editor/Mesh/MeshSplitMerge.cs @@ -0,0 +1,382 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Split-by-material and merge-same-material over a LODGroup's renderers: the one + /// implementation behind the Cleanup and Prefab Builder tabs (each used to carry its + /// own, and they had drifted — one dropped tangents, colours and UV2 on merge, the + /// other lost static flags on split). Scan finds the candidates; the two operations + /// take the candidates the user kept, do the geometry with every vertex attribute + /// (positions, normals, tangents, colours, bone weights, all eight UV channels at + /// their stored width), keep the renderer settings and static flags, record Undo for + /// everything they touch, rewrite the LODGroup in place and record prefab-instance + /// modifications. Names follow . + /// + internal static class MeshSplitMerge + { + /// A renderer whose mesh has several submeshes: one child per material after the split. + public sealed class SplitCandidate + { + public MeshEntry entry; + public bool include = true; + } + + /// Single-material renderers of one LOD level sharing a material: one mesh after the merge. + public sealed class MergeGroup + { + public int lodIndex; + public Material material; + public List entries = new List(); + public bool include = true; + } + + public sealed class Report + { + public List split = new List(); + public List merge = new List(); + } + + /// Split candidates (multi-submesh meshes) and merge groups (single-material meshes per LOD and material) of the context. + public static Report Scan(UvToolContext ctx) + { + var report = new Report(); + var mergeMap = new Dictionary<(int lod, int material), MergeGroup>(); + for (int li = 0; li < ctx.LodCount; li++) + foreach (var e in ctx.ForLod(li)) + { + var mesh = e.originalMesh ?? e.fbxMesh; + if (mesh == null || e.renderer == null) continue; + if (mesh.subMeshCount > 1) report.split.Add(new SplitCandidate { entry = e }); + var mats = e.renderer.sharedMaterials; + if (mesh.subMeshCount == 1 && mats.Length == 1 && mats[0] != null) + { + var key = (li, mats[0].GetInstanceID()); + if (!mergeMap.TryGetValue(key, out var group)) + mergeMap[key] = group = new MergeGroup { lodIndex = li, material = mats[0] }; + group.entries.Add(e); + } + } + foreach (var group in mergeMap.Values) + if (group.entries.Count > 1) report.merge.Add(group); + UvtLog.Info($"Split/Merge scan: {report.split.Count} split candidate(s), {report.merge.Count} merge group(s)."); + return report; + } + + /// + /// Replaces every included candidate by one child per submesh, named + /// {base}_{material}{lodSuffix} (the LOD suffix stays last so the group + /// key still pairs them), with the source renderer's settings and static flags, + /// slotted into the LODGroup where the source was. Returns how many were split. + /// + public static int SplitByMaterial(UvToolContext ctx, IEnumerable candidates, string undoLabel) + { + RestorePreviews(); + using var _undo = MeshHygieneUtility.BeginUndoGroup(undoLabel); + int split = 0; + foreach (var sc in candidates) + { + if (sc == null || !sc.include) continue; + var e = sc.entry; + var srcMesh = e?.originalMesh ?? e?.fbxMesh; + if (srcMesh == null || e.renderer == null || e.meshFilter == null) continue; + if (!srcMesh.isReadable) { UvtLog.Warn($"Split '{e.renderer.name}': mesh is not readable; enable Read/Write on its importer."); continue; } + int subCount = srcMesh.subMeshCount; + if (subCount <= 1) continue; + + var mats = e.renderer.sharedMaterials; + if (mats.Length != subCount) + UvtLog.Warn($"Split '{e.renderer.name}': material count ({mats.Length}) != submesh count ({subCount}) — " + + (mats.Length < subCount ? "some submeshes will have no material." : "extra material slots will be dropped.")); + string baseName = MeshNaming.SplitLodSuffix(e.renderer.name, out string lodSuffix); + var source = e.renderer.transform; + var staticFlags = GameObjectUtility.GetStaticEditorFlags(e.renderer.gameObject); + var created = new List(); + for (int s = 0; s < subCount; s++) + { + var tris = srcMesh.GetTriangles(s); + if (tris.Length == 0) continue; + string matName = s < mats.Length && mats[s] != null ? mats[s].name : $"mat{s}"; + if (s < mats.Length && mats[s] == null) + UvtLog.Warn($"Split '{e.renderer.name}': material slot [{s}] is null — child '{baseName}_mat{s}{lodSuffix}' will have no material."); + string childName = $"{baseName}_{matName}{lodSuffix}"; + var mesh = ExtractSubmesh(srcMesh, tris); + mesh.name = childName; + + var go = new GameObject(childName); + Undo.RegisterCreatedObjectUndo(go, undoLabel); + go.transform.SetParent(source.parent, false); + go.transform.localPosition = source.localPosition; + go.transform.localRotation = source.localRotation; + go.transform.localScale = source.localScale; + GameObjectUtility.SetStaticEditorFlags(go, staticFlags); + go.AddComponent().sharedMesh = mesh; + var mr = go.AddComponent(); + mr.sharedMaterial = s < mats.Length ? mats[s] : null; + CopyRendererSettings(e.renderer, mr); + created.Add(mr); + } + ReplaceInLodGroup(ctx.LodGroup, e.renderer, created, undoLabel); + UvtLog.Info($"Split {e.renderer.name}: {subCount} submeshes → {created.Count} objects"); + Undo.DestroyObjectImmediate(e.renderer.gameObject); + split++; + } + UvtLog.Info($"Split {split} multi-material mesh(es)."); + if (split > 0 && ctx.LodGroup != null) ctx.Refresh(ctx.LodGroup); + return split; + } + + /// + /// Merges every included group into its first renderer: the other renderers' + /// geometry is brought into the first one's local space with every attribute, + /// the first object keeps its components, references and static flags and is + /// renamed {base}_LOD{n}, the others leave the LODGroup and are destroyed. + /// Returns how many groups were merged. + /// + public static int MergeSameMaterial(UvToolContext ctx, IEnumerable groups, string undoLabel) + { + RestorePreviews(); + using var _undo = MeshHygieneUtility.BeginUndoGroup(undoLabel); + int merged = 0; + foreach (var group in groups) + { + if (group == null || !group.include || group.entries.Count < 2) continue; + var first = group.entries[0]; + if (first.renderer == null || first.meshFilter == null) continue; + var parts = new List<(Mesh mesh, Matrix4x4 toFirst)>(); + var destroy = new List(); + Matrix4x4 worldToFirst = first.renderer.transform.worldToLocalMatrix; + foreach (var e in group.entries) + { + var mesh = e.originalMesh ?? e.fbxMesh; + if (mesh == null || e.renderer == null) continue; + if (!mesh.isReadable) { UvtLog.Warn($"Merge: '{e.renderer.name}' is not readable and is skipped."); continue; } + parts.Add((mesh, worldToFirst * e.renderer.transform.localToWorldMatrix)); + if (e != first) destroy.Add(e.renderer.gameObject); + } + if (parts.Count < 2) continue; + + string name = MeshNaming.LodName(MeshNaming.StripLod(first.renderer.name), group.lodIndex); + var mergedMesh = Combine(parts, name); + Undo.RecordObject(first.meshFilter, undoLabel); + Undo.RecordObject(first.renderer, undoLabel); + Undo.RecordObject(first.renderer.gameObject, undoLabel); + first.meshFilter.sharedMesh = mergedMesh; + first.renderer.sharedMaterials = new[] { group.material }; + first.renderer.gameObject.name = name; + first.originalMesh = mergedMesh; + RemoveFromLodGroup(ctx.LodGroup, destroy, undoLabel); + foreach (var go in destroy) + { + if (go == null) continue; + UvtLog.Info($"Merged: {go.name}"); + Undo.DestroyObjectImmediate(go); + } + if (PrefabUtility.IsPartOfPrefabInstance(first.renderer)) + PrefabUtility.RecordPrefabInstancePropertyModifications(first.renderer); + merged++; + UvtLog.Info($"Created merged object: {name} ({mergedMesh.vertexCount} verts)"); + } + UvtLog.Info($"Merged {merged} group(s)."); + if (merged > 0 && ctx.LodGroup != null) + { + ctx.Refresh(ctx.LodGroup); + ctx.LodGroup.RecalculateBounds(); + var lods = ctx.LodGroup.GetLODs(); + for (int li = 0; li < lods.Length; li++) + if (lods[li].renderers == null || lods[li].renderers.Length == 0) + UvtLog.Warn($"[Merge] LOD{li} has no renderers after merge."); + } + return merged; + } + + /// + /// The triangles of as a mesh + /// of their own: vertices compacted, every attribute the source has copied + /// (normals, tangents, colours, bone weights, all eight UV channels at their + /// stored width), one submesh. Readable source required. + /// + public static Mesh ExtractSubmesh(Mesh source, int[] tris) + { + if (source == null || tris == null || tris.Length == 0) return null; + var remap = new Dictionary(); + var used = new List(); + foreach (int v in tris) if (!remap.ContainsKey(v)) { remap[v] = used.Count; used.Add(v); } + int n = used.Count; + var mesh = new Mesh { name = source.name, indexFormat = n > 65535 ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16 }; + var positions = source.vertices; + var pos = new Vector3[n]; + for (int i = 0; i < n; i++) pos[i] = positions[used[i]]; + mesh.SetVertices(pos); + var normals = source.normals; + if (normals != null && normals.Length == positions.Length) { var a = new Vector3[n]; for (int i = 0; i < n; i++) a[i] = normals[used[i]]; mesh.normals = a; } + var tangents = source.tangents; + if (tangents != null && tangents.Length == positions.Length) { var a = new Vector4[n]; for (int i = 0; i < n; i++) a[i] = tangents[used[i]]; mesh.tangents = a; } + var colors = source.colors; + if (colors != null && colors.Length == positions.Length) { var a = new Color[n]; for (int i = 0; i < n; i++) a[i] = colors[used[i]]; mesh.colors = a; } + var weights = source.boneWeights; + if (weights != null && weights.Length == positions.Length) { var a = new BoneWeight[n]; for (int i = 0; i < n; i++) a[i] = weights[used[i]]; mesh.boneWeights = a; } + var uv = new List(); + for (int ch = 0; ch < 8; ch++) + { + uv.Clear(); source.GetUVs(ch, uv); + if (uv.Count != positions.Length) continue; + int dim = source.HasVertexAttribute(UvAttribute(ch)) ? source.GetVertexAttributeDimension(UvAttribute(ch)) : 2; + var a = new List(n); + for (int i = 0; i < n; i++) a.Add(uv[used[i]]); + if (dim <= 2) mesh.SetUVs(ch, a.Select(v => (Vector2)v).ToList()); + else if (dim == 3) mesh.SetUVs(ch, a.Select(v => (Vector3)v).ToList()); + else mesh.SetUVs(ch, a); + } + var newTris = new int[tris.Length]; + for (int i = 0; i < tris.Length; i++) newTris[i] = remap[tris[i]]; + mesh.SetTriangles(newTris, 0); + mesh.RecalculateBounds(); + return mesh; + } + + // Every part's vertices and directions carried into the first part's space; + // attributes a part lacks are filled with neutral values so the channel survives. + static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) + { + bool hasNormals = false, hasTangents = false, hasColors = false; + var hasUv = new bool[8]; var uvDim = new int[8]; + int totalVerts = 0; + var probe = new List(); + foreach (var (mesh, _) in parts) + { + totalVerts += mesh.vertexCount; + hasNormals |= mesh.normals != null && mesh.normals.Length == mesh.vertexCount; + hasTangents |= mesh.tangents != null && mesh.tangents.Length == mesh.vertexCount; + hasColors |= mesh.colors != null && mesh.colors.Length == mesh.vertexCount; + for (int ch = 0; ch < 8; ch++) + { + probe.Clear(); mesh.GetUVs(ch, probe); + if (probe.Count != mesh.vertexCount) continue; + hasUv[ch] = true; + int dim = mesh.HasVertexAttribute(UvAttribute(ch)) ? mesh.GetVertexAttributeDimension(UvAttribute(ch)) : 2; + uvDim[ch] = Mathf.Max(uvDim[ch], dim); + } + } + var pos = new List(totalVerts); + var normals = hasNormals ? new List(totalVerts) : null; + var tangents = hasTangents ? new List(totalVerts) : null; + var colors = hasColors ? new List(totalVerts) : null; + var uvs = new List[8]; + for (int ch = 0; ch < 8; ch++) uvs[ch] = hasUv[ch] ? new List(totalVerts) : null; + var tris = new List(); + foreach (var (mesh, toFirst) in parts) + { + int offset = pos.Count, count = mesh.vertexCount; + var p = mesh.vertices; + for (int i = 0; i < count; i++) pos.Add(toFirst.MultiplyPoint3x4(p[i])); + if (normals != null) + { + var n = mesh.normals; + bool own = n != null && n.Length == count; + for (int i = 0; i < count; i++) normals.Add(own ? toFirst.MultiplyVector(n[i]).normalized : Vector3.up); + } + if (tangents != null) + { + var t = mesh.tangents; + bool own = t != null && t.Length == count; + for (int i = 0; i < count; i++) + { + if (!own) { tangents.Add(new Vector4(1, 0, 0, 1)); continue; } + var d = toFirst.MultiplyVector(new Vector3(t[i].x, t[i].y, t[i].z)).normalized; + tangents.Add(new Vector4(d.x, d.y, d.z, t[i].w)); + } + } + if (colors != null) + { + var c = mesh.colors; + bool own = c != null && c.Length == count; + for (int i = 0; i < count; i++) colors.Add(own ? c[i] : Color.white); + } + for (int ch = 0; ch < 8; ch++) + { + if (uvs[ch] == null) continue; + probe.Clear(); mesh.GetUVs(ch, probe); + bool own = probe.Count == count; + for (int i = 0; i < count; i++) uvs[ch].Add(own ? probe[i] : Vector4.zero); + } + var t3 = mesh.triangles; + for (int i = 0; i < t3.Length; i++) tris.Add(t3[i] + offset); + } + var merged = new Mesh { name = name, indexFormat = pos.Count > 65535 ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16 }; + merged.SetVertices(pos); + if (normals != null) merged.SetNormals(normals); + if (tangents != null) merged.SetTangents(tangents); + if (colors != null) merged.SetColors(colors); + for (int ch = 0; ch < 8; ch++) + { + if (uvs[ch] == null) continue; + if (uvDim[ch] <= 2) merged.SetUVs(ch, uvs[ch].Select(v => (Vector2)v).ToList()); + else if (uvDim[ch] == 3) merged.SetUVs(ch, uvs[ch].Select(v => (Vector3)v).ToList()); + else merged.SetUVs(ch, uvs[ch]); + } + merged.SetTriangles(tris, 0); + merged.RecalculateBounds(); + return merged; + } + + static UnityEngine.Rendering.VertexAttribute UvAttribute(int channel) => UnityEngine.Rendering.VertexAttribute.TexCoord0 + channel; + + static void CopyRendererSettings(Renderer from, Renderer to) + { + to.shadowCastingMode = from.shadowCastingMode; + to.receiveShadows = from.receiveShadows; + to.lightProbeUsage = from.lightProbeUsage; + to.reflectionProbeUsage = from.reflectionProbeUsage; + to.motionVectorGenerationMode = from.motionVectorGenerationMode; + to.probeAnchor = from.probeAnchor; + to.lightmapIndex = from.lightmapIndex; + to.realtimeLightmapIndex = from.realtimeLightmapIndex; + } + + // The source renderer's slot in every LOD level takes the created renderers. + static void ReplaceInLodGroup(LODGroup lodGroup, Renderer source, List created, string undoLabel) + { + if (lodGroup == null) return; + Undo.RecordObject(lodGroup, undoLabel); + var lods = lodGroup.GetLODs(); + for (int li = 0; li < lods.Length; li++) + { + if (lods[li].renderers == null) continue; + var renderers = new List(lods[li].renderers); + int at = renderers.IndexOf(source); + if (at < 0) continue; + renderers.RemoveAt(at); + renderers.InsertRange(at, created); + lods[li].renderers = renderers.ToArray(); + } + lodGroup.SetLODs(lods); + if (PrefabUtility.IsPartOfPrefabInstance(lodGroup)) PrefabUtility.RecordPrefabInstancePropertyModifications(lodGroup); + } + + static void RemoveFromLodGroup(LODGroup lodGroup, List gone, string undoLabel) + { + if (lodGroup == null) return; + Undo.RecordObject(lodGroup, undoLabel); + var lods = lodGroup.GetLODs(); + for (int li = 0; li < lods.Length; li++) + { + if (lods[li].renderers == null) continue; + lods[li].renderers = lods[li].renderers.Where(r => r != null && !gone.Contains(r.gameObject)).ToArray(); + } + lodGroup.SetLODs(lods); + if (PrefabUtility.IsPartOfPrefabInstance(lodGroup)) PrefabUtility.RecordPrefabInstancePropertyModifications(lodGroup); + } + + // A checker or shell-colour preview swaps the renderers' materials; read the + // real ones, and never let a preview material survive on a new child. + static void RestorePreviews() + { + if (CheckerTexturePreview.IsActive) CheckerTexturePreview.Restore(); + if (ShellColorModelPreview.IsActive) ShellColorModelPreview.Restore(); + } + } +} diff --git a/Editor/Mesh/MeshSplitMerge.cs.meta b/Editor/Mesh/MeshSplitMerge.cs.meta new file mode 100644 index 00000000..017d03f4 --- /dev/null +++ b/Editor/Mesh/MeshSplitMerge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec6675c2f2dc49cfae7238f88b13724e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/MeshHygieneUtility.cs b/Editor/MeshHygieneUtility.cs index 83d3fa9f..b4de77fd 100644 --- a/Editor/MeshHygieneUtility.cs +++ b/Editor/MeshHygieneUtility.cs @@ -147,80 +147,13 @@ public static int GetTriangleCount(Mesh mesh) return (int)(count / 3L); } + /// The triangles as a mesh of their own, every attribute copied (see ). + internal static Mesh ExtractSubmesh(Mesh source, int[] tris) => MeshSplitMerge.ExtractSubmesh(source, tris); + /// /// Extract a single submesh from a mesh, returning a new mesh with only /// the referenced vertices and a single submesh. Returns null on failure. /// - internal static Mesh ExtractSubmesh(Mesh source, int[] tris) - { - if (source == null || tris == null || tris.Length == 0) return null; - - // Find used vertices - var usedSet = new HashSet(); - foreach (int t in tris) usedSet.Add(t); - var usedList = new List(usedSet); - usedList.Sort(); - - var remap = new Dictionary(); - for (int i = 0; i < usedList.Count; i++) - remap[usedList[i]] = i; - - int newCount = usedList.Count; - - var srcVerts = source.vertices; - var srcNormals = source.normals; - var srcTangents = source.tangents; - var srcColors = source.colors32; - - var newVerts = new Vector3[newCount]; - for (int i = 0; i < newCount; i++) - newVerts[i] = srcVerts[usedList[i]]; - - var newMesh = new Mesh(); - newMesh.SetVertices(newVerts); - - if (srcNormals != null && srcNormals.Length == source.vertexCount) - { - var n = new Vector3[newCount]; - for (int i = 0; i < newCount; i++) n[i] = srcNormals[usedList[i]]; - newMesh.SetNormals(n); - } - - if (srcTangents != null && srcTangents.Length == source.vertexCount) - { - var t = new Vector4[newCount]; - for (int i = 0; i < newCount; i++) t[i] = srcTangents[usedList[i]]; - newMesh.tangents = t; - } - - if (srcColors != null && srcColors.Length == source.vertexCount) - { - var c = new Color32[newCount]; - for (int i = 0; i < newCount; i++) c[i] = srcColors[usedList[i]]; - newMesh.colors32 = c; - } - - // Copy UV channels - for (int ch = 0; ch < 8; ch++) - { - var uvList = new List(); - source.GetUVs(ch, uvList); - if (uvList.Count != source.vertexCount) continue; - var newUv = new Vector2[newCount]; - for (int i = 0; i < newCount; i++) newUv[i] = uvList[usedList[i]]; - newMesh.SetUVs(ch, newUv); - } - - // Remap triangles - var newTris = new int[tris.Length]; - for (int i = 0; i < tris.Length; i++) - newTris[i] = remap[tris[i]]; - newMesh.SetTriangles(newTris, 0); - newMesh.RecalculateBounds(); - - return newMesh; - } - /// /// Best-effort equality check using vertex/submesh counts, bounds, and (when /// both are readable) endpoint vertices. Used to detect duplicate collider diff --git a/Editor/Tools/CleanupTool.cs b/Editor/Tools/CleanupTool.cs index b2a6ea43..4e5296d9 100644 --- a/Editor/Tools/CleanupTool.cs +++ b/Editor/Tools/CleanupTool.cs @@ -32,8 +32,8 @@ public class CleanupTool : IUvTool bool[] ensureUv = new bool[8]; // ── Split/Merge state ── - List splitCandidates; - List mergeCandidates; + List splitCandidates; + List mergeCandidates; // ── Scan results (null = not scanned yet, empty = scanned, no issues) ── List materialIssues; @@ -75,20 +75,6 @@ public enum Kind { OrphanedLod, LodGroupMismatch, MissingLod0Suffix, RootHasMesh public string description; } - struct SplitCandidate - { - public MeshEntry entry; - public bool include; - } - - struct MergeGroup - { - public int lodIndex; - public Material material; - public List entries; - public bool include; - } - class MeshReport { public List lods = new List(); @@ -2061,438 +2047,25 @@ void FixMeshStripUvs() void FixMeshSplitByMaterial() { if (splitCandidates == null || splitCandidates.Count == 0) return; - - // Restore any active checker/shell preview BEFORE reading sharedMaterials. - // Otherwise mats[] below would be [checkerMat, ...] and the new split - // children would inherit the preview material permanently — the original - // renderer they were backed up against is destroyed below, so the normal - // preview-restore path can't rescue them. - if (CheckerTexturePreview.IsActive) CheckerTexturePreview.Restore(); - if (ShellColorModelPreview.IsActive) ShellColorModelPreview.Restore(); - - using var _undo = MeshHygieneUtility.BeginUndoGroup("Cleanup: Split by Material"); - int split = 0; - - foreach (var sc in splitCandidates) - { - if (!sc.include) continue; - var e = sc.entry; - var srcMesh = e.originalMesh ?? e.fbxMesh; - if (srcMesh == null || e.renderer == null || e.meshFilter == null) continue; - - var mats = e.renderer.sharedMaterials; - int subCount = srcMesh.subMeshCount; - if (subCount <= 1) continue; - - var parent = e.renderer.transform.parent; - var srcTransform = e.renderer.transform; - var newRenderers = new List(); - - // Compute source name + trailing LOD suffix once per renderer; each - // submesh child reuses these to build `{srcName}_{matName}{lodSuffix}`, - // keeping `_LOD{N}` at the END for ExtractGroupKey compatibility. - string srcName = e.renderer.name; - srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); - - // Warn if material count doesn't line up with submeshes — slots beyond - // the shorter of the two would be silently unassigned otherwise. - if (mats.Length != subCount) - UvtLog.Warn($"Split '{e.renderer.name}': material count ({mats.Length}) != submesh count ({subCount}) — " + - (mats.Length < subCount - ? "some submeshes will have no material." - : "extra material slots will be dropped.")); - - for (int s = 0; s < subCount; s++) - { - // Extract submesh - var subTris = srcMesh.GetTriangles(s); - if (subTris.Length == 0) continue; - - // Build vertex remap: old index → new compact index - var usedVerts = new HashSet(subTris); - var oldToNew = new Dictionary(); - int newIdx = 0; - foreach (int vi in usedVerts.OrderBy(v => v)) - oldToNew[vi] = newIdx++; - int newVertCount = newIdx; - - // Extract vertex data - var srcPos = srcMesh.vertices; - var srcNorm = srcMesh.normals; - var srcTan = srcMesh.tangents; - var srcColors = srcMesh.colors; - var srcBw = srcMesh.boneWeights; - - var newPos = new Vector3[newVertCount]; - Vector3[] newNorm = srcNorm != null && srcNorm.Length > 0 ? new Vector3[newVertCount] : null; - Vector4[] newTan = srcTan != null && srcTan.Length > 0 ? new Vector4[newVertCount] : null; - Color[] newColors = srcColors != null && srcColors.Length > 0 ? new Color[newVertCount] : null; - BoneWeight[] newBw = srcBw != null && srcBw.Length > 0 ? new BoneWeight[newVertCount] : null; - - foreach (var kvp in oldToNew) - { - int oi = kvp.Key, ni = kvp.Value; - newPos[ni] = srcPos[oi]; - if (newNorm != null) newNorm[ni] = srcNorm[oi]; - if (newTan != null) newTan[ni] = srcTan[oi]; - if (newColors != null) newColors[ni] = srcColors[oi]; - if (newBw != null) newBw[ni] = srcBw[oi]; - } - - // Remap triangle indices - var newTris = new int[subTris.Length]; - for (int t = 0; t < subTris.Length; t++) - newTris[t] = oldToNew[subTris[t]]; - - // Build the child name ONCE and reuse for both mesh asset and - // GameObject so the FBX export (which names export children after - // entry.fbxMesh.name) matches the scene hierarchy exactly. - string matName = s < mats.Length && mats[s] != null ? mats[s].name : $"mat{s}"; - if (s < mats.Length && mats[s] == null) - UvtLog.Warn($"Split '{e.renderer.name}': material slot [{s}] is null — child '{srcName}_mat{s}{lodSuffix}' will have no material."); - string childName = $"{srcName}_{matName}{lodSuffix}"; - - // Build new mesh - var newMesh = new Mesh(); - newMesh.name = childName; - newMesh.SetVertices(newPos); - if (newNorm != null) newMesh.normals = newNorm; - if (newTan != null) newMesh.tangents = newTan; - if (newColors != null) newMesh.colors = newColors; - if (newBw != null) newMesh.boneWeights = newBw; - - // Copy UV channels - var tmpUv2 = new List(); - var tmpUv3 = new List(); - var tmpUv4 = new List(); - for (int ch = 0; ch < 8; ch++) - { - // Try Vector4 first (preserves dimension) - tmpUv4.Clear(); - srcMesh.GetUVs(ch, tmpUv4); - if (tmpUv4.Count > 0) - { - var chData = new List(newVertCount); - for (int vi = 0; vi < newVertCount; vi++) chData.Add(default); - foreach (var kvp in oldToNew) - chData[kvp.Value] = tmpUv4[kvp.Key]; - newMesh.SetUVs(ch, chData); - continue; - } - } - - if (newVertCount > 65535) - newMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; - newMesh.SetTriangles(newTris, 0); - newMesh.RecalculateBounds(); - - // Create new GameObject (name already computed above as childName) - var go = new GameObject(childName); - Undo.RegisterCreatedObjectUndo(go, "Split by Material"); - go.transform.SetParent(parent, false); - go.transform.localPosition = srcTransform.localPosition; - go.transform.localRotation = srcTransform.localRotation; - go.transform.localScale = srcTransform.localScale; - - var mf = go.AddComponent(); - mf.sharedMesh = newMesh; - var mr = go.AddComponent(); - mr.sharedMaterial = s < mats.Length ? mats[s] : null; - // Copy renderer settings from source - var srcR = e.renderer; - mr.shadowCastingMode = srcR.shadowCastingMode; - mr.receiveShadows = srcR.receiveShadows; - mr.lightProbeUsage = srcR.lightProbeUsage; - mr.reflectionProbeUsage = srcR.reflectionProbeUsage; - mr.motionVectorGenerationMode = srcR.motionVectorGenerationMode; - mr.probeAnchor = srcR.probeAnchor; - mr.lightmapIndex = srcR.lightmapIndex; - mr.realtimeLightmapIndex = srcR.realtimeLightmapIndex; - - newRenderers.Add(mr); - } - - // Update LODGroup to replace original renderer with new renderers - if (ctx.LodGroup != null) - { - Undo.RecordObject(ctx.LodGroup, "Split by Material"); - var lods = ctx.LodGroup.GetLODs(); - for (int li = 0; li < lods.Length; li++) - { - if (lods[li].renderers == null) continue; - var renderers = new List(lods[li].renderers); - int idx = renderers.IndexOf(e.renderer); - if (idx >= 0) - { - renderers.RemoveAt(idx); - renderers.InsertRange(idx, newRenderers); - lods[li].renderers = renderers.ToArray(); - } - } - ctx.LodGroup.SetLODs(lods); - } - - // Destroy original - UvtLog.Info($"Split {e.renderer.name}: {subCount} submeshes → {newRenderers.Count} objects"); - Undo.DestroyObjectImmediate(e.renderer.gameObject); - split++; - } - - UvtLog.Info($"Split {split} multi-material mesh(es)."); - - if (split > 0 && ctx.LodGroup != null) - ctx.Refresh(ctx.LodGroup); - - splitCandidates = null; - mergeCandidates = null; - meshReport = null; + MeshSplitMerge.SplitByMaterial(ctx, splitCandidates, "Cleanup: Split by Material"); + splitCandidates = null; mergeCandidates = null; meshReport = null; requestRepaint?.Invoke(); } void FixMeshMerge() { if (mergeCandidates == null || mergeCandidates.Count == 0) return; - - using var _undo = MeshHygieneUtility.BeginUndoGroup("Cleanup: Merge Same-Material"); - int merged = 0; - - foreach (var group in mergeCandidates) - { - if (!group.include || group.entries.Count < 2) continue; - - // Determine which vertex attributes exist across all meshes - bool hasNormals = false, hasTangents = false, hasColors = false; - bool[] hasUv = new bool[8]; - int totalVerts = 0, totalTris = 0; - - foreach (var e in group.entries) - { - var mesh = e.originalMesh ?? e.fbxMesh; - if (mesh == null) continue; - totalVerts += mesh.vertexCount; - totalTris += (int)(mesh.triangles.Length); - if (mesh.normals != null && mesh.normals.Length > 0) hasNormals = true; - if (mesh.tangents != null && mesh.tangents.Length > 0) hasTangents = true; - if (mesh.colors != null && mesh.colors.Length > 0) hasColors = true; - var tmpCheck = new List(); - for (int ch = 0; ch < 8; ch++) - { - tmpCheck.Clear(); - mesh.GetUVs(ch, tmpCheck); - if (tmpCheck.Count > 0) hasUv[ch] = true; - } - } - - // Merge vertex data - var allPos = new List(totalVerts); - var allNorm = hasNormals ? new List(totalVerts) : null; - var allTan = hasTangents ? new List(totalVerts) : null; - var allColors = hasColors ? new List(totalVerts) : null; - var allUvs = new List[8]; - for (int ch = 0; ch < 8; ch++) - allUvs[ch] = hasUv[ch] ? new List(totalVerts) : null; - var allTrisArr = new List(totalTris); - - var parent = group.entries[0].renderer.transform.parent; - var firstEntry = group.entries[0]; - var destroyList = new List(); - - foreach (var e in group.entries) - { - var mesh = e.originalMesh ?? e.fbxMesh; - if (mesh == null || e.renderer == null) continue; - - int vertOffset = allPos.Count; - - // Transform vertices to local space of first entry - var srcTransform = e.renderer.transform; - var dstTransform = firstEntry.renderer.transform; - var pos = mesh.vertices; - for (int vi = 0; vi < pos.Length; vi++) - { - // world → dst local - var worldPos = srcTransform.TransformPoint(pos[vi]); - allPos.Add(dstTransform.InverseTransformPoint(worldPos)); - } - - if (allNorm != null) - { - var norms = mesh.normals; - if (norms != null && norms.Length > 0) - { - for (int vi = 0; vi < norms.Length; vi++) - { - var worldNorm = srcTransform.TransformDirection(norms[vi]); - allNorm.Add(dstTransform.InverseTransformDirection(worldNorm)); - } - } - else - { - for (int vi = 0; vi < pos.Length; vi++) - allNorm.Add(Vector3.up); - } - } - - if (allTan != null) - { - var tans = mesh.tangents; - if (tans != null && tans.Length > 0) - { - for (int vi = 0; vi < tans.Length; vi++) - { - var t = tans[vi]; - var worldTan = srcTransform.TransformDirection(new Vector3(t.x, t.y, t.z)); - var localTan = dstTransform.InverseTransformDirection(worldTan); - allTan.Add(new Vector4(localTan.x, localTan.y, localTan.z, t.w)); - } - } - else - { - for (int vi = 0; vi < pos.Length; vi++) - allTan.Add(new Vector4(1, 0, 0, 1)); - } - } - - if (allColors != null) - { - var cols = mesh.colors; - if (cols != null && cols.Length > 0) - { - allColors.AddRange(cols); - } - else - { - for (int vi = 0; vi < pos.Length; vi++) - allColors.Add(Color.white); - } - } - - var tmpUv4 = new List(); - for (int ch = 0; ch < 8; ch++) - { - if (allUvs[ch] == null) continue; - tmpUv4.Clear(); - mesh.GetUVs(ch, tmpUv4); - if (tmpUv4.Count > 0) - { - allUvs[ch].AddRange(tmpUv4); - } - else - { - for (int vi = 0; vi < pos.Length; vi++) - allUvs[ch].Add(Vector4.zero); - } - } - - // Offset triangle indices - var tris = mesh.triangles; - for (int t = 0; t < tris.Length; t++) - allTrisArr.Add(tris[t] + vertOffset); - - destroyList.Add(e.renderer.gameObject); - } - - // Build merged mesh name — always include LOD suffix from group - string mergeSrcName = firstEntry.renderer.name; - // Strip existing LOD suffix if present - mergeSrcName = MeshNaming.StripLod(mergeSrcName); - string mergedName = $"{mergeSrcName}_LOD{group.lodIndex}"; - - // Build merged mesh - var mergedMesh = new Mesh(); - if (allPos.Count > 65535) mergedMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; - mergedMesh.name = mergedName; - mergedMesh.SetVertices(allPos); - if (allNorm != null) mergedMesh.SetNormals(allNorm); - if (allTan != null) mergedMesh.SetTangents(allTan); - if (allColors != null) mergedMesh.SetColors(allColors); - for (int ch = 0; ch < 8; ch++) - { - if (allUvs[ch] != null) - mergedMesh.SetUVs(ch, allUvs[ch]); - } - mergedMesh.SetTriangles(allTrisArr, 0); - mergedMesh.RecalculateBounds(); - - // Create new GameObject at first entry's position - var srcT = firstEntry.renderer.transform; - var mergedGo = new GameObject(mergedMesh.name); - Undo.RegisterCreatedObjectUndo(mergedGo, "Merge Same-Material"); - mergedGo.transform.SetParent(parent, false); - mergedGo.transform.localPosition = srcT.localPosition; - mergedGo.transform.localRotation = srcT.localRotation; - mergedGo.transform.localScale = srcT.localScale; - - var mergedMf = mergedGo.AddComponent(); - mergedMf.sharedMesh = mergedMesh; - var mergedMr = mergedGo.AddComponent(); - mergedMr.sharedMaterial = group.material; - - // Update LODGroup - if (ctx.LodGroup != null) - { - Undo.RecordObject(ctx.LodGroup, "Merge Same-Material"); - var lods = ctx.LodGroup.GetLODs(); - for (int li = 0; li < lods.Length; li++) - { - if (lods[li].renderers == null) continue; - var renderers = new List(lods[li].renderers); - bool replaced = false; - for (int ri = renderers.Count - 1; ri >= 0; ri--) - { - if (renderers[ri] == null) continue; - if (destroyList.Contains(renderers[ri].gameObject)) - { - if (!replaced) - { - renderers[ri] = mergedMr; - replaced = true; - } - else - { - renderers.RemoveAt(ri); - } - } - } - lods[li].renderers = renderers.ToArray(); - } - ctx.LodGroup.SetLODs(lods); - } - - // Destroy originals - foreach (var go in destroyList) - { - if (go == null) continue; - UvtLog.Info($"Merged: {go.name}"); - Undo.DestroyObjectImmediate(go); - } - - merged++; - UvtLog.Info($"Created merged object: {mergedMesh.name} ({allPos.Count} verts)"); - } - - UvtLog.Info($"Merged {merged} group(s)."); - - if (merged > 0 && ctx.LodGroup != null) - { - ctx.Refresh(ctx.LodGroup); - ctx.LodGroup.RecalculateBounds(); - - // Validate LODGroup integrity after merge - var finalLods = ctx.LodGroup.GetLODs(); - for (int li = 0; li < finalLods.Length; li++) - { - if (finalLods[li].renderers == null || finalLods[li].renderers.Length == 0) - UvtLog.Warn($"[Merge] LOD{li} has no renderers after merge."); - } - } - - splitCandidates = null; - mergeCandidates = null; - meshReport = null; + MeshSplitMerge.MergeSameMaterial(ctx, mergeCandidates, "Cleanup: Merge Same-Material"); + splitCandidates = null; mergeCandidates = null; meshReport = null; requestRepaint?.Invoke(); } + void ScanSplitMerge() + { + var report = MeshSplitMerge.Scan(ctx); + splitCandidates = report.split; mergeCandidates = report.merge; + } + // ═══════════════════════════════════════════════════════════════ // Section 5: Split / Merge // ═══════════════════════════════════════════════════════════════ @@ -2646,59 +2219,6 @@ void DrawSplitMergeSection() } } - void ScanSplitMerge() - { - splitCandidates = new List(); - mergeCandidates = new List(); - - var mergeMap = new Dictionary(); - - for (int li = 0; li < ctx.LodCount; li++) - { - var entries = ctx.ForLod(li); - foreach (var e in entries) - { - var mesh = e.originalMesh ?? e.fbxMesh; - if (mesh == null || e.renderer == null) continue; - - // Multi-material detection - if (mesh.subMeshCount > 1) - { - splitCandidates.Add(new SplitCandidate - { - entry = e, - include = true - }); - } - - // Merge candidates: single-submesh, single-material - var mats = e.renderer.sharedMaterials; - if (mesh.subMeshCount == 1 && mats.Length == 1 && mats[0] != null) - { - string key = $"{li}_{mats[0].GetInstanceID()}"; - if (!mergeMap.ContainsKey(key)) - mergeMap[key] = new MergeGroup - { - lodIndex = li, - material = mats[0], - entries = new List(), - include = true - }; - mergeMap[key].entries.Add(e); - } - } - } - - foreach (var kvp in mergeMap) - { - if (kvp.Value.entries.Count > 1) - mergeCandidates.Add(kvp.Value); - } - - UvtLog.Info($"Split/Merge scan: {splitCandidates.Count} split candidate(s), " + - $"{mergeCandidates.Count} merge group(s)."); - } - // ═══════════════════════════════════════════════════════════════ // Section 6: Mesh Attributes // ═══════════════════════════════════════════════════════════════ diff --git a/Editor/Tools/PrefabBuilderTool.cs b/Editor/Tools/PrefabBuilderTool.cs index bb189a3c..91a995a0 100644 --- a/Editor/Tools/PrefabBuilderTool.cs +++ b/Editor/Tools/PrefabBuilderTool.cs @@ -42,20 +42,8 @@ enum PreviewMode bool hierarchyFoldout = true; // ── Split/Merge state ── - struct SplitCandidate - { - public MeshEntry entry; - public bool include; - } - struct MergeGroup - { - public int lodIndex; - public Material material; - public List entries; - public bool include; - } - List splitCandidates; - List mergeCandidates; + List splitCandidates; + List mergeCandidates; bool splitMergeFoldout; // ── LOD management state ── @@ -1723,241 +1711,33 @@ void DrawSplitMergeSection() void ScanSplitMerge() { - splitCandidates = new List(); - mergeCandidates = new List(); - - var mergeMap = new Dictionary(); - - for (int li = 0; li < ctx.LodCount; li++) - { - var entries = ctx.ForLod(li); - foreach (var e in entries) - { - var mesh = e.originalMesh ?? e.fbxMesh; - if (mesh == null || e.renderer == null) continue; - - if (mesh.subMeshCount > 1) - { - splitCandidates.Add(new SplitCandidate - { - entry = e, - include = true - }); - } - - var mats = e.renderer.sharedMaterials; - if (mesh.subMeshCount == 1 && mats.Length == 1 && mats[0] != null) - { - string key = $"{li}_{mats[0].GetInstanceID()}"; - if (!mergeMap.ContainsKey(key)) - mergeMap[key] = new MergeGroup - { - lodIndex = li, - material = mats[0], - entries = new List(), - include = true - }; - mergeMap[key].entries.Add(e); - } - } - } - - foreach (var kvp in mergeMap) - if (kvp.Value.entries.Count > 1) - mergeCandidates.Add(kvp.Value); - - UvtLog.Info($"Split/Merge scan: {splitCandidates.Count} split, {mergeCandidates.Count} merge."); + var report = MeshSplitMerge.Scan(ctx); + splitCandidates = report.split; mergeCandidates = report.merge; } void FixSplitByMaterial() { if (splitCandidates == null) return; - - Undo.SetCurrentGroupName("Prefab Builder: Split by Material"); - int undoGroup = Undo.GetCurrentGroup(); - int split = 0; - - foreach (var sc in splitCandidates) - { - if (!sc.include) continue; - if (sc.entry.renderer == null || sc.entry.meshFilter == null) continue; - var mesh = sc.entry.originalMesh ?? sc.entry.fbxMesh; - if (mesh == null || !mesh.isReadable) continue; - - var mats = sc.entry.renderer.sharedMaterials; - string srcName = sc.entry.renderer.name; - srcName = MeshNaming.SplitLodSuffix(srcName, out string lodSuffix); - - var parent = sc.entry.renderer.transform.parent; - - for (int s = 0; s < mesh.subMeshCount && s < mats.Length; s++) - { - string matName = mats[s] != null ? mats[s].name : $"mat{s}"; - string childName = $"{srcName}_{matName}{lodSuffix}"; - - // Extract submesh - var subTris = mesh.GetTriangles(s); - var subMesh = MeshHygieneUtility.ExtractSubmesh(mesh, subTris); - if (subMesh == null) continue; - subMesh.name = childName; - - var childGo = new GameObject(childName); - Undo.RegisterCreatedObjectUndo(childGo, "Split"); - childGo.transform.SetParent(parent, false); - childGo.transform.localPosition = sc.entry.renderer.transform.localPosition; - childGo.transform.localRotation = sc.entry.renderer.transform.localRotation; - childGo.transform.localScale = sc.entry.renderer.transform.localScale; - - var newMf = childGo.AddComponent(); - newMf.sharedMesh = subMesh; - var newMr = childGo.AddComponent(); - newMr.sharedMaterials = new[] { mats[s] }; - - GameObjectUtility.SetStaticEditorFlags(childGo, - GameObjectUtility.GetStaticEditorFlags(sc.entry.renderer.gameObject)); - } - - UvtLog.Info($"Split: {sc.entry.renderer.name} -> {mesh.subMeshCount} children"); - Undo.DestroyObjectImmediate(sc.entry.renderer.gameObject); - split++; - } - - Undo.CollapseUndoOperations(undoGroup); - - if (split > 0) + // The split preview swaps materials: restore before the library reads them. + preview?.Restore(); + previewMode = PreviewMode.None; + int split = MeshSplitMerge.SplitByMaterial(ctx, splitCandidates, "Prefab Builder: Split by Material"); + if (split > 0 && ctx.LodGroup != null) { - ctx.Refresh(ctx.LodGroup); RebuildLodGroupFromNames(); ctx.LodGroup.RecalculateBounds(); } - - splitCandidates = null; - mergeCandidates = null; - preview?.Restore(); - previewMode = PreviewMode.None; + splitCandidates = null; mergeCandidates = null; requestRepaint?.Invoke(); } void FixMerge() { if (mergeCandidates == null) return; - - Undo.SetCurrentGroupName("Prefab Builder: Merge"); - int undoGroup = Undo.GetCurrentGroup(); - int merged = 0; - - foreach (var g in mergeCandidates) - { - if (!g.include || g.entries.Count < 2) continue; - - var firstEntry = g.entries[0]; - if (firstEntry.renderer == null) continue; - - var parent = firstEntry.renderer.transform.parent; - var baseMatrix = firstEntry.renderer.transform.worldToLocalMatrix; - - // Combine meshes - var allPos = new List(); - var allNormals = new List(); - var allUvs = new List(); - var allTris = new List(); - var destroyList = new List(); - - foreach (var e in g.entries) - { - var mesh = e.originalMesh ?? e.fbxMesh; - if (mesh == null || e.renderer == null) continue; - - var verts = mesh.vertices; - var normals = mesh.normals; - var uvs = mesh.uv; - var tris = mesh.triangles; - - Matrix4x4 toFirst = baseMatrix * e.renderer.transform.localToWorldMatrix; - int vertBase = allPos.Count; - - for (int v = 0; v < verts.Length; v++) - { - allPos.Add(toFirst.MultiplyPoint3x4(verts[v])); - if (normals != null && v < normals.Length) - allNormals.Add(toFirst.MultiplyVector(normals[v]).normalized); - if (uvs != null && v < uvs.Length) - allUvs.Add(uvs[v]); - } - - for (int t = 0; t < tris.Length; t++) - allTris.Add(tris[t] + vertBase); - - if (e != firstEntry) - destroyList.Add(e.renderer.gameObject); - } - - var mergedMesh = new Mesh(); - mergedMesh.name = firstEntry.renderer.name; - mergedMesh.SetVertices(allPos); - if (allNormals.Count == allPos.Count) mergedMesh.SetNormals(allNormals); - if (allUvs.Count == allPos.Count) mergedMesh.SetUVs(0, allUvs); - mergedMesh.SetTriangles(allTris, 0); - mergedMesh.RecalculateBounds(); - - Undo.RecordObject(firstEntry.meshFilter, "Merge"); - firstEntry.meshFilter.sharedMesh = mergedMesh; - - // Record the LODGroup before rewriting its renderer arrays. - // Without this, undoing the merge restores the destroyed - // GameObjects (Undo.DestroyObjectImmediate is undoable) but - // leaves the LODGroup pointing at the merged renderer list, - // so the restored objects fall out of LOD switching. - Undo.RecordObject(ctx.LodGroup, "Merge"); - - // Update LODGroup renderers - var lods = ctx.LodGroup.GetLODs(); - for (int li = 0; li < lods.Length; li++) - { - var renderers = new List(lods[li].renderers); - bool replaced = false; - for (int ri = renderers.Count - 1; ri >= 0; ri--) - { - if (renderers[ri] == null) continue; - if (destroyList.Contains(renderers[ri].gameObject)) - { - if (!replaced) - { - renderers[ri] = firstEntry.renderer; - replaced = true; - } - else - renderers.RemoveAt(ri); - } - } - lods[li].renderers = renderers.ToArray(); - } - ctx.LodGroup.SetLODs(lods); - if (PrefabUtility.IsPartOfPrefabInstance(ctx.LodGroup)) - PrefabUtility.RecordPrefabInstancePropertyModifications(ctx.LodGroup); - - foreach (var go in destroyList) - { - if (go == null) continue; - Undo.DestroyObjectImmediate(go); - } - - merged++; - UvtLog.Info($"Merged: {g.entries.Count} objects -> {firstEntry.renderer.name}"); - } - - Undo.CollapseUndoOperations(undoGroup); - - if (merged > 0) - { - ctx.Refresh(ctx.LodGroup); - ctx.LodGroup.RecalculateBounds(); - } - - splitCandidates = null; - mergeCandidates = null; preview?.Restore(); previewMode = PreviewMode.None; + MeshSplitMerge.MergeSameMaterial(ctx, mergeCandidates, "Prefab Builder: Merge"); + splitCandidates = null; mergeCandidates = null; requestRepaint?.Invoke(); } diff --git a/Tests/Editor/MeshSplitMergeTests.cs b/Tests/Editor/MeshSplitMergeTests.cs new file mode 100644 index 00000000..bd2cf7f0 --- /dev/null +++ b/Tests/Editor/MeshSplitMergeTests.cs @@ -0,0 +1,80 @@ +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + // Editor-only (Unity objects): runs in the Unity test runner, not the console harness. + public class MeshSplitMergeTests + { + readonly List created = new List(); + + [TearDown] + public void TearDown() + { + foreach (var o in created) if (o) Object.DestroyImmediate(o); + created.Clear(); + } + + static Mesh Quad(float x0, int submeshes) + { + var m = new Mesh { name = "Quad" }; + m.vertices = new[] { new Vector3(x0, 0, 0), new Vector3(x0 + 1, 0, 0), new Vector3(x0 + 1, 1, 0), new Vector3(x0, 1, 0) }; + m.normals = new[] { Vector3.back, Vector3.back, Vector3.back, Vector3.back }; + m.tangents = new[] { new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1) }; + m.colors = new[] { Color.red, Color.green, Color.blue, Color.white }; + m.uv = new[] { Vector2.zero, Vector2.right, Vector2.one, Vector2.up }; + m.uv2 = new[] { Vector2.one * 0.5f, Vector2.one * 0.5f, Vector2.one * 0.5f, Vector2.one * 0.5f }; + m.subMeshCount = submeshes; + if (submeshes == 1) m.SetTriangles(new[] { 0, 1, 2, 0, 2, 3 }, 0); + else { m.SetTriangles(new[] { 0, 1, 2 }, 0); m.SetTriangles(new[] { 0, 2, 3 }, 1); } + return m; + } + + [Test] + public void ExtractSubmesh_CompactsVerticesAndKeepsEveryAttribute() + { + var source = Quad(0, 2); created.Add(source); + var part = MeshSplitMerge.ExtractSubmesh(source, source.GetTriangles(1)); created.Add(part); + Assert.AreEqual(3, part.vertexCount); + Assert.AreEqual(3, part.normals.Length); Assert.AreEqual(3, part.tangents.Length); Assert.AreEqual(3, part.colors.Length); + Assert.AreEqual(3, part.uv.Length); Assert.AreEqual(3, part.uv2.Length); + CollectionAssert.AreEqual(new[] { 0, 1, 2 }, part.GetTriangles(0)); + Assert.AreEqual(Color.red, part.colors[0]); Assert.AreEqual(Color.blue, part.colors[1]); Assert.AreEqual(Color.white, part.colors[2]); + } + + [Test] + public void SplitAndMerge_RoundTripThroughALodGroup() + { + var root = new GameObject("Asset"); created.Add(root); + var lodGroup = root.AddComponent(); + var mat = new Material(Shader.Find("Standard")); created.Add(mat); + var go = new GameObject("Asset_LOD0"); created.Add(go); + go.transform.SetParent(root.transform, false); + var mesh = Quad(0, 2); created.Add(mesh); + go.AddComponent().sharedMesh = mesh; + var mr = go.AddComponent(); mr.sharedMaterials = new[] { mat, mat }; + lodGroup.SetLODs(new[] { new LOD(0.1f, new Renderer[] { mr }) }); + + var ctx = new UvToolContext(); + ctx.Refresh(lodGroup); + var report = MeshSplitMerge.Scan(ctx); + Assert.AreEqual(1, report.split.Count); Assert.AreEqual(0, report.merge.Count); + + Assert.AreEqual(1, MeshSplitMerge.SplitByMaterial(ctx, report.split, "test split")); + Assert.AreEqual(2, lodGroup.GetLODs()[0].renderers.Length, "both children took the source's LOD slot"); + foreach (var r in lodGroup.GetLODs()[0].renderers) { created.Add(r.gameObject); created.Add(r.GetComponent().sharedMesh); Assert.That(r.name, Does.EndWith("_LOD0")); } + + ctx.Refresh(lodGroup); + report = MeshSplitMerge.Scan(ctx); + Assert.AreEqual(0, report.split.Count); Assert.AreEqual(1, report.merge.Count); Assert.AreEqual(2, report.merge[0].entries.Count); + Assert.AreEqual(1, MeshSplitMerge.MergeSameMaterial(ctx, report.merge, "test merge")); + var renderers = lodGroup.GetLODs()[0].renderers; + Assert.AreEqual(1, renderers.Length); + var merged = renderers[0].GetComponent().sharedMesh; created.Add(merged); + Assert.AreEqual("Asset_LOD0", renderers[0].name); + Assert.AreEqual(6, merged.vertexCount); Assert.AreEqual(6, merged.triangles.Length); + Assert.AreEqual(6, merged.tangents.Length); Assert.AreEqual(6, merged.colors.Length); Assert.AreEqual(6, merged.uv2.Length, "UV2 survives the merge"); + } + } +} diff --git a/Tests/Editor/MeshSplitMergeTests.cs.meta b/Tests/Editor/MeshSplitMergeTests.cs.meta new file mode 100644 index 00000000..e7eb0b00 --- /dev/null +++ b/Tests/Editor/MeshSplitMergeTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a72f1ddae404551a12eda8a12a35e1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 8c4d9ba6d5f278af4c63d7a1d76cc4643014707b Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 08:54:03 +0000 Subject: [PATCH 090/130] refactor(mesh): MeshAccess, MeshTransform and shared bounds math Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through AcquireReadOnlyMeshData, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix), the rest skipped unreadable meshes. Editor/Mesh/MeshAccess.cs now owns the canvas's implementation (ReadableCopy, Readable); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times, and two of them transformed normals with the matrix itself (wrong under non-uniform scale) and never flipped a mirrored mesh's winding. MeshTransform.BakeMatrix does it once: inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant; WorldBounds and CombinedBounds replace the per-tool unions. TransformBounds and BoundsDistance join MeshGeometry, with the transfer, vertex-colour-baking and AO copies forwarding. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + Editor/Framework/UvCanvasView.cs | 195 ---------------------- Editor/Geometry/MeshGeometry.cs | 25 +++ Editor/Mesh/MeshAccess.cs | 232 ++++++++++++++++++++++++++ Editor/Mesh/MeshAccess.cs.meta | 11 ++ Editor/Mesh/MeshTransform.cs | 86 ++++++++++ Editor/Mesh/MeshTransform.cs.meta | 11 ++ Editor/RemeshBeauty.cs | 11 +- Editor/RemeshExporter.cs | 26 +-- Editor/RemeshSource.cs | 2 +- Editor/Tools/CleanupTool.cs | 98 +++-------- Editor/Tools/LightmapTransferTool.cs | 56 +------ Editor/Tools/PrefabBuilderTool.cs | 26 +-- Editor/Tools/VertexColorBakingTool.cs | 28 +--- Editor/VertexAOBaker.cs | 33 +--- Tests/Editor/RemeshBakeTests.cs | 7 + 16 files changed, 410 insertions(+), 438 deletions(-) create mode 100644 Editor/Mesh/MeshAccess.cs create mode 100644 Editor/Mesh/MeshAccess.cs.meta create mode 100644 Editor/Mesh/MeshTransform.cs create mode 100644 Editor/Mesh/MeshTransform.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 08f0e3ec..3f6f667f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. - **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. - **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). - **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index c2a5136a..f81be7e9 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -1301,200 +1301,5 @@ void DrawShellDebugOverlay(Rect canvasRect) GUI.Label(lr, lines[i], i == 0 && pinned ? pinnedStyle : style); } } - - public static Mesh MakeReadableCopy(Mesh src) - { - var dst = new Mesh(); - dst.indexFormat = src.indexFormat; - if (!src.isReadable) { - try { - return MakeReadableCopyFromMeshData(src, dst); - } - catch (Exception e) when (e.Message != null && e.Message.IndexOf("isReadable", StringComparison.OrdinalIgnoreCase) >= 0) { - // Unity 6000.2's read-only MeshData still refuses some Read/Write-disabled - // imports. The only sanctioned read left is through the importer itself: - // flip THIS file's Read/Write for the read and put it back afterwards — - // a reimport pair only for files the MeshData path cannot serve, never - // for the readable or MeshData-served majority. - string path = AssetDatabase.GetAssetPath(src); - if (!(AssetImporter.GetAtPath(path) is ModelImporter model)) - throw new InvalidOperationException(src.name + " is Read/Write-disabled with no importer to read it through; enable Read/Write on its import or drop it from the capture.", e); - model.isReadable = true; - model.SaveAndReimport(); - try { - FillReadableCopy(src, dst); - return dst; - } - finally { - if (AssetImporter.GetAtPath(path) is ModelImporter restore) { - restore.isReadable = false; - restore.SaveAndReimport(); - } - } - } - } - FillReadableCopy(src, dst); - return dst; - } - - static void FillReadableCopy(Mesh src, Mesh dst) - { - dst.SetVertices(new List(src.vertices)); - if (src.normals != null && src.normals.Length > 0) dst.SetNormals(new List(src.normals)); - if (src.tangents != null && src.tangents.Length > 0) dst.SetTangents(new List(src.tangents)); - if (src.colors != null && src.colors.Length > 0) dst.SetColors(new List(src.colors)); - if (src.boneWeights != null && src.boneWeights.Length > 0) dst.boneWeights = src.boneWeights; - if (src.bindposes != null && src.bindposes.Length > 0) dst.bindposes = src.bindposes; - for (int ch = 0; ch < 8; ch++) - { - var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); - if (!src.HasVertexAttribute(attr)) continue; - int dim = src.GetVertexAttributeDimension(attr); - if (dim <= 2) - { - var uv = new List(); src.GetUVs(ch, uv); - if (uv.Count > 0 && !IsAllZero2(uv)) dst.SetUVs(ch, uv); - } - else if (dim == 3) - { - var uv = new List(); src.GetUVs(ch, uv); - if (uv.Count > 0) dst.SetUVs(ch, uv); - } - else - { - var uv = new List(); src.GetUVs(ch, uv); - if (uv.Count > 0) dst.SetUVs(ch, uv); - } - } - dst.subMeshCount = src.subMeshCount; - for (int s = 0; s < src.subMeshCount; s++) dst.SetTriangles(src.GetTriangles(s), s); - dst.bounds = src.bounds; - } - - // The classic vertex getters log "Not allowed to access" and return EMPTY arrays - // on a Read/Write-disabled import (the capture then finds no triangles at all); - // MeshData is served by the engine regardless of the readable flag. Bone weights - // have no MeshData accessor — skinned capture bakes through the renderer instead. - static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) - { - using (var dataArray = Mesh.AcquireReadOnlyMeshData(src)) - { - var md = dataArray[0]; - int count = md.vertexCount; - dst.SetVertices(ReadVertices(md, count)); - if (md.HasVertexAttribute(VertexAttribute.Normal)) dst.SetNormals(ReadVectors3(md, count)); - if (md.HasVertexAttribute(VertexAttribute.Tangent)) dst.SetTangents(ReadVectors4(md, count)); - if (md.HasVertexAttribute(VertexAttribute.Color)) dst.SetColors(ReadColors(md, count)); - for (int ch = 0; ch < 8; ch++) - { - var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); - if (!md.HasVertexAttribute(attr)) continue; - int dim = md.GetVertexAttributeDimension(attr); - if (dim <= 2) - { - var uv = ReadUV2(md, ch, count); - if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, new List(uv)); - } - else if (dim == 3) - { - var uv = ReadUV3(md, ch, count); - if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); - } - else - { - var uv = ReadUV4(md, ch, count); - if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); - } - } - dst.subMeshCount = md.subMeshCount; - for (int s = 0; s < md.subMeshCount; s++) - dst.SetIndices(ReadIndices(md, s), md.GetSubMesh(s).topology, s, calculateBounds: false); - } - dst.bounds = src.bounds; - return dst; - } - - // MeshData's typed getters all take NativeArray buffers; each helper copies out - // to a managed array and disposes the scratch. applyBaseVertex folds the - // submesh's base vertex back into the indices, as the classic getters do. - static Vector3[] ReadVertices(Mesh.MeshData md, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetVertices(buffer); - return buffer.ToArray(); - } - } - - static Vector3[] ReadVectors3(Mesh.MeshData md, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetNormals(buffer); - return buffer.ToArray(); - } - } - - static Vector4[] ReadVectors4(Mesh.MeshData md, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetTangents(buffer); - return buffer.ToArray(); - } - } - - static Color32[] ReadColors(Mesh.MeshData md, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetColors(buffer); - return buffer.ToArray(); - } - } - - static Vector2[] ReadUV2(Mesh.MeshData md, int channel, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetUVs(channel, buffer); - return buffer.ToArray(); - } - } - - static Vector3[] ReadUV3(Mesh.MeshData md, int channel, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetUVs(channel, buffer); - return buffer.ToArray(); - } - } - - static Vector4[] ReadUV4(Mesh.MeshData md, int channel, int count) - { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetUVs(channel, buffer); - return buffer.ToArray(); - } - } - - static int[] ReadIndices(Mesh.MeshData md, int submesh) - { - var sub = md.GetSubMesh(submesh); - using (var buffer = new NativeArray(sub.indexCount, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) - { - md.GetIndices(buffer, submesh, true); - return buffer.ToArray(); - } - } - - static bool IsAllZero2(List uv) - { - for (int i = 0; i < uv.Count; i++) - if (uv[i].x != 0f || uv[i].y != 0f) return false; - return true; - } } } diff --git a/Editor/Geometry/MeshGeometry.cs b/Editor/Geometry/MeshGeometry.cs index 531c56f5..c5f7a282 100644 --- a/Editor/Geometry/MeshGeometry.cs +++ b/Editor/Geometry/MeshGeometry.cs @@ -76,6 +76,31 @@ public static bool Barycentric(Vector2 p, Vector2 a, Vector2 b, Vector2 c, out V return true; } + /// The axis-aligned box that encloses after (all eight corners carried through). + public static Bounds TransformBounds(Bounds bounds, Matrix4x4 matrix) + { + Vector3 c = bounds.center, e = bounds.extents; + var mn = new Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity); + var mx = new Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity); + for (int ix = -1; ix <= 1; ix += 2) + for (int iy = -1; iy <= 1; iy += 2) + for (int iz = -1; iz <= 1; iz += 2) + { + Vector3 w = matrix.MultiplyPoint3x4(c + Vector3.Scale(e, new Vector3(ix, iy, iz))); + mn = Vector3.Min(mn, w); mx = Vector3.Max(mx, w); + } + return new Bounds((mn + mx) * 0.5f, mx - mn); + } + + /// Distance between two boxes; 0 when they touch or overlap. + public static float BoundsDistance(Bounds a, Bounds b) + { + float dx = Mathf.Max(0f, Mathf.Max(a.min.x - b.max.x, b.min.x - a.max.x)); + float dy = Mathf.Max(0f, Mathf.Max(a.min.y - b.max.y, b.min.y - a.max.y)); + float dz = Mathf.Max(0f, Mathf.Max(a.min.z - b.max.z, b.min.z - a.max.z)); + return Mathf.Sqrt(dx * dx + dy * dy + dz * dz); + } + /// Squared distance from q to the box [min, max]; 0 inside. public static float SqDistToAabb(Vector3 q, Vector3 min, Vector3 max) { diff --git a/Editor/Mesh/MeshAccess.cs b/Editor/Mesh/MeshAccess.cs new file mode 100644 index 00000000..ba3485bd --- /dev/null +++ b/Editor/Mesh/MeshAccess.cs @@ -0,0 +1,232 @@ +using System; +using System.Collections.Generic; +using Unity.Collections; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; + +namespace SashaRX.UnityMeshLab +{ + /// + /// The one way this package reads a mesh it may not be allowed to read. Unity's + /// classic vertex getters log "Not allowed to access" and return EMPTY arrays on a + /// Read/Write-disabled import; is served + /// by the engine regardless of the flag, so copies every + /// attribute through it, and only when even that is refused (some Unity 6000.2 + /// imports) flips the file's importer for one read and puts it back. No tool + /// toggles Read/Write on an importer for its own reading any more. Main thread. + /// + internal static class MeshAccess + { + /// + /// The mesh itself when it is readable, else a readable copy (HideAndDontSave, + /// every attribute); tells the caller what to destroy. + /// + public static Mesh Readable(Mesh mesh, out bool isCopy) + { + isCopy = false; + if (mesh == null || mesh.isReadable) return mesh; + var copy = ReadableCopy(mesh); + copy.name = mesh.name; + copy.hideFlags = HideFlags.HideAndDontSave; + isCopy = true; + return copy; + } + + /// A new readable mesh with every attribute of (the caller owns it). + public static Mesh ReadableCopy(Mesh src) + { + var dst = new Mesh(); + dst.indexFormat = src.indexFormat; + if (!src.isReadable) { + try { + return MakeReadableCopyFromMeshData(src, dst); + } + catch (Exception e) when (e.Message != null && e.Message.IndexOf("isReadable", StringComparison.OrdinalIgnoreCase) >= 0) { + // Unity 6000.2's read-only MeshData still refuses some Read/Write-disabled + // imports. The only sanctioned read left is through the importer itself: + // flip THIS file's Read/Write for the read and put it back afterwards — + // a reimport pair only for files the MeshData path cannot serve, never + // for the readable or MeshData-served majority. + string path = AssetDatabase.GetAssetPath(src); + if (!(AssetImporter.GetAtPath(path) is ModelImporter model)) + throw new InvalidOperationException(src.name + " is Read/Write-disabled with no importer to read it through; enable Read/Write on its import or drop it from the capture.", e); + model.isReadable = true; + model.SaveAndReimport(); + try { + FillReadableCopy(src, dst); + return dst; + } + finally { + if (AssetImporter.GetAtPath(path) is ModelImporter restore) { + restore.isReadable = false; + restore.SaveAndReimport(); + } + } + } + } + FillReadableCopy(src, dst); + return dst; + } + + static void FillReadableCopy(Mesh src, Mesh dst) + { + dst.SetVertices(new List(src.vertices)); + if (src.normals != null && src.normals.Length > 0) dst.SetNormals(new List(src.normals)); + if (src.tangents != null && src.tangents.Length > 0) dst.SetTangents(new List(src.tangents)); + if (src.colors != null && src.colors.Length > 0) dst.SetColors(new List(src.colors)); + if (src.boneWeights != null && src.boneWeights.Length > 0) dst.boneWeights = src.boneWeights; + if (src.bindposes != null && src.bindposes.Length > 0) dst.bindposes = src.bindposes; + for (int ch = 0; ch < 8; ch++) + { + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); + if (!src.HasVertexAttribute(attr)) continue; + int dim = src.GetVertexAttributeDimension(attr); + if (dim <= 2) + { + var uv = new List(); src.GetUVs(ch, uv); + if (uv.Count > 0 && !IsAllZero2(uv)) dst.SetUVs(ch, uv); + } + else if (dim == 3) + { + var uv = new List(); src.GetUVs(ch, uv); + if (uv.Count > 0) dst.SetUVs(ch, uv); + } + else + { + var uv = new List(); src.GetUVs(ch, uv); + if (uv.Count > 0) dst.SetUVs(ch, uv); + } + } + dst.subMeshCount = src.subMeshCount; + for (int s = 0; s < src.subMeshCount; s++) dst.SetTriangles(src.GetTriangles(s), s); + dst.bounds = src.bounds; + } + + // The classic vertex getters log "Not allowed to access" and return EMPTY arrays + // on a Read/Write-disabled import (the capture then finds no triangles at all); + // MeshData is served by the engine regardless of the readable flag. Bone weights + // have no MeshData accessor — skinned capture bakes through the renderer instead. + static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) + { + using (var dataArray = Mesh.AcquireReadOnlyMeshData(src)) + { + var md = dataArray[0]; + int count = md.vertexCount; + dst.SetVertices(ReadVertices(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Normal)) dst.SetNormals(ReadVectors3(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Tangent)) dst.SetTangents(ReadVectors4(md, count)); + if (md.HasVertexAttribute(VertexAttribute.Color)) dst.SetColors(ReadColors(md, count)); + for (int ch = 0; ch < 8; ch++) + { + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); + if (!md.HasVertexAttribute(attr)) continue; + int dim = md.GetVertexAttributeDimension(attr); + if (dim <= 2) + { + var uv = ReadUV2(md, ch, count); + if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, new List(uv)); + } + else if (dim == 3) + { + var uv = ReadUV3(md, ch, count); + if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); + } + else + { + var uv = ReadUV4(md, ch, count); + if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); + } + } + dst.subMeshCount = md.subMeshCount; + for (int s = 0; s < md.subMeshCount; s++) + dst.SetIndices(ReadIndices(md, s), md.GetSubMesh(s).topology, s, calculateBounds: false); + } + dst.bounds = src.bounds; + return dst; + } + + // MeshData's typed getters all take NativeArray buffers; each helper copies out + // to a managed array and disposes the scratch. applyBaseVertex folds the + // submesh's base vertex back into the indices, as the classic getters do. + static Vector3[] ReadVertices(Mesh.MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetVertices(buffer); + return buffer.ToArray(); + } + } + + static Vector3[] ReadVectors3(Mesh.MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetNormals(buffer); + return buffer.ToArray(); + } + } + + static Vector4[] ReadVectors4(Mesh.MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetTangents(buffer); + return buffer.ToArray(); + } + } + + static Color32[] ReadColors(Mesh.MeshData md, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetColors(buffer); + return buffer.ToArray(); + } + } + + static Vector2[] ReadUV2(Mesh.MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static Vector3[] ReadUV3(Mesh.MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static Vector4[] ReadUV4(Mesh.MeshData md, int channel, int count) + { + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetUVs(channel, buffer); + return buffer.ToArray(); + } + } + + static int[] ReadIndices(Mesh.MeshData md, int submesh) + { + var sub = md.GetSubMesh(submesh); + using (var buffer = new NativeArray(sub.indexCount, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + { + md.GetIndices(buffer, submesh, true); + return buffer.ToArray(); + } + } + + static bool IsAllZero2(List uv) + { + for (int i = 0; i < uv.Count; i++) + if (uv[i].x != 0f || uv[i].y != 0f) return false; + return true; + } + } +} diff --git a/Editor/Mesh/MeshAccess.cs.meta b/Editor/Mesh/MeshAccess.cs.meta new file mode 100644 index 00000000..9b28b573 --- /dev/null +++ b/Editor/Mesh/MeshAccess.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6eea186cc2c4a6ebc90f6a32793031a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Mesh/MeshTransform.cs b/Editor/Mesh/MeshTransform.cs new file mode 100644 index 00000000..40500295 --- /dev/null +++ b/Editor/Mesh/MeshTransform.cs @@ -0,0 +1,86 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Mesh-level transforms and bounds every tool used to carry a copy of: baking a + /// matrix into a mesh (positions, normals by the inverse transpose, tangents + /// re-orthogonalised, winding and tangent handedness flipped under a mirroring + /// matrix), and world / combined bounds of meshes and hierarchies. Main thread + /// (Mesh access); the pure box math is in . + /// + internal static class MeshTransform + { + /// + /// Writes into the mesh's vertex data. Normals take the + /// inverse transpose (correct under non-uniform scale, where MultiplyVector is + /// not), tangents the matrix itself and are re-orthogonalised against the new + /// normal; a mirroring matrix (negative determinant) flips every triangle's + /// winding and the tangent handedness so the surface still faces out and the + /// normal map still decodes. Bounds are recalculated. Readable mesh required. + /// + public static void BakeMatrix(Mesh mesh, Matrix4x4 matrix) + { + if (mesh == null || !mesh.isReadable) return; + if (matrix.isIdentity) return; + bool mirrored = matrix.determinant < 0f; + var normalMatrix = matrix.inverse.transpose; + var vertices = mesh.vertices; + for (int i = 0; i < vertices.Length; ++i) vertices[i] = matrix.MultiplyPoint3x4(vertices[i]); + mesh.vertices = vertices; + var normals = mesh.normals; + bool hasNormals = normals != null && normals.Length == vertices.Length; + if (hasNormals) + { + for (int i = 0; i < normals.Length; ++i) normals[i] = normalMatrix.MultiplyVector(normals[i]).normalized; + mesh.normals = normals; + } + var tangents = mesh.tangents; + if (tangents != null && tangents.Length == vertices.Length) + { + for (int i = 0; i < tangents.Length; ++i) + { + var t = matrix.MultiplyVector(new Vector3(tangents[i].x, tangents[i].y, tangents[i].z)); + if (hasNormals) t -= normals[i] * Vector3.Dot(t, normals[i]); + t.Normalize(); + tangents[i] = new Vector4(t.x, t.y, t.z, mirrored ? -tangents[i].w : tangents[i].w); + } + mesh.tangents = tangents; + } + if (mirrored) + for (int sub = 0; sub < mesh.subMeshCount; ++sub) + { + var triangles = mesh.GetTriangles(sub); + for (int i = 0; i + 2 < triangles.Length; i += 3) { int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; } + mesh.SetTriangles(triangles, sub); + } + mesh.RecalculateBounds(); + } + + /// The union of every renderer's world bounds under root; when it has none. + public static Bounds WorldBounds(GameObject root, Bounds fallback) + { + bool any = false; var bounds = new Bounds(); + foreach (var renderer in root.GetComponentsInChildren()) + { + if (!any) { bounds = renderer.bounds; any = true; } + else bounds.Encapsulate(renderer.bounds); + } + return any ? bounds : fallback; + } + + /// The union of each mesh's bounds carried through its matrix; an empty box at the origin when there are none. + public static Bounds CombinedBounds(IEnumerable<(Mesh mesh, Matrix4x4 matrix)> meshes) + { + bool any = false; var bounds = new Bounds(); + foreach (var (mesh, matrix) in meshes) + { + if (mesh == null) continue; + var b = MeshGeometry.TransformBounds(mesh.bounds, matrix); + if (!any) { bounds = b; any = true; } else bounds.Encapsulate(b); + } + return bounds; + } + } +} diff --git a/Editor/Mesh/MeshTransform.cs.meta b/Editor/Mesh/MeshTransform.cs.meta new file mode 100644 index 00000000..943ad5d0 --- /dev/null +++ b/Editor/Mesh/MeshTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77858eb66ec9415fa1584fa1eb52cb7b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshBeauty.cs b/Editor/RemeshBeauty.cs index 2eeadfc3..59e171a5 100644 --- a/Editor/RemeshBeauty.cs +++ b/Editor/RemeshBeauty.cs @@ -459,16 +459,7 @@ Color At(int xx, int yy) => clamp static int Wrap(int v, int size) => v < 0 ? v + size : v >= size ? v - size : v; - static Bounds ComputeWorldBounds(GameObject root) - { - bool any = false; - var bounds = new Bounds(); - foreach (var renderer in root.GetComponentsInChildren()) { - if (!any) { bounds = renderer.bounds; any = true; } - else bounds.Encapsulate(renderer.bounds); - } - return any ? bounds : new Bounds(root.transform.position, Vector3.one); - } + static Bounds ComputeWorldBounds(GameObject root) => MeshTransform.WorldBounds(root, new Bounds(root.transform.position, Vector3.one)); // Cubemap → equirect readback through Hidden/MeshLab/RemeshBeautyEquirect // (directions in world axes, linear). lod samples the probe's own prefiltered diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs index 00d073d8..ab7798ae 100644 --- a/Editor/RemeshExporter.cs +++ b/Editor/RemeshExporter.cs @@ -321,31 +321,7 @@ internal static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) { if (Mathf.Approximately(scale.x, 1) && Mathf.Approximately(scale.y, 1) && Mathf.Approximately(scale.z, 1)) return; if (Mathf.Abs(scale.x) < 1e-6f || Mathf.Abs(scale.y) < 1e-6f || Mathf.Abs(scale.z) < 1e-6f) return; - bool mirrored = scale.x * scale.y * scale.z < 0; - var vertices = mesh.vertices; - for (int i = 0; i < vertices.Length; ++i) vertices[i] = Vector3.Scale(vertices[i], scale); - mesh.vertices = vertices; - var inv = new Vector3(1f / scale.x, 1f / scale.y, 1f / scale.z); - var normals = mesh.normals; - for (int i = 0; i < normals.Length; ++i) normals[i] = Vector3.Scale(normals[i], inv).normalized; - mesh.normals = normals; - var tangents = mesh.tangents; - for (int i = 0; i < tangents.Length; ++i) { - var t = Vector3.Scale(new Vector3(tangents[i].x, tangents[i].y, tangents[i].z), scale); - if (i < normals.Length) t -= normals[i] * Vector3.Dot(t, normals[i]); - t.Normalize(); - tangents[i] = new Vector4(t.x, t.y, t.z, mirrored ? -tangents[i].w : tangents[i].w); - } - mesh.tangents = tangents; - if (mirrored) - for (int sub = 0; sub < mesh.subMeshCount; ++sub) { - var triangles = mesh.GetTriangles(sub); - for (int i = 0; i < triangles.Length; i += 3) { - int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; - } - mesh.SetTriangles(triangles, sub); - } - mesh.RecalculateBounds(); + MeshTransform.BakeMatrix(mesh, Matrix4x4.Scale(scale)); } static byte[] Encode(RemeshBaker.Maps maps, int index) diff --git a/Editor/RemeshSource.cs b/Editor/RemeshSource.cs index 6582c33f..046fe06f 100644 --- a/Editor/RemeshSource.cs +++ b/Editor/RemeshSource.cs @@ -192,7 +192,7 @@ public static RemeshSource Capture(Matrix4x4 worldToSpace, IList rende if (!filter || !filter.sharedMesh) continue; // An Instantiate clone of a Read/Write-disabled import carries no CPU data, // but editor code can still read the imported asset; copy from that. - mesh = UvCanvasView.MakeReadableCopy(filter.sharedMesh); + mesh = MeshAccess.ReadableCopy(filter.sharedMesh); } else continue; // Non-triangle submeshes (curtain lines, quad exports) drop out of the diff --git a/Editor/Tools/CleanupTool.cs b/Editor/Tools/CleanupTool.cs index 4e5296d9..28c22b34 100644 --- a/Editor/Tools/CleanupTool.cs +++ b/Editor/Tools/CleanupTool.cs @@ -707,26 +707,8 @@ void FixMaterials() if (matGroups.Count == mesh.subMeshCount) continue; // no duplicates - // Need readable mesh to merge - if (!mesh.isReadable) - { - string assetPath = AssetDatabase.GetAssetPath(mesh); - if (!string.IsNullOrEmpty(assetPath)) - { - var imp = AssetImporter.GetAtPath(assetPath) as ModelImporter; - if (imp != null && !imp.isReadable) - { - imp.isReadable = true; - imp.SaveAndReimport(); - mesh = mf.sharedMesh; // re-read after reimport - } - } - } - - if (!mesh.isReadable) continue; - - // Clone mesh - var newMesh = UnityEngine.Object.Instantiate(mesh); + // A readable copy through MeshData: no importer flip, no reimport. + var newMesh = MeshAccess.ReadableCopy(mesh); newMesh.name = mesh.name; // Build merged submeshes @@ -741,7 +723,7 @@ void FixMaterials() // Combine triangle indices from all submeshes in this group var combinedTris = new List(); foreach (int s in indices) - combinedTris.AddRange(mesh.GetTriangles(s)); + combinedTris.AddRange(newMesh.GetTriangles(s)); mergedSubs.Add(combinedTris.ToArray()); } @@ -756,18 +738,6 @@ void FixMaterials() issue.renderer.sharedMaterials = newMats.ToArray(); UvtLog.Info($"Merged submeshes on {issue.renderer.name}: {mesh.subMeshCount} → {mergedSubs.Count} submeshes"); - - // Restore isReadable if we changed it - string meshPath = AssetDatabase.GetAssetPath(mesh); - if (!string.IsNullOrEmpty(meshPath)) - { - var mimp = AssetImporter.GetAtPath(meshPath) as ModelImporter; - if (mimp != null && mimp.isReadable) - { - mimp.isReadable = false; - mimp.SaveAndReimport(); - } - } } // ImporterRemap issues are not fixable — they require "Overwrite Source FBX" @@ -1037,52 +1007,28 @@ void FixColliders() var mf = issue.gameObject.GetComponent(); var mc = issue.gameObject.GetComponent(); - string assetPath = AssetDatabase.GetAssetPath(issue.mesh); - if (!string.IsNullOrEmpty(assetPath)) + // Positions and triangles only, read through MeshData whatever the + // import's Read/Write flag says: no importer flip, no reimport. + Mesh fresh = mf != null ? mf.sharedMesh : (mc != null ? mc.sharedMesh : null); + if (fresh != null) { - var imp = AssetImporter.GetAtPath(assetPath) as ModelImporter; - if (imp != null) + var readable = MeshAccess.ReadableCopy(fresh); + var clone = new Mesh { name = fresh.name, indexFormat = readable.indexFormat }; + clone.SetVertices(readable.vertices); + clone.SetTriangles(readable.triangles, 0); + clone.RecalculateBounds(); + UnityEngine.Object.DestroyImmediate(readable); + if (mf != null) { - bool wasReadable = imp.isReadable; - if (!wasReadable) - { - imp.isReadable = true; - Uv2AssetPostprocessor.bypassPaths.Add(assetPath); - imp.SaveAndReimport(); - } - - Mesh freshMesh = mf != null ? mf.sharedMesh : (mc != null ? mc.sharedMesh : null); - if (freshMesh != null && freshMesh.isReadable) - { - var clone = UnityEngine.Object.Instantiate(freshMesh); - clone.name = freshMesh.name; - var cPos = clone.vertices; - var cTris = clone.triangles; - clone.Clear(); - clone.SetVertices(cPos); - clone.SetTriangles(cTris, 0); - clone.RecalculateBounds(); - - if (mf != null) - { - Undo.RecordObject(mf, "Strip Collider Attributes"); - mf.sharedMesh = clone; - } - if (mc != null) - { - Undo.RecordObject(mc, "Strip Collider Attributes"); - mc.sharedMesh = clone; - } - UvtLog.Info($"Stripped extra attributes from {issue.gameObject.name}"); - } - - if (!wasReadable) - { - imp.isReadable = false; - Uv2AssetPostprocessor.bypassPaths.Add(assetPath); - imp.SaveAndReimport(); - } + Undo.RecordObject(mf, "Strip Collider Attributes"); + mf.sharedMesh = clone; + } + if (mc != null) + { + Undo.RecordObject(mc, "Strip Collider Attributes"); + mc.sharedMesh = clone; } + UvtLog.Info($"Stripped extra attributes from {issue.gameObject.name}"); } } break; diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index bfeb8f9c..5ab25e19 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -1500,7 +1500,7 @@ void ExecMeshOptimize() if (!e.include || e.originalMesh == null) continue; if (e.originalMesh == e.fbxMesh) { - e.originalMesh = UvCanvasView.MakeReadableCopy(e.fbxMesh); + e.originalMesh = MeshAccess.ReadableCopy(e.fbxMesh); e.originalMesh.name = e.fbxMesh.name + "_wc"; } var optResult = MeshOptimizer.Optimize(e.originalMesh); @@ -1542,7 +1542,7 @@ void ExecWeldUv0(bool runMeshoptFirst = true) // is what normally clones the fbx mesh). if (e.originalMesh == e.fbxMesh) { - e.originalMesh = UvCanvasView.MakeReadableCopy(e.fbxMesh); + e.originalMesh = MeshAccess.ReadableCopy(e.fbxMesh); e.originalMesh.name = e.fbxMesh.name + "_wc"; } var welded = Uv0Analyzer.UvEdgeWeld(e.originalMesh); @@ -1573,7 +1573,7 @@ void ExecSymmetrySplit(bool includeTargets, float separationThreshold = 0.10f) if (!e.include || e.lodIndex != ctx.SourceLodIndex) continue; if (e.originalMesh == e.fbxMesh) { - e.originalMesh = UvCanvasView.MakeReadableCopy(e.fbxMesh); + e.originalMesh = MeshAccess.ReadableCopy(e.fbxMesh); e.originalMesh.name = e.fbxMesh.name + "_wc"; } var uv0 = e.originalMesh.uv; @@ -1599,7 +1599,7 @@ void ExecSymmetrySplit(bool includeTargets, float separationThreshold = 0.10f) if (!e.include || e.lodIndex == ctx.SourceLodIndex) continue; if (e.originalMesh == e.fbxMesh) { - e.originalMesh = UvCanvasView.MakeReadableCopy(e.fbxMesh); + e.originalMesh = MeshAccess.ReadableCopy(e.fbxMesh); e.originalMesh.name = e.fbxMesh.name + "_wc"; } var uv0 = e.originalMesh.uv; @@ -2929,7 +2929,7 @@ async Task ExecTransferLodImpl(int tLod, bool useAsync) if (UvProgress.CancelRequested) break; if (tgt.originalMesh == tgt.fbxMesh) { - tgt.originalMesh = UvCanvasView.MakeReadableCopy(tgt.fbxMesh); + tgt.originalMesh = MeshAccess.ReadableCopy(tgt.fbxMesh); tgt.originalMesh.name = tgt.fbxMesh.name + "_wc"; } @@ -5429,36 +5429,7 @@ static void DestroyTempMeshes(List meshes) /// changing the visual result. Handles vertices, normals, and tangents. /// static void BakeTransformIntoMesh(Mesh mesh, Transform t) - { - if (mesh == null || !mesh.isReadable) return; - - var localMatrix = Matrix4x4.TRS(t.localPosition, t.localRotation, t.localScale); - var verts = mesh.vertices; - var normals = mesh.normals; - - for (int i = 0; i < verts.Length; i++) - { - verts[i] = localMatrix.MultiplyPoint3x4(verts[i]); - if (normals != null && i < normals.Length) - normals[i] = localMatrix.MultiplyVector(normals[i]).normalized; - } - mesh.SetVertices(verts); - if (normals != null && normals.Length > 0) - mesh.SetNormals(normals); - - var tangents = mesh.tangents; - if (tangents != null && tangents.Length > 0) - { - for (int i = 0; i < tangents.Length; i++) - { - Vector3 tVec = localMatrix.MultiplyVector( - new Vector3(tangents[i].x, tangents[i].y, tangents[i].z)).normalized; - tangents[i] = new Vector4(tVec.x, tVec.y, tVec.z, tangents[i].w); - } - mesh.tangents = tangents; - } - mesh.RecalculateBounds(); - } + => MeshTransform.BakeMatrix(mesh, Matrix4x4.TRS(t.localPosition, t.localRotation, t.localScale)); /// /// After FBX reimport, re-link scene MeshFilter/MeshCollider/SkinnedMeshRenderer @@ -6336,20 +6307,7 @@ bool TryRaycastPreview(Ray ray, out SceneHit bestHit) return found; } - static Bounds TransformBounds(Bounds b, Matrix4x4 m) - { - Vector3 c = b.center, e = b.extents; - Vector3 mn = new Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity); - Vector3 mx = new Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity); - for (int ix = -1; ix <= 1; ix += 2) - for (int iy = -1; iy <= 1; iy += 2) - for (int iz = -1; iz <= 1; iz += 2) - { - Vector3 w = m.MultiplyPoint3x4(c + Vector3.Scale(e, new Vector3(ix, iy, iz))); - mn = Vector3.Min(mn, w); mx = Vector3.Max(mx, w); - } - return new Bounds((mn + mx) * 0.5f, mx - mn); - } + static Bounds TransformBounds(Bounds b, Matrix4x4 m) => MeshGeometry.TransformBounds(b, m); static bool RayTriMT(Ray ray, Vector3 v0, Vector3 v1, Vector3 v2, out float t, out float u, out float v) { diff --git a/Editor/Tools/PrefabBuilderTool.cs b/Editor/Tools/PrefabBuilderTool.cs index 91a995a0..e292375d 100644 --- a/Editor/Tools/PrefabBuilderTool.cs +++ b/Editor/Tools/PrefabBuilderTool.cs @@ -773,31 +773,7 @@ static void BakeMatrixIntoMesh(MeshFilter mf, Matrix4x4 matrix) Undo.RecordObject(mf, "Bake Transform"); mf.sharedMesh = mesh; } - - var verts = mesh.vertices; - var normals = mesh.normals; - for (int i = 0; i < verts.Length; i++) - { - verts[i] = matrix.MultiplyPoint3x4(verts[i]); - if (normals != null && i < normals.Length) - normals[i] = matrix.MultiplyVector(normals[i]).normalized; - } - mesh.SetVertices(verts); - if (normals != null && normals.Length > 0) - mesh.SetNormals(normals); - - var tangents = mesh.tangents; - if (tangents != null && tangents.Length > 0) - { - for (int i = 0; i < tangents.Length; i++) - { - Vector3 tVec = matrix.MultiplyVector( - new Vector3(tangents[i].x, tangents[i].y, tangents[i].z)).normalized; - tangents[i] = new Vector4(tVec.x, tVec.y, tVec.z, tangents[i].w); - } - mesh.tangents = tangents; - } - mesh.RecalculateBounds(); + MeshTransform.BakeMatrix(mesh, matrix); } void RebuildLodGroupFromNames() diff --git a/Editor/Tools/VertexColorBakingTool.cs b/Editor/Tools/VertexColorBakingTool.cs index c73e23a4..6e45c7c3 100644 --- a/Editor/Tools/VertexColorBakingTool.cs +++ b/Editor/Tools/VertexColorBakingTool.cs @@ -1753,25 +1753,7 @@ static Vector3 GetMeshWorldAnchor(Mesh mesh, Matrix4x4 matrix) return matrix.MultiplyPoint3x4(mesh.bounds.center); } - static Bounds TransformBounds(Bounds localBounds, Matrix4x4 matrix) - { - var corners = new[] - { - new Vector3(localBounds.min.x, localBounds.min.y, localBounds.min.z), - new Vector3(localBounds.max.x, localBounds.min.y, localBounds.min.z), - new Vector3(localBounds.min.x, localBounds.max.y, localBounds.min.z), - new Vector3(localBounds.max.x, localBounds.max.y, localBounds.min.z), - new Vector3(localBounds.min.x, localBounds.min.y, localBounds.max.z), - new Vector3(localBounds.max.x, localBounds.min.y, localBounds.max.z), - new Vector3(localBounds.min.x, localBounds.max.y, localBounds.max.z), - new Vector3(localBounds.max.x, localBounds.max.y, localBounds.max.z) - }; - - Bounds worldBounds = new Bounds(matrix.MultiplyPoint3x4(corners[0]), Vector3.zero); - for (int i = 1; i < corners.Length; i++) - worldBounds.Encapsulate(matrix.MultiplyPoint3x4(corners[i])); - return worldBounds; - } + static Bounds TransformBounds(Bounds localBounds, Matrix4x4 matrix) => MeshGeometry.TransformBounds(localBounds, matrix); static bool IsWithinOccluderRange( Bounds targetBounds, @@ -1814,13 +1796,7 @@ static bool IsWithinOccluderRange( return false; } - static float BoundsDistance(Bounds a, Bounds b) - { - float dx = Mathf.Max(0f, Mathf.Max(a.min.x - b.max.x, b.min.x - a.max.x)); - float dy = Mathf.Max(0f, Mathf.Max(a.min.y - b.max.y, b.min.y - a.max.y)); - float dz = Mathf.Max(0f, Mathf.Max(a.min.z - b.max.z, b.min.z - a.max.z)); - return Mathf.Sqrt(dx * dx + dy * dy + dz * dz); - } + static float BoundsDistance(Bounds a, Bounds b) => MeshGeometry.BoundsDistance(a, b); void StoreBatchStats(List batches) { diff --git a/Editor/VertexAOBaker.cs b/Editor/VertexAOBaker.cs index 12001e25..590f0ed2 100644 --- a/Editor/VertexAOBaker.cs +++ b/Editor/VertexAOBaker.cs @@ -386,38 +386,9 @@ static float ComputeMedianTriArea(Vector3[] verts, int[] tris, Matrix4x4 xform) /// Returns a readable copy of the mesh if needed. /// Caller must DestroyImmediate the copy when done (if copy != original). /// - static Mesh EnsureReadable(Mesh mesh) - { - if (mesh.isReadable) return mesh; - var copy = UnityEngine.Object.Instantiate(mesh); - copy.hideFlags = HideFlags.HideAndDontSave; - return copy; - } + static Mesh EnsureReadable(Mesh mesh) => MeshAccess.Readable(mesh, out _); - static Bounds ComputeCombinedBounds(List<(Mesh mesh, Matrix4x4 transform)> meshes) - { - var bounds = new Bounds(); - bool first = true; - foreach (var (mesh, xform) in meshes) - { - var mb = mesh.bounds; - var corners = new Vector3[8]; - corners[0] = xform.MultiplyPoint3x4(new Vector3(mb.min.x, mb.min.y, mb.min.z)); - corners[1] = xform.MultiplyPoint3x4(new Vector3(mb.max.x, mb.min.y, mb.min.z)); - corners[2] = xform.MultiplyPoint3x4(new Vector3(mb.min.x, mb.max.y, mb.min.z)); - corners[3] = xform.MultiplyPoint3x4(new Vector3(mb.max.x, mb.max.y, mb.min.z)); - corners[4] = xform.MultiplyPoint3x4(new Vector3(mb.min.x, mb.min.y, mb.max.z)); - corners[5] = xform.MultiplyPoint3x4(new Vector3(mb.max.x, mb.min.y, mb.max.z)); - corners[6] = xform.MultiplyPoint3x4(new Vector3(mb.min.x, mb.max.y, mb.max.z)); - corners[7] = xform.MultiplyPoint3x4(new Vector3(mb.max.x, mb.max.y, mb.max.z)); - foreach (var c in corners) - { - if (first) { bounds = new Bounds(c, Vector3.zero); first = false; } - else bounds.Encapsulate(c); - } - } - return bounds; - } + static Bounds ComputeCombinedBounds(List<(Mesh mesh, Matrix4x4 transform)> meshes) => MeshTransform.CombinedBounds(meshes); static void AppendGeometryBuffers( List<(Mesh mesh, Matrix4x4 transform)> meshes, diff --git a/Tests/Editor/RemeshBakeTests.cs b/Tests/Editor/RemeshBakeTests.cs index 76354bc0..c8894ad2 100644 --- a/Tests/Editor/RemeshBakeTests.cs +++ b/Tests/Editor/RemeshBakeTests.cs @@ -146,6 +146,13 @@ public void MeshGeometryHelpersAgreeWithTheirDefinitions() Assert.That(sum.magnitude, Is.LessThan(2f), "evenly spread: the directions nearly cancel"); Assert.That(MeshGeometry.SqDistToAabb(new Vector3(2,0,0), Vector3.zero, Vector3.one), Is.EqualTo(1f).Within(1e-6f)); Assert.AreEqual(0f, MeshGeometry.SqDistToAabb(new Vector3(0.5f,0.5f,0.5f), Vector3.zero, Vector3.one)); + // A box carried through a 90° yaw and a translation stays axis-aligned and the right size. + var yaw90 = new Matrix4x4(new Vector4(0, 0, -1, 0), new Vector4(0, 1, 0, 0), new Vector4(1, 0, 0, 0), new Vector4(10, 0, 0, 1)); + var yawed = MeshGeometry.TransformBounds(new Bounds(Vector3.zero, new Vector3(2, 1, 4)), yaw90); + Assert.That((yawed.center - new Vector3(10, 0, 0)).magnitude, Is.LessThan(1e-4f)); + Assert.That((yawed.size - new Vector3(4, 1, 2)).magnitude, Is.LessThan(1e-4f)); + Assert.That(MeshGeometry.BoundsDistance(new Bounds(Vector3.zero, Vector3.one), new Bounds(new Vector3(3, 0, 0), Vector3.one)), Is.EqualTo(2f).Within(1e-6f)); + Assert.AreEqual(0f, MeshGeometry.BoundsDistance(new Bounds(Vector3.zero, Vector3.one), new Bounds(new Vector3(0.5f, 0, 0), Vector3.one))); } [Test] public void MaterialChannelsRemainSeparateAndEmissionRetainsHdr() From 5d2e1c65e02d3f05c796bbf9788f79bb2bd93866 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:20:01 +0000 Subject: [PATCH 091/130] refactor(assets): FbxExport and SidecarStore, the FBX pipeline and sidecar out of the transfer tab The transfer tool carried the whole FBX pipeline as private methods on the tab (the export mesh of an entry, the UV channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, collision injection and strip, the relink after reimport, the sidecar reads and writes), the sidecar asset was opened by hand in six places, the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab and the renderer settings copy existed three times. Editor/Assets/FbxExport.cs holds the mechanics (BuildExportMesh, WriteChannels, Write, WriteAtomic, the hierarchy passes, the relink, the preflight, the UV channel helpers); Editor/Assets/SidecarStore.cs the sidecar (load/create/save, FbxPaths, entries, transient replay, collision meshes with validation, tool settings); Editor/Mesh/RendererSettings.cs the one renderer copy. The transfer tool keeps the policy (dialogs, backups, importer lock, which entries, what to refresh); the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly. The wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path always did. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 1 + Documentation~/EXPERIMENTS.md | 2 +- Documentation~/FBX_EXPORT_MODERNIZATION.md | 5 + Documentation~/FBX_PIPELINE_CHECKLIST.md | 2 +- Editor/Assets.meta | 8 + Editor/Assets/FbxExport.cs | 1355 ++++++++++++ Editor/Assets/FbxExport.cs.meta | 11 + Editor/Assets/SidecarStore.cs | 490 +++++ Editor/Assets/SidecarStore.cs.meta | 11 + Editor/Framework/UvToolHub.cs | 51 +- Editor/LodPipelineOps.cs | 2 +- Editor/Mesh/MeshSplitMerge.cs | 14 +- Editor/Mesh/RendererSettings.cs | 56 + Editor/Mesh/RendererSettings.cs.meta | 11 + Editor/RemeshExporter.cs | 11 +- Editor/Tools/CollisionMeshTool.cs | 151 +- Editor/Tools/LightmapTransferTool.cs | 2257 ++------------------ Editor/Tools/VertexColorBakingTool.cs | 2 +- Tests/Editor/FbxExportTests.cs | 279 +++ Tests/Editor/FbxExportTests.cs.meta | 11 + 21 files changed, 2441 insertions(+), 2290 deletions(-) create mode 100644 Editor/Assets.meta create mode 100644 Editor/Assets/FbxExport.cs create mode 100644 Editor/Assets/FbxExport.cs.meta create mode 100644 Editor/Assets/SidecarStore.cs create mode 100644 Editor/Assets/SidecarStore.cs.meta create mode 100644 Editor/Mesh/RendererSettings.cs create mode 100644 Editor/Mesh/RendererSettings.cs.meta create mode 100644 Tests/Editor/FbxExportTests.cs create mode 100644 Tests/Editor/FbxExportTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f6f667f..688681a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. - **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. - **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. - **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). diff --git a/CLAUDE.md b/CLAUDE.md index df01454f..7198b5bb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,6 +32,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **Context:** `Editor/Framework/UvToolContext.cs` — shared state - **Tools:** `Editor/Tools/` — each implements `IUvTool` - **Geometry:** `Editor/Geometry/` — `MeshGeometry` (face normals, welding, sample directions, barycentrics) and `GpuReadback` (the one GPU → CPU texture read); spatial queries in `Editor/TriangleBvh.cs` / `TriangleBvh2D.cs`. Use these; never add a tool-local copy +- **Assets:** `Editor/Assets/` — `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves - **Native:** `Plugins/` binaries, `Native~/` C++ source - **Sidecar:** `Uv2DataAsset` persists UV2/collision data alongside FBX diff --git a/Documentation~/EXPERIMENTS.md b/Documentation~/EXPERIMENTS.md index 3bfd25c3..96007bfb 100644 --- a/Documentation~/EXPERIMENTS.md +++ b/Documentation~/EXPERIMENTS.md @@ -309,7 +309,7 @@ ### Sidecar collision entries — не удалять при FBX overwrite - Старый код удалял весь sidecar (включая collision entries) после overwrite. - При повторном экспорте collision meshes были недоступны (non-readable FBX sub-assets). -- **Решение**: `ClearUv2EntriesForFbxPaths()` — удаляет только UV2 entries, сохраняет collision entries. +- **Решение**: `SidecarStore.ClearUv2Entries()` — удаляет только UV2 entries, сохраняет collision entries. ### Convex hull triangle indices — глобальный offset - `SaveToSidecar()` хранит triangle indices как flattened array. Для multi-hull convex decomposition индексы должны быть rebased к глобальному vertex offset. diff --git a/Documentation~/FBX_EXPORT_MODERNIZATION.md b/Documentation~/FBX_EXPORT_MODERNIZATION.md index d16927b1..57d75bab 100644 --- a/Documentation~/FBX_EXPORT_MODERNIZATION.md +++ b/Documentation~/FBX_EXPORT_MODERNIZATION.md @@ -16,6 +16,11 @@ both pipelines (sidecar on/off) and .meta file semantics. ## Current export flow (as of PR #75) +> The mechanics named below have since moved out of the tool: the hierarchy passes, +> the export mesh, the write and the relink are `Editor/Assets/FbxExport.cs`, the +> sidecar reads and writes are `Editor/Assets/SidecarStore.cs`; `LightmapTransferTool` +> keeps the dialogs, backups, importer lock and sequencing described here. + `LightmapTransferTool.cs:908-1284` `ExportFbx(bool overwriteSource)`: 1. Find source FBX path via `ctx.MeshEntries[*].fbxMesh` asset path or diff --git a/Documentation~/FBX_PIPELINE_CHECKLIST.md b/Documentation~/FBX_PIPELINE_CHECKLIST.md index e9317994..a460beac 100644 --- a/Documentation~/FBX_PIPELINE_CHECKLIST.md +++ b/Documentation~/FBX_PIPELINE_CHECKLIST.md @@ -321,7 +321,7 @@ imported with `keepQuads = true`: just-written quad FBX on the next import. * **Variant exports** (`ExportVertexColorsToFbxAs`) — the source importer must end the export unchanged, so `keepQuads` is toggled on only for the - clone reimport and restored by `ImporterRestoreScope` at method exit — + clone reimport and restored by `FbxExport.ImporterRestoreScope` at method exit — success, every early return and failure alike, a throwing Phase 1 reimport included: the scope is created before Phase 1 and told about each change before the reimport that applies it (the same scope puts `isReadable` back diff --git a/Editor/Assets.meta b/Editor/Assets.meta new file mode 100644 index 00000000..404251e3 --- /dev/null +++ b/Editor/Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3603a9b235147d2b0cdfbada6f91406 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Assets/FbxExport.cs b/Editor/Assets/FbxExport.cs new file mode 100644 index 00000000..db9b4da1 --- /dev/null +++ b/Editor/Assets/FbxExport.cs @@ -0,0 +1,1355 @@ +// FbxExport.cs — the mechanics of re-saving an FBX from Mesh Lab: the export mesh for +// an entry (result geometry, the source's UV channels, the AO component, matched +// tangents), the isolated channel re-save (snapshot the intended channels, clone the +// FBX prefab, write only those, atomic file replace), the LOD-rebuild hierarchy pieces +// (mesh replacement by name, new LOD children, stale-child pruning, hierarchy +// normalisation, collision injection and stripping, material trims), the write itself +// and the post-reimport scene relink. Tools keep the policy — dialogs, backups, +// importer locks, which entries, what to refresh — and call these. +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace SashaRX.UnityMeshLab +{ + internal static class FbxExport + { + // ───────────────────────────────────────────────────────────────── + // Names + // ───────────────────────────────────────────────────────────────── + + /// + /// The FBX node name an entry exports under: the FBX sub-asset's name, else the + /// working mesh's, else the result's, else the renderer's; transient preview names + /// ("Hidden/…") fall through to the renderer. "Mesh" when nothing is named. + /// + internal static string ResolveExportMeshName(MeshEntry entry, Mesh resultMesh) + { + if (entry?.fbxMesh != null && !string.IsNullOrEmpty(entry.fbxMesh.name)) + return entry.fbxMesh.name; + + string fallback = entry?.originalMesh != null ? entry.originalMesh.name : null; + if (string.IsNullOrEmpty(fallback) && resultMesh != null) + fallback = resultMesh.name; + + if (!string.IsNullOrEmpty(fallback) && + (fallback.StartsWith("Hidden/", StringComparison.OrdinalIgnoreCase) || + fallback.StartsWith("Hidden_", StringComparison.OrdinalIgnoreCase))) + { + if (entry?.renderer != null && !string.IsNullOrEmpty(entry.renderer.name)) + return entry.renderer.name; + } + + if (!string.IsNullOrEmpty(fallback)) return fallback; + if (entry?.renderer != null && !string.IsNullOrEmpty(entry.renderer.name)) return entry.renderer.name; + return "Mesh"; + } + + /// + /// A mesh name a DCC round-trip left behind (`Scene`, `Geometry`, `Default`, `Mesh`, + /// `Combined Mesh…`) or no name at all. + /// + internal static bool IsGenericMeshName(string name) + { + if (string.IsNullOrEmpty(name)) return true; + switch (name) + { + case "Scene": + case "Geometry": + case "Default": + case "Mesh": + case "Combined Mesh": + return true; + default: + return name.StartsWith("Combined Mesh", StringComparison.Ordinal); + } + } + + /// A material name an importer invents (`Lit`, `Default`, `No Name`…) or no name at all. + internal static bool IsPlaceholderMaterialName(string name) + { + if (string.IsNullOrEmpty(name)) return true; + switch (name) + { + case "Lit": + case "Default": + case "Material": + case "DefaultMaterial": + case "Default-Material": + case "No Name": + return true; + default: + return false; + } + } + + // ───────────────────────────────────────────────────────────────── + // UV channels + // ───────────────────────────────────────────────────────────────── + + /// + /// Copies the UV channels lacks from + /// (same vertex count required). A 2D channel that is + /// all zeros is not worth carrying; existing channels are never overwritten. + /// + internal static void PreserveUvChannels(Mesh exportMesh, Mesh sourceMesh) + { + if (exportMesh == null || sourceMesh == null) return; + if (sourceMesh.vertexCount != exportMesh.vertexCount) return; + for (int ch = 0; ch < 8; ch++) + { + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); + if (exportMesh.HasVertexAttribute(attr)) continue; + if (!sourceMesh.HasVertexAttribute(attr)) continue; + + int dim = sourceMesh.GetVertexAttributeDimension(attr); + if (dim <= 2) + { + var uv = new List(); + sourceMesh.GetUVs(ch, uv); + if (uv.Count == 0) continue; + bool allZero = true; + for (int i = 0; i < uv.Count; i++) + if (uv[i].x != 0f || uv[i].y != 0f) { allZero = false; break; } + if (allZero) continue; + exportMesh.SetUVs(ch, uv); + } + else if (dim == 3) + { + var uv = new List(); + sourceMesh.GetUVs(ch, uv); + if (uv.Count > 0) exportMesh.SetUVs(ch, uv); + } + else + { + var uv = new List(); + sourceMesh.GetUVs(ch, uv); + if (uv.Count > 0) exportMesh.SetUVs(ch, uv); + } + } + } + + /// Replaces UV channel of with the source's, at the source's width. + internal static void OverwriteUvChannel(Mesh exportMesh, Mesh sourceMesh, int channel) + { + if (exportMesh == null || sourceMesh == null) return; + if (channel < 0 || channel > 7) return; + if (sourceMesh.vertexCount != exportMesh.vertexCount) return; + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + channel); + if (!sourceMesh.HasVertexAttribute(attr)) return; + + int dim = sourceMesh.GetVertexAttributeDimension(attr); + if (dim <= 2) + { + var uv = new List(); + sourceMesh.GetUVs(channel, uv); + if (uv.Count == exportMesh.vertexCount) exportMesh.SetUVs(channel, uv); + } + else if (dim == 3) + { + var uv = new List(); + sourceMesh.GetUVs(channel, uv); + if (uv.Count == exportMesh.vertexCount) exportMesh.SetUVs(channel, uv); + } + else + { + var uv = new List(); + sourceMesh.GetUVs(channel, uv); + if (uv.Count == exportMesh.vertexCount) exportMesh.SetUVs(channel, uv); + } + } + + /// + /// Writes one component (0 = X, 1 = Y) of the donor's UV channel into the export + /// mesh's, keeping the other component. A missing export channel starts as the donor's. + /// + internal static void MergeUvComponentFromDonor(Mesh exportMesh, Mesh donorMesh, int uvChannel, int uvComponent) + { + if (exportMesh == null || donorMesh == null) return; + if (exportMesh.vertexCount != donorMesh.vertexCount) return; + if (uvChannel < 0 || uvChannel > 7) return; + if (uvComponent < 0 || uvComponent > 1) return; + + var donorUv = new List(); + donorMesh.GetUVs(uvChannel, donorUv); + if (donorUv.Count != exportMesh.vertexCount) return; + + var exportUv = new List(); + exportMesh.GetUVs(uvChannel, exportUv); + if (exportUv.Count != exportMesh.vertexCount) + exportUv = new List(donorUv); + + for (int i = 0; i < exportUv.Count; i++) + { + var src = donorUv[i]; + var dst = exportUv[i]; + exportUv[i] = uvComponent == 0 ? new Vector2(src.x, dst.y) : new Vector2(dst.x, src.y); + } + exportMesh.SetUVs(uvChannel, exportUv); + } + + /// True when the mesh carries UV channel for every vertex. + internal static bool HasUvChannelData(Mesh mesh, int channel) + { + if (mesh == null || channel < 0 || channel > 7) return false; + var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + channel); + if (!mesh.HasVertexAttribute(attr)) return false; + + int dim = mesh.GetVertexAttributeDimension(attr); + int vCount = mesh.vertexCount; + if (dim <= 2) + { + var uv = new List(); + mesh.GetUVs(channel, uv); + return uv.Count == vCount; + } + if (dim == 3) + { + var uv = new List(); + mesh.GetUVs(channel, uv); + return uv.Count == vCount; + } + var uv4 = new List(); + mesh.GetUVs(channel, uv4); + return uv4.Count == vCount; + } + + /// + /// The mesh of an entry that carries UV channel : AO + /// is written on the working or FBX mesh, so those come first and the transfer + /// result last (its UV1 stays authoritative while AO comes from the donor). + /// + internal static Mesh SelectUvDonor(MeshEntry entry, Mesh resultMesh, int uvChannel) + { + var candidates = new[] { entry?.originalMesh, entry?.fbxMesh, entry?.repackedMesh, entry?.transferredMesh, resultMesh }; + for (int i = 0; i < candidates.Length; i++) + if (HasUvChannelData(candidates[i], uvChannel)) return candidates[i]; + return null; + } + + // ───────────────────────────────────────────────────────────────── + // The export mesh of one entry + // ───────────────────────────────────────────────────────────────── + + /// + /// The temporary mesh written for an entry: a copy of + /// named , with the UV channels of the FBX mesh + /// and then the working mesh carried over, UV1 taken from the working mesh when the + /// entry has no repack or transfer result, the AO component merged from the best + /// donor, and tangents matched to the FBX import. Added to ; + /// the caller destroys it after the write. + /// + internal static Mesh BuildExportMesh(MeshEntry entry, Mesh resultMesh, SidecarStore.AoUvTarget ao, List tempSink) + { + if (tempSink == null) throw new ArgumentNullException(nameof(tempSink)); + var exportMesh = Object.Instantiate(resultMesh); + tempSink.Add(exportMesh); + // Without an explicit name, Object.Instantiate produces "X(Clone)" and Unity's + // FBX Exporter falls back to the FBX scene name ("Scene") when writing the + // FbxMesh node — every reimported mesh ends up named "Scene". Pin the canonical + // name now so the FBX node and post-reimport mesh asset stay aligned. + exportMesh.name = ResolveExportMeshName(entry, resultMesh); + + // UV channels from fbxMesh first (base UVs), then from originalMesh (has AO + // and other tool modifications). + if (entry.fbxMesh != null) + PreserveUvChannels(exportMesh, entry.fbxMesh); + if (entry.originalMesh != null && entry.originalMesh != entry.fbxMesh) + { + PreserveUvChannels(exportMesh, entry.originalMesh); + // Only overwrite UV1 from originalMesh when there is no repack/transfer + // result — otherwise the repacked lightmap UV in channel 1 takes priority. + if (entry.repackedMesh == null && entry.transferredMesh == null) + OverwriteUvChannel(exportMesh, entry.originalMesh, 1); + } + // AO often lives in a UV component. Source meshes may not have that channel + // at all, so pick the best available donor. + if (ao.IsSet) + { + var donor = SelectUvDonor(entry, resultMesh, ao.channel); + if (donor != null) + MergeUvComponentFromDonor(exportMesh, donor, ao.channel, ao.component); + } + TangentValidator.EnforceTangentsMatchOriginal(exportMesh, entry.fbxMesh, "FBX Export"); + return exportMesh; + } + + // ───────────────────────────────────────────────────────────────── + // Which FBX + // ───────────────────────────────────────────────────────────────── + + /// + /// The FBX the entries came from: the first entry's FBX sub-asset path, else the + /// FBX behind the LODGroup's prefab source or one of its renderers, else + /// . Null when nothing resolves. + /// + internal static string ResolveSourceFbxPath(IEnumerable entries, LODGroup lodGroup, string fallback) + { + if (entries != null) + { + foreach (var e in entries) + { + if (e?.fbxMesh == null) continue; + string p = AssetDatabase.GetAssetPath(e.fbxMesh); + if (SidecarStore.IsFbxPath(p)) return p; + } + } + if (lodGroup != null) + { + var prefabSrc = PrefabUtility.GetCorrespondingObjectFromSource(lodGroup.gameObject); + if (prefabSrc != null) + { + string p = AssetDatabase.GetAssetPath(prefabSrc); + if (SidecarStore.IsFbxPath(p)) return p; + } + foreach (var r in lodGroup.GetComponentsInChildren(true)) + { + var rSrc = PrefabUtility.GetCorrespondingObjectFromSource(r); + if (rSrc == null) continue; + string p = AssetDatabase.GetAssetPath(rSrc); + if (SidecarStore.IsFbxPath(p)) return p; + } + } + return string.IsNullOrEmpty(fallback) ? null : fallback; + } + + /// + /// The included entries with a result, grouped by the FBX they export into: the + /// entry's own FBX when it has one, else (generated + /// LODs live in `.asset` files). Entries with neither are left out. + /// + internal static Dictionary> GroupByFbx( + IEnumerable entries, Func resultMeshOf, string sourceFbxPath) + { + var groups = new Dictionary>(); + if (entries == null) return groups; + foreach (var e in entries) + { + if (e == null || !e.include) continue; + Mesh resultMesh = resultMeshOf(e); + if (resultMesh == null) continue; + Mesh pathMesh = e.fbxMesh ?? e.originalMesh; + string fbxPath = pathMesh != null ? AssetDatabase.GetAssetPath(pathMesh) : null; + if (!SidecarStore.IsFbxPath(fbxPath)) fbxPath = sourceFbxPath; + if (string.IsNullOrEmpty(fbxPath)) continue; + if (!groups.TryGetValue(fbxPath, out var list)) + groups[fbxPath] = list = new List<(MeshEntry, Mesh)>(); + list.Add((e, resultMesh)); + } + return groups; + } + + /// The first entry material that is not a preview shader; the collision nodes' material. + internal static Material FirstRealMaterial(IEnumerable entries) + { + if (entries == null) return null; + foreach (var e in entries) + { + var mat = e?.renderer != null ? e.renderer.sharedMaterial : null; + if (mat != null && !CheckerTexturePreview.IsPreviewShader(mat.shader.name)) return mat; + } + return null; + } + + // ───────────────────────────────────────────────────────────────── + // Isolated-channel re-save (per FbxExportIntent) + // + // Re-saves the source FBX overwriting only the per-vertex channels listed in the + // intent. All other data — node names, hierarchy, transforms, material + // assignments, untouched UV channels, vertex colors, normals, tangents — is + // inherited from the source FBX asset on disk via clone-and-snapshot. + // ───────────────────────────────────────────────────────────────── + + internal sealed class Snapshot + { + public int vertexCount; + public Color32[] colors32; + public Color[] colors; + public Vector3[] normals; + public Vector4[] tangents; + public readonly Vector2[][] uvs = new Vector2[8][]; + } + + /// The channels of the intent covers, captured before any reimport. + internal static Snapshot BuildSnapshot(Mesh source, FbxExportIntent intent) + { + var snap = new Snapshot { vertexCount = source.vertexCount }; + if ((intent & FbxExportIntent.VertexColors) != 0) + { + var c32 = source.colors32; + if (c32 != null && c32.Length == source.vertexCount) + snap.colors32 = c32; + else + { + var c = source.colors; + if (c != null && c.Length == source.vertexCount) snap.colors = c; + } + } + if ((intent & FbxExportIntent.Normals) != 0) + { + var n = source.normals; + if (n != null && n.Length == source.vertexCount) snap.normals = n; + } + if ((intent & FbxExportIntent.Tangents) != 0) + { + var t = source.tangents; + if (t != null && t.Length == source.vertexCount) snap.tangents = t; + } + for (int ch = 0; ch < 8; ch++) + { + if (!intent.IncludesUv(ch)) continue; + var list = new List(); + source.GetUVs(ch, list); + if (list.Count == source.vertexCount) snap.uvs[ch] = list.ToArray(); + } + return snap; + } + + /// + /// Writes the snapshots onto fresh copies of the clone's meshes (matched by + /// sub-asset name; the live FBX sub-assets are never mutated). Every copy goes to + /// . Returns the number of channel updates. + /// + internal static int CopySnapshotsToClone(GameObject tempRoot, Dictionary snapshots, List tempSink) + { + if (tempSink == null) throw new ArgumentNullException(nameof(tempSink)); + if (snapshots == null) return 0; + int updated = 0, visited = 0, matched = 0; + foreach (var cloneMf in tempRoot.GetComponentsInChildren(true)) + { + if (cloneMf == null || cloneMf.sharedMesh == null) continue; + visited++; + if (!snapshots.TryGetValue(cloneMf.sharedMesh.name, out var snap)) continue; + matched++; + + if (snap.vertexCount != cloneMf.sharedMesh.vertexCount) + { + UvtLog.Warn($"[FBX Export] Skip '{cloneMf.sharedMesh.name}': vertex-count mismatch " + + $"(authored={snap.vertexCount}, FBX clone={cloneMf.sharedMesh.vertexCount}). " + + "The source FBX re-imports at a different vertex count than the tool worked on — " + + "usually 'Generate Lightmap UVs' splitting vertices. Disable it on the model " + + "importer and re-run the tool."); + continue; + } + + var cloneMesh = Object.Instantiate(cloneMf.sharedMesh); + cloneMesh.name = cloneMf.sharedMesh.name; + tempSink.Add(cloneMesh); + + if (snap.colors32 != null) { cloneMesh.colors32 = snap.colors32; updated++; } + else if (snap.colors != null) { cloneMesh.colors = snap.colors; updated++; } + if (snap.normals != null) { cloneMesh.normals = snap.normals; updated++; } + if (snap.tangents != null) { cloneMesh.tangents = snap.tangents; updated++; } + for (int ch = 0; ch < 8; ch++) + { + if (snap.uvs[ch] == null || snap.uvs[ch].Length != cloneMesh.vertexCount) continue; + cloneMesh.SetUVs(ch, snap.uvs[ch]); + updated++; + } + cloneMf.sharedMesh = cloneMesh; + } + UvtLog.Verbose($"[FBX Export] CopySnapshotsToClone: visited={visited}, matched={matched}, updates={updated}."); + return updated; + } + + /// + /// Puts a source ModelImporter back to the state the export found it in; a no-op + /// when nothing was changed. Created before the importer is touched and told about + /// each change before the reimport that applies it, so a throwing reimport is + /// covered too. Disposed at the export's exit whichever way it leaves. + /// + internal sealed class ImporterRestoreScope : IDisposable + { + readonly string path; + ModelImporter importer; + bool readable, quads; + + public ImporterRestoreScope(string path) { this.path = path; } + + /// isReadable was flipped on for the export; put it back off. + public void RestoreReadable(ModelImporter source) { importer = source; readable = true; } + /// keepQuads was toggled on for the export; put it back off. + public void RestoreQuads(ModelImporter source) { importer = source; quads = true; } + + public void Dispose() + { + if (importer == null || (!readable && !quads)) return; + if (readable) importer.isReadable = false; + if (quads) importer.keepQuads = false; + Uv2AssetPostprocessor.bypassPaths.Add(path); + importer.SaveAndReimport(); + } + } + + /// + /// Soft pre-export checks on the cloned hierarchy against the FBX pipeline + /// checklist: generic or invalid node and mesh names, placeholder materials, vertex + /// colours outside [0,1] (when the intent writes them), negative-determinant + /// scales. Every finding is a warning; none blocks the export. + /// + internal static void RunPreflight(GameObject tempRoot, FbxExportIntent intent, Dictionary snapshots) + { + if (tempRoot == null) return; + + int badNodeNames = 0, badMeshNames = 0; + foreach (var t in tempRoot.GetComponentsInChildren(true)) + if (string.IsNullOrEmpty(t.name) || MeshHygieneUtility.HasInvalidChars(t.name)) badNodeNames++; + foreach (var mf in tempRoot.GetComponentsInChildren(true)) + if (mf.sharedMesh != null && IsGenericMeshName(mf.sharedMesh.name)) badMeshNames++; + foreach (var smr in tempRoot.GetComponentsInChildren(true)) + if (smr.sharedMesh != null && IsGenericMeshName(smr.sharedMesh.name)) badMeshNames++; + if (badNodeNames > 0) + UvtLog.Warn($"[FBX Preflight] {badNodeNames} node name(s) are empty or contain invalid characters (see §5.5/§8)."); + if (badMeshNames > 0) + UvtLog.Warn($"[FBX Preflight] {badMeshNames} mesh(es) have a generic name (Scene/Geometry/Default/empty); see §5.5."); + + int placeholderMats = 0; + foreach (var mr in tempRoot.GetComponentsInChildren(true)) + { + var mats = mr.sharedMaterials; + if (mats == null) continue; + foreach (var mat in mats) + if (mat == null || IsPlaceholderMaterialName(mat.name)) placeholderMats++; + } + if (placeholderMats > 0) + UvtLog.Warn($"[FBX Preflight] {placeholderMats} placeholder material slot(s) (Lit/Default/null); see §1.5."); + + if ((intent & FbxExportIntent.VertexColors) != 0 && snapshots != null) + { + int outOfRangeMeshes = 0; + foreach (var snap in snapshots.Values) + { + var c = snap.colors; + if (c == null) continue; // colors32 is byte-clamped by definition + for (int i = 0; i < c.Length; i++) + { + var v = c[i]; + if (v.r < 0f || v.r > 1f || v.g < 0f || v.g > 1f || v.b < 0f || v.b > 1f || v.a < 0f || v.a > 1f) + { outOfRangeMeshes++; break; } + } + } + if (outOfRangeMeshes > 0) + UvtLog.Warn($"[FBX Preflight] {outOfRangeMeshes} mesh(es) have vertex colors outside [0,1]; see §4.2."); + } + + int negScaleNodes = 0; + foreach (var t in tempRoot.GetComponentsInChildren(true)) + { + var s = t.lossyScale; + if (s.x * s.y * s.z < 0f) negScaleNodes++; + } + if (negScaleNodes > 0) + UvtLog.Warn($"[FBX Preflight] {negScaleNodes} node(s) have negative-determinant accumulated scale (mesh will render transparent from front); see §7.8."); + } + + /// + /// Re-saves the FBX at (or writes a new file at + /// ) overwriting only the channels in + /// ; everything else comes from the source FBX on disk. + /// Phases: importer prep (one reimport, scoped to the intent; the source importer + /// ends as it started except for the deliberate generateSecondaryUV/keepQuads + /// locks), clone and overwrite, atomic write, reimport and relink of + /// 's references (source re-save only). The caller + /// restores its previews before and its working meshes after. Returns true when + /// the file was written. + /// + /// The material `_COL` renderers get when the intent includes Materials; null destroys their renderers. + internal static bool WriteChannels( + string sourceFbxPath, + IEnumerable entries, + FbxExportIntent intent, + string outputFbxPath, + Material collisionMaterial, + LODGroup sceneRoot) + { +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + if (string.IsNullOrEmpty(sourceFbxPath) || entries == null) return false; + + string targetFbxPath = string.IsNullOrEmpty(outputFbxPath) ? sourceFbxPath : outputFbxPath; + bool isVariantExport = !string.IsNullOrEmpty(outputFbxPath) + && !string.Equals(outputFbxPath, sourceFbxPath, StringComparison.OrdinalIgnoreCase); + + // Snapshot pre-export. Phase 1 can trigger a reimport that resets the shared + // FBX sub-asset buffers in place — keying by sub-asset name lets us find the + // original data after the reimport. + var snapshots = new Dictionary(StringComparer.Ordinal); + foreach (var e in entries) + { + if (e == null || !e.include) continue; + Mesh sm = e.originalMesh ?? e.fbxMesh; + if (sm == null || string.IsNullOrEmpty(sm.name)) continue; + snapshots[sm.name] = BuildSnapshot(sm, intent); + } + if (snapshots.Count == 0) + { + UvtLog.Warn($"[FBX Export] No source meshes had data for intent {intent}."); + return false; + } + + // ── Phase 1: importer ── + using var importerRestore = new ImporterRestoreScope(sourceFbxPath); + var srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; + if (!isVariantExport) + { + if (srcImporter != null) + { + bool needsReimport = false; + // generateSecondaryUV writes Unity UV channel 1. Lock it only when the + // intent overwrites that channel, and leave it off: re-enabling it would + // regenerate channel 1 on the restore reimport over the authored UV1. + if (intent.IncludesUv(1) && srcImporter.generateSecondaryUV) + { srcImporter.generateSecondaryUV = false; needsReimport = true; } + // weldVertices / meshCompression / meshOptimizationFlags are deliberately + // left alone: the snapshot and the clone both come from the current + // import and share its vertex layout; a reimport with different settings + // would renumber the clone and every mesh would be skipped. + if (!srcImporter.isReadable) + { srcImporter.isReadable = true; needsReimport = true; importerRestore.RestoreReadable(srcImporter); } + // keepQuads changes only the index buffer (quads stay quads through + // the exporter); the vertex stream is untouched, so the snapshots still + // match. It persists on purpose: restoring it would triangulate the + // just-written quad FBX on the next import. + if (!srcImporter.keepQuads) + { srcImporter.keepQuads = true; needsReimport = true; } + if (needsReimport) + { + Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); + srcImporter.SaveAndReimport(); + } + } + } + else if (srcImporter != null && !srcImporter.keepQuads && AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) != null) + { + // A variant writes a NEW file and must leave the source importer unchanged, + // but the clone needs the source's quad topology; toggle keepQuads for the + // clone reimport and put it back at exit. + srcImporter.keepQuads = true; + importerRestore.RestoreQuads(srcImporter); + Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); + srcImporter.SaveAndReimport(); + } + + // ── Phase 2: clone and overwrite ── + var fbxAsset = AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) as GameObject; + if (fbxAsset == null) + { + UvtLog.Error($"[FBX Export] Cannot load FBX asset at '{sourceFbxPath}'."); + return false; + } + var tempRoot = Object.Instantiate(fbxAsset); + tempRoot.name = fbxAsset.name; + + bool exported = false; + Dictionary renameMap = null; + var tempMeshes = new List(); + try + { + int updated = CopySnapshotsToClone(tempRoot, snapshots, tempMeshes); + if (updated == 0 && (intent & (FbxExportIntent.Hierarchy | FbxExportIntent.Materials)) == 0) + { + // Hierarchy / Materials intents restructure the FBX without per-vertex + // changes; a per-vertex-only intent with no matching mesh writes nothing. + UvtLog.Warn($"[FBX Export] No matching meshes in clone for intent {intent}."); + return false; + } + if ((intent & FbxExportIntent.Hierarchy) != 0) + renameMap = NormalizeExportHierarchy(tempRoot, tempMeshes); + if ((intent & FbxExportIntent.Materials) != 0) + { + PrepareCollisionMaterials(tempRoot, collisionMaterial); + TrimMaterialArrays(tempRoot); + } + RunPreflight(tempRoot, intent, snapshots); + + // ── Phase 3: write ── + // Signal the UV2 postprocessor to skip sidecar injection on the reimport the + // write triggers — otherwise an isolated UV2 export would be overwritten by + // stale sidecar data at once. + Uv2AssetPostprocessor.fbxOverwritePaths.Add(targetFbxPath); + WriteAtomic(targetFbxPath, tempRoot); + UvtLog.Info($"[FBX Export] Isolated channels {intent} ({updated} updates) -> {targetFbxPath}"); + exported = true; + } + catch (Exception ex) + { + Uv2AssetPostprocessor.fbxOverwritePaths.Remove(targetFbxPath); + UvtLog.Error("[FBX Export] Isolated channel export failed: " + ex); + return false; + } + finally + { + Object.DestroyImmediate(tempRoot); + DestroyTempMeshes(tempMeshes); + } + + // ── Phase 4: reimport and relink ── + AssetDatabase.Refresh(); + if (isVariantExport) + { + // The variant was written with the source's quad topology; pin keepQuads + // on its importer so the project view matches the file. + var outImporter = AssetImporter.GetAtPath(targetFbxPath) as ModelImporter; + if (outImporter != null && !outImporter.keepQuads) + { + outImporter.keepQuads = true; + outImporter.SaveAndReimport(); + } + } + else if (sceneRoot != null) + { + // renameMap is non-null only when the intent included Hierarchy; narrow + // per-vertex intents re-bind purely by sub-asset name. + RelinkSceneMeshReferences(sourceFbxPath, renameMap != null && renameMap.Count > 0 ? renameMap : null, sceneRoot); + } + return exported; +#else + UvtLog.Error("[FBX Export] FBX Exporter package not installed."); + return false; +#endif + } + + // ───────────────────────────────────────────────────────────────── + // Writing + // ───────────────────────────────────────────────────────────────── + + /// + /// Writes to as a binary FBX and + /// throws when the exporter produced nothing. For new files; a re-save of an + /// existing asset goes through . + /// + internal static void Write(string fbxPath, GameObject root, bool embedTextures = false) + { +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { root }, + new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { + ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary, + // Embedded maps make the FBX self-contained; a linked FBX would + // reference this machine's absolute paths instead. + EmbedTextures = embedTextures }); + var info = new FileInfo(Path.GetFullPath(fbxPath)); + if (!info.Exists || info.Length == 0) + throw new IOException($"FBX Exporter produced an empty/missing file at '{fbxPath}'."); +#else + throw new InvalidOperationException("FBX Exporter package not installed."); +#endif + } + + /// + /// Writes to `.tmp`, verifies it, and replaces the + /// target in one rename (a plain move for a new path), keeping the target's `.meta` + /// as it was. If the exporter throws or writes an empty file the target on disk is + /// untouched. Throws on failure after removing the temp file. + /// + internal static void WriteAtomic(string targetFbxPath, GameObject root) + { +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + string fullPath = Path.GetFullPath(targetFbxPath); + // Hash the full path so two FBX files with the same filename get distinct + // backup names. unchecked cast rather than Math.Abs — Math.Abs(int.MinValue) throws. + string pathHash = unchecked((uint)fullPath.GetHashCode()).ToString("X8"); + string metaBak = Path.Combine(Path.GetTempPath(), Path.GetFileName(fullPath) + "." + pathHash + ".meta.bak"); + bool metaBackedUp = File.Exists(fullPath + ".meta"); + if (metaBackedUp) File.Copy(fullPath + ".meta", metaBak, true); + + string tmpRelPath = targetFbxPath + ".tmp"; + string tmpAbsPath = Path.GetFullPath(tmpRelPath); + if (File.Exists(tmpAbsPath)) File.Delete(tmpAbsPath); // leftover from a crashed run + try + { + UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(tmpRelPath, new Object[] { root }, + new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions + { ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary }); + + var tmpInfo = new FileInfo(tmpAbsPath); + if (!tmpInfo.Exists || tmpInfo.Length == 0) + throw new IOException($"FBX Exporter produced an empty/missing file at '{tmpRelPath}'."); + + // File.Replace needs an existing target (overwrite + backup); a fresh path + // is a move. + if (File.Exists(fullPath)) + { + string fbxBak = Path.Combine(Path.GetTempPath(), Path.GetFileName(fullPath) + "." + pathHash + ".fbx.bak"); + File.Replace(tmpAbsPath, fullPath, fbxBak); + if (File.Exists(fbxBak)) File.Delete(fbxBak); + } + else + { + File.Move(tmpAbsPath, fullPath); + } + + // The exporter may have generated a .meta for the .tmp — strip it so the + // AssetDatabase does not pick up a ghost asset on the next refresh. + string tmpMetaPath = tmpAbsPath + ".meta"; + if (File.Exists(tmpMetaPath)) File.Delete(tmpMetaPath); + + if (metaBackedUp && File.Exists(metaBak)) + { + File.Copy(metaBak, fullPath + ".meta", true); + File.Delete(metaBak); + } + } + catch + { + // Best-effort: drop a leftover .tmp so a retry is not blocked. The original + // error matters, so this never throws. + try { if (File.Exists(tmpAbsPath)) File.Delete(tmpAbsPath); } catch { } + throw; + } +#else + throw new InvalidOperationException("FBX Exporter package not installed."); +#endif + } + + // ───────────────────────────────────────────────────────────────── + // LOD-rebuild hierarchy + // ───────────────────────────────────────────────────────────────── + + /// + /// If the cloned FBX carries its visible mesh on the root object, moves it to a new + /// child named after the mesh so the rest of the pipeline treats it as a LOD entry + /// ( then renames it to `baseName_LOD0`). + /// Skipped when a direct child already holds that mesh. + /// + internal static void PromoteRootMeshToLod0Child(GameObject tempRoot) + { + if (tempRoot == null) return; + var rootMf = tempRoot.GetComponent(); + if (rootMf == null || rootMf.sharedMesh == null) return; + var rootMr = tempRoot.GetComponent(); + var rootMesh = rootMf.sharedMesh; + + for (int ci = 0; ci < tempRoot.transform.childCount; ci++) + { + var existing = tempRoot.transform.GetChild(ci).GetComponent(); + if (existing != null && existing.sharedMesh == rootMesh) return; + } + + string childName = rootMesh.name; + if (string.IsNullOrEmpty(childName)) childName = tempRoot.name; + + var lod0 = new GameObject(childName); + lod0.transform.SetParent(tempRoot.transform, false); + lod0.transform.localPosition = Vector3.zero; + lod0.transform.localRotation = Quaternion.identity; + lod0.transform.localScale = Vector3.one; + lod0.AddComponent().sharedMesh = rootMesh; + if (rootMr != null) + { + var newMr = lod0.AddComponent(); + RendererSettings.Copy(rootMr, newMr); + GameObjectUtility.SetStaticEditorFlags(lod0, GameObjectUtility.GetStaticEditorFlags(tempRoot)); + Object.DestroyImmediate(rootMr); + } + Object.DestroyImmediate(rootMf); + } + + /// The renderer of the highest LOD among the entries; the template for new LOD children. + internal static Renderer FindLastLodRenderer(IEnumerable<(MeshEntry entry, Mesh resultMesh)> entries) + { + Renderer best = null; + int bestLod = int.MinValue; + foreach (var (entry, _) in entries) + { + if (entry?.renderer == null) continue; + if (entry.lodIndex >= bestLod) { bestLod = entry.lodIndex; best = entry.renderer; } + } + return best; + } + + /// + /// Swaps the clone's meshes for the export meshes of the same name (MeshFilters and + /// SkinnedMeshRenderers) and copies the matching scene renderer's settings onto the + /// node. Returns the names that were replaced. + /// + internal static HashSet ReplaceMeshes(GameObject tempRoot, Dictionary replacements, Dictionary rendererTemplates) + { + var replaced = new HashSet(); + foreach (var mf in tempRoot.GetComponentsInChildren(true)) + { + if (mf.sharedMesh == null || !replacements.TryGetValue(mf.sharedMesh.name, out var replacement)) continue; + string meshName = mf.sharedMesh.name; + replaced.Add(meshName); + mf.sharedMesh = replacement; + if (rendererTemplates.TryGetValue(meshName, out var srcRenderer)) + { + var dstRenderer = mf.GetComponent(); + if (dstRenderer != null) RendererSettings.Copy(srcRenderer, dstRenderer); + } + } + foreach (var smr in tempRoot.GetComponentsInChildren(true)) + { + if (smr.sharedMesh == null || !replacements.TryGetValue(smr.sharedMesh.name, out var replacement)) continue; + string meshName = smr.sharedMesh.name; + replaced.Add(meshName); + smr.sharedMesh = replacement; + if (rendererTemplates.TryGetValue(meshName, out var srcRenderer)) + RendererSettings.Copy(srcRenderer, smr); + } + return replaced; + } + + /// + /// Adds a LOD child for a mesh the clone did not have (a generated LOD): a direct + /// child named at the entry renderer's local transform, + /// replacing any same-named child from a previous export. Renderer settings and + /// static flags come from (the last LOD's renderer) or + /// the entry's own renderer. + /// + internal static void AddLodChild(GameObject tempRoot, string meshName, Mesh exportMesh, Renderer entryRenderer, Renderer template) + { + for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) + { + var ch = tempRoot.transform.GetChild(ci); + if (ch.name == meshName) Object.DestroyImmediate(ch.gameObject); + } + var child = new GameObject(meshName); + child.transform.SetParent(tempRoot.transform, false); + if (entryRenderer != null) + { + child.transform.localPosition = entryRenderer.transform.localPosition; + child.transform.localRotation = entryRenderer.transform.localRotation; + child.transform.localScale = entryRenderer.transform.localScale; + } + child.AddComponent().sharedMesh = exportMesh; + var mr = child.AddComponent(); + var from = template ?? entryRenderer; + if (from != null) + { + RendererSettings.Copy(from, mr); + GameObjectUtility.SetStaticEditorFlags(child, GameObjectUtility.GetStaticEditorFlags(from.gameObject)); + } + } + + /// + /// Destroys the clone's direct children that render a mesh outside + /// (by node name or mesh name). Collision nodes, + /// nodes with a MeshCollider or whose mesh a collider uses, and container nodes + /// without a mesh are kept. Must run before , + /// which renames LOD0. Returns the number pruned. + /// + internal static int PruneStaleChildren(GameObject tempRoot, HashSet validMeshNames) + { + var colliderMeshNames = new HashSet(StringComparer.OrdinalIgnoreCase); + var colliderRootNames = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var mc in tempRoot.GetComponentsInChildren(true)) + { + if (mc == null) continue; + colliderRootNames.Add(mc.gameObject.name); + if (mc.sharedMesh != null && !string.IsNullOrEmpty(mc.sharedMesh.name)) + colliderMeshNames.Add(mc.sharedMesh.name); + } + + int pruned = 0; + for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) + { + var ch = tempRoot.transform.GetChild(ci); + if (MeshNaming.IsCollision(ch.name)) continue; + if (colliderRootNames.Contains(ch.name)) continue; + var chMf = ch.GetComponent(); + if (chMf != null && chMf.sharedMesh != null && colliderMeshNames.Contains(chMf.sharedMesh.name)) continue; + var chSmr = ch.GetComponent(); + string childMeshName = chMf != null && chMf.sharedMesh != null ? chMf.sharedMesh.name + : chSmr != null && chSmr.sharedMesh != null ? chSmr.sharedMesh.name : null; + // Structural/container nodes stay: removing them flattens the hierarchy + // and can break prefabs. + if (childMeshName == null) continue; + // Some imports name the node differently from its mesh (root LOD0 + // especially); either name counts. + if (validMeshNames.Contains(ch.name) || validMeshNames.Contains(childMeshName)) continue; + UvtLog.Verbose($"[FBX Export] Pruning stale child '{ch.name}'"); + Object.DestroyImmediate(ch.gameObject); + pruned++; + } + return pruned; + } + + /// + /// Normalizes the export hierarchy: root transform reset to identity, the direct + /// child named like the root renamed `_LOD0`, each LOD chain renumbered to + /// contiguous `_LOD0.._LODN` per prefix, every child's transform baked into a copy + /// of its mesh and reset. Returns oldName → newName for the renamed nodes (for the + /// post-reimport scene relink). Every mesh copy goes to ; + /// the caller destroys them after the write. + /// + internal static Dictionary NormalizeExportHierarchy(GameObject root, List bakedMeshSink) + { + if (bakedMeshSink == null) throw new ArgumentNullException(nameof(bakedMeshSink)); + + var renameMap = new Dictionary(); + string baseName = root.name; + string sanitizedBaseName = MeshHygieneUtility.SanitizeName(baseName); + if (string.IsNullOrEmpty(sanitizedBaseName)) sanitizedBaseName = "Unnamed"; + + root.transform.localPosition = Vector3.zero; + root.transform.localRotation = Quaternion.identity; + root.transform.localScale = Vector3.one; + + foreach (Transform child in root.transform) + { + if (child.name == baseName || child.name == sanitizedBaseName) + { + string oldName = child.name; + child.name = sanitizedBaseName + "_LOD0"; + if (oldName != child.name) renameMap[oldName] = child.name; + break; + } + } + + // Contiguous LOD numbering PER GROUP (the child's own prefix before `_LOD`), + // so several LOD chains under one root keep their prefixes. Prevents importer + // warnings ("_LOD1 found but no _LOD0") after inconsistent sanitising. + var groupedLodChildren = new Dictionary>(); + var groupOrder = new List(); + foreach (Transform child in root.transform) + { + if (MeshNaming.IsCollision(child.name)) continue; + var mf = child.GetComponent(); + var smr = child.GetComponent(); + bool hasMesh = (mf != null && mf.sharedMesh != null) || (smr != null && smr.sharedMesh != null); + if (!hasMesh) continue; + + // Any LOD index the name carries, even one the LODGroup cannot hold: this + // pass only groups and orders children. + string groupPrefix = MeshNaming.SplitLodSuffix(child.name, out string lodSuffix); + if (lodSuffix.Length == 0 || + !int.TryParse(lodSuffix.Substring(lodSuffix.ToUpperInvariant().LastIndexOf("LOD") + 3), out int parsedIndex)) + continue; + if (!groupedLodChildren.TryGetValue(groupPrefix, out var list)) + { + groupedLodChildren[groupPrefix] = list = new List<(Transform, int, int)>(); + groupOrder.Add(groupPrefix); + } + list.Add((child, parsedIndex, child.GetSiblingIndex())); + } + foreach (var groupPrefix in groupOrder) + { + var list = groupedLodChildren[groupPrefix]; + list.Sort((a, b) => + { + int cmp = a.index.CompareTo(b.index); + return cmp != 0 ? cmp : a.siblingIndex.CompareTo(b.siblingIndex); + }); + for (int i = 0; i < list.Count; i++) + { + string normalizedName = groupPrefix + "_LOD" + i; + string oldName = list[i].transform.name; + if (oldName == normalizedName) continue; + list[i].transform.name = normalizedName; + renameMap[oldName] = normalizedName; + } + } + + // Bake non-identity transforms into the vertices (an FBX imported at 0.01 with a + // compensating 100× node scale is the common case) so every exported node has + // a clean identity transform. + foreach (var childMf in root.GetComponentsInChildren(true)) + { + if (childMf == null || childMf.sharedMesh == null) continue; + if (childMf.transform == root.transform) continue; + var t = childMf.transform; + if (t.localPosition == Vector3.zero && t.localRotation == Quaternion.identity && t.localScale == Vector3.one) + continue; + var mesh = childMf.sharedMesh; + if (!mesh.isReadable) continue; + + // Several nodes can instance the same Mesh; baking into it directly would + // apply each node's transform cumulatively. Every node gets its own copy. + var bakedMesh = Object.Instantiate(mesh); + bakedMesh.name = mesh.name; + childMf.sharedMesh = bakedMesh; + bakedMeshSink.Add(bakedMesh); + MeshTransform.BakeMatrix(bakedMesh, Matrix4x4.TRS(t.localPosition, t.localRotation, t.localScale)); + t.localPosition = Vector3.zero; + t.localRotation = Quaternion.identity; + t.localScale = Vector3.one; + } + return renameMap; + } + + /// + /// Adds the sidecar's collision meshes as `_COL` children (one node for a + /// simplified collider, a container with `_COL_Hull{N}` children for a convex + /// decomposition), removing the clone's existing `_COL` children first when there + /// is anything to add. The meshes go to . Returns the + /// number of collision meshes placed. + /// + internal static int InjectCollisionMeshes(GameObject tempRoot, List<(string meshName, List meshes, bool isConvex)> collisionData, List tempSink) + { + if (tempSink == null) throw new ArgumentNullException(nameof(tempSink)); + if (collisionData == null || collisionData.Count == 0) return 0; + + for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) + { + var ch = tempRoot.transform.GetChild(ci); + if (MeshNaming.IsCollision(ch.name)) Object.DestroyImmediate(ch.gameObject); + } + + int count = 0; + foreach (var (colMeshName, colMeshes, isConvex) in collisionData) + { + tempSink.AddRange(colMeshes); + if (colMeshes.Count == 1 && !isConvex) + { + // No MeshRenderer: avoids a stale material on the node. + var colChild = new GameObject(colMeshName + "_COL"); + colChild.transform.SetParent(tempRoot.transform, false); + colChild.AddComponent().sharedMesh = colMeshes[0]; + count++; + } + else + { + var container = new GameObject(colMeshName + "_COL"); + container.transform.SetParent(tempRoot.transform, false); + for (int hi = 0; hi < colMeshes.Count; hi++) + { + var hullChild = new GameObject($"{colMeshName}_COL_Hull{hi}"); + hullChild.transform.SetParent(container.transform, false); + hullChild.AddComponent().sharedMesh = colMeshes[hi]; + count++; + } + } + } + if (count > 0) UvtLog.Verbose($"[FBX Export] Added {count} collision mesh(es) from sidecar"); + return count; + } + + /// + /// Gives every `_COL` node a renderer with (so the + /// exporter does not write a default "Lit" material), or destroys its renderer + /// when there is no material to give. + /// + internal static void PrepareCollisionMaterials(GameObject tempRoot, Material fallback) + { + foreach (var colMf in tempRoot.GetComponentsInChildren(true)) + { + if (colMf == null || colMf.sharedMesh == null) continue; + if (!MeshNaming.IsCollision(colMf.gameObject.name)) continue; + var colMr = colMf.GetComponent(); + if (fallback != null) + { + if (colMr == null) colMr = colMf.gameObject.AddComponent(); + colMr.sharedMaterials = new[] { fallback }; + } + else if (colMr != null) + Object.DestroyImmediate(colMr); + } + } + + /// + /// Reduces every readable `_COL` mesh to positions, triangles, recalculated normals + /// and (only when the source had them) synthesized tangents — no UVs or colours — + /// after . The stripped copies go to + /// ; a Read/Write-disabled collision sub-asset is warned + /// about and left alone. + /// + internal static void StripCollisionMeshes(GameObject tempRoot, Material fallback, List tempSink) + { + if (tempSink == null) throw new ArgumentNullException(nameof(tempSink)); + PrepareCollisionMaterials(tempRoot, fallback); + foreach (var colMf in tempRoot.GetComponentsInChildren(true)) + { + if (colMf == null || colMf.sharedMesh == null) continue; + if (!MeshNaming.IsCollision(colMf.gameObject.name)) continue; + var srcCol = colMf.sharedMesh; + if (!srcCol.isReadable) + { + UvtLog.Warn($"[FBX Export] Collision mesh '{srcCol.name}' is not readable — " + + "skipping strip. Re-save collision to sidecar to fix."); + continue; + } + var stripped = new Mesh { name = srcCol.name }; + tempSink.Add(stripped); + stripped.SetVertices(srcCol.vertices); + for (int s = 0; s < srcCol.subMeshCount; s++) + stripped.SetTriangles(srcCol.GetTriangles(s), s); + stripped.RecalculateNormals(); + if (TangentValidator.HasTangents(srcCol)) + { + var normals = stripped.normals; + var tangents = new Vector4[normals.Length]; + for (int ti = 0; ti < normals.Length; ti++) + { + Vector3 n = normals[ti]; + Vector3 t = Vector3.Cross(n, Vector3.up); + if (t.sqrMagnitude < 0.001f) t = Vector3.Cross(n, Vector3.right); + t.Normalize(); + tangents[ti] = new Vector4(t.x, t.y, t.z, 1f); + } + stripped.tangents = tangents; + TangentValidator.ValidateTangentsW(tangents, stripped.name, "FBX Export (collision)"); + } + stripped.RecalculateBounds(); + colMf.sharedMesh = stripped; + } + } + + /// Cuts every renderer's material array down to its mesh's submesh count (no spurious default "Lit" slots). + internal static void TrimMaterialArrays(GameObject tempRoot) + { + foreach (var mr in tempRoot.GetComponentsInChildren(true)) + { + if (mr == null) continue; + var mf = mr.GetComponent(); + if (mf == null || mf.sharedMesh == null) continue; + var mats = mr.sharedMaterials; + if (mats.Length <= mf.sharedMesh.subMeshCount) continue; + UvtLog.Verbose($"[FBX Export] Trimming materials on '{mr.gameObject.name}': {mats.Length} → {mf.sharedMesh.subMeshCount}"); + var trimmed = new Material[mf.sharedMesh.subMeshCount]; + Array.Copy(mats, trimmed, trimmed.Length); + mr.sharedMaterials = trimmed; + } + } + + /// + /// Destroys the temporary meshes an export built. DestroyImmediate on the temp root + /// frees only GameObjects, so the copies have to be released explicitly — and only + /// after the write, which reads them. + /// + internal static void DestroyTempMeshes(List meshes) + { + if (meshes == null) return; + foreach (var mesh in meshes) + if (mesh != null) Object.DestroyImmediate(mesh); + meshes.Clear(); + } + + // ───────────────────────────────────────────────────────────────── + // After the reimport + // ───────────────────────────────────────────────────────────────── + + /// + /// Re-binds the MeshFilters and MeshColliders under to + /// the reimported FBX's sub-assets (Unity recreates them, so old references go + /// Missing even when names did not change), by mesh name, node name, the + /// (optional) or a fuzzy name match, and renames + /// scene nodes that the export renamed. Records Undo for every change. + /// + internal static void RelinkSceneMeshReferences(string fbxPath, Dictionary renameMap, LODGroup lodGroup) + { + if (lodGroup == null) return; + + var meshByName = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var asset in AssetDatabase.LoadAllAssetsAtPath(fbxPath)) + if (asset is Mesh mesh && !meshByName.ContainsKey(mesh.name)) meshByName[mesh.name] = mesh; + if (meshByName.Count == 0) return; + + int relinked = 0; + var root = lodGroup.transform; + + foreach (var mf in root.GetComponentsInChildren(true)) + { + if (mf == null) continue; + if (mf.sharedMesh != null) + { + string meshName = mf.sharedMesh.name; + if (renameMap != null && renameMap.TryGetValue(meshName, out string newName)) meshName = newName; + if (meshByName.TryGetValue(meshName, out var freshMesh) && mf.sharedMesh != freshMesh) + { + Undo.RecordObject(mf, "Relink Mesh"); + mf.sharedMesh = freshMesh; + relinked++; + } + continue; + } + + // Missing mesh — by node name, then the renamed name, then fuzzy. + string goName = mf.gameObject.name; + if (meshByName.TryGetValue(goName, out var match)) + { + Undo.RecordObject(mf, "Relink Mesh"); + mf.sharedMesh = match; + relinked++; + continue; + } + if (renameMap != null) + { + foreach (var kvp in renameMap) + { + if (goName != kvp.Key || !meshByName.TryGetValue(kvp.Value, out var renamedMesh)) continue; + Undo.RecordObject(mf, "Relink Mesh"); + mf.sharedMesh = renamedMesh; + relinked++; + break; + } + } + if (mf.sharedMesh == null) + { + foreach (var kvp in meshByName) + { + if (!goName.Contains(kvp.Key) && !kvp.Key.Contains(goName)) continue; + Undo.RecordObject(mf, "Relink Mesh"); + mf.sharedMesh = kvp.Value; + relinked++; + break; + } + } + } + + foreach (var mc in root.GetComponentsInChildren(true)) + { + if (mc == null) continue; + if (mc.sharedMesh != null) + { + string meshName = mc.sharedMesh.name; + if (renameMap != null && renameMap.TryGetValue(meshName, out string newName)) meshName = newName; + if (meshByName.TryGetValue(meshName, out var freshMesh) && mc.sharedMesh != freshMesh) + { + Undo.RecordObject(mc, "Relink Collider Mesh"); + mc.sharedMesh = freshMesh; + relinked++; + } + } + else if (meshByName.TryGetValue(mc.gameObject.name, out var match)) + { + Undo.RecordObject(mc, "Relink Collider Mesh"); + mc.sharedMesh = match; + relinked++; + } + } + + if (renameMap != null) + { + foreach (var kvp in renameMap) + { + foreach (Transform child in root) + { + if (child.name != kvp.Key) continue; + Undo.RecordObject(child.gameObject, "Rename to match FBX"); + child.name = kvp.Value; + break; + } + } + } + + if (relinked > 0) + UvtLog.Info($"[FBX Export] Relinked {relinked} mesh reference(s) after reimport."); + } + + /// + /// Removes the importer's external material remaps named `Lit` or `No Name` (the + /// defaults it invents for collision-only nodes) and reimports when any were + /// found; runs first so the caller can re-arm a + /// transient sidecar replay. Returns true when the importer changed. + /// + internal static bool RemoveDefaultMaterialRemaps(string fbxPath, Action beforeReimport) + { + var imp = AssetImporter.GetAtPath(fbxPath) as ModelImporter; + if (imp == null) return false; + var toRemove = new List(); + foreach (var kvp in imp.GetExternalObjectMap()) + { + if (kvp.Key.type != typeof(Material)) continue; + if (kvp.Key.name == "Lit" || kvp.Key.name == "No Name") toRemove.Add(kvp.Key); + } + if (toRemove.Count == 0) return false; + beforeReimport?.Invoke(); + foreach (var key in toRemove) imp.RemoveRemap(key); + imp.SaveAndReimport(); + return true; + } + } +} diff --git a/Editor/Assets/FbxExport.cs.meta b/Editor/Assets/FbxExport.cs.meta new file mode 100644 index 00000000..c14d8506 --- /dev/null +++ b/Editor/Assets/FbxExport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43f090810d60452db4e92b5d94b29cbe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Assets/SidecarStore.cs b/Editor/Assets/SidecarStore.cs new file mode 100644 index 00000000..e3d6b321 --- /dev/null +++ b/Editor/Assets/SidecarStore.cs @@ -0,0 +1,490 @@ +// SidecarStore.cs — the one reader and writer of the `_uv2data.asset` sidecar that +// travels next to an FBX: UV2 entries, collision hulls and the transfer tool's +// settings. Tools used to open the asset themselves (load-or-create, Set, SetDirty, +// SaveAssets) in six places and to collect "the FBX paths behind these entries" in +// five; every one of those goes through here now. +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// + /// Persistence of sidecars. Nothing here touches the + /// scene or an importer; the postprocessor's replay sets are armed only by + /// , which the export calls when sidecar mode is off. + /// + internal static class SidecarStore + { + /// `Assets/Models/Chair.fbx` → `Assets/Models/Chair_uv2data.asset`. + internal static string PathFor(string fbxPath) => Uv2DataAsset.GetSidecarPath(fbxPath); + + /// The sidecar next to , or null when there is none. + internal static Uv2DataAsset Load(string fbxPath) + { + if (string.IsNullOrEmpty(fbxPath)) return null; + return AssetDatabase.LoadAssetAtPath(PathFor(fbxPath)); + } + + /// The sidecar next to , created on disk when there is none. + internal static Uv2DataAsset LoadOrCreate(string fbxPath) + { + string sidecarPath = PathFor(fbxPath); + var data = AssetDatabase.LoadAssetAtPath(sidecarPath); + if (data == null) + { + data = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(data, sidecarPath); + } + return data; + } + + /// True when a sidecar exists next to . + internal static bool Exists(string fbxPath) => Load(fbxPath) != null; + + /// Marks the sidecar dirty and writes every pending asset change. + internal static void Save(Uv2DataAsset data) + { + if (data == null) return; + EditorUtility.SetDirty(data); + AssetDatabase.SaveAssets(); + } + + // ── FBX paths behind a selection ── + + /// + /// The distinct `.fbx` asset paths the entries were imported from (the FBX + /// sub-asset first, the working mesh when there is none), in entry order. + /// + internal static List FbxPaths(IEnumerable entries) + { + var paths = new List(); + if (entries == null) return paths; + var seen = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var e in entries) + { + if (e == null) continue; + Mesh m = e.fbxMesh ?? e.originalMesh; + if (m == null) continue; + string p = AssetDatabase.GetAssetPath(m); + if (IsFbxPath(p) && seen.Add(p)) paths.Add(p); + } + return paths; + } + + /// The `.fbx` asset paths under the meshes of 's MeshFilters. + internal static List FbxPaths(GameObject root) + { + var paths = new List(); + if (root == null) return paths; + var seen = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var mf in root.GetComponentsInChildren()) + { + if (mf.sharedMesh == null) continue; + string p = AssetDatabase.GetAssetPath(mf.sharedMesh); + if (IsFbxPath(p) && seen.Add(p)) paths.Add(p); + } + return paths; + } + + /// True for a non-empty path ending in `.fbx` (any case). + internal static bool IsFbxPath(string path) + => !string.IsNullOrEmpty(path) && path.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase); + + /// + /// The first of that has a sidecar, with that sidecar's + /// path; false when none has one. + /// + internal static bool TryFindFirst(IEnumerable fbxPaths, out string fbxPath, out string sidecarPath) + { + fbxPath = sidecarPath = null; + if (fbxPaths == null) return false; + foreach (string fbx in fbxPaths) + { + string sp = PathFor(fbx); + if (AssetDatabase.LoadAssetAtPath(sp) == null) continue; + fbxPath = fbx; + sidecarPath = sp; + return true; + } + return false; + } + + // ── UV2 entries ── + + /// + /// Adds or replaces in the sidecar next to + /// , creating it when needed. Returns the number stored. + /// + internal static int SaveEntries(string fbxPath, IEnumerable entries) + { + if (string.IsNullOrEmpty(fbxPath) || entries == null) return 0; + var data = LoadOrCreate(fbxPath); + int saved = 0; + foreach (var entry in entries) + { + if (entry == null) continue; + data.Set(entry); + saved++; + } + if (saved > 0) Save(data); + return saved; + } + + /// + /// Drops the UV2 entries of every sidecar behind . + /// Collision entries are kept; a sidecar left with nothing is deleted. + /// Returns the number of sidecars that had UV2 entries. + /// + internal static int ClearUv2Entries(IEnumerable fbxPaths) + { + int cleared = 0; + if (fbxPaths == null) return 0; + foreach (var fbxPath in fbxPaths) + { + if (string.IsNullOrEmpty(fbxPath)) continue; + string sidecarPath = PathFor(fbxPath); + var data = AssetDatabase.LoadAssetAtPath(sidecarPath); + if (data == null) continue; + + bool hasCollision = data.collisionEntries != null && data.collisionEntries.Count > 0; + bool hasUv2 = data.entries != null && data.entries.Count > 0; + if (!hasUv2) continue; + + data.entries.Clear(); + cleared++; + if (hasCollision) EditorUtility.SetDirty(data); + else AssetDatabase.DeleteAsset(sidecarPath); + } + if (cleared > 0) AssetDatabase.SaveAssets(); + return cleared; + } + + /// Deletes the sidecars behind . Returns how many existed. + internal static int Delete(IEnumerable fbxPaths) + { + int deleted = 0; + if (fbxPaths == null) return 0; + foreach (string fbx in fbxPaths) + { + if (string.IsNullOrEmpty(fbx)) continue; + string sp = PathFor(fbx); + if (AssetDatabase.LoadAssetAtPath(sp) == null) continue; + AssetDatabase.DeleteAsset(sp); + deleted++; + } + return deleted; + } + + /// + /// Hands to the postprocessor for the next import of + /// only (sidecar mode off): the UV2 is replayed once and + /// nothing is written to disk. + /// + internal static void ArmTransientReplay(string fbxPath, List entries) + { + if (string.IsNullOrEmpty(fbxPath) || entries == null || entries.Count == 0) return; + Uv2AssetPostprocessor.SetTransientReplayEntries(fbxPath, entries); + Uv2AssetPostprocessor.managedImportPaths.Add(fbxPath); + Uv2AssetPostprocessor.transientReplayPaths.Add(fbxPath); + } + + /// + /// Stores for the way the + /// current sidecar mode wants: on disk when it is on, as a one-shot replay when + /// it is off. Either way the postprocessor treats the next import as managed. + /// + internal static void StoreForImport(string fbxPath, List entries, bool persistent) + { + if (persistent) SaveEntries(fbxPath, entries); + else Uv2AssetPostprocessor.SetTransientReplayEntries(fbxPath, entries); + Uv2AssetPostprocessor.managedImportPaths.Add(fbxPath); + if (!persistent) Uv2AssetPostprocessor.transientReplayPaths.Add(fbxPath); + } + + // ── Entry construction ── + + /// + /// Which UV component vertex AO was written to, as the export needs it: a UV + /// channel (0–7) and component (0 = X, 1 = Y). when AO went to a + /// vertex colour channel, nothing was applied, or the channel is UV1 — the lightmap + /// channel, which the export never merges AO into. + /// + internal readonly struct AoUvTarget + { + public readonly int channel; + public readonly int component; + public AoUvTarget(int channel, int component) { this.channel = channel; this.component = component; } + public bool IsSet => channel >= 0; + public static readonly AoUvTarget None = new AoUvTarget(-1, 0); + + /// The target behind a vertex-AO channel choice, honouring the UV1 rule. + public static AoUvTarget From(AOTargetChannel? applied) + { + if (!applied.HasValue) return None; + int v = (int)applied.Value; + if (v < (int)AOTargetChannel.UV0_X) return None; + int channel = (v - (int)AOTargetChannel.UV0_X) / 2; + int component = (v - (int)AOTargetChannel.UV0_X) % 2; + if (channel == 1) return None; + return new AoUvTarget(channel, component); + } + } + + /// + /// The UV2 sidecar entry for one exported mesh: the result's UV1 (or the AO + /// channel when UV1 is absent), positions, UV0, colours, the source fingerprint + /// and the pipeline steps the entry went through. False when the result has no + /// UV1 and no AO channel to store. + /// + /// True when the entry is the repack (source) LOD, false for a transfer target. + internal static bool TryBuildEntry(MeshEntry entry, Mesh resultMesh, bool isSourceLod, AoUvTarget ao, out MeshUv2Entry sidecarEntry) + { + sidecarEntry = null; + if (entry == null || resultMesh == null) return false; + + var sidecarMesh = UnityEngine.Object.Instantiate(resultMesh); + sidecarMesh.name = resultMesh.name; + try + { + if (entry.fbxMesh != null) + FbxExport.PreserveUvChannels(sidecarMesh, entry.fbxMesh); + if (entry.originalMesh != null && entry.originalMesh != entry.fbxMesh) + { + FbxExport.PreserveUvChannels(sidecarMesh, entry.originalMesh); + FbxExport.OverwriteUvChannel(sidecarMesh, entry.originalMesh, 1); + } + + // TBN: keep tangent presence in sync with the source FBX. If the FBX + // import did not produce tangents, do not let derived/welded meshes + // smuggle a synthesized tangent stream into the sidecar payload. + TangentValidator.EnforceTangentsMatchOriginal(sidecarMesh, entry.fbxMesh, "Sidecar"); + + Vector2[] auxiliaryUv = null; + int auxiliaryTargetUvChannel = -1; + if (ao.IsSet) + { + var uvDonor = FbxExport.SelectUvDonor(entry, resultMesh, ao.channel); + if (uvDonor != null) + { + FbxExport.MergeUvComponentFromDonor(sidecarMesh, uvDonor, ao.channel, ao.component); + var auxiliaryUvList = new List(); + sidecarMesh.GetUVs(ao.channel, auxiliaryUvList); + if (auxiliaryUvList.Count == sidecarMesh.vertexCount) + { + auxiliaryUv = auxiliaryUvList.ToArray(); + auxiliaryTargetUvChannel = ao.channel; + } + } + } + + var primaryUvList = new List(); + sidecarMesh.GetUVs(1, primaryUvList); + Vector2[] primaryUv = primaryUvList.Count == sidecarMesh.vertexCount ? primaryUvList.ToArray() : null; + int primaryTargetUvChannel = 1; + if (primaryUv == null && auxiliaryUv != null) + { + primaryUv = auxiliaryUv; + primaryTargetUvChannel = auxiliaryTargetUvChannel; + auxiliaryUv = null; + auxiliaryTargetUvChannel = -1; + } + if (primaryUv == null) return false; + + var positions = sidecarMesh.vertices; + var colors = sidecarMesh.colors32; + var uv0List = new List(); + (entry.originalMesh ?? resultMesh).GetUVs(0, uv0List); + + string meshName = entry.fbxMesh != null + ? entry.fbxMesh.name + : (entry.originalMesh != null ? entry.originalMesh.name : resultMesh.name); + MeshFingerprint fp = entry.fbxMesh != null ? MeshFingerprint.Compute(entry.fbxMesh) : null; + + sidecarEntry = new MeshUv2Entry + { + meshName = meshName, + uv2 = primaryUv, + welded = entry.wasWelded, + edgeWelded = entry.wasEdgeWelded, + vertPositions = positions, + vertUv0 = uv0List.ToArray(), + optimizedColors = colors.Length == sidecarMesh.vertexCount ? colors : null, + schemaVersion = Uv2DataAsset.CurrentSchemaVersion, + toolVersion = Uv2DataAsset.ToolVersionStr, + sourceFingerprint = fp, + targetUvChannel = primaryTargetUvChannel, + auxiliaryUv = auxiliaryUv, + auxiliaryTargetUvChannel = auxiliaryTargetUvChannel, + stepMeshopt = entry.wasWelded, + stepEdgeWeld = entry.wasEdgeWelded, + stepSymmetrySplit = entry.wasSymmetrySplit, + stepRepack = isSourceLod, + stepTransfer = !isSourceLod, + }; + return true; + } + finally + { + UnityEngine.Object.DestroyImmediate(sidecarMesh); + } + } + + // ── Collision entries ── + + // Bounds keep malformed project-controlled sidecars from causing large + // secondary allocations during export. They are deliberately far above + // the expected size of collision geometry. + const int MaxHullCount = 1024; + const int MaxVertexCount = 1_000_000; + const int MaxIndexCount = 3_000_000; + + /// + /// The collision meshes stored next to , one list per + /// entry: a single mesh for a simplified collider, one per hull for a convex + /// decomposition. The meshes are new objects the caller owns and destroys. + /// Invalid entries are logged and skipped. + /// + internal static List<(string meshName, List meshes, bool isConvex)> CollisionMeshes(string fbxPath) + { + var result = new List<(string, List, bool)>(); + var data = Load(fbxPath); + if (data == null || data.collisionEntries == null) return result; + + foreach (var entry in data.collisionEntries) + { + if (!TryValidateCollisionEntry(entry, out var globalTriangleIndices, out string validationError)) + { + UvtLog.Warn($"[Collision] Ignoring invalid sidecar entry: {validationError}"); + continue; + } + + bool isConvex = entry.mode == 1; + var meshes = new List(); + int hullCount = entry.positionOffsets.Length; + for (int h = 0; h < hullCount; h++) + { + int posStart = entry.positionOffsets[h]; + int posEnd = (h + 1 < hullCount) ? entry.positionOffsets[h + 1] : entry.allPositions.Length; + int triStart = entry.triangleOffsets[h]; + int triEnd = (h + 1 < hullCount) ? entry.triangleOffsets[h + 1] : entry.allTriangles.Length; + + int vertCount = posEnd - posStart; + var verts = new Vector3[vertCount]; + Array.Copy(entry.allPositions, posStart, verts, 0, vertCount); + + int idxCount = triEnd - triStart; + var tris = new int[idxCount]; + Array.Copy(entry.allTriangles, triStart, tris, 0, idxCount); + if (globalTriangleIndices[h]) + { + // Current sidecars store indices in the flattened vertex array. + for (int i = 0; i < tris.Length; i++) tris[i] -= posStart; + } + + var mesh = new Mesh(); + mesh.name = isConvex ? $"{entry.meshGroupKey}_COL_Hull{h}" : $"{entry.meshGroupKey}_COL"; + mesh.SetVertices(verts); + mesh.SetTriangles(tris, 0); + mesh.RecalculateNormals(); + mesh.RecalculateBounds(); + meshes.Add(mesh); + } + result.Add((entry.meshGroupKey, meshes, isConvex)); + } + return result; + } + + /// + /// Checks a collision entry's arrays and offsets, and tells for each hull whether + /// its triangle indices address the flattened array (current) or the hull's own + /// vertices (legacy); both encodings are accepted. + /// + internal static bool TryValidateCollisionEntry(CollisionMeshEntry entry, out bool[] globalTriangleIndices, out string error) + { + globalTriangleIndices = null; + error = null; + + if (entry == null) + return Invalid("entry is null", out error); + if (entry.mode != 0 && entry.mode != 1) + return Invalid($"'{entry.meshGroupKey}' has unknown mode {entry.mode}", out error); + if (entry.allPositions == null || entry.positionOffsets == null || + entry.allTriangles == null || entry.triangleOffsets == null) + return Invalid($"'{entry.meshGroupKey}' has missing mesh arrays", out error); + + int hullCount = entry.positionOffsets.Length; + if (hullCount == 0 || hullCount > MaxHullCount) + return Invalid($"'{entry.meshGroupKey}' has invalid hull count {hullCount}", out error); + if (entry.triangleOffsets.Length != hullCount) + return Invalid($"'{entry.meshGroupKey}' has mismatched offset arrays", out error); + if (entry.positionOffsets[0] != 0 || entry.triangleOffsets[0] != 0) + return Invalid($"'{entry.meshGroupKey}' has non-zero initial offsets", out error); + if (entry.allPositions.Length > MaxVertexCount || entry.allTriangles.Length > MaxIndexCount) + return Invalid($"'{entry.meshGroupKey}' exceeds collision mesh size limits", out error); + + globalTriangleIndices = new bool[hullCount]; + for (int h = 0; h < hullCount; h++) + { + int posStart = entry.positionOffsets[h]; + int posEnd = h + 1 < hullCount ? entry.positionOffsets[h + 1] : entry.allPositions.Length; + int triStart = entry.triangleOffsets[h]; + int triEnd = h + 1 < hullCount ? entry.triangleOffsets[h + 1] : entry.allTriangles.Length; + + if (posStart < 0 || posEnd <= posStart || posEnd > entry.allPositions.Length) + return Invalid($"'{entry.meshGroupKey}' has invalid vertex range for hull {h}", out error); + if (triStart < 0 || triEnd <= triStart || triEnd > entry.allTriangles.Length || (triEnd - triStart) % 3 != 0) + return Invalid($"'{entry.meshGroupKey}' has invalid triangle range for hull {h}", out error); + + int vertexCount = posEnd - posStart; + bool canBeLocal = true; + bool canBeGlobal = true; + for (int i = triStart; i < triEnd; i++) + { + int index = entry.allTriangles[i]; + canBeLocal &= index >= 0 && index < vertexCount; + canBeGlobal &= index >= posStart && index < posEnd; + } + if (!canBeLocal && !canBeGlobal) + return Invalid($"'{entry.meshGroupKey}' has out-of-range indices for hull {h}", out error); + + // Before global rebasing was added, multi-hull sidecars stored per-hull + // local indices. Prefer the current global encoding when a range is + // valid as both; legacy local data normally contains index zero. + globalTriangleIndices[h] = canBeGlobal; + } + return true; + } + + static bool Invalid(string message, out string error) + { + error = message; + return false; + } + + // ── Tool settings ── + + /// The transfer tool settings stored in the sidecar at , or null. + internal static ToolSettings LoadSettings(string sidecarPath) + { + if (string.IsNullOrEmpty(sidecarPath)) return null; + return AssetDatabase.LoadAssetAtPath(sidecarPath)?.toolSettings; + } + + /// + /// Lets fill the settings block of the sidecar at + /// (created when missing) and saves it. A no-op + /// when there is no sidecar. + /// + internal static void SaveSettings(string sidecarPath, Action edit) + { + if (string.IsNullOrEmpty(sidecarPath) || edit == null) return; + var data = AssetDatabase.LoadAssetAtPath(sidecarPath); + if (data == null) return; + if (data.toolSettings == null) data.toolSettings = new ToolSettings(); + edit(data.toolSettings); + Save(data); + } + } +} diff --git a/Editor/Assets/SidecarStore.cs.meta b/Editor/Assets/SidecarStore.cs.meta new file mode 100644 index 00000000..d848be98 --- /dev/null +++ b/Editor/Assets/SidecarStore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1679745b6f54c17a683e7e6d9e07cc1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Framework/UvToolHub.cs b/Editor/Framework/UvToolHub.cs index 6f352931..44e15dec 100644 --- a/Editor/Framework/UvToolHub.cs +++ b/Editor/Framework/UvToolHub.cs @@ -1853,47 +1853,14 @@ void OnPreviewChannelChanged(int newChannel) void UpdateSelectedSidecar() { - selectedSidecarPath = null; - selectedFbxPath = null; - selectedResetLabel = null; - - var fbxPaths = new HashSet(); - if (ctx?.MeshEntries != null) - { - foreach (var e in ctx.MeshEntries) - { - Mesh m = e.fbxMesh ?? e.originalMesh; - if (m == null) continue; - string path = AssetDatabase.GetAssetPath(m); - if (!string.IsNullOrEmpty(path) && path.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(path); - } - } - + selectedSidecarPath = selectedFbxPath = selectedResetLabel = null; + // The loaded entries' FBX files, else those under the selected object. + var fbxPaths = SidecarStore.FbxPaths(ctx?.MeshEntries); if (fbxPaths.Count == 0) - { - var go = Selection.activeGameObject; - if (go == null) return; - foreach (var mf in go.GetComponentsInChildren()) - { - if (mf.sharedMesh == null) continue; - string path = AssetDatabase.GetAssetPath(mf.sharedMesh); - if (!string.IsNullOrEmpty(path) && path.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(path); - } - } - - foreach (string fbx in fbxPaths) - { - string sidecar = Uv2DataAsset.GetSidecarPath(fbx); - if (AssetDatabase.LoadAssetAtPath(sidecar) != null) - { - selectedFbxPath = fbx; - selectedSidecarPath = sidecar; - selectedResetLabel = System.IO.Path.GetFileNameWithoutExtension(fbx); - return; - } - } + fbxPaths = SidecarStore.FbxPaths(Selection.activeGameObject); + if (!SidecarStore.TryFindFirst(fbxPaths, out selectedFbxPath, out selectedSidecarPath)) + return; + selectedResetLabel = System.IO.Path.GetFileNameWithoutExtension(selectedFbxPath); } void ResetSelectedUv2() @@ -1906,9 +1873,7 @@ void ResetSelectedUv2() "Delete", "Cancel")) return; - if (AssetDatabase.LoadAssetAtPath(selectedSidecarPath) != null) - AssetDatabase.DeleteAsset(selectedSidecarPath); - + SidecarStore.Delete(new[] { selectedFbxPath }); AssetDatabase.Refresh(); { diff --git a/Editor/LodPipelineOps.cs b/Editor/LodPipelineOps.cs index 47bf8789..a0e4663c 100644 --- a/Editor/LodPipelineOps.cs +++ b/Editor/LodPipelineOps.cs @@ -156,7 +156,7 @@ internal static Result Generate(UvToolContext ctx, int startLod, Options opts) var mf = go.AddComponent(); mf.sharedMesh = r.simplifiedMesh; var mr = go.AddComponent(); - LightmapTransferTool.CopyRendererSettings(entry.renderer, mr); + RendererSettings.Copy(entry.renderer, mr); if (opts.progressiveScaleInLightmap && lodLevel > 0) { diff --git a/Editor/Mesh/MeshSplitMerge.cs b/Editor/Mesh/MeshSplitMerge.cs index 035ada9e..726154f4 100644 --- a/Editor/Mesh/MeshSplitMerge.cs +++ b/Editor/Mesh/MeshSplitMerge.cs @@ -116,7 +116,7 @@ public static int SplitByMaterial(UvToolContext ctx, IEnumerable go.AddComponent().sharedMesh = mesh; var mr = go.AddComponent(); mr.sharedMaterial = s < mats.Length ? mats[s] : null; - CopyRendererSettings(e.renderer, mr); + RendererSettings.Copy(e.renderer, mr, includeMaterials: false); created.Add(mr); } ReplaceInLodGroup(ctx.LodGroup, e.renderer, created, undoLabel); @@ -325,18 +325,6 @@ static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) static UnityEngine.Rendering.VertexAttribute UvAttribute(int channel) => UnityEngine.Rendering.VertexAttribute.TexCoord0 + channel; - static void CopyRendererSettings(Renderer from, Renderer to) - { - to.shadowCastingMode = from.shadowCastingMode; - to.receiveShadows = from.receiveShadows; - to.lightProbeUsage = from.lightProbeUsage; - to.reflectionProbeUsage = from.reflectionProbeUsage; - to.motionVectorGenerationMode = from.motionVectorGenerationMode; - to.probeAnchor = from.probeAnchor; - to.lightmapIndex = from.lightmapIndex; - to.realtimeLightmapIndex = from.realtimeLightmapIndex; - } - // The source renderer's slot in every LOD level takes the created renderers. static void ReplaceInLodGroup(LODGroup lodGroup, Renderer source, List created, string undoLabel) { diff --git a/Editor/Mesh/RendererSettings.cs b/Editor/Mesh/RendererSettings.cs new file mode 100644 index 00000000..0d4d093c --- /dev/null +++ b/Editor/Mesh/RendererSettings.cs @@ -0,0 +1,56 @@ +// RendererSettings.cs — copying a renderer's rendering settings onto another renderer, +// the one implementation behind the FBX export hierarchy, LOD generation and +// split/merge (each used to carry its own subset). +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class RendererSettings + { + /// + /// Copies shadows, probes, motion vectors, occlusion, layers, priority and (for + /// MeshRenderers) the lightmap settings from to + /// . With the material + /// array comes along too, unless the source currently wears a preview shader (a + /// checker or shell-colour preview must never end up in a saved asset). + /// + internal static void Copy(Renderer src, Renderer dst, bool includeMaterials = true) + { + if (src == null || dst == null) return; + + if (includeMaterials) + { + var srcMats = src.sharedMaterials; + bool hasPreviewMat = false; + for (int i = 0; i < srcMats.Length; i++) + { + var m = srcMats[i]; + string shaderName = m != null && m.shader != null ? m.shader.name : null; + if (CheckerTexturePreview.IsPreviewShader(shaderName)) { hasPreviewMat = true; break; } + } + if (!hasPreviewMat) dst.sharedMaterials = srcMats; + } + + dst.shadowCastingMode = src.shadowCastingMode; + dst.receiveShadows = src.receiveShadows; + dst.lightProbeUsage = src.lightProbeUsage; + dst.reflectionProbeUsage = src.reflectionProbeUsage; + dst.probeAnchor = src.probeAnchor; + dst.motionVectorGenerationMode = src.motionVectorGenerationMode; + dst.allowOcclusionWhenDynamic = src.allowOcclusionWhenDynamic; + dst.renderingLayerMask = src.renderingLayerMask; + dst.rendererPriority = src.rendererPriority; + dst.lightmapIndex = src.lightmapIndex; + dst.realtimeLightmapIndex = src.realtimeLightmapIndex; + + if (src is MeshRenderer srcMr && dst is MeshRenderer dstMr) + { + dstMr.receiveGI = srcMr.receiveGI; + dstMr.scaleInLightmap = srcMr.scaleInLightmap; + dstMr.stitchLightmapSeams = srcMr.stitchLightmapSeams; + dstMr.lightmapScaleOffset = srcMr.lightmapScaleOffset; + dstMr.realtimeLightmapScaleOffset = srcMr.realtimeLightmapScaleOffset; + } + } + } +} diff --git a/Editor/Mesh/RendererSettings.cs.meta b/Editor/Mesh/RendererSettings.cs.meta new file mode 100644 index 00000000..fba29766 --- /dev/null +++ b/Editor/Mesh/RendererSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e39281e5e0644ff996ccda87a607c228 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs index ab7798ae..1554172b 100644 --- a/Editor/RemeshExporter.cs +++ b/Editor/RemeshExporter.cs @@ -190,14 +190,9 @@ public static string Export(RemeshPipeline pipeline, RemeshSettings settings, st // whole folder back. static Object ExportFbx(string fbxPath, GameObject root, Material material, string prefabPath, bool embedTextures) { - UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects(fbxPath, new Object[] { root }, - new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions { - ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary, - // Embedded maps make the FBX self-contained; a linked FBX would - // reference this machine's absolute paths instead. - EmbedTextures = embedTextures }); - var fbxInfo = new FileInfo(Path.GetFullPath(fbxPath)); - if (!fbxInfo.Exists || fbxInfo.Length == 0) throw new IOException("FBX export produced an empty file."); + // Embedded maps make the FBX self-contained; a linked FBX would reference + // this machine's absolute paths instead. + FbxExport.Write(fbxPath, root, embedTextures); var modelImporter = (ModelImporter)AssetImporter.GetAtPath(fbxPath); if (modelImporter != null) { // The curated material + prefab ship next to the FBX; keep the importer diff --git a/Editor/Tools/CollisionMeshTool.cs b/Editor/Tools/CollisionMeshTool.cs index 1eeefc7a..7c6f14fd 100644 --- a/Editor/Tools/CollisionMeshTool.cs +++ b/Editor/Tools/CollisionMeshTool.cs @@ -485,13 +485,8 @@ void SaveToSidecar() } // Build CollisionMeshEntry and save to sidecar - string sidecarPath = Uv2DataAsset.GetSidecarPath(fbxPath); - var data = AssetDatabase.LoadAssetAtPath(sidecarPath); - if (data == null) - { - data = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(data, sidecarPath); - } + string sidecarPath = SidecarStore.PathFor(fbxPath); + var data = SidecarStore.LoadOrCreate(fbxPath); // Build flattened collision entry per source mesh int meshIdx = 0; @@ -546,149 +541,17 @@ void SaveToSidecar() data.collisionEntries.Add(entry); } - EditorUtility.SetDirty(data); - AssetDatabase.SaveAssets(); + SidecarStore.Save(data); UvtLog.Info($"[Collision] Saved to sidecar: {sidecarPath} ({data.collisionEntries.Count} collision entries)"); } /// - /// Get the saved collision meshes for FBX export. - /// Returns list of (meshName, collisionMeshes, isConvex) for each entry. - /// Called by LightmapTransferTool.ExportFbx. + /// The saved collision meshes for FBX export, one list per entry (meshName, + /// meshes, isConvex). Forwards to ; the + /// caller owns and destroys the meshes. /// public static List<(string meshName, List meshes, bool isConvex)> GetCollisionMeshesFromSidecar(string fbxPath) - { - var result = new List<(string, List, bool)>(); - string sidecarPath = Uv2DataAsset.GetSidecarPath(fbxPath); - var data = AssetDatabase.LoadAssetAtPath(sidecarPath); - if (data == null || data.collisionEntries == null) return result; - - foreach (var entry in data.collisionEntries) - { - if (!TryValidateCollisionEntry(entry, out var globalTriangleIndices, out string validationError)) - { - UvtLog.Warn($"[Collision] Ignoring invalid sidecar entry: {validationError}"); - continue; - } - - bool isConvex = entry.mode == 1; - var meshes = new List(); - int hullCount = entry.positionOffsets.Length; - - for (int h = 0; h < hullCount; h++) - { - int posStart = entry.positionOffsets[h]; - int posEnd = (h + 1 < hullCount) ? entry.positionOffsets[h + 1] : entry.allPositions.Length; - int triStart = entry.triangleOffsets[h]; - int triEnd = (h + 1 < hullCount) ? entry.triangleOffsets[h + 1] : entry.allTriangles.Length; - - int vertCount = posEnd - posStart; - var verts = new Vector3[vertCount]; - Array.Copy(entry.allPositions, posStart, verts, 0, vertCount); - - int idxCount = triEnd - triStart; - var tris = new int[idxCount]; - Array.Copy(entry.allTriangles, triStart, tris, 0, idxCount); - if (globalTriangleIndices[h]) - { - // Current sidecars store indices in the flattened vertex array. - for (int i = 0; i < tris.Length; i++) - tris[i] -= posStart; - } - - var mesh = new Mesh(); - mesh.name = isConvex - ? $"{entry.meshGroupKey}_COL_Hull{h}" - : $"{entry.meshGroupKey}_COL"; - mesh.SetVertices(verts); - mesh.SetTriangles(tris, 0); - mesh.RecalculateNormals(); - mesh.RecalculateBounds(); - meshes.Add(mesh); - } - - result.Add((entry.meshGroupKey, meshes, isConvex)); - } - return result; - } - - // Bounds keep malformed project-controlled sidecars from causing large - // secondary allocations during export. They are deliberately far above - // the expected size of collision geometry. - const int MaxSidecarHullCount = 1024; - const int MaxSidecarVertexCount = 1_000_000; - const int MaxSidecarIndexCount = 3_000_000; - - static bool TryValidateCollisionEntry( - CollisionMeshEntry entry, - out bool[] globalTriangleIndices, - out string error) - { - globalTriangleIndices = null; - error = null; - - if (entry == null) - return Invalid("entry is null", out error); - if (entry.mode != 0 && entry.mode != 1) - return Invalid($"'{entry.meshGroupKey}' has unknown mode {entry.mode}", out error); - if (entry.allPositions == null || entry.positionOffsets == null || - entry.allTriangles == null || entry.triangleOffsets == null) - return Invalid($"'{entry.meshGroupKey}' has missing mesh arrays", out error); - - int hullCount = entry.positionOffsets.Length; - if (hullCount == 0 || hullCount > MaxSidecarHullCount) - return Invalid($"'{entry.meshGroupKey}' has invalid hull count {hullCount}", out error); - if (entry.triangleOffsets.Length != hullCount) - return Invalid($"'{entry.meshGroupKey}' has mismatched offset arrays", out error); - if (entry.positionOffsets[0] != 0 || entry.triangleOffsets[0] != 0) - return Invalid($"'{entry.meshGroupKey}' has non-zero initial offsets", out error); - if (entry.allPositions.Length > MaxSidecarVertexCount || - entry.allTriangles.Length > MaxSidecarIndexCount) - return Invalid($"'{entry.meshGroupKey}' exceeds collision mesh size limits", out error); - - globalTriangleIndices = new bool[hullCount]; - for (int h = 0; h < hullCount; h++) - { - int posStart = entry.positionOffsets[h]; - int posEnd = h + 1 < hullCount ? entry.positionOffsets[h + 1] : entry.allPositions.Length; - int triStart = entry.triangleOffsets[h]; - int triEnd = h + 1 < hullCount ? entry.triangleOffsets[h + 1] : entry.allTriangles.Length; - - if (posStart < 0 || posEnd <= posStart || posEnd > entry.allPositions.Length) - return Invalid($"'{entry.meshGroupKey}' has invalid vertex range for hull {h}", out error); - if (triStart < 0 || triEnd <= triStart || triEnd > entry.allTriangles.Length || - (triEnd - triStart) % 3 != 0) - return Invalid($"'{entry.meshGroupKey}' has invalid triangle range for hull {h}", out error); - - int vertexCount = posEnd - posStart; - bool canBeLocal = true; - bool canBeGlobal = true; - for (int i = triStart; i < triEnd; i++) - { - int index = entry.allTriangles[i]; - canBeLocal &= index >= 0 && index < vertexCount; - canBeGlobal &= index >= posStart && index < posEnd; - } - - if (!canBeLocal && !canBeGlobal) - return Invalid($"'{entry.meshGroupKey}' has out-of-range indices for hull {h}", out error); - - // Before global rebasing was added, multi-hull sidecars stored - // per-hull local indices. Accept both safe encodings so existing - // generated data remains exportable. - // Prefer the current global encoding when an ambiguous range is - // valid as both; legacy local data normally contains index zero. - globalTriangleIndices[h] = canBeGlobal; - } - - return true; - } - - static bool Invalid(string message, out string error) - { - error = message; - return false; - } + => SidecarStore.CollisionMeshes(fbxPath); void RemoveFromScene() { diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index 5ab25e19..32109493 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -7,9 +7,6 @@ using UnityEngine; using UnityEngine.Rendering; using UnityEditor; -#if LIGHTMAP_UV_TOOL_FBX_EXPORTER -using UnityEditor.Formats.Fbx.Exporter; -#endif namespace SashaRX.UnityMeshLab { @@ -599,7 +596,7 @@ void DrawSetup() if (name.Length > 22) name = name.Substring(0, 20) + ".."; EditorGUILayout.LabelField(badge + name, EditorStyles.miniLabel, GUILayout.MinWidth(60)); var m = e.originalMesh; - EditorGUILayout.LabelField("V:" + m.vertexCount + " T:" + GetTriangleCount(m), EditorStyles.miniLabel, GUILayout.Width(80)); + EditorGUILayout.LabelField("V:" + m.vertexCount + " T:" + MeshHygieneUtility.GetTriangleCount(m), EditorStyles.miniLabel, GUILayout.Width(80)); EditorGUILayout.EndHorizontal(); } } @@ -3067,34 +3064,12 @@ void ApplyUv2ToFbx() if (fbxGroups.Count == 0) { UvtLog.Warn("[Apply] No meshes with UV2 data."); return; } - // Save sidecar assets + // Store the entries (sidecar on disk, or a one-shot replay) and reimport so + // the postprocessor applies the UV2. bool persistentSidecarMode = PostprocessorDefineManager.IsEnabled(); foreach (var kv in fbxGroups) { - if (persistentSidecarMode) - { - string sidecarPath = Uv2DataAsset.GetSidecarPath(kv.Key); - var data = AssetDatabase.LoadAssetAtPath(sidecarPath); - if (data == null) - { - data = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(data, sidecarPath); - } - foreach (var entry in kv.Value) - data.Set(entry); - EditorUtility.SetDirty(data); - AssetDatabase.SaveAssets(); - } - else - { - Uv2AssetPostprocessor.SetTransientReplayEntries(kv.Key, kv.Value); - } - - // Prepare import settings and reimport FBX so the postprocessor replays UV2 - Uv2AssetPostprocessor.managedImportPaths.Add(kv.Key); - if (!persistentSidecarMode) - Uv2AssetPostprocessor.transientReplayPaths.Add(kv.Key); - + SidecarStore.StoreForImport(kv.Key, kv.Value, persistentSidecarMode); bool reimported = Uv2AssetPostprocessor.PrepareImportSettings(kv.Key); if (!reimported) AssetDatabase.ImportAsset(kv.Key, ImportAssetOptions.ForceUpdate); @@ -3133,293 +3108,6 @@ Mesh GetResultMesh(MeshEntry e) return e.originalMesh; } - static string ResolveExportMeshName(MeshEntry entry, Mesh resultMesh) - { - if (entry?.fbxMesh != null && !string.IsNullOrEmpty(entry.fbxMesh.name)) - return entry.fbxMesh.name; - - string fallback = entry?.originalMesh != null ? entry.originalMesh.name : null; - if (string.IsNullOrEmpty(fallback) && resultMesh != null) - fallback = resultMesh.name; - - // Guard against transient preview/internal names leaking into exported FBX nodes. - if (!string.IsNullOrEmpty(fallback) && - (fallback.StartsWith("Hidden/", StringComparison.OrdinalIgnoreCase) || - fallback.StartsWith("Hidden_", StringComparison.OrdinalIgnoreCase))) - { - if (entry?.renderer != null && !string.IsNullOrEmpty(entry.renderer.name)) - return entry.renderer.name; - } - - if (!string.IsNullOrEmpty(fallback)) - return fallback; - - if (entry?.renderer != null && !string.IsNullOrEmpty(entry.renderer.name)) - return entry.renderer.name; - - return "Mesh"; - } - - /// - /// Copy non-trivial UV channels from source mesh to export mesh. - /// Preserves channels that have meaningful data (not empty, not all 0, not all 1). - /// Only copies channels missing from exportMesh; does not overwrite existing data. - /// - static void PreserveUvChannels(Mesh exportMesh, Mesh sourceMesh) - { - if (sourceMesh.vertexCount != exportMesh.vertexCount) return; - for (int ch = 0; ch < 8; ch++) - { - var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + ch); - if (exportMesh.HasVertexAttribute(attr)) continue; - if (!sourceMesh.HasVertexAttribute(attr)) continue; - - int dim = sourceMesh.GetVertexAttributeDimension(attr); - if (dim <= 2) - { - var uv = new List(); - sourceMesh.GetUVs(ch, uv); - if (uv.Count == 0) continue; - bool allZero = true; - for (int i = 0; i < uv.Count; i++) - if (uv[i].x != 0f || uv[i].y != 0f) { allZero = false; break; } - if (allZero) continue; - exportMesh.SetUVs(ch, uv); - } - else if (dim == 3) - { - var uv = new List(); - sourceMesh.GetUVs(ch, uv); - if (uv.Count > 0) exportMesh.SetUVs(ch, uv); - } - else - { - var uv = new List(); - sourceMesh.GetUVs(ch, uv); - if (uv.Count > 0) exportMesh.SetUVs(ch, uv); - } - } - } - - static void OverwriteUvChannel(Mesh exportMesh, Mesh sourceMesh, int channel) - { - if (exportMesh == null || sourceMesh == null) return; - if (channel < 0 || channel > 7) return; - if (sourceMesh.vertexCount != exportMesh.vertexCount) return; - var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + channel); - if (!sourceMesh.HasVertexAttribute(attr)) return; - - int dim = sourceMesh.GetVertexAttributeDimension(attr); - if (dim <= 2) - { - var uv = new List(); - sourceMesh.GetUVs(channel, uv); - if (uv.Count == exportMesh.vertexCount) - exportMesh.SetUVs(channel, uv); - } - else if (dim == 3) - { - var uv = new List(); - sourceMesh.GetUVs(channel, uv); - if (uv.Count == exportMesh.vertexCount) - exportMesh.SetUVs(channel, uv); - } - else - { - var uv = new List(); - sourceMesh.GetUVs(channel, uv); - if (uv.Count == exportMesh.vertexCount) - exportMesh.SetUVs(channel, uv); - } - } - - static bool TryGetAppliedAoUvTarget(out int uvChannel, out int uvComponent) - { - uvChannel = -1; - uvComponent = 0; - - var ch = VertexColorBakingTool.LastAppliedTargetChannel; - if (!ch.HasValue) return false; - - int v = (int)ch.Value; - if (v < (int)AOTargetChannel.UV0_X) return false; // AO was stored in vertex color - - uvChannel = (v - (int)AOTargetChannel.UV0_X) / 2; - uvComponent = (v - (int)AOTargetChannel.UV0_X) % 2; // 0=X, 1=Y - // UV1 (Unity UV set index 1) is reserved for lightmap transfer data. - // Never merge AO into this channel during FBX export. - if (uvChannel == 1) return false; - return true; - } - - static void MergeUvComponentFromDonor(Mesh exportMesh, Mesh donorMesh, int uvChannel, int uvComponent) - { - if (exportMesh == null || donorMesh == null) return; - if (exportMesh.vertexCount != donorMesh.vertexCount) return; - if (uvChannel < 0 || uvChannel > 7) return; - if (uvComponent < 0 || uvComponent > 1) return; - - var donorUv = new List(); - donorMesh.GetUVs(uvChannel, donorUv); - if (donorUv.Count != exportMesh.vertexCount) return; - - var exportUv = new List(); - exportMesh.GetUVs(uvChannel, exportUv); - if (exportUv.Count != exportMesh.vertexCount) - exportUv = new List(donorUv); - - for (int i = 0; i < exportUv.Count; i++) - { - var src = donorUv[i]; - var dst = exportUv[i]; - exportUv[i] = uvComponent == 0 - ? new Vector2(src.x, dst.y) - : new Vector2(dst.x, src.y); - } - - exportMesh.SetUVs(uvChannel, exportUv); - } - - static bool HasUvChannelData(Mesh mesh, int channel) - { - if (mesh == null || channel < 0 || channel > 7) return false; - var attr = (VertexAttribute)((int)VertexAttribute.TexCoord0 + channel); - if (!mesh.HasVertexAttribute(attr)) return false; - - int dim = mesh.GetVertexAttributeDimension(attr); - int vCount = mesh.vertexCount; - if (dim <= 2) - { - var uv = new List(); - mesh.GetUVs(channel, uv); - return uv.Count == vCount; - } - if (dim == 3) - { - var uv = new List(); - mesh.GetUVs(channel, uv); - return uv.Count == vCount; - } - - var uv4 = new List(); - mesh.GetUVs(channel, uv4); - return uv4.Count == vCount; - } - - static Mesh SelectUv2Donor(MeshEntry entry, Mesh resultMesh, int uvChannel) - { - // AO is written into selected UV component by VertexColorBakingTool.ApplyToMesh, - // usually on original/fbx-backed working meshes. - // Keep transferred mesh last - // so UV1 transfer result stays authoritative while AO comes from AO donor. - var candidates = new[] { entry?.originalMesh, entry?.fbxMesh, entry?.repackedMesh, entry?.transferredMesh, resultMesh }; - for (int i = 0; i < candidates.Length; i++) - { - var m = candidates[i]; - if (HasUvChannelData(m, uvChannel)) return m; - } - return null; - } - - bool TryBuildSidecarEntry(MeshEntry entry, Mesh resultMesh, out MeshUv2Entry sidecarEntry) - { - sidecarEntry = null; - if (entry == null || resultMesh == null) - return false; - - bool hasAppliedAoTarget = TryGetAppliedAoUvTarget(out int aoUvChannel, out int aoUvComponent); - var sidecarMesh = UnityEngine.Object.Instantiate(resultMesh); - sidecarMesh.name = resultMesh.name; - try - { - if (entry.fbxMesh != null) - PreserveUvChannels(sidecarMesh, entry.fbxMesh); - if (entry.originalMesh != null && entry.originalMesh != entry.fbxMesh) - { - PreserveUvChannels(sidecarMesh, entry.originalMesh); - OverwriteUvChannel(sidecarMesh, entry.originalMesh, 1); - } - - // TBN: keep tangent presence in sync with the source FBX. If the FBX - // import did not produce tangents, do not let derived/welded meshes - // smuggle a synthesized tangent stream into the sidecar payload. - // When tangents are present, validate the W (handedness) component. - TangentValidator.EnforceTangentsMatchOriginal(sidecarMesh, entry.fbxMesh, "Sidecar"); - - Vector2[] auxiliaryUv = null; - int auxiliaryTargetUvChannel = -1; - if (hasAppliedAoTarget && aoUvChannel != 1) - { - var uvDonor = SelectUv2Donor(entry, resultMesh, aoUvChannel); - if (uvDonor != null) - { - MergeUvComponentFromDonor(sidecarMesh, uvDonor, aoUvChannel, aoUvComponent); - var auxiliaryUvList = new List(); - sidecarMesh.GetUVs(aoUvChannel, auxiliaryUvList); - if (auxiliaryUvList.Count == sidecarMesh.vertexCount) - { - auxiliaryUv = auxiliaryUvList.ToArray(); - auxiliaryTargetUvChannel = aoUvChannel; - } - } - } - - var primaryUvList = new List(); - sidecarMesh.GetUVs(1, primaryUvList); - Vector2[] primaryUv = primaryUvList.Count == sidecarMesh.vertexCount - ? primaryUvList.ToArray() - : null; - int primaryTargetUvChannel = 1; - if (primaryUv == null && auxiliaryUv != null) - { - primaryUv = auxiliaryUv; - primaryTargetUvChannel = auxiliaryTargetUvChannel; - auxiliaryUv = null; - auxiliaryTargetUvChannel = -1; - } - - if (primaryUv == null) - return false; - - var positions = sidecarMesh.vertices; - var colors = sidecarMesh.colors32; - var uv0List = new List(); - (entry.originalMesh ?? resultMesh).GetUVs(0, uv0List); - - string meshName = entry.fbxMesh != null - ? entry.fbxMesh.name - : (entry.originalMesh != null ? entry.originalMesh.name : resultMesh.name); - MeshFingerprint fp = entry.fbxMesh != null ? MeshFingerprint.Compute(entry.fbxMesh) : null; - - sidecarEntry = new MeshUv2Entry - { - meshName = meshName, - uv2 = primaryUv, - welded = entry.wasWelded, - edgeWelded = entry.wasEdgeWelded, - vertPositions = positions, - vertUv0 = uv0List.ToArray(), - optimizedColors = colors.Length == sidecarMesh.vertexCount ? colors : null, - schemaVersion = Uv2DataAsset.CurrentSchemaVersion, - toolVersion = Uv2DataAsset.ToolVersionStr, - sourceFingerprint = fp, - targetUvChannel = primaryTargetUvChannel, - auxiliaryUv = auxiliaryUv, - auxiliaryTargetUvChannel = auxiliaryTargetUvChannel, - stepMeshopt = entry.wasWelded, - stepEdgeWeld = entry.wasEdgeWelded, - stepSymmetrySplit = entry.wasSymmetrySplit, - stepRepack = (entry.lodIndex == ctx.SourceLodIndex), - stepTransfer = (entry.lodIndex != ctx.SourceLodIndex), - }; - return true; - } - finally - { - UnityEngine.Object.DestroyImmediate(sidecarMesh); - } - } - public void ExportFbxPublic(bool overwriteSource) => ExportFbx(overwriteSource, FbxExportIntent.All); public void ExportFbxPublic(bool overwriteSource, FbxExportIntent intent) => ExportFbx(overwriteSource, intent); public void ApplyUv2Public() => ApplyUv2ToFbx(); @@ -3563,264 +3251,6 @@ bool ExportVertexColorsToFbxCore( #endif } - // ───────────────────────────────────────────────────────────────── - // Isolated-channel export (per FbxExportIntent) - // - // Re-saves the source FBX overwriting only the per-vertex channels - // listed in the intent. All other data — node names, hierarchy, - // transforms, material assignments, untouched UV channels, vertex - // colors, normals, tangents — is inherited from the source FBX - // asset on disk via clone-and-snapshot. Use this entry point when - // a tool changed exactly one aspect of the mesh (e.g. only UV2 - // from atlas pack) and must not collateral-mutate the rest. - // ───────────────────────────────────────────────────────────────── - - sealed class IsolatedExportSnapshot - { - public int vertexCount; - public Color32[] colors32; - public Color[] colors; - public Vector3[] normals; - public Vector4[] tangents; - public readonly Vector2[][] uvs = new Vector2[8][]; - } - - static IsolatedExportSnapshot BuildIsolatedSnapshot(Mesh source, FbxExportIntent intent) - { - var snap = new IsolatedExportSnapshot { vertexCount = source.vertexCount }; - if ((intent & FbxExportIntent.VertexColors) != 0) - { - var c32 = source.colors32; - if (c32 != null && c32.Length == source.vertexCount) - snap.colors32 = c32; - else - { - var c = source.colors; - if (c != null && c.Length == source.vertexCount) - snap.colors = c; - } - } - if ((intent & FbxExportIntent.Normals) != 0) - { - var n = source.normals; - if (n != null && n.Length == source.vertexCount) - snap.normals = n; - } - if ((intent & FbxExportIntent.Tangents) != 0) - { - var t = source.tangents; - if (t != null && t.Length == source.vertexCount) - snap.tangents = t; - } - for (int ch = 0; ch < 8; ch++) - { - if (!intent.IncludesUv(ch)) continue; - var list = new List(); - source.GetUVs(ch, list); - if (list.Count == source.vertexCount) - snap.uvs[ch] = list.ToArray(); - } - return snap; - } - - // tempSink is required, not optional: every mesh this method instantiates - // is owned by the caller's scratch list and destroyed by DestroyTempMeshes - // once the FBX is written. A null sink would leak one mesh per matched - // MeshFilter for the lifetime of the editor session, so the parameter - // carries no default and null is rejected outright. - static int CopyIsolatedSnapshotsToClone( - GameObject tempRoot, - Dictionary snapshots, - List tempSink) - { - if (tempSink == null) throw new ArgumentNullException(nameof(tempSink)); - if (snapshots == null) return 0; - int updated = 0; - int visited = 0; - int matched = 0; - foreach (var cloneMf in tempRoot.GetComponentsInChildren(true)) - { - if (cloneMf == null || cloneMf.sharedMesh == null) continue; - visited++; - if (!snapshots.TryGetValue(cloneMf.sharedMesh.name, out var snap)) continue; - matched++; - - if (snap.vertexCount != cloneMf.sharedMesh.vertexCount) - { - UvtLog.Warn($"[FBX Export] Skip '{cloneMf.sharedMesh.name}': vertex-count mismatch " + - $"(authored={snap.vertexCount}, FBX clone={cloneMf.sharedMesh.vertexCount}). " + - "The source FBX re-imports at a different vertex count than the tool worked on — " + - "usually 'Generate Lightmap UVs' splitting vertices. Disable it on the model " + - "importer and re-run the tool."); - continue; - } - - // Clone before mutating — never write into the live FBX - // sub-asset shared by other scene MeshFilters. - var cloneMesh = UnityEngine.Object.Instantiate(cloneMf.sharedMesh); - cloneMesh.name = cloneMf.sharedMesh.name; - // Temporary copy — destroyed with the rest of the export scratch - // meshes once the FBX is written. - tempSink.Add(cloneMesh); - - if (snap.colors32 != null) { cloneMesh.colors32 = snap.colors32; updated++; } - else if (snap.colors != null) { cloneMesh.colors = snap.colors; updated++; } - if (snap.normals != null) { cloneMesh.normals = snap.normals; updated++; } - if (snap.tangents != null) { cloneMesh.tangents = snap.tangents; updated++; } - for (int ch = 0; ch < 8; ch++) - { - if (snap.uvs[ch] == null) continue; - if (snap.uvs[ch].Length != cloneMesh.vertexCount) continue; - cloneMesh.SetUVs(ch, snap.uvs[ch]); - updated++; - } - - cloneMf.sharedMesh = cloneMesh; - } - UvtLog.Verbose($"[FBX Export] CopyIsolatedSnapshotsToClone: visited={visited}, matched={matched}, updates={updated}."); - return updated; - } - - // ───────────────────────────────────────────────────────────────── - // Pre-export preflight — flags FBX-pipeline-checklist violations - // on the cloned hierarchy before export. Soft by design: every - // finding is logged via UvtLog.Warn, none block the export. - // The export is still atomic (write-to-tmp + File.Replace), so a - // logged violation that doesn't block here can be diagnosed and - // re-fixed without ever leaving a corrupt FBX on disk. - // ───────────────────────────────────────────────────────────────── - - static bool IsGenericMeshName(string name) - { - if (string.IsNullOrEmpty(name)) return true; - switch (name) - { - case "Scene": - case "Geometry": - case "Default": - case "Mesh": - case "Combined Mesh": - return true; - default: - return name.StartsWith("Combined Mesh", StringComparison.Ordinal); - } - } - - static bool IsPlaceholderMaterialName(string name) - { - if (string.IsNullOrEmpty(name)) return true; - switch (name) - { - case "Lit": - case "Default": - case "Material": - case "DefaultMaterial": - case "Default-Material": - case "No Name": - return true; - default: - return false; - } - } - - static void RunPreflight( - GameObject tempRoot, - FbxExportIntent intent, - Dictionary snapshots) - { - if (tempRoot == null) return; - - // §5.5 + §8: node + mesh names. Generic names (`Scene`, - // `Geometry`) are flagged because Max FBX importer auto-resets - // mesh attributes to `Scene` on round-trip — a name like that - // is a strong signal the source went through a metadata- - // stripping tool. Invalid characters break Addressables / - // asset bundles / filesystem rules. - int badNodeNames = 0; - int badMeshNames = 0; - foreach (var t in tempRoot.GetComponentsInChildren(true)) - { - if (string.IsNullOrEmpty(t.name) || MeshHygieneUtility.HasInvalidChars(t.name)) - badNodeNames++; - } - foreach (var mf in tempRoot.GetComponentsInChildren(true)) - { - var m = mf.sharedMesh; - if (m != null && IsGenericMeshName(m.name)) badMeshNames++; - } - foreach (var smr in tempRoot.GetComponentsInChildren(true)) - { - var m = smr.sharedMesh; - if (m != null && IsGenericMeshName(m.name)) badMeshNames++; - } - if (badNodeNames > 0) - UvtLog.Warn($"[FBX Preflight] {badNodeNames} node name(s) are empty or contain invalid characters (see §5.5/§8)."); - if (badMeshNames > 0) - UvtLog.Warn($"[FBX Preflight] {badMeshNames} mesh(es) have a generic name (Scene/Geometry/Default/empty); see §5.5."); - - // §1.5: placeholder material names. Soft because they may be - // intentional during an early authoring pass; warning surfaces - // them so they don't ship. - int placeholderMats = 0; - foreach (var mr in tempRoot.GetComponentsInChildren(true)) - { - var mats = mr.sharedMaterials; - if (mats == null) continue; - foreach (var mat in mats) - { - if (mat == null || IsPlaceholderMaterialName(mat.name)) - placeholderMats++; - } - } - if (placeholderMats > 0) - UvtLog.Warn($"[FBX Preflight] {placeholderMats} placeholder material slot(s) (Lit/Default/null); see §1.5."); - - // §4.2: vertex colors RGBA outside [0,1]. Only checked when the - // intent overwrites VertexColors — otherwise the channel comes - // straight from the source FBX and is the source's problem. - if ((intent & FbxExportIntent.VertexColors) != 0 && snapshots != null) - { - int outOfRangeMeshes = 0; - foreach (var snap in snapshots.Values) - { - bool hit = false; - var c = snap.colors; - if (c != null) - { - for (int i = 0; i < c.Length && !hit; i++) - { - var v = c[i]; - if (v.r < 0f || v.r > 1f || v.g < 0f || v.g > 1f || - v.b < 0f || v.b > 1f || v.a < 0f || v.a > 1f) hit = true; - } - } - // colors32 is byte-clamped by definition; nothing to check. - if (hit) outOfRangeMeshes++; - } - if (outOfRangeMeshes > 0) - UvtLog.Warn($"[FBX Preflight] {outOfRangeMeshes} mesh(es) have vertex colors outside [0,1]; see §4.2."); - } - - // §7.8: negative-determinant accumulated scale. Unity reads - // inverted normals as backface-culled — mesh appears - // transparent from the front. - int negScaleNodes = 0; - foreach (var t in tempRoot.GetComponentsInChildren(true)) - { - var s = t.lossyScale; - if (s.x * s.y * s.z < 0f) negScaleNodes++; - } - if (negScaleNodes > 0) - UvtLog.Warn($"[FBX Preflight] {negScaleNodes} node(s) have negative-determinant accumulated scale (mesh will render transparent from front); see §7.8."); - } - - /// - /// Re-save the FBX at overwriting - /// only the per-vertex channels listed in . - /// Mesh names, hierarchy, transforms, material assignments, and all - /// untouched per-vertex channels are preserved from the source FBX. - /// - /// Project path to the FBX to overwrite. // Narrow-intent group dispatcher for ExportFbx. One core call // per source FBX, reusing the standard "overwrite vs save-as" // dialog flow but routing the actual write through the safe @@ -3879,34 +3309,13 @@ void ExportNarrowIntentGroups( #endif } - // Puts a source ModelImporter back to the state ExportIsolatedChannelsToFbx's - // Phase 1 found it in; a no-op when Phase 1 changed nothing. Created BEFORE - // Phase 1 touches the importer and told about each change before the reimport - // that applies it, so a throwing SaveAndReimport is covered too. Disposed at - // the method's exit whichever way it leaves. - sealed class ImporterRestoreScope : IDisposable - { - readonly string path; - ModelImporter importer; - bool readable, quads; - - public ImporterRestoreScope(string path) { this.path = path; } - - /// isReadable was flipped on for the export; put it back off. - public void RestoreReadable(ModelImporter source) { importer = source; readable = true; } - /// keepQuads was toggled on for the export; put it back off. - public void RestoreQuads(ModelImporter source) { importer = source; quads = true; } - - public void Dispose() - { - if (importer == null || (!readable && !quads)) return; - if (readable) importer.isReadable = false; - if (quads) importer.keepQuads = false; - Uv2AssetPostprocessor.bypassPaths.Add(path); - importer.SaveAndReimport(); - } - } - + /// + /// Re-save the FBX at overwriting + /// only the per-vertex channels listed in . + /// Mesh names, hierarchy, transforms, material assignments, and all + /// untouched per-vertex channels are preserved from the source FBX. + /// + /// Project path to the FBX to overwrite. /// Mesh entries supplying source data. Matched /// against the FBX clone by sub-asset name. /// Channels the caller is allowed to write. @@ -3941,12 +3350,12 @@ public bool ExportIsolatedChannelsToFbx( #endif } - // Unified isolated-channel export core. EVERY in-tool FBX-write - // path goes through here — there is no parallel "destructive" - // pipeline. Hierarchy / Materials / Collision mutations are - // expressed as wider bits, gated - // inside this method. Adding a new caller-side ModelExporter. - // ExportObjects invocation is a checklist violation (§12). + // Every in-tool FBX re-save goes through FbxExport.WriteChannels — there is no + // parallel "destructive" pipeline. Hierarchy / Materials / Collision mutations are + // wider FbxExportIntent bits, gated inside the core. A new caller-side + // ModelExporter.ExportObjects call is a checklist violation (§12). The tool's part: + // previews are restored by the callers before, the scene is refreshed and the + // working copies put back after a source re-save. bool ExportFbxIsolatedCore( string sourceFbxPath, IEnumerable entries, @@ -3954,487 +3363,81 @@ bool ExportFbxIsolatedCore( string outputFbxPathOverride) { #if LIGHTMAP_UV_TOOL_FBX_EXPORTER - if (string.IsNullOrEmpty(sourceFbxPath) || entries == null) return false; - - string targetFbxPath = string.IsNullOrEmpty(outputFbxPathOverride) ? sourceFbxPath : outputFbxPathOverride; bool isVariantExport = !string.IsNullOrEmpty(outputFbxPathOverride) && !string.Equals(outputFbxPathOverride, sourceFbxPath, StringComparison.OrdinalIgnoreCase); - - // Snapshot pre-export. Captures only fields covered by intent. - // Phase 1 (importer prep) can trigger a reimport that resets the - // shared FBX sub-asset buffers in place — keying snapshots by - // sub-asset name lets us look up the original data after the - // reimport, when the in-memory mesh is back to its on-disk state. - var snapshots = new Dictionary(StringComparer.Ordinal); - foreach (var e in entries) + bool exported = FbxExport.WriteChannels( + sourceFbxPath, entries, intent, outputFbxPathOverride, + FbxExport.FirstRealMaterial(ctx?.MeshEntries), + isVariantExport ? null : ctx?.LodGroup); + if (!exported) return false; + if (!isVariantExport) { - if (e == null || !e.include) continue; - Mesh sm = e.originalMesh ?? e.fbxMesh; - if (sm == null || string.IsNullOrEmpty(sm.name)) continue; - snapshots[sm.name] = BuildIsolatedSnapshot(sm, intent); + if (ctx?.LodGroup != null) ctx.Refresh(ctx.LodGroup); + RestoreWorkingCopiesToScene(); } - if (snapshots.Count == 0) + return true; +#else + UvtLog.Error("[FBX Export] FBX Exporter package not installed."); + return false; +#endif + } + + string ResolveFbxPath() + => !string.IsNullOrEmpty(ctx.SourceFbxPath) ? ctx.SourceFbxPath + : FbxExport.ResolveSourceFbxPath(ctx.MeshEntries, null, null); + + void RestoreWorkingCopiesToScene() + { + if (ctx?.MeshEntries == null) return; + foreach (var e in ctx.MeshEntries) { - UvtLog.Warn($"[FBX Export] ExportIsolatedChannelsToFbx: no source meshes had data for intent {intent}."); - return false; + if (!e.include || e.meshFilter == null) continue; + if (e.originalMesh != null && e.meshFilter.sharedMesh != e.originalMesh) + e.meshFilter.sharedMesh = e.originalMesh; } + } - // ── Phase 1: Prepare importer (single reimport, scoped to intent) ── - ModelImporter srcImporter = null; - // Importer contract: the source importer ends the export exactly as - // Phase 1 found it — on success, on every early return and on failure - // alike, a throwing Phase 1 reimport included. A using declaration - // disposes at method exit, so no later phase can strand isReadable or - // the variant keepQuads toggle. - using var importerRestore = new ImporterRestoreScope(sourceFbxPath); - if (!isVariantExport) + void ExportFbx(bool overwriteSource) => ExportFbx(overwriteSource, FbxExportIntent.All); + + // ExportFbx with intent. Narrow intent (no Hierarchy and no LodGroup bits) + // delegates per group to the isolated channel re-save (atomic write, preflight, + // nothing but the intended channels touched). Wide intent (Hierarchy or LodGroup) + // is the LOD-rebuild pipeline: mesh replacement by name, new LOD children, stale- + // child pruning, hierarchy normalisation, collision injection from the sidecar. + // The mechanics live in FbxExport; the policy — dialogs, backups, importer lock, + // sidecar storage, relink, what to refresh — stays here. Migrating the wide path + // to the atomic write is a follow-up; it keeps the direct overwrite that existing + // tooling's sequencing depends on. + void ExportFbx(bool overwriteSource, FbxExportIntent intent) + { +#if LIGHTMAP_UV_TOOL_FBX_EXPORTER + if (intent == FbxExportIntent.None) { - srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; - bool needsReimport = false; - if (srcImporter != null) - { - // generateSecondaryUV writes Unity UV channel 1. - // Lock only when the intent overwrites that channel. - // Intentionally NOT restored in Phase 5: re-enabling it - // makes Unity regenerate channel 1 on the restore reimport - // and clobber the UV1 we just authored into the FBX. When - // the tool writes UV1, authored data must win, so the - // setting stays off. - if (intent.IncludesUv(1) && srcImporter.generateSecondaryUV) - { srcImporter.generateSecondaryUV = false; needsReimport = true; } - - // NOTE: we deliberately do NOT disable weldVertices / - // meshCompression / meshOptimizationFlags here. The snapshot - // is captured from the tool's working mesh, which was built - // from the CURRENT import; the clone below is also loaded - // from the current import, so the two share a vertex layout. - // Disabling weld/optimization and reimporting would renumber - // the clone's vertices, desyncing it from the snapshot — - // CopyIsolatedSnapshotsToClone would then skip every mesh on - // a vertex-count mismatch and write nothing. The wide - // LOD-rebuild path never does this reimport either. And - // because those settings were previously restored right - // after export, the final re-imported FBX kept the user's - // original weld/optimization state regardless — so removing - // the reimport changes nothing about the exported result - // except that the authored data now actually lands. - if (!srcImporter.isReadable) - { srcImporter.isReadable = true; needsReimport = true; importerRestore.RestoreReadable(srcImporter); } - // Quad preservation: keepQuads changes only the index-buffer - // shape (4 indices per quad instead of two triangles) — the - // vertex stream, its order and count, is untouched, so the - // snapshots captured above still match the re-imported clone - // by vertex count. With keepQuads the clone serialized in - // Phase 2 carries the FBX's original polygon topology, and - // Unity's FBX exporter writes the mesh's topology — quads in, - // quads out. Same locking rationale as the wide path's - // PrepareImportSettings(lockForFbxOverwrite). Like - // generateSecondaryUV above, the value deliberately persists: - // restoring keepQuads=false would triangulate the just-written - // quad FBX again on the next import. - if (!srcImporter.keepQuads) - { srcImporter.keepQuads = true; needsReimport = true; } - if (needsReimport) - { - Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); - srcImporter.SaveAndReimport(); - } - } + UvtLog.Warn("[FBX Export] ExportFbx called with FbxExportIntent.None — nothing to write."); + return; } - else + if (ctx?.MeshEntries == null || ctx.MeshEntries.Count == 0) { - // Variant export writes a NEW file and must leave the source - // importer unchanged (ExportVertexColorsToFbxAs contract). But - // the clone serialized in Phase 2 needs the source's quad - // topology so the variant FBX does not come out triangulated — - // toggle keepQuads on for the clone reimport; importerRestore - // puts it back at method exit. - srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; - if (srcImporter != null && !srcImporter.keepQuads && - AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) != null) - { - srcImporter.keepQuads = true; - importerRestore.RestoreQuads(srcImporter); - Uv2AssetPostprocessor.bypassPaths.Add(sourceFbxPath); - srcImporter.SaveAndReimport(); - } + UvtLog.Error("[FBX Export] No meshes loaded."); + return; } - // ── Phase 2: Build export hierarchy ── - var fbxAsset = AssetDatabase.LoadMainAssetAtPath(sourceFbxPath) as GameObject; - if (fbxAsset == null) - { - UvtLog.Error($"[FBX Export] Cannot load FBX asset at '{sourceFbxPath}'."); - return false; - } + // Restore any active preview (checker, AO, shell colors) before export + // so that original materials are captured, not preview materials. + RestoreAllPreviews(); - // Clone the source FBX prefab as-is — preserves names, hierarchy, - // transforms, materials, and every channel the intent does not - // cover. CopyIsolatedSnapshotsToClone overwrites only the - // intended channels on freshly cloned per-node meshes. - var tempRoot = UnityEngine.Object.Instantiate(fbxAsset); - tempRoot.name = fbxAsset.name; + // The source FBX: the entries' own, else the LODGroup's prefab source, else + // the path cached at Refresh. Generated LODs (.asset paths) export into it. + string sourceFbxFile = FbxExport.ResolveSourceFbxPath(ctx.MeshEntries, ctx.LodGroup, ctx.SourceFbxPath); + var fbxGroups = FbxExport.GroupByFbx(ctx.MeshEntries, GetResultMesh, sourceFbxFile); + if (fbxGroups.Count == 0) { UvtLog.Error("[FBX Export] No processed meshes to export."); return; } - int updated = 0; - bool exported = false; - Dictionary renameMap = null; - // Mesh copies created while baking node transforms — destroyed after export. - var bakedMeshes = new List(); - try - { - updated = CopyIsolatedSnapshotsToClone(tempRoot, snapshots, bakedMeshes); - if (updated == 0 && (intent & (FbxExportIntent.Hierarchy | FbxExportIntent.Materials)) == 0) - { - // Per-vertex-only intent with no matching meshes — nothing to write. - // Hierarchy / Materials intents are still meaningful with zero - // mesh updates (they restructure the FBX without per-vertex changes). - UvtLog.Warn($"[FBX Export] No matching meshes in clone for intent {intent}."); - return false; - } - - // Hierarchy mutations — gated on Hierarchy bit. Renames children - // to baseName_LOD{N}, resets root to identity, bakes collision - // transforms into vertices. Returns oldName→newName map for - // post-reimport scene relink. - // bakedMeshes sink: NormalizeExportHierarchy creates a mesh copy per - // node while baking collision transforms. Without the sink those - // copies leak — DestroyTempMeshes(bakedMeshes) in the finally below - // would clean up nothing. - if ((intent & FbxExportIntent.Hierarchy) != 0) - renameMap = NormalizeExportHierarchy(tempRoot, bakedMeshes); - - // Material mutations — gated on Materials bit. PrepareCollisionMaterials - // copies a real material onto _COL renderers (avoids stale "Lit" - // default in the FBX). TrimMaterialArrays prunes sharedMaterials - // to subMeshCount. - if ((intent & FbxExportIntent.Materials) != 0) - { - PrepareCollisionMaterials(tempRoot); - TrimMaterialArrays(tempRoot); - } - - // Pre-export preflight — surfaces FBX-pipeline-checklist - // violations on tempRoot before we commit to disk. Soft - // by design (logged, never blocks): collateral mutations - // we can't catch from snapshots show up here as warnings. - RunPreflight(tempRoot, intent, snapshots); - - // ── Phase 3: Export FBX (atomic) ── - // Write to .tmp first, verify, then File.Replace - // for atomic rename. If ModelExporter throws or writes a - // zero-byte file, the source FBX on disk is untouched — - // unlike direct overwrite, which leaves a corrupt FBX - // and a stale .meta when the exporter mid-faults. - string fullPath = System.IO.Path.GetFullPath(targetFbxPath); - // Hash the full path so two FBX files with the same filename - // (e.g. Assets/A/Chair.fbx and Assets/B/Chair.fbx) get distinct - // backup names and never overwrite each other. unchecked cast - // rather than Math.Abs — Math.Abs(int.MinValue) throws, and the - // throw would land after the .meta backup has already begun. - string pathHash = unchecked((uint)fullPath.GetHashCode()).ToString("X8"); - string metaBak = System.IO.Path.Combine( - System.IO.Path.GetTempPath(), - System.IO.Path.GetFileName(fullPath) + "." + pathHash + ".meta.bak"); - bool metaBackedUp = System.IO.File.Exists(fullPath + ".meta"); - if (metaBackedUp) - System.IO.File.Copy(fullPath + ".meta", metaBak, true); - - string tmpRelPath = targetFbxPath + ".tmp"; - string tmpAbsPath = System.IO.Path.GetFullPath(tmpRelPath); - // Strip any leftover tmp from a prior crashed run. - if (System.IO.File.Exists(tmpAbsPath)) - System.IO.File.Delete(tmpAbsPath); - - var exportOptions = new UnityEditor.Formats.Fbx.Exporter.ExportModelOptions - { ExportFormat = UnityEditor.Formats.Fbx.Exporter.ExportFormat.Binary }; - - // Signal the UV2 postprocessor to skip sidecar UV2 injection - // on the reimport triggered by the rename below — otherwise - // an isolated UV2 export would be immediately overwritten by - // stale sidecar data. - Uv2AssetPostprocessor.fbxOverwritePaths.Add(targetFbxPath); - - UnityEditor.Formats.Fbx.Exporter.ModelExporter.ExportObjects( - tmpRelPath, new UnityEngine.Object[] { tempRoot }, exportOptions); - - // Verify tmp file is sane before we commit. - var tmpInfo = new System.IO.FileInfo(tmpAbsPath); - if (!tmpInfo.Exists || tmpInfo.Length == 0) - { - if (System.IO.File.Exists(tmpAbsPath)) - System.IO.File.Delete(tmpAbsPath); - throw new System.IO.IOException( - $"FBX Exporter produced an empty/missing file at '{tmpRelPath}'."); - } - - // Atomic commit. File.Replace requires the target to exist - // (overwrite + backup). For a fresh write (variant export - // to a new path), File.Move is used. - if (System.IO.File.Exists(fullPath)) - { - string fbxBak = System.IO.Path.Combine( - System.IO.Path.GetTempPath(), - System.IO.Path.GetFileName(fullPath) + "." + pathHash + ".fbx.bak"); - System.IO.File.Replace(tmpAbsPath, fullPath, fbxBak); - // Backup served its purpose (rollback window during - // the rename itself). The .meta backup is still our - // primary safety net for the import settings. - if (System.IO.File.Exists(fbxBak)) - System.IO.File.Delete(fbxBak); - } - else - { - System.IO.File.Move(tmpAbsPath, fullPath); - } - - // ModelExporter may have generated a .meta for the .tmp - // sidecar entry — strip it so AssetDatabase doesn't pick - // up a ghost asset on the next refresh. - string tmpMetaPath = tmpAbsPath + ".meta"; - if (System.IO.File.Exists(tmpMetaPath)) - System.IO.File.Delete(tmpMetaPath); - - UvtLog.Info($"[FBX Export] Isolated channels {intent} ({updated} updates) -> {targetFbxPath}"); - exported = true; - - if (metaBackedUp && System.IO.File.Exists(metaBak)) - { - System.IO.File.Copy(metaBak, fullPath + ".meta", true); - System.IO.File.Delete(metaBak); - } - } - catch (Exception ex) - { - Uv2AssetPostprocessor.fbxOverwritePaths.Remove(targetFbxPath); - // Best-effort: drop a leftover .tmp so a retry isn't blocked - // by the "Strip any leftover tmp" sweep above logging into - // a misleading state. - try - { - string tmpAbsPath = System.IO.Path.GetFullPath(targetFbxPath + ".tmp"); - if (System.IO.File.Exists(tmpAbsPath)) - System.IO.File.Delete(tmpAbsPath); - } - catch { /* swallow — original error matters */ } - UvtLog.Error("[FBX Export] Isolated channel export failed: " + ex); - return false; - } - finally - { - UnityEngine.Object.DestroyImmediate(tempRoot); - DestroyTempMeshes(bakedMeshes); - } - - // ── Phase 4: Reimport + relink ── - // Variant export skips scene relink — live scene must keep - // showing source meshes; only the new FBX needs to be picked up. - AssetDatabase.Refresh(); - if (isVariantExport) - { - // The variant FBX was written with the source's quad topology; - // pin keepQuads on the new file's importer so the project view - // matches the file content (a fresh importer defaults to - // keepQuads=false and would show the quads triangulated). - var outImporter = AssetImporter.GetAtPath(targetFbxPath) as ModelImporter; - if (outImporter != null && !outImporter.keepQuads) - { - outImporter.keepQuads = true; - outImporter.SaveAndReimport(); - } - } - if (!isVariantExport && ctx?.LodGroup != null) - { - // renameMap is non-null only when the intent included - // Hierarchy and NormalizeExportHierarchy renamed nodes — - // for narrow per-vertex intents we re-bind purely by - // sub-asset name. - RelinkSceneMeshReferences(sourceFbxPath, - renameMap != null && renameMap.Count > 0 ? renameMap : null, - ctx.LodGroup); - ctx.Refresh(ctx.LodGroup); - } - - // ── Phase 5: Restore working copies ── - // The importer itself is restored by importerRestore at method exit: - // isReadable goes back off; Phase 1 no longer touches weld / - // compression / optimization, generateSecondaryUV is left disabled - // on purpose so the just-authored UV1 is not regenerated, and on a - // source re-save keepQuads stays enabled so the re-saved FBX keeps - // its quads on every future import (Phase 1 quad-preservation - // rationale). For a variant export the source FBX and its importer - // end exactly as they started — the variant file on disk keeps its - // quads regardless of that import setting. - if (!isVariantExport) - RestoreWorkingCopiesToScene(); - return exported; -#else - UvtLog.Error("[FBX Export] FBX Exporter package not installed."); - return false; -#endif - } - - string ResolveFbxPath() - { - string path = ctx.SourceFbxPath; - if (!string.IsNullOrEmpty(path)) return path; - foreach (var e in ctx.MeshEntries) - { - if (e.fbxMesh == null) continue; - string p = AssetDatabase.GetAssetPath(e.fbxMesh); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) - return p; - } - return null; - } - - void PrepareCollisionMaterials(GameObject tempRoot) - { - Material colFallbackMat = null; - foreach (var e in ctx.MeshEntries) - { - if (e.renderer != null && e.renderer.sharedMaterial != null && - !CheckerTexturePreview.IsPreviewShader(e.renderer.sharedMaterial.shader.name)) - { colFallbackMat = e.renderer.sharedMaterial; break; } - } - foreach (var colMf in tempRoot.GetComponentsInChildren(true)) - { - if (colMf == null || colMf.sharedMesh == null) continue; - if (!MeshHygieneUtility.IsCollisionNodeName(colMf.gameObject.name)) continue; - var colMr = colMf.GetComponent(); - if (colFallbackMat != null) - { - if (colMr == null) colMr = colMf.gameObject.AddComponent(); - colMr.sharedMaterials = new[] { colFallbackMat }; - } - else if (colMr != null) - UnityEngine.Object.DestroyImmediate(colMr); - } - } - - void TrimMaterialArrays(GameObject tempRoot) - { - foreach (var mr in tempRoot.GetComponentsInChildren(true)) - { - if (mr == null) continue; - var mf = mr.GetComponent(); - if (mf == null || mf.sharedMesh == null) continue; - var mats = mr.sharedMaterials; - if (mats.Length > mf.sharedMesh.subMeshCount) - { - var trimmed = new Material[mf.sharedMesh.subMeshCount]; - System.Array.Copy(mats, trimmed, trimmed.Length); - mr.sharedMaterials = trimmed; - } - } - } - - void RestoreWorkingCopiesToScene() - { - if (ctx?.MeshEntries == null) return; - foreach (var e in ctx.MeshEntries) - { - if (!e.include || e.meshFilter == null) continue; - if (e.originalMesh != null && e.meshFilter.sharedMesh != e.originalMesh) - e.meshFilter.sharedMesh = e.originalMesh; - } - } - - void ExportFbx(bool overwriteSource) => ExportFbx(overwriteSource, FbxExportIntent.All); - - // ExportFbx with intent. Narrow intent (no Hierarchy and no - // LodGroup bits) delegates per-group to ExportFbxIsolatedCore — - // the safe atomic-write + preflight path. Wide intent (Hierarchy - // or LodGroup set) keeps the LOD-rebuild pipeline below: mesh - // replacement by name, stale-child pruning, NormalizeExport- - // Hierarchy, collision injection from sidecar. Migrating the - // wide path to atomic write is a follow-up — for now the LOD- - // rebuild scenario keeps direct overwrite for backwards - // compatibility with existing tooling that depends on its - // sequencing. - void ExportFbx(bool overwriteSource, FbxExportIntent intent) - { -#if LIGHTMAP_UV_TOOL_FBX_EXPORTER - if (intent == FbxExportIntent.None) - { - UvtLog.Warn("[FBX Export] ExportFbx called with FbxExportIntent.None — nothing to write."); - return; - } - if (ctx?.MeshEntries == null || ctx.MeshEntries.Count == 0) - { - UvtLog.Error("[FBX Export] No meshes loaded."); - return; - } - - // Restore any active preview (checker, AO, shell colors) before export - // so that original materials are captured, not preview materials. - RestoreAllPreviews(); - - // Find the source FBX path from source LOD entries - string sourceFbxFile = null; - foreach (var e in ctx.MeshEntries) - { - if (e.fbxMesh == null) continue; - string p = AssetDatabase.GetAssetPath(e.fbxMesh); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - { sourceFbxFile = p; break; } - } - // Fallback: try prefab/model source of the LODGroup GameObject - if (string.IsNullOrEmpty(sourceFbxFile) && ctx.LodGroup != null) - { - var prefabSrc = PrefabUtility.GetCorrespondingObjectFromSource(ctx.LodGroup.gameObject); - if (prefabSrc != null) - { - string p = AssetDatabase.GetAssetPath(prefabSrc); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - sourceFbxFile = p; - } - // Also try child renderers - if (string.IsNullOrEmpty(sourceFbxFile)) - { - foreach (var r in ctx.LodGroup.GetComponentsInChildren(true)) - { - var rSrc = PrefabUtility.GetCorrespondingObjectFromSource(r); - if (rSrc == null) continue; - string p = AssetDatabase.GetAssetPath(rSrc); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - { sourceFbxFile = p; break; } - } - } - } - - // Last resort: use cached FBX path from context (set during initial Refresh) - if (string.IsNullOrEmpty(sourceFbxFile)) - sourceFbxFile = ctx.SourceFbxPath; - - var fbxGroups = new Dictionary>(); - foreach (var e in ctx.MeshEntries) - { - if (!e.include) continue; - Mesh resultMesh = GetResultMesh(e); - if (resultMesh == null) continue; - // Use source FBX path for all entries, not per-entry path - // (generated LODs have .asset paths, not FBX) - Mesh pathMesh = e.fbxMesh ?? e.originalMesh; - string fbxPath = pathMesh != null ? AssetDatabase.GetAssetPath(pathMesh) : null; - if (string.IsNullOrEmpty(fbxPath) || !fbxPath.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) - fbxPath = sourceFbxFile; // fallback to source FBX - if (string.IsNullOrEmpty(fbxPath)) continue; - if (!fbxGroups.ContainsKey(fbxPath)) - fbxGroups[fbxPath] = new List<(MeshEntry, Mesh)>(); - fbxGroups[fbxPath].Add((e, resultMesh)); - } - if (fbxGroups.Count == 0) { UvtLog.Error("[FBX Export] No processed meshes to export."); return; } - - // Narrow-intent fast path. When the caller is not asking for - // hierarchy / LOD-chain mutations, every group is exported - // through the safe core (atomic write, preflight, no - // NormalizeExportHierarchy, no material trim, no collision - // injection from sidecar). This is the path UV2 transfer / - // UV pack / vertex color baking should take — it preserves - // node names, transforms, materials and untouched per-vertex - // channels byte-for-byte (modulo what Unity's FBX Exporter - // itself rewrites at the FBX-document level). - if ((intent & (FbxExportIntent.Hierarchy | FbxExportIntent.LodGroup)) == 0) + // Narrow-intent fast path: no hierarchy / LOD-chain mutation asked for, so + // every group goes through the safe core. This is the path UV2 transfer, UV + // pack and vertex color baking take — node names, transforms, materials and + // untouched per-vertex channels come through byte-for-byte (modulo what + // Unity's FBX Exporter itself rewrites at the document level). + if ((intent & (FbxExportIntent.Hierarchy | FbxExportIntent.LodGroup)) == 0) { ExportNarrowIntentGroups(fbxGroups, intent, overwriteSource); return; @@ -4443,16 +3446,24 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) bool allGroupsSucceeded = true; var overwrittenFbxPaths = new HashSet(); var transientReplayEntriesByPath = new Dictionary>(); - // Collected node renames from NormalizeExportHierarchy, per FBX path. - // Used after reimport to re-link scene mesh references. + // Node renames from NormalizeExportHierarchy, per FBX path, for the relink after reimport. var meshRenamesByFbx = new Dictionary>(); + bool persistentSidecarMode = PostprocessorDefineManager.IsEnabled(); + var ao = AoTarget; + // Sidecar mode off: the postprocessor replays the entries once on the next + // import, and every reimport the export triggers after that has to be re-armed. + void ReArm(string path) + { + if (transientReplayEntriesByPath.TryGetValue(path, out var list)) + SidecarStore.ArmTransientReplay(path, list); + } + foreach (var kv in fbxGroups) { string sourceFbxPath = kv.Key; var entries = kv.Value; string exportPath; bool groupSucceeded = false; - bool persistentSidecarMode = PostprocessorDefineManager.IsEnabled(); string tempDir = System.IO.Path.GetTempPath(); // Hash the full path so two FBX files with the same filename // (e.g. Assets/A/Chair.fbx and Assets/B/Chair.fbx) get distinct @@ -4470,11 +3481,10 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) continue; } exportPath = sourceFbxPath; - string fullSource = System.IO.Path.GetFullPath(sourceFbxPath); - string fullMeta = fullSource + ".meta"; + string fullMeta = fullSourcePath + ".meta"; try { - System.IO.File.Copy(fullSource, System.IO.Path.Combine(tempDir, fbxBakName + ".bak"), true); + System.IO.File.Copy(fullSourcePath, System.IO.Path.Combine(tempDir, fbxBakName + ".bak"), true); if (System.IO.File.Exists(fullMeta)) System.IO.File.Copy(fullMeta, System.IO.Path.Combine(tempDir, fbxBakName + ".meta.bak"), true); } @@ -4495,17 +3505,16 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) exportPath = "Assets" + exportPath.Substring(dataPath.Length); } - // For overwrite flow, lock import settings BEFORE export. - // This avoids an extra post-export reimport that can let third-party - // importers (e.g. Bakery) touch UV2 again before user validation. - // lockForFbxOverwrite=true normalizes topology and scale (keepQuads, - // useFileScale, globalScale=1.0) so the Setup → Repack → Transfer → - // Export round-trip round-trips 1:1 metres and preserves quads. + // Overwrite: lock the import settings BEFORE the export, so no extra + // post-export reimport lets a third-party importer (Bakery) touch UV2 + // before the user validates. lockForFbxOverwrite normalises topology and + // scale (keepQuads, useFileScale, globalScale=1.0) so the round-trip is + // 1:1 metres and keeps quads. if (overwriteSource) Uv2AssetPostprocessor.PrepareImportSettings(sourceFbxPath, force: true, lockForFbxOverwrite: true); - // Ensure FBX meshes are readable so the FBX Exporter can access - // vertex data (especially for _COL meshes without sidecar data). + // The FBX Exporter needs readable meshes (notably _COL meshes without + // sidecar data). var srcImporter = AssetImporter.GetAtPath(sourceFbxPath) as ModelImporter; bool madeReadable = false; if (!overwriteSource && srcImporter != null && !srcImporter.isReadable) @@ -4516,385 +3525,74 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) madeReadable = true; } - // Clone original FBX hierarchy and replace only the meshes + // Clone the FBX hierarchy and replace only the meshes. var fbxPrefab = AssetDatabase.LoadAssetAtPath(sourceFbxPath); if (fbxPrefab == null) { UvtLog.Error("[FBX Export] Cannot load FBX prefab: " + sourceFbxPath); allGroupsSucceeded = false; continue; } var tempRoot = UnityEngine.Object.Instantiate(fbxPrefab); tempRoot.name = fbxPrefab.name; - PromoteRootMeshToLod0Child(tempRoot); + FbxExport.PromoteRootMeshToLod0Child(tempRoot); - // Temporary mesh copies built for this export group — export clones, - // transform-baked copies and stripped collision meshes. They only ever - // live on tempRoot, so they are destroyed once the export finished. + // Temporary meshes of this group — export copies, transform-baked copies, + // stripped collision meshes, sidecar hulls. They only ever live on + // tempRoot and are destroyed once the export finished. var tempMeshes = new List(); try { - var lastLodRendererTemplate = FindLastLodRenderer(entries); + var lastLodRendererTemplate = FbxExport.FindLastLodRenderer(entries); - // Build lookup: original mesh name -> export mesh + // export mesh name → export mesh / scene renderer whose settings it takes var meshReplacements = new Dictionary(); var meshRendererTemplates = new Dictionary(); foreach (var (entry, resultMesh) in entries) { - string meshName = ResolveExportMeshName(entry, resultMesh); - var exportMesh = UnityEngine.Object.Instantiate(resultMesh); - // Temporary copy — destroyed after the FBX export. - tempMeshes.Add(exportMesh); - // Without an explicit name, Object.Instantiate produces "X(Clone)" - // and Unity's FBX Exporter falls back to the FBX scene name - // ("Scene") when writing the FbxMesh node — every reimported mesh - // ends up named "Scene". Pin the canonical name now so the FBX - // node and post-reimport mesh asset stay aligned with the source. - exportMesh.name = meshName; - // Copy UV channels from fbxMesh first (base UVs), - // then from originalMesh (has AO and other tool modifications). - if (entry.fbxMesh != null) - PreserveUvChannels(exportMesh, entry.fbxMesh); - if (entry.originalMesh != null && entry.originalMesh != entry.fbxMesh) - { - PreserveUvChannels(exportMesh, entry.originalMesh); - // Only overwrite UV1 from originalMesh when there is no - // repack/transfer result — otherwise the repacked lightmap - // UV in channel 1 takes priority over the pre-pipeline data. - if (entry.repackedMesh == null && entry.transferredMesh == null) - OverwriteUvChannel(exportMesh, entry.originalMesh, 1); - } - // AO often writes into UV2 components. Source meshes may not - // have UV2 at all, so pick the best available donor. - if (TryGetAppliedAoUvTarget(out int aoUvChannel, out int aoUvComponent)) - { - var uv2Donor = SelectUv2Donor(entry, resultMesh, aoUvChannel); - if (uv2Donor != null) - MergeUvComponentFromDonor(exportMesh, uv2Donor, aoUvChannel, aoUvComponent); - } - // Keep exported tangents consistent with the source mesh - // (from main's TangentValidator). meshName is already - // resolved at the top of this loop body. - TangentValidator.EnforceTangentsMatchOriginal(exportMesh, entry.fbxMesh, "FBX Export"); - meshReplacements[meshName] = exportMesh; + var exportMesh = FbxExport.BuildExportMesh(entry, resultMesh, ao, tempMeshes); + meshReplacements[exportMesh.name] = exportMesh; if (entry.renderer != null) - meshRendererTemplates[meshName] = entry.renderer; + meshRendererTemplates[exportMesh.name] = entry.renderer; } - // Replace meshes in cloned hierarchy - var replaced = new HashSet(); - foreach (var mf in tempRoot.GetComponentsInChildren(true)) - { - if (mf.sharedMesh != null && meshReplacements.TryGetValue(mf.sharedMesh.name, out var replacement)) - { - string meshName = mf.sharedMesh.name; - replaced.Add(meshName); - mf.sharedMesh = replacement; - if (meshRendererTemplates.TryGetValue(meshName, out var srcRenderer)) - { - var dstRenderer = mf.GetComponent(); - if (dstRenderer != null) - CopyRendererSettings(srcRenderer, dstRenderer); - } - } - } - foreach (var smr in tempRoot.GetComponentsInChildren(true)) - { - if (smr.sharedMesh != null && meshReplacements.TryGetValue(smr.sharedMesh.name, out var replacement)) - { - string meshName = smr.sharedMesh.name; - replaced.Add(meshName); - smr.sharedMesh = replacement; - if (meshRendererTemplates.TryGetValue(meshName, out var srcRenderer)) - CopyRendererSettings(srcRenderer, smr); - } - } + var replaced = FbxExport.ReplaceMeshes(tempRoot, meshReplacements, meshRendererTemplates); - // Add meshes that weren't found in the clone (new LODs from generation) + // Meshes the clone did not have (generated LODs) become new children. foreach (var (entry, resultMesh) in entries) { - string meshName = ResolveExportMeshName(entry, resultMesh); + string meshName = FbxExport.ResolveExportMeshName(entry, resultMesh); if (replaced.Contains(meshName)) continue; - // Remove existing child with same name (from previous export) - for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) - { - var ch = tempRoot.transform.GetChild(ci); - if (ch.name == meshName) UnityEngine.Object.DestroyImmediate(ch.gameObject); - } - var child = new GameObject(meshName); - child.transform.SetParent(tempRoot.transform, false); - if (entry.renderer != null) - { - child.transform.localPosition = entry.renderer.transform.localPosition; - child.transform.localRotation = entry.renderer.transform.localRotation; - child.transform.localScale = entry.renderer.transform.localScale; - } - var newMf = child.AddComponent(); - var exportMesh = UnityEngine.Object.Instantiate(resultMesh); - // Temporary copy — destroyed after the FBX export. - tempMeshes.Add(exportMesh); - // See the matching note in the replace-existing branch above: - // empty/Clone names cause Unity FBX Exporter to write "Scene". - exportMesh.name = meshName; - if (entry.fbxMesh != null) - PreserveUvChannels(exportMesh, entry.fbxMesh); - if (entry.originalMesh != null && entry.originalMesh != entry.fbxMesh) - { - PreserveUvChannels(exportMesh, entry.originalMesh); - if (entry.repackedMesh == null && entry.transferredMesh == null) - OverwriteUvChannel(exportMesh, entry.originalMesh, 1); - } - if (TryGetAppliedAoUvTarget(out int aoUvChannel, out int aoUvComponent)) - { - var uv2Donor = SelectUv2Donor(entry, resultMesh, aoUvChannel); - if (uv2Donor != null) - MergeUvComponentFromDonor(exportMesh, uv2Donor, aoUvChannel, aoUvComponent); - } - TangentValidator.EnforceTangentsMatchOriginal(exportMesh, entry.fbxMesh, "FBX Export"); - newMf.sharedMesh = exportMesh; - var mr = child.AddComponent(); - if (lastLodRendererTemplate != null) - { - CopyRendererSettings(lastLodRendererTemplate, mr); - GameObjectUtility.SetStaticEditorFlags(child, GameObjectUtility.GetStaticEditorFlags(lastLodRendererTemplate.gameObject)); - } - else if (entry.renderer != null) - { - CopyRendererSettings(entry.renderer, mr); - GameObjectUtility.SetStaticEditorFlags(child, GameObjectUtility.GetStaticEditorFlags(entry.renderer.gameObject)); - } + FbxExport.AddLodChild(tempRoot, meshName, meshReplacements[meshName], entry.renderer, lastLodRendererTemplate); } - // ── Remove stale children from cloned FBX ── - // For full LOD workflows we prune renderable leftovers that no longer - // belong to the export set. For standalone/partial FBX overwrite we - // must preserve untouched siblings and only replace the selected mesh. - // Must run BEFORE NormalizeExportHierarchy (which renames LOD0). + // Full LOD workflows prune renderable leftovers outside the export set; + // a standalone / partial overwrite keeps untouched siblings and only + // replaces the selected mesh. Before NormalizeExportHierarchy, which + // renames LOD0. if (!(ctx != null && ctx.StandaloneMesh)) - { - var validMeshNames = new HashSet(); - foreach (var (entry, resultMesh) in entries) - { - string meshName = ResolveExportMeshName(entry, resultMesh); - validMeshNames.Add(meshName); - } - - // Protect meshes referenced by MeshCollider components. - // Some projects keep collision nodes without strict _COL naming, - // and there can be multiple colliders in the hierarchy. - var colliderMeshNames = new HashSet(StringComparer.OrdinalIgnoreCase); - var colliderRootNames = new HashSet(StringComparer.OrdinalIgnoreCase); - foreach (var mc in tempRoot.GetComponentsInChildren(true)) - { - if (mc == null) continue; - colliderRootNames.Add(mc.gameObject.name); - if (mc.sharedMesh != null && !string.IsNullOrEmpty(mc.sharedMesh.name)) - colliderMeshNames.Add(mc.sharedMesh.name); - } - - for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) - { - var ch = tempRoot.transform.GetChild(ci); - // Preserve existing collision nodes from source FBX even when - // they are not part of mesh transfer entries. - if (MeshHygieneUtility.IsCollisionNodeName(ch.name)) - continue; - if (colliderRootNames.Contains(ch.name)) - continue; - var chMf = ch.GetComponent(); - if (chMf != null && chMf.sharedMesh != null && - colliderMeshNames.Contains(chMf.sharedMesh.name)) - continue; - var chSmr = ch.GetComponent(); - bool hasRenderableMesh = - (chMf != null && chMf.sharedMesh != null) || - (chSmr != null && chSmr.sharedMesh != null); - // Keep structural/container nodes (no direct mesh on node). - // Removing them flattens FBX hierarchy and can break prefabs. - if (!hasRenderableMesh) - continue; - string childMeshName = null; - if (chMf != null && chMf.sharedMesh != null) - childMeshName = chMf.sharedMesh.name; - else if (chSmr != null && chSmr.sharedMesh != null) - childMeshName = chSmr.sharedMesh.name; - - // Keep nodes when either the node name OR its bound mesh name - // is part of the export set. Some DCC/Unity imports keep node - // names different from mesh names (especially for root LOD0), - // and pruning by node name alone can drop valid LOD content. - bool keepByNodeName = validMeshNames.Contains(ch.name); - bool keepByMeshName = !string.IsNullOrEmpty(childMeshName) && - validMeshNames.Contains(childMeshName); - if (!keepByNodeName && !keepByMeshName) - { - UvtLog.Verbose($"[FBX Export] Pruning stale child '{ch.name}'"); - UnityEngine.Object.DestroyImmediate(ch.gameObject); - } - } - } + FbxExport.PruneStaleChildren(tempRoot, new HashSet(meshReplacements.Keys)); else - { UvtLog.Verbose("[FBX Export] Standalone overwrite: preserving untouched sibling meshes in source FBX."); - } - // ── Normalize FBX hierarchy ── - // Ensure root is a clean pivot (identity transform, no mesh) - // and LOD0 child named same as root gets _LOD0 suffix. - // Returns a map of oldNodeName → newNodeName for mesh re-linking. - var nodeRenameMap = NormalizeExportHierarchy(tempRoot, tempMeshes); + // Clean root pivot, _LOD0 suffix on the root-named child, contiguous + // LOD numbering, transforms baked into the meshes. + var nodeRenameMap = FbxExport.NormalizeExportHierarchy(tempRoot, tempMeshes); if (nodeRenameMap.Count > 0) meshRenamesByFbx[sourceFbxPath] = nodeRenameMap; - // Add collision meshes from sidecar (if any). - // When sidecar provides collision data, remove existing _COL - // children first to avoid duplicates. - var collisionData = CollisionMeshTool.GetCollisionMeshesFromSidecar(sourceFbxPath); - if (collisionData.Count > 0) - { - for (int ci = tempRoot.transform.childCount - 1; ci >= 0; ci--) - { - var ch = tempRoot.transform.GetChild(ci); - if (MeshHygieneUtility.IsCollisionNodeName(ch.name)) - UnityEngine.Object.DestroyImmediate(ch.gameObject); - } - } - int collisionMeshCount = 0; - foreach (var (colMeshName, colMeshes, isConvex) in collisionData) - { - // GetCollisionMeshesFromSidecar builds every one of these from the - // sidecar's serialized arrays — they are never FBX sub-assets, and - // the caller owns them. Destroyed after the export. - tempMeshes.AddRange(colMeshes); - if (colMeshes.Count == 1 && !isConvex) - { - // Simplified: single _COL child (no MeshRenderer — avoids stale material) - var colChild = new GameObject(colMeshName + "_COL"); - colChild.transform.SetParent(tempRoot.transform, false); - colChild.AddComponent().sharedMesh = colMeshes[0]; - collisionMeshCount++; - } - else - { - // Convex: container with hull children - var container = new GameObject(colMeshName + "_COL"); - container.transform.SetParent(tempRoot.transform, false); - for (int hi = 0; hi < colMeshes.Count; hi++) - { - var hullChild = new GameObject($"{colMeshName}_COL_Hull{hi}"); - hullChild.transform.SetParent(container.transform, false); - hullChild.AddComponent().sharedMesh = colMeshes[hi]; - collisionMeshCount++; - } - } - } - - if (collisionMeshCount > 0) - UvtLog.Verbose($"[FBX Export] Added {collisionMeshCount} collision mesh(es) from sidecar"); - - // Strip _COL meshes to bare minimum: vertices + triangles + - // averaged normals + tangents. No UVs, colors, or other channels. - // Assign a real material from LOD0 render mesh to prevent FBX - // Exporter from writing a default "Lit" material on collision nodes. - Material colFallbackMat = null; - foreach (var (entry, _) in entries) - { - if (entry.renderer != null && entry.renderer.sharedMaterial != null && - !CheckerTexturePreview.IsPreviewShader(entry.renderer.sharedMaterial.shader.name)) - { - colFallbackMat = entry.renderer.sharedMaterial; - break; - } - } - - foreach (var colMf in tempRoot.GetComponentsInChildren(true)) - { - if (colMf == null || colMf.sharedMesh == null) continue; - if (!MeshHygieneUtility.IsCollisionNodeName(colMf.gameObject.name)) continue; - - // Assign LOD0 material to collision renderer so FBX Exporter - // doesn't create a stale "Lit" default. If no render material - // is available, destroy the renderer as fallback. - var colMr = colMf.GetComponent(); - if (colFallbackMat != null) - { - if (colMr == null) - colMr = colMf.gameObject.AddComponent(); - colMr.sharedMaterials = new[] { colFallbackMat }; - } - else if (colMr != null) - { - UnityEngine.Object.DestroyImmediate(colMr); - } - - var srcCol = colMf.sharedMesh; - if (srcCol.isReadable) - { - // Owns copies of srcCol's data (SetVertices/SetTriangles copy), - // so it can be destroyed after the export without touching srcCol. - var stripped = new Mesh { name = srcCol.name }; - tempMeshes.Add(stripped); - stripped.SetVertices(srcCol.vertices); - for (int s = 0; s < srcCol.subMeshCount; s++) - stripped.SetTriangles(srcCol.GetTriangles(s), s); - stripped.RecalculateNormals(); - // Only synthesize tangents when the source actually had them. - // Otherwise downstream tooling sees added TBN data that did - // not exist in the original FBX import. - if (TangentValidator.HasTangents(srcCol)) - { - var normals = stripped.normals; - var tangents = new Vector4[normals.Length]; - for (int ti = 0; ti < normals.Length; ti++) - { - Vector3 n = normals[ti]; - Vector3 t = Vector3.Cross(n, Vector3.up); - if (t.sqrMagnitude < 0.001f) - t = Vector3.Cross(n, Vector3.right); - t.Normalize(); - tangents[ti] = new Vector4(t.x, t.y, t.z, 1f); - } - stripped.tangents = tangents; - TangentValidator.ValidateTangentsW(tangents, stripped.name, "FBX Export (collision)"); - } - stripped.RecalculateBounds(); - colMf.sharedMesh = stripped; - } - else - { - // Non-readable FBX sub-asset — can't strip attributes and - // the FBX Exporter can't export it either. Log a warning; - // the collision data should normally come from the sidecar. - UvtLog.Warn($"[FBX Export] Collision mesh '{srcCol.name}' is not readable — " + - "skipping strip. Re-save collision to sidecar to fix."); - } - } - - // Trim material arrays to match submesh count — prevents - // FBX Exporter from creating spurious default "Lit" material entries. - foreach (var mr in tempRoot.GetComponentsInChildren(true)) - { - var mesh = mr.GetComponent()?.sharedMesh; - if (mesh == null) continue; - var mats = mr.sharedMaterials; - if (mats.Length > mesh.subMeshCount) - { - UvtLog.Verbose($"[FBX Export] Trimming materials on '{mr.gameObject.name}': " + - $"{mats.Length} → {mesh.subMeshCount}"); - var trimmed = new Material[mesh.subMeshCount]; - System.Array.Copy(mats, trimmed, trimmed.Length); - mr.sharedMaterials = trimmed; - } - } + // Collision from the sidecar replaces the clone's _COL children; every + // _COL mesh is then stripped to geometry and given a real material. + int collisionMeshCount = FbxExport.InjectCollisionMeshes(tempRoot, SidecarStore.CollisionMeshes(sourceFbxPath), tempMeshes); + FbxExport.StripCollisionMeshes(tempRoot, FbxExport.FirstRealMaterial(entries.Select(p => p.entry)), tempMeshes); + FbxExport.TrimMaterialArrays(tempRoot); - var exportOptions = new ExportModelOptions { ExportFormat = ExportFormat.Binary }; - ModelExporter.ExportObjects(exportPath, new UnityEngine.Object[] { tempRoot }, exportOptions); + FbxExport.Write(exportPath, tempRoot); int totalExported = entries.Count + collisionMeshCount; UvtLog.Info("[FBX Export] Exported (binary) " + totalExported + " mesh(es) -> " + exportPath); groupSucceeded = true; // Restore original .meta from temp backup if (overwriteSource) { - string fullPath = System.IO.Path.GetFullPath(sourceFbxPath); string metaBak = System.IO.Path.Combine(tempDir, fbxBakName + ".meta.bak"); if (System.IO.File.Exists(metaBak)) { - System.IO.File.Copy(metaBak, fullPath + ".meta", true); + System.IO.File.Copy(metaBak, fullSourcePath + ".meta", true); System.IO.File.Delete(metaBak); } string fbxBak = System.IO.Path.Combine(tempDir, fbxBakName + ".bak"); @@ -4907,7 +3605,7 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) finally { UnityEngine.Object.DestroyImmediate(tempRoot); - DestroyTempMeshes(tempMeshes); + FbxExport.DestroyTempMeshes(tempMeshes); } // Restore isReadable if we changed it (non-overwrite path only; @@ -4922,21 +3620,22 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) if (!groupSucceeded) allGroupsSucceeded = false; - // Save sidecar entries so our postprocessor (order=10000) can - // re-apply UV2 after third-party postprocessors (e.g. Bakery auto-unwrap). - // If Sidecar UV2 Mode is off, mark the path for one-shot replay and - // cleanup after the current import finishes. + // Store the UV2 entries so our postprocessor (order=10000) re-applies UV2 + // after third-party postprocessors (e.g. Bakery auto-unwrap): in the + // sidecar when Sidecar UV2 Mode is on, as a one-shot replay otherwise. if (overwriteSource) { var sidecarEntries = BuildSidecarEntriesForExport(entries); if (persistentSidecarMode) { - SaveSidecarForExport(sourceFbxPath, sidecarEntries); + int saved = SidecarStore.SaveEntries(sourceFbxPath, sidecarEntries); + if (saved > 0) + UvtLog.Info($"[FBX Export] Saved {saved} UV2 entries to sidecar '{SidecarStore.PathFor(sourceFbxPath)}' for post-import re-application"); } else { transientReplayEntriesByPath[sourceFbxPath] = sidecarEntries; - ArmTransientReplayForOverwrite(sourceFbxPath, transientReplayEntriesByPath); + ReArm(sourceFbxPath); } Uv2AssetPostprocessor.managedImportPaths.Add(sourceFbxPath); @@ -4944,72 +3643,45 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) Uv2AssetPostprocessor.transientReplayPaths.Add(sourceFbxPath); } - // Re-apply UV2-friendly importer flags after the .meta backup is - // restored above. The backup was captured BEFORE the pre-export - // lock at line 1749, so it carries the user's original settings — - // potentially keepQuads=false, globalScale=0.01, generateSecondaryUV=true, - // etc. Restoring it as-is would undo every flag we set and break - // triangulation/scale on the next import. peek mode lets us skip - // the second SaveAndReimport when nothing actually drifted. + // Re-apply the UV2-friendly importer flags after the .meta backup was + // restored above: the backup predates the pre-export lock, so it carries + // the user's original settings (possibly keepQuads=false, globalScale=0.01, + // generateSecondaryUV=true) and restoring it as-is would undo every flag. + // peek mode skips the second SaveAndReimport when nothing drifted. if (overwriteSource && groupSucceeded && Uv2AssetPostprocessor.PrepareImportSettings(sourceFbxPath, force: true, peek: true, lockForFbxOverwrite: true)) { - if (!persistentSidecarMode) - ArmTransientReplayForOverwrite(sourceFbxPath, transientReplayEntriesByPath); + if (!persistentSidecarMode) ReArm(sourceFbxPath); Uv2AssetPostprocessor.PrepareImportSettings(sourceFbxPath, force: true, lockForFbxOverwrite: true); } } - // Clean up scene-generated LOD objects from LodGenerationTool. - // These are now embedded in the exported FBX and would duplicate on reimport. + // Scene LOD objects from LodGenerationTool are embedded in the exported FBX + // now and would duplicate on reimport. if (overwriteSource && allGroupsSucceeded) LodGenerationTool.ActiveInstance?.ClearGeneratedLods(); - // UV2 is baked into the FBX AND saved in sidecar (for re-application after - // third-party postprocessors like Bakery). Don't clear sidecar entries. - + // UV2 is baked into the FBX AND kept in the sidecar (for re-application after + // third-party postprocessors like Bakery); the sidecar entries stay. AssetDatabase.Refresh(); - // Re-link scene mesh references after FBX reimport. - // Unity recreates sub-asset meshes on reimport; old MeshFilter - // references go Missing even when names didn't change. - // Always re-link for every overwritten FBX. + // Unity recreates sub-asset meshes on reimport; old MeshFilter references go + // Missing even when names did not change. Relink every overwritten FBX. if (overwriteSource && allGroupsSucceeded && ctx?.LodGroup != null) { foreach (string fbxPath in overwrittenFbxPaths) { - Dictionary renameMap = null; - meshRenamesByFbx.TryGetValue(fbxPath, out renameMap); - RelinkSceneMeshReferences(fbxPath, renameMap, ctx.LodGroup); + meshRenamesByFbx.TryGetValue(fbxPath, out var renameMap); + FbxExport.RelinkSceneMeshReferences(fbxPath, renameMap, ctx.LodGroup); } } - // Remove stale material remaps created by FBX importer defaults on - // collision-only nodes. This clears unwanted "Lit"/"No Name" entries - // that should not survive an overwrite export. + // Stale "Lit" / "No Name" material remaps the importer created for collision- + // only nodes must not survive an overwrite. if (overwriteSource && allGroupsSucceeded) { foreach (string fbxPath in overwrittenFbxPaths) - { - var imp = AssetImporter.GetAtPath(fbxPath) as ModelImporter; - if (imp == null) continue; - var map = imp.GetExternalObjectMap(); - var toRemove = new List(); - foreach (var kvp in map) - { - if (kvp.Key.type != typeof(Material)) continue; - if (kvp.Key.name == "Lit" || kvp.Key.name == "No Name") - toRemove.Add(kvp.Key); - } - if (toRemove.Count > 0) - { - if (transientReplayEntriesByPath.Count > 0) - ArmTransientReplayForOverwrite(fbxPath, transientReplayEntriesByPath); - foreach (var key in toRemove) - imp.RemoveRemap(key); - imp.SaveAndReimport(); - } - } + FbxExport.RemoveDefaultMaterialRemaps(fbxPath, () => ReArm(fbxPath)); } if (allGroupsSucceeded) @@ -5017,21 +3689,11 @@ void ExportFbx(bool overwriteSource, FbxExportIntent intent) #endif } - static void ArmTransientReplayForOverwrite( - string assetPath, - Dictionary> transientReplayEntriesByPath) - { - if (string.IsNullOrEmpty(assetPath) || transientReplayEntriesByPath == null) - return; + // Where vertex AO was written, as the export and the sidecar need it. + static SidecarStore.AoUvTarget AoTarget => SidecarStore.AoUvTarget.From(VertexColorBakingTool.LastAppliedTargetChannel); - if (!transientReplayEntriesByPath.TryGetValue(assetPath, out var entries) || - entries == null || entries.Count == 0) - return; - - Uv2AssetPostprocessor.SetTransientReplayEntries(assetPath, entries); - Uv2AssetPostprocessor.managedImportPaths.Add(assetPath); - Uv2AssetPostprocessor.transientReplayPaths.Add(assetPath); - } + bool TryBuildSidecarEntry(MeshEntry entry, Mesh resultMesh, out MeshUv2Entry sidecarEntry) + => SidecarStore.TryBuildEntry(entry, resultMesh, entry != null && entry.lodIndex == ctx.SourceLodIndex, AoTarget, out sidecarEntry); List BuildSidecarEntriesForExport(List<(MeshEntry entry, Mesh resultMesh)> entries) { @@ -5048,128 +3710,6 @@ List BuildSidecarEntriesForExport(List<(MeshEntry entry, Mesh resu return sidecarEntries; } - /// - /// Build and save sidecar UV2 entries from export data so the postprocessor - /// can re-apply UV2 after third-party postprocessors (e.g. Bakery auto-unwrap). - /// - void SaveSidecarForExport(string fbxPath, List sidecarEntries) - { - string sidecarPath = Uv2DataAsset.GetSidecarPath(fbxPath); - var data = AssetDatabase.LoadAssetAtPath(sidecarPath); - if (data == null) - { - data = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(data, sidecarPath); - } - - int saved = 0; - foreach (var sidecarEntry in sidecarEntries) - { - data.Set(sidecarEntry); - saved++; - } - - if (saved > 0) - { - EditorUtility.SetDirty(data); - AssetDatabase.SaveAssets(); - UvtLog.Info($"[FBX Export] Saved {saved} UV2 entries to sidecar '{sidecarPath}' for post-import re-application"); - } - } - - static void ClearUv2EntriesForFbxPaths(IEnumerable fbxPaths) - { - int cleared = 0; - foreach (var fbxPath in fbxPaths) - { - if (string.IsNullOrEmpty(fbxPath)) continue; - string sidecarPath = Uv2DataAsset.GetSidecarPath(fbxPath); - var data = AssetDatabase.LoadAssetAtPath(sidecarPath); - if (data == null) continue; - - bool hasCollision = data.collisionEntries != null && data.collisionEntries.Count > 0; - bool hasUv2 = data.entries != null && data.entries.Count > 0; - - if (hasUv2) - { - data.entries.Clear(); - cleared++; - } - - if (hasCollision) - { - // Keep sidecar alive for collision data - EditorUtility.SetDirty(data); - } - else if (hasUv2) - { - // No collision entries — sidecar is now empty, delete it - AssetDatabase.DeleteAsset(sidecarPath); - } - } - if (cleared > 0) - { - AssetDatabase.SaveAssets(); - UvtLog.Info($"[FBX Export] Cleared UV2 entries from {cleared} sidecar(s) after overwrite (collision entries preserved)."); - } - } - - static Renderer FindLastLodRenderer(List<(MeshEntry entry, Mesh resultMesh)> entries) - { - Renderer best = null; - int bestLod = int.MinValue; - foreach (var (entry, _) in entries) - { - if (entry == null || entry.renderer == null) continue; - if (entry.lodIndex >= bestLod) - { - bestLod = entry.lodIndex; - best = entry.renderer; - } - } - return best; - } - - internal static void CopyRendererSettings(Renderer src, Renderer dst) - { - if (src == null || dst == null) return; - - var srcMats = src.sharedMaterials; - bool hasPreviewMat = false; - for (int i = 0; i < srcMats.Length; i++) - { - var m = srcMats[i]; - string shaderName = m != null && m.shader != null ? m.shader.name : null; - if (CheckerTexturePreview.IsPreviewShader(shaderName)) - { - hasPreviewMat = true; - break; - } - } - if (!hasPreviewMat) - dst.sharedMaterials = srcMats; - dst.shadowCastingMode = src.shadowCastingMode; - dst.receiveShadows = src.receiveShadows; - dst.lightProbeUsage = src.lightProbeUsage; - dst.reflectionProbeUsage = src.reflectionProbeUsage; - dst.probeAnchor = src.probeAnchor; - dst.motionVectorGenerationMode = src.motionVectorGenerationMode; - dst.allowOcclusionWhenDynamic = src.allowOcclusionWhenDynamic; - dst.renderingLayerMask = src.renderingLayerMask; - dst.rendererPriority = src.rendererPriority; - - if (src is MeshRenderer srcMr && dst is MeshRenderer dstMr) - { - dstMr.receiveGI = srcMr.receiveGI; - dstMr.scaleInLightmap = srcMr.scaleInLightmap; - dstMr.stitchLightmapSeams = srcMr.stitchLightmapSeams; - dstMr.lightmapScaleOffset = srcMr.lightmapScaleOffset; - dstMr.realtimeLightmapScaleOffset = srcMr.realtimeLightmapScaleOffset; - dstMr.lightmapIndex = srcMr.lightmapIndex; - dstMr.realtimeLightmapIndex = srcMr.realtimeLightmapIndex; - } - } - void RefreshSetupSelectionCache(GameObject selected, List<(GameObject go, int lodIndex)> siblings) { int selectionId = selected != null ? selected.GetInstanceID() : -1; @@ -5185,7 +3725,7 @@ void RefreshSetupSelectionCache(GameObject selected, List<(GameObject go, int lo foreach (var r in renderers) { var mf = r.GetComponent(); - tris += GetTriangleCount(mf != null ? mf.sharedMesh : null); + tris += MeshHygieneUtility.GetTriangleCount(mf != null ? mf.sharedMesh : null); } cachedSetupDetectedLods.Add((go, lodIndex, renderers.Length, tris)); } @@ -5202,381 +3742,6 @@ bool SetupSelectionHasRenderers(GameObject selected) return setupSelectionHasRenderers; } - static int GetTriangleCount(Mesh mesh) - { - if (mesh == null) return 0; - long indexCount = 0; - int subMeshCount = mesh.subMeshCount; - for (int i = 0; i < subMeshCount; i++) - indexCount += mesh.GetIndexCount(i); - return (int)(indexCount / 3L); - } - - /// - /// If the cloned source FBX carries its visible mesh on the root object, - /// split it into a new child named after the mesh so the rest of the - /// export pipeline treats it as a LOD entry. NormalizeExportHierarchy - /// will then rename the new child to baseName_LOD0. - /// - static void PromoteRootMeshToLod0Child(GameObject tempRoot) - { - if (tempRoot == null) return; - var rootMf = tempRoot.GetComponent(); - if (rootMf == null || rootMf.sharedMesh == null) return; - var rootMr = tempRoot.GetComponent(); - - var rootMesh = rootMf.sharedMesh; - - // Skip if a direct child already holds this mesh — source FBX has - // both a root-level mesh and a duplicate LOD child; we'd collide. - for (int ci = 0; ci < tempRoot.transform.childCount; ci++) - { - var existing = tempRoot.transform.GetChild(ci).GetComponent(); - if (existing != null && existing.sharedMesh == rootMesh) return; - } - - // Name the child after the mesh — the stale-child pruning keeps - // children whose name matches a mesh-entry key, and - // NormalizeExportHierarchy renames "direct child equal to root name" - // to baseName_LOD0. - string childName = rootMesh.name; - if (string.IsNullOrEmpty(childName)) childName = tempRoot.name; - - var lod0 = new GameObject(childName); - lod0.transform.SetParent(tempRoot.transform, false); - lod0.transform.localPosition = Vector3.zero; - lod0.transform.localRotation = Quaternion.identity; - lod0.transform.localScale = Vector3.one; - - var newMf = lod0.AddComponent(); - newMf.sharedMesh = rootMesh; - - if (rootMr != null) - { - var newMr = lod0.AddComponent(); - CopyRendererSettings(rootMr, newMr); - GameObjectUtility.SetStaticEditorFlags(lod0, - GameObjectUtility.GetStaticEditorFlags(tempRoot)); - UnityEngine.Object.DestroyImmediate(rootMr); - } - UnityEngine.Object.DestroyImmediate(rootMf); - } - - /// - /// Normalizes the export hierarchy: - /// - Root transform reset to identity (clean pivot at 0,0,0). - /// - Direct child with same name as root (LOD0 without suffix) renamed to _LOD0. - /// - Collision node transforms baked into vertices (pivot at origin). - /// Does NOT move meshes off the root — preserves original FBX structure. - /// - /// - /// Returns a dictionary of oldNodeName → newNodeName for nodes that were renamed. - /// Used to re-link scene mesh references after FBX reimport. - /// is required — this method instantiates one - /// mesh copy per transform-baked node, and the caller destroys them once the FBX - /// export has finished (see ). The parameter carries - /// no default: a caller that omitted it would leak every copy for the rest of the - /// editor session, and nothing about that failure is visible at compile time. - /// - static Dictionary NormalizeExportHierarchy( - GameObject root, - List bakedMeshSink) - { - if (bakedMeshSink == null) throw new ArgumentNullException(nameof(bakedMeshSink)); - - var renameMap = new Dictionary(); - string baseName = root.name; - string sanitizedBaseName = MeshHygieneUtility.SanitizeName(baseName); - if (string.IsNullOrEmpty(sanitizedBaseName)) - sanitizedBaseName = "Unnamed"; - - // Reset root transform to identity (clean pivot at origin) - root.transform.localPosition = Vector3.zero; - root.transform.localRotation = Quaternion.identity; - root.transform.localScale = Vector3.one; - - // Rename direct child that matches root name (LOD0 without suffix) to baseName_LOD0 - foreach (Transform child in root.transform) - { - if (child.name == baseName || child.name == sanitizedBaseName) - { - string oldName = child.name; - child.name = sanitizedBaseName + "_LOD0"; - if (oldName != child.name) - renameMap[oldName] = child.name; - break; - } - } - - // Normalize direct child LOD names to contiguous _LOD0.._LODN suffixes - // PER GROUP. Group key = the child's own prefix before "_LOD" — so - // hierarchies with multiple LOD chains under one root (e.g. - // /_LOD0..2 + /_LOD0..2) keep their distinct - // prefixes instead of being collapsed into one _LOD0..N chain. - // Prevents importer warnings ("_LOD1 found but no _LOD0") when source - // names contained invalid characters (e.g. dots) and were sanitized - // inconsistently across tools. - var groupedLodChildren = new Dictionary>(); - var groupOrder = new List(); - foreach (Transform child in root.transform) - { - if (MeshHygieneUtility.IsCollisionNodeName(child.name)) - continue; - - var mf = child.GetComponent(); - var smr = child.GetComponent(); - bool hasMesh = (mf != null && mf.sharedMesh != null) || - (smr != null && smr.sharedMesh != null); - if (!hasMesh) - continue; - - // Any LOD index the name carries, even one the LODGroup cannot hold: this - // pass only groups and orders children, MeshNaming decides the rule. - string groupPrefix = MeshNaming.SplitLodSuffix(child.name, out string lodSuffix); - if (lodSuffix.Length == 0 || !int.TryParse(lodSuffix.Substring(lodSuffix.ToUpperInvariant().LastIndexOf("LOD") + 3), out int parsedIndex)) - continue; - - if (!groupedLodChildren.TryGetValue(groupPrefix, out var list)) - { - list = new List<(Transform, int, int)>(); - groupedLodChildren[groupPrefix] = list; - groupOrder.Add(groupPrefix); - } - list.Add((child, parsedIndex, child.GetSiblingIndex())); - } - - foreach (var groupPrefix in groupOrder) - { - var list = groupedLodChildren[groupPrefix]; - list.Sort((a, b) => - { - int cmp = a.index.CompareTo(b.index); - return cmp != 0 ? cmp : a.siblingIndex.CompareTo(b.siblingIndex); - }); - - for (int i = 0; i < list.Count; i++) - { - string normalizedName = groupPrefix + "_LOD" + i; - string oldName = list[i].transform.name; - if (oldName != normalizedName) - { - list[i].transform.name = normalizedName; - renameMap[oldName] = normalizedName; - } - } - } - - // Bake non-identity transforms into mesh vertices for ALL children, - // then reset to identity. This normalizes scale (common problem: - // FBX imported at 0.01 with compensating 100x scale on node) and - // ensures exported FBX has clean 1,1,1 scale on every node. - foreach (var childMf in root.GetComponentsInChildren(true)) - { - if (childMf == null || childMf.sharedMesh == null) continue; - // Skip root itself (already reset above) - if (childMf.transform == root.transform) continue; - - var t = childMf.transform; - if (t.localPosition == Vector3.zero && - t.localRotation == Quaternion.identity && - t.localScale == Vector3.one) - continue; // already at identity - - var mesh = childMf.sharedMesh; - if (!mesh.isReadable) continue; - - // A cloned FBX hierarchy can contain several nodes that instance - // the same Mesh. Baking into sharedMesh directly would apply each - // node's transform cumulatively to that one object. Give every - // transformed node its own copy before mutating the vertex data. - var bakedMesh = UnityEngine.Object.Instantiate(mesh); - bakedMesh.name = mesh.name; - childMf.sharedMesh = bakedMesh; - // Temporary copy — the caller destroys it after the FBX export. - bakedMeshSink.Add(bakedMesh); - - BakeTransformIntoMesh(bakedMesh, t); - - // Reset transform to identity - t.localPosition = Vector3.zero; - t.localRotation = Quaternion.identity; - t.localScale = Vector3.one; - } - - return renameMap; - } - - /// - /// Destroys temporary mesh copies collected during export hierarchy setup. - /// DestroyImmediate on the temp root only frees GameObjects, so the mesh - /// copies have to be released explicitly. Call only AFTER the FBX export - /// finished — the exporter reads vertex data straight from these meshes. - /// - static void DestroyTempMeshes(List meshes) - { - if (meshes == null) return; - foreach (var mesh in meshes) - { - if (mesh != null) - UnityEngine.Object.DestroyImmediate(mesh); - } - meshes.Clear(); - } - - /// - /// Bake a Transform's local position/rotation/scale into mesh vertex data. - /// After calling, the transform can be safely reset to identity without - /// changing the visual result. Handles vertices, normals, and tangents. - /// - static void BakeTransformIntoMesh(Mesh mesh, Transform t) - => MeshTransform.BakeMatrix(mesh, Matrix4x4.TRS(t.localPosition, t.localRotation, t.localScale)); - - /// - /// After FBX reimport, re-link scene MeshFilter/MeshCollider/SkinnedMeshRenderer - /// references to the fresh sub-asset meshes. Unity recreates sub-assets on reimport - /// so old references go Missing even when names didn't change. - /// is optional — provides oldName→newName for renamed nodes. - /// - static void RelinkSceneMeshReferences( - string fbxPath, - Dictionary renameMap, - LODGroup lodGroup) - { - if (lodGroup == null) return; - - // Load all mesh sub-assets from the reimported FBX keyed by name - var subAssets = AssetDatabase.LoadAllAssetsAtPath(fbxPath); - var meshByName = new Dictionary(StringComparer.OrdinalIgnoreCase); - foreach (var asset in subAssets) - { - var mesh = asset as Mesh; - if (mesh != null && !meshByName.ContainsKey(mesh.name)) - meshByName[mesh.name] = mesh; - } - - if (meshByName.Count == 0) return; - - int relinked = 0; - var root = lodGroup.transform; - - // ── Re-link MeshFilter references ── - foreach (var mf in root.GetComponentsInChildren(true)) - { - if (mf == null) continue; - - if (mf.sharedMesh != null) - { - // Mesh reference exists — try to refresh to new sub-asset by name - string meshName = mf.sharedMesh.name; - - // Check if this mesh was renamed - if (renameMap != null && renameMap.TryGetValue(meshName, out string newName)) - meshName = newName; - - if (meshByName.TryGetValue(meshName, out var freshMesh) && mf.sharedMesh != freshMesh) - { - Undo.RecordObject(mf, "Relink Mesh"); - mf.sharedMesh = freshMesh; - relinked++; - } - } - else - { - // Missing mesh — try to find by GameObject name - string goName = mf.gameObject.name; - - // Direct match - if (meshByName.TryGetValue(goName, out var match)) - { - Undo.RecordObject(mf, "Relink Mesh"); - mf.sharedMesh = match; - relinked++; - continue; - } - - // Try renamed name - if (renameMap != null) - { - foreach (var kvp in renameMap) - { - if (goName == kvp.Key && meshByName.TryGetValue(kvp.Value, out var renamedMesh)) - { - Undo.RecordObject(mf, "Relink Mesh"); - mf.sharedMesh = renamedMesh; - relinked++; - break; - } - } - } - - // Fallback: fuzzy match by stripping LOD suffix from GO name - if (mf.sharedMesh == null) - { - foreach (var kvp in meshByName) - { - if (goName.Contains(kvp.Key) || kvp.Key.Contains(goName)) - { - Undo.RecordObject(mf, "Relink Mesh"); - mf.sharedMesh = kvp.Value; - relinked++; - break; - } - } - } - } - } - - // ── Re-link MeshCollider references ── - foreach (var mc in root.GetComponentsInChildren(true)) - { - if (mc == null) continue; - - if (mc.sharedMesh != null) - { - string meshName = mc.sharedMesh.name; - if (renameMap != null && renameMap.TryGetValue(meshName, out string newName)) - meshName = newName; - - if (meshByName.TryGetValue(meshName, out var freshMesh) && mc.sharedMesh != freshMesh) - { - Undo.RecordObject(mc, "Relink Collider Mesh"); - mc.sharedMesh = freshMesh; - relinked++; - } - } - else - { - // Missing collider mesh — try by GO name - if (meshByName.TryGetValue(mc.gameObject.name, out var match)) - { - Undo.RecordObject(mc, "Relink Collider Mesh"); - mc.sharedMesh = match; - relinked++; - } - } - } - - // ── Rename scene GameObjects to match new FBX node names ── - if (renameMap != null) - { - foreach (var kvp in renameMap) - { - foreach (Transform child in root) - { - if (child.name == kvp.Key) - { - Undo.RecordObject(child.gameObject, "Rename to match FBX"); - child.name = kvp.Value; - break; - } - } - } - } - - if (relinked > 0) - UvtLog.Info($"[FBX Export] Relinked {relinked} mesh reference(s) after reimport."); - } - void GenerateLods() { if (ctx.LodGroup == null) return; @@ -5793,22 +3958,8 @@ void ResetWorkingCopies() void ResetUv2FromFbx() { if (ctx.LodGroup == null) return; - var fbxPaths = new HashSet(); - foreach (var e in ctx.MeshEntries) - { - Mesh m = e.fbxMesh ?? e.originalMesh; - if (m == null) continue; - string p = AssetDatabase.GetAssetPath(m); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(p); - } - - foreach (string fbx in fbxPaths) - { - string sp = Uv2DataAsset.GetSidecarPath(fbx); - if (AssetDatabase.LoadAssetAtPath(sp) != null) - AssetDatabase.DeleteAsset(sp); - } + var fbxPaths = SidecarStore.FbxPaths(ctx.MeshEntries); + SidecarStore.Delete(fbxPaths); AssetDatabase.Refresh(); foreach (string fbx in fbxPaths) AssetDatabase.ImportAsset(fbx, ImportAssetOptions.ForceUpdate); @@ -5825,21 +3976,8 @@ void ResetPipelineState() if (!EditorUtility.DisplayDialog("Reset Pipeline State", "Delete all sidecars and reset?", "Reset", "Cancel")) return; RestoreAllPreviews(); - var fbxPaths = new HashSet(); - foreach (var e in ctx.MeshEntries) - { - Mesh m = e.fbxMesh ?? e.originalMesh; - if (m == null) continue; - string p = AssetDatabase.GetAssetPath(m); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(p); - } - foreach (string fbx in fbxPaths) - { - string sp = Uv2DataAsset.GetSidecarPath(fbx); - if (AssetDatabase.LoadAssetAtPath(sp) != null) - AssetDatabase.DeleteAsset(sp); - } + var fbxPaths = SidecarStore.FbxPaths(ctx.MeshEntries); + SidecarStore.Delete(fbxPaths); AssetDatabase.Refresh(); foreach (string fbx in fbxPaths) AssetDatabase.ImportAsset(fbx, ImportAssetOptions.ForceUpdate); @@ -5851,16 +3989,7 @@ void ResetPipelineState() void RestoreFbxFromGitMain() { - var fbxPaths = new HashSet(); - foreach (var e in ctx.MeshEntries) - { - Mesh m = e.fbxMesh ?? e.originalMesh; - if (m == null) continue; - string p = AssetDatabase.GetAssetPath(m); - if (!string.IsNullOrEmpty(p) && p.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(p); - } - + var fbxPaths = SidecarStore.FbxPaths(ctx.MeshEntries); if (fbxPaths.Count == 0) { UvtLog.Warn("[Backup] No FBX paths found in mesh entries"); @@ -5929,35 +4058,15 @@ void RestoreLightmapPreview() void UpdateSelectedSidecar() { selectedSidecarPath = selectedFbxPath = selectedResetLabel = null; - var fbxPaths = new HashSet(); - if (ctx?.MeshEntries != null) - foreach (var e in ctx.MeshEntries) - { - Mesh m = e.fbxMesh ?? e.originalMesh; - if (m == null) continue; - string path = AssetDatabase.GetAssetPath(m); - if (!string.IsNullOrEmpty(path) && path.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) - fbxPaths.Add(path); - } - foreach (string fbx in fbxPaths) - { - string sidecar = Uv2DataAsset.GetSidecarPath(fbx); - if (AssetDatabase.LoadAssetAtPath(sidecar) != null) - { - selectedFbxPath = fbx; - selectedSidecarPath = sidecar; - selectedResetLabel = System.IO.Path.GetFileNameWithoutExtension(fbx); - return; - } - } + if (!SidecarStore.TryFindFirst(SidecarStore.FbxPaths(ctx?.MeshEntries), out selectedFbxPath, out selectedSidecarPath)) + return; + selectedResetLabel = System.IO.Path.GetFileNameWithoutExtension(selectedFbxPath); } void TryLoadSettingsFromSidecar() { - if (string.IsNullOrEmpty(selectedSidecarPath)) return; - var data = AssetDatabase.LoadAssetAtPath(selectedSidecarPath); - if (data?.toolSettings == null) return; - var s = data.toolSettings; + var s = SidecarStore.LoadSettings(selectedSidecarPath); + if (s == null) return; ctx.AtlasResolution = SanitizeAtlasResolution(s.atlasResolution); ctx.ShellPaddingPx = SanitizePadding(s.shellPaddingPx); ctx.BorderPaddingPx = SanitizePadding(s.borderPaddingPx); @@ -5994,21 +4103,17 @@ static bool IsSafeAssetFolderPath(string path) void SaveSettingsToSidecar() { - if (string.IsNullOrEmpty(selectedSidecarPath)) return; - var data = AssetDatabase.LoadAssetAtPath(selectedSidecarPath); - if (data == null) return; - if (data.toolSettings == null) data.toolSettings = new ToolSettings(); - var s = data.toolSettings; - s.atlasResolution = ctx.AtlasResolution; - s.shellPaddingPx = ctx.ShellPaddingPx; - s.borderPaddingPx = ctx.BorderPaddingPx; - s.repackPerMesh = ctx.RepackPerMesh; - s.symmetrySplitThresholdMode = (int)symSplitThresholdMode; - s.sourceLodIndex = ctx.SourceLodIndex; - s.saveNewMeshAssets = ctx.PipeSettings.saveNewMeshAssets; - s.savePath = ctx.PipeSettings.savePath; - EditorUtility.SetDirty(data); - AssetDatabase.SaveAssets(); + SidecarStore.SaveSettings(selectedSidecarPath, s => + { + s.atlasResolution = ctx.AtlasResolution; + s.shellPaddingPx = ctx.ShellPaddingPx; + s.borderPaddingPx = ctx.BorderPaddingPx; + s.repackPerMesh = ctx.RepackPerMesh; + s.symmetrySplitThresholdMode = (int)symSplitThresholdMode; + s.sourceLodIndex = ctx.SourceLodIndex; + s.saveNewMeshAssets = ctx.PipeSettings.saveNewMeshAssets; + s.savePath = ctx.PipeSettings.savePath; + }); } void TryRestoreShellMatchFromSidecar() @@ -6020,11 +4125,7 @@ void TryRestoreShellMatchFromSidecar() string fbxPath = AssetDatabase.GetAssetPath(e.fbxMesh); if (string.IsNullOrEmpty(fbxPath)) continue; if (!sidecarCache.TryGetValue(fbxPath, out var sidecar)) - { - string sp = Uv2DataAsset.GetSidecarPath(fbxPath); - sidecar = AssetDatabase.LoadAssetAtPath(sp); - sidecarCache[fbxPath] = sidecar; - } + sidecarCache[fbxPath] = sidecar = SidecarStore.Load(fbxPath); if (sidecar == null) continue; var entry = sidecar.Find(e.fbxMesh.name); if (entry?.vertexToSourceShellDescriptor == null || entry.vertexToSourceShellDescriptor.Length == 0) continue; diff --git a/Editor/Tools/VertexColorBakingTool.cs b/Editor/Tools/VertexColorBakingTool.cs index 6e45c7c3..833b94ea 100644 --- a/Editor/Tools/VertexColorBakingTool.cs +++ b/Editor/Tools/VertexColorBakingTool.cs @@ -1558,7 +1558,7 @@ void CollectSidecarCollisionOccluders( List targetAnchors, float effectiveRadius) { - var sidecarEntries = CollisionMeshTool.GetCollisionMeshesFromSidecar(ctx.SourceFbxPath); + var sidecarEntries = SidecarStore.CollisionMeshes(ctx.SourceFbxPath); if (sidecarEntries == null || sidecarEntries.Count == 0) return; diff --git a/Tests/Editor/FbxExportTests.cs b/Tests/Editor/FbxExportTests.cs new file mode 100644 index 00000000..7d355b2d --- /dev/null +++ b/Tests/Editor/FbxExportTests.cs @@ -0,0 +1,279 @@ +// FbxExportTests.cs — the FBX export mechanics and the sidecar store, without an FBX: +// naming rules, UV channel carry-over, the AO target mapping, the LOD-rebuild +// hierarchy passes on a scratch hierarchy, and collision entry validation. +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class FbxExportTests + { + readonly List scratch = new List(); + + [TearDown] + public void TearDown() + { + foreach (var o in scratch) + if (o != null) Object.DestroyImmediate(o); + scratch.Clear(); + } + + Mesh Quad(string name, int extraUvChannel = -1) + { + var m = new Mesh { name = name }; + m.vertices = new[] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(1, 1, 0), new Vector3(0, 1, 0) }; + m.triangles = new[] { 0, 1, 2, 0, 2, 3 }; + m.uv = new[] { new Vector2(0, 0), new Vector2(1, 0), new Vector2(1, 1), new Vector2(0, 1) }; + if (extraUvChannel >= 0) + m.SetUVs(extraUvChannel, new List { new Vector2(.1f, .2f), new Vector2(.3f, .4f), new Vector2(.5f, .6f), new Vector2(.7f, .8f) }); + scratch.Add(m); + return m; + } + + GameObject Node(string name, Transform parent, Mesh mesh = null, bool renderer = false) + { + var go = new GameObject(name); + scratch.Add(go); + if (parent != null) go.transform.SetParent(parent, false); + if (mesh != null) go.AddComponent().sharedMesh = mesh; + if (renderer) go.AddComponent(); + return go; + } + + static List Uv(Mesh m, int channel) { var l = new List(); m.GetUVs(channel, l); return l; } + + // ── names ── + + [TestCase("Scene", true)] + [TestCase("Geometry", true)] + [TestCase("Combined Mesh (root: Chair)", true)] + [TestCase("", true)] + [TestCase(null, true)] + [TestCase("Chair_LOD0", false)] + public void GenericMeshNamesAreTheDccLeftovers(string name, bool generic) + => Assert.AreEqual(generic, FbxExport.IsGenericMeshName(name)); + + [TestCase("Lit", true)] + [TestCase("No Name", true)] + [TestCase("Default-Material", true)] + [TestCase(null, true)] + [TestCase("Wood", false)] + public void PlaceholderMaterialNamesAreTheImporterDefaults(string name, bool placeholder) + => Assert.AreEqual(placeholder, FbxExport.IsPlaceholderMaterialName(name)); + + [Test] + public void ExportNameFallsBackFromFbxToWorkingToRendererAndSkipsHiddenNames() + { + var renderer = Node("Node", null, renderer: true).GetComponent(); + var result = Quad("Result"); + Assert.AreEqual("Fbx", FbxExport.ResolveExportMeshName(new MeshEntry { fbxMesh = Quad("Fbx"), originalMesh = Quad("Work") }, result)); + Assert.AreEqual("Work", FbxExport.ResolveExportMeshName(new MeshEntry { originalMesh = Quad("Work") }, result)); + Assert.AreEqual("Result", FbxExport.ResolveExportMeshName(new MeshEntry(), result)); + Assert.AreEqual("Node", FbxExport.ResolveExportMeshName(new MeshEntry { originalMesh = Quad("Hidden/Preview"), renderer = renderer }, result)); + Assert.AreEqual("Mesh", FbxExport.ResolveExportMeshName(null, null)); + } + + // ── UV channels ── + + [Test] + public void PreserveUvChannelsCopiesOnlyMissingNonZeroChannels() + { + var source = Quad("S", extraUvChannel: 2); + source.SetUVs(3, new List { Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero }); + source.SetUVs(4, new List { Vector3.one, Vector3.one, Vector3.one, Vector3.one }); + var export = Quad("E"); + export.uv = new[] { Vector2.one, Vector2.one, Vector2.one, Vector2.one }; + + FbxExport.PreserveUvChannels(export, source); + + Assert.AreEqual(Vector2.one, Uv(export, 0)[0], "an existing channel is never overwritten"); + Assert.AreEqual(new Vector2(.3f, .4f), Uv(export, 2)[1], "a missing channel with data is copied"); + Assert.IsFalse(export.HasVertexAttribute(UnityEngine.Rendering.VertexAttribute.TexCoord3), "an all-zero channel is not worth carrying"); + Assert.AreEqual(3, export.GetVertexAttributeDimension(UnityEngine.Rendering.VertexAttribute.TexCoord4), "channels keep their width"); + } + + [Test] + public void OverwriteAndMergeTakeExactlyWhatTheyAreAskedFor() + { + var source = Quad("S", extraUvChannel: 1); + var export = Quad("E"); + export.SetUVs(1, new List { Vector2.one, Vector2.one, Vector2.one, Vector2.one }); + + FbxExport.OverwriteUvChannel(export, source, 1); + Assert.AreEqual(new Vector2(.5f, .6f), Uv(export, 1)[2]); + + var donor = Quad("D", extraUvChannel: 2); + export.SetUVs(2, new List { Vector2.one, Vector2.one, Vector2.one, Vector2.one }); + FbxExport.MergeUvComponentFromDonor(export, donor, 2, 1); + Assert.AreEqual(new Vector2(1f, .4f), Uv(export, 2)[1], "only the Y component comes from the donor"); + + Assert.IsTrue(FbxExport.HasUvChannelData(donor, 2)); + Assert.IsFalse(FbxExport.HasUvChannelData(donor, 5)); + } + + [Test] + public void UvDonorPrefersTheWorkingMeshesOverTheResult() + { + var result = Quad("R", extraUvChannel: 2); + var entry = new MeshEntry { fbxMesh = Quad("F", extraUvChannel: 2), originalMesh = Quad("O") }; + Assert.AreSame(entry.fbxMesh, FbxExport.SelectUvDonor(entry, result, 2), "the working mesh lacks UV2, the FBX mesh has it"); + Assert.AreSame(result, FbxExport.SelectUvDonor(new MeshEntry(), result, 2)); + Assert.IsNull(FbxExport.SelectUvDonor(entry, result, 6)); + } + + [Test] + public void AoUvTargetMapsChannelsAndRefusesUv1() + { + Assert.IsFalse(SidecarStore.AoUvTarget.From(null).IsSet); + Assert.IsFalse(SidecarStore.AoUvTarget.From(AOTargetChannel.VertexColorA).IsSet, "AO in a colour channel is not a UV target"); + Assert.IsFalse(SidecarStore.AoUvTarget.From(AOTargetChannel.UV1_X).IsSet, "UV1 is the lightmap channel"); + var t = SidecarStore.AoUvTarget.From(AOTargetChannel.UV2_Y); + Assert.AreEqual(2, t.channel); + Assert.AreEqual(1, t.component); + } + + // ── hierarchy passes ── + + [Test] + public void PruneStaleChildrenKeepsCollisionContainersCollidersAndValidNames() + { + var root = Node("Root", null); + Node("A", root.transform, Quad("A")); + Node("B", root.transform, Quad("B")); + Node("X_COL", root.transform, Quad("X_COL")); + Node("Container", root.transform); + var withCollider = Node("C", root.transform, Quad("C")); + withCollider.AddComponent(); + Node("D", root.transform, Quad("Renamed_A")); // node name differs from mesh name + + int pruned = FbxExport.PruneStaleChildren(root, new HashSet { "A", "Renamed_A" }); + + Assert.AreEqual(1, pruned); + Assert.IsNull(root.transform.Find("B")); + foreach (var kept in new[] { "A", "X_COL", "Container", "C", "D" }) + Assert.IsNotNull(root.transform.Find(kept), kept); + } + + [Test] + public void NormalizeExportHierarchyRenamesRenumbersAndBakesTransforms() + { + var root = Node("Chair", null); + root.transform.localPosition = new Vector3(1, 2, 3); + Node("Chair", root.transform, Quad("Chair")); + Node("Chair_LOD2", root.transform, Quad("Chair_LOD2")); + var far = Node("Chair_LOD5", root.transform, Quad("Chair_LOD5")); + far.transform.localScale = new Vector3(2, 2, 2); + var sink = new List(); + + var renames = FbxExport.NormalizeExportHierarchy(root, sink); + scratch.AddRange(sink); + + Assert.AreEqual(Vector3.zero, root.transform.localPosition, "root pivot is reset"); + Assert.AreEqual("Chair_LOD0", renames["Chair"]); + Assert.AreEqual("Chair_LOD1", renames["Chair_LOD2"]); + Assert.AreEqual("Chair_LOD2", renames["Chair_LOD5"]); + Assert.AreEqual(Vector3.one, far.transform.localScale, "the scaled node is reset…"); + Assert.AreEqual(1, sink.Count, "…onto a copy of its mesh"); + Assert.AreEqual(new Vector3(2, 0, 0), far.GetComponent().sharedMesh.vertices[1], "with the scale baked in"); + } + + [Test] + public void InjectCollisionMeshesReplacesExistingColChildren() + { + var root = Node("Root", null); + Node("Old_COL", root.transform, Quad("Old_COL")); + var data = new List<(string, List, bool)> + { + ("Box", new List { Quad("Box_COL") }, false), + ("Rock", new List { Quad("Rock_COL_Hull0"), Quad("Rock_COL_Hull1") }, true), + }; + var sink = new List(); + + int count = FbxExport.InjectCollisionMeshes(root, data, sink); + + Assert.AreEqual(3, count); + Assert.AreEqual(3, sink.Count); + Assert.IsNull(root.transform.Find("Old_COL")); + Assert.IsNotNull(root.transform.Find("Box_COL").GetComponent()); + var container = root.transform.Find("Rock_COL"); + Assert.IsNull(container.GetComponent()); + Assert.AreEqual(2, container.childCount); + Assert.AreEqual("Rock_COL_Hull1", container.GetChild(1).name); + } + + [Test] + public void TrimMaterialArraysCutsToTheSubmeshCount() + { + var shader = Shader.Find("Hidden/InternalErrorShader"); + var mat = new Material(shader); scratch.Add(mat); + var go = Node("A", null, Quad("A"), renderer: true); + var mr = go.GetComponent(); + mr.sharedMaterials = new[] { mat, mat, mat }; + + FbxExport.TrimMaterialArrays(go); + + Assert.AreEqual(1, mr.sharedMaterials.Length); + } + + [Test] + public void RendererSettingsCopyLeavesMaterialsAloneWhenAsked() + { + var shader = Shader.Find("Hidden/InternalErrorShader"); + var a = new Material(shader); scratch.Add(a); + var b = new Material(shader); scratch.Add(b); + var src = Node("S", null, renderer: true).GetComponent(); + var dst = Node("D", null, renderer: true).GetComponent(); + src.sharedMaterial = a; + src.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + src.scaleInLightmap = 0.25f; + dst.sharedMaterial = b; + + RendererSettings.Copy(src, dst, includeMaterials: false); + Assert.AreSame(b, dst.sharedMaterial); + Assert.AreEqual(UnityEngine.Rendering.ShadowCastingMode.Off, dst.shadowCastingMode); + Assert.AreEqual(0.25f, dst.scaleInLightmap); + + RendererSettings.Copy(src, dst); + Assert.AreSame(a, dst.sharedMaterial); + } + + // ── sidecar ── + + [TestCase("Assets/A/Chair.fbx", true)] + [TestCase("Assets/A/Chair.FBX", true)] + [TestCase("Assets/A/Chair.asset", false)] + [TestCase("", false)] + [TestCase(null, false)] + public void FbxPathsEndInFbxInAnyCase(string path, bool isFbx) + => Assert.AreEqual(isFbx, SidecarStore.IsFbxPath(path)); + + [Test] + public void CollisionEntryValidationAcceptsBothIndexEncodings() + { + // Two hulls of three vertices: hull 0 at offset 0, hull 1 at offset 3. + var entry = new CollisionMeshEntry + { + meshGroupKey = "Rock", mode = 1, + allPositions = new Vector3[6], + positionOffsets = new[] { 0, 3 }, + triangleOffsets = new[] { 0, 3 }, + allTriangles = new[] { 0, 1, 2, 3, 4, 5 }, // hull 1 indexes the flattened array + }; + Assert.IsTrue(SidecarStore.TryValidateCollisionEntry(entry, out var global, out _)); + Assert.IsTrue(global[1], "indices 3..5 address the flattened array"); + + entry.allTriangles = new[] { 0, 1, 2, 0, 1, 2 }; // legacy: hull 1 indexes its own vertices + Assert.IsTrue(SidecarStore.TryValidateCollisionEntry(entry, out global, out _)); + Assert.IsFalse(global[1], "indices 0..2 can only be local to hull 1"); + + entry.allTriangles = new[] { 0, 1, 2, 7, 8, 9 }; + Assert.IsFalse(SidecarStore.TryValidateCollisionEntry(entry, out _, out string error)); + StringAssert.Contains("out-of-range", error); + + entry.triangleOffsets = new[] { 0 }; + Assert.IsFalse(SidecarStore.TryValidateCollisionEntry(entry, out _, out error)); + StringAssert.Contains("mismatched", error); + } + } +} diff --git a/Tests/Editor/FbxExportTests.cs.meta b/Tests/Editor/FbxExportTests.cs.meta new file mode 100644 index 00000000..2407e2c4 --- /dev/null +++ b/Tests/Editor/FbxExportTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8806ac6293541f3b0e2e4e89bec4b47 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From d662ab521b2d6ca36d3883f0e6db4670a8b2fb94 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:26:11 +0000 Subject: [PATCH 092/130] refactor(uv): UvTopology, the one UV layout topology behind the canvas, the 3D layer and the viewport MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors, the face→shell cache rebuilt its map inline, and the 3D viewport had its own unique-edge dedupe for wires. Editor/Uv/UvTopology.cs is the one implementation (ReadUv, HasUv, BoundaryEdgePairs over all faces or a face subset, BoundaryLength, UniqueEdges, PointInTriangle, VoteBestShell, FaceToShell, BuildShellData, OccupiedTiles). The canvas keeps its per-frame caches and the GL drawing, FaceToShellCache and MeshViewport3D.EdgeIndices call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and the shell bounds. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 1 + Editor/Framework/MeshEntry.cs | 21 +-- Editor/Framework/MeshViewport3D.cs | 15 +- Editor/Framework/UvCanvasView.cs | 111 +------------ Editor/Uv.meta | 8 + Editor/Uv/UvTopology.cs | 229 +++++++++++++++++++++++++++ Editor/Uv/UvTopology.cs.meta | 11 ++ Editor/UvShellExtractor.cs | 32 +--- Tests/Editor/UvTopologyTests.cs | 130 +++++++++++++++ Tests/Editor/UvTopologyTests.cs.meta | 11 ++ 11 files changed, 403 insertions(+), 167 deletions(-) create mode 100644 Editor/Uv.meta create mode 100644 Editor/Uv/UvTopology.cs create mode 100644 Editor/Uv/UvTopology.cs.meta create mode 100644 Tests/Editor/UvTopologyTests.cs create mode 100644 Tests/Editor/UvTopologyTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 688681a2..cda1386f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. - **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. - **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. - **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. diff --git a/CLAUDE.md b/CLAUDE.md index 7198b5bb..3581d7a5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,6 +32,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **Context:** `Editor/Framework/UvToolContext.cs` — shared state - **Tools:** `Editor/Tools/` — each implements `IUvTool` - **Geometry:** `Editor/Geometry/` — `MeshGeometry` (face normals, welding, sample directions, barycentrics) and `GpuReadback` (the one GPU → CPU texture read); spatial queries in `Editor/TriangleBvh.cs` / `TriangleBvh2D.cs`. Use these; never add a tool-local copy +- **UV:** `Editor/Uv/UvTopology.cs` — index-space UV layout topology (channel read, boundary edges, unique edges, point-in-triangle, shell vote, face→shell, shell data, UDIM tiles); the canvas, 3D layer and viewport cache its results, never recompute them locally - **Assets:** `Editor/Assets/` — `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves - **Native:** `Plugins/` binaries, `Native~/` C++ source - **Sidecar:** `Uv2DataAsset` persists UV2/collision data alongside FBX diff --git a/Editor/Framework/MeshEntry.cs b/Editor/Framework/MeshEntry.cs index 25c1e181..46c3ec55 100644 --- a/Editor/Framework/MeshEntry.cs +++ b/Editor/Framework/MeshEntry.cs @@ -112,26 +112,7 @@ public int[] GetFaceToShell(Mesh mesh, int channel, Vector2[] uv, int[] triangle if (faceToShellByMeshAndChannel.TryGetValue(key, out var cached)) return cached; - int faceCount = triangles.Length / 3; - var faceToShell = new int[faceCount]; - for (int i = 0; i < faceToShell.Length; i++) faceToShell[i] = -1; - - try - { - var shells = UvShellExtractor.Extract(uv, triangles); - foreach (var shell in shells) - { - if (shell?.faceIndices == null) continue; - foreach (int f in shell.faceIndices) - if (f >= 0 && f < faceToShell.Length) - faceToShell[f] = shell.shellId; - } - } - catch - { - // Keep -1 mapping when shell extraction fails. - } - + var faceToShell = UvTopology.FaceToShell(uv, triangles); faceToShellByMeshAndChannel[key] = faceToShell; return faceToShell; } diff --git a/Editor/Framework/MeshViewport3D.cs b/Editor/Framework/MeshViewport3D.cs index 0a5ea222..c12941ae 100644 --- a/Editor/Framework/MeshViewport3D.cs +++ b/Editor/Framework/MeshViewport3D.cs @@ -465,20 +465,7 @@ Mesh WireOf(Mesh mesh) } /// Line-list indices of a mesh's unique triangle edges (null above 1M faces). - public static List EdgeIndices(Mesh mesh) - { - var tris = mesh.triangles; - if (tris.Length / 3 > 1000000) return null; - var seen = new HashSet(); - var indices = new List(tris.Length); - long stride = mesh.vertexCount; - for (int i = 0; i < tris.Length; i += 3) - for (int k = 0; k < 3; ++k) { - int a = tris[i + k], b = tris[i + (k + 1) % 3]; - if (seen.Add(Math.Min(a, b) * stride + Math.Max(a, b))) { indices.Add(a); indices.Add(b); } - } - return indices; - } + public static List EdgeIndices(Mesh mesh) => UvTopology.UniqueEdges(mesh.triangles); /// Drops cached encodings and wires (call when source meshes change). public void InvalidateCaches() diff --git a/Editor/Framework/UvCanvasView.cs b/Editor/Framework/UvCanvasView.cs index f81be7e9..f0cb72fd 100644 --- a/Editor/Framework/UvCanvasView.cs +++ b/Editor/Framework/UvCanvasView.cs @@ -555,7 +555,7 @@ public void FocusUvBounds(float minU, float minV, float maxU, float maxV) public static bool TOk(Vector2[] u, int n, int a, int b, int c) => a>=0&&a=0&&b=0&&c GL.Vertex3(ox+u.x*sz, oy+(1f-u.y)*sz, 0); - public static Vector2[] RdUv(Mesh m, int ch) { var l = new List(); m.GetUVs(ch, l); return l.Count > 0 ? l.ToArray() : null; } + public static Vector2[] RdUv(Mesh m, int ch) => UvTopology.ReadUv(m, ch); public Vector2[] RdUvCached(Mesh m, int ch) { @@ -590,19 +590,6 @@ public static Color SC(TriangleStatus s) } } - public static int VoteBestShell(int[] vertToShell, int vertCount, int i0, int i1, int i2) - { - int s0 = (i0 >= 0 && i0 < vertToShell.Length) ? vertToShell[i0] : -1; - int s1 = (i1 >= 0 && i1 < vertToShell.Length) ? vertToShell[i1] : -1; - int s2 = (i2 >= 0 && i2 < vertToShell.Length) ? vertToShell[i2] : -1; - if (s0 >= 0 && s0 == s1) return s0; - if (s0 >= 0 && s0 == s2) return s0; - if (s1 >= 0 && s1 == s2) return s1; - if (s0 >= 0) return s0; - if (s1 >= 0) return s1; - return s2; - } - // ════════════════════════════════════════════════════════════ // GL Draw Methods // ════════════════════════════════════════════════════════════ @@ -789,7 +776,7 @@ public void GlUvBoundary(UvToolContext ctx, float ox, float oy, float sz, Mesh m int id = mesh.GetInstanceID(); if (!ctx.BoundaryEdgeCache.TryGetValue(id, out int[] pairs)) { - pairs = BuildBoundaryEdgePairs(tri); + pairs = UvTopology.BoundaryEdgePairs(tri); ctx.BoundaryEdgeCache[id] = pairs; } if (pairs == null || pairs.Length == 0) return; @@ -831,7 +818,7 @@ public void GlFillShellMatch(float ox, float oy, float sz, Vector2[] uv, int[] t { int a0 = t[f*3], a1 = t[f*3+1], a2 = t[f*3+2]; if (!TOk(uv, uN, a0, a1, a2)) continue; - int sh = VoteBestShell(vertShellMap, uN, a0, a1, a2); + int sh = UvTopology.VoteBestShell(vertShellMap, a0, a1, a2); Color nc = sh < 0 ? new Color(0.3f, 0.3f, 0.3f, FillAlpha) : new Color(pal[sh % pal.Length].r, pal[sh % pal.Length].g, pal[sh % pal.Length].b, FillAlpha * 1.5f); @@ -910,41 +897,8 @@ public PreviewShellData GetPreviewShellCache(UvToolContext ctx, Mesh mesh, int c long key = ((long)mesh.GetInstanceID() << 8) ^ (uint)channel; if (ctx.PreviewShellDataCache.TryGetValue(key, out var cached)) return cached; - var uv = RdUvCached(mesh, channel); - var triangles = GetTrianglesCached(mesh); - if (uv == null || triangles == null || triangles.Length < 3) return null; - - List shells; - try { shells = UvShellExtractor.Extract(uv, triangles, computeDescriptors: true); } - catch { return null; } - - var faceToShell = new Dictionary(triangles.Length / 3); - var shellById = new Dictionary(shells.Count); - var bounds = new Bounds[shells.Count]; - for (int i = 0; i < shells.Count; i++) - { - var shell = shells[i]; - shellById[shell.shellId] = shell; - bool hasPoint = false; - Bounds b = new Bounds(Vector3.zero, Vector3.zero); - foreach (int fi in shell.faceIndices) - { - faceToShell[fi] = shell.shellId; - int t0 = fi * 3; - if (t0 + 2 >= triangles.Length) continue; - for (int k = 0; k < 3; k++) - { - int vi = triangles[t0 + k]; - if (vi < 0 || vi >= uv.Length) continue; - Vector3 p = uv[vi]; - if (!hasPoint) { b = new Bounds(p, Vector3.zero); hasPoint = true; } - else b.Encapsulate(p); - } - } - bounds[i] = b; - } - - cached = new PreviewShellData { shells = shells, faceToShell = faceToShell, shellById = shellById, shellBounds = bounds, triangles = triangles, uvs = uv }; + cached = UvTopology.BuildShellData(RdUvCached(mesh, channel), GetTrianglesCached(mesh)); + if (cached == null) return null; ctx.PreviewShellDataCache[key] = cached; return cached; } @@ -958,15 +912,8 @@ public HashSet GetOccupiedUdimTiles(UvToolContext ctx, List(); - var uvs = RdUvCached(mesh, channel); - if (uvs != null) - for (int i = 0; i < uvs.Length; i++) - { - var u = uvs[i]; - if (!UOk(u)) continue; - var tile = new Vector2Int(Mathf.FloorToInt(u.x), Mathf.FloorToInt(u.y)); - perMesh.Add(tile); tiles.Add(tile); - } + UvTopology.OccupiedTiles(RdUvCached(mesh, channel), perMesh, UOk); + tiles.UnionWith(perMesh); ctx.OccupiedTilesPerMesh[key] = perMesh; } return tiles; @@ -1129,40 +1076,6 @@ List FilteredEntries(UvToolContext ctx) return ee.Where(e => (e.meshGroupKey ?? (e.renderer != null ? e.renderer.name : null)) == isoKey).ToList(); } - // ════════════════════════════════════════════════════════════ - // Boundary Edges - // ════════════════════════════════════════════════════════════ - - public static int[] BuildBoundaryEdgePairs(int[] tri) - { - if (tri == null || tri.Length < 3) return Array.Empty(); - var counts = new Dictionary(tri.Length); - var orient = new Dictionary(tri.Length); - for (int i = 0; i + 2 < tri.Length; i += 3) - { - AddEdge(tri[i], tri[i+1], counts, orient); - AddEdge(tri[i+1], tri[i+2], counts, orient); - AddEdge(tri[i+2], tri[i], counts, orient); - } - var result = new List(); - foreach (var kv in counts) - { - if (kv.Value != 1) continue; - var e = orient[kv.Key]; - result.Add(e.a); result.Add(e.b); - } - return result.ToArray(); - } - - static void AddEdge(int a, int b, Dictionary counts, Dictionary orient) - { - if (a == b) return; - int lo = a < b ? a : b, hi = a < b ? b : a; - ulong key = ((ulong)(uint)lo << 32) | (uint)hi; - counts.TryGetValue(key, out int c); counts[key] = c + 1; - if (!orient.ContainsKey(key)) orient[key] = (a, b); - } - // ════════════════════════════════════════════════════════════ // Background Texture // ════════════════════════════════════════════════════════════ @@ -1226,7 +1139,7 @@ ShellDebugHit FindShellAtMouse(UvToolContext ctx, List 0f || s2 > 0f || s3 > 0f)); - } - void DrawShellDebugOverlay(Rect canvasRect) { var hit = SelectedShellDebug ?? HoveredShellDebug; diff --git a/Editor/Uv.meta b/Editor/Uv.meta new file mode 100644 index 00000000..63123c6e --- /dev/null +++ b/Editor/Uv.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f918c2da26ce480699f064700ad91ac8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Uv/UvTopology.cs b/Editor/Uv/UvTopology.cs new file mode 100644 index 00000000..d4bd4628 --- /dev/null +++ b/Editor/Uv/UvTopology.cs @@ -0,0 +1,229 @@ +// UvTopology.cs — index-space topology of a UV layout: reading a channel, the +// boundary edges of a triangle set, unique edges for a wire, point-in-triangle, the +// per-face shell map and the shell data the canvas and the 3D layer draw from. The +// canvas, the 3D layer, the shell extractor and the viewport each carried a copy of +// one or more of these; this is the one implementation. Nothing here caches: the +// framework owns the caches (per view, per context) and calls in. +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class UvTopology + { + /// UV channel of the mesh as an array, or null when the mesh has none. + internal static Vector2[] ReadUv(Mesh mesh, int channel) + { + if (mesh == null || channel < 0 || channel > 7) return null; + var list = new List(); + mesh.GetUVs(channel, list); + return list.Count > 0 ? list.ToArray() : null; + } + + /// True when the mesh carries any data in UV channel . + internal static bool HasUv(Mesh mesh, int channel) + { + if (mesh == null || channel < 0 || channel > 7) return false; + return mesh.HasVertexAttribute(UnityEngine.Rendering.VertexAttribute.TexCoord0 + channel); + } + + // ── edges ── + + static ulong EdgeKey(int a, int b) + { + int lo = a < b ? a : b, hi = a < b ? b : a; + return ((ulong)(uint)lo << 32) | (uint)hi; + } + + /// + /// The edges used by exactly one triangle of (or of + /// the faces in when given), as index pairs in the + /// winding of the face that owns them: `[a0, b0, a1, b1, …]`. Degenerate edges + /// (a == b) are ignored. Index-space topology: two vertices at the same position + /// but different indices are different vertices, which is what makes this the UV + /// island boundary on a mesh split along its seams. + /// + internal static int[] BoundaryEdgePairs(int[] triangles, IList faces = null) + { + if (triangles == null || triangles.Length < 3) return Array.Empty(); + int faceCount = faces != null ? faces.Count : triangles.Length / 3; + var counts = new Dictionary(faceCount * 3); + var orient = new Dictionary(faceCount * 3); + for (int k = 0; k < faceCount; k++) + { + int f = faces != null ? faces[k] : k; + int t0 = f * 3; + if (t0 < 0 || t0 + 2 >= triangles.Length) continue; + AddEdge(triangles[t0], triangles[t0 + 1], counts, orient); + AddEdge(triangles[t0 + 1], triangles[t0 + 2], counts, orient); + AddEdge(triangles[t0 + 2], triangles[t0], counts, orient); + } + var result = new List(); + foreach (var kv in counts) + { + if (kv.Value != 1) continue; + var e = orient[kv.Key]; + result.Add(e.a); result.Add(e.b); + } + return result.ToArray(); + } + + static void AddEdge(int a, int b, Dictionary counts, Dictionary orient) + { + if (a == b) return; + ulong key = EdgeKey(a, b); + counts.TryGetValue(key, out int c); counts[key] = c + 1; + if (!orient.ContainsKey(key)) orient[key] = (a, b); + } + + /// + /// The summed UV length of the boundary edges of (every + /// face when null); indices outside are skipped. + /// + internal static float BoundaryLength(Vector2[] uv, int[] triangles, IList faces = null) + { + if (uv == null) return 0f; + var pairs = BoundaryEdgePairs(triangles, faces); + float length = 0f; + for (int i = 0; i + 1 < pairs.Length; i += 2) + { + int a = pairs[i], b = pairs[i + 1]; + if (a < 0 || b < 0 || a >= uv.Length || b >= uv.Length) continue; + length += Vector2.Distance(uv[a], uv[b]); + } + return length; + } + + /// + /// Every distinct edge of the triangle list once, as a line list `[a0, b0, a1, b1, …]` + /// in first-seen order (a wireframe). Null above faces. + /// + internal static List UniqueEdges(int[] triangles, int maxFaces = 1_000_000) + { + if (triangles == null) return null; + if (triangles.Length / 3 > maxFaces) return null; + var seen = new HashSet(); + var indices = new List(triangles.Length); + for (int i = 0; i + 2 < triangles.Length; i += 3) + for (int k = 0; k < 3; ++k) + { + int a = triangles[i + k], b = triangles[i + (k + 1) % 3]; + if (seen.Add(EdgeKey(a, b))) { indices.Add(a); indices.Add(b); } + } + return indices; + } + + // ── point queries ── + + /// True when is inside or on triangle abc, either winding. + internal static bool PointInTriangle(Vector2 p, Vector2 a, Vector2 b, Vector2 c) + { + float s1 = (b.x - a.x) * (p.y - a.y) - (b.y - a.y) * (p.x - a.x); + float s2 = (c.x - b.x) * (p.y - b.y) - (c.y - b.y) * (p.x - b.x); + float s3 = (a.x - c.x) * (p.y - c.y) - (a.y - c.y) * (p.x - c.x); + return !((s1 < 0f || s2 < 0f || s3 < 0f) && (s1 > 0f || s2 > 0f || s3 > 0f)); + } + + // ── shells ── + + /// + /// The shell a face belongs to, decided by its three vertices' shell ids: the id + /// two of them share, else the first that has one, else -1. For a per-vertex map + /// that can disagree across a face (a transferred match). + /// + internal static int VoteBestShell(int[] vertToShell, int i0, int i1, int i2) + { + int s0 = (i0 >= 0 && i0 < vertToShell.Length) ? vertToShell[i0] : -1; + int s1 = (i1 >= 0 && i1 < vertToShell.Length) ? vertToShell[i1] : -1; + int s2 = (i2 >= 0 && i2 < vertToShell.Length) ? vertToShell[i2] : -1; + if (s0 >= 0 && s0 == s1) return s0; + if (s0 >= 0 && s0 == s2) return s0; + if (s1 >= 0 && s1 == s2) return s1; + if (s0 >= 0) return s0; + if (s1 >= 0) return s1; + return s2; + } + + /// + /// Shell id per face of the layout (-1 where the extraction failed or a face is in + /// no shell). + /// + internal static int[] FaceToShell(Vector2[] uv, int[] triangles) + { + if (uv == null || triangles == null) return null; + int faceCount = triangles.Length / 3; + var faceToShell = new int[faceCount]; + for (int i = 0; i < faceToShell.Length; i++) faceToShell[i] = -1; + try + { + var shells = UvShellExtractor.Extract(uv, triangles); + foreach (var shell in shells) + { + if (shell?.faceIndices == null) continue; + foreach (int f in shell.faceIndices) + if (f >= 0 && f < faceToShell.Length) faceToShell[f] = shell.shellId; + } + } + catch + { + // Keep the -1 mapping when shell extraction fails. + } + return faceToShell; + } + + /// + /// The shells of a layout with what the views need to draw and pick them: the + /// face → shell and id → shell maps and each shell's UV bounds (in shell order). + /// Null when the layout has no triangles or the extraction fails. + /// + internal static PreviewShellData BuildShellData(Vector2[] uv, int[] triangles) + { + if (uv == null || triangles == null || triangles.Length < 3) return null; + + List shells; + try { shells = UvShellExtractor.Extract(uv, triangles, computeDescriptors: true); } + catch { return null; } + + var faceToShell = new Dictionary(triangles.Length / 3); + var shellById = new Dictionary(shells.Count); + var bounds = new Bounds[shells.Count]; + for (int i = 0; i < shells.Count; i++) + { + var shell = shells[i]; + shellById[shell.shellId] = shell; + bool hasPoint = false; + var b = new Bounds(Vector3.zero, Vector3.zero); + foreach (int fi in shell.faceIndices) + { + faceToShell[fi] = shell.shellId; + int t0 = fi * 3; + if (t0 + 2 >= triangles.Length) continue; + for (int k = 0; k < 3; k++) + { + int vi = triangles[t0 + k]; + if (vi < 0 || vi >= uv.Length) continue; + Vector3 p = uv[vi]; + if (!hasPoint) { b = new Bounds(p, Vector3.zero); hasPoint = true; } + else b.Encapsulate(p); + } + } + bounds[i] = b; + } + return new PreviewShellData { shells = shells, faceToShell = faceToShell, shellById = shellById, shellBounds = bounds, triangles = triangles, uvs = uv }; + } + + /// The UDIM tiles (floor of u, floor of v) the finite UVs in fall into, added to . + internal static void OccupiedTiles(Vector2[] uv, HashSet into, Func accept = null) + { + if (uv == null || into == null) return; + for (int i = 0; i < uv.Length; i++) + { + var u = uv[i]; + if (float.IsNaN(u.x) || float.IsNaN(u.y) || float.IsInfinity(u.x) || float.IsInfinity(u.y)) continue; + if (accept != null && !accept(u)) continue; + into.Add(new Vector2Int(Mathf.FloorToInt(u.x), Mathf.FloorToInt(u.y))); + } + } + } +} diff --git a/Editor/Uv/UvTopology.cs.meta b/Editor/Uv/UvTopology.cs.meta new file mode 100644 index 00000000..4ff9ebd4 --- /dev/null +++ b/Editor/Uv/UvTopology.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ebac050eae14761b0b9a7ebed3327be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UvShellExtractor.cs b/Editor/UvShellExtractor.cs index 7cecbf11..e9d53d39 100644 --- a/Editor/UvShellExtractor.cs +++ b/Editor/UvShellExtractor.cs @@ -80,41 +80,13 @@ public static ShellDescriptor Compute(UvShell shell, Vector2[] uvs, int[] triang if (vertCount > 0) centroid /= vertCount; desc.uv0Centroid = centroid; - // Boundary length — sum of edges that appear only once - var edgeCounts = new Dictionary(); - var edgeUvs = new Dictionary(); - foreach (int fi in shell.faceIndices) - { - int i0 = triangles[fi * 3], i1 = triangles[fi * 3 + 1], i2 = triangles[fi * 3 + 2]; - AddEdgeForBoundary(i0, i1, edgeCounts, edgeUvs); - AddEdgeForBoundary(i1, i2, edgeCounts, edgeUvs); - AddEdgeForBoundary(i2, i0, edgeCounts, edgeUvs); - } - float bndLen = 0f; - foreach (var kv in edgeCounts) - { - if (kv.Value == 1) - { - var e = edgeUvs[kv.Key]; - if (e.a < uvs.Length && e.b < uvs.Length) - bndLen += Vector2.Distance(uvs[e.a], uvs[e.b]); - } - } - desc.boundaryLength = bndLen; + // Boundary length — the edges that appear only once in the shell's faces + desc.boundaryLength = UvTopology.BoundaryLength(uvs, triangles, shell.faceIndices); desc.stableHash = ComputeHash(desc.uv0Area, desc.uv0Centroid, desc.boundaryLength, desc.faceCount); return desc; } - static void AddEdgeForBoundary(int a, int b, Dictionary counts, Dictionary uvs) - { - if (a == b) return; - int lo = a < b ? a : b, hi = a < b ? b : a; - ulong key = ((ulong)(uint)lo << 32) | (uint)hi; - counts.TryGetValue(key, out int c); - counts[key] = c + 1; - if (!uvs.ContainsKey(key)) uvs[key] = (a, b); - } } public class UvShell diff --git a/Tests/Editor/UvTopologyTests.cs b/Tests/Editor/UvTopologyTests.cs new file mode 100644 index 00000000..8f949422 --- /dev/null +++ b/Tests/Editor/UvTopologyTests.cs @@ -0,0 +1,130 @@ +// UvTopologyTests.cs — the UV layout topology helpers on small hand-built layouts. +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class UvTopologyTests + { + // Two triangles sharing the edge 1–2, a third one on its own island. + // 0 ─ 1 4 + // │ / │ │ \ + // 3 ─ 2 5 ─ 6 + static readonly Vector2[] Uv = + { + new Vector2(0, 1), new Vector2(.4f, 1), new Vector2(.4f, .6f), new Vector2(0, .6f), + new Vector2(.6f, 1), new Vector2(.6f, .6f), new Vector2(1, .6f), + }; + static readonly int[] Tri = { 0, 1, 2, 0, 2, 3, 4, 5, 6 }; + + static HashSet<(int, int)> Edges(int[] pairs) + { + var set = new HashSet<(int, int)>(); + for (int i = 0; i + 1 < pairs.Length; i += 2) + set.Add((Mathf.Min(pairs[i], pairs[i + 1]), Mathf.Max(pairs[i], pairs[i + 1]))); + return set; + } + + [Test] + public void BoundaryEdgesAreTheOnesASingleFaceUses() + { + var edges = Edges(UvTopology.BoundaryEdgePairs(Tri)); + Assert.AreEqual(7, edges.Count); + Assert.IsFalse(edges.Contains((0, 2)), "the shared diagonal is interior"); + foreach (var e in new[] { (0, 1), (1, 2), (2, 3), (0, 3), (4, 5), (5, 6), (4, 6) }) + Assert.IsTrue(edges.Contains(e), e.ToString()); + } + + [Test] + public void BoundaryEdgesOfAFaceSubsetIncludeTheCutEdge() + { + var edges = Edges(UvTopology.BoundaryEdgePairs(Tri, new List { 0 })); + CollectionAssert.AreEquivalent(new[] { (0, 1), (1, 2), (0, 2) }, edges); + Assert.AreEqual(0, UvTopology.BoundaryEdgePairs(null).Length); + Assert.AreEqual(0, UvTopology.BoundaryEdgePairs(new[] { 7, 7, 7 }).Length, "a degenerate face has no edges"); + } + + [Test] + public void BoundaryLengthSumsTheIslandOutline() + { + // The right island is a right triangle with legs .4 and .4. + float expected = .4f + .4f + Mathf.Sqrt(.32f); + Assert.AreEqual(expected, UvTopology.BoundaryLength(Uv, Tri, new List { 2 }), 1e-5f); + Assert.AreEqual(expected + 1.6f, UvTopology.BoundaryLength(Uv, Tri), 1e-5f, "plus the square's perimeter"); + } + + [Test] + public void UniqueEdgesListEveryEdgeOnceInFirstSeenOrder() + { + var edges = UvTopology.UniqueEdges(Tri); + Assert.AreEqual(16, edges.Count, "8 distinct edges, two indices each"); + Assert.AreEqual(new[] { 0, 1, 1, 2, 2, 0 }, edges.GetRange(0, 6)); + Assert.IsNull(UvTopology.UniqueEdges(Tri, maxFaces: 2)); + } + + [Test] + public void PointInTriangleAcceptsEitherWindingAndTheEdges() + { + Vector2 a = new Vector2(0, 0), b = new Vector2(1, 0), c = new Vector2(0, 1); + Assert.IsTrue(UvTopology.PointInTriangle(new Vector2(.2f, .2f), a, b, c)); + Assert.IsTrue(UvTopology.PointInTriangle(new Vector2(.2f, .2f), a, c, b)); + Assert.IsTrue(UvTopology.PointInTriangle(new Vector2(.5f, 0), a, b, c), "on an edge"); + Assert.IsTrue(UvTopology.PointInTriangle(a, a, b, c), "on a vertex"); + Assert.IsFalse(UvTopology.PointInTriangle(new Vector2(.6f, .6f), a, b, c)); + } + + [Test] + public void ShellVoteTakesTheMajorityThenTheFirstKnown() + { + var map = new[] { 1, 1, 2, -1, 3 }; + Assert.AreEqual(1, UvTopology.VoteBestShell(map, 0, 1, 2)); + Assert.AreEqual(2, UvTopology.VoteBestShell(map, 3, 2, 4), "no majority: the first vertex with a shell"); + Assert.AreEqual(-1, UvTopology.VoteBestShell(map, 3, 3, 9), "out of range counts as unknown"); + } + + [Test] + public void FaceToShellAndShellDataAgreeOnTheTwoIslands() + { + var faceToShell = UvTopology.FaceToShell(Uv, Tri); + Assert.AreEqual(3, faceToShell.Length); + Assert.AreEqual(faceToShell[0], faceToShell[1], "the square's two faces are one island"); + Assert.AreNotEqual(faceToShell[0], faceToShell[2]); + + var data = UvTopology.BuildShellData(Uv, Tri); + Assert.AreEqual(2, data.shells.Count); + Assert.AreEqual(faceToShell[2], data.faceToShell[2]); + int rightIsland = data.shells.FindIndex(s => s.faceIndices.Contains(2)); + var b = data.shellBounds[rightIsland]; + Assert.AreEqual(new Vector3(.6f, .6f, 0), b.min); + Assert.AreEqual(new Vector3(1f, 1f, 0), b.max); + Assert.IsNull(UvTopology.BuildShellData(Uv, new int[0])); + } + + [Test] + public void OccupiedTilesFloorTheUvsAndSkipNonFinite() + { + var tiles = new HashSet(); + UvTopology.OccupiedTiles(new[] { new Vector2(.5f, .5f), new Vector2(1.2f, -.3f), new Vector2(float.NaN, 0) }, tiles); + CollectionAssert.AreEquivalent(new[] { new Vector2Int(0, 0), new Vector2Int(1, -1) }, tiles); + UvTopology.OccupiedTiles(new[] { new Vector2(5, 5) }, tiles, u => u.x < 2); + Assert.AreEqual(2, tiles.Count, "the filter rejected the far tile"); + } + + [Test] + public void ReadUvReturnsNullForAnEmptyChannel() + { + var m = new Mesh(); + try + { + m.vertices = new[] { Vector3.zero, Vector3.right, Vector3.up }; + m.uv = new[] { Vector2.zero, Vector2.right, Vector2.up }; + Assert.AreEqual(3, UvTopology.ReadUv(m, 0).Length); + Assert.IsNull(UvTopology.ReadUv(m, 1)); + Assert.IsTrue(UvTopology.HasUv(m, 0)); + Assert.IsFalse(UvTopology.HasUv(m, 1)); + } + finally { Object.DestroyImmediate(m); } + } + } +} diff --git a/Tests/Editor/UvTopologyTests.cs.meta b/Tests/Editor/UvTopologyTests.cs.meta new file mode 100644 index 00000000..17c26a9b --- /dev/null +++ b/Tests/Editor/UvTopologyTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b07ec2ed5cd4d7fa2330eba4cbcc960 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 0f3ef9dba5c9349b19e6d6733b1d53ceb8831797 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:30:50 +0000 Subject: [PATCH 093/130] refactor(mesh): VertexChannels, the one scalar vertex channel read and write The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export and in the sidecar store, and the variant export painted, snapshotted and restored colors32 on its own. Editor/Mesh/VertexChannels.cs is the one implementation (IsColor, ColorComponent, UvChannel, UvComponent, Name, Read, Write, WriteSubmesh, Levels, Blend, Greyscale, FillColors, SnapshotColors, RestoreColors); VertexAOBaker.WriteToChannel forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh as before. Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 1 + Editor/Assets/SidecarStore.cs | 9 +- Editor/Mesh/VertexChannels.cs | 211 +++++++++++++++++++++++ Editor/Mesh/VertexChannels.cs.meta | 11 ++ Editor/Tools/LightmapTransferTool.cs | 5 +- Editor/Tools/VariantExportPipeline.cs | 69 +++----- Editor/Tools/VertexColorBakingTool.cs | 87 ++-------- Editor/VertexAOBaker.cs | 58 +------ Tests/Editor/VertexChannelsTests.cs | 115 ++++++++++++ Tests/Editor/VertexChannelsTests.cs.meta | 11 ++ 11 files changed, 388 insertions(+), 190 deletions(-) create mode 100644 Editor/Mesh/VertexChannels.cs create mode 100644 Editor/Mesh/VertexChannels.cs.meta create mode 100644 Tests/Editor/VertexChannelsTests.cs create mode 100644 Tests/Editor/VertexChannelsTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index cda1386f..e2d86cc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. - **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. - **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. - **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. diff --git a/CLAUDE.md b/CLAUDE.md index 3581d7a5..f01a258e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,6 +32,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **Context:** `Editor/Framework/UvToolContext.cs` — shared state - **Tools:** `Editor/Tools/` — each implements `IUvTool` - **Geometry:** `Editor/Geometry/` — `MeshGeometry` (face normals, welding, sample directions, barycentrics) and `GpuReadback` (the one GPU → CPU texture read); spatial queries in `Editor/TriangleBvh.cs` / `TriangleBvh2D.cs`. Use these; never add a tool-local copy +- **Vertex channels:** `Editor/Mesh/VertexChannels.cs` — a scalar per-vertex channel (`AOTargetChannel`: colour component or UV component) decoded, read, written (whole mesh or one submesh), levels/blend, greyscale preview colours, fill/snapshot/restore of `colors32`. Never decode the enum or poke `colors32`/`GetUVs` for a scalar channel in a tool - **UV:** `Editor/Uv/UvTopology.cs` — index-space UV layout topology (channel read, boundary edges, unique edges, point-in-triangle, shell vote, face→shell, shell data, UDIM tiles); the canvas, 3D layer and viewport cache its results, never recompute them locally - **Assets:** `Editor/Assets/` — `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves - **Native:** `Plugins/` binaries, `Native~/` C++ source diff --git a/Editor/Assets/SidecarStore.cs b/Editor/Assets/SidecarStore.cs index e3d6b321..610debe4 100644 --- a/Editor/Assets/SidecarStore.cs +++ b/Editor/Assets/SidecarStore.cs @@ -223,12 +223,9 @@ internal readonly struct AoUvTarget public static AoUvTarget From(AOTargetChannel? applied) { if (!applied.HasValue) return None; - int v = (int)applied.Value; - if (v < (int)AOTargetChannel.UV0_X) return None; - int channel = (v - (int)AOTargetChannel.UV0_X) / 2; - int component = (v - (int)AOTargetChannel.UV0_X) % 2; - if (channel == 1) return None; - return new AoUvTarget(channel, component); + int channel = VertexChannels.UvChannel(applied.Value); + if (channel < 0 || channel == 1) return None; + return new AoUvTarget(channel, VertexChannels.UvComponent(applied.Value)); } } diff --git a/Editor/Mesh/VertexChannels.cs b/Editor/Mesh/VertexChannels.cs new file mode 100644 index 00000000..8d6ba15f --- /dev/null +++ b/Editor/Mesh/VertexChannels.cs @@ -0,0 +1,211 @@ +// VertexChannels.cs — a scalar per-vertex channel (a vertex colour component or a UV +// component, as AOTargetChannel names them) read from and written to a mesh, plus the +// whole-colour-array operations the variant export and the AO preview need. Vertex AO +// baking, the transfer tool's export, the sidecar and the variant painter each decoded +// the channel enum and poked colors32 / GetUVs themselves; this is the one place. +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class VertexChannels + { + // ── channel decoding ── + + /// True for the four vertex colour components. + internal static bool IsColor(AOTargetChannel channel) => (int)channel <= (int)AOTargetChannel.VertexColorA; + + /// 0 = R, 1 = G, 2 = B, 3 = A; -1 for a UV channel. + internal static int ColorComponent(AOTargetChannel channel) + => IsColor(channel) ? (int)channel - (int)AOTargetChannel.VertexColorR : -1; + + /// The UV set (0–4) a UV channel addresses; -1 for a colour channel. + internal static int UvChannel(AOTargetChannel channel) + => IsColor(channel) ? -1 : ((int)channel - (int)AOTargetChannel.UV0_X) / 2; + + /// 0 = X, 1 = Y; -1 for a colour channel. + internal static int UvComponent(AOTargetChannel channel) + => IsColor(channel) ? -1 : ((int)channel - (int)AOTargetChannel.UV0_X) % 2; + + /// "Vertex Color R" … "UV4 Y", as the Vertex Colors tab labels them. + internal static string Name(AOTargetChannel channel) + { + if (IsColor(channel)) return "Vertex Color " + "RGBA"[ColorComponent(channel)]; + return "UV" + UvChannel(channel) + " " + "XY"[UvComponent(channel)]; + } + + // ── scalar read / write ── + + /// + /// The channel as one float per vertex (colour bytes / 255, UV components clamped + /// to [0,1]); null when the mesh does not carry that stream at the vertex count. + /// + internal static float[] Read(Mesh mesh, AOTargetChannel channel) + { + if (mesh == null) return null; + int vertCount = mesh.vertexCount; + if (IsColor(channel)) + { + var colors = mesh.colors32; + if (colors == null || colors.Length != vertCount) return null; + int comp = ColorComponent(channel); + var values = new float[vertCount]; + for (int i = 0; i < vertCount; i++) + { + var c = colors[i]; + values[i] = (comp == 0 ? c.r : comp == 1 ? c.g : comp == 2 ? c.b : c.a) / 255f; + } + return values; + } + else + { + int comp = UvComponent(channel); + var uvs = new List(); + mesh.GetUVs(UvChannel(channel), uvs); + if (uvs.Count != vertCount) return null; + var values = new float[vertCount]; + for (int i = 0; i < vertCount; i++) + values[i] = Mathf.Clamp01(comp == 0 ? uvs[i].x : uvs[i].y); + return values; + } + } + + /// + /// Stores (clamped to [0,1]) in the channel, keeping the + /// other components: the colour write remaps to bytes over a white default, the UV + /// write keeps the float over a zero default. Values are linear — no gamma. A + /// length mismatch writes nothing. Records Undo under + /// when given. + /// + internal static void Write(Mesh mesh, float[] values, AOTargetChannel channel, string undoLabel = null) + { + if (mesh == null || values == null || values.Length != mesh.vertexCount) return; + if (undoLabel != null) Undo.RecordObject(mesh, undoLabel); + + if (IsColor(channel)) + { + var colors = mesh.colors32; + if (colors == null || colors.Length != mesh.vertexCount) + { + colors = new Color32[mesh.vertexCount]; + for (int i = 0; i < colors.Length; i++) colors[i] = new Color32(255, 255, 255, 255); + } + int comp = ColorComponent(channel); + for (int i = 0; i < values.Length; i++) + { + byte v = (byte)(Mathf.Clamp01(values[i]) * 255f); + var c = colors[i]; + if (comp == 0) c.r = v; else if (comp == 1) c.g = v; else if (comp == 2) c.b = v; else c.a = v; + colors[i] = c; + } + mesh.colors32 = colors; + } + else + { + int uvIdx = UvChannel(channel), comp = UvComponent(channel); + var uvs = new List(); + mesh.GetUVs(uvIdx, uvs); + if (uvs.Count != mesh.vertexCount) + { + uvs.Clear(); + for (int i = 0; i < mesh.vertexCount; i++) uvs.Add(Vector2.zero); + } + for (int i = 0; i < values.Length; i++) + { + // Clamp to [0,1] like the colour path; blur and area correction can + // drift slightly out of range. + float v = Mathf.Clamp01(values[i]); + var uv = uvs[i]; + if (comp == 0) uv.x = v; else uv.y = v; + uvs[i] = uv; + } + mesh.SetUVs(uvIdx, uvs); + } + } + + /// + /// Writes only at the vertices submesh + /// uses, keeping the channel's current value (or the + /// default) elsewhere. False when the submesh index is out of range. + /// + internal static bool WriteSubmesh(Mesh mesh, float[] values, AOTargetChannel channel, int submesh, string undoLabel = null) + { + if (mesh == null || values == null || values.Length != mesh.vertexCount) return false; + if (submesh < 0 || submesh >= mesh.subMeshCount) return false; + var merged = Read(mesh, channel) ?? new float[mesh.vertexCount]; + var triangles = mesh.GetTriangles(submesh); + for (int ti = 0; ti < triangles.Length; ti++) + { + int vi = triangles[ti]; + if (vi >= 0 && vi < merged.Length) merged[vi] = values[vi]; + } + Write(mesh, merged, channel, undoLabel); + return true; + } + + // ── scalar maths ── + + /// `(v - 0.5) * contrast + 0.5 + brightness`, clamped to [0,1], in place. + internal static void Levels(float[] values, float brightness, float contrast) + { + if (values == null) return; + for (int i = 0; i < values.Length; i++) + values[i] = Mathf.Clamp01((values[i] - 0.5f) * contrast + 0.5f + brightness); + } + + /// A new array `lerp(a, b, t)` per vertex; a copy of when is missing or mismatched. + internal static float[] Blend(float[] a, float[] b, float t) + { + if (a == null) return null; + var result = (float[])a.Clone(); + if (b == null || b.Length != a.Length || t <= 0f) return result; + for (int i = 0; i < result.Length; i++) result[i] = Mathf.Lerp(a[i], b[i], t); + return result; + } + + // ── colour arrays ── + + /// The values as opaque greys (v, v, v, 255), for a preview. + internal static Color32[] Greyscale(float[] values) + { + if (values == null) return null; + var colors = new Color32[values.Length]; + for (int i = 0; i < colors.Length; i++) + { + byte v = (byte)(Mathf.Clamp01(values[i]) * 255f); + colors[i] = new Color32(v, v, v, 255); + } + return colors; + } + + /// Sets every vertex colour to , with Undo and SetDirty. + internal static void FillColors(Mesh mesh, Color color, string undoLabel) + { + if (mesh == null || mesh.vertexCount == 0) return; + var color32 = (Color32)color; + if (undoLabel != null) Undo.RecordObject(mesh, undoLabel); + var arr = new Color32[mesh.vertexCount]; + for (int i = 0; i < arr.Length; i++) arr[i] = color32; + mesh.colors32 = arr; + EditorUtility.SetDirty(mesh); + } + + /// The mesh's colours at its vertex count, or null when it has none (for ). + internal static Color32[] SnapshotColors(Mesh mesh) + { + if (mesh == null) return null; + var c = mesh.colors32; + return c != null && c.Length == mesh.vertexCount ? c : null; + } + + /// Puts a result back; null clears the colours to black. With Undo and SetDirty. + internal static void RestoreColors(Mesh mesh, Color32[] snapshot, string undoLabel) + { + if (mesh == null) return; + if (undoLabel != null) Undo.RecordObject(mesh, undoLabel); + mesh.colors32 = snapshot ?? new Color32[mesh.vertexCount]; + EditorUtility.SetDirty(mesh); + } + } +} diff --git a/Editor/Mesh/VertexChannels.cs.meta b/Editor/Mesh/VertexChannels.cs.meta new file mode 100644 index 00000000..8cbf1d8c --- /dev/null +++ b/Editor/Mesh/VertexChannels.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec876b18237542f4b60702cdf6283141 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Tools/LightmapTransferTool.cs b/Editor/Tools/LightmapTransferTool.cs index 32109493..5281c697 100644 --- a/Editor/Tools/LightmapTransferTool.cs +++ b/Editor/Tools/LightmapTransferTool.cs @@ -3221,10 +3221,7 @@ static int ResolveLegacyAoUvChannel(int uvChannelOverride) { if (uvChannelOverride >= 0) return uvChannelOverride; var aoChannel = VertexColorBakingTool.LastAppliedTargetChannel; - if (!aoChannel.HasValue) return -1; - int ch = (int)aoChannel.Value; - if (ch <= (int)AOTargetChannel.VertexColorA) return -1; - return (ch - (int)AOTargetChannel.UV0_X) / 2; + return aoChannel.HasValue ? VertexChannels.UvChannel(aoChannel.Value) : -1; } // Legacy shim. The implementation has been folded into diff --git a/Editor/Tools/VariantExportPipeline.cs b/Editor/Tools/VariantExportPipeline.cs index 3de1326f..5bd635c6 100644 --- a/Editor/Tools/VariantExportPipeline.cs +++ b/Editor/Tools/VariantExportPipeline.cs @@ -45,35 +45,31 @@ public static bool ValidateSuffix(string suffix, out string error) return true; } - // Paint mesh.colors32 with a uniform Color32 across every mesh variant - // of an entry (originalMesh, repackedMesh, transferredMesh, fbxMesh). - // Skips collision meshes via MeshHygieneUtility. Returns the number of - // distinct meshes painted. - public static int BakeSolidColorOnEntries(IEnumerable entries, Color color) + // The meshes a variant paints: every mesh variant of an included, non-collision + // entry (originalMesh, repackedMesh, transferredMesh, fbxMesh), each once. + static List PaintableMeshes(IEnumerable entries) { - if (entries == null) return 0; - var color32 = (Color32)color; - var painted = new HashSet(); - + var meshes = new List(); + if (entries == null) return meshes; + var seen = new HashSet(); foreach (var entry in entries) { if (entry == null || entry.renderer == null || !entry.include) continue; - if (MeshHygieneUtility.IsCollisionNodeName(entry.renderer.name)) continue; - - var meshes = new[] { entry.originalMesh, entry.repackedMesh, entry.transferredMesh, entry.fbxMesh }; - foreach (var mesh in meshes) - { - if (mesh == null || mesh.vertexCount == 0) continue; - if (!painted.Add(mesh)) continue; - - Undo.RecordObject(mesh, "Bake Solid Color"); - var arr = new Color32[mesh.vertexCount]; - for (int i = 0; i < arr.Length; i++) arr[i] = color32; - mesh.colors32 = arr; - EditorUtility.SetDirty(mesh); - } + if (MeshNaming.IsCollision(entry.renderer.name)) continue; + foreach (var mesh in new[] { entry.originalMesh, entry.repackedMesh, entry.transferredMesh, entry.fbxMesh }) + if (mesh != null && mesh.vertexCount > 0 && seen.Add(mesh)) meshes.Add(mesh); } - return painted.Count; + return meshes; + } + + // Paint mesh.colors32 with a uniform colour across every mesh variant of an + // entry. Returns the number of distinct meshes painted. + public static int BakeSolidColorOnEntries(IEnumerable entries, Color color) + { + var meshes = PaintableMeshes(entries); + foreach (var mesh in meshes) + VertexChannels.FillColors(mesh, color, "Bake Solid Color"); + return meshes.Count; } // Capture the current vertex colors of every mesh BakeSolidColorOnEntries @@ -82,21 +78,8 @@ public static int BakeSolidColorOnEntries(IEnumerable entries, Color static Dictionary SnapshotEntryColors(IEnumerable entries) { var backup = new Dictionary(); - if (entries == null) return backup; - foreach (var entry in entries) - { - if (entry == null || entry.renderer == null || !entry.include) continue; - if (MeshHygieneUtility.IsCollisionNodeName(entry.renderer.name)) continue; - - var meshes = new[] { entry.originalMesh, entry.repackedMesh, entry.transferredMesh, entry.fbxMesh }; - foreach (var mesh in meshes) - { - if (mesh == null || mesh.vertexCount == 0) continue; - if (backup.ContainsKey(mesh)) continue; - var c = mesh.colors32; - backup[mesh] = (c != null && c.Length == mesh.vertexCount) ? c : null; - } - } + foreach (var mesh in PaintableMeshes(entries)) + backup[mesh] = VertexChannels.SnapshotColors(mesh); return backup; } @@ -105,13 +88,7 @@ static void RestoreEntryColors(Dictionary backup) { if (backup == null) return; foreach (var kv in backup) - { - var mesh = kv.Key; - if (mesh == null) continue; - Undo.RecordObject(mesh, "Restore Vertex Colors"); - mesh.colors32 = kv.Value ?? new Color32[mesh.vertexCount]; - EditorUtility.SetDirty(mesh); - } + if (kv.Key != null) VertexChannels.RestoreColors(kv.Key, kv.Value, "Restore Vertex Colors"); } // Run a batch of variants against the same source FBX/prefab. Each diff --git a/Editor/Tools/VertexColorBakingTool.cs b/Editor/Tools/VertexColorBakingTool.cs index 833b94ea..518c5a67 100644 --- a/Editor/Tools/VertexColorBakingTool.cs +++ b/Editor/Tools/VertexColorBakingTool.cs @@ -49,7 +49,7 @@ public class VertexColorBakingTool : IUvTool ? (AOTargetChannel)channelComp : (AOTargetChannel)(4 + (channelType - 1) * 2 + channelComp); - string TargetChannelName => channelTypeNames[channelType] + " " + (channelType == 0 ? colorCompNames : uvCompNames)[channelComp]; + string TargetChannelName => VertexChannels.Name(TargetChannel); // ── Post-processing ── // Topology blur @@ -2039,7 +2039,7 @@ void LoadFromMesh() } if (mesh == null) continue; - var ao = ReadFromChannel(mesh, channel); + var ao = VertexChannels.Read(mesh, channel); if (ao == null) continue; bakedRawAO[mesh] = ao; @@ -2064,38 +2064,6 @@ void LoadFromMesh() UvtLog.Info($"[Vertex AO] Loaded {bakedVertexCount} vertices from {TargetChannelName}"); } - static float[] ReadFromChannel(Mesh mesh, AOTargetChannel channel) - { - int ch = (int)channel; - int vertCount = mesh.vertexCount; - - if (ch <= (int)AOTargetChannel.VertexColorA) - { - var colors = mesh.colors32; - if (colors == null || colors.Length != vertCount) return null; - int comp = ch - (int)AOTargetChannel.VertexColorR; - var ao = new float[vertCount]; - for (int i = 0; i < vertCount; i++) - { - var c = colors[i]; - ao[i] = (comp == 0 ? c.r : comp == 1 ? c.g : comp == 2 ? c.b : c.a) / 255f; - } - return ao; - } - else - { - int uvIdx = (ch - (int)AOTargetChannel.UV0_X) / 2; - int comp = (ch - (int)AOTargetChannel.UV0_X) % 2; - var uvs = new List(); - mesh.GetUVs(uvIdx, uvs); - if (uvs.Count != vertCount) return null; - var ao = new float[vertCount]; - for (int i = 0; i < vertCount; i++) - ao[i] = Mathf.Clamp01(comp == 0 ? uvs[i].x : uvs[i].y); - return ao; - } - } - void ApplyBlur() { if (bakedRawAO == null) return; @@ -2121,18 +2089,9 @@ void ApplyBlurInternal() bakedFinalAO = new Dictionary(); foreach (var mesh in bakedRawAO.Keys) { - var raw = bakedRawAO[mesh]; - if (faceAreaStrength > 0f && bakedFaceAreaAO != null && bakedFaceAreaAO.TryGetValue(mesh, out var faa)) - { - var blended = new float[raw.Length]; - for (int i = 0; i < raw.Length; i++) - blended[i] = Mathf.Lerp(raw[i], faa[i], faceAreaStrength); - bakedFinalAO[mesh] = blended; - } - else - { - bakedFinalAO[mesh] = (float[])raw.Clone(); - } + float[] faa = null; + if (faceAreaStrength > 0f && bakedFaceAreaAO != null) bakedFaceAreaAO.TryGetValue(mesh, out faa); + bakedFinalAO[mesh] = VertexChannels.Blend(bakedRawAO[mesh], faa, faceAreaStrength); } // 1. Topology blur @@ -2165,17 +2124,8 @@ void ApplyBlurInternal() // 3. Brightness / Contrast if (ppBrightness != 0f || ppContrast != 1f) - { - foreach (var mesh in bakedFinalAO.Keys.ToList()) - { - var ao = bakedFinalAO[mesh]; - for (int i = 0; i < ao.Length; i++) - { - float v = (ao[i] - 0.5f) * ppContrast + 0.5f + ppBrightness; - ao[i] = Mathf.Clamp01(v); - } - } - } + foreach (var ao in bakedFinalAO.Values) + VertexChannels.Levels(ao, ppBrightness, ppContrast); } // ── Apply ── @@ -2229,25 +2179,15 @@ void ApplyToMesh() if (applySelectedRendererOnly && applySelectedSubmeshOnly) { - var merged = ReadFromChannel(mesh, channel) ?? new float[mesh.vertexCount]; - if (selectedSubmeshIndex < 0 || selectedSubmeshIndex >= mesh.subMeshCount) + if (!VertexChannels.WriteSubmesh(mesh, ao, channel, selectedSubmeshIndex, "Write AO Channel")) { UvtLog.Warn($"[Vertex AO] Submesh index {selectedSubmeshIndex} is out of range for mesh '{mesh.name}'."); continue; } - - var triangles = mesh.GetTriangles(selectedSubmeshIndex); - for (int ti = 0; ti < triangles.Length; ti++) - { - int vi = triangles[ti]; - if (vi >= 0 && vi < merged.Length) - merged[vi] = ao[vi]; - } - VertexAOBaker.WriteToChannel(mesh, merged, channel); } else { - VertexAOBaker.WriteToChannel(mesh, ao, channel); + VertexChannels.Write(mesh, ao, channel, "Write AO Channel"); } EditorUtility.SetDirty(mesh); } @@ -2304,14 +2244,7 @@ void ActivatePreview() // Clone mesh with AO in vertex colors var clone = UnityEngine.Object.Instantiate(mesh); clone.hideFlags = HideFlags.HideAndDontSave; - var colors = new Color32[clone.vertexCount]; - var ao = bakedFinalAO[mesh]; - for (int i = 0; i < colors.Length; i++) - { - byte v = (byte)(Mathf.Clamp01(ao[i]) * 255f); - colors[i] = new Color32(v, v, v, 255); - } - clone.colors32 = colors; + clone.colors32 = VertexChannels.Greyscale(bakedFinalAO[mesh]); mf.sharedMesh = clone; var mats = new Material[mr.sharedMaterials.Length]; diff --git a/Editor/VertexAOBaker.cs b/Editor/VertexAOBaker.cs index 590f0ed2..6241aa70 100644 --- a/Editor/VertexAOBaker.cs +++ b/Editor/VertexAOBaker.cs @@ -143,63 +143,7 @@ public static Dictionary ApplyFaceAreaCorrection( /// space). /// public static void WriteToChannel(Mesh mesh, float[] aoValues, AOTargetChannel channel) - { - if (mesh == null || aoValues == null || aoValues.Length != mesh.vertexCount) return; - - Undo.RecordObject(mesh, "Write AO Channel"); - - int ch = (int)channel; - if (ch <= (int)AOTargetChannel.VertexColorA) - { - // Vertex Color R/G/B/A - var colors = mesh.colors32; - if (colors == null || colors.Length != mesh.vertexCount) - { - colors = new Color32[mesh.vertexCount]; - for (int i = 0; i < colors.Length; i++) - colors[i] = new Color32(255, 255, 255, 255); - } - int comp = ch - (int)AOTargetChannel.VertexColorR; // 0=R,1=G,2=B,3=A - for (int i = 0; i < aoValues.Length; i++) - { - byte v = (byte)(Mathf.Clamp01(aoValues[i]) * 255f); - var c = colors[i]; - if (comp == 0) c.r = v; - else if (comp == 1) c.g = v; - else if (comp == 2) c.b = v; - else c.a = v; - colors[i] = c; - } - mesh.colors32 = colors; - } - else - { - // UV channel X or Y - int uvIdx = (ch - (int)AOTargetChannel.UV0_X) / 2; // 0-4 - int comp = (ch - (int)AOTargetChannel.UV0_X) % 2; // 0=X, 1=Y - var uvs = new List(); - mesh.GetUVs(uvIdx, uvs); - if (uvs.Count != mesh.vertexCount) - { - uvs.Clear(); - for (int i = 0; i < mesh.vertexCount; i++) - uvs.Add(Vector2.zero); - } - for (int i = 0; i < aoValues.Length; i++) - { - // Clamp to [0,1] — matches the vertex-color path and keeps - // downstream shaders well-defined. Upstream math (area - // correction, blur) can drift slightly out of range due - // to float error / user intensity tweaks. - float v = Mathf.Clamp01(aoValues[i]); - var uv = uvs[i]; - if (comp == 0) uv.x = v; - else uv.y = v; - uvs[i] = uv; - } - mesh.SetUVs(uvIdx, uvs); - } - } + => VertexChannels.Write(mesh, aoValues, channel, "Write AO Channel"); // ── Face-area AO correction ── diff --git a/Tests/Editor/VertexChannelsTests.cs b/Tests/Editor/VertexChannelsTests.cs new file mode 100644 index 00000000..77dd1ecf --- /dev/null +++ b/Tests/Editor/VertexChannelsTests.cs @@ -0,0 +1,115 @@ +// VertexChannelsTests.cs — the scalar vertex channel: decoding, read/write round trips, +// the submesh write, levels and blend, colour snapshots. +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class VertexChannelsTests + { + Mesh mesh; + + [SetUp] + public void SetUp() + { + mesh = new Mesh(); + mesh.vertices = new[] { Vector3.zero, Vector3.right, Vector3.up, Vector3.one }; + mesh.subMeshCount = 2; + mesh.SetTriangles(new[] { 0, 1, 2 }, 0); + mesh.SetTriangles(new[] { 1, 3, 2 }, 1); + } + + [TearDown] + public void TearDown() => Object.DestroyImmediate(mesh); + + [TestCase(AOTargetChannel.VertexColorR, true, 0, -1, -1, "Vertex Color R")] + [TestCase(AOTargetChannel.VertexColorA, true, 3, -1, -1, "Vertex Color A")] + [TestCase(AOTargetChannel.UV0_X, false, -1, 0, 0, "UV0 X")] + [TestCase(AOTargetChannel.UV2_Y, false, -1, 2, 1, "UV2 Y")] + [TestCase(AOTargetChannel.UV4_Y, false, -1, 4, 1, "UV4 Y")] + public void ChannelsDecodeToComponentAndSet(AOTargetChannel ch, bool isColor, int colorComp, int uvSet, int uvComp, string name) + { + Assert.AreEqual(isColor, VertexChannels.IsColor(ch)); + Assert.AreEqual(colorComp, VertexChannels.ColorComponent(ch)); + Assert.AreEqual(uvSet, VertexChannels.UvChannel(ch)); + Assert.AreEqual(uvComp, VertexChannels.UvComponent(ch)); + Assert.AreEqual(name, VertexChannels.Name(ch)); + } + + [Test] + public void ColorWriteKeepsTheOtherComponentsOverAWhiteDefault() + { + Assert.IsNull(VertexChannels.Read(mesh, AOTargetChannel.VertexColorG), "no colours yet"); + VertexChannels.Write(mesh, new[] { 0f, .5f, 1f, 2f }, AOTargetChannel.VertexColorG); + var c = mesh.colors32; + Assert.AreEqual(255, c[0].r, "untouched components start white"); + Assert.AreEqual(0, c[0].g); + Assert.AreEqual(127, c[1].g); + Assert.AreEqual(255, c[3].g, "clamped"); + var back = VertexChannels.Read(mesh, AOTargetChannel.VertexColorG); + Assert.AreEqual(127f / 255f, back[1], 1e-6f); + VertexChannels.Write(mesh, new[] { 1f, 1f, 1f, 1f }, AOTargetChannel.VertexColorA); + Assert.AreEqual(127, mesh.colors32[1].g, "a write to A leaves G alone"); + } + + [Test] + public void UvWriteKeepsTheOtherComponentOverAZeroDefault() + { + VertexChannels.Write(mesh, new[] { .1f, .2f, .3f, .4f }, AOTargetChannel.UV2_Y); + var uv = new System.Collections.Generic.List(); + mesh.GetUVs(2, uv); + Assert.AreEqual(new Vector2(0f, .2f), uv[1]); + VertexChannels.Write(mesh, new[] { .9f, .9f, .9f, .9f }, AOTargetChannel.UV2_X); + mesh.GetUVs(2, uv); + Assert.AreEqual(new Vector2(.9f, .2f), uv[1]); + Assert.AreEqual(.2f, VertexChannels.Read(mesh, AOTargetChannel.UV2_Y)[1], 1e-6f); + Assert.IsNull(VertexChannels.Read(mesh, AOTargetChannel.UV3_X)); + } + + [Test] + public void MismatchedLengthsWriteNothing() + { + VertexChannels.Write(mesh, new[] { 1f }, AOTargetChannel.VertexColorR); + Assert.AreEqual(0, mesh.colors32.Length); + Assert.IsFalse(VertexChannels.WriteSubmesh(mesh, new float[4], AOTargetChannel.VertexColorR, 5), "submesh out of range"); + } + + [Test] + public void SubmeshWriteTouchesOnlyThatSubmeshesVertices() + { + VertexChannels.Write(mesh, new[] { .5f, .5f, .5f, .5f }, AOTargetChannel.UV1_X); + Assert.IsTrue(VertexChannels.WriteSubmesh(mesh, new[] { 0f, 0f, 0f, 0f }, AOTargetChannel.UV1_X, 1)); + var v = VertexChannels.Read(mesh, AOTargetChannel.UV1_X); + Assert.AreEqual(.5f, v[0], 1e-6f, "vertex 0 is only in submesh 0"); + Assert.AreEqual(0f, v[1], 1e-6f); + Assert.AreEqual(0f, v[3], 1e-6f); + } + + [Test] + public void LevelsAndBlendAreTheTabsFormulas() + { + var v = new[] { 0f, .5f, 1f }; + VertexChannels.Levels(v, .1f, 2f); + Assert.AreEqual(new[] { 0f, .6f, 1f }, v); + var blended = VertexChannels.Blend(new[] { 0f, 1f }, new[] { 1f, 0f }, .25f); + Assert.AreEqual(.25f, blended[0], 1e-6f); + Assert.AreEqual(.75f, blended[1], 1e-6f); + Assert.AreEqual(new[] { 0f, 1f }, VertexChannels.Blend(new[] { 0f, 1f }, null, .5f), "no partner: a copy"); + Assert.AreEqual(new byte[] { 0, 127, 255 }, System.Array.ConvertAll(VertexChannels.Greyscale(new[] { 0f, .5f, 1f }), c => c.r)); + } + + [Test] + public void ColourSnapshotsRoundTripAndNullClears() + { + Assert.IsNull(VertexChannels.SnapshotColors(mesh)); + VertexChannels.FillColors(mesh, Color.red, null); + var snap = VertexChannels.SnapshotColors(mesh); + Assert.AreEqual(255, snap[2].r); + VertexChannels.FillColors(mesh, Color.blue, null); + VertexChannels.RestoreColors(mesh, snap, null); + Assert.AreEqual(255, mesh.colors32[2].r); + VertexChannels.RestoreColors(mesh, null, null); + Assert.AreEqual(0, mesh.colors32[2].r, "a null snapshot clears to black"); + } + } +} diff --git a/Tests/Editor/VertexChannelsTests.cs.meta b/Tests/Editor/VertexChannelsTests.cs.meta new file mode 100644 index 00000000..0a39d62d --- /dev/null +++ b/Tests/Editor/VertexChannelsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b67c07bb65b49c5aa7a9bac70f17838 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From f01eafd7c78c4b37b8fe4165d89833bb17c1a61b Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:37:12 +0000 Subject: [PATCH 094/130] refactor(mesh): LodHierarchy, the one LODGroup-from-hierarchy behind Cleanup, Prefab Builder and LOD Generation Rebuilding a LODGroup from _LOD{n} names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. Editor/Mesh/LodHierarchy.cs is the one implementation (CollectByName, LodsFromNames with a Transitions scheme, RebuildFromNames, CreateFromRenderers, CreateFromSiblings, Compact, RootRendererIsLod0, MoveRootMeshToChild + SortChildrenAsLods, AddColliderFromCollisionMesh, AssignCollider). Each tab keeps its policy as arguments, UvToolContext.CompactLodArray and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through RendererSettings. LodGroupUtility stays the component-level half. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 1 + Editor/Framework/UvToolContext.cs | 27 +-- Editor/Mesh/LodHierarchy.cs | 321 +++++++++++++++++++++++++ Editor/Mesh/LodHierarchy.cs.meta | 11 + Editor/Tools/CleanupTool.cs | 194 +-------------- Editor/Tools/LodGenerationTool.cs | 30 +-- Editor/Tools/PrefabBuilderTool.cs | 60 +---- Tests/Editor/LodHierarchyTests.cs | 189 +++++++++++++++ Tests/Editor/LodHierarchyTests.cs.meta | 11 + 10 files changed, 553 insertions(+), 292 deletions(-) create mode 100644 Editor/Mesh/LodHierarchy.cs create mode 100644 Editor/Mesh/LodHierarchy.cs.meta create mode 100644 Tests/Editor/LodHierarchyTests.cs create mode 100644 Tests/Editor/LodHierarchyTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index e2d86cc4..fa8b38ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One LODGroup-from-hierarchy: `LodHierarchy`.** Rebuilding a LODGroup from `_LOD{n}` names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice (Cleanup at 0.5, LOD Generation at 0.01) and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. `Editor/Mesh/LodHierarchy.cs` is the one implementation (`CollectByName`, `LodsFromNames` with a `Transitions` scheme, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild` + `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); each tab keeps its policy (which children, which transitions) as arguments, `UvToolContext.CompactLodArray` and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through `RendererSettings` (it copied five of them). `LodGroupUtility` stays the component-level half. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. - **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. - **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. - **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. diff --git a/CLAUDE.md b/CLAUDE.md index f01a258e..414584ba 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,6 +32,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **Context:** `Editor/Framework/UvToolContext.cs` — shared state - **Tools:** `Editor/Tools/` — each implements `IUvTool` - **Geometry:** `Editor/Geometry/` — `MeshGeometry` (face normals, welding, sample directions, barycentrics) and `GpuReadback` (the one GPU → CPU texture read); spatial queries in `Editor/TriangleBvh.cs` / `TriangleBvh2D.cs`. Use these; never add a tool-local copy +- **LOD hierarchy:** `Editor/Mesh/LodHierarchy.cs` — a LODGroup from its hierarchy (`CollectByName`, `LodsFromNames`, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild`, `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); `LodGroupUtility` is the component half (recreate, apply, transition normalisation) - **Vertex channels:** `Editor/Mesh/VertexChannels.cs` — a scalar per-vertex channel (`AOTargetChannel`: colour component or UV component) decoded, read, written (whole mesh or one submesh), levels/blend, greyscale preview colours, fill/snapshot/restore of `colors32`. Never decode the enum or poke `colors32`/`GetUVs` for a scalar channel in a tool - **UV:** `Editor/Uv/UvTopology.cs` — index-space UV layout topology (channel read, boundary edges, unique edges, point-in-triangle, shell vote, face→shell, shell data, UDIM tiles); the canvas, 3D layer and viewport cache its results, never recompute them locally - **Assets:** `Editor/Assets/` — `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves diff --git a/Editor/Framework/UvToolContext.cs b/Editor/Framework/UvToolContext.cs index a92f58ba..04aa0bc5 100644 --- a/Editor/Framework/UvToolContext.cs +++ b/Editor/Framework/UvToolContext.cs @@ -268,32 +268,7 @@ public UvToolContext() /// slots (from "Add LOD Level") survive a context refresh. /// public static bool CompactLodArray(LODGroup lodGroup, bool removeEmptySlots = false) - { - if (lodGroup == null) return false; - var lods = lodGroup.GetLODs(); - var compacted = new List(); - bool changed = false; - foreach (var lod in lods) - { - var renderers = lod.renderers ?? new Renderer[0]; - var valid = renderers.Where(r => r != null).ToArray(); - if (valid.Length != renderers.Length) changed = true; - if (valid.Length == 0) - { - if (removeEmptySlots) { changed = true; continue; } - compacted.Add(new LOD(lod.screenRelativeTransitionHeight, new Renderer[0])); - continue; - } - compacted.Add(new LOD(lod.screenRelativeTransitionHeight, valid)); - } - if (changed) - { - Undo.RecordObject(lodGroup, "Compact LOD Array"); - lodGroup.SetLODs(compacted.ToArray()); - UvtLog.Info($"[Context] Compacted LOD array: {lods.Length} → {compacted.Count} slots."); - } - return changed; - } + => LodHierarchy.Compact(lodGroup, removeEmptySlots); public void Refresh(LODGroup lodGroup) { diff --git a/Editor/Mesh/LodHierarchy.cs b/Editor/Mesh/LodHierarchy.cs new file mode 100644 index 00000000..4365d83c --- /dev/null +++ b/Editor/Mesh/LodHierarchy.cs @@ -0,0 +1,321 @@ +// LodHierarchy.cs — a LODGroup read from and written to its hierarchy: the LOD +// renderers a root's children name, the LOD array built from them, a group created +// from renderers or detected siblings, the compaction of a LOD array, a root mesh moved +// into a LOD0 child with the children sorted by polycount, and the root MeshCollider +// fed from a collision child. The Cleanup, Prefab Builder and LOD Generation tabs and +// the tool context each carried their own; this is the one implementation. +// LodGroupUtility stays the component-level half (recreate, apply, transitions). +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class LodHierarchy + { + /// How the transition heights of a rebuilt LOD array are laid out. + internal enum Transitions + { + /// 0.5, 0.25, 0.125 … (the Cleanup tab and detected-sibling groups). + Halving, + /// 1.0 down to 0.01 in equal steps; 0.01 for a single level (the Prefab Builder). + Linear, + } + + // ── reading the hierarchy ── + + /// + /// The renderers under whose node names carry a LOD index, + /// per index: the root's direct children only, or every renderer below the root + /// (meshes inside group containers) when . Collision + /// objects are skipped; the root itself is never included. + /// + internal static SortedDictionary> CollectByName(Transform root, bool recursive) + { + var byIndex = new SortedDictionary>(); + if (root == null) return byIndex; + var colSet = new HashSet(MeshHygieneUtility.FindCollisionObjects(root)); + + void Add(Renderer r) + { + if (r == null || r.transform == root || colSet.Contains(r.gameObject)) return; + if (!MeshNaming.TryParseLod(r.gameObject.name, out _, out int lodIdx)) return; + if (!byIndex.TryGetValue(lodIdx, out var list)) byIndex[lodIdx] = list = new List(); + list.Add(r); + } + + if (recursive) + foreach (var r in root.GetComponentsInChildren(true)) Add(r); + else + for (int i = 0; i < root.childCount; i++) Add(root.GetChild(i).GetComponent()); + return byIndex; + } + + /// + /// The LOD array for a name map: one slot per index from 0 to the highest found + /// (gaps as empty slots) with , else one slot per + /// index present; transitions per . Empty for an empty map. + /// + internal static LOD[] LodsFromNames(SortedDictionary> byIndex, bool keepEmptySlots, Transitions scheme) + { + if (byIndex == null || byIndex.Count == 0) return Array.Empty(); + var slots = new List(); + if (keepEmptySlots) + { + int max = byIndex.Keys.Max(); + for (int i = 0; i <= max; i++) + slots.Add(byIndex.TryGetValue(i, out var list) ? list.ToArray() : Array.Empty()); + } + else + { + foreach (var kvp in byIndex) slots.Add(kvp.Value.ToArray()); + } + + var lods = new LOD[slots.Count]; + for (int i = 0; i < lods.Length; i++) + lods[i] = new LOD(Transition(scheme, i, lods.Length), slots[i]); + return lods; + } + + /// The transition height of slot of under a scheme. + internal static float Transition(Transitions scheme, int index, int count) + { + switch (scheme) + { + case Transitions.Linear: + return count <= 1 ? 0.01f : 1f - ((float)index / (count - 1)) * 0.99f; // 1.0 → 0.01 + default: + return Mathf.Pow(0.5f, index + 1); + } + } + + // ── writing the group ── + + /// + /// Rebuilds 's LOD array from the names under its root + /// (see and ), with Undo and + /// recalculated bounds. Returns the number of LOD levels set; 0 when no LOD-named + /// renderer was found and the group was left alone. + /// + internal static int RebuildFromNames(LODGroup lodGroup, bool recursive, bool keepEmptySlots, Transitions scheme, string undoLabel = "Rebuild LODGroup") + { + if (lodGroup == null) return 0; + var lods = LodsFromNames(CollectByName(lodGroup.transform, recursive), keepEmptySlots, scheme); + if (lods.Length == 0) return 0; + Undo.RecordObject(lodGroup, undoLabel); + lodGroup.SetLODs(lods); + lodGroup.RecalculateBounds(); + return lods.Length; + } + + /// + /// Adds a LODGroup to with every renderer below it as LOD0 at + /// . With nothing is + /// added and null returned when there is no renderer; otherwise the group is added + /// empty. tells how many went in. + /// + internal static LODGroup CreateFromRenderers(GameObject root, float transition, bool requireRenderers, out int rendererCount) + { + rendererCount = 0; + if (root == null) return null; + var renderers = root.GetComponentsInChildren(); + rendererCount = renderers.Length; + if (requireRenderers && renderers.Length == 0) return null; + + var lodGroup = Undo.AddComponent(root); + if (renderers.Length > 0) + { + lodGroup.SetLODs(new[] { new LOD(transition, renderers) }); + lodGroup.RecalculateBounds(); + } + return lodGroup; + } + + /// + /// Adds a LODGroup to the parent of detected LOD siblings (Foo_LOD0, + /// Foo_LOD2 …), one slot per sibling in list order (gaps close up), halving + /// transitions, each sibling's renderers in its slot. + /// + internal static LODGroup CreateFromSiblings(List<(GameObject go, int lodIndex)> siblings) + { + if (siblings == null || siblings.Count == 0 || siblings[0].go == null || siblings[0].go.transform.parent == null) return null; + var lodRoot = siblings[0].go.transform.parent.gameObject; + var lodGroup = Undo.AddComponent(lodRoot); + var lods = new LOD[siblings.Count]; + for (int i = 0; i < siblings.Count; i++) + lods[i] = new LOD(Transition(Transitions.Halving, i, siblings.Count), siblings[i].go.GetComponentsInChildren()); + lodGroup.SetLODs(lods); + lodGroup.RecalculateBounds(); + return lodGroup; + } + + /// + /// Drops null renderers from every slot and, with , + /// the slots left empty (otherwise user-added empty levels survive). Writes back with + /// Undo only when something changed. Returns whether it did. + /// + internal static bool Compact(LODGroup lodGroup, bool removeEmptySlots) + { + if (lodGroup == null) return false; + var lods = lodGroup.GetLODs(); + var compacted = new List(); + bool changed = false; + foreach (var lod in lods) + { + var renderers = lod.renderers ?? Array.Empty(); + var valid = renderers.Where(r => r != null).ToArray(); + if (valid.Length != renderers.Length) changed = true; + if (valid.Length == 0) + { + if (removeEmptySlots) { changed = true; continue; } + compacted.Add(new LOD(lod.screenRelativeTransitionHeight, Array.Empty())); + continue; + } + compacted.Add(new LOD(lod.screenRelativeTransitionHeight, valid)); + } + if (!changed) return false; + Undo.RecordObject(lodGroup, "Compact LOD Array"); + lodGroup.SetLODs(compacted.ToArray()); + UvtLog.Info($"[Context] Compacted LOD array: {lods.Length} → {compacted.Count} slots."); + return true; + } + + // ── the root ── + + /// True when the root's own renderer sits in LOD0 (a root mesh that is the LOD0 by design, not a stray). + internal static bool RootRendererIsLod0(GameObject root, LOD[] lods) + { + if (root == null || lods == null || lods.Length == 0) return false; + var rootRenderer = root.GetComponent(); + if (rootRenderer == null) return false; + var lod0 = lods[0].renderers; + if (lod0 == null) return false; + for (int i = 0; i < lod0.Length; i++) + if (lod0[i] == rootRenderer) return true; + return false; + } + + /// + /// Moves the root's MeshFilter/MeshRenderer into a new child (materials, renderer + /// settings and static flags carried over; a MeshCollider stays on the root, where + /// the Node(Collider) → LOD children convention wants it), then renames the root's + /// mesh children {base}_LOD0..N by descending polycount + /// (). Everything is recorded for Undo. Returns the + /// number of LOD children named; 0 when the root has no mesh. + /// + internal static int MoveRootMeshToChild(GameObject root) + { + if (root == null) return 0; + var rootMf = root.GetComponent(); + var rootMr = root.GetComponent(); + if (rootMf == null || rootMf.sharedMesh == null) return 0; + + string baseName = BaseName(root.name); + var lod0Child = new GameObject(baseName + "_temp"); + Undo.RegisterCreatedObjectUndo(lod0Child, "Move Root Mesh"); + lod0Child.transform.SetParent(root.transform, false); + lod0Child.AddComponent().sharedMesh = rootMf.sharedMesh; + if (rootMr != null) + { + var newMr = lod0Child.AddComponent(); + newMr.sharedMaterials = rootMr.sharedMaterials; + RendererSettings.Copy(rootMr, newMr, includeMaterials: false); + GameObjectUtility.SetStaticEditorFlags(lod0Child, GameObjectUtility.GetStaticEditorFlags(root)); + Undo.DestroyObjectImmediate(rootMr); + } + Undo.DestroyObjectImmediate(rootMf); + + return SortChildrenAsLods(root.transform, baseName); + } + + /// The group key of a node name, sanitized; "Unnamed" when nothing is left. + internal static string BaseName(string nodeName) + { + string baseName = MeshNaming.GroupKey(nodeName); + if (string.IsNullOrEmpty(baseName)) baseName = nodeName; + baseName = MeshHygieneUtility.SanitizeName(baseName); + return string.IsNullOrEmpty(baseName) ? "Unnamed" : baseName; + } + + /// + /// Renames the root's direct mesh children (collision objects excluded) + /// {baseName}_LOD0..N in descending polycount order, through temporary names + /// so existing _LOD names cannot collide. Returns how many were named. + /// + internal static int SortChildrenAsLods(Transform root, string baseName) + { + var colSet = new HashSet(MeshHygieneUtility.FindCollisionObjects(root)); + var candidates = new List<(Transform t, int polyCount)>(); + foreach (Transform child in root) + { + if (colSet.Contains(child.gameObject)) continue; + var mf = child.GetComponent(); + var smr = child.GetComponent(); + var mesh = mf != null ? mf.sharedMesh : (smr != null ? smr.sharedMesh : null); + if (mesh == null) continue; + candidates.Add((child, MeshHygieneUtility.GetTriangleCount(mesh))); + } + candidates.Sort((a, b) => b.polyCount.CompareTo(a.polyCount)); + + for (int i = 0; i < candidates.Count; i++) + { + Undo.RecordObject(candidates[i].t.gameObject, "Rename LOD"); + candidates[i].t.name = "__UVTMP_LOD_" + i + "_" + Guid.NewGuid().ToString("N"); + } + for (int i = 0; i < candidates.Count; i++) + { + Undo.RecordObject(candidates[i].t.gameObject, "Rename LOD"); + candidates[i].t.name = baseName + "_LOD" + i; + } + return candidates.Count; + } + + // ── the collider ── + + /// + /// Gives the root a MeshCollider over the first collision child's mesh and disables + /// that child's renderer. Null when the root already has a collider or no collision + /// child carries a mesh. + /// + internal static MeshCollider AddColliderFromCollisionMesh(GameObject root) + { + if (root == null || root.GetComponent() != null) return null; + foreach (var colObj in MeshHygieneUtility.FindCollisionObjects(root.transform)) + { + var mf = colObj.GetComponent(); + if (mf == null || mf.sharedMesh == null) continue; + var collider = Undo.AddComponent(root); + collider.sharedMesh = mf.sharedMesh; + UvtLog.Info($"Added MeshCollider to {root.name} from {colObj.name}"); + var mr = colObj.GetComponent(); + if (mr != null) + { + Undo.RecordObject(mr, "Disable COL Renderer"); + mr.enabled = false; + } + return collider; + } + return null; + } + + /// The root's MeshCollider (added when missing, recorded when present) set to . + internal static MeshCollider AssignCollider(GameObject root, Mesh mesh) + { + if (root == null || mesh == null) return null; + var mc = root.GetComponent(); + if (mc == null) + { + mc = Undo.AddComponent(root); + UvtLog.Info($"Added MeshCollider to {root.name}"); + } + else + { + Undo.RecordObject(mc, "Assign Collision Mesh"); + } + mc.sharedMesh = mesh; + return mc; + } + } +} diff --git a/Editor/Mesh/LodHierarchy.cs.meta b/Editor/Mesh/LodHierarchy.cs.meta new file mode 100644 index 00000000..b8fc400d --- /dev/null +++ b/Editor/Mesh/LodHierarchy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5c709d8d7104f03a677111d0c780726 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Tools/CleanupTool.cs b/Editor/Tools/CleanupTool.cs index 28c22b34..7d522983 100644 --- a/Editor/Tools/CleanupTool.cs +++ b/Editor/Tools/CleanupTool.cs @@ -171,17 +171,11 @@ public void OnDrawSidebar() GUI.backgroundColor = new Color(.6f, .75f, .9f); if (GUILayout.Button($"Add LODGroup to \"{selected.name}\"", GUILayout.Height(24))) { - var lodGroup = Undo.AddComponent(selected); - // Auto-assign renderers as LOD0 - var renderers = selected.GetComponentsInChildren(); - if (renderers.Length > 0) - { - lodGroup.SetLODs(new LOD[] { new LOD(0.5f, renderers) }); - lodGroup.RecalculateBounds(); - } + // Every renderer below the root becomes LOD0. + var lodGroup = LodHierarchy.CreateFromRenderers(selected, 0.5f, requireRenderers: false, out int rendererCount); ctx.Refresh(lodGroup); requestRepaint?.Invoke(); - UvtLog.Info($"Added LODGroup to {selected.name} with {renderers.Length} renderer(s)"); + UvtLog.Info($"Added LODGroup to {selected.name} with {rendererCount} renderer(s)"); } GUI.backgroundColor = bgc; } @@ -1237,7 +1231,7 @@ void ScanScene() bool rootHasRenderableMesh = (rootMf != null && rootMf.sharedMesh != null) || (rootSmr != null && rootSmr.sharedMesh != null); - if (rootHasRenderableMesh && !IsRootRendererUsedAsLod0(root.gameObject, lods)) + if (rootHasRenderableMesh && !LodHierarchy.RootRendererIsLod0(root.gameObject, lods)) { sceneIssues.Add(new SceneIssue { @@ -1368,13 +1362,14 @@ bool FixSceneCore() { if (issue.kind != SceneIssue.Kind.RootHasMesh) continue; if (issue.gameObject == null || ctx.LodGroup == null) continue; - if (IsRootRendererUsedAsLod0(issue.gameObject, ctx.LodGroup.GetLODs())) + if (LodHierarchy.RootRendererIsLod0(issue.gameObject, ctx.LodGroup.GetLODs())) { UvtLog.Info($"Skipped root mesh move for '{issue.gameObject.name}': root renderer is already used as LOD0."); continue; } - MoveRootMeshToChild(issue.gameObject); + int lodCount = LodHierarchy.MoveRootMeshToChild(issue.gameObject); + UvtLog.Info($"Moved root mesh to child, sorted {lodCount} LOD(s) by polycount."); movedRoots.Add(issue.gameObject); needsRefresh = true; } @@ -1412,53 +1407,19 @@ bool FixSceneCore() if (issue.kind != SceneIssue.Kind.MissingCollider) continue; if (issue.gameObject == null) continue; - AddColliderFromCollisionMesh(issue.gameObject); + LodHierarchy.AddColliderFromCollisionMesh(issue.gameObject); needsRefresh = true; } return needsRefresh; } + // Direct children named _LOD{n}: one slot per index up to the highest (gaps stay + // empty), halving transitions. void RebuildLodGroupFromHierarchy() { - var root = ctx.LodGroup.transform; - var colSet = new HashSet(MeshHygieneUtility.FindCollisionObjects(root)); - var lodChildren = new SortedDictionary>(); - - for (int i = 0; i < root.childCount; i++) - { - var child = root.GetChild(i); - if (colSet.Contains(child.gameObject)) continue; - - if (!MeshHygieneUtility.TryParseLodIndex(child.name, out int lodIdx)) continue; - var r = child.GetComponent(); - if (r == null) continue; - - if (!lodChildren.ContainsKey(lodIdx)) - lodChildren[lodIdx] = new List(); - lodChildren[lodIdx].Add(r); - } - - if (lodChildren.Count == 0) return; - - Undo.RecordObject(ctx.LodGroup, "Rebuild LODGroup"); - - int maxLod = lodChildren.Keys.Max() + 1; - var newLods = new LOD[maxLod]; - for (int i = 0; i < maxLod; i++) - { - Renderer[] renderers; - if (lodChildren.TryGetValue(i, out var list)) - renderers = list.ToArray(); - else - renderers = new Renderer[0]; - - newLods[i] = new LOD(Mathf.Pow(0.5f, i + 1), renderers); - } - - ctx.LodGroup.SetLODs(newLods); - ctx.LodGroup.RecalculateBounds(); - UvtLog.Info($"Rebuilt LODGroup with {maxLod} LOD level(s)."); + int levels = LodHierarchy.RebuildFromNames(ctx.LodGroup, recursive: false, keepEmptySlots: true, LodHierarchy.Transitions.Halving); + if (levels > 0) UvtLog.Info($"Rebuilt LODGroup with {levels} LOD level(s)."); } // ═══════════════════════════════════════════════════════════════ @@ -2434,141 +2395,10 @@ void FixApplyAttributes() requestRepaint?.Invoke(); } - /// - /// Move mesh from root to a new child, sort all mesh children by polycount, - /// and rename them _LOD0, _LOD1, etc. Root becomes empty pivot. - /// - void MoveRootMeshToChild(GameObject root) - { - string baseName = UvToolContext.ExtractGroupKey(root.name); - if (string.IsNullOrEmpty(baseName)) baseName = root.name; - baseName = MeshHygieneUtility.SanitizeName(baseName); - if (string.IsNullOrEmpty(baseName)) baseName = "Unnamed"; - - var rootMf = root.GetComponent(); - var rootMr = root.GetComponent(); - if (rootMf == null || rootMf.sharedMesh == null) return; - - // Create child for root's mesh - var lod0Child = new GameObject(baseName + "_temp"); - Undo.RegisterCreatedObjectUndo(lod0Child, "Move Root Mesh"); - lod0Child.transform.SetParent(root.transform, false); - var newMf = lod0Child.AddComponent(); - newMf.sharedMesh = rootMf.sharedMesh; - if (rootMr != null) - { - var newMr = lod0Child.AddComponent(); - newMr.sharedMaterials = rootMr.sharedMaterials; - newMr.shadowCastingMode = rootMr.shadowCastingMode; - newMr.receiveShadows = rootMr.receiveShadows; - newMr.lightProbeUsage = rootMr.lightProbeUsage; - newMr.reflectionProbeUsage = rootMr.reflectionProbeUsage; - if (rootMr is MeshRenderer srcMr && newMr is MeshRenderer dstMr) - { - dstMr.receiveGI = srcMr.receiveGI; - dstMr.scaleInLightmap = srcMr.scaleInLightmap; - } - GameObjectUtility.SetStaticEditorFlags(lod0Child, - GameObjectUtility.GetStaticEditorFlags(root.gameObject)); - Undo.DestroyObjectImmediate(rootMr); - } - // MeshCollider stays on the node (root) — the convention is - // Node(Collider) → LOD children, applied recursively to nested nodes. - Undo.DestroyObjectImmediate(rootMf); - - // Collect all mesh children (excluding collision) - var colSet = new HashSet(MeshHygieneUtility.FindCollisionObjects(root.transform)); - var lodCandidates = new List<(Transform t, int polyCount)>(); - foreach (Transform child in root.transform) - { - if (colSet.Contains(child.gameObject)) continue; - var mf = child.GetComponent(); - var smr = child.GetComponent(); - var mesh = mf != null ? mf.sharedMesh : (smr != null ? smr.sharedMesh : null); - if (mesh == null) continue; - lodCandidates.Add((child, MeshHygieneUtility.GetTriangleCount(mesh))); - } - - // Sort by polycount descending (LOD0 = highest) - lodCandidates.Sort((a, b) => b.polyCount.CompareTo(a.polyCount)); - - // Rename to _LOD0, _LOD1, etc. - // Use a temporary naming pass first to avoid collisions when - // children already contain one of the target names. - for (int i = 0; i < lodCandidates.Count; i++) - { - string tmpName = "__UVTMP_LOD_" + i + "_" + Guid.NewGuid().ToString("N"); - if (lodCandidates[i].t.name != tmpName) - { - Undo.RecordObject(lodCandidates[i].t.gameObject, "Rename LOD"); - lodCandidates[i].t.name = tmpName; - } - } - - for (int i = 0; i < lodCandidates.Count; i++) - { - string finalName = baseName + "_LOD" + i; - if (lodCandidates[i].t.name != finalName) - { - Undo.RecordObject(lodCandidates[i].t.gameObject, "Rename LOD"); - lodCandidates[i].t.name = finalName; - } - } - - UvtLog.Info($"Moved root mesh to child, sorted {lodCandidates.Count} LOD(s) by polycount."); - } - - /// - /// Find the first collision mesh (_COL/_Collider) and add MeshCollider to root. - /// Disable renderer on collision nodes. - /// - void AddColliderFromCollisionMesh(GameObject root) - { - if (root.GetComponent() != null) return; - - var colObjects = MeshHygieneUtility.FindCollisionObjects(root.transform); - foreach (var colObj in colObjects) - { - var mf = colObj.GetComponent(); - if (mf == null || mf.sharedMesh == null) continue; - - var collider = Undo.AddComponent(root); - collider.sharedMesh = mf.sharedMesh; - UvtLog.Info($"Added MeshCollider to {root.name} from {colObj.name}"); - - // Disable renderer on collision node - var mr = colObj.GetComponent(); - if (mr != null) - { - Undo.RecordObject(mr, "Disable COL Renderer"); - mr.enabled = false; - } - break; // one collider is enough - } - } - // ═══════════════════════════════════════════════════════════════ // Helpers // ═══════════════════════════════════════════════════════════════ - static bool IsRootRendererUsedAsLod0(GameObject root, LOD[] lods) - { - if (root == null || lods == null || lods.Length == 0) return false; - - var rootRenderer = root.GetComponent(); - if (rootRenderer == null) return false; - - var lod0Renderers = lods[0].renderers; - if (lod0Renderers == null || lod0Renderers.Length == 0) return false; - - for (int i = 0; i < lod0Renderers.Length; i++) - { - if (lod0Renderers[i] == rootRenderer) - return true; - } - return false; - } - void DrawScanFixButtons(Action scan, Action fix, System.Collections.IList issues) { EditorGUILayout.Space(4); diff --git a/Editor/Tools/LodGenerationTool.cs b/Editor/Tools/LodGenerationTool.cs index e16d9a8a..121e97d0 100644 --- a/Editor/Tools/LodGenerationTool.cs +++ b/Editor/Tools/LodGenerationTool.cs @@ -535,24 +535,7 @@ public void OnSceneGUI(SceneView sv) { } } internal static LODGroup CreateLodGroupStatic(List<(GameObject go, int lodIndex)> siblings) - { - var lodRoot = siblings[0].go.transform.parent.gameObject; - - var lodGroup = Undo.AddComponent(lodRoot); - - // Remap to contiguous indices (handles gaps like LOD0, LOD2 → slot 0, 1) - var lods = new LOD[siblings.Count]; - for (int i = 0; i < siblings.Count; i++) - { - var renderers = siblings[i].go.GetComponentsInChildren(); - lods[i] = new LOD(Mathf.Pow(0.5f, i + 1), renderers); - } - - lodGroup.SetLODs(lods); - lodGroup.RecalculateBounds(); - - return lodGroup; - } + => LodHierarchy.CreateFromSiblings(siblings); internal static void NormalizeSingleLodTransitionForGeneration(List lods, int startLod) { @@ -564,16 +547,7 @@ internal static void NormalizeSingleLodTransitionForGeneration(List lods, i } internal static LODGroup CreateLodGroupFromRenderers(GameObject root) - { - var renderers = root.GetComponentsInChildren(); - if (renderers.Length == 0) return null; - - var lodGroup = Undo.AddComponent(root); - lodGroup.SetLODs(new[] { new LOD(0.01f, renderers) }); - lodGroup.RecalculateBounds(); - - return lodGroup; - } + => LodHierarchy.CreateFromRenderers(root, 0.01f, requireRenderers: true, out _); void CreateLodGroup(List<(GameObject go, int lodIndex)> siblings) { diff --git a/Editor/Tools/PrefabBuilderTool.cs b/Editor/Tools/PrefabBuilderTool.cs index e292375d..c740d215 100644 --- a/Editor/Tools/PrefabBuilderTool.cs +++ b/Editor/Tools/PrefabBuilderTool.cs @@ -776,49 +776,10 @@ static void BakeMatrixIntoMesh(MeshFilter mf, Matrix4x4 matrix) MeshTransform.BakeMatrix(mesh, matrix); } + // Every renderer below the root named _LOD{n} (meshes can sit inside group + // containers): a compact slot list, transitions 1.0 → 0.01. void RebuildLodGroupFromNames() - { - if (ctx.LodGroup == null) return; - - var root = ctx.LodGroup.transform; - var colSet = new HashSet(MeshHygieneUtility.FindCollisionObjects(root)); - var lodChildren = new SortedDictionary>(); - - // Search recursively — meshes can be inside group containers - foreach (var r in root.GetComponentsInChildren(true)) - { - if (r == null || r.transform == root) continue; - if (colSet.Contains(r.gameObject)) continue; - - if (!MeshHygieneUtility.TryParseLodIndex(r.gameObject.name, out int lodIdx)) continue; - - if (!lodChildren.ContainsKey(lodIdx)) - lodChildren[lodIdx] = new List(); - lodChildren[lodIdx].Add(r); - } - - if (lodChildren.Count == 0) return; - - Undo.RecordObject(ctx.LodGroup, "Rebuild LODGroup"); - - // Build contiguous LOD array from sorted keys. - // Transitions must be strictly descending for Unity's SetLODs. - int lodCount = lodChildren.Count; - var newLods = new LOD[lodCount]; - int idx = 0; - foreach (var kvp in lodChildren) - { - float screenHeight; - if (lodCount == 1) - screenHeight = 0.01f; - else - screenHeight = 1f - ((float)idx / (lodCount - 1)) * 0.99f; // 1.0 → 0.01 - newLods[idx] = new LOD(screenHeight, kvp.Value.ToArray()); - idx++; - } - ctx.LodGroup.SetLODs(newLods); - ctx.LodGroup.RecalculateBounds(); - } + => LodHierarchy.RebuildFromNames(ctx.LodGroup, recursive: true, keepEmptySlots: false, LodHierarchy.Transitions.Linear); // ═══════════════════════════════════════════════════════════ // Build Pipeline section: Open Prefab → Generate LODs (with @@ -1531,20 +1492,7 @@ void DrawCollisionSection() void AssignCollisionToRoot(Mesh mesh) { if (ctx.LodGroup == null || mesh == null) return; - - var root = ctx.LodGroup.gameObject; - var mc = root.GetComponent(); - if (mc == null) - { - mc = Undo.AddComponent(root); - UvtLog.Info($"Added MeshCollider to {root.name}"); - } - else - { - Undo.RecordObject(mc, "Assign Collision Mesh"); - } - - mc.sharedMesh = mesh; + LodHierarchy.AssignCollider(ctx.LodGroup.gameObject, mesh); UvtLog.Info($"Assigned collision mesh: {mesh.name}"); requestRepaint?.Invoke(); } diff --git a/Tests/Editor/LodHierarchyTests.cs b/Tests/Editor/LodHierarchyTests.cs new file mode 100644 index 00000000..14c365d0 --- /dev/null +++ b/Tests/Editor/LodHierarchyTests.cs @@ -0,0 +1,189 @@ +// LodHierarchyTests.cs — a LODGroup read from and written to a scratch hierarchy. +using System.Collections.Generic; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class LodHierarchyTests + { + readonly List scratch = new List(); + + [TearDown] + public void TearDown() + { + foreach (var o in scratch) if (o != null) Object.DestroyImmediate(o); + scratch.Clear(); + } + + Mesh Tris(int count) + { + var m = new Mesh(); + var v = new Vector3[count * 3]; + var t = new int[count * 3]; + for (int i = 0; i < t.Length; i++) { v[i] = new Vector3(i, 0, 0); t[i] = i; } + m.vertices = v; m.triangles = t; + scratch.Add(m); + return m; + } + + GameObject Node(string name, Transform parent, Mesh mesh = null) + { + var go = new GameObject(name); + scratch.Add(go); + if (parent != null) go.transform.SetParent(parent, false); + if (mesh != null) { go.AddComponent().sharedMesh = mesh; go.AddComponent(); } + return go; + } + + [Test] + public void CollectByNameReadsDirectChildrenOrTheWholeSubtreeAndSkipsCollision() + { + var root = Node("Chair", null); + Node("Chair_LOD0", root.transform, Tris(4)); + Node("Chair_LOD2", root.transform, Tris(1)); + Node("Chair_COL", root.transform, Tris(1)); + var container = Node("Parts", root.transform); + Node("Leg_LOD1", container.transform, Tris(2)); + Node("Decor", root.transform, Tris(1)); + + var direct = LodHierarchy.CollectByName(root.transform, recursive: false); + CollectionAssert.AreEqual(new[] { 0, 2 }, direct.Keys); + + var deep = LodHierarchy.CollectByName(root.transform, recursive: true); + CollectionAssert.AreEqual(new[] { 0, 1, 2 }, deep.Keys); + Assert.AreEqual("Leg_LOD1", deep[1][0].name); + } + + [Test] + public void LodsFromNamesKeepGapsOrCompactAndLayOutTransitions() + { + var root = Node("Chair", null); + var a = Node("Chair_LOD0", root.transform, Tris(4)).GetComponent(); + var c = Node("Chair_LOD2", root.transform, Tris(1)).GetComponent(); + var byIndex = LodHierarchy.CollectByName(root.transform, false); + + var gapped = LodHierarchy.LodsFromNames(byIndex, keepEmptySlots: true, LodHierarchy.Transitions.Halving); + Assert.AreEqual(3, gapped.Length); + Assert.AreEqual(0, gapped[1].renderers.Length, "the missing LOD1 is an empty slot"); + Assert.AreSame(c, gapped[2].renderers[0]); + Assert.AreEqual(new[] { .5f, .25f, .125f }, new[] { gapped[0].screenRelativeTransitionHeight, gapped[1].screenRelativeTransitionHeight, gapped[2].screenRelativeTransitionHeight }); + + var compact = LodHierarchy.LodsFromNames(byIndex, keepEmptySlots: false, LodHierarchy.Transitions.Linear); + Assert.AreEqual(2, compact.Length); + Assert.AreSame(a, compact[0].renderers[0]); + Assert.AreSame(c, compact[1].renderers[0]); + Assert.AreEqual(1f, compact[0].screenRelativeTransitionHeight, 1e-6f); + Assert.AreEqual(.01f, compact[1].screenRelativeTransitionHeight, 1e-6f); + Assert.AreEqual(.01f, LodHierarchy.Transition(LodHierarchy.Transitions.Linear, 0, 1), 1e-6f, "a single level is nearly culled"); + Assert.AreEqual(0, LodHierarchy.LodsFromNames(new SortedDictionary>(), true, LodHierarchy.Transitions.Halving).Length); + } + + [Test] + public void RebuildFromNamesWritesTheGroupAndLeavesItWhenNothingIsNamed() + { + var root = Node("Chair", null); + var lg = root.AddComponent(); + Node("Chair_LOD0", root.transform, Tris(4)); + Node("Chair_LOD1", root.transform, Tris(2)); + + Assert.AreEqual(2, LodHierarchy.RebuildFromNames(lg, false, true, LodHierarchy.Transitions.Halving)); + Assert.AreEqual(2, lg.GetLODs().Length); + Assert.AreEqual("Chair_LOD1", lg.GetLODs()[1].renderers[0].name); + + var bare = Node("Table", null); + var bareGroup = bare.AddComponent(); + Node("Top", bare.transform, Tris(1)); + Assert.AreEqual(0, LodHierarchy.RebuildFromNames(bareGroup, false, true, LodHierarchy.Transitions.Halving)); + Assert.AreEqual(1, bareGroup.GetLODs().Length, "a fresh LODGroup's default slot is untouched"); + } + + [Test] + public void CreateFromRenderersAndSiblings() + { + var root = Node("Chair", null); + Node("A", root.transform, Tris(1)); + Node("B", root.transform, Tris(1)); + var lg = LodHierarchy.CreateFromRenderers(root, 0.5f, requireRenderers: true, out int count); + Assert.AreEqual(2, count); + Assert.AreEqual(2, lg.GetLODs()[0].renderers.Length); + Assert.AreEqual(.5f, lg.GetLODs()[0].screenRelativeTransitionHeight); + + var empty = Node("Empty", null); + Assert.IsNull(LodHierarchy.CreateFromRenderers(empty, 0.5f, requireRenderers: true, out _)); + Assert.IsNotNull(LodHierarchy.CreateFromRenderers(empty, 0.5f, requireRenderers: false, out _), "the Cleanup button adds an empty group"); + + var parent = Node("Desk", null); + var s0 = Node("Desk_LOD0", parent.transform, Tris(3)); + var s2 = Node("Desk_LOD2", parent.transform, Tris(1)); + var fromSiblings = LodHierarchy.CreateFromSiblings(new List<(GameObject, int)> { (s0, 0), (s2, 2) }); + Assert.AreSame(parent, fromSiblings.gameObject); + Assert.AreEqual(2, fromSiblings.GetLODs().Length, "gaps close up"); + Assert.AreEqual(.25f, fromSiblings.GetLODs()[1].screenRelativeTransitionHeight); + } + + [Test] + public void CompactDropsNullRenderersAndOptionallyEmptySlots() + { + var root = Node("Chair", null); + var lg = root.AddComponent(); + var r = Node("Chair_LOD0", root.transform, Tris(1)).GetComponent(); + lg.SetLODs(new[] { new LOD(.5f, new[] { r, null }), new LOD(.25f, new Renderer[0]) }); + + Assert.IsTrue(LodHierarchy.Compact(lg, removeEmptySlots: false)); + Assert.AreEqual(2, lg.GetLODs().Length); + Assert.AreEqual(1, lg.GetLODs()[0].renderers.Length); + Assert.IsFalse(LodHierarchy.Compact(lg, removeEmptySlots: false), "nothing left to do"); + Assert.IsTrue(LodHierarchy.Compact(lg, removeEmptySlots: true)); + Assert.AreEqual(1, lg.GetLODs().Length); + } + + [Test] + public void MoveRootMeshToChildSortsTheChildrenByPolycount() + { + var root = Node("Chair.01", null, Tris(5)); + root.GetComponent().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + var lg = root.AddComponent(); + Node("Low", root.transform, Tris(1)); + Node("Mid", root.transform, Tris(3)); + Node("Chair_COL", root.transform, Tris(1)); + Assert.IsFalse(LodHierarchy.RootRendererIsLod0(root, lg.GetLODs())); + + Assert.AreEqual(3, LodHierarchy.MoveRootMeshToChild(root)); + + Assert.IsNull(root.GetComponent(), "the root is a pivot now"); + var lod0 = root.transform.Find("Chair_01_LOD0"); + Assert.IsNotNull(lod0, "the root mesh (5 triangles) is LOD0 under the sanitized base name"); + Assert.AreEqual(5 * 3, lod0.GetComponent().sharedMesh.triangles.Length); + Assert.AreEqual(UnityEngine.Rendering.ShadowCastingMode.Off, lod0.GetComponent().shadowCastingMode); + Assert.AreEqual("Chair_01_LOD1", root.transform.GetChild(1).name); + Assert.AreEqual("Chair_01_LOD2", root.transform.GetChild(0).name); + Assert.IsNotNull(root.transform.Find("Chair_COL"), "collision children keep their name"); + } + + [Test] + public void RootRendererIsLod0WhenTheGroupSaysSo() + { + var root = Node("Chair", null, Tris(1)); + var lg = root.AddComponent(); + lg.SetLODs(new[] { new LOD(.5f, new[] { root.GetComponent() }) }); + Assert.IsTrue(LodHierarchy.RootRendererIsLod0(root, lg.GetLODs())); + Assert.IsFalse(LodHierarchy.RootRendererIsLod0(root, new LOD[0])); + } + + [Test] + public void ColliderComesFromTheFirstCollisionChildAndCanBeAssigned() + { + var root = Node("Chair", null); + var col = Node("Chair_COL", root.transform, Tris(2)); + Assert.IsNotNull(LodHierarchy.AddColliderFromCollisionMesh(root)); + Assert.AreSame(col.GetComponent().sharedMesh, root.GetComponent().sharedMesh); + Assert.IsFalse(col.GetComponent().enabled, "the collision node no longer renders"); + Assert.IsNull(LodHierarchy.AddColliderFromCollisionMesh(root), "a root with a collider is left alone"); + + var other = Tris(1); + Assert.AreSame(other, LodHierarchy.AssignCollider(root, other).sharedMesh); + Assert.IsNull(LodHierarchy.AddColliderFromCollisionMesh(Node("Bare", null))); + } + } +} diff --git a/Tests/Editor/LodHierarchyTests.cs.meta b/Tests/Editor/LodHierarchyTests.cs.meta new file mode 100644 index 00000000..7ada13f4 --- /dev/null +++ b/Tests/Editor/LodHierarchyTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2512ecd4b394b7785f35af242ca52c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From fb27079f4e19f96f71917adb77c3fbcaefbbe39a Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:40:00 +0000 Subject: [PATCH 095/130] refactor(assets): TextureAssets, the one texture-from-pixels, encoder, file writer and map importer setup A transient Texture2D was created, filled, encoded and destroyed by hand in the remesh exporter (PNG and EXR maps), the remesh previews (map textures, the base colour preview), the hierarchical repack diagnostics (PNG write, PNG read-back) and the UV PNG writer, and the map importer setup sat in the remesh exporter. Editor/Assets/TextureAssets.cs is the one implementation (FromPixels, EncodePng, EncodeExr, WriteFile with the directory created, WritePng, ReadImage, Configure with a Kind of Color / Linear / NormalMap). Every site calls it; the UV PNG writer destroys its read-back texture on a failed encode too, and the repack's backdrop load no longer leaves a texture behind. Tests pin the PNG round trip through WritePng / ReadImage, the linear flag of FromPixels, the EXR encode and the size guards. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 2 +- Editor/Assets/TextureAssets.cs | 124 ++++++++++++++++++++++++ Editor/Assets/TextureAssets.cs.meta | 11 +++ Editor/HierarchicalRepack.cs | 39 ++------ Editor/RemeshExporter.cs | 23 ++--- Editor/RemeshPipeline.cs | 3 +- Editor/RemeshPreview.cs | 17 ++-- Editor/UvPngWriter.cs | 12 ++- Tests/Editor/TextureAssetsTests.cs | 68 +++++++++++++ Tests/Editor/TextureAssetsTests.cs.meta | 11 +++ 11 files changed, 245 insertions(+), 66 deletions(-) create mode 100644 Editor/Assets/TextureAssets.cs create mode 100644 Editor/Assets/TextureAssets.cs.meta create mode 100644 Tests/Editor/TextureAssetsTests.cs create mode 100644 Tests/Editor/TextureAssetsTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index fa8b38ae..9d453970 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **One texture writer: `TextureAssets`.** A transient `Texture2D` was created, filled, encoded and destroyed by hand in the remesh exporter (PNG and EXR maps), the remesh previews (map textures, the base colour preview), the hierarchical repack diagnostics (PNG write, PNG read-back) and the UV PNG writer, and the map importer setup sat in the remesh exporter. `Editor/Assets/TextureAssets.cs` is the one implementation (`FromPixels`, `EncodePng`, `EncodeExr`, `WriteFile` with the directory created, `WritePng`, `ReadImage`, `Configure` with a `Kind` of Color / Linear / NormalMap); every site calls it, the UV PNG writer destroys its read-back texture on a failed encode too, and the repack's backdrop load no longer leaves a texture behind. Tests pin the PNG round trip through `WritePng` / `ReadImage`, the linear flag of `FromPixels`, the EXR encode and the size guards. - **One LODGroup-from-hierarchy: `LodHierarchy`.** Rebuilding a LODGroup from `_LOD{n}` names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice (Cleanup at 0.5, LOD Generation at 0.01) and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. `Editor/Mesh/LodHierarchy.cs` is the one implementation (`CollectByName`, `LodsFromNames` with a `Transitions` scheme, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild` + `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); each tab keeps its policy (which children, which transitions) as arguments, `UvToolContext.CompactLodArray` and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through `RendererSettings` (it copied five of them). `LodGroupUtility` stays the component-level half. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. - **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. - **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. diff --git a/CLAUDE.md b/CLAUDE.md index 414584ba..3d424007 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,7 +35,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **LOD hierarchy:** `Editor/Mesh/LodHierarchy.cs` — a LODGroup from its hierarchy (`CollectByName`, `LodsFromNames`, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild`, `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); `LodGroupUtility` is the component half (recreate, apply, transition normalisation) - **Vertex channels:** `Editor/Mesh/VertexChannels.cs` — a scalar per-vertex channel (`AOTargetChannel`: colour component or UV component) decoded, read, written (whole mesh or one submesh), levels/blend, greyscale preview colours, fill/snapshot/restore of `colors32`. Never decode the enum or poke `colors32`/`GetUVs` for a scalar channel in a tool - **UV:** `Editor/Uv/UvTopology.cs` — index-space UV layout topology (channel read, boundary edges, unique edges, point-in-triangle, shell vote, face→shell, shell data, UDIM tiles); the canvas, 3D layer and viewport cache its results, never recompute them locally -- **Assets:** `Editor/Assets/` — `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves +- **Assets:** `Editor/Assets/` — `TextureAssets` (a texture from pixels, PNG/EXR encoding, file writes, image read-back, map importer configuration), `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves - **Native:** `Plugins/` binaries, `Native~/` C++ source - **Sidecar:** `Uv2DataAsset` persists UV2/collision data alongside FBX diff --git a/Editor/Assets/TextureAssets.cs b/Editor/Assets/TextureAssets.cs new file mode 100644 index 00000000..71f84e86 --- /dev/null +++ b/Editor/Assets/TextureAssets.cs @@ -0,0 +1,124 @@ +// TextureAssets.cs — pixels in and out of textures and texture files: a Texture2D from +// a pixel buffer (previews, encodes), PNG/EXR encoding through a transient texture, a +// file written with its directory, a PNG read back to pixels, and the importer +// configuration of a written map (colour, linear data or normal map). The remesh +// exporter, the remesh previews, the hierarchical repack diagnostics and the UV PNG +// writer each created their transient textures and wrote their files by hand. +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + internal static class TextureAssets + { + /// What a written map holds, for its importer. + internal enum Kind + { + /// sRGB colour (albedo). + Color, + /// Linear data (metallic/smoothness, occlusion, emission). + Linear, + /// A tangent-space normal map. + NormalMap, + } + + // ── textures from pixels ── + + /// + /// An RGBA32 texture holding (row-major, bottom row + /// first, as Unity stores them), applied and flagged HideAndDontSave: for a + /// preview or an encode, never an asset. marks the data + /// as not sRGB. The caller destroys it. + /// + internal static Texture2D FromPixels(Color32[] pixels, int width, int height, bool linear, bool mipmaps = false) + { + if (pixels == null || pixels.Length != width * height) return null; + var texture = new Texture2D(width, height, TextureFormat.RGBA32, mipmaps, linear) { hideFlags = HideFlags.HideAndDontSave }; + texture.SetPixels32(pixels); + texture.Apply(); + return texture; + } + + // ── encoding ── + + /// The pixels as a PNG, through a transient texture that is destroyed again. + internal static byte[] EncodePng(Color32[] pixels, int width, int height) + { + var texture = FromPixels(pixels, width, height, linear: true); + if (texture == null) return null; + try { return texture.EncodeToPNG(); } + finally { Object.DestroyImmediate(texture); } + } + + /// The HDR pixels as a float EXR, through a transient texture that is destroyed again. + internal static byte[] EncodeExr(Color[] pixels, int width, int height) + { + if (pixels == null || pixels.Length != width * height) return null; + var texture = new Texture2D(width, height, TextureFormat.RGBAFloat, false, true) { hideFlags = HideFlags.HideAndDontSave }; + try + { + texture.SetPixels(pixels); + texture.Apply(); + return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); + } + finally { Object.DestroyImmediate(texture); } + } + + // ── files ── + + /// Writes to , creating the directory. + internal static void WriteFile(string path, byte[] bytes) + { + if (string.IsNullOrEmpty(path) || bytes == null) return; + string dir = Path.GetDirectoryName(path); + if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir); + File.WriteAllBytes(path, bytes); + } + + /// Encodes the pixels to PNG and writes the file ( + ). + internal static void WritePng(string path, Color32[] pixels, int width, int height) + => WriteFile(path, EncodePng(pixels, width, height)); + + /// + /// The pixels of a PNG or JPG file (bottom row first), with its size; null when + /// the file is missing or does not decode. + /// + internal static Color32[] ReadImage(string path, out int width, out int height) + { + width = height = 0; + if (string.IsNullOrEmpty(path) || !File.Exists(path)) return null; + var texture = new Texture2D(2, 2, TextureFormat.RGBA32, false) { hideFlags = HideFlags.HideAndDontSave }; + try + { + if (!texture.LoadImage(File.ReadAllBytes(path))) return null; + width = texture.width; + height = texture.height; + return texture.GetPixels32(); + } + finally { Object.DestroyImmediate(texture); } + } + + // ── importers ── + + /// + /// Sets up the importer of a map the tool wrote: texture type and sRGB from + /// , clamp wrapping, the given maximum size, no + /// compression, mipmaps, alpha from the file; then reimports. Throws when the + /// path has no texture importer (the write or import failed). + /// + internal static void Configure(string assetPath, Kind kind, int maxSize, bool mipmaps = true) + { + var importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; + if (importer == null) throw new IOException("Texture import failed: " + assetPath); + importer.textureType = kind == Kind.NormalMap ? TextureImporterType.NormalMap : TextureImporterType.Default; + importer.sRGBTexture = kind == Kind.Color; + importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = maxSize; + importer.textureCompression = TextureImporterCompression.Uncompressed; + importer.mipmapEnabled = mipmaps; + importer.alphaSource = TextureImporterAlphaSource.FromInput; + importer.SaveAndReimport(); + } + } +} diff --git a/Editor/Assets/TextureAssets.cs.meta b/Editor/Assets/TextureAssets.cs.meta new file mode 100644 index 00000000..733e54b3 --- /dev/null +++ b/Editor/Assets/TextureAssets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43f2180935f74e3a8e759b321f549062 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/HierarchicalRepack.cs b/Editor/HierarchicalRepack.cs index 38d1f537..0857c4d7 100644 --- a/Editor/HierarchicalRepack.cs +++ b/Editor/HierarchicalRepack.cs @@ -1779,24 +1779,14 @@ static void WriteProxySamplesPng(string outputDir, Result r) // Now draw samples on top of a fresh canvas with the same // backdrop. Software path: load the rendered base, draw dots. int size = UvPngWriter.DefaultSize; - var pixels = new Color32[size * size]; - byte[] basePng = File.ReadAllBytes(basePath); - var baseTex = new Texture2D(2, 2, TextureFormat.RGBA32, false); - try + // Render may produce different dimensions; only a same-sized backdrop is reused. + var pixels = TextureAssets.ReadImage(basePath, out int w, out int h); + if (pixels == null || w != size || h != size) { - baseTex.LoadImage(basePng); - var basePixels = baseTex.GetPixels32(); - // Render may produce different dimensions; just trust loaded size. - int w = baseTex.width, h = baseTex.height; - if (w * h == basePixels.Length && w == size && h == size) - pixels = basePixels; - else - { - var bg = new Color32(244, 244, 248, 255); - for (int i = 0; i < pixels.Length; i++) pixels[i] = bg; - } + pixels = new Color32[size * size]; + var bg = new Color32(244, 244, 248, 255); + for (int i = 0; i < pixels.Length; i++) pixels[i] = bg; } - finally { UnityEngine.Object.DestroyImmediate(baseTex); } // Draw each sample as a 3-pixel disk in bright magenta. The // UV→pixel mapping MUST match UvPngWriter — it renders the @@ -3651,22 +3641,9 @@ static void RasterizeTrianglePx(Color32[] pix, int size, } } - /// Encode a pixel buffer to PNG via a transient Texture2D. - /// Caller owns the path and ensures the directory exists. + /// Encode a pixel buffer to PNG and write it (see ). static void EncodePng(Color32[] pixels, int width, int height, string path) - { - var tex = new Texture2D(width, height, TextureFormat.RGBA32, false); - try - { - tex.SetPixels32(pixels); - tex.Apply(false, false); - File.WriteAllBytes(path, tex.EncodeToPNG()); - } - finally - { - UnityEngine.Object.DestroyImmediate(tex); - } - } + => TextureAssets.WritePng(path, pixels, width, height); } } diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs index 1554172b..8337d1b7 100644 --- a/Editor/RemeshExporter.cs +++ b/Editor/RemeshExporter.cs @@ -269,17 +269,12 @@ static string[] WriteMaps(string folder, string prefix, RemeshBaker.Maps maps) return paths; } + // Base color is sRGB, the normal map a normal map, the rest linear data. static void ConfigureMaps(string[] paths, int size) { - for (int i = 0; i < paths.Length; ++i) { - var importer = AssetImporter.GetAtPath(paths[i]) as TextureImporter; - if (importer == null) throw new IOException("Texture import failed: " + paths[i]); - importer.textureType = i == 1 ? TextureImporterType.NormalMap : TextureImporterType.Default; - importer.sRGBTexture = i == 0; importer.wrapMode = TextureWrapMode.Clamp; - importer.maxTextureSize = size; importer.textureCompression = TextureImporterCompression.Uncompressed; - importer.mipmapEnabled = true; importer.alphaSource = TextureImporterAlphaSource.FromInput; - importer.SaveAndReimport(); - } + for (int i = 0; i < paths.Length; ++i) + TextureAssets.Configure(paths[i], + i == 0 ? TextureAssets.Kind.Color : i == 1 ? TextureAssets.Kind.NormalMap : TextureAssets.Kind.Linear, size); } static Material CreateMaterial(Shader shader, bool urp, bool unlit, string name, string[] paths) @@ -321,14 +316,8 @@ internal static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) static byte[] Encode(RemeshBaker.Maps maps, int index) { - var texture = new Texture2D(maps.size, maps.size, - index == EmissionMap ? TextureFormat.RGBAFloat : TextureFormat.RGBA32, false, true); - try { - if (index == EmissionMap) { texture.SetPixels(maps.emission); texture.Apply(); return texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat); } - texture.SetPixels32(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao); - texture.Apply(); return texture.EncodeToPNG(); - } - finally { Object.DestroyImmediate(texture); } + if (index == EmissionMap) return TextureAssets.EncodeExr(maps.emission, maps.size, maps.size); + return TextureAssets.EncodePng(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao, maps.size, maps.size); } } } diff --git a/Editor/RemeshPipeline.cs b/Editor/RemeshPipeline.cs index 91db2189..e660585a 100644 --- a/Editor/RemeshPipeline.cs +++ b/Editor/RemeshPipeline.cs @@ -436,8 +436,7 @@ async Task RunBake(GameObject root, RemeshSettings options, CancellationToken to } token.ThrowIfCancellationRequested(); var primary = Primary; - baseColorPreview = new Texture2D(primary.maps.size, primary.maps.size, TextureFormat.RGBA32, false, false) { hideFlags = HideFlags.HideAndDontSave }; - baseColorPreview.SetPixels32(primary.maps.color); baseColorPreview.Apply(); + baseColorPreview = TextureAssets.FromPixels(primary.maps.color, primary.maps.size, primary.maps.size, linear: false); Status = (hierarchy ? $"{nodes.Count} node(s): " : "") + $"{sourceTriangles:N0} → {targetTriangles:N0} triangles. " + (misses == 0 ? "All covered texels projected." : $"{misses:N0} / {covered:N0} texels missed (magenta). Increase projection distance and rebake.") + (empty > 0 ? $" {empty:N0} proxy texels see no geometry (alpha 0, filled from neighbours)." : "") + diff --git a/Editor/RemeshPreview.cs b/Editor/RemeshPreview.cs index b0221726..983897ad 100644 --- a/Editor/RemeshPreview.cs +++ b/Editor/RemeshPreview.cs @@ -265,24 +265,21 @@ Texture2D MapTexture(RemeshBaker.Maps maps, Channel which) } int index = (int)which; if (mapTextures[index]) return mapTextures[index]; - var texture = new Texture2D(maps.size, maps.size, TextureFormat.RGBA32, false, which != Channel.BaseColor) { - hideFlags = HideFlags.HideAndDontSave }; + Color32[] pixels; switch (which) { - case Channel.BaseColor: texture.SetPixels32(maps.color); break; - case Channel.Normal: texture.SetPixels32(maps.normal); break; - case Channel.MetallicSmoothness: texture.SetPixels32(maps.metal); break; - case Channel.Occlusion: texture.SetPixels32(maps.ao); break; + case Channel.BaseColor: pixels = maps.color; break; + case Channel.Normal: pixels = maps.normal; break; + case Channel.MetallicSmoothness: pixels = maps.metal; break; + case Channel.Occlusion: pixels = maps.ao; break; default: - var pixels = new Color32[maps.emission.Length]; + pixels = new Color32[maps.emission.Length]; for (int i = 0; i < pixels.Length; ++i) { var e = maps.emission[i]; pixels[i] = new Color(Mathf.Clamp01(e.r), Mathf.Clamp01(e.g), Mathf.Clamp01(e.b), 1).gamma; } - texture.SetPixels32(pixels); break; } - texture.Apply(); - return mapTextures[index] = texture; + return mapTextures[index] = TextureAssets.FromPixels(pixels, maps.size, maps.size, linear: which != Channel.BaseColor); } } } diff --git a/Editor/UvPngWriter.cs b/Editor/UvPngWriter.cs index 287f7693..bd4a95eb 100644 --- a/Editor/UvPngWriter.cs +++ b/Editor/UvPngWriter.cs @@ -122,11 +122,13 @@ public static bool Render(string path, Vector2[] uv, int[] tris, int size = Defa GL.PopMatrix(); var tex = new Texture2D(size, size, TextureFormat.RGBA32, false); - tex.ReadPixels(new Rect(0, 0, size, size), 0, 0, false); - tex.Apply(); - Directory.CreateDirectory(Path.GetDirectoryName(path) ?? "."); - File.WriteAllBytes(path, tex.EncodeToPNG()); - Object.DestroyImmediate(tex); + try + { + tex.ReadPixels(new Rect(0, 0, size, size), 0, 0, false); + tex.Apply(); + TextureAssets.WriteFile(path, tex.EncodeToPNG()); + } + finally { Object.DestroyImmediate(tex); } } finally { diff --git a/Tests/Editor/TextureAssetsTests.cs b/Tests/Editor/TextureAssetsTests.cs new file mode 100644 index 00000000..282cf311 --- /dev/null +++ b/Tests/Editor/TextureAssetsTests.cs @@ -0,0 +1,68 @@ +// TextureAssetsTests.cs — pixels through textures and files. +using System.IO; +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class TextureAssetsTests + { + static Color32[] Gradient(int w, int h) + { + var p = new Color32[w * h]; + for (int y = 0; y < h; y++) + for (int x = 0; x < w; x++) + p[y * w + x] = new Color32((byte)(x * 255 / (w - 1)), (byte)(y * 255 / (h - 1)), 128, 255); + return p; + } + + [Test] + public void FromPixelsBuildsAnAppliedHiddenTextureAndRejectsSizeMismatches() + { + var tex = TextureAssets.FromPixels(Gradient(4, 2), 4, 2, linear: true); + try + { + Assert.AreEqual(4, tex.width); + Assert.AreEqual(2, tex.height); + Assert.AreEqual(HideFlags.HideAndDontSave, tex.hideFlags); + Assert.AreEqual(new Color32(255, 0, 128, 255), tex.GetPixels32()[3]); + } + finally { Object.DestroyImmediate(tex); } + Assert.IsNull(TextureAssets.FromPixels(Gradient(4, 2), 2, 2, linear: false)); + Assert.IsNull(TextureAssets.EncodePng(null, 1, 1)); + Assert.IsNull(TextureAssets.EncodeExr(new Color[3], 2, 2)); + } + + [Test] + public void PngRoundTripsThroughTheFileAndCreatesTheDirectory() + { + string dir = Path.Combine(Path.GetTempPath(), "MeshLabTextureAssets_" + System.Guid.NewGuid().ToString("N")); + string path = Path.Combine(dir, "nested", "grad.png"); + try + { + var pixels = Gradient(8, 4); + TextureAssets.WritePng(path, pixels, 8, 4); + Assert.IsTrue(File.Exists(path)); + + var back = TextureAssets.ReadImage(path, out int w, out int h); + Assert.AreEqual(8, w); + Assert.AreEqual(4, h); + Assert.AreEqual(pixels, back, "PNG is lossless"); + + Assert.IsNull(TextureAssets.ReadImage(Path.Combine(dir, "missing.png"), out _, out _)); + } + finally { if (Directory.Exists(dir)) Directory.Delete(dir, true); } + } + + [Test] + public void ExrEncodesHdrValues() + { + var hdr = new[] { new Color(4f, 0.5f, 0f, 1f), Color.black, Color.white, new Color(0f, 0f, 16f, 1f) }; + var bytes = TextureAssets.EncodeExr(hdr, 2, 2); + Assert.IsNotNull(bytes); + Assert.Greater(bytes.Length, 16); + // OpenEXR magic number + Assert.AreEqual(new byte[] { 0x76, 0x2f, 0x31, 0x01 }, new[] { bytes[0], bytes[1], bytes[2], bytes[3] }); + } + } +} diff --git a/Tests/Editor/TextureAssetsTests.cs.meta b/Tests/Editor/TextureAssetsTests.cs.meta new file mode 100644 index 00000000..745ba6c2 --- /dev/null +++ b/Tests/Editor/TextureAssetsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1da32e6642c4069a6a5c099d86c62c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From ad4cd477b6ff42cf1af77017c73520a7225ca0cf Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:46:00 +0000 Subject: [PATCH 096/130] fix(mesh): MeshSplitMerge keeps unreadable firsts, empty splits, container nodes and mirrored windings Review findings on the extraction: a merge whose first renderer was not readable skipped that renderer's geometry and then replaced it with the others' alone (geometry lost); a split whose submeshes were all empty still destroyed the source; a split source carrying children or other components was destroyed with them; a mirrored part (negative-determinant transform) was merged with its original winding and handedness, and part normals went through the matrix itself. The merge now requires a readable first renderer and skips the group with a warning otherwise; an all-empty split leaves the object alone; a source with children or components beyond its mesh pair stays as their container and loses only MeshFilter and MeshRenderer; Combine re-winds mirrored parts, flips their tangent handedness and transforms normals by the inverse transpose. Tests cover the mirrored combine and the container node. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Mesh/MeshSplitMerge.cs | 48 ++++++++++++++++++++++++----- Tests/Editor/MeshSplitMergeTests.cs | 21 +++++++++++++ 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08f0e3ec..e2b9bf1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. +- **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. A merge whose first renderer is not readable is skipped instead of replacing that renderer's geometry with the others' alone; a split whose submeshes are all empty leaves the object alone; a split source that carries children or other components stays as their container and only loses its mesh pair; a mirrored part (negative-determinant transform) is re-wound and its tangent handedness flipped when merged, and part normals go through the inverse transpose. - **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). - **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. - **Remesh & Bake: the result's atlas lives in the canvas, the right panel is 3D + Maps.** The right sidebar's own UV view (a square with tinted islands over the base color) is gone; the canvas's UV mode now shows the Remesh & Bake result once Normals & UV ran, with the same shells, wire, border, spot picking, status line and backgrounds as any mesh (the baked base color under it, or the checker), and an **Islands** fill mode tints every UV shell. The right panel is a vertical list fit for the narrow third column — Stage, Baked base color, Baked normal map, Trim mask, Cage shells, the atlas's island count and texel usage — and the Maps view; its own Wire, Shaded and Vertex color toggles are gone because the canvas owns them: the status bar's Wire now draws on tool content too, the 3D shading row's modes apply to the stage mesh, and the result's UV layer (fill mode, island borders, spot picking) is drawn on the model in 3D as for any context mesh (the hub pairs a tool's 3D items with its UV entries by mesh). Tools opt into this through `IUvToolUvContent` (the hub sets `UvCanvasView.EntriesOverride` each frame); a `MeshEntry.previewTexture` carries a tool-made entry's background in the UV canvas and is skipped by the 3D layer, which would only dim the surface already showing it. diff --git a/Editor/Mesh/MeshSplitMerge.cs b/Editor/Mesh/MeshSplitMerge.cs index 035ada9e..d453960b 100644 --- a/Editor/Mesh/MeshSplitMerge.cs +++ b/Editor/Mesh/MeshSplitMerge.cs @@ -119,9 +119,14 @@ public static int SplitByMaterial(UvToolContext ctx, IEnumerable CopyRendererSettings(e.renderer, mr); created.Add(mr); } + if (created.Count == 0) + { + UvtLog.Warn($"Split '{e.renderer.name}': every submesh is empty; nothing to split, the object stays."); + continue; + } ReplaceInLodGroup(ctx.LodGroup, e.renderer, created, undoLabel); UvtLog.Info($"Split {e.renderer.name}: {subCount} submeshes → {created.Count} objects"); - Undo.DestroyObjectImmediate(e.renderer.gameObject); + RemoveSource(e.renderer.gameObject, undoLabel); split++; } UvtLog.Info($"Split {split} multi-material mesh(es)."); @@ -146,6 +151,14 @@ public static int MergeSameMaterial(UvToolContext ctx, IEnumerable g if (group == null || !group.include || group.entries.Count < 2) continue; var first = group.entries[0]; if (first.renderer == null || first.meshFilter == null) continue; + var firstMesh = first.originalMesh ?? first.fbxMesh; + if (firstMesh == null || !firstMesh.isReadable) + { + // The merge lands in the first renderer; if its own geometry cannot be + // read it would be replaced by the others' alone and lost. + UvtLog.Warn($"Merge: '{first.renderer.name}' is not readable; enable Read/Write on its importer. Group skipped."); + continue; + } var parts = new List<(Mesh mesh, Matrix4x4 toFirst)>(); var destroy = new List(); Matrix4x4 worldToFirst = first.renderer.transform.worldToLocalMatrix; @@ -238,9 +251,11 @@ public static Mesh ExtractSubmesh(Mesh source, int[] tris) return mesh; } - // Every part's vertices and directions carried into the first part's space; - // attributes a part lacks are filled with neutral values so the channel survives. - static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) + // Every part's vertices and directions carried into the first part's space + // (normals by the inverse transpose; a mirroring matrix flips the part's winding + // and tangent handedness); attributes a part lacks are filled with neutral values + // so the channel survives. + internal static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) { bool hasNormals = false, hasTangents = false, hasColors = false; var hasUv = new bool[8]; var uvDim = new int[8]; @@ -271,13 +286,15 @@ static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) foreach (var (mesh, toFirst) in parts) { int offset = pos.Count, count = mesh.vertexCount; + bool mirrored = toFirst.determinant < 0f; + var normalMatrix = toFirst.inverse.transpose; var p = mesh.vertices; for (int i = 0; i < count; i++) pos.Add(toFirst.MultiplyPoint3x4(p[i])); if (normals != null) { var n = mesh.normals; bool own = n != null && n.Length == count; - for (int i = 0; i < count; i++) normals.Add(own ? toFirst.MultiplyVector(n[i]).normalized : Vector3.up); + for (int i = 0; i < count; i++) normals.Add(own ? normalMatrix.MultiplyVector(n[i]).normalized : Vector3.up); } if (tangents != null) { @@ -287,7 +304,7 @@ static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) { if (!own) { tangents.Add(new Vector4(1, 0, 0, 1)); continue; } var d = toFirst.MultiplyVector(new Vector3(t[i].x, t[i].y, t[i].z)).normalized; - tangents.Add(new Vector4(d.x, d.y, d.z, t[i].w)); + tangents.Add(new Vector4(d.x, d.y, d.z, mirrored ? -t[i].w : t[i].w)); } } if (colors != null) @@ -304,7 +321,10 @@ static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) for (int i = 0; i < count; i++) uvs[ch].Add(own ? probe[i] : Vector4.zero); } var t3 = mesh.triangles; - for (int i = 0; i < t3.Length; i++) tris.Add(t3[i] + offset); + if (mirrored) + for (int i = 0; i + 2 < t3.Length; i += 3) { tris.Add(t3[i] + offset); tris.Add(t3[i + 2] + offset); tris.Add(t3[i + 1] + offset); } + else + for (int i = 0; i < t3.Length; i++) tris.Add(t3[i] + offset); } var merged = new Mesh { name = name, indexFormat = pos.Count > 65535 ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16 }; merged.SetVertices(pos); @@ -323,6 +343,20 @@ static Mesh Combine(List<(Mesh mesh, Matrix4x4 toFirst)> parts, string name) return merged; } + // The split source goes away with its mesh — unless the node carries children or + // components beyond its mesh pair (a collider, a script), in which case the node + // stays as their container and only its MeshFilter and MeshRenderer are removed. + static void RemoveSource(GameObject source, string undoLabel) + { + bool keepNode = source.transform.childCount > 0 || source.GetComponents().Length > 3; + if (!keepNode) { Undo.DestroyObjectImmediate(source); return; } + var mr = source.GetComponent(); + var mf = source.GetComponent(); + if (mr != null) Undo.DestroyObjectImmediate(mr); + if (mf != null) Undo.DestroyObjectImmediate(mf); + UvtLog.Info($"Split '{source.name}': the node stays as a container for its children / other components."); + } + static UnityEngine.Rendering.VertexAttribute UvAttribute(int channel) => UnityEngine.Rendering.VertexAttribute.TexCoord0 + channel; static void CopyRendererSettings(Renderer from, Renderer to) diff --git a/Tests/Editor/MeshSplitMergeTests.cs b/Tests/Editor/MeshSplitMergeTests.cs index bd2cf7f0..5465d39a 100644 --- a/Tests/Editor/MeshSplitMergeTests.cs +++ b/Tests/Editor/MeshSplitMergeTests.cs @@ -43,6 +43,22 @@ public void ExtractSubmesh_CompactsVerticesAndKeepsEveryAttribute() Assert.AreEqual(Color.red, part.colors[0]); Assert.AreEqual(Color.blue, part.colors[1]); Assert.AreEqual(Color.white, part.colors[2]); } + [Test] + public void Combine_MirroredPartFlipsWindingAndHandedness() + { + var a = Quad(0, 1); created.Add(a); + var b = Quad(2, 1); created.Add(b); + var mirror = Matrix4x4.Scale(new Vector3(-1, 1, 1)); + var merged = MeshSplitMerge.Combine(new List<(Mesh, Matrix4x4)> { (a, Matrix4x4.identity), (b, mirror) }, "M"); created.Add(merged); + var tris = merged.triangles; + CollectionAssert.AreEqual(new[] { 0, 1, 2, 0, 2, 3 }, new List(tris).GetRange(0, 6), "the first part keeps its winding"); + CollectionAssert.AreEqual(new[] { 4, 6, 5, 4, 7, 6 }, new List(tris).GetRange(6, 6), "the mirrored part is re-wound"); + Assert.AreEqual(1f, merged.tangents[0].w); + Assert.AreEqual(-1f, merged.tangents[4].w, "handedness flips with the mirror"); + Assert.AreEqual(Vector3.back, merged.normals[4], "a mirror across X leaves a -Z normal alone"); + Assert.AreEqual(-3f, merged.vertices[5].x, 1e-5f); + } + [Test] public void SplitAndMerge_RoundTripThroughALodGroup() { @@ -55,6 +71,8 @@ public void SplitAndMerge_RoundTripThroughALodGroup() go.AddComponent().sharedMesh = mesh; var mr = go.AddComponent(); mr.sharedMaterials = new[] { mat, mat }; lodGroup.SetLODs(new[] { new LOD(0.1f, new Renderer[] { mr }) }); + var attachment = new GameObject("Attachment"); created.Add(attachment); + attachment.transform.SetParent(go.transform, false); var ctx = new UvToolContext(); ctx.Refresh(lodGroup); @@ -63,6 +81,9 @@ public void SplitAndMerge_RoundTripThroughALodGroup() Assert.AreEqual(1, MeshSplitMerge.SplitByMaterial(ctx, report.split, "test split")); Assert.AreEqual(2, lodGroup.GetLODs()[0].renderers.Length, "both children took the source's LOD slot"); + Assert.IsTrue(go != null && go.GetComponent() == null, "a source with children stays as a bare container"); + Assert.AreSame(go.transform, attachment.transform.parent, "its child is kept"); + Object.DestroyImmediate(go); foreach (var r in lodGroup.GetLODs()[0].renderers) { created.Add(r.gameObject); created.Add(r.GetComponent().sharedMesh); Assert.That(r.name, Does.EndWith("_LOD0")); } ctx.Refresh(lodGroup); From 17592e1c59332a528a6c3770c85deeecd6052cbb Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:47:59 +0000 Subject: [PATCH 097/130] fix(mesh): MeshAccess keeps topology, zero UV channels and float colours; mirrored bake re-winds quads Review findings on the extraction: the readable-path copy wrote every submesh with SetTriangles (quads and lines became triangles), both paths dropped an all-zero 2D UV channel, the MeshData path read colours as Color32 (a float or HDR colour stream was quantised), the MeshData path silently lost bone weights and bind poses, and a mirroring BakeMatrix rewrote non-triangle submeshes as triangles. The copy now uses GetIndices/GetTopology/SetIndices, keeps zero channels, reads float colours and warns once when a skinned Read/Write-disabled mesh goes through MeshData (which has no bone-weight accessor); BakeMatrix flips triangles and quads at their own topology and leaves other topologies' indices alone. Tests cover the quad copy, the zero channel, float colours and the mirrored quad bake. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Mesh/MeshAccess.cs | 25 ++++++------- Editor/Mesh/MeshTransform.cs | 12 +++++-- Tests/Editor/MeshAccessTests.cs | 54 ++++++++++++++++++++++++++++ Tests/Editor/MeshAccessTests.cs.meta | 11 ++++++ 5 files changed, 88 insertions(+), 16 deletions(-) create mode 100644 Tests/Editor/MeshAccessTests.cs create mode 100644 Tests/Editor/MeshAccessTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index b49bdc18..c20eacb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. +- **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. The readable copy keeps every submesh at its own topology (quads and lines were triangulated), keeps an all-zero UV channel, reads colours as floats (a `Color32` read quantised float colour streams), and warns once when a skinned Read/Write-disabled mesh goes through `MeshData`, which has no bone-weight accessor; a mirroring `BakeMatrix` re-winds quads as quads. - **One split-by-material / merge-same-material: `MeshSplitMerge`.** The Cleanup and Prefab Builder tabs each carried their own scan, split and merge (about 450 and 260 lines) and they had drifted: the Prefab Builder merge kept only positions, normals and UV0 (tangents, colours and UV2 were lost), its split read the materials while its own preview had them swapped, and the Cleanup split dropped the static flags. `Editor/Mesh/MeshSplitMerge.cs` is the one implementation: `Scan` (candidates and groups), `SplitByMaterial` (one child per submesh with every attribute, the renderer settings and static flags, slotted into the LODGroup where the source was), `MergeSameMaterial` (into the first renderer, which keeps its components and references and is renamed `{base}_LOD{n}`, every attribute carried over, the others leave the LODGroup), `ExtractSubmesh` (all eight UV channels at their stored width, bone weights included; `MeshHygieneUtility.ExtractSubmesh` forwards to it). Both tabs keep only their buttons and lists; previews are restored before materials are read; Undo and prefab-instance modifications are recorded in one place. A merge whose first renderer is not readable is skipped instead of replacing that renderer's geometry with the others' alone; a split whose submeshes are all empty leaves the object alone; a split source that carries children or other components stays as their container and only loses its mesh pair; a mirrored part (negative-determinant transform) is re-wound and its tangent handedness flipped when merged, and part normals go through the inverse transpose. - **One reader of the naming rules: `MeshNaming`.** LOD and collision suffixes were parsed by nine different regexes — `UvToolContext.ExtractGroupKey`, three in `MeshHygieneUtility`, two in `LodPipelineOps`, three inline in `LodGenerationTool`, five inline in `CleanupTool`, three in `PrefabBuilderTool`, a hand-rolled `_COL`/`_COL_Hull{N}` pair in `VertexColorBakingTool`, a `LastIndexOf("_LOD")` scan in `RemeshSource` and two more in `LightmapTransferTool` — and they had drifted: some required `_LOD`, some accepted `-LOD` and ` LOD`, one accepted `FooLOD1` with no separator, the collision rules disagreed on `_COL_*` and `_Collider`. `Editor/Mesh/MeshNaming.cs` is now the one implementation (`TryParseLod` with the LODGroup index limit, `LodIndex`, `HasLodSuffix`, `StripLod`, `SplitLodSuffix` keeping the suffix text verbatim for renames, `LodName`, `IsCollision`, `StripCollision`, `HasLodOrCollisionSuffix`, `GroupKey`, `StripPipelineSuffixes`); every site calls it, `ExtractGroupKey` and the `MeshHygieneUtility` helpers forward to it, and a test file pins the accepted forms. The LOD separator is `_`, `-` or whitespace everywhere now (a bare `FooLOD1` is no longer a LOD name anywhere), and the collision rule is the hygiene one everywhere (`_COL`, `_COL_Hull{N}`, `_COL_*`, `_Collider`, `_Collision`; `_COLOR` is not). - **One geometry module for every projecting and baking tool.** An audit of the BVH and GPU paths found no duplicate BVH (one 3D `TriangleBvh`, one UV-space `TriangleBvh2D`, the GPU AO kernel consuming the 3D one's layout) but a ring of tool-local copies around them: face normals computed in five places, bit-exact position welding in four, the golden-spiral sample directions in two, 2D barycentrics in two, a point–box distance and a closest-point-on-triangle duplicated in `HierarchicalRepack` for a brute-force O(N)-per-query nearest-face scan, and the "blit to a temporary render texture, ReadPixels, clean up" GPU readback written out three times (source maps, lightmap regions, probe cubemaps). They now live in `Editor/Geometry/`: `MeshGeometry` (face normals, `WeldPositions`, `SphereDirections`, `Barycentric`, `SqDistToAabb`) and `GpuReadback` (`Read` / `ReadColors`), used by the remesh bake, trim and cage, the Beauty capture, the source capture, vertex AO (CPU and GPU), the edge analyzer, the UV canvas and the hierarchical repack, whose nearest-face projection runs on the BVH now (O(log N)). Two dead shaders from the abandoned depth-based AO path (`VertexAOAccum.compute`, `VertexAODepth.shader`) are removed; nothing referenced them. diff --git a/Editor/Mesh/MeshAccess.cs b/Editor/Mesh/MeshAccess.cs index ba3485bd..9e903010 100644 --- a/Editor/Mesh/MeshAccess.cs +++ b/Editor/Mesh/MeshAccess.cs @@ -85,7 +85,7 @@ static void FillReadableCopy(Mesh src, Mesh dst) if (dim <= 2) { var uv = new List(); src.GetUVs(ch, uv); - if (uv.Count > 0 && !IsAllZero2(uv)) dst.SetUVs(ch, uv); + if (uv.Count > 0) dst.SetUVs(ch, uv); } else if (dim == 3) { @@ -98,21 +98,27 @@ static void FillReadableCopy(Mesh src, Mesh dst) if (uv.Count > 0) dst.SetUVs(ch, uv); } } + // Indices at their own topology: a quad or line submesh stays one. dst.subMeshCount = src.subMeshCount; - for (int s = 0; s < src.subMeshCount; s++) dst.SetTriangles(src.GetTriangles(s), s); + for (int s = 0; s < src.subMeshCount; s++) + dst.SetIndices(src.GetIndices(s), src.GetTopology(s), s, calculateBounds: false); dst.bounds = src.bounds; } // The classic vertex getters log "Not allowed to access" and return EMPTY arrays // on a Read/Write-disabled import (the capture then finds no triangles at all); // MeshData is served by the engine regardless of the readable flag. Bone weights - // have no MeshData accessor — skinned capture bakes through the renderer instead. + // and bind poses have no MeshData accessor, so a skinned Read/Write-disabled + // mesh copies without its skinning — said once per copy, since nothing here can + // do better (skinned capture bakes through the renderer instead). static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) { using (var dataArray = Mesh.AcquireReadOnlyMeshData(src)) { var md = dataArray[0]; int count = md.vertexCount; + if (md.HasVertexAttribute(VertexAttribute.BlendWeight) || md.HasVertexAttribute(VertexAttribute.BlendIndices)) + UvtLog.Warn($"[MeshAccess] '{src.name}' is skinned and Read/Write-disabled: the readable copy carries no bone weights or bind poses. Enable Read/Write on its importer if the copy must stay skinned."); dst.SetVertices(ReadVertices(md, count)); if (md.HasVertexAttribute(VertexAttribute.Normal)) dst.SetNormals(ReadVectors3(md, count)); if (md.HasVertexAttribute(VertexAttribute.Tangent)) dst.SetTangents(ReadVectors4(md, count)); @@ -125,7 +131,7 @@ static Mesh MakeReadableCopyFromMeshData(Mesh src, Mesh dst) if (dim <= 2) { var uv = ReadUV2(md, ch, count); - if (uv.Length > 0 && !IsAllZero2(new List(uv))) dst.SetUVs(ch, new List(uv)); + if (uv.Length > 0) dst.SetUVs(ch, new List(uv)); } else if (dim == 3) { @@ -176,9 +182,10 @@ static Vector4[] ReadVectors4(Mesh.MeshData md, int count) } } - static Color32[] ReadColors(Mesh.MeshData md, int count) + // Float colours: a Color32 read would quantise a float or HDR colour stream. + static Color[] ReadColors(Mesh.MeshData md, int count) { - using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) + using (var buffer = new NativeArray(count, Allocator.Temp, NativeArrayOptions.UninitializedMemory)) { md.GetColors(buffer); return buffer.ToArray(); @@ -222,11 +229,5 @@ static int[] ReadIndices(Mesh.MeshData md, int submesh) } } - static bool IsAllZero2(List uv) - { - for (int i = 0; i < uv.Count; i++) - if (uv[i].x != 0f || uv[i].y != 0f) return false; - return true; - } } } diff --git a/Editor/Mesh/MeshTransform.cs b/Editor/Mesh/MeshTransform.cs index 40500295..a17a4a2f 100644 --- a/Editor/Mesh/MeshTransform.cs +++ b/Editor/Mesh/MeshTransform.cs @@ -51,9 +51,15 @@ public static void BakeMatrix(Mesh mesh, Matrix4x4 matrix) if (mirrored) for (int sub = 0; sub < mesh.subMeshCount; ++sub) { - var triangles = mesh.GetTriangles(sub); - for (int i = 0; i + 2 < triangles.Length; i += 3) { int tmp = triangles[i + 1]; triangles[i + 1] = triangles[i + 2]; triangles[i + 2] = tmp; } - mesh.SetTriangles(triangles, sub); + // Each submesh keeps its topology; only faces have a winding to flip. + var topology = mesh.GetTopology(sub); + var indices = mesh.GetIndices(sub); + if (topology == MeshTopology.Triangles) + for (int i = 0; i + 2 < indices.Length; i += 3) { int tmp = indices[i + 1]; indices[i + 1] = indices[i + 2]; indices[i + 2] = tmp; } + else if (topology == MeshTopology.Quads) + for (int i = 0; i + 3 < indices.Length; i += 4) { int tmp = indices[i + 1]; indices[i + 1] = indices[i + 3]; indices[i + 3] = tmp; } + else continue; + mesh.SetIndices(indices, topology, sub, calculateBounds: false); } mesh.RecalculateBounds(); } diff --git a/Tests/Editor/MeshAccessTests.cs b/Tests/Editor/MeshAccessTests.cs new file mode 100644 index 00000000..7ef98bda --- /dev/null +++ b/Tests/Editor/MeshAccessTests.cs @@ -0,0 +1,54 @@ +// MeshAccessTests.cs — the readable copy and the matrix bake on meshes the engine lets +// us build in a test (readable); the Read/Write-disabled path needs an import. +using NUnit.Framework; +using UnityEngine; + +namespace SashaRX.UnityMeshLab.Tests +{ + public class MeshAccessTests + { + static Mesh QuadTopology() + { + var m = new Mesh { name = "Q" }; + m.vertices = new[] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(1, 1, 0), new Vector3(0, 1, 0) }; + m.colors = new[] { new Color(0.2f, 0.4f, 0.6f, 1f), Color.white, Color.white, Color.white }; + m.uv = new[] { Vector2.zero, Vector2.right, Vector2.one, Vector2.up }; + m.uv3 = new[] { Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero }; + m.tangents = new[] { new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1), new Vector4(1, 0, 0, 1) }; + m.normals = new[] { Vector3.back, Vector3.back, Vector3.back, Vector3.back }; + m.SetIndices(new[] { 0, 1, 2, 3 }, MeshTopology.Quads, 0); + return m; + } + + [Test] + public void ReadableCopyKeepsTopologyEveryUvChannelAndFloatColours() + { + var src = QuadTopology(); + var copy = MeshAccess.ReadableCopy(src); + try + { + Assert.AreEqual(MeshTopology.Quads, copy.GetTopology(0), "a quad submesh is not triangulated"); + CollectionAssert.AreEqual(new[] { 0, 1, 2, 3 }, copy.GetIndices(0)); + Assert.AreEqual(4, copy.uv3.Length, "an all-zero channel is still a channel"); + Assert.AreEqual(new Color(0.2f, 0.4f, 0.6f, 1f), copy.colors[0]); + Assert.AreEqual(4, copy.tangents.Length); + } + finally { Object.DestroyImmediate(src); Object.DestroyImmediate(copy); } + } + + [Test] + public void MirroredBakeRewindsQuadsAsQuads() + { + var m = QuadTopology(); + try + { + MeshTransform.BakeMatrix(m, Matrix4x4.Scale(new Vector3(-1, 1, 1))); + Assert.AreEqual(MeshTopology.Quads, m.GetTopology(0)); + CollectionAssert.AreEqual(new[] { 0, 3, 2, 1 }, m.GetIndices(0), "the quad is re-wound, not split into triangles"); + Assert.AreEqual(-1f, m.vertices[1].x, 1e-6f); + Assert.AreEqual(-1f, m.tangents[0].w, "handedness flips with the mirror"); + } + finally { Object.DestroyImmediate(m); } + } + } +} diff --git a/Tests/Editor/MeshAccessTests.cs.meta b/Tests/Editor/MeshAccessTests.cs.meta new file mode 100644 index 00000000..b0ae19d3 --- /dev/null +++ b/Tests/Editor/MeshAccessTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 418082a53319435da02053d2eab57dd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 30146bcf0acdf1bd38f44bc6835216a2b9f0c4ce Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:50:04 +0000 Subject: [PATCH 098/130] fix(mesh): VertexChannels.WriteSubmesh leaves vertices outside the submesh exact Review finding on the extraction: the submesh-only apply read the whole channel back (clamped to [0,1]), merged the submesh's values in and rewrote everything, so a vertex outside the submesh with a UV component outside [0,1] came back clamped. The write is now masked: only the submesh's vertices change and every other vertex keeps its stored byte or float. The test puts an out-of-range value on an outside vertex and checks it survives. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Mesh/VertexChannels.cs | 23 +++++++++++++---------- Tests/Editor/VertexChannelsTests.cs | 13 ++++++++----- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ee7061b..5b52d96e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. +- **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. The submesh-only apply now leaves every vertex outside the submesh byte- or float-exact (it used to read the whole channel back clamped to [0,1] and rewrite it). Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. - **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. - **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. - **One way to read a mesh, one way to bake a matrix, one box math: `MeshAccess`, `MeshTransform`, `MeshGeometry`.** Reading a Read/Write-disabled mesh was done five ways: the UV canvas carried the only correct one (every attribute through `AcquireReadOnlyMeshData`, an importer round-trip only when the engine refuses even that), vertex AO instantiated the mesh, the Cleanup tab flipped the FBX importer's Read/Write on and off around its reads (two reimports per fix, with the postprocessor bypassed by hand), the rest just skipped unreadable meshes. `Editor/Mesh/MeshAccess.cs` now owns the canvas's implementation (`ReadableCopy`, `Readable`); the transfer tool, the remesh capture, vertex AO and both Cleanup fixes read through it, and no tool touches an importer to read a mesh any more. Baking a transform into a mesh existed three times (`LightmapTransferTool`, `PrefabBuilderTool`, `RemeshExporter`) and two of them transformed normals with the matrix itself, which is wrong under non-uniform scale and never flipped the winding of a mirrored mesh; `MeshTransform.BakeMatrix` does it once, correctly (inverse-transpose normals, re-orthogonalised tangents, winding and handedness flipped under a negative determinant), and `WorldBounds` / `CombinedBounds` replace the per-tool unions. The pure box math (`TransformBounds`, `BoundsDistance`) joins `MeshGeometry`, where the transfer, vertex-colour-baking and AO copies forward to it. The readable copy keeps every submesh at its own topology (quads and lines were triangulated), keeps an all-zero UV channel, reads colours as floats (a `Color32` read quantised float colour streams), and warns once when a skinned Read/Write-disabled mesh goes through `MeshData`, which has no bone-weight accessor; a mirroring `BakeMatrix` re-winds quads as quads. diff --git a/Editor/Mesh/VertexChannels.cs b/Editor/Mesh/VertexChannels.cs index 8d6ba15f..32428f6c 100644 --- a/Editor/Mesh/VertexChannels.cs +++ b/Editor/Mesh/VertexChannels.cs @@ -79,6 +79,11 @@ internal static float[] Read(Mesh mesh, AOTargetChannel channel) /// when given. /// internal static void Write(Mesh mesh, float[] values, AOTargetChannel channel, string undoLabel = null) + => WriteMasked(mesh, values, channel, null, undoLabel); + + // The write behind Write and WriteSubmesh: with a mask, only the vertices it marks + // are touched and every other vertex keeps its stored value byte- or float-exact. + static void WriteMasked(Mesh mesh, float[] values, AOTargetChannel channel, bool[] mask, string undoLabel) { if (mesh == null || values == null || values.Length != mesh.vertexCount) return; if (undoLabel != null) Undo.RecordObject(mesh, undoLabel); @@ -94,6 +99,7 @@ internal static void Write(Mesh mesh, float[] values, AOTargetChannel channel, s int comp = ColorComponent(channel); for (int i = 0; i < values.Length; i++) { + if (mask != null && !mask[i]) continue; byte v = (byte)(Mathf.Clamp01(values[i]) * 255f); var c = colors[i]; if (comp == 0) c.r = v; else if (comp == 1) c.g = v; else if (comp == 2) c.b = v; else c.a = v; @@ -113,6 +119,7 @@ internal static void Write(Mesh mesh, float[] values, AOTargetChannel channel, s } for (int i = 0; i < values.Length; i++) { + if (mask != null && !mask[i]) continue; // Clamp to [0,1] like the colour path; blur and area correction can // drift slightly out of range. float v = Mathf.Clamp01(values[i]); @@ -126,21 +133,17 @@ internal static void Write(Mesh mesh, float[] values, AOTargetChannel channel, s /// /// Writes only at the vertices submesh - /// uses, keeping the channel's current value (or the - /// default) elsewhere. False when the submesh index is out of range. + /// uses; every other vertex keeps its stored value + /// exactly (no re-read, no clamp). False when the submesh index is out of range. /// internal static bool WriteSubmesh(Mesh mesh, float[] values, AOTargetChannel channel, int submesh, string undoLabel = null) { if (mesh == null || values == null || values.Length != mesh.vertexCount) return false; if (submesh < 0 || submesh >= mesh.subMeshCount) return false; - var merged = Read(mesh, channel) ?? new float[mesh.vertexCount]; - var triangles = mesh.GetTriangles(submesh); - for (int ti = 0; ti < triangles.Length; ti++) - { - int vi = triangles[ti]; - if (vi >= 0 && vi < merged.Length) merged[vi] = values[vi]; - } - Write(mesh, merged, channel, undoLabel); + var mask = new bool[mesh.vertexCount]; + foreach (int vi in mesh.GetIndices(submesh)) + if (vi >= 0 && vi < mask.Length) mask[vi] = true; + WriteMasked(mesh, values, channel, mask, undoLabel); return true; } diff --git a/Tests/Editor/VertexChannelsTests.cs b/Tests/Editor/VertexChannelsTests.cs index 77dd1ecf..a4483c95 100644 --- a/Tests/Editor/VertexChannelsTests.cs +++ b/Tests/Editor/VertexChannelsTests.cs @@ -77,12 +77,15 @@ public void MismatchedLengthsWriteNothing() [Test] public void SubmeshWriteTouchesOnlyThatSubmeshesVertices() { - VertexChannels.Write(mesh, new[] { .5f, .5f, .5f, .5f }, AOTargetChannel.UV1_X); + // Vertex 0 (submesh 0 only) carries an out-of-range value the write must not touch. + mesh.SetUVs(1, new System.Collections.Generic.List { new Vector2(2f, .5f), new Vector2(.5f, .5f), new Vector2(.5f, .5f), new Vector2(.5f, .5f) }); Assert.IsTrue(VertexChannels.WriteSubmesh(mesh, new[] { 0f, 0f, 0f, 0f }, AOTargetChannel.UV1_X, 1)); - var v = VertexChannels.Read(mesh, AOTargetChannel.UV1_X); - Assert.AreEqual(.5f, v[0], 1e-6f, "vertex 0 is only in submesh 0"); - Assert.AreEqual(0f, v[1], 1e-6f); - Assert.AreEqual(0f, v[3], 1e-6f); + var raw = new System.Collections.Generic.List(); + mesh.GetUVs(1, raw); + Assert.AreEqual(2f, raw[0].x, 1e-6f, "vertex 0 is only in submesh 0 and keeps its raw value"); + Assert.AreEqual(0f, raw[1].x, 1e-6f); + Assert.AreEqual(0f, raw[3].x, 1e-6f); + Assert.AreEqual(.5f, raw[3].y, 1e-6f, "the other component is untouched"); } [Test] From 877c07e22e0f7df97878f9fa79e83bf50da05b23 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:50:37 +0000 Subject: [PATCH 099/130] fix(mesh): LodHierarchy reuses an existing LODGroup instead of dereferencing a null AddComponent Review finding on the extraction: CreateFromRenderers and CreateFromSiblings called Undo.AddComponent on the root; a GameObject holds one LODGroup, so a root that already had one got null back and the next line dereferenced it. Both now reuse the existing component (recorded for Undo) and rewrite its LODs. Test covers the reuse. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 2 +- Editor/Mesh/LodHierarchy.cs | 17 ++++++++++++++--- Tests/Editor/LodHierarchyTests.cs | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8b64bb5..e2408222 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed -- **One LODGroup-from-hierarchy: `LodHierarchy`.** Rebuilding a LODGroup from `_LOD{n}` names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice (Cleanup at 0.5, LOD Generation at 0.01) and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. `Editor/Mesh/LodHierarchy.cs` is the one implementation (`CollectByName`, `LodsFromNames` with a `Transitions` scheme, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild` + `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); each tab keeps its policy (which children, which transitions) as arguments, `UvToolContext.CompactLodArray` and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through `RendererSettings` (it copied five of them). `LodGroupUtility` stays the component-level half. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. +- **One LODGroup-from-hierarchy: `LodHierarchy`.** Rebuilding a LODGroup from `_LOD{n}` names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice (Cleanup at 0.5, LOD Generation at 0.01) and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. `Editor/Mesh/LodHierarchy.cs` is the one implementation (`CollectByName`, `LodsFromNames` with a `Transitions` scheme, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild` + `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); each tab keeps its policy (which children, which transitions) as arguments, `UvToolContext.CompactLodArray` and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through `RendererSettings` (it copied five of them). `LodGroupUtility` stays the component-level half. Creating a group on a root that already has a LODGroup reuses that component (with Undo) instead of dereferencing the null `AddComponent` returns for a duplicate. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. - **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. The submesh-only apply now leaves every vertex outside the submesh byte- or float-exact (it used to read the whole channel back clamped to [0,1] and rewrite it). Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. - **One UV layout topology: `UvTopology`.** The UV canvas held the channel read, the boundary-edge count, point-in-triangle, the shell vote and the shell data build as public statics on the view; the shell extractor counted boundary edges again for its descriptors (same edge key, same loop), the face→shell cache in `MeshEntry.cs` rebuilt the map inline, and the 3D viewport had its own unique-edge dedupe for wires. `Editor/Uv/UvTopology.cs` is the one implementation (`ReadUv`, `HasUv`, `BoundaryEdgePairs` over all faces or a face subset, `BoundaryLength`, `UniqueEdges`, `PointInTriangle`, `VoteBestShell`, `FaceToShell`, `BuildShellData`, `OccupiedTiles`); the canvas keeps only its per-frame caches and the GL drawing, `FaceToShellCache` and `MeshViewport3D.EdgeIndices` call in, and the shell extractor's boundary length is the same count the canvas draws. Tests pin the boundary and unique edge sets of a two-island layout, the subset cut edge, the boundary length, point-in-triangle on edges and vertices in either winding, the shell vote, the face→shell map and shell bounds. - **One FBX writer and one sidecar store: `FbxExport`, `SidecarStore`, `RendererSettings`.** The transfer tool carried the whole FBX pipeline (about 2,400 lines: the export mesh of an entry, the UV-channel carry-over, the isolated channel re-save with its snapshots, importer scope and atomic write, the LOD-rebuild passes, the collision injection and strip, the relink after reimport, the sidecar reads and writes) as private methods on the tab, and the other tabs reached it through `FindTool()`; the sidecar asset was opened by hand in six places (load-or-create, `Set`, `SetDirty`, `SaveAssets`), the "FBX paths behind these entries" loop was written five times, the collision-hull loader lived on the Collision tab, and the renderer-settings copy existed three times (the split/merge one lost `scaleInLightmap` and the lightmap scale/offset). `Editor/Assets/FbxExport.cs` now holds the mechanics (`BuildExportMesh`, `WriteChannels`, `Write`, `WriteAtomic`, `PromoteRootMeshToLod0Child`, `ReplaceMeshes`, `AddLodChild`, `PruneStaleChildren`, `NormalizeExportHierarchy`, `InjectCollisionMeshes`, `StripCollisionMeshes`, `TrimMaterialArrays`, `RelinkSceneMeshReferences`, `RemoveDefaultMaterialRemaps`, the preflight and the UV channel helpers), `Editor/Assets/SidecarStore.cs` the sidecar (`Load`/`LoadOrCreate`/`Save`, `FbxPaths`, `TryFindFirst`, `SaveEntries`, `StoreForImport`, `ArmTransientReplay`, `ClearUv2Entries`, `Delete`, `TryBuildEntry`, `CollisionMeshes` with its validation, `LoadSettings`/`SaveSettings`), and `Editor/Mesh/RendererSettings.cs` the one renderer copy. The transfer tool keeps the policy only — dialogs, backups, the importer lock, which entries, what to refresh — and its wide export reads as the sequence of those passes; the hub, the Collision tab, vertex colour baking, LOD generation, split/merge and the remesh exporter call the libraries directly (`CollisionMeshTool.GetCollisionMeshesFromSidecar` forwards). One behaviour change: the wide LOD-rebuild export now rejects an empty exporter output as a failure, as the isolated path and the remesh exporter always did, instead of reporting success and restoring the `.meta` over it. Tests cover the naming rules, the UV carry-over, the AO target mapping, the hierarchy passes on a scratch hierarchy and the collision entry validation. diff --git a/Editor/Mesh/LodHierarchy.cs b/Editor/Mesh/LodHierarchy.cs index 4365d83c..f1492b77 100644 --- a/Editor/Mesh/LodHierarchy.cs +++ b/Editor/Mesh/LodHierarchy.cs @@ -111,7 +111,8 @@ internal static int RebuildFromNames(LODGroup lodGroup, bool recursive, bool kee } /// - /// Adds a LODGroup to with every renderer below it as LOD0 at + /// Gives a LODGroup (a LODGroup it already has is reused, + /// since a GameObject holds at most one) with every renderer below it as LOD0 at /// . With nothing is /// added and null returned when there is no renderer; otherwise the group is added /// empty. tells how many went in. @@ -124,7 +125,7 @@ internal static LODGroup CreateFromRenderers(GameObject root, float transition, rendererCount = renderers.Length; if (requireRenderers && renderers.Length == 0) return null; - var lodGroup = Undo.AddComponent(root); + var lodGroup = GroupOn(root); if (renderers.Length > 0) { lodGroup.SetLODs(new[] { new LOD(transition, renderers) }); @@ -142,7 +143,7 @@ internal static LODGroup CreateFromSiblings(List<(GameObject go, int lodIndex)> { if (siblings == null || siblings.Count == 0 || siblings[0].go == null || siblings[0].go.transform.parent == null) return null; var lodRoot = siblings[0].go.transform.parent.gameObject; - var lodGroup = Undo.AddComponent(lodRoot); + var lodGroup = GroupOn(lodRoot); var lods = new LOD[siblings.Count]; for (int i = 0; i < siblings.Count; i++) lods[i] = new LOD(Transition(Transitions.Halving, i, siblings.Count), siblings[i].go.GetComponentsInChildren()); @@ -151,6 +152,16 @@ internal static LODGroup CreateFromSiblings(List<(GameObject go, int lodIndex)> return lodGroup; } + // One LODGroup per GameObject: AddComponent on a root that already has one returns + // null (and logs), so the existing component is recorded for Undo and reused. + static LODGroup GroupOn(GameObject root) + { + var existing = root.GetComponent(); + if (existing == null) return Undo.AddComponent(root); + Undo.RecordObject(existing, "Create LODGroup"); + return existing; + } + /// /// Drops null renderers from every slot and, with , /// the slots left empty (otherwise user-added empty levels survive). Writes back with diff --git a/Tests/Editor/LodHierarchyTests.cs b/Tests/Editor/LodHierarchyTests.cs index 14c365d0..a4e1319d 100644 --- a/Tests/Editor/LodHierarchyTests.cs +++ b/Tests/Editor/LodHierarchyTests.cs @@ -112,6 +112,8 @@ public void CreateFromRenderersAndSiblings() var empty = Node("Empty", null); Assert.IsNull(LodHierarchy.CreateFromRenderers(empty, 0.5f, requireRenderers: true, out _)); Assert.IsNotNull(LodHierarchy.CreateFromRenderers(empty, 0.5f, requireRenderers: false, out _), "the Cleanup button adds an empty group"); + Assert.AreSame(lg, LodHierarchy.CreateFromRenderers(root, 0.25f, requireRenderers: true, out _), "a root that already has a group keeps it"); + Assert.AreEqual(.25f, lg.GetLODs()[0].screenRelativeTransitionHeight, "and the group is rewritten"); var parent = Node("Desk", null); var s0 = Node("Desk_LOD0", parent.transform, Tris(3)); From ee842d742d7758a876a106cde38fdcea796beb92 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 09:53:03 +0000 Subject: [PATCH 100/130] fix(assets): a map with no pixel buffer fails the remesh export with the map's name Review finding on the extraction: Encode used to throw from SetPixels32 on a mis-sized buffer; TextureAssets.EncodePng/EncodeExr return null instead, so the failure surfaced as an ArgumentNullException from File.WriteAllBytes. Encode now throws InvalidOperationException naming the map and size; the export's folder rollback is unchanged. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- Editor/RemeshExporter.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Editor/RemeshExporter.cs b/Editor/RemeshExporter.cs index 8337d1b7..b7a33135 100644 --- a/Editor/RemeshExporter.cs +++ b/Editor/RemeshExporter.cs @@ -316,8 +316,13 @@ internal static void BakeScaleIntoMesh(Mesh mesh, Vector3 scale) static byte[] Encode(RemeshBaker.Maps maps, int index) { - if (index == EmissionMap) return TextureAssets.EncodeExr(maps.emission, maps.size, maps.size); - return TextureAssets.EncodePng(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao, maps.size, maps.size); + var bytes = index == EmissionMap + ? TextureAssets.EncodeExr(maps.emission, maps.size, maps.size) + : TextureAssets.EncodePng(index == 0 ? maps.color : index == 1 ? maps.normal : index == 2 ? maps.metal : maps.ao, maps.size, maps.size); + // A missing or mis-sized buffer is a bake bug; say which map, and let the + // export roll its folder back as it does for every other failure. + if (bytes == null) throw new InvalidOperationException($"Map '{MapNames[index]}' has no {maps.size}×{maps.size} pixel buffer to write."); + return bytes; } } } From ea9bc73e29cabdbe8549b98e31355d54d5f2d8d4 Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 10:09:35 +0000 Subject: [PATCH 101/130] ci: compile the C# without a Unity licence on every PR, and scan it with SonarQube on main Tools~/compile_check.py builds Editor/ and Tests/ with the .NET SDK against the UnityEngine/UnityEditor reference assemblies from NuGet (Unity3D.SDK 2021.1.14.1), once without and once with LIGHTMAP_UV_TOOL_FBX_EXPORTER (a stub for the FBX Exporter), and fails on any CS error with the repo-relative file and line (GitHub annotations in CI). The four APIs the 2021 references predate are bridged by line-preserving substitutions on copied sources. Unity Package Checks runs it as a new job next to the CS0103 heuristic. A SonarQube workflow prepares the same build and runs dotnet-sonarscanner begin/build/end against the self-hosted server on pushes to main and on demand; without a SONAR_TOKEN secret it skips with a notice. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- .github/workflows/meta-check.yml | 27 ++++ .github/workflows/sonar.yml | 101 ++++++++++++++ .gitignore | 3 + CHANGELOG.md | 1 + Tools~/compile_check.py | 218 +++++++++++++++++++++++++++++++ 5 files changed, 350 insertions(+) create mode 100644 .github/workflows/sonar.yml create mode 100644 Tools~/compile_check.py diff --git a/.github/workflows/meta-check.yml b/.github/workflows/meta-check.yml index 447402bf..c7b4a99b 100644 --- a/.github/workflows/meta-check.yml +++ b/.github/workflows/meta-check.yml @@ -144,3 +144,30 @@ jobs: - name: Check for identifiers used but never declared run: python3 'Tools~/check_undeclared_identifiers.py' Editor Tests + + csharp-compile: + name: Compile C# against Unity reference assemblies + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Cache NuGet packages + uses: actions/cache@v4 + with: + path: ~/.nuget/packages + key: nuget-${{ runner.os }}-${{ hashFiles('Tools~/compile_check.py') }} + + # The whole package type-checks here with the .NET SDK — no Unity licence — + # against the UnityEngine/UnityEditor reference assemblies from NuGet, once + # without and once with LIGHTMAP_UV_TOOL_FBX_EXPORTER. This is what the + # identifier heuristic above approximates; a real CS error of any kind fails + # the job with a file/line annotation. The four 2021-era API gaps the + # references have are bridged on copied sources (see the script header). + - name: Build Editor and Tests (both FBX define variants) + run: python3 'Tools~/compile_check.py' diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml new file mode 100644 index 00000000..305800bb --- /dev/null +++ b/.github/workflows/sonar.yml @@ -0,0 +1,101 @@ +name: SonarQube + +# Analyses the package's C# on the self-hosted SonarQube and publishes the result +# to its project. Runs on pushes to main and on demand only: the server runs the +# Community edition, whose analysis is one branch per project — a pull-request +# scan would overwrite main's picture rather than decorate the PR. +# +# Secrets / variables (repository settings): +# SONAR_TOKEN — secret, a project or global analysis token from the server. +# SONAR_HOST_URL — variable, optional; defaults to the Mesh Lab server below. +# SONAR_PROJECT_KEY — variable, optional; defaults to SashaRX_UnityMeshLab. +# +# The C# build is the licence-free one from Tools~/compile_check.py: sources are +# copied into .compile-check/ (reference-gap substitutions keep line numbers), so +# issues carry the repo-relative path and line; SCM blame is off for that reason. +on: + push: + branches: [main] + paths: + - 'Editor/**' + - 'Tests/**' + - 'Tools~/compile_check.py' + - '.github/workflows/sonar.yml' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + analyse: + name: Scan with dotnet-sonarscanner + runs-on: ubuntu-latest + env: + SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL || 'http://178.104.156.174:9000' }} + SONAR_PROJECT_KEY: ${{ vars.SONAR_PROJECT_KEY || 'SashaRX_UnityMeshLab' }} + steps: + - name: Probe token + id: probe + env: + HAS_TOKEN: ${{ secrets.SONAR_TOKEN != '' }} + run: | + echo "has-token=$HAS_TOKEN" >> "$GITHUB_OUTPUT" + if [ "$HAS_TOKEN" != "true" ]; then + echo "::notice::SONAR_TOKEN is not configured — add a SonarQube analysis token as a repository secret to enable the scan." + echo "### SonarQube scan skipped" >> "$GITHUB_STEP_SUMMARY" + echo "" >> "$GITHUB_STEP_SUMMARY" + echo "No \`SONAR_TOKEN\` secret. Create a token on the server (My Account ▸ Security) and add it under Settings ▸ Secrets ▸ Actions." >> "$GITHUB_STEP_SUMMARY" + fi + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + if: steps.probe.outputs.has-token == 'true' + with: + persist-credentials: false + fetch-depth: 0 + + - uses: actions/setup-java@v4 + if: steps.probe.outputs.has-token == 'true' + with: + distribution: temurin + java-version: '17' + + - uses: actions/setup-dotnet@v4 + if: steps.probe.outputs.has-token == 'true' + with: + dotnet-version: '8.0.x' + + - name: Cache NuGet packages and the scanner + if: steps.probe.outputs.has-token == 'true' + uses: actions/cache@v4 + with: + path: | + ~/.nuget/packages + ~/.sonar/cache + key: sonar-${{ runner.os }}-${{ hashFiles('Tools~/compile_check.py', '.github/workflows/sonar.yml') }} + + - name: Install dotnet-sonarscanner + if: steps.probe.outputs.has-token == 'true' + run: dotnet tool install --global dotnet-sonarscanner + + - name: Prepare the licence-free build + if: steps.probe.outputs.has-token == 'true' + run: python3 'Tools~/compile_check.py' --prepare-only + + - name: Begin, build, end + if: steps.probe.outputs.has-token == 'true' + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + working-directory: .compile-check + run: | + dotnet sonarscanner begin \ + /k:"$SONAR_PROJECT_KEY" \ + /n:"Mesh Lab" \ + /v:"$(jq -r .version ../package.json)" \ + /d:sonar.host.url="$SONAR_HOST_URL" \ + /d:sonar.token="$SONAR_TOKEN" \ + /d:sonar.scm.disabled=true \ + /d:sonar.exclusions="Shims/**" \ + /d:sonar.cs.file.suffixes=".cs" + dotnet build MeshLab.sln -nologo -v q --no-incremental -p:MeshLabFbx=true + dotnet sonarscanner end /d:sonar.token="$SONAR_TOKEN" diff --git a/.gitignore b/.gitignore index 3c5b3438..0d2bdd82 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ commitmsg.txt # Mimosa security-plugin runtime state (hook ledgers, scan reports, session baselines) .mimosa/ + +# Tools~/compile_check.py build directory +.compile-check/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f5f8ac4..7c43fb48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this - **Repository: a stray screenshot committed at the package root is removed.** ### Added +- **CI: the whole package compiles without a Unity licence, and a SonarQube scan.** `Tools~/compile_check.py` builds `Editor/` and `Tests/` with the .NET SDK against the UnityEngine/UnityEditor reference assemblies from NuGet (Unity3D.SDK 2021.1.14.1), once without and once with `LIGHTMAP_UV_TOOL_FBX_EXPORTER` (a stub stands in for the FBX Exporter), and fails on any CS error with the repo-relative file and line; the four APIs the 2021 references predate are bridged on copied sources, never the repo. The *Unity Package Checks* workflow runs it on every push and PR next to the CS0103 heuristic. A new *SonarQube* workflow analyses the same build with `dotnet-sonarscanner` on pushes to `main` and on demand, publishing to the self-hosted server (`SONAR_TOKEN` secret; host and project key as repository variables), and skips itself with a notice while the token is missing. - **The GPU BVH does everything the CPU one does, and the bake uses it.** The only GPU tree so far was the vertex-AO kernel's private copy, which answered just "how far until a hit". `Shaders/BvhTraversal.hlsl` is now the one traversal for every compute kernel — the same node layout as `TriangleBvh`, the same relative ray–triangle test, closest-point-on-triangle with barycentrics, ordered (nearer child first) ray traversal, nearest with box-distance pruning, the facing filter, the normal filter and the either-side mask — and `Shaders/BvhQueries.compute` answers batches of ray and nearest-point queries with the same hit records the CPU returns (face index, t or distance², weights of vertices 0, 1, 2). `GpuBvh` (C#) uploads a `TriangleBvh` once and streams batches through it, or binds the tree to another kernel; the AO kernel now includes the shared traversal and binds the tree through it instead of carrying its own. The Remesh & Bake bake is restructured into one code path with a pluggable resolver: Prepare (coverage, BVH, cage, orientation probe), then bands of rows — sample requests built on workers, answered either by the CPU BVH in parallel or by the GPU in one dispatch per batch, evaluated on workers — then the fills, diagnostics, dilation and vertex colours. **GPU projection** (bake stage, default on where compute shaders exist) picks the GPU resolver; the pipeline drives the band loop from the main thread so the dispatches are legal, falls back to the CPU when the kernel asset is missing, and the bake status says which path ran. Results are the CPU's. - **Remesh & Bake: two-sided sources, a visible trim mask, and a re-wound sheet.** A material that renders both sides (Cull Off, double-sided) shows its sheet from behind too. **Source backfaces** (remesh stage) decides which source faces count from behind: *From materials* (default) reads each captured material's cull mode property (`_Cull`, `_CullMode` = Off) or double-sided switch (`_DoubleSidedEnable`, `_TwoSided`, `_DoubleSided`), *Always* treats every face as two-sided (for a `Cull Off` baked into the shader, which no property reveals), *Never* keeps only fronts. A two-sided source still trims to ONE sheet — doubling the geometry would double the atlas and the triangle count for nothing — and the saved material renders both sides of it instead (URP Lit/Unlit: cull Off and double-sided GI; Standard and Unlit/Texture have no two-sided mode, so the save warns and says so in its status); two-sided faces pass the bake's front-face filter from either side (ray and nearest fallback alike) and cast no vote in the winding probe. After the cut the kept sheet is re-wound to one consistent orientation per connected piece, the majority of each piece keeping the side that agreed with the source, so a source modeled with arbitrary winding comes out orientable. The Remesh stage's new **Trim** toggle (3D panel) colours the untrimmed remesh by class — green kept, red back of a sheet, orange rim / no source within reach — so what the trim removes, and why, is visible before the simplifier runs; the remesh status now also reaches the Console, with the trimmed, re-wound and two-sided counts, and RemeshDiag prints the per-class breakdown. - **Remesh & Bake: a sided, fitted projection cage.** The cage was one direction per welded position: the area-weighted face normals of every vertex copy at that position, summed and smoothed. On a double-sided sheet — a wall of a non-closed source that the voxel remesh turned into a one-cell slab and the simplifier collapsed to zero thickness, both windings on the same vertices — the two sides summed to nothing and the normalized noise sent rays off at up to 180° from their face, with the cage preview spiking across the whole model and most texels baking from the wrong side. The cage is now built per face corner and per **side**: corners at one position are clustered by the hemisphere their face normals share (within 120°), each cluster is averaged (face area × corner angle) and Laplacian-smoothed over its own connectivity, so UV and crease splits still weld into one smooth direction while a double-sided sheet keeps a front and a back; every corner direction is checked against its own face and falls back to the unsmoothed side, then the face normal. **Cage smoothing** (bake stage, 0–10, default 2) exposes the passes. **Fit cage to source** (default on) measures where the source sits along each side's ray (both ways, then nearest point), doubles it for oblique surfaces, clamps it between 1× and 8× the projection distance and smooths it over the sides, so the rays reach as far as the decimation drifted and no further; the nearest fallback is bounded by the same reach. The Cage preview pushes every corner by its own reach, one line per welded side pair (a double-sided sheet shows both shells), rebuilt live from distance, smoothing, fit and source. RemeshDiag reports the side and double-sided position counts and the longest reach; the bake staleness key covers the new settings. diff --git a/Tools~/compile_check.py b/Tools~/compile_check.py new file mode 100644 index 00000000..39d3f534 --- /dev/null +++ b/Tools~/compile_check.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +"""Compile the package's C# without a Unity licence. + +The Unity test workflow only compiles this package when a Unity licence secret is +configured, and Unity disabled manual Personal-tier activation in 2024 — so on a +free seat nothing type-checks the C# at all. This script builds Editor/ and Tests/ +with the .NET SDK against the UnityEngine/UnityEditor reference assemblies that +the Unity3D.SDK NuGet package ships (2021.1.14.1, the newest published), once +without and once with LIGHTMAP_UV_TOOL_FBX_EXPORTER (a stub stands in for the FBX +Exporter package), so both halves of every #if build. Anything the compiler +rejects fails the check with the repo-relative file and line. + +The 2021.1 references predate four APIs the code uses; each is bridged by a +line-preserving text substitution on the COPIED sources (never the repo), listed +in SHIMS with the reason. Keep that list short: every entry is an API the real +Unity build sees and this check cannot. + +Usage: + python3 Tools~/compile_check.py # build both define variants + python3 Tools~/compile_check.py --prepare-only # only write .compile-check/ (SonarQube) + python3 Tools~/compile_check.py --out DIR # another build directory +""" +import argparse +import os +import re +import shutil +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +UNITY_SDK_VERSION = "2021.1.14.1" +NUNIT_VERSION = "3.13.3" +FBX_DEFINE = "LIGHTMAP_UV_TOOL_FBX_EXPORTER" + +# (file glob, regex, replacement, why) — applied to the copied sources only. +SHIMS = [ + ("**/*.cs", r"AssetDatabase\.AssetEditingScope", "AssetEditingScopeShim", + "AssetDatabase.AssetEditingScope is a 2022.1 nested type; the shim struct below stands in."), + ("**/*.cs", r"Object\.FindObjectsByType<([A-Za-z0-9_.]+)>\(FindObjectsSortMode\.None\)", + r"Object.FindObjectsOfType<\1>()", + "Object.FindObjectsByType is 2022.2+; FindObjectsOfType is the 2021.1 equivalent."), + ("**/*.cs", r"^using UnityEditor\.SceneManagement;$", + "using UnityEditor.SceneManagement; using UnityEditor.Experimental.SceneManagement;", + "PrefabStage / PrefabStageUtility moved out of Experimental in 2021.2."), + ("**/*.cs", r"PrefabStageUtility\.OpenPrefab\(([^()]*)\)", r"((PrefabStage)null)", + "PrefabStageUtility.OpenPrefab is 2021.2+; the check only needs the call to type."), +] + +SHIM_SOURCE = """// Generated by Tools~/compile_check.py — stands in for APIs the 2021.1 reference +// assemblies predate. Never part of the package. +namespace SashaRX.UnityMeshLab +{ + internal struct AssetEditingScopeShim : System.IDisposable { public void Dispose() { } } +} +""" + +FBX_STUB_SOURCE = """// Generated by Tools~/compile_check.py — the FBX Exporter package's surface this +// package calls, so the LIGHTMAP_UV_TOOL_FBX_EXPORTER half of every #if compiles. +namespace UnityEditor.Formats.Fbx.Exporter +{ + public enum ExportFormat { ASCII, Binary } + public class ExportModelOptions { public ExportFormat ExportFormat; public bool EmbedTextures; } + public static class ModelExporter + { + public static string ExportObjects(string path, UnityEngine.Object[] objects, ExportModelOptions options = null) => path; + } +} +""" + +NOWARN = "CS0649;CS0169;CS0414;CS0162;CS0219;CS0168;CS0618;CS0067;CS1998;CS8632;CS0105;NU1701" + +EDITOR_CSPROJ = f""" + + netstandard2.1 + 9.0 + true + disable + false + SashaRX.UnityMeshLab.Editor + false + $(NoWarn);{NOWARN} + $(DefineConstants);UNITY_EDITOR + $(DefineConstants);{FBX_DEFINE} + + + + + + + + +""" + +TESTS_CSPROJ = f""" + + netstandard2.1 + 9.0 + disable + false + SashaRX.UnityMeshLab.Tests.Editor + false + $(NoWarn);{NOWARN} + $(DefineConstants);UNITY_EDITOR;UNITY_INCLUDE_TESTS + + + + + + + + +""" + +SLN = """Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Editor", "Editor.csproj", "{6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E01}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests.csproj", "{6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E02}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E01}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B3C1A4E-0D4B-4D4F-9C3B-1F1C9B6D1E02}.Debug|Any CPU.Build.0 = Debug|Any CPU + EndGlobalSection +EndGlobal +""" + + +def copy_sources(out: Path) -> None: + for folder in ("Editor", "Tests"): + dst = out / folder + if dst.exists(): + shutil.rmtree(dst) + shutil.copytree(ROOT / folder, dst, ignore=shutil.ignore_patterns("*.meta", "*.asmdef", "*.asmdef.meta")) + + +def apply_shims(out: Path) -> int: + hits = 0 + for folder in ("Editor", "Tests"): + for pattern, regex, repl, _why in SHIMS: + rx = re.compile(regex, re.MULTILINE) + for path in (out / folder).glob(pattern): + text = path.read_text(encoding="utf-8") + new, n = rx.subn(repl, text) + if n: + path.write_text(new, encoding="utf-8") + hits += n + return hits + + +def prepare(out: Path) -> None: + out.mkdir(parents=True, exist_ok=True) + copy_sources(out) + shims = apply_shims(out) + (out / "Shims").mkdir(exist_ok=True) + (out / "Shims" / "UnityApiShims.cs").write_text(SHIM_SOURCE, encoding="utf-8") + (out / "Shims" / "FbxExporterStub.cs").write_text(FBX_STUB_SOURCE, encoding="utf-8") + (out / "Editor.csproj").write_text(EDITOR_CSPROJ, encoding="utf-8") + (out / "Tests.csproj").write_text(TESTS_CSPROJ, encoding="utf-8") + (out / "MeshLab.sln").write_text(SLN, encoding="utf-8") + print(f"prepared {out} ({shims} reference-gap substitution(s) applied to the copies)") + + +ERROR_RX = re.compile(r"^(?P.+?)\((?P\d+),(?P\d+)\): error (?P[A-Z]+\d+): (?P.*?)(?: \[.*\])?$") + + +def build(out: Path, fbx: bool) -> int: + variant = "with" if fbx else "without" + print(f"\n== dotnet build {variant} {FBX_DEFINE}") + cmd = ["dotnet", "build", str(out / "MeshLab.sln"), "-nologo", "-v", "q", "--no-incremental", + f"-p:MeshLabFbx={'true' if fbx else 'false'}", "-o", str(out / ("bin-fbx" if fbx else "bin"))] + proc = subprocess.run(cmd, capture_output=True, text=True) + errors = [] + seen = set() + for line in (proc.stdout + proc.stderr).splitlines(): + m = ERROR_RX.match(line.strip()) + if not m: + continue + rel = os.path.relpath(m.group("file"), out).replace(os.sep, "/") + key = (rel, m.group("line"), m.group("code")) + if key in seen: + continue + seen.add(key) + errors.append((rel, int(m.group("line")), int(m.group("col")), m.group("code"), m.group("msg"))) + for rel, line, col, code, msg in errors: + print(f"{rel}({line},{col}): error {code}: {msg}") + if os.environ.get("GITHUB_ACTIONS"): + print(f"::error file={rel},line={line},col={col},title={code}::{msg} ({variant} {FBX_DEFINE})") + if proc.returncode != 0 and not errors: + print(proc.stdout[-4000:]) + print(proc.stderr[-4000:]) + print(f"{'FAILED' if proc.returncode else 'ok'}: {len(errors)} error(s)") + return proc.returncode + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--out", default=str(ROOT / ".compile-check"), help="build directory (default .compile-check/)") + ap.add_argument("--prepare-only", action="store_true", help="write the build directory and stop") + args = ap.parse_args() + out = Path(args.out).resolve() + prepare(out) + if args.prepare_only: + return 0 + rc = 0 + for fbx in (False, True): + rc |= build(out, fbx) + return 1 if rc else 0 + + +if __name__ == "__main__": + sys.exit(main()) From 4cf9f0b10ac077cb2efa05cd6b6d571da542888d Mon Sep 17 00:00:00 2001 From: SashaRX Date: Fri, 2 Oct 2026 10:15:03 +0000 Subject: [PATCH 102/130] refactor(bench): SweepRunner and BenchmarkRunner, the benchmark as a library under Editor/Bench MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The parameter sweep and the multi-model benchmark lived as 800 lines of orchestration in the UV2 Transfer tab (matrix validation and cell count, the seven nested axis loops with the context snapshotted and restored, per-cell labels and recorder routing, the incremental aggregate, manifest and archive, the per-case spawn, LODGroup lookup, technique dispatch and cleanup), so no other tool could run one. Editor/Bench/SweepRunner.cs (matrix → Axes → Cells with labels and configs, TryValidate, Run through an ISweepHost) and BenchmarkRunner.cs (Run through an IBenchmarkHost, FindLodGroup, RebuildReport) hold that now; the tab implements the two host interfaces and keeps its three buttons. BenchmarkRecorder, BenchmarkSweep, TestSuiteAsset and CsvUtil move into the same folder with their GUIDs. Behaviour unchanged: same cell order, labels, directories, reports and cleanup. Tests pin the axis fallbacks, the cell count and order, the label format, the oversample clamp, the validation errors and the path slug. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JVscWczi4Kw3d48fGhgYMd --- CHANGELOG.md | 1 + CLAUDE.md | 1 + Documentation~/TRANSFER_BENCHMARK.md | 5 +- Editor/Bench.meta | 8 + Editor/{ => Bench}/BenchmarkRecorder.cs | 0 Editor/{ => Bench}/BenchmarkRecorder.cs.meta | 0 Editor/Bench/BenchmarkRunner.cs | 201 +++++ Editor/Bench/BenchmarkRunner.cs.meta | 11 + Editor/{ => Bench}/BenchmarkSweep.cs | 0 Editor/{ => Bench}/BenchmarkSweep.cs.meta | 0 Editor/{ => Bench}/CsvUtil.cs | 0 Editor/{ => Bench}/CsvUtil.cs.meta | 0 Editor/Bench/SweepRunner.cs | 333 ++++++++ Editor/Bench/SweepRunner.cs.meta | 11 + Editor/{Settings => Bench}/TestSuiteAsset.cs | 0 .../TestSuiteAsset.cs.meta | 0 Editor/Tools/LightmapTransferTool.cs | 772 +----------------- Tests/Editor/SweepRunnerTests.cs | 97 +++ Tests/Editor/SweepRunnerTests.cs.meta | 11 + 19 files changed, 692 insertions(+), 759 deletions(-) create mode 100644 Editor/Bench.meta rename Editor/{ => Bench}/BenchmarkRecorder.cs (100%) rename Editor/{ => Bench}/BenchmarkRecorder.cs.meta (100%) create mode 100644 Editor/Bench/BenchmarkRunner.cs create mode 100644 Editor/Bench/BenchmarkRunner.cs.meta rename Editor/{ => Bench}/BenchmarkSweep.cs (100%) rename Editor/{ => Bench}/BenchmarkSweep.cs.meta (100%) rename Editor/{ => Bench}/CsvUtil.cs (100%) rename Editor/{ => Bench}/CsvUtil.cs.meta (100%) create mode 100644 Editor/Bench/SweepRunner.cs create mode 100644 Editor/Bench/SweepRunner.cs.meta rename Editor/{Settings => Bench}/TestSuiteAsset.cs (100%) rename Editor/{Settings => Bench}/TestSuiteAsset.cs.meta (100%) create mode 100644 Tests/Editor/SweepRunnerTests.cs create mode 100644 Tests/Editor/SweepRunnerTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e034b77..075ca04b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this ## [Unreleased] ### Changed +- **The benchmark is a library: `Editor/Bench/`.** The parameter sweep and the multi-model benchmark lived as 800 lines of orchestration in the UV2 Transfer tab (matrix validation and cell count, the seven nested axis loops with the context snapshotted and restored, per-cell labels and recorder routing, the incremental aggregate, manifest and archive, the per-case spawn, LODGroup lookup, technique dispatch and cleanup), so no other tool could run one. `SweepRunner` (matrix → `Axes` → `Cell`s with their labels and configs, `TryValidate`, `Run` through an `ISweepHost`) and `BenchmarkRunner` (`Run` through an `IBenchmarkHost`, `FindLodGroup`, `RebuildReport`) now hold that; the tab implements the two host interfaces (context, symmetry mode, reset working copies, run pipeline, bind a LODGroup) and keeps its three buttons. `BenchmarkRecorder`, `BenchmarkSweep`, `TestSuiteAsset` and `CsvUtil` move into the same folder (GUIDs unchanged, existing suite assets stay bound). Behaviour unchanged: same cell order, labels, directories, reports and cleanup. Tests pin the axis fallbacks, the cell count and order, the label format, the oversample clamp and the validation errors. - **One texture writer: `TextureAssets`.** A transient `Texture2D` was created, filled, encoded and destroyed by hand in the remesh exporter (PNG and EXR maps), the remesh previews (map textures, the base colour preview), the hierarchical repack diagnostics (PNG write, PNG read-back) and the UV PNG writer, and the map importer setup sat in the remesh exporter. `Editor/Assets/TextureAssets.cs` is the one implementation (`FromPixels`, `EncodePng`, `EncodeExr`, `WriteFile` with the directory created, `WritePng`, `ReadImage`, `Configure` with a `Kind` of Color / Linear / NormalMap); every site calls it, the UV PNG writer destroys its read-back texture on a failed encode too, and the repack's backdrop load no longer leaves a texture behind. Tests pin the PNG round trip through `WritePng` / `ReadImage`, the linear flag of `FromPixels`, the EXR encode and the size guards. - **One LODGroup-from-hierarchy: `LodHierarchy`.** Rebuilding a LODGroup from `_LOD{n}` names existed twice (Cleanup over direct children with gaps kept and halving transitions, Prefab Builder recursive and compact with linear transitions), creating a group from renderers twice (Cleanup at 0.5, LOD Generation at 0.01) and from detected siblings once, compacting a LOD array lived on the tool context, and moving a root mesh into a LOD0 child, the "root renderer is LOD0" check and the root MeshCollider from a collision child were Cleanup privates with the Prefab Builder's own collider assignment next to them. `Editor/Mesh/LodHierarchy.cs` is the one implementation (`CollectByName`, `LodsFromNames` with a `Transitions` scheme, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild` + `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); each tab keeps its policy (which children, which transitions) as arguments, `UvToolContext.CompactLodArray` and the LOD Generation statics forward, and the root-mesh move carries the full renderer settings through `RendererSettings` (it copied five of them). `LodGroupUtility` stays the component-level half. Creating a group on a root that already has a LODGroup reuses that component (with Undo) instead of dereferencing the null `AddComponent` returns for a duplicate. Tests pin the name collection (direct vs recursive, collision skipped), both slot layouts and transition schemes, the rebuild on a scene group, the root-is-LOD0 check, the root-mesh move with the polycount order, the collider from a collision child and the compaction. - **One scalar vertex channel: `VertexChannels`.** The vertex AO target channel (a colour component or a UV component) was decoded by hand in the Vertex Colors tab (read, write, the submesh merge, the preview greys, the channel name from UI tables), in the AO baker (write), in the transfer tool's export (the AO UV channel) and in the sidecar store (the AO target), and the variant export painted, snapshotted and restored `colors32` on its own. `Editor/Mesh/VertexChannels.cs` is the one implementation (`IsColor`, `ColorComponent`, `UvChannel`, `UvComponent`, `Name`, `Read`, `Write`, `WriteSubmesh`, `Levels`, `Blend`, `Greyscale`, `FillColors`, `SnapshotColors`, `RestoreColors`); `VertexAOBaker.WriteToChannel` forwards, the tab keeps its blur pipeline and UI, and the submesh-only apply reports an out-of-range submesh the same way. The submesh-only apply now leaves every vertex outside the submesh byte- or float-exact (it used to read the whole channel back clamped to [0,1] and rewrite it). Tests pin the decoding of every channel, the read/write round trip on colours and UVs with the other components kept, the submesh write, levels and blend, and the snapshot/restore of colours. diff --git a/CLAUDE.md b/CLAUDE.md index 3d424007..5b695d1b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,6 +35,7 @@ See `AGENTS.md` for shared rules that apply to all AI agents. - **LOD hierarchy:** `Editor/Mesh/LodHierarchy.cs` — a LODGroup from its hierarchy (`CollectByName`, `LodsFromNames`, `RebuildFromNames`, `CreateFromRenderers`, `CreateFromSiblings`, `Compact`, `RootRendererIsLod0`, `MoveRootMeshToChild`, `SortChildrenAsLods`, `AddColliderFromCollisionMesh`, `AssignCollider`); `LodGroupUtility` is the component half (recreate, apply, transition normalisation) - **Vertex channels:** `Editor/Mesh/VertexChannels.cs` — a scalar per-vertex channel (`AOTargetChannel`: colour component or UV component) decoded, read, written (whole mesh or one submesh), levels/blend, greyscale preview colours, fill/snapshot/restore of `colors32`. Never decode the enum or poke `colors32`/`GetUVs` for a scalar channel in a tool - **UV:** `Editor/Uv/UvTopology.cs` — index-space UV layout topology (channel read, boundary edges, unique edges, point-in-triangle, shell vote, face→shell, shell data, UDIM tiles); the canvas, 3D layer and viewport cache its results, never recompute them locally +- **Bench:** `Editor/Bench/` — `SweepRunner` (matrix → cells → pipeline runs through `ISweepHost`), `BenchmarkRunner` (suite cases → spawn → techniques, through `IBenchmarkHost`), `BenchmarkRecorder`, `BenchmarkSweep` (aggregate, winner, gallery, manifest, archive), `TestSuiteAsset`, `CsvUtil`. A tab implements the host interfaces; it never loops over cells itself - **Assets:** `Editor/Assets/` — `TextureAssets` (a texture from pixels, PNG/EXR encoding, file writes, image read-back, map importer configuration), `FbxExport` (every FBX write: the isolated channel re-save, the LOD-rebuild hierarchy passes, the atomic write, the post-reimport relink) and `SidecarStore` (the `_uv2data.asset` sidecar: UV2 entries, collision hulls, tool settings). Tools never call `ModelExporter` or open a `Uv2DataAsset` themselves - **Native:** `Plugins/` binaries, `Native~/` C++ source - **Sidecar:** `Uv2DataAsset` persists UV2/collision data alongside FBX diff --git a/Documentation~/TRANSFER_BENCHMARK.md b/Documentation~/TRANSFER_BENCHMARK.md index 3b21d711..8e3b9ca6 100644 --- a/Documentation~/TRANSFER_BENCHMARK.md +++ b/Documentation~/TRANSFER_BENCHMARK.md @@ -67,11 +67,12 @@ strip-parameterization. | Piece | Location | What it does | | --- | --- | --- | | `UvtLog.Category` | `Editor/UvtLog.cs` | Per-subsystem log filter. Toggle in *Pipeline Settings → Log filters*. | -| `BenchmarkRecorder` | `Editor/BenchmarkRecorder.cs` | Collects per-mesh metrics during `ExecFullPipeline` / `ExecTransferAll`; writes CSV + JSON into `/BenchmarkReports/` on session end. Only records when *Project Settings ▸ Mesh Lab ▸ Developer ▸ Show Debug UI* is on — with the toggle off `NewRun` returns a no-op scope and no report folder is created. | +| `BenchmarkRecorder` | `Editor/Bench/BenchmarkRecorder.cs` | Collects per-mesh metrics during `ExecFullPipeline` / `ExecTransferAll`; writes CSV + JSON into `/BenchmarkReports/` on session end. Only records when *Project Settings ▸ Mesh Lab ▸ Developer ▸ Show Debug UI* is on — with the toggle off `NewRun` returns a no-op scope and no report folder is created. | | `SymmetrySplitShells.LastFallbackCount` / `LastTotalSplitCount` | `Editor/SymmetrySplitShells.cs` | Counters read by the recorder. | | `GroupedShellTransfer.LastTopologyIterations` / `LastTopologyFixed` / `LastTopologyCapHit` | `Editor/GroupedShellTransfer.cs` | Counters for the Laplacian topology pass. | | `UvCanvasView.ValidationFilterMask` | `Editor/Framework/UvCanvasView.cs` | Restricts the validation fill/overlay to selected `TriIssue` bits. | -| `TestSuiteAsset` | `Editor/Settings/TestSuiteAsset.cs` | ScriptableObject registry of benchmark cases (FBX + LOD path + expected ranges). Create via `Assets → Create → Mesh Lab → Sweep Test Suite`. | +| `SweepRunner` / `BenchmarkRunner` | `Editor/Bench/SweepRunner.cs`, `Editor/Bench/BenchmarkRunner.cs` | The sweep and the multi-model benchmark as libraries: matrix → cells, per-cell pipeline runs through an `ISweepHost` / `IBenchmarkHost` (the tab implements them), artefact routing, aggregate, manifest, archive. Any tool with an end-to-end pipeline can host them. | +| `TestSuiteAsset` | `Editor/Bench/TestSuiteAsset.cs` | ScriptableObject registry of benchmark cases (FBX + LOD path + expected ranges). Create via `Assets → Create → Mesh Lab → Sweep Test Suite`. | ## Metrics (one CSV row per mesh × LOD) diff --git a/Editor/Bench.meta b/Editor/Bench.meta new file mode 100644 index 00000000..023dc66d --- /dev/null +++ b/Editor/Bench.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a354896b9cc44bba61431c9dfcd683b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/BenchmarkRecorder.cs b/Editor/Bench/BenchmarkRecorder.cs similarity index 100% rename from Editor/BenchmarkRecorder.cs rename to Editor/Bench/BenchmarkRecorder.cs diff --git a/Editor/BenchmarkRecorder.cs.meta b/Editor/Bench/BenchmarkRecorder.cs.meta similarity index 100% rename from Editor/BenchmarkRecorder.cs.meta rename to Editor/Bench/BenchmarkRecorder.cs.meta diff --git a/Editor/Bench/BenchmarkRunner.cs b/Editor/Bench/BenchmarkRunner.cs new file mode 100644 index 00000000..7b688716 --- /dev/null +++ b/Editor/Bench/BenchmarkRunner.cs @@ -0,0 +1,201 @@ +// BenchmarkRunner.cs — the multi-model benchmark as a library: every case of a +// TestSuiteAsset spawned from its FBX, its LODGroup bound on the host, every enabled +// technique run into one per-case directory (legacy/ for the parameter sweep, hier/ +// for the hierarchical probe, repack dry-run and Stage D sweep), the spawn destroyed +// and the operator's own LODGroup restored whatever happens. +using System; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SashaRX.UnityMeshLab +{ + /// A sweep host that can also be pointed at another LODGroup for the duration of a case. + internal interface IBenchmarkHost : ISweepHost + { + /// Binds the host (context and tab) to ; null unbinds. + void Bind(LODGroup lodGroup); + } + + internal static class BenchmarkRunner + { + /// + /// Runs every case of with every technique in + /// `suite.techniques`. Artefacts land under + /// `BenchmarkReports/bench_<stamp>/<idx>_<label>/{legacy,hier}/`. + /// Returns the number of cases that produced anything. + /// + internal static int Run(IBenchmarkHost host, TestSuiteAsset suite) + { + var ctx = host?.Context; + if (ctx == null || suite == null || suite.sweep == null) return 0; + if (suite.cases == null || suite.cases.Count == 0) + { + UvtLog.Warn(UvtLog.Category.Benchmark, "[Bench] Suite has no cases — nothing to do."); + return 0; + } + var tech = suite.techniques ?? new TestSuiteAsset.BenchTechniques(); + if (!tech.legacyXatlasSweep && !tech.hierarchicalProbe && !tech.hierarchicalRepack && !tech.stageDSweep) + { + UvtLog.Warn(UvtLog.Category.Benchmark, "[Bench] All techniques disabled in suite.techniques — nothing to do."); + return 0; + } + + // The operator's LODGroup comes back at the end. Working copies on it are put + // back first (AGENTS.md LODGroup-lifecycle invariant): a Refresh with repacked + // meshes still assigned would adopt them as the baseline. + var origLodGroup = ctx.LodGroup; + if (origLodGroup != null) host.ResetWorkingCopies(); + + string runStamp = SweepRunner.Stamp(); + string benchRunDir = Path.Combine(SweepRunner.ReportsRoot(), $"bench_{runStamp}"); + Directory.CreateDirectory(benchRunDir); + + int caseCount = suite.cases.Count; + int doneCases = 0; + bool cancelled = false; + UvProgress.Begin($"Benchmark ({caseCount} models)", cancelable: true); + try + { + for (int ci = 0; ci < caseCount; ci++) + { + if (UvProgress.CancelRequested) { cancelled = true; break; } + var tc = suite.cases[ci]; + if (tc == null || tc.fbxAsset == null) { UvtLog.Warn(UvtLog.Category.Benchmark, $"[Bench] Case {ci}: null FBX, skipping."); continue; } + string fbxPath = AssetDatabase.GetAssetPath(tc.fbxAsset); + if (string.IsNullOrEmpty(fbxPath)) { UvtLog.Warn(UvtLog.Category.Benchmark, $"[Bench] Case {ci} '{tc.label}': asset has no project path, skipping."); continue; } + var prefabRoot = AssetDatabase.LoadAssetAtPath(fbxPath); + if (prefabRoot == null) { UvtLog.Warn(UvtLog.Category.Benchmark, $"[Bench] Case {ci} '{tc.label}': '{fbxPath}' is not a GameObject prefab, skipping."); continue; } + + UvProgress.Report((float)ci / caseCount, $"case {ci + 1}/{caseCount}: {tc.label} ({Path.GetFileName(fbxPath)})"); + + GameObject spawned = null; + try + { + spawned = (GameObject)PrefabUtility.InstantiatePrefab(prefabRoot); + if (spawned == null) { UvtLog.Error(UvtLog.Category.Benchmark, $"[Bench] Case {ci} '{tc.label}': InstantiatePrefab returned null, skipping."); continue; } + spawned.name = $"[Bench] {tc.label}"; + // A transient spawn must not dirty the scene or survive a save. + spawned.hideFlags = HideFlags.DontSave; + + var lg = FindLodGroup(spawned, tc.lodGroupPath); + if (lg == null) { UvtLog.Warn(UvtLog.Category.Benchmark, $"[Bench] Case {ci} '{tc.label}': no LODGroup found under '{fbxPath}', skipping."); continue; } + host.Bind(lg); + + // Case index prefix keeps two labels that sanitize alike apart. + string safeLabel = SweepRunner.SanitizeForPath(string.IsNullOrEmpty(tc.label) ? lg.name : tc.label); + string caseDir = Path.Combine(benchRunDir, $"{ci:D2}_{safeLabel}"); + Directory.CreateDirectory(caseDir); + if (RunTechniques(host, lg, tech, suite.sweep, caseDir, ci, tc.label)) doneCases++; + } + catch (Exception ex) + { + UvtLog.Error(UvtLog.Category.Benchmark, $"[Bench] Case {ci} '{tc.label}' threw: {ex.Message}"); + } + finally + { + if (spawned != null) + { + // Put the working copies back and unbind BEFORE the spawn goes, or + // the last cell's temporary meshes leak (they are clones, not + // children of the spawn). IsChildOf covers a LODGroup on a + // descendant and on the root itself. + if (ctx.LodGroup != null && ctx.LodGroup.transform.IsChildOf(spawned.transform)) + { + host.ResetWorkingCopies(); + host.Bind(null); + } + UnityEngine.Object.DestroyImmediate(spawned); + } + } + if (UvProgress.CancelRequested) { cancelled = true; break; } + } + } + finally + { + if (cancelled) UvProgress.Cancel(); else UvProgress.End(); + host.Bind(origLodGroup); + string techList = string.Join("+", new[] + { + tech.legacyXatlasSweep ? "legacy" : null, tech.hierarchicalProbe ? "probe" : null, + tech.hierarchicalRepack ? "repack" : null, tech.stageDSweep ? "stageDsweep" : null, + }.Where(s => s != null)); + UvtLog.Info(UvtLog.Category.Benchmark, + $"[Bench] complete: {doneCases}/{caseCount} cases [{techList}]" + (cancelled ? " (cancelled)" : "") + + $". Per-case dirs: BenchmarkReports/bench_{runStamp}/_

JDJ2NF6}aXnG)I&41itV>rq^>s{JxU$(e-7 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

  • {html.escape(m)}