PageSourceSearch

https://docs-vrgeo-version3.netlify.app/assets/js/4d13b169.ede53f9b.js

js docs-vrgeo-version3.netlify.app collected 2026-10-03 10:39:59 UTC 19,984 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[2215],{74867(e,t,r){r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"general/viewing-collaboration/figures-and-images","title":"Figures and Images","description":"Produce publication-quality output from VRGS \u2014 capture the 3D view above screen resolution, add scale bars and compasses, use orthographic projection for measurable figures, choose shading that shows structure, and know where video fits.","source":"@site/docs/general/viewing-collaboration/figures-and-images.md","sourceDirName":"general/viewing-collaboration","slug":"/general/viewing-collaboration/figures-and-images","permalink":"/docs/next/general/viewing-collaboration/figures-and-images","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/docs/general/viewing-collaboration/figures-and-images.md","tags":[],"version":"current","sidebarPosition":1.5,"frontMatter":{"id":"figures-and-images","title":"Figures and Images","sidebar_label":"Figures and Images","description":"Produce publication-quality output from VRGS \u2014 capture the 3D view above screen resolution, add scale bars and compasses, use orthographic projection for measurable figures, choose shading that shows structure, and know where video fits.","keywords":["figure","screenshot","Copy Screen","publication","scale bar","orthographic","compass","export image","resolution"],"sidebar_position":1.5},"sidebar":"docs","previous":{"title":"Display Options","permalink":"/docs/next/general/viewing-collaboration/display-properties"},"next":{"title":"VR Headset","permalink":"/docs/next/general/viewing-collaboration/vr-user-guide"}}');var s=r(74848),i=r(28453);const o={id:"figures-and-images",title:"Figures and Images",sidebar_label:"Figures and Images",description:"Produce publication-quality output from VRGS \u2014 capture the 3D view above screen resolution, add scale bars and compasses, use orthographic projection for measurable figures, choose shading that shows structure, and know where video fits.",keywords:["figure","screenshot","Copy Screen","publication","scale bar","orthographic","compass","export image","resolution"],sidebar_position:1.5},a=void 0,l={},h=[{value:"Capture above screen resolution",id:"capture-above-screen-resolution",level:2},{value:"Get the projection right",id:"get-the-projection-right",level:2},{value:"Add the furniture",id:"add-the-furniture",level:2},{value:"Choose shading that shows the structure",id:"choose-shading-that-shows-the-structure",level:2},{value:"Other things worth capturing",id:"other-things-worth-capturing",level:2},{value:"Video",id:"video",level:2},{value:"A workflow that works",id:"a-workflow-that-works",level:2},{value:"Tips and troubleshooting",id:"tips-and-troubleshooting",level:2},{value:"See also",id:"see-also",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"A screenshot of the VRGS window is rarely a good figure. It is the wrong\nresolution for print, it has a perspective distortion that makes anything you\nmeasure off it wrong, and it usually carries interface furniture that a journal\nwill ask you to remove."}),"\n",(0,s.jsxs)(t.p,{children:["VRGS can do considerably better than a screenshot, and the tools are not\nobvious. This guide covers producing a still figure; for moving pictures see\n",(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/flight-path-user-guide",children:"Flight Paths"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"capture-above-screen-resolution",children:"Capture above screen resolution"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Home ribbon \u2192 Copy Screen"})," is the important command, and its name undersells\nit. It does not capture your monitor \u2014 it ",(0,s.jsx)(t.strong,{children:"re-renders the scene to a virtual\nscreen at whatever size you ask for"}),", so the output is not limited by your\ndisplay."]}),"\n",(0,s.jsx)(t.p,{children:"The dialog offers:"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Control"}),(0,s.jsx)(t.th,{children:"What it does"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Size preset"})}),(0,s.jsx)(t.td,{children:"A dropdown of common output sizes."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"Width"})," / ",(0,s.jsx)(t.strong,{children:"Height"})]}),(0,s.jsx)(t.td,{children:"The output size in pixels, editable directly. Defaults to 1024 \xd7 800; the range runs to 32768 in each direction."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"\xd72"})," and ",(0,s.jsx)(t.strong,{children:"\xf72"})]}),(0,s.jsx)(t.td,{children:"Double or halve both dimensions in one click \u2014 the quick way to get from a preview to a print-resolution version of the same framing."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Save to file"})}),(0,s.jsxs)(t.td,{children:["Write a ",(0,s.jsx)(t.strong,{children:"PNG"})," instead of putting the image on the clipboard."]})]})]})]}),"\n",(0,s.jsx)(t.admonition,{title:"Work at preview size, export at print size",type:"tip",children:(0,s.jsxs)(t.p,{children:["Frame the view, capture at the default size to check it, then press ",(0,s.jsx)(t.strong,{children:"\xd72"})," twice\nand capture again. The framing is identical; only the pixel count changes. A\nfigure destined for a journal column at 300 dpi needs roughly 2500 pixels\nacross, which is two doublings from the default."]})}),"\n",(0,s.jsxs)(t.p,{children:["The saved file is always ",(0,s.jsx)(t.strong,{children:"PNG"}),", regardless of the extension you type. This is\ndeliberate \u2014 an earlier version offered ",(0,s.jsx)(t.code,{children:".bmp"})," and ",(0,s.jsx)(t.code,{children:".jpg"})," filters that wrote PNG\ndata under a misleading name."]}),"\n",(0,s.jsx)(t.h2,{id:"get-the-projection-right",children:"Get the projection right"}),"\n",(0,s.jsxs)(t.p,{children:["A perspective view is the wrong basis for any figure someone might measure off.\n",(0,s.jsx)(t.strong,{children:"Home ribbon \u2192 Ortho Camera"})," switches the 3D view to orthographic projection,\nwhere distance from the camera no longer changes apparent size."]}),"\n",(0,s.jsx)(t.p,{children:"Two things follow from being in orthographic mode:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["A ",(0,s.jsx)(t.strong,{children:"scale bar"}
1)," becomes meaningful across the whole image rather than only at\nthe depth it was drawn."]}),"\n",(0,s.jsxs)(t.li,{children:["The ",(0,s.jsx)(t.strong,{children:"Orthographic Grid Overlay"})," becomes available (Display Properties \u2192\nPost-Processing Effects). It draws an adaptive measurement grid whose spacing\nadjusts with zoom, with ",(0,s.jsx)(t.strong,{children:"Detail Levels"})," controlling how many nested scales\nare drawn at once and ",(0,s.jsx)(t.strong,{children:"Opacity"})," and ",(0,s.jsx)(t.strong,{children:"Line Width"})," controlling how much it\nintrudes. It has no effect in perspective view."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"For an outcrop panel \u2014 the classic figure in this field \u2014 orthographic\nprojection with a grid overlay is what turns a picture into a document someone\ncan work from."}),"\n",(0,s.jsx)(t.h2,{id:"add-the-furniture",children:"Add the furniture"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Home ribbon \u2192 Overlays"})," carries the annotation layers that make a figure\nself-explanatory:"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Overlay"}),(0,s.jsx)(t.th,{children:"Use"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Scale Bar"})}),(0,s.jsx)(t.td,{children:"A dynamic bar at bottom-left that rescales as you zoom."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Compass"})}),(0,s.jsx)(t.td,{children:"Orientation widget. Essential on any oblique view."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Colour Bar"})}),(0,s.jsx)(t.td,{children:"The colour key for the active attribute \u2014 needed whenever the figure is coloured by anything other than texture."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Strat Column"})}),(0,s.jsxs)(t.td,{children:["The stratigraphic column, for a figure that references units. See ",(0,s.jsx)(t.a,{href:"/docs/next/general/fractures-structure/stratigraphy",children:"Stratigraphy"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Navigator"})}),(0,s.jsxs)(t.td,{children:["The on-screen navigation buttons. Switch this ",(0,s.jsx)(t.strong,{children:"off"})," before capturing \u2014 it is interface, not content."]})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["For scale ",(0,s.jsx)(t.em,{children:"inside"})," the scene rather than as an overlay, ",(0,s.jsx)(t.strong,{children:"Display \u2192 Add Virtual\nScale Object"})," places a synthetic object of known size \u2014 5 m, 1 m, 10 cm, or a\ntriaxial marker showing all three directions. This is the virtual equivalent of\nputting a hammer in the shot, and it works in an oblique view where a\nscreen-space scale bar would be ambiguous. See\n",(0,s.jsx)(t.a,{href:"/docs/next/general/interpretation/measuring",children:"Measuring"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"choose-shading-that-shows-the-structure",children:"Choose shading that shows the structure"}),"\n",(0,s.jsxs)(t.p,{children:["The default lit-and-textured view is often the worst way to show geology in a\nfigure, because the texture's own contrast swamps the geometry. The\n",(0,s.jsx)(t.strong,{children:"Post-Processing Effects"})," section of the\n",(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/display-properties",children:"Display Properties"})," has better options:"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Effect"}),(0,s.jsx)(t.th,{children:"What it reveals"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Eye-Dome Lighting"})}),(0,s.jsx)(t.td,{children:"Darkens depth edges so structure reads without shading. The standard choice for un-coloured point clouds."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Curvature Shading"})}),(0,s.jsx)(t.td,{children:"Concave creases darken and convex ridges brighten, making folds and fractures stand out. Overrides eye-dome lighting while on."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Show Slope / Aspect (Dip)"})}),(0,s.jsx)(t.td,{children:"Colours surfaces by orientation \u2014 hue is dip-direction, saturation is dip angle. Works even on tiled models with no per-vertex attributes. Overrides texture and attribute colour."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"Enable Shadows"})," / ",(0,s.jsx)(t.strong,{children:"Ambient Occlusion"})]}),(0,s.jsx)(t.td,{children:"Ray-traced depth cues. Expensive, and they need the Vulkan view on a ray-tracing-capable GPU \u2014 but for a single still capture the cost does not matter."})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Vertical Scale"})," in the ",(0,s.jsx)(t.em,{children:"Geometry & LOD"})," section exaggerates relief. It is\nlegitimate in a figure provided you say so in the caption \u2014 and it is one of the\neasiest ways to make subtle topography readable."]}),"\n",(0,s.jsx)(t.admonition,{title:"Exaggeration changes what you see, not what you measure",type:"caution",children:(0,s.jsx)(t.p,{children:"Vertical Scale does not affect measurements or exported coordinates. That is\nconvenient, but it means a figure at 2\xd7 vertical exaggeration will not agree\nwith numbers taken off the same view. Always state the factor."})}),"\n",(0,s.jsx)(t.h2,{id:"other-things-worth-capturing",children:"Other things worth capturing"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Output"}),(0,s.jsx)(t.th,{children:"How"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"A photograph or orthoimage"})}),(0,s.jsxs)(t.td,{children:["Right-click the item \u2192 ",(0,s.jsx)(t.strong,{children:"Export Image"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"A stereonet or rose diagram"})}),(0,s.jsxs)(t.td,{children:["Right-click \u2192 ",(0,s.jsx)(t.strong,{children:"Export \u2192 Stereonet Diagram"})," / ",(0,s.jsx)(t.strong,{children:"Rose Diagram"}),", which writes ",(0,s.jsx)(t.strong,{children:"SVG"})," \u2014 a vector file that scales without loss and can be edited in Illustrator or Inkscape. See ",(0,s.jsx)(t.a,{href:"/docs/next/general/fractures-structure/stereonet-user-guide",children:"Stereonet"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"An attribute histogram"})}),(0,s.jsxs)(t.td,{children:["Right-click the attribute \u2192 ",(0,s.jsx)(t.strong,{children:"Export Histogram"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"A colour scale on its own"})}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"Copy Color Scale to Clipboard"})," on the attribute menu."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"A whole assembled report"})}),(0,s.jsxs)(t.td,{children:["The ",(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/report-view",children:"Report View"})," builds figures, tables and text into one document."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"A link back to this exact view"})}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"Copy as HTML"})," copies the current viewpoint as an HTML anchor you can paste into a report or wiki, so a reader can jump straight to the view you are describing."]})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"video",children:"Video"}),"\n",(0,s.jsxs)(t.p,{children:["Recording motion belongs to flight paths rather than to a capture command.\nBuild a ",(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/flight-path-user-guide",children:"flight path"}),", then record it \u2014 the\nrecording runs against the project frame rate rather than whatever the display\nmanages, so a 60-second path is 60 seconds on every machine and narration stays\nin step."]}),"\n",(0,s.jsx)(t.admonition,{title:"Capture Movie From Screen is the OpenGL-only legacy route",type:"note",children:(0,s.jsxs)(t.p,{children:["The old ",(0,s.jsx)(t.strong,{children:"Display \u2192 Animations \u2192 Capture Movie From Screen"})," command is handled\nby the OpenGL view only. Flight-path recording works in both renderers and gives\na far better result. See\n",(0,s.jsx)(t.a,{href:"/docs/next/general/setup-system/feature-availability",children:"Why is this greyed out?"}),"."]})}),"\n",(0,s.jsx)(t.h2,{id:"a-workflow-that-works",children:"A workflow that works"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Hide everything that is not part of the figure \u2014 this is also the fastest way\nto make a heavy scene responsive while you frame it."}),"\n",(0,s.jsxs)(t.li,{children:["Switch to ",(0,s.jsx)(t.strong,{children:"Ortho Camera"})," if anything will be measured off the result."]}),"\n",(0,s.jsx)(t.li,{children:"Pick the shading: texture for context, curvature or slope/aspect for\nstructure, eye-dome for point clouds."}),"\n",(0,s.jsxs)(t.li,{children:["Switch on ",(0,s.jsx)(t.strong,{children:"Scale Bar"})," and ",(0,s.jsx)(t.strong,{children:"Compass"}),"; switch ",(0,s.jsx)(t.strong,{children:"Navigator"})," off."]}),"\n",(0,s.jsxs)(t.li,{children:["Frame the view. Save it as a ",(0,s.jsx)(t.strong,{children:"scene"})," so you can come back to exactly this."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Copy Screen"}),", check at default size, then ",(0,s.jsx)(t.strong,{children:"\xd72"})," to print resolution and\nsave to PNG."]}),"\n",(0,s.jsx)(t.li,{children:"Note the vertical exaggeration and the projection in your caption."}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"tips-and-troubleshooting",children:"Tips and troubleshooting"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"The capture is blank or partly black."})," The scene was still streaming.\nLet it settle, or load the model into memory first \u2014 see\n",(0,s.jsx)(t.a,{href:"/docs/next/general/setup-system/large-models",children:"Working with Large Models"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"The capture is slow at large sizes."})," Expected: a 8192-pixel capture renders\nthe whole scene again at that size. It is not hung."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Text and labels are tiny in the big version."})," Labels with ",(0,s.jsx)(t.strong,{children:"Maintain Size"}),"\non are sized in ",(0,s.jsx)(t.em,{children:"pixels"}),", so they do not grow with the capture. Increase the\nlabel size before capturing large, or switch Maintain Size off so the size is\nin metres."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Colours differ from the screen."})," Post-processing effects are applied to the\ncapture too \u2014 that is usually what you want, but check bloom is not blowing\nout highlights."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"The image has the interface in it."})," You captured with a screenshot tool\nrather than ",(0,s.jsx)(t.strong,{children:"Copy Screen"}),". Copy Screen renders the scene only."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/display-properties",children:"Display Properties"})," \u2014 every shading and overlay setting."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/flight-path-user-guide",children:"Flight Paths"})," \u2014 video output."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/report-view",children:"Report View"})," \u2014 assembling figures into a document."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/interpretation/measuring",children:"Measuring"})," \u2014 virtual scale objects."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/next/general/viewing-collaboration/virtual-field-trips",children:"Virtual Field Trips"})," \u2014 figures inside a delivered field guide."]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453(e,t,r){r.d(t,{R:()=>o,x:()=>a});var n=r(96540);const s={},i=n.createContext(s);function o(e){const t=n.useContext(i);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(i.Provider,{value:t},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.