Camera Report Interchange format
Camera Report Interchange Format Specification
Sam Richards
VES Tech Committee
Contents:
The file format had the following requirements:
For the above reasons we picked a CSV file format as the baseline, with the following requirements:
For sample data please see:
The table below defines all the fields that can exist in the file, the field order can be flexible, and additional fields can be added.
Export Format Column Name | Example Value | Type | Help Field | Required/ Optional |
Job | Wizard of Oz | string | The production name. | |
CRIF Version | 1.1 | Numeric | “Camera Report Interchange Format Version”, this is the version number of this document. This makes it easier to code changes to the file format. | Required |
Unique Slate ID | 154 | Numeric | Numeric Slate ID, this should be unique per database, but may not be unique between databases. Should be used as a human readable ID number | Required |
SlatesUUID | -- | string | Global Unique ID, this should be unique globally, even between different filemaker databases, this is particularly handy for importing, since you can guarantee no import clashes.(see below). | Required |
Slate | -- | string | Slate value, should directly match the actual slate label. | Required |
Camera Letter | A | string | The camera letter for multi-camera setups, is assumed to be a letter A-Z | Required |
VFX Shot | -- | string | What the final VFX Shot name is, not commonly known at shoot time. | Optional |
Scene Number | -- | string | Production scene name. | Required |
Shoot Day | 15 | Numeric | The shoot day for that particular unit. Script notes, are often indexed by shoot day rather than date, b | Required |
Shoot Timestamp | 2013/07/12 15:03:30 | string | What timestamp was this shot on. YYYY/MM/DD 24HH:MM:SS This is expected to be an editable value. | Required |
Shot Description | -- | string | Production shot description. | Required |
Unit | 1st | string | Shooting unit, typically 1st or 2nd. | Required |
Element Type | Blue Screen | string | Description of element type, e.g. blue-screen, green-screen, background. | Optional |
VFX Work | Multi-select | Pick list of work to be done, e.g. 2-D composite, 3D Character, Rig removal | Required | |
Notes | -- | string | General scene notes. | Optional |
Set Media | -- | Multi-select | What other media was captured on this set, so artists know what to look for. | Required |
Set Location | -- | string | Where is this scene being shot. | Required |
Set Location Position | +37.400000, -121.980000 | string | The on-set Latitude, and Longitude as derived from a GPS, measured in degrees. | Optional |
Script Location | -- | string | Location as defined in the script. | Required |
Script Time | Dusk | Enum | What is the rough time of day in the script for this scene, Valid values: Dusk, Day, Night, Dawn, Magic Hr | Optional |
Interior Exterior | Int | Enum | Is the Scene Interior or Exterior. Valid values are: Int, Ext | Optional |
Wrangler | -- | string | Identifier for the person entering the data. | Required |
Stereo Rig Orientation | Over | Enum | Location of second camera, the over/under is relative to the mirror, valid values: Over, Under, Side-by-side (*) | Required for Stereo |
Stereo Thru Cam Eye | Left | Enum | Which eye is the primary lens, and which is going through a mirror, Valid values: Left or Right. (*) | Required for Stereo |
Camera Head | -- | string | Make of camera head (e.g. libra, o'conor). | Required |
Camera Head Right | -- | string | Make of right camera head for a stereo rig. | Required for Stereo |
Camera Move Description | -- | string | Broadly describe what the camera move is. | Optional |
Camera Body | Arri | string | Make of camera body (e.g. Red, Arri) | Required |
Camera Body Right | Arri | string | Make of camera body of right eye. | Required for Stereo. |
Camera Mount | -- | string | E.g. Legs, Dolly, Techno-Crane, steadicam | Optional |
Characters | -- | Multi-select | The list of characters in the scene, there is a separate form to edit these. | Optional |
Props | -- | Multi-select | What props were used on the scene. | Optional |
Film Stock | -- | string | Required | |
ASA | 800 | string | Film speed, typically in range 100-3600 | Required |
HDRI Filename | -- | string | The filename for any HDRI/Sphereon file(s). | Optional |
White Balance | 5000K | string | Optional | |
Creation Date | 2013/07/22 12:31:18 | timestamp | Timestamp of when this report was created. YYYY/MM/DD 24HH:MM:SS | Optional |
Modification Date | 2013/07/22 12:31:18 | timestamp | Timestamp, updated when slate last modified. YYYY/MM/DD 24HH:MM:SS | Optional |
Tk Take | 1 | string | Take number, represented as a string, for unusual cases where its not only numeric. | Required |
Tk TakesUUID | -- | string | Global unique ID, used to uniquely identify this take. | Required |
Tk Filter | -- | string | What lens filter (if any) is being used. | Optional |
Tk Focal Length | -- | string | Start value for focal length, Measured in mm | Required |
Tk Focal Length End | -- | string | End value for focal length, Measured in mm | Required |
Tk FPS | -- | string | Frames per second, typically 24, but can be 48, 60, etc. | Required |
Tk Lens Focus | -- | string | Start Distance of main focus position, measured in Feet/Inches. | Required |
Tk Lens Focus End | -- | string | End Distance of main focus position, measured in Feet/Inches. | Required |
Tk Lens Height | -- | string | Start Height above ground plane, measured in Feet/Inches. | Optional |
Tk Lens Height End | -- | string | Start Height above ground plane, measured in Feet/Inches. | Optional |
Tk Lens ID | -- | string | Lens ID from Lens database | Optional |
Tk Lens Serial Num | -- | string | Lens Serial Number. | Required |
Tk Lens Serial Num Right | string | Lens Serial Number for right camera. | Required for Stereo | |
Tk Notes | -- | string | ||
Tk Roll | -- | string | What is the film-roll, can be applied to digital too. | Required |
Tk Shutter Angle | 180 | string | Measured in degrees, typically one of 90, 180, 270 | Required |
Tk Start Time Of Take | -- | string | When did this take start shooting. 24HH:MM:SS | Optional |
Tk Stereo Convergence | -- | string | Stereo convergence, distance to convergence, measured in feet/inches, or Infinity if they are parallel to each other. (*) | Optional For Stereo |
Tk Stereo IA | -- | string | Stereo Interaxial distance (sometimes incorrectly labeled Stereo Interocular), the distance between the lenses (*) | Optional For Stereo |
Tk Stop | -- | string | F-Stop or T-Stop of the lens. | Required |
Tk Camera Tilt | +10 | string | Start Value for Camera Tilt, Camera Tilt -10 means the camera is pointing 10 degrees down, +10 means 10 degrees up. | Optional |
Tk Camera Tilt End | +10 | string | End Value for Camera Tilt, Camera Tilt -10 means the camera is pointing 10 degrees down, +10 means 10 degrees up. | Optional |
Tk Camera Dutch | +2 | string | Start value for camera dutch angle (roll) +10 means the camera is tilting 10 degrees to the right clockwise. | Optional |
Tk Camera Dutch End | +2 | string | End value for camera dutch angle (roll) +10 means the camera is tilting 10 degrees to the right clockwise. | Optional |
Tk Clip Num | -- | string | The clip number within the take that this "take" refers to, used for continuous shooting. | Optional |
Tk Timecode | 01:08:59:28 | string | The timecode for the start of the clip. | Optional |
Tk Creation Date | 2013/07/22 14:31:18 | timestamp | Creation date of this take YYYY/MM/DD 24HH:MM:SS | Optional |
Tk Modification Date | 2013/07/22 14:31:18 | timestamp | Modification date of this take. YYYY/MM/DD 24HH:MM:SS | Optional |
(*) These units are provisional, any feedback on these attributes, would be gratefully received..
Dates are all in YYYY/MM/DD format, e.g. 2013/07/25. Months and Days should be padded to two digits.
Times are in 24-hour format, and timestamp fields are always of the form YYYY/MM/DD 24HH:MM:SS All date/times are in local-time.
The most important field is the SlatesUUID, since we use this field to identify when slate fields are duplicated. Even though we do have a Slate-ID which is nicely human readable, the problem with these types of ID is if you have 2-3 people entering data into a multiple filemaker databases, you can easily get into trouble if the ID’s end up overlapping. UUID’s are a globally unique ID, so in theory it should be impossible for many people to end up with the same ID. For the sample Filemaker database we have added a function that will generate it for you (See here if you want to add it, although you will need Filemaker 11 Advanced to do this). In filemaker 12, this is a built in function. If you are exporting it from your own Filemaker database, and cannot upgrade to 12, then copying the Slate-ID to the SlatesUUID should work, you just need to be very careful that the fields don’t clash with anybody elses numbers on the production.
If you do add your own Take fields, please prefix them with “Tk “, you will see from the scripts below that this is used to clearly split the take fields from the slate fields.
There are four fields that are multi-select fields (VFX Work, Set Media, Characters, Props). In the file, these are separated by a “Vertical Tab” (defined by the character “0x0B”), but in the database are stored as multiple lines, each line corresponding to a radio-button selection. Of these four, VFX Work and Set Media have predefined values, where-as Characters and Props are show defined.
This is one of the more critical fields, since it lets the end artist know what other data was captured on set that they need to look for. The Values that we consider pretty universal to all productions include:
Others may be defined, but these are considered the baseline.
This is another multi-select field that defines what work is expected to be done by potential vendors. The data-wrangler doesn't always know enough to fill this out, so its certainly not a critical field, but for some smaller productions, it becomes a convenient way to keep everything in one place.
Default values include:
There are four Enumerated fields, where the values must be one of a known set of values.
TODO: Need more details on this, is it relative to the Digital Roll, or relative to the beginning of a take?
All per-slate file exports should be prefixed by the slate, followed by the camera-letter. All whitespace should be removed from both the slate and “camera letter”.
The format should look like:
SLATE-CAMERALETTER.pdf
SLATE-CAMERALETTER-reference-1.jpg
e.g.:
22ac-A.pdf
22ac-A-reference-1.jpg
22ac-A-reference-2.jpg
The file can be read using python with the following script:
import csv
filename = "camera_report_export-2013-9-22-18-26.csv"
slates = []
lastslate = None
with open(filename, 'rU') as source:
csvDict = csv.DictReader(source)
data = [row for row in csvDict]
for row in data:
if lastslate != row["SlatesUUID"]:
lastslate = row["SlatesUUID"]
slateinfo = dict([(field, row[field].replace("\x0b", "\n")) for field in row.keys() \
if not field.startswith("Tk ")])
slateinfo["takes"] = []
slates.append(slateinfo)
takeinfo = dict([(field, row[field]) for field in row.keys() if field.startswith("Tk ")])
slates[-1]["takes"].append(takeinfo)
This should give you a data structure with slates just containing all the slates, and all the takes in their associated slate records, in a “takes” array, e.g.:
slates[0][“takes”] have all the takes for the first record.
v0.9c 9/25/2013