灵符lingfu

lingmodeler

↓ 0 downloads

LingModeler: box modeling with quads and tris, rigging + weight painting, 2D vector illustration and animation, procedural textures and game assets; .lmesh / .ling native formats, OBJ, glTF and SVG import / export

Windows · x86-64Linux · x86-64LingOS · x86-64LingOS · Pi 5 ARM64Web · WASM
Keywords 3d, modeling, vector, svg, gltf, obj, rigging, animation, textures, ling
lingfu install lingmodeler
LicenseApache-2.0 OR MIT
Authorsling-lin
READMECode / FilesVersionsDependency GraphDependentsSecurityBuildsSettings

Code / Files (67)

tools/build_desktop.ps1
# Build a portable LingModeler for Windows: dist\LingModeler-win64\LingModeler.exe + ling\ + assets\ + examples\ (and a .zip).
#   powershell -File tools\build_desktop.ps1             (uses ..\ling\target\release\ling.exe, or ling on PATH)
# The exe is a small launcher with the Ling interpreter built in (LING_APP_INTERP); it runs ling\main.ling next to it,
# so the app can be patched without rebuilding. Static C runtime: no DLLs or VC++ redistributable needed.
param([string]$Ling = "", [switch]$SkipBuild)
$ErrorActionPreference = "Stop"
$root = Split-Path -Parent $PSScriptRoot
Set-Location $root
if ($Ling -eq "") {
    $Ling = Join-Path $root "..\ling\target\release\ling.exe"
    if (-not (Test-Path $Ling)) { $Ling = "ling" }
}
if (-not $SkipBuild) {
    $env:LING_APP_INTERP = "ling"
    $env:RUSTFLAGS = "-C target-feature=+crt-static"
    & $Ling build . --platform win --out dist
    if ($LASTEXITCODE -ne 0) { throw "ling build failed" }
}
$exe = Get-ChildItem dist\windows -Filter *.exe | Select-Object -First 1
if (-not $exe) { throw "no exe in dist\windows" }
$stage = Join-Path $root "dist\LingModeler-win64"
if (Test-Path $stage) { Remove-Item -Recurse -Force $stage }
New-Item -ItemType Directory -Force $stage | Out-Null
Copy-Item $exe.FullName "$stage\LingModeler.exe"
Copy-Item -Recurse ling "$stage\ling"
New-Item -ItemType Directory -Force "$stage\assets" | Out-Null
foreach ($f in "font.ttf", "icon.png", "icon.ico") { Copy-Item "assets\$f" "$stage\assets\$f" }
if (Test-Path examples) { Copy-Item -Recurse examples "$stage\examples" }
foreach ($f in "Ling.toml", "README.md", "run.bat", "LingModeler.vbs") { if (Test-Path $f) { Copy-Item $f "$stage\$f" } }
New-Item -ItemType Directory -Force "$stage\projects" | Out-Null
if (Test-Path "$stage.zip") { Remove-Item -Force "$stage.zip" }
Compress-Archive -Path $stage -DestinationPath "$stage.zip"
$mb = [math]::Round((Get-ChildItem -Recurse $stage | Measure-Object Length -Sum).Sum / 1MB, 1)
Write-Host "portable folder: $stage ($mb MB), zip: $stage.zip"

← Back to index