Experimental:Virtual File System

From Derivative
Revision as of 17:11, 15 February 2021 by Ivan (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Overview[edit]

TouchDesigner's Virtual File system (VFS) allows image, movie, audio, fonts, other media and any files to be embedded in a .tox or .toe file. You can open and read them as if they are files in the filesystem. This makes .tox and .toe files more portable if they depend on images or sounds or font files. It will of course make your .tox and .toe files larger by whatever the hard drive file size is, but one virtual file can be referred to by multiple OPs at the same time.

The palette component virtualFileSystem in the Tools section lets you store virtual files without scripting.

Accessing Files[edit]

Internal files can be addressed directly with the vfs: prefix. Example: vfs:/project1:test.jpg. This VFS address will work in any parameter that is used to point at external files. All Operators that open files, like the Movie File In TOP and Audio File In CHOP allow the VFS syntax in their file parameters.

Details[edit]

Unlike locking a TOP where the image saved in the .tox/.toe is compressed with LZW, a Movie File In TOP that refers to a .jpeg file in VFS, it remains fully JPEG compressed. VFS can hold entire movie files and audio files including H.264 and .mp3 files. It can also hold .ttf font files and in some circumstances, .dll files for the CPlusPlus TOP, CPlusPlus SOP and CPlusPlus CHOP.

Together with the Privacy option (can be set using TouchDesigner Pro only), VFS allows for additional privacy of media built into your TouchDesigner .tox/.toe files.


Usage

Two python classes give you full access to VFS functionality.

  • VFS Class - describes a COMP's virtual file system.
  • VFSFile Class - describes a virtual file contained within a virtual file system.

Examples[edit]

See the above class wikis for full details.

Add a file from disk op('/base1').vfs.addFile('Banana.tif')
Add an image from TOP op('/base1').vfs.addByteArray(op('someTop').saveByteArray('.jpg'), 'imageName.jpg')
Delete an image op('/base1').vfs['Banana.tif'].destroy()
Save virtual file to disk op('/base1').vfs['Banana.tif'].export('diskFolderName')
Access virtual file in OP's file parameter (constant mode) vfs:/base1:Banana.tif


Palette Example

Use the virtualFileSystem component in the Palette (under Tools) as a user interface for VFS. This allows you to use VFS without the scripting that is otherwise required.