Skip to content

Python library for MVR (My Virtual Rig) which is part of GDTF

License

Notifications You must be signed in to change notification settings

open-stage/python-mvr

Repository files navigation

python-mvr

Python library for MVR (My Virtual Rig). MVR is part of GDTF (General Device Type Format)

MVR specification as per https://gdtf.eu/mvr/prologue/introduction/

See source code for documentation. Naming conventions, in general, are identical to that on the GDTF, CamelCase is replaced with underscore_delimiters.

Source code

PyPi page

Pytest

Check links in markdown

Installation

pip install pymvr

To install latest version from git via pip:

python -m pip install https://codeload.github.com/open-stage/python-mvr/zip/refs/heads/master

Usage

Reading

import pymvr
mvr_scene = pymvr.GeneralSceneDescription("mvr_file.mvr")

for layer_index, layer in enumerate(mvr_scene.layers):
    ... #process data

Writing

fixtures_list = []
mvr = pymvr.GeneralSceneDescriptionWriter()
pymvr.UserData().to_xml(parent=mvr.xml_root)
scene = pymvr.SceneElement().to_xml(parent=mvr.xml_root)
layers = pymvr.LayersElement().to_xml(parent=scene)
layer = pymvr.Layer(name="Test layer").to_xml(parent=layers)
child_list = pymvr.ChildList().to_xml(parent=layer)

fixture = pymvr.Fixture(name="Test Fixture")  # not really a valid fixture
child_list.append(fixture.to_xml())
fixtures_list.append((fixture.gdtf_spec, fixture.gdtf_spec))

pymvr.AUXData().to_xml(parent=scene)

mvr.files_list = list(set(fixtures_list))
mvr.write_mvr("example.mvr")

See BlenderDMX and tests for reference implementation.

Status

  • Reading:

    • Address
    • Alignment
    • AUXData
    • ChildList
    • Class
    • Connection
    • CustomCommand
    • Data
    • Fixture
    • FocusPoint
    • Geometries
    • Geometry3D
    • Gobo
    • GroupObject
    • Layer
    • Mapping
    • Overwrite
    • Position
    • Projector
    • Protocol
    • SceneObject
    • Sources
    • Support
    • Symbol
    • Symdef
    • Truss
    • UserData
    • VideoScreen
  • Writing:

    • Fixture
    • Focus point
    • creating MVR zip file

Development

Typing

  • At this point, the --no-strict-optional is needed for mypy tests to pass:
mypy pymvr/*py  --pretty  --no-strict-optional

Format

  • to format, use ruff

Testing

  • to test, use pytest
  • to test typing with mypy use:
pytest --mypy -m mypy pymvr/*py

About

Python library for MVR (My Virtual Rig) which is part of GDTF

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages