Giter Site home page Giter Site logo

pdg_mutagen's Introduction

PDG Mutagen

PDG Mutagen banner image Toolset for generating and handling large wedge variation counts in Houdini with PDG/TOPs


About

PDG Mutagen is a toolset designed to efficiently and intuitively handle the often large wedge variation counts and data amounts when working with PDG wedging in ©SideFX Houdini. PDG Mutagen was developed during my studies at Animationsinstitut at Filmakademie Baden-Württemberg in the course Animation & Visual Effects.


Videos

PDG Mutagen Walktrough Tutorial


PDG Mutagen Viewer

It includes a Python Panel Interface the Mutagen Viewer, that allows you to display and play back the PDG wedge variations

  • Allows to visually select a specific wedge variation that will then be selected in the PDG graph as well
  • Right click wedge variation to open full-size rendered image sequence in RV or Filebrowser
  • Mark/label wedge variations you like, store selection
  • Setup Mutation tool to generate new base wedge node containing all wedge parameters from marked wedge variations. This can then be used as root to generate further wedge variations based on the settings you liked, by appending further wedge TOPs

Mutagen Viewer


PDG Mutagen Shelf

It also includes a Mutagen Shelf containing additional utility tools

  • Mutagen Setup creates a PDG graph template with basic wedging setup, designed to work with the Mutagen Viewer and other Mutagen Tools.
  • Convert Takes to Wedges converts variations you have set up in the "classical take style" to a single wedge TOP that holds all the edited parameters. Append additional wedge TOPs as you like to generate further variation
  • Select Wedge Index lets you numerically enter a target wedge index like 0_1_4_6_2 and select it in the PDG graph. This is handy for large wedge counts where visual selection is tedious or impossible
  • Split IM Montage splits ImageMagick montage in two separate streams. This is handy for very large wedging setups which become unhandy in a single montage and also ImageMagick concatenation would fail

Mutagen Shelf / PDG Graph


Code State | Bugs | Compatibility

PDG Mutagen is in prototype stage and for experimental use. It may contain bugs and the code is not fully cleaned up. Feel free to customize and enhance to your needs.

Compatible with Houdini 17.5.x | Tested with 17.5.299


Installation

  • Clone repository. Add path to repository into HOUDINI_PATH environment variable (e.g. in houdini.env file)

    HOUDINI_PATH = &;C:/Users/ameyer/Documents/git/pdg_mutagen/houdini
    
  • Add PDG Mutagen shelf to Houdini shelfes

  • Open new Python Panel Pane and select PDG Mutagen


Future Developement

The intial intention was to create a "smart mutation" tool that will set up the PDG network based on the marked wedge variations automatically. Hence the name Mutagen, "Mutation Generator". Providing the user with parameters like "Number of New Variations", "Variation Spread", "Linear or Random Mode" and so on. Due to time constraints this is unfortunately postponed indefinitely but may be continued in the future.


Implementation

Most of the tool is written in Python 2.7 and PySide2, running in the native Houdini Python environment. The video playback is actually handled by a HTML5 webpage embedded into PySide2 with a QWebEngineWidget, getting controlled by JavaScript. This is done because the Houdini Python does not ship with the QtMultimedia Module (trying to import it from an external Python installation or even PyQt5 failed), and it might have been hard to get realtime video playback of sometimes 2-6K video with other approaches. This is also the reason why the buttons in the Python Panel interface are actually PySide Widgets, overlayed on top of the HTML page, playing back one big single video. Realtime performance was a more important concideration than flexibility or cleanness of implementation. The video format must be WebM or Ogg and not H264 to be played back in Houdini due to licensing reasons.


Resources


Credits


Thanks

  • Entagma - PDG for Design Work series inspired me to create the toolset

pdg_mutagen's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdg_mutagen's Issues

opengl implementation

Hi Adrian,
first: great. I love your stuff. Not only the mutagen plugin, also your cell-dividing tutorial.

I was playing around with mutagen and wanted to set up a flipboock-like render with the opengl rop. but when i want to see the result in Mutagen Viewer it throughs an error. It looks like the problem is in the pdg_mutagen_ui.py, where it has to be implemented around line 872.
I was figuring out, the opengl-driver has to be added. But i struggle with the parameter:
self._render_outpath = render_node.parm("vm_picture").evalAtFrame(0)
Obviously "vm_picture" is wrong

Thanks for any tips

..solved,
added this in pdg_mutagen_ui.py at line 833:
#opengl
elif render_node.type() == hou.nodeType("Driver/opengl"):
self._render_node = render_node
self._render_outpath = render_node.parm("picture").evalAtFrame(0)

Mutagen Viewer python error

Using H18.0.348 everything works great except the Mutagen Viewer. Would really appreciate a solution for this.

After selecting the ffmpeg top i get the following output in the pythin shell:
FFmpeg Node (Root Node): ffmpeg_montage_p0 Render Output Top Node: ropfetch_render_gl Traceback (most recent call last): File "/media/PREF/Houdini/HoudiniHdas/_Tools/PDG-Mutagen-Wedger-MeyerAdrian/pdg_mutagen-m aster/houdini/scripts/python/pdg_mutagen_ui.py", line 225, in _viewWizard_ButtonClicked viewer_interface = ViewerInterface(self._root_if) File "/media/PREF/Houdini/HoudiniHdas/_Tools/PDG-Mutagen-Wedger-MeyerAdrian/pdg_mutagen-m aster/houdini/scripts/python/pdg_mutagen_ui.py", line 255, in __init__ setupWizard(self) File "/media/PREF/Houdini/HoudiniHdas/_Tools/PDG-Mutagen-Wedger-MeyerAdrian/pdg_mutagen-m aster/houdini/scripts/python/pdg_mutagen_ui.py", line 898, in setupWizard print "Render Output ROP Node: {}".format(self._render_node.name()) AttributeError: 'NoneType' object has no attribute 'name' https://www.youtube.com/watch?v=h7aaLDGAMGw&fbclid=IwAR2mrfbr3FkLuVq7sZMqJMNiTRFAPxMEuUfaMoeAhrrQPY1iZDr2QOuR6Oo

Ps- thank you for developing the tool!

Windows - ffmpeg Issue

Hi, I am trying to make the MutaGEN to work on Windows 10 and I am wondering if this output log might be just a windows issue or my Houdini network ?

Thanks

Traceback (most recent call last):
File "c:/var/tmp/houdini_temp/fireball__mutagen/pdgtemp/11136/scripts/ffmpeg.py", line 208, in
main()
File "c:/var/tmp/houdini_temp/fireball__mutagen/pdgtemp/11136/scripts/ffmpeg.py", line 200, in main
encodevideo(workitem)
File "c:/var/tmp/houdini_temp/fireball__mutagen/pdgtemp/11136/scripts/ffmpeg.py", line 165, in encodevideo
framepath = os.path.relpath(localimage, os.path.dirname(framelistfile))
File "C:/PROGRA1/SIDEEF1/HOUDIN~1.287/python27\lib\ntpath.py", line 529, in relpath
% (path_prefix, start_prefix))
ValueError: path is on drive O:, start on drive c:


node ffmpeg

https://i.imgur.com/7LBZe0N.png
s200112132030__j__DESKTOP-07KN68A__jeang__ts_139

all network

https://i.imgur.com/i7MHcWh.png
s200112132155__e__DESKTOP-07KN68A__jeang__ts_140

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.