Mirror of ayon core so that FrameWork can fork it.
Find a file
Petr Kalis 7d94fb92c2
Fusion: new creator for image product type (#6057)
* Introduced image product type

'image' product type should result in single frame output, 'render' should be more focused on multiple frames.

* Updated logging

* Refactor moved generic creaor class to better location

* Update openpype/settings/entities/schemas/projects_schema/schema_project_fusion.json

Co-authored-by: Jakub Ježek <jakubjezek001@gmail.com>

* Change label

It might be movie type not only image sequence.

* OP-7470 - fix name

* OP-7470 - update docstring

There were objections for setting up this creator as it seems unnecessary. There is currently no other way how to implement customer requirement but this, but in the future 'alias' product types implementation might solve this.

* Implementing changes from #6060

https://github.com/ynput/OpenPype/pull/6060

* Update openpype/settings/defaults/project_settings/fusion.json

Co-authored-by: Jakub Ježek <jakubjezek001@gmail.com>

* Update server_addon/fusion/server/settings.py

Co-authored-by: Jakub Ježek <jakubjezek001@gmail.com>

* Update openpype/hosts/fusion/api/plugin.py

Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>

* OP-7470 - added explicit frame field

Artist can insert specific frame from which `image` instance should be created.

* OP-7470 - fix name and logging

Prints better message even in debug mode.

* OP-7470 - update instance label

It contained original frames which was confusing.

* Update openpype/hosts/fusion/plugins/create/create_image_saver.py

Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>

* OP-7470 - fix documentation

* OP-7470 - moved frame range resolution earlier

This approach is safer, as frame range is resolved sooner.

* OP-7470 - added new validator for single frame

* OP-7470 - Hound

* OP-7470 - removed unnecessary as label

* OP-7470 - use internal class anatomy

* OP-7470 - add explicit settings_category to propagete values from Setting correctly

apply_settings is replaced by correct value in `settings_category`

* OP-7470 - typo

* OP-7470 - update docstring

* OP-7470 - update formatting data

This probably fixes issue with missing product key in intermediate product name.

* OP-7470 - moved around only proper fields

Some fields (frame and frame_range) are making sense only in specific creator.

* OP-7470 - added defaults to Settings

* OP-7470 - fixed typo

* OP-7470 - bumped up version

Settings changed, so addon version should change too. 0.1.2 is in develop

* Update openpype/hosts/fusion/plugins/publish/collect_instances.py

Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>

* OP-7470 - removed unnecessary variables

There was logic intended to use those, deemed not necessary.

* OP-7470 - update to error message

* OP-7470 - removed unneded method

---------

Co-authored-by: Jakub Ježek <jakubjezek001@gmail.com>
Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com>
Co-authored-by: Roy Nieterau <roy_nieterau@hotmail.com>
2024-01-15 10:32:39 +01:00
.github chore(): update bug report / version 2024-01-13 03:26:00 +00:00
docs 📝 add documentation about building documentation 2023-07-11 17:48:32 +02:00
igniter do not override scale factor rounding policy if has defined value through env variable 2023-09-19 17:41:44 +02:00
openpype Fusion: new creator for image product type (#6057) 2024-01-15 10:32:39 +01:00
server_addon Fusion: new creator for image product type (#6057) 2024-01-15 10:32:39 +01:00
tests Chore: Event callbacks can have order (#6080) 2024-01-04 10:51:18 +01:00
tools Chore: PowerShell script for docker build (#5535) 2023-08-29 17:48:33 +02:00
vendor Removed submodule vendor/configs/OpenColorIO-Configs 2022-10-24 13:54:55 +02:00
website resolve conflict 2023-11-24 12:56:17 +08:00
.all-contributorsrc update .all-contributorsrc [skip ci] 2023-06-01 07:23:27 +00:00
.dockerignore changes in ignore files 2021-06-23 10:50:47 +02:00
.gitattributes Merge remote-tracking branch 'origin/develop' into 3.0/refactoring 2020-11-18 15:19:17 +01:00
.gitignore AYON: Addon settings in OpenPype (#5347) 2023-07-26 14:08:42 +02:00
.gitmodules 🧱 add unreal plugin repo as submodule 2023-05-17 12:23:24 +02:00
.hound.yml hound flake8 config moved to setup.cfg 2020-09-10 00:17:41 +02:00
.pre-commit-config.yaml 🎨 allow underscore in branch names 2023-02-07 19:37:11 +01:00
.prettierrc add prettier config 2020-12-15 15:43:55 +01:00
app_launcher.py renamed linux_app_launcher to app_launcher 2021-12-22 18:30:40 +01:00
ARCHITECTURE.md documentation: Add ARCHITECTURE.md document 2023-03-14 10:09:26 +00:00
CHANGELOG.md [Automated] Release 2024-01-12 12:59:28 +00:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-02-08 22:57:10 +01:00
conftest.py work on sphinx 2020-10-09 16:05:14 +02:00
CONTRIBUTING.md update contributing guidelines 2021-06-03 11:31:01 +02:00
Dockerfile ⬆️ update python in dockerfiles 2022-08-04 18:03:17 +02:00
Dockerfile.centos7 create symlinks for ssl libs (#5633) 2023-09-19 14:23:45 +02:00
Dockerfile.debian Change python version 2022-11-24 15:55:44 +01:00
HISTORY.md bump pyproject.toml version and changelog 2023-01-25 16:11:52 +01:00
inno_setup.iss Default create a desktop icon is checked (#5636) 2023-09-19 16:54:48 +02:00
LICENSE Update LICENSE 2020-03-17 15:56:46 +01:00
poetry.lock lower version of click to 7.1.2 to support older python versions (#5629) 2023-09-19 17:41:44 +02:00
poetry.toml pype -> openpype in tools and scripts 2021-04-01 15:02:44 +02:00
pyproject.toml [Automated] Release 2024-01-12 12:59:28 +00:00
README.md Update README.md 2023-12-13 18:32:23 +01:00
setup.cfg 🔧 fix and update pydocstyle configuration 2024-01-08 13:33:51 +01:00
setup.py Chore: Remove schema from OpenPype root (#5355) 2023-09-19 17:41:44 +02:00
start.py fix source path, not destination path (#5702) 2023-10-05 14:44:56 +02:00
test_localsystem.txt merge develop into main 2021-05-04 17:07:32 +02:00

All Contributors

OpenPype

documentation GitHub VFX Platform

Important Notice!

OpenPype as a standalone product has reach end of it's life and this repository is now used as a pipeline core code for AYON. You can read more details about the end of life process here https://community.ynput.io/t/openpype-end-of-life-timeline/877

Introduction

Open-source pipeline for visual effects and animation built on top of the Avalon framework, expanding it with extra features and integrations. OpenPype connects your DCCs, asset database, project management and time tracking into a single system. It has a tight integration with ftrack, but can also run independently or be integrated into a different project management solution.

OpenPype provides a robust platform for your studio, without the worry of a vendor lock. You will always have full access to the source-code and your project database will run locally or in the cloud of your choice.

To get all the information about the project, go to OpenPype.io

Requirements

We aim to closely follow VFX Reference Platform

OpenPype is written in Python 3 with specific elements still running in Python2 until all DCCs are fully updated. To see the list of those, that are not quite there yet, go to VFX Python3 tracker

The main things you will need to run and build OpenPype are:

  • Terminal in your OS
    • PowerShell 5.0+ (Windows)
    • Bash (Linux)
  • Python 3.9.6 or higher
  • MongoDB (needed only for local development)

It can be built and ran on all common platforms. We develop and test on the following:

  • Windows 10
  • Linux
    • Ubuntu 20.04 LTS
    • Centos 7
  • Mac OSX
    • 10.15 Catalina
    • 11.1 Big Sur (using Rosetta2)

For more details on requirements visit requirements documentation

Building OpenPype

To build OpenPype you currently need Python 3.9 as we are following vfx platform. Because of some Linux distros comes with newer Python version already, you need to install 3.9 version and make use of it. You can use perhaps pyenv for this on Linux. Note: We do not support 3.9.0 because of this bug. Please, use higher versions of 3.9.x.

Windows

You will need Python >= 3.9.1 and git. More tools might be needed for installing dependencies (for example for OpenTimelineIO) - mostly development tools like CMake and Visual Studio

Clone repository:

git clone --recurse-submodules git@github.com:ynput/OpenPype.git

To build OpenPype:

  1. Run .\tools\create_env.ps1 to create virtual environment in .\venv.
  2. Run .\tools\fetch_thirdparty_libs.ps1 to download third-party dependencies like ffmpeg and oiio. Those will be included in build.
  3. Run .\tools\build.ps1 to build OpenPype executables in .\build\.

To create distributable OpenPype versions, run ./tools/create_zip.ps1 - that will create zip file with name openpype-vx.x.x.zip parsed from current OpenPype repository and copy it to user data dir, or you can specify --path /path/to/zip to force it there.

You can then point Igniter - OpenPype setup tool - to directory containing this zip and it will install it on current computer.

OpenPype is build using CX_Freeze to freeze itself and all dependencies.

macOS

You will need Python >= 3.9 and git. You'll need also other tools to build some OpenPype dependencies like CMake and XCode Command Line Tools (or some other build system).

Easy way of installing everything necessary is to use Homebrew:

  1. Install Homebrew:

     /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. Install cmake:

    brew install cmake
    
  3. Install pyenv:

    brew install pyenv
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
    pyenv init
    exec "$SHELL"
    PATH=$(pyenv root)/shims:$PATH
    
  4. Pull in required Python version 3.9.x:

    # install Python build dependences
    brew install openssl readline sqlite3 xz zlib
    
    # replace with up-to-date 3.9.x version
    pyenv install 3.9.6
    
  5. Set local Python version:

    # switch to OpenPype source directory
    pyenv local 3.9.6
    

To build OpenPype:

  1. Run .\tools\create_env.sh to create virtual environment in .\venv
  2. Run .\tools\fetch_thirdparty_libs.sh to download third-party dependencies like ffmpeg and oiio. Those will be included in build.
  3. Run .\tools\build.sh to build OpenPype executables in .\build\

Linux

Docker

Easiest way to build OpenPype on Linux is using Docker. Just run:

sudo ./tools/docker_build.sh

This will by default use Debian as base image. If you need to make Centos 7 compatible build, please run:

sudo ./tools/docker_build.sh centos7

If all is successful, you'll find built OpenPype in ./build/ folder.

Docker build can be also started from Windows machine, just use ./tools/docker_build.ps1 instead of shell script.

This could be used even for building linux build (with argument centos7 or debian)

Manual build

You will need Python >= 3.9 and git. You'll also need curl on systems that doesn't have one preinstalled.

To build Python related stuff, you need Python header files installed (python3-dev on Ubuntu for example).

You'll need also other tools to build some OpenPype dependencies like CMake. Python 3 should be part of all modern distributions. You can use your package manager to install git and cmake.

Details for Ubuntu Install git, cmake and curl
sudo apt install build-essential checkinstall
sudo apt install git cmake curl

Note:

In case you run in error about xcb when running OpenPype, you'll need also additional libraries for Qt5:

sudo apt install qt5-default

or if you are on Ubuntu > 20.04, there is no qt5-default packages so you need to install its content individually:

sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
Details for Centos Install git, cmake and curl
sudo yum install qit cmake

Note:

In case you run in error about xcb when running OpenPype, you'll need also additional libraries for Qt5:

sudo yum install qt5-qtbase-devel
Use pyenv to install Python version for OpenPype build

You will need bzip2, readline, sqlite3 and other libraries.

For more details about Python build environments see:

https://github.com/pyenv/pyenv/wiki#suggested-build-environment

For Ubuntu:

sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

For Centos:

yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

install pyenv

curl https://pyenv.run | bash

# you can add those to ~/.bashrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# reload shell
exec $SHELL

# install Python 3.9.x
pyenv install -v 3.9.6

# change path to OpenPype 3
cd /path/to/openpype-3

# set local python version
pyenv local 3.9.6

To build OpenPype:

  1. Run .\tools\create_env.sh to create virtual environment in .\venv
  2. Run .\tools\build.sh to build OpenPype executables in .\build\

Running OpenPype

OpenPype can by executed either from live sources (this repository) or from "frozen code" - executables that can be build using steps described above.

If OpenPype is executed from live sources, it will use OpenPype version included in them. If it is executed from frozen code it will try to find latest OpenPype version installed locally on current computer and if it is not found, it will ask for its location. On that location OpenPype can be either in directories or zip files. OpenPype will try to find latest version and install it to user data directory (on Windows to %LOCALAPPDATA%\pypeclub\openpype, on Linux ~/.local/share/openpype and on macOS in ~/Library/Application Support/openpype).

From sources

OpenPype can be run directly from sources by activating virtual environment:

poetry run python start.py tray

This will use current OpenPype version with sources. You can override this with --use-version=x.x.x and then OpenPype will try to find locally installed specified version (present in user data directory).

From frozen code

You need to build OpenPype first. This will produce two executables - openpype_gui(.exe) and openpype_console(.exe). First one will act as GUI application and will not create console (useful in production environments). The second one will create console and will write output there - useful for headless application and debugging purposes. If you need OpenPype version installed, just run ./tools/create_zip(.ps1|.sh) without arguments and it will create zip file that OpenPype can use.

Building documentation

To build API documentation, run .\tools\make_docs(.ps1|.sh). It will create html documentation from current sources in .\docs\build.

Note that it needs existing virtual environment.

Running tests

To run tests, execute .\tools\run_tests(.ps1|.sh).

Note that it needs existing virtual environment.

Developer tools

In case you wish to add your own tools to .\tools folder without git tracking, it is possible by adding it with dev_* suffix (example: dev_clear_pyc(.ps1|.sh)).

Contributors

Thanks goes to these wonderful people (emoji key):

Milan Kolar
Milan Kolar

💻 📖 🚇 💼 🖋 🔍 🚧 📆 👀 🧑‍🏫 💬
Jakub Ježek
Jakub Ježek

💻 📖 🚇 🖋 👀 🚧 🧑‍🏫 📆 💬
Ondřej Samohel
Ondřej Samohel

💻 📖 🚇 🖋 👀 🚧 🧑‍🏫 📆 💬
Jakub Trllo
Jakub Trllo

💻 📖 🚇 👀 🚧 💬
Petr Kalis
Petr Kalis

💻 📖 🚇 👀 🚧 💬
64qam
64qam

💻 👀 📖 🚇 📆 🚧 🖋 📓
Roy Nieterau
Roy Nieterau

💻 📖 👀 🧑‍🏫 💬
Toke Jepsen
Toke Jepsen

💻 📖 👀 🧑‍🏫 💬
Jiri Sindelar
Jiri Sindelar

💻 👀 📖 🖋 📓
Simone Barbieri
Simone Barbieri

💻 📖
karimmozilla
karimmozilla

💻
Allan I. A.
Allan I. A.

💻
murphy
murphy

💻 👀 📓 📖 📆
Wijnand Koreman
Wijnand Koreman

💻
Bo Zhou
Bo Zhou

💻
Clément Hector
Clément Hector

💻 👀
David Lai
David Lai

💻 👀
Derek
Derek

💻 📖
Gábor Marinov
Gábor Marinov

💻 📖
icyvapor
icyvapor

💻 📖
Jérôme LORRAIN
Jérôme LORRAIN

💻
David Morris-Oliveros
David Morris-Oliveros

💻
BenoitConnan
BenoitConnan

💻
Malthaldar
Malthaldar

💻
Sven Neve
Sven Neve

💻
zafrs
zafrs

💻
Félix David
Félix David

💻 📖
Alexey Bogomolov
Alexey Bogomolov

💻

This project follows the all-contributors specification. Contributions of any kind welcome!