wip(assembler): M2 round 1 -- sharp-mesher spike: hybrid MC+DC keeps edges, borders and LOD seams not solved yet
Standalone only. Hybrid/DC cut sharp residual 16.7 -> 6.25 cm and split creases ~100%, organic wall unchanged under hybrid, +4.4% mesh cost, W1/W8/W16 identical. Gate failed: hybrid open edges on 500/625 tagged tile borders; every method fails LOD0/LOD1 (no transition templates yet). Binaries and OBJ meshes not committed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
61633cb492
commit
6953254349
31 files changed
+5627
No files matched your search
@@ -0,0 +1,53 @@
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$WorkDir = [IO.Path]::GetFullPath($PSScriptRoot)
|
||||
$Python = (Get-Command python.exe -ErrorAction Stop).Source
|
||||
$Script = Join-Path $WorkDir 'RenderSharpMesherCaptures.py'
|
||||
$Stdout = Join-Path $WorkDir 'render.stdout.log'
|
||||
$Stderr = Join-Path $WorkDir 'render.stderr.log'
|
||||
$Runner = Get-Process -Id $PID
|
||||
$Runner.PriorityClass = 'BelowNormal'
|
||||
$Runner.ProcessorAffinity = [IntPtr]0xFF00
|
||||
|
||||
$Info = [Diagnostics.ProcessStartInfo]::new()
|
||||
$Info.FileName = $Python
|
||||
$Info.Arguments = ('"{0}"' -f $Script)
|
||||
$Info.WorkingDirectory = $WorkDir
|
||||
$Info.UseShellExecute = $false
|
||||
$Info.CreateNoWindow = $true
|
||||
$Info.RedirectStandardOutput = $true
|
||||
$Info.RedirectStandardError = $true
|
||||
$Process = [Diagnostics.Process]::new()
|
||||
$Process.StartInfo = $Info
|
||||
if (-not $Process.Start()) { throw 'Could not start capture renderer.' }
|
||||
$Process.PriorityClass = [Diagnostics.ProcessPriorityClass]::BelowNormal
|
||||
$Process.ProcessorAffinity = [IntPtr]0xFF00
|
||||
$StartAt = [DateTime]::UtcNow
|
||||
$OutputTask = $Process.StandardOutput.ReadToEndAsync()
|
||||
$ErrorTask = $Process.StandardError.ReadToEndAsync()
|
||||
$TimedOut = $false
|
||||
$OverMemory = $false
|
||||
$EightGB = 8L * 1024L * 1024L * 1024L
|
||||
while (-not $Process.HasExited) {
|
||||
$Process.Refresh()
|
||||
if ($Process.PrivateMemorySize64 -ge $EightGB) { $OverMemory = $true; break }
|
||||
if (([DateTime]::UtcNow - $StartAt).TotalSeconds -ge 900) { $TimedOut = $true; break }
|
||||
Start-Sleep -Milliseconds 250
|
||||
}
|
||||
if ($TimedOut -or $OverMemory) { try { $Process.Kill() } catch {} }
|
||||
$Process.WaitForExit()
|
||||
$RenderStdout = $OutputTask.GetAwaiter().GetResult()
|
||||
$RenderStderr = $ErrorTask.GetAwaiter().GetResult()
|
||||
[IO.File]::WriteAllText($Stdout, $RenderStdout)
|
||||
[IO.File]::WriteAllText($Stderr, $RenderStderr)
|
||||
if ($TimedOut) { throw "Capture rendering exceeded 15 minutes. Logs: $Stdout / $Stderr" }
|
||||
if ($OverMemory) { throw "Capture renderer reached the 8 GB private-memory cap. Logs: $Stdout / $Stderr" }
|
||||
if ($Process.ExitCode -ne 0) {
|
||||
Write-Output "Capture rendering failed exit_code=$($Process.ExitCode) stdout=$Stdout stderr=$Stderr"
|
||||
if ($RenderStdout) { Write-Output $RenderStdout }
|
||||
if ($RenderStderr) { Write-Output $RenderStderr }
|
||||
throw 'Matched capture rendering failed.'
|
||||
}
|
||||
Write-Output "Capture render passed elapsed_seconds=$([Math]::Round(([DateTime]::UtcNow - $StartAt).TotalSeconds,2)) priority=BelowNormal affinity=0xFF00 stdout=$Stdout stderr=$Stderr"
|
||||
Reference in new issue
Block a user