Metadata-Version: 2.4
Name: PyVRML97
Version: 2.4.0a3
Summary: VRML97 Scenegraph model for Python
Author-email: "Mike C. Fletcher" <mcfletch@vrplumber.com>
License: BSD-style, see license.txt for details
Project-URL: Homepage, http://pyopengl.sourceforge.net/context/
Keywords: VRML,VRML97,scenegraph
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: C
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
Classifier: Intended Audience :: Developers
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
Requires-Dist: numpy
Requires-Dist: PyDispatcher
Requires-Dist: simpleparse>=3.0.0a3

PyVRML97 Scenegraph Model
==========================

PyVRML97 is the scenegraph model from `OpenGLContext`_ but can be used separately
in VRML97 processing tools. It relies on `SimpleParse`_, `PyDispatcher`_ and `Numpy`_
to provide the basic modelling functionality.

Properties (fields) in PyVRML97 follow the "Observer" pattern, and PyVRML97 
provides a cache mechanism that allows you to do cache invalidation when 
setting properties (fields). OpenGLContext uses that extensively to 
optimize the rendering process.

``vrml.x3d`` holds the X3D 4.1 vocabulary as PyVRML97 nodes, generated from
Web3D's X3D Unified Object Model, with VRML97 and earlier X3D versions read
as dialects of it. ``vrml.x3d.load`` and ``dump`` read and write the XML,
ClassicVRML, JSON and VRML97 encodings. `docs/x3d.rst`_ describes it.

.. _`docs/x3d.rst`: docs/x3d.rst
.. _`OpenGLContext`: https://pypi.python.org/pypi/OpenGLContext
.. _`SimpleParse`: https://pypi.python.org/pypi/SimpleParse
.. _`PyDispatcher`: https://pypi.python.org/pypi/PyDispatcher
.. _`Numpy`: https://pypi.python.org/pypi/numpy

`RELEASE-NOTES-2.3.5.md`_ says what changed for a program using this release,
including the two behaviour changes a caller may need to act on:
``transformmatrix.orthoMatrix`` is transposed, and ``Node.copy()`` copies the
whole subtree.

.. _`RELEASE-NOTES-2.3.5.md`: RELEASE-NOTES-2.3.5.md

Installation
-------------

It isn't common to directly install PyVRML97 itself (normally you want to 
install it as part of installing OpenGLContext), but should you wish to, you
can install via::

    $ pip install PyVRML97 PyVRML97_accelerate

The PyVRML97_accelerate module requires that you have a working compiler
(or, if you are on Windows, prebuilt wheels likely are available).
It is optional: without it the pure-Python field is used. An accelerator that
is installed but fails to load, as when it was built against another numpy,
leaves the pure-Python field in place and logs a warning with the error on the
``vrml.field`` logger.

.. image:: https://ci.appveyor.com/api/projects/status/MikeCFletcher/pyvrml97/branch/master
    :target: https://ci.appveyor.com/project/MikeCFletcher/pyvrml97
    :alt: Appveyor Build

.. image:: https://img.shields.io/pypi/v/pyvrml97.svg
    :target: https://pypi.python.org/pypi/pyvrml97
    :alt: Latest PyPI Version

.. image:: https://img.shields.io/pypi/dm/pyvrml97.svg
    :target: https://pypi.python.org/pypi/pyvrml97
    :alt: Monthly download counter

Build/Release Process 
----------------------

* Push an annotated tag with `version` prefix (github workflow `build_and_publish.yml`)
