Releases: VictoryLuode/Blender-CoatLink
Release list
CoatLink v1.18.0
Install
- Blender - download
CoatLink-1.18.0.zip, then Edit ▸ Preferences ▸ Add-ons ▸ ▾ (top right)
▸ Install from Disk…, enable CoatLink and press Detect in its menu. - 3D-Coat - download
CoatLink-1.18.0.3dcpack, then use Scripts ▸ Install Extension inside
3D-Coat, tick CoatLink once under Windows ▸ Panels ▸ Extensions, and restart.
Windows only. Blender 4.2+ and 3D-Coat 2025.12+ (checked against 2025.17).
In this release
- The 3D-Coat half is installed by 3D-Coat itself now, from a
.3dcpack- nothing to unzip, no
console, no path to edit, no script Windows has to be persuaded to run, and no elevation prompt:
nothing is written outside 3D-Coat's own user folder. The extension writes its own menu entry
and tool buttons on its first start, with the paths of your machine, and moves an install of an
older build aside (Scripts\CoatLinkbecomesScripts\CoatLink.removed) instead of deleting
anything of yours. - The button icons are gone, by choice - an icon has to be written into 3D-Coat's program
folder, which needs administrator rights. - One name everywhere: CoatLink. The previous build was
CoatBridgeon the 3D-Coat side and
coat_bridgein Blender; both installers clean the old names away as they go. - The Blender top-bar button is drawn like the buttons next to it, instead of as a flat
popover. - Every download carries the version in its name -
CoatLink-1.18.0.zipfor Blender and
CoatLink-1.18.0.3dcpackfor 3D-Coat. The old whole-project archive is gone: GitHub attaches
its own source archives to every release.
Upgrading from the CoatBridge build: enable CoatLink once and press Detect - the links
between your objects and the models they came from survive.
v1.17.1 - install anywhere, complete one-click install
Install anywhere, and one double-click is the whole install.
Install (3D-Coat half)
Download CoatLink-Setup.cmd and double-click it. That is all: it fetches the installer from
this release, runs it with the Python 3D-Coat itself ships, and keeps the window open so you can
read what it did. Nothing to unzip, no console, no path to edit. If 3D-Coat sits under
C:\Program Files the button icons need administrator rights - it asks Windows for elevation once
and runs the installer again, so even the icons arrive from that one double-click. Without
elevation everything except the icons still installs.
Blender half and the other doors (CoatLink-Setup.py, the one console line, install.cmd,
install.sh, install.ps1) are in the README.
What is new in 1.17.1
- 3D-Coat does not have to be in
C:\Program Files, and not onC:. The program folder is
read from the uninstall entries Windows keeps - any install location, any drive - then from the
Program Files folders this system actually spells, then from every drive the machine has, then
from the per-userAppDatalocations. A folder withoutdata\is never taken for an install. - Documents redirected to OneDrive no longer breaks the install. 3D-Coat keeps its data folder
and the Python it ships inside Documents, and every door assumed
%USERPROFILE%\Documents- so on a redirected machine they said "No Python found" next to a
working install. The folder now comes from Windows itself, and a candidate that really holds
3DCoatwins over the order.COATLINK_DOCS,COATLINK_PYTHONandCOATLINK_COAT_DIRname
any of them outright when even that is not enough. - No
.3dcpackis shipped, and that is measured rather than assumed: a pack cannot register a
working menu entry (everyExtraMenuItemsXML needs an absolute script path - env vars,~/
and paths relative to the user folder were all tried in a live 3D-Coat and all failed) and it
cannot register an extension either (acExtensionnot listed incExtensions/startup.txtis not
loaded). A pack would end with "now run this script once" - one step more than this file.
Details in docs/install.md.
Verified
- Blender side and 3D-Coat side suites green; two new suites: install-location detection
(registry, alternate drives, redirected Documents, "nothing found means None") and a door test
that runs the realinstall.cmdagainst a redirected Documents folder and checks which Python it
picked from its own output. - The assets below are the tag's own files, byte for byte.
Known limitations
- The button icons are the only part that needs administrator rights; without them the tool buttons
use 3D-Coat's default icons. - Only absolute script paths work in 3D-Coat's menu XMLs (measured, above).
- Auto-receive polls the exchange folder; 3D-Coat consumes a job when it is the active window.
Full changelog: CHANGELOG.md
CoatLink v1.17.0
One version number, and one double-click to install the 3D-Coat half.
What is new
- The add-on, the 3D-Coat scripts and this release now carry the same version. A release
used to bev1.16.37while Blender's add-on list said1.10.29and the panel said1.4.5,
so "which build are you running?" had three answers. They move together from here. - Installing the 3D-Coat half is now one download and one double-click:
CoatLink-Setup.cmd. It fetches the single-file installer from the latest release, runs it
with the Python 3D-Coat itself ships, and keeps the window open so you can read what it did.
No unzip, no console, no path to edit. It installs nothing by itself - it runs the same
installer every other door runs (read it: it is 40 lines). - Prefer the console?
CoatLink-Setup.pyis in this release too, and the README has a
one-line URL paste for Scripts > Show Python console that needs no download at all. - Everything else is the same as
v1.16.37: the audit round that fixed modifier ownership, the
Modifiersswitch, hidden-branch conversion and the after-import diagnostics;To voxels
pressing 3D-Coat's own S/V badge and accepting its dialog; remesh-on-send with voxel size and
adaptivity; the panel's queue line and mode summary; one installer behind every door; the
documentation split, with screenshots of both halves.
Install
- Blender -
coat_bridge.zipbelow: Edit > Preferences > Add-ons > ▾ > Install from Disk…,
then enable CoatLink and press Detect. - 3D-Coat -
CoatLink-Setup.cmdbelow, double-clicked. (Or unzipBlender-CoatLink-v1.17.0.zip
and runinstall.cmdfor the same result.) - Removing it again:
install.cmd --uninstall,.\install.ps1 -Uninstall,
./install.sh --uninstall, orpython coat_side/CoatLinkInstall.py --uninstall.
Known limitations
- The
[vox]import mode is asked for, not guaranteed. 3D-Coat's own log shows it reading the
line, but on the build this was developed against the model still arrives in surface mode (S in
the Sculpt Tree).To voxelsin the panel is the reliable route; the cause has not been
identified. - No live round trip has been run on this release. Both suites run headless against a
stand-in host;tests/live_roundtrip.shexists for a real one and records the exact job file it
wrote. - The reduction percentage is an estimate,
To voxelsaccepts the conversion dialog's
defaults (so one object cannot be skipped mid-run), and button icons need one elevated run when
3D-Coat lives underC:\Program Files. - Why not a
.3dcpack: 3D-Coat's extension packs install files relative to the user folder, but
everyExtraMenuItemsXML has to carry an absolute script path, and the Scripts menu does
not list the Scripts folder - so a pack would still need one script run without saving a step.
Measured, not assumed.
GPL-3.0-or-later.
CoatLink v1.16.37
Everything that landed since v1.16.20, in one release.
Install
Three ways, all landing the same files: CoatLink-Setup.py (one file, paste into 3D-Coat's
Python console or run with any Python), install.cmd / install.sh / install.ps1, or the
coat_bridge.zip below via Blender's Install from Disk. The installer detects both
folders, prints where it put things, and uninstalling takes back exactly what it added.
New in this release, the installer is the same code behind all four doors, checked by a
test that installs with each into a throwaway tree and byte-compares the results.
Menus
- Blender's top bar holds one
CoatLinkbutton; every setting lives inside its popover.
The 3D-Coat panel uses the same order and the same words, and nothing is behind a
fold-out on either side. To voxelsconverts every visible object in the Sculpt Tree (leaves only, hidden
branches skipped), and now presses 3D-Coat's own S/V badge - the button in a tree row
whose tooltip is "transform surface to voxel representation" - accepting the dialog it
raises, so a whole scene converts from one click. If the badge does nothing for an
object, the code falls back to the API, so it never silently does nothing.SendandPullare the only actions in the main group;Setupholds axis, scale,
modifiers, skip-dialogs, detect, folder, launch and unlink.Statusreports the last
action, andCopy detailscopies it (with the paths) to the clipboard.
Send and pull
- Scope: the selected tree node plus its subtree, or every visible object.
- Blender can voxel-remesh the exported copy only -
Remesh on send,Voxel size
(0 = auto) andAdaptivity; the scene, object names and your own modifiers are untouched. - A pull keeps object names, materials and position, and follows objects you renamed.
- Both sides write a receipt of what they received, so the status line can say
"3D-Coat received: ...". - Duplicate returns are handled: two exchange roots, delayed mirror signals and restarts are
all de-duplicated, with a persistent record in the exchange folder. - The 3D-Coat panel reports what is waiting (
Queue: bridge.obj waiting - press Pull) and
how much of the tree is still in surface mode, on demand.
Fixes worth naming
- A temporary remesh modifier is removed by identity: a modifier of yours that happened
to share its name is no longer deleted, and nothing is left behind. - The
Modifiersswitch is honoured explicitly - omitting it used to restore the exporter's
own default - and your modifiers are restored even if the export fails. To voxelsno longer converts objects inside a hidden parent, and leaves geometry alone
when visibility cannot be determined.- Import diagnostics report evidence: an undated or missing record says "not confirmed",
never "3D-Coat did not run it". - The PowerShell installer picked the newest Blender numerically (5.10 over 5.9).
- Uninstalling clears the launcher record, so a reinstall gets its menu entry back.
- Release archives are now built with pinned line endings, so what you download is
byte-for-byte what the repository holds.
Known limitations
- The
voximport mode is asked for, not guaranteed. Blender writes[vox]and
3D-Coat's log shows it reading that line, but on the build this was developed against the
model still arrives in surface mode.To voxelsin the panel is the reliable route; the
cause has not been identified. - No live round trip has been run on this release. The 3D-Coat side is covered by tests
against a fake host and the Blender side by headless runs;tests/live_roundtrip.shexists
for a real one with both applications open. - The reduction percentage is an estimate: the panel writes the same slider 3D-Coat's own
scripts write, but whether every AppLink export path honours it is untested. - Button icons need an elevated run when 3D-Coat lives under
C:\Program Files; without it
they are skipped and reported, and the buttons simply use their default icons. - The sculpt-tree face count was reported to climb while the panel was open. The redraw path
is proven side-effect free (500 idle redraws, no host calls, no file access) and the
statistics are manual, but the live cause was never reproduced.
GPL-3.0-or-later.
v1.16.20 — CoatLink: Blender ↔ 3D-Coat
CoatLink — a small, predictable Blender ↔ 3D-Coat model bridge.
First public release. Models only: no baking, no texture nodes, no scene surgery.
Install in two steps
- Blender — download
coat_bridge.zipbelow, then
Edit > Preferences > Add-ons > ▾ (top right) > Install from Disk…, pick the zip,
enable CoatLink, press Detect. - 3D-Coat — unzip the source archive and run
.\install.ps1(Windows
PowerShell: no bash, no git needed) or./install.sh, then restart 3D-Coat and
look for Scripts > CoatLink.
Prefer copying files by hand? The README lists the exact five destinations.
What you get
- Blender: a
CoatLinkmenu in the top bar withSendandPullright beside it. - 3D-Coat: three tool buttons at the end of the Sculpt/Paint tool lists, plus a
panel opened withScripts > CoatLink— 3D-Coat's own dialog, so no extra window,
no Qt, nothing outside the program. - One exchange folder, one fixed file name per direction, three files written by
the bridge. Models go out as OBJ and come back as OBJ, so there is exactly one
axis rule and one unit rule. - Units, the
SwapYZaxis and the reduction percentage are read from 3D-Coat and
applied for you. Names, materials and the rest of your scene are never touched. - 3D-Coat's own AppLink can stay enabled: the bridge only touches its own
BlenderBridgefolder and leaves foreign signals alone.
Verified on this release
- Blender side: main suite 113/113, eight regression scripts, both installer
smoke tests — the PowerShell installer is proven to land byte-identical files to
the bash one, XML included. - 3D-Coat side: logic 103/103, tools 29/29, API-name check against the
shipped.pyistubs, idle-redraw check, install smoke test. - No 3D-Coat and no Blender GUI needed to run any of it.
Known limitations — please read
- The face count in 3D-Coat's sculpt tree was reported to climb while the CoatLink
panel is open. The panel's redraw path is proven side-effect free (1000 simulated
idle redraws, no host calls, no file access) and its statistics are manual
(RefreshStats), but the live cause is not identified. If you see it, close the
panel; nothing else in the bridge depends on it. - The reduction percentage is not verified end to end. It is written into
3D-Coat's own decimation slider and labelled an estimate in the panel. - Receipts only cover imports that go through the bridge — 3D-Coat's own AppLink
auto-import bypasses them, and the bridge does not pretend otherwise. - Windows-oriented. Both installers and the test scripts assume Windows paths;
the Blender add-on itself is OS-independent. - Subtree-scoped export exists on the
parked/subtree-scoped-panelbranch and is
deliberately not shipped, because its grouping, positions and units were never
verified on a live round trip.
License: GPL-3.0-or-later.