1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[29677],{22528(e,n,i){i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"ribbons/ribbon-triangulated-mesh","title":"Triangulated Mesh Tab","description":"Context-sensitive tab \u2014 appears when the Triangulated Mesh context is active.","source":"@site/versioned_docs/version-3.3/ribbons/triangulated-mesh.md","sourceDirName":"ribbons","slug":"/ribbons/ribbon-triangulated-mesh","permalink":"/docs/3.3/ribbons/ribbon-triangulated-mesh","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/versioned_docs/version-3.3/ribbons/triangulated-mesh.md","tags":[],"version":"3.3","sidebarPosition":16,"frontMatter":{"id":"ribbon-triangulated-mesh","title":"Triangulated Mesh Tab","sidebar_label":"Triangulated Mesh","sidebar_position":16},"sidebar":"docs","previous":{"title":"Point Clouds","permalink":"/docs/3.3/ribbons/ribbon-point-clouds"},"next":{"title":"Geosurface","permalink":"/docs/3.3/ribbons/ribbon-geosurface"}}');var r=i(74848),s=i(28453);const o={id:"ribbon-triangulated-mesh",title:"Triangulated Mesh Tab",sidebar_label:"Triangulated Mesh",sidebar_position:16},l="Triangulated Mesh Ribbon Tab",a={},d=[{value:"Interpret",id:"interpret",level:2},{value:"(unnamed)",id:"unnamed",level:3},{value:"Radius",id:"radius",level:3},{value:"Paint Texture",id:"paint-texture",level:3},{value:"Paint Attribute",id:"paint-attribute",level:3},{value:"(unnamed)",id:"unnamed-1",level:3},{value:"Show Overlay",id:"show-overlay",level:3},{value:"Track",id:"track",level:2},{value:"Strength",id:"strength",level:3},{value:"Balance",id:"balance",level:3},{value:"Distance",id:"distance",level:3},{value:"Tracker",id:"tracker",level:3},{value:"Drainage",id:"drainage",level:3},{value:"Control Points",id:"control-points",level:2},{value:"GCP",id:"gcp",level:3},{value:"Orientation",id:"orientation",level:3},{value:"Corrections",id:"corrections",level:2},{value:"From GCP",id:"from-gcp",level:3},{value:"From Orientation",id:"from-orientation",level:3},{value:"From Both",id:"from-both",level:3},{value:"Rescale",id:"rescale",level:3},{value:"Rescale GCP",id:"rescale-gcp",level:3},{value:"Lock Position",id:"lock-position",level:3},{value:"Translate",id:"translate",level:3},{value:"Undo Transform",id:"undo-transform",level:3},{value:"Redo Transform",id:"redo-transform",level:3},{value:"Textures",id:"textures",level:2},{value:"Add Texture",id:"add-texture",level:3},{value:"Edit",id:"edit",level:3},{value:"Itterative Closest Point",id:"itterative-closest-point",level:2},{value:"ICP",id:"icp",level:3},{value:"Split View",id:"split-view",level:3},{value:"Overlay",id:"overlay",level:3},{value:"Sampling",id:"sampling",level:3},{value:"ID_ICP_PERCENTILE",id:"id_icp_percentile",level:3},{value:"Max Distance",id:"max-distance",level:3},{value:"Show Links",id:"show-links",level:3},{value:"Use Tiepoints",id:"use-tiepoints",level:3},{value:"Point to Plane",id:"point-to-plane",level:3},{value:"Point to Point",id:"point-to-point",level:3}];function c(e){const n={em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"triangulated-mesh-ribbon-tab",children:"Triangulated Mesh Ribbon Tab"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.em,{children:["Context-sensitive tab \u2014 appears when the ",(0,r.jsx)(n.strong,{children:"Triangulated Mesh"})," context is active."]})}),"\n",(0,r.jsxs)(n.p,{children:["Commands available on the ",(0,r.jsx)(n.strong,{children:"Triangulated Mesh"})," ribbon tab, grouped by panel."]}),"\n",(0,r.jsx)(n.h2,{id:"interpret",children:"Interpret"}),"\n",(0,r.jsx)(n.h3,{id:"unnamed",children:"(unnamed)"}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Create"})," \u2014 Add new facies attribute"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Target"})," \u2014 Target facies attribute"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"radius",children:"Radius"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Radius of the painting sphere"]}),"\n",(0,r.jsx)(n.p,{children:"Radius of the sphere used to paint the mesh"}),"\n",(0,r.jsx)(n.h3,{id:"paint-texture",children:"Paint Texture"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Paint mesh texture"]}),"\n",(0,r.jsx)(n.p,{children:"Paint colour directly onto the mesh texture at the cursor position."}),"\n",(0,r.jsx)(n.h3,{id:"paint-attribute",children:"Paint Attribute"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Paint mesh attribute"]}),"\n",(0,r.jsx)(n.p,{children:"Paint the active facies attribute onto mesh vertices inside the brush sphere."}),"\n",(0,r.jsx)(n.h3,{id:"unnamed-1",children:"(unnamed)"}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"facies"})," \u2014 Add a new facies"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Button"}
1)," \u2014 Apply to selected vertices"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Facies"})," \u2014 Active facies"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"show-overlay",children:"Show Overlay"}),"\n","\n",(0,r.jsx)(n.p,{children:"Show facies as an overlay"}),"\n",(0,r.jsx)(n.h2,{id:"track",children:"Track"}),"\n",(0,r.jsx)(n.h3,{id:"strength",children:"Strength"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Power of the attribute tracking"]}),"\n",(0,r.jsx)(n.p,{children:"The higher the power the more impact larger differences have (weighting = power(difference,tracking_power)"}),"\n",(0,r.jsx)(n.h3,{id:"balance",children:"Balance"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Balance between attributes and distance"]}),"\n",(0,r.jsx)(n.p,{children:"The higher the balance (0-1) the more impact the distance between the vertices has."}),"\n",(0,r.jsx)(n.h3,{id:"distance",children:"Distance"}),"\n","\n",(0,r.jsx)(n.p,{children:"Distance Metric"}),"\n",(0,r.jsx)(n.h3,{id:"tracker",children:"Tracker"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Auto-track a surface"]}),"\n",(0,r.jsx)(n.p,{children:"Auto-track a surface across the mesh using the active attribute and tracking parameters."}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Track Initial Value"})," \u2014 Track initial attribute value"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Track Minimum"})," \u2014 Track local minimum"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Track Maximum"})," \u2014 Track local maximum"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"drainage",children:"Drainage"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Trace drainage"]}),"\n",(0,r.jsx)(n.p,{children:"Trace a drainage pathway downslope"}),"\n",(0,r.jsx)(n.h2,{id:"control-points",children:"Control Points"}),"\n",(0,r.jsx)(n.h3,{id:"gcp",children:"GCP"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Add a ground control point"]}),"\n",(0,r.jsx)(n.p,{children:"Add tiepoints (and matching targets) used to constrain mesh registration."}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Add Tiepoint"})," \u2014 Add a tiepoint"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Add Tiepoint and Target"})," \u2014 Add a tiepoint and target"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"orientation",children:"Orientation"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Add an orientation control point"]}),"\n",(0,r.jsx)(n.p,{children:"Add an orientation control point used to constrain the mesh's rotation."}),"\n",(0,r.jsx)(n.h2,{id:"corrections",children:"Corrections"}),"\n",(0,r.jsx)(n.h3,{id:"from-gcp",children:"From GCP"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Correct from GCPs"]}),"\n",(0,r.jsx)(n.p,{children:"Apply a corrective transform to the active mesh computed from its tiepoints."}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"From GCP"})," \u2014 Correct from GCP only with no scaling"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"From GCP with Scaling"})," \u2014 Correct from GCP only with scaling enabled"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"from-orientation",children:"From Orientation"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Correct from orientation"]}),"\n",(0,r.jsx)(n.p,{children:"Apply a corrective transform computed from the active mesh's orientation control points."}),"\n",(0,r.jsx)(n.h3,{id:"from-both",children:"From Both"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Correct from GCPs and orientation"]}),"\n",(0,r.jsx)(n.p,{children:"Apply a corrective transform that combines tiepoints and orientation control points."}),"\n",(0,r.jsx)(n.h3,{id:"rescale",children:"Rescale"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Rescale the mesh"]}),"\n",(0,r.jsx)(n.p,{children:"Apply a scale correction to the active mesh based on its tiepoints."}),"\n",(0,r.jsx)(n.h3,{id:"rescale-gcp",children:"Rescale GCP"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Rescale from GCPs"]}),"\n",(0,r.jsx)(n.p,{children:"Rescale the mesh from tiepoints, isotropically or anisotropically."}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Rescale From GCP"})," \u2014 Rescale From GPC"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Anisotropic Rescale GCP"})," \u2014 Anisotropic rescale from GCPs"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"lock-position",children:"Lock Position"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Lock the mesh position"]}),"\n",(0,r.jsx)(n.p,{children:"Lock the active mesh against further corrections or transforms."}),"\n",(0,r.jsx)(n.h3,{id:"translate",children:"Translate"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Translate or rotate the mesh"]}),"\n",(0,r.jsx)(n.p,{children:"Apply a translation or rotation transform to the active mesh."}),"\n",(0,r.jsx)(n.p,{children:"Dropdown items:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Along X Y or Z"})," \u2014 Translate along an axis"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Along Vector"})," \u2014 Translate along a vector"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Rotate"})," \u2014 Rotate the mesh"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"undo-transform",children:"Undo Transform"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Undo last transform"]}),"\n",(0,r.jsx)(n.p,{children:"Undo the most recent translate or rotate transform applied to the mesh."}),"\n",(0,r.jsx)(n.h3,{id:"redo-transform",children:"Redo Transform"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Redo last transform"]}),"\n",(0,r.jsx)(n.p,{children:"Redo a translate or rotate transform that was previously undone."}),"\n",(0,r.jsx)(n.h2,{id:"textures",children:"Textures"}),"\n",(0,r.jsx)(n.h3,{id:"add-texture",children:"Add Texture"}),"\n","\n",(0,r.jsx)(n.p,{children:"Add a projective texture to the mesh"}),"\n",(0,r.jsx)(n.h3,{id:"edit",children:"Edit"}),"\n","\n",(0,r.jsx)(n.p,{children:"Edit a projective texture"}),"\n",(0,r.jsx)(n.h2,{id:"itterative-closest-point",children:"Itterative Closest Point"}),"\n",(0,r.jsx)(n.h3,{id:"icp",children:"ICP"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Run iterative closest point"]}),"\n",(0,r.jsx)(n.p,{children:"Run the ICP algorithm to align the active mesh to the reference mesh."}),"\n",(0,r.jsx)(n.h3,{id:"split-view",children:"Split View"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Toggle split view"]}),"\n",(0,r.jsx)(n.p,{children:"Show the active and reference meshes side by side in a split view."}),"\n",(0,r.jsx)(n.h3,{id:"overlay",children:"Overlay"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Overlay reference mesh"]}),"\n",(0,r.jsx)(n.p,{children:"Overlay the reference mesh on top of the active mesh."}),"\n",(0,r.jsx)(n.h3,{id:"sampling",children:"Sampling"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," ICP sampling fraction"]}),"\n",(0,r.jsx)(n.p,{children:"Fraction of mesh vertices sampled when running ICP (lower values run faster)."}),"\n",(0,r.jsx)(n.h3,{id:"id_icp_percentile",children:"ID_ICP_PERCENTILE"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Correspondence percentile cutoff"]}),"\n",(0,r.jsx)(n.p,{children:"Discard correspondences in the worst percentile of distances during ICP."}),"\n",(0,r.jsx)(n.h3,{id:"max-distance",children:"Max Distance"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Maximum correspondence distance"]}),"\n",(0,r.jsx)(n.p,{children:"Maximum distance allowed between a pair of corresponding ICP points."}),"\n",(0,r.jsx)(n.h3,{id:"show-links",children:"Show Links"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Show correspondence links"]}),"\n",(0,r.jsx)(n.p,{children:"Draw lines between corresponding ICP points to visualise the alignment."}),"\n",(0,r.jsx)(n.h3,{id:"use-tiepoints",children:"Use Tiepoints"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Use tiepoint centroids"]}),"\n",(0,r.jsx)(n.p,{children:"Seed ICP using the centroids of existing tiepoints to constrain the initial alignment."}),"\n",(0,r.jsx)(n.h3,{id:"point-to-plane",children:"Point to Plane"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Point-to-plane ICP"]}),"\n",(0,r.jsx)(n.p,{children:"Minimise distance from each source point to the closest target plane (faster convergence on smooth surfaces)."}),"\n",(0,r.jsx)(n.h3,{id:"point-to-point",children:"Point to Point"}),"\n","\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Tooltip:"})," Point-to-point ICP"]}),"\n",(0,r.jsx)(n.p,{children:"Minimise distance between corresponding source and target points (classic ICP)."})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},28453(e,n,i){i.d(n,{R:()=>o,x:()=>l});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 l(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.