PageSourceSearch

https://docs-vrgeo-version3.netlify.app/assets/js/647501a7.3c94717c.js

js docs-vrgeo-version3.netlify.app collected 2026-10-03 10:42:00 UTC 24,293 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[20088],{85620(e,n,i){i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"general/viewing-collaboration/billboards-guide","title":"Using Billboards","description":"Put photographs, maps, information panels and video into a virtual outcrop as billboards \u2014 placing a board, paging a multi-image board, playing video with sound, moving and sizing one, and what each property actually does in the Vulkan and OpenGL views.","source":"@site/docs/general/viewing-collaboration/billboards.md","sourceDirName":"general/viewing-collaboration","slug":"/general/viewing-collaboration/billboards-guide","permalink":"/docs/next/general/viewing-collaboration/billboards-guide","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/docs/general/viewing-collaboration/billboards.md","tags":[],"version":"current","sidebarPosition":2.7,"frontMatter":{"id":"billboards-guide","title":"Using Billboards","sidebar_label":"Billboards","description":"Put photographs, maps, information panels and video into a virtual outcrop as billboards \u2014 placing a board, paging a multi-image board, playing video with sound, moving and sizing one, and what each property actually does in the Vulkan and OpenGL views.","keywords":["billboard","presentation slide","image in scene","video","annotation","scene media","slides"],"sidebar_position":2.7},"sidebar":"docs","previous":{"title":"Virtual Field Trips","permalink":"/docs/next/general/viewing-collaboration/virtual-field-trips"},"next":{"title":"Flight Paths","permalink":"/docs/next/general/viewing-collaboration/flight-path-user-guide"}}');var r=i(74848),s=i(28453);const o={id:"billboards-guide",title:"Using Billboards",sidebar_label:"Billboards",description:"Put photographs, maps, information panels and video into a virtual outcrop as billboards \u2014 placing a board, paging a multi-image board, playing video with sound, moving and sizing one, and what each property actually does in the Vulkan and OpenGL views.",keywords:["billboard","presentation slide","image in scene","video","annotation","scene media","slides"],sidebar_position:2.7},a=void 0,d={},l=[{value:"Placing a board",id:"placing-a-board",level:2},{value:"Media a board can hold",id:"media-a-board-can-hold",level:3},{value:"Board size and shape",id:"board-size-and-shape",level:3},{value:"Working with a board",id:"working-with-a-board",level:2},{value:"The controls",id:"the-controls",level:3},{value:"Moving a board precisely",id:"moving-a-board-precisely",level:3},{value:"Video in the scene",id:"video-in-the-scene",level:2},{value:"Properties",id:"properties",level:2},{value:"Organising boards",id:"organising-boards",level:2},{value:"In the OpenGL view",id:"in-the-opengl-view",level:2},{value:"Where the files live",id:"where-the-files-live",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"See also",id:"see-also",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.strong,{children:"billboard"})," is a panel that stands in the 3D scene and carries pictures. It\nis the way to get something that is ",(0,r.jsx)(n.em,{children:"not"})," the outcrop into the outcrop: a field\nphotograph of the same bed elsewhere, a core shot, a location map, a panel of\ntext explaining what a visitor is looking at, or a video of a modern analogue\nplaying with its sound."]}),"\n",(0,r.jsxs)(n.p,{children:["A board is not limited to one image. Give it several and it becomes a small\npresentation you page through in place, which is what makes billboards the\nworkhorse of a ",(0,r.jsx)(n.a,{href:"/docs/next/general/viewing-collaboration/virtual-field-trips",children:"virtual field trip"})," as well as a way\nof annotating your own work."]}),"\n",(0,r.jsx)(n.admonition,{title:"Which view this describes",type:"note",children:(0,r.jsxs)(n.p,{children:["Everything below is written for the ",(0,r.jsx)(n.strong,{children:"Vulkan"})," 3D view, which is where\nbillboards are most complete. The ",(0,r.jsx)(n.strong,{children:"OpenGL"})," view draws the same boards and\nplays the same video, but drives them differently \u2014 the differences are\ncollected in ",(0,r.jsx)(n.a,{href:"#in-the-opengl-view",children:"In the OpenGL view"}),"."]})}),"\n",(0,r.jsx)(n.h2,{id:"placing-a-board",children:"Placing a board"}),"\n",(0,r.jsx)(n.p,{children:"There are three ways in, and they do different things."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Route"}),(0,r.jsx)(n.th,{children:"What it does"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.strong,{children:"Annotations tab \u2192 Billboard"}),", then click the model"]}),(0,r.jsxs)(n.td,{children:["Arms the placement tool. The click opens a file dialog; pick ",(0,r.jsx)(n.strong,{children:"one or more"})," images or clips and you get ",(0,r.jsx)(n.strong,{children:"one board per file"}),", all anchored at the same point."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Drag a file from Explorer onto the 3D view"})}),(0,r.jsx)(n.td,{children:"Drops a board at the surface point under the cursor. If the drop misses the model it lands at the point the camera is looking at."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Data Tree \u2192 right-click a board \u2192 Add image"})}),(0,r.jsx)(n.td,{children:"Adds to a board that already exists rather than making a new one. This is how you build a multi-image board."})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["The board is anchored ",(0,r.jsx)(n.strong,{children:"0.5 m above"})," the point you clicked, so a board planted\non a cliff face sits just off the rock rather than 
1inside it. Files you choose\nare copied into the project's ",(0,r.jsx)(n.code,{children:"SLIDES"})," folder \u2014 the originals are not\nreferenced afterwards, so the project stays self-contained."]}),"\n",(0,r.jsx)(n.h3,{id:"media-a-board-can-hold",children:"Media a board can hold"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Kind"}),(0,r.jsx)(n.th,{children:"Formats"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Images"})}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:".jpg"}),", ",(0,r.jsx)(n.code,{children:".bmp"}),", ",(0,r.jsx)(n.code,{children:".png"}),", ",(0,r.jsx)(n.code,{children:".tif"}),", ",(0,r.jsx)(n.code,{children:".tiff"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Video"})}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:".mp4"}),", ",(0,r.jsx)(n.code,{children:".avi"}),", ",(0,r.jsx)(n.code,{children:".mov"}),", with the audio track"]})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"One board's list can mix stills and clips freely. Whether an entry is a video is\ndecided from its file name, so it survives saving and reloading with no separate\nsetting to get wrong."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"One clip plays at a time on a board."})," Paging onto a video opens it; paging\naway closes it again and remembers where you had got to, so returning to a clip\nresumes rather than restarts."]}),"\n",(0,r.jsx)(n.h3,{id:"board-size-and-shape",children:"Board size and shape"}),"\n",(0,r.jsxs)(n.p,{children:["The board is a ",(0,r.jsx)(n.strong,{children:"fixed mat sized to its widest item"}),", and every item is drawn\nat full board height, centred. Paging between a portrait photograph and a\nlandscape clip therefore does not make the panel grow and shrink under you \u2014 the\nwidest item fills the mat exactly and narrower ones sit on a wider surround."]}),"\n",(0,r.jsx)(n.h2,{id:"working-with-a-board",children:"Working with a board"}),"\n",(0,r.jsxs)(n.p,{children:["Click the picture to ",(0,r.jsx)(n.strong,{children:"select"})," the board. That is what puts its header strip\nand controls on screen; an unselected board is just the image on its mat, which\nis what you want in a scene full of slides. Click it again to deselect."]}),"\n",(0,r.jsxs)(n.p,{children:["Selection is exclusive \u2014 bringing one board's controls up puts every other board\nback to just its picture. Clicking the model or the sky does ",(0,r.jsx)(n.strong,{children:"not"})," deselect;\nonly clicking the board again does, or selecting anything in a tree."]}),"\n",(0,r.jsx)(n.admonition,{title:"A board never blocks a tool",type:"tip",children:(0,r.jsx)(n.p,{children:"While an interpretation tool is armed, a click passes straight through the board\nto the rock behind it. That is deliberate: digitising a line across a board has\nto keep landing on the model. Boards only take the click during plain\nnavigation."})}),"\n",(0,r.jsx)(n.h3,{id:"the-controls",children:"The controls"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Control"}),(0,r.jsx)(n.th,{children:"Where"}),(0,r.jsx)(n.th,{children:"What it does"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Previous / Next"})}),(0,r.jsx)(n.td,{children:"Ends of the header strip"}),(0,r.jsx)(n.td,{children:"Page to the previous or next item. Only shown when the board holds more than one."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Play / Stop"})}),(0,r.jsx)(n.td,{children:"Header strip, left"}),(0,r.jsx)(n.td,{children:"Starts or stops the clip \u2014 one button that swaps its icon to show the state."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Rewind"})}),(0,r.jsx)(n.td,{children:"Header strip, centre"}),(0,r.jsxs)(n.td,{children:["Back to the start, ",(0,r.jsx)(n.em,{children:"keeping"})," the current play state: a running clip restarts from the top rather than halting."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Repeat"})}),(0,r.jsx)(n.td,{children:"Header strip, right"}),(0,r.jsx)(n.td,{children:"Loop the clip at the end. Lit and held in while looping is on."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Header strip"})}),(0,r.jsx)(n.td,{children:"Above the image"}),(0,r.jsxs)(n.td,{children:["Anywhere a control is not, the strip is the ",(0,r.jsx)(n.strong,{children:"grab handle"})," \u2014 drag it to move the whole board."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Scrub bar"})}),(0,r.jsx)(n.td,{children:"Below the image"}),(0,r.jsx)(n.td,{children:"Video only. Click or drag along it to seek; playback pauses for the drag and resumes on release."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Resize handle"})}),(0,r.jsx)(n.td,{children:"Bottom-right, just outside the board"}),(0,r.jsx)(n.td,{children:"Drag to resize. The scale is uniform, so the aspect ratio is preserved."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"The transport controls only appear when the item showing is a video. On a narrow\nor portrait board every button in the strip shrinks together rather than the\ntransport sliding under the page arrows, so a control is never ambiguous to\nclick."}),"\n",(0,r.jsx)(n.h3,{id:"moving-a-board-precisely",children:"Moving a board precisely"}),"\n",(0,r.jsx)(n.p,{children:"The header drag moves the board in the plane facing the camera through its\ncurrent anchor, which keeps it at the same distance from you. For an exact\
1nposition use either:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Interpretations tab \u2192 Edit \u2192 3D Translate"}),", then click the board \u2014 the\ntranslate gadget attaches to its anchor and you drag the arms; or"]}),"\n",(0,r.jsxs)(n.li,{children:["the ",(0,r.jsx)(n.strong,{children:"Position"})," rows in the property grid, typed directly."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"video-in-the-scene",children:"Video in the scene"}),"\n",(0,r.jsx)(n.p,{children:"Video on a board behaves like a small player embedded in the outcrop."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Audio is the timing master."})," When a clip has a sound track, the picture is\npulled onto the audio clock rather than the other way round, so sound and\npicture stay together."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Recorded flight paths capture it correctly."})," During a\n",(0,r.jsx)(n.a,{href:"/docs/next/general/viewing-collaboration/flight-path-user-guide",children:"flight path"})," recording the clip is driven by the\nmovie's own frame clock rather than the wall clock, so it plays at natural\nspeed in the finished video instead of racing the camera, and frames are\ndecoded synchronously so no captured frame is a stale one."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Only the clip on show decodes."})," Paging away from a video stops it."]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{title:"Frame rate is the thing to watch",type:"caution",children:(0,r.jsx)(n.p,{children:"A 60 fps clip costs roughly twice the decode work of a 30 fps one, and the 3D\nview has to paint as well. If playback stutters on a laptop, re-encode the clip\nat 30 fps before blaming the model."})}),"\n",(0,r.jsx)(n.h2,{id:"properties",children:"Properties"}),"\n",(0,r.jsx)(n.p,{children:"Select a board \u2014 in a tree, or in the 3D view \u2014 to get its property page."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Property"}),(0,r.jsx)(n.th,{children:"What it does"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Name"})}),(0,r.jsx)(n.td,{children:"Name of the board, as shown in the Data Tree."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Scale Factor"})}),(0,r.jsx)(n.td,{children:"Board height in world units. The width follows from the widest item's aspect ratio."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Position"})}),(0,r.jsx)(n.td,{children:"The board's anchor, typed as X / Y / Z."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Show Frame"})}),(0,r.jsxs)(n.td,{children:["Draw the mat and rim behind the image. ",(0,r.jsx)(n.em,{children:"(Vulkan view.)"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Frame Colour"})}),(0,r.jsxs)(n.td,{children:["Colour of the rim around the mat. ",(0,r.jsx)(n.em,{children:"(Vulkan view.)"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Lock Face On"})}),(0,r.jsxs)(n.td,{children:["Keep the board turning to face the camera. Turn it off to glue the board to a fixed bearing. ",(0,r.jsx)(n.em,{children:"(OpenGL view.)"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Facing Direction"})}),(0,r.jsxs)(n.td,{children:["The bearing the board faces when ",(0,r.jsx)(n.em,{children:"Lock Face On"})," is off. ",(0,r.jsx)(n.em,{children:"(OpenGL view.)"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.strong,{children:"Show StraboSpots"})," / ",(0,r.jsx)(n.strong,{children:"StraboSpot Size"})]}),(0,r.jsx)(n.td,{children:"On a board imported from StraboSpot, draw a pin on the photograph for each spot pinned to it, sized as a fraction of the board height."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Rotate Image"})}),(0,r.jsxs)(n.td,{children:["A dropdown \u2014 ",(0,r.jsx)(n.em,{children:"90 clockwise"}),", ",(0,r.jsx)(n.em,{children:"180"}),", ",(0,r.jsx)(n.em,{children:"90 anticlockwise"})," \u2014 that turns the image showing. It ",(0,r.jsx)(n.strong,{children:"rewrites the file on disk"}),", for photographs that arrived with their orientation baked in the wrong way. Stills only."]})]})]})]}),"\n",(0,r.jsx)(n.admonition,{title:"Properties that do not currently do anything",type:"note",children:(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Transparency"})," and ",(0,r.jsx)(n.strong,{children:"Visibility Range"})," appear on the page and are saved with\nthe project, but neither renderer reads them \u2014 a board always draws fully opaque\nand at any distance. ",(0,r.jsx)(n.strong,{children:"Lock Face On"})," and ",(0,r.jsx)(n.strong,{children:"Facing Direction"})," are honoured only\nin the OpenGL view; a Vulkan board always turns to face you, and ",(0,r.jsx)(n.em,{children:"Facing\nDirection"})," is not saved with the project in either view. ",(0,r.jsx)(n.strong,{children:"Show Frame"})," and\n",(0,r.jsx)(n.strong,{children:"Frame Colour"})," work only in the Vulkan view, and return to their defaults when\nthe project is reloaded."]})}),"\n",(0,r.jsx)(n.h2,{id:"organising-boards",children:"Organising boards"}),"\n",(0,r.jsxs)(n.p,{children:["Billboards live under ",(0,r.jsx)(n.strong,{children:"Billboards"})," in the Data Tree and can be put into\nfolders: select several, then ",(0,r.jsx)(n.strong,{children:"Group"})," on the right-click menu (",(0,r.jsx)(n.strong,{children:"Ungroup"}),"\ntakes them back out). Right-clicking a board there also gives you ",(0,r.jsx)(n.strong,{children:"Look At"}),",\nwhich takes the camera to it, plus the usual rename, delete and visibility."]}),"\n",(0,r.jsx)(n.admonition,{title:"Empty folders do not survive a reload",type:"note",children:(0,r.jsxs)(n.p,{children:["A billboard records the ",(0,r.jsx)(n.em,{children:"name"})," of the folder it sits in, and the folders are\nrebuilt from those names when the project opens. A folder with no boards left in\nit has nothing to re
1cord it, so it disappears."]})}),"\n",(0,r.jsx)(n.h2,{id:"in-the-opengl-view",children:"In the OpenGL view"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Behaviour"}),(0,r.jsx)(n.th,{children:"Vulkan view"}),(0,r.jsx)(n.th,{children:"OpenGL view"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Controls"})}),(0,r.jsx)(n.td,{children:"Appear when the board is selected, hidden otherwise"}),(0,r.jsx)(n.td,{children:"Always drawn"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Move"})}),(0,r.jsx)(n.td,{children:"Drag the header strip, or 3D Translate"}),(0,r.jsx)(n.td,{children:"3D Translate only"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Resize"})}),(0,r.jsx)(n.td,{children:"Drag the corner handle"}),(0,r.jsxs)(n.td,{children:["Hover the board and ",(0,r.jsx)(n.strong,{children:"Ctrl + wheel"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Seek a video"})}),(0,r.jsx)(n.td,{children:"Click or drag the scrub bar"}),(0,r.jsx)(n.td,{children:"Click the progress bar (no drag)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Video transport"})}),(0,r.jsx)(n.td,{children:"Play / Stop, Rewind, Repeat"}),(0,r.jsx)(n.td,{children:"Play / Stop and Repeat; no Rewind"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Page a video board"})}),(0,r.jsx)(n.td,{children:"Previous / Next work while a clip is showing"}),(0,r.jsx)(n.td,{children:"The arrows are drawn but do not respond while a clip is showing \u2014 page off it from the Data Tree instead"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Frame / Frame Colour"})}),(0,r.jsx)(n.td,{children:"Honoured"}),(0,r.jsx)(n.td,{children:"Ignored; a fixed dark mat and blue header are always drawn"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Lock Face On / Facing Direction"})}),(0,r.jsx)(n.td,{children:"Ignored \u2014 always camera-facing"}),(0,r.jsx)(n.td,{children:"Honoured"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Drop a file onto an existing board"})}),(0,r.jsx)(n.td,{children:"Always makes a new board"}),(0,r.jsx)(n.td,{children:"Adds the image to the board under the cursor"})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"where-the-files-live",children:"Where the files live"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Content"}),(0,r.jsx)(n.th,{children:"Location"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Source images and clips"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"SLIDES"})," in the project folder"]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Display-ready image bakes"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"BILLBOARDS"})," in the project folder, one ",(0,r.jsx)(n.code,{children:".vbbtex"})," file per board"]})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:["The bakes are a cache, loaded a slide at a time as you page, which is why a\ntwenty-slide board opens as quickly as a one-slide board. ",(0,r.jsx)(n.strong,{children:"A project backup\nzips the database, not the project folder"}),", so the bakes do not travel with a\nbackup \u2014 they are rebuilt from the source images on first display. ",(0,r.jsx)(n.strong,{children:"Save As"}),"\ncopies the whole folder, so a copied project keeps everything."]}),"\n",(0,r.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"The board is there but the picture is blank."}),"\nThe source file has gone from ",(0,r.jsx)(n.code,{children:"SLIDES"}),", or the clip will not open. Check the\nboard's image rows in the Data Tree against the contents of the folder."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Clicking the board does nothing."}),"\nAn interpretation tool is armed, so the click is going through to the model.\nReset to the navigation tool first."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"The controls will not appear."}),"\nThe board is not selected. Click the picture itself, not the mat around it."]}),"\n",(0,r.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/docs/next/trees/data/billboards",children:"Billboards context menus"})," \u2014 the Data Tree commands in full."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/docs/next/tutorial/quick-tips/qt020-billboards",children:"Adding billboards"})," \u2014 the quick-tip video."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/docs/next/general/viewing-collaboration/virtual-field-trips",children:"Building and Delivering a Virtual Field Trip"})," \u2014 where billboards earn their keep."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/docs/next/general/viewing-collaboration/flight-path-user-guide",children:"Flight Path User Guide"})," \u2014 presentation slides on a guided tour, which use the same board."]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453(e,n,i){i.d(n,{R:()=>o,x:()=>a});var t=i(96540);const r={},s=t.createContext(r);function o(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.