Blender (blender-nozzle)
blender-nozzle is a Blender addon for GPU texture sharing via nozzle.
Status
Early development. Functional sender (GL texture publish) and receiver (pixel copy to Blender image).
Requirements
- Blender 3.0+
- macOS 12+ / Windows 10+ / Linux
- CMake 3.20+
- C++17 compiler
Build
The native extension wraps the nozzle C ABI into a Python module.
git clone --recurse-submodules [email protected]:nozzle-io/blender-nozzle.git
cd blender-nozzle
export BLENDER_PYTHON_PATH=/Applications/Blender.app/Contents/Resources/python
python3 build.py
This builds _nozzle_native.so (or .pyd on Windows) and copies it into nozzle_blender/.
Installing in Blender
- Build the native module (see above)
- In Blender: Edit → Preferences → Add-ons → Install…
- Select the
nozzle_blender/directory (the folder containing__init__.py) - Enable the “Nozzle Texture Sharing” addon
Usage
Sender (Blender → other apps)
- In the 3D viewport sidebar (N key), find the Nozzle tab
- Set a sender name and resolution
- Click Start Sender
- Other nozzle receivers can now connect using that name
Receiver (other apps → Blender)
- Click Refresh to discover available senders
- Select a sender and click Start Receiver
- Received frames appear as
__nozzle_received__image in Blender
Architecture
nozzle_blender/ Blender addon (Python)
├── __init__.py Registration, bl_info
├── operators.py Send/Receive operators
├── properties.py Addon properties
├── panels.py UI panels (View3D sidebar)
└── engine.py Texture capture & receive logic
src/
└── _nozzle_module.c Python C extension wrapping nozzle C ABI
nozzle/ git submodule (nozzle library)
The addon uses a two-layer approach:
- Native C extension (
_nozzle_native): wraps the nozzle C ABI, manages handles - Blender addon (Python): uses
gpu.offscreenfor capture,bpy.data.imagesfor display