2025-09-19
Biochemist & Biophysicist turned 3D Animator
2022 talk about Visualising Viruses
pypi.org
databpy
# set the x component for the first 10 verts to 1.0
obj["position"][:10, 0] = 1.0
# add 1 to x, 2 to y, 3 to z component of position
obj["position"] += np.array([1, 2, 3])
# infers data types for storage and retrieval
obj["att_name"] = np.zeros(len(obj), dypte=int)
obj["att_name"]
# get and set attributes on non-point domains
obj.store_named_attribute(
data=np.zeros((len(bob), 4, 4), dtype=float),
name="a_matrix",
domain=db.AttributeDomains.FACE
)
obj.named_attribute()
bpy
installed via pip
for automated pipelines.whl
files with extensionCheck out Spencer’s talk on testing add-ons:
name: tests
on:
push:
branches: ["main"]
pull_request:
branches: ["*"]
jobs:
blender:
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 4
fail-fast: false
matrix:
version: ["4.5", "daily"]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: BradyAJohnston/setup-blender@v4
with:
version: ${{ matrix.version }}
- name: Install in Blender
run: |
blender -b -P tests/python.py -- -m pip install ".[test]"
- name: Run Tests
run: |
blender -b -P tests/run.py -- -vv tests --cov --cov-report=xml
- name: Expose coverage as a CI download
uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-latest' && matrix.version == '4.2.5'
with:
name: coverage.xml
path: coverage.xml
- name: Upload coverage reports to Codecov
if: matrix.os == 'ubuntu-latest'
uses: codecov/codecov-action@v3
Tests are run daily on MacOS, Windows & Linux against the latest alpha builds from Blender.
BLENDER_EEVEE_NEXT
renamed to BLENDER_EEVEE
#855use_nodes
#971Set Curve Resolution
not updating datablock #141721bpy.data.materials.new()
starts with empty node tree (not BSDF + Output) #980.zip
of the repo and install.zip
and create a GitHub release - users download from release page and check back for updatesindex.json
somewhere accessible on the network which points to files, allows automatic updatesindex.json
and files all on GitHub
github.com/BradyAJohnston/monkeymadness
name: Download Release Files
on:
push:
branches: ["main"]
schedule:
- cron: '0 0 * * *'
jobs:
build-website:
runs-on: macos-latest
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: quarto-dev/quarto-actions/setup@v2
- uses: bradyajohnston/setup-blender@v4
with:
version: latest
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
version: "latest"
- name: Get Release Assets
run: |
uv run --with requests scripts/download.py
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Generate index.json
run: |
blender --command extension server-generate --repo-dir=repo
- name: Quarto Render
run: |
uv run --with pyyaml quarto render
- name: Publish to GitHub Pages (and render)
uses: quarto-dev/quarto-actions/publish@v2
with:
target: gh-pages
path: .
render: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Details and built: https://bradyajohnston.github.io/extensions/ Subscribe with:
Package for building, maintaining and releasing extensions
@bradyajohnston
everywhere