{"id":238,"date":"2025-04-22T00:01:59","date_gmt":"2025-04-22T07:01:59","guid":{"rendered":"https:\/\/skchow.com\/indy\/?page_id=238"},"modified":"2025-04-22T00:12:04","modified_gmt":"2025-04-22T07:12:04","slug":"camera-files","status":"publish","type":"page","link":"https:\/\/skchow.com\/indy\/camera-files\/","title":{"rendered":"Camera files"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Camera files<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These file formats define how TV cameras are triggered and positioned in <em>IndyCar Racing 2<\/em>. The <code>.SCR<\/code> file controls when and where to switch cameras during a race (based on distance along the track), while the <code>.CAM<\/code> file defines the spatial and behavioral properties of the cameras themselves.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">File Extensions Summary<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Extension<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>.SCR<\/code><\/td><td>Camera trigger zones on the track<\/td><\/tr><tr><td><code>.CAM<\/code><\/td><td>Actual 3D camera properties<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">.SCR File \u2014 Camera Triggers<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Purpose:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifies which camera to use depending on the car&#8217;s longitudinal position along the track (<code>DLONG<\/code>), for TV1 or TV2 broadcast &#8220;views&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Binary Structure:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>int32<\/code>: Number of views (usually <code>1<\/code> or <code>2<\/code>)<\/li>\n\n\n\n<li><code>int32[]<\/code>: Number of cameras per view (length = number of views)<\/li>\n\n\n\n<li>Camera entries: 4 <code>int32<\/code> values per camera:\n<ol class=\"wp-block-list\">\n<li><code>Mark<\/code> \u2014 Camera type ID (corresponds to camera type in <code>.CAM<\/code>, e.g., 6, 2, or 7)<\/li>\n\n\n\n<li><code>Cam ID<\/code> \u2014 Index of the camera to activate (refers to <code>.CAM<\/code>)<\/li>\n\n\n\n<li><code>Start DLONG<\/code> \u2014 Start distance to trigger this camera<\/li>\n\n\n\n<li><code>End DLONG<\/code> \u2014 End distance to stop using this camera<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Notes:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each view&#8217;s camera entries are grouped together sequentially.<\/li>\n\n\n\n<li>Total number of entries = sum of all cameras in all views.<\/li>\n\n\n\n<li>The <code>Mark<\/code> field determines which type of camera this trigger activates, e.g., Type 6 (main), Type 2 (alt), or Type 7 (static).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If <code>num_views = 2<\/code> and the file starts with <code>[2, 4, 5]<\/code>, it means:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>View 1 has 4 cameras<\/li>\n\n\n\n<li>View 2 has 5 cameras<\/li>\n\n\n\n<li>Followed by (4 + 5) * 4 = 36 <code>int32<\/code> values representing camera triggers<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">.CAM File \u2014 Camera Definitions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Purpose:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Defines physical location, behavior, and characteristics of cameras.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Layout:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The file is structured into three blocks of camera definitions:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Type 6<\/strong>: Dynamic main cameras<\/li>\n\n\n\n<li><strong>Type 2<\/strong>: Alternate dynamic cameras<\/li>\n\n\n\n<li><strong>Type 7<\/strong>: Static cameras with angle\/rotation<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Each block starts with a count of cameras, followed by data for each.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Type 6 and Type 2 Cameras:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Count: <code>int32<\/code><\/li>\n\n\n\n<li>Each camera: 9 <code>int32<\/code> values<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Index<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>Middle DLONG (track pos)<\/td><\/tr><tr><td>1<\/td><td>X position<\/td><\/tr><tr><td>2<\/td><td>Y position<\/td><\/tr><tr><td>3<\/td><td>Z position<\/td><\/tr><tr><td>4<\/td><td>Start DLONG<\/td><\/tr><tr><td>5<\/td><td>Start zoom<\/td><\/tr><tr><td>6<\/td><td>Middle zoom<\/td><\/tr><tr><td>7<\/td><td>End DLONG<\/td><\/tr><tr><td>8<\/td><td>End zoom<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Type 7 Cameras:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Count: <code>int32<\/code><\/li>\n\n\n\n<li>Each camera: 12 <code>int32<\/code> values<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Index<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>Always zero? (padding)<\/td><\/tr><tr><td>1<\/td><td>X position<\/td><\/tr><tr><td>2<\/td><td>Y position<\/td><\/tr><tr><td>3<\/td><td>Z position<\/td><\/tr><tr><td>4<\/td><td>Z-axis rotation<\/td><\/tr><tr><td>5<\/td><td>Vertical rotation<\/td><\/tr><tr><td>6<\/td><td>Tilt<\/td><\/tr><tr><td>7<\/td><td>Wide angle zoom and or wide zoom lens (per Tjerk&#8217;s tutorial)<\/td><\/tr><tr><td>8\u201311<\/td><td>Reserved \/ zero<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">General Notes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>.SCR<\/code> camera entries reference <code>.CAM<\/code> entries by index (<code>Cam ID<\/code>).<\/li>\n\n\n\n<li><code>DLONG<\/code> is the track distance measurement unit used in ICR2.<\/li>\n\n\n\n<li>Type 6\/2 cameras interpolate zooms and transitions along a path.<\/li>\n\n\n\n<li>Type 7 cameras are static.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Camera files Overview These file formats define how TV cameras are triggered and positioned in IndyCar Racing 2. The .SCR file controls when and where to switch cameras during a race (based on distance along the track), while the .CAM file defines the spatial and behavioral properties of the cameras themselves. File Extensions Summary Extension [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-238","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/pages\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/comments?post=238"}],"version-history":[{"count":6,"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/pages\/238\/revisions"}],"predecessor-version":[{"id":245,"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/pages\/238\/revisions\/245"}],"wp:attachment":[{"href":"https:\/\/skchow.com\/indy\/wp-json\/wp\/v2\/media?parent=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}