[{"data":1,"prerenderedAt":30222},["ShallowReactive",2],{"products":3,"industries":556,"company":1511,"udsdkguide-udstreamer":1663,"\u002Fguide\u002Fudsdk\u002Fudstreamer":2070},[4,164,378],{"id":5,"title":6,"body":7,"businessCase":7,"caseStudies":7,"closingCta":8,"description":15,"extension":16,"features":7,"hero":17,"howItWorks":24,"icon":39,"image":40,"meta":42,"navigation":43,"path":44,"pricing":7,"problem":45,"screenshots":7,"sections":62,"seo":106,"socialProof":107,"solution":128,"specs":132,"stem":162,"__hash__":163},"products\u002Fproducts\u002F1.udstream.yml","udStream",null,{"title":9,"description":10,"button":11},"Your team is making decisions on as little as 10% of their captured data. [Send us the other 90%]{.text-primary}.","Pick your hardest dataset. The one that crashes your current platform or takes six hours to subsample. We load it into udStream, render it at full resolution on a standard laptop, and walk your team through the result. 30 minutes. No commitment. You see your data and decide.",{"label":12,"to":13,"icon":14},"See It On Your Data","\u002Fcompany\u002Fcontact","i-lucide-play","Full-resolution 3D on the hardware your team carries today.","yml",{"title":18,"description":19,"youtubeId":20,"links":21},"[Every point]{.text-primary} your sensor [captured]{.text-secondary}. On the laptop you already carry.","Full resolution on the hardware you already carry. CPU-native. Fully offline. Load datasets past 200TB at full resolution on the hardware your organization already owns.","lnIEYN3aXiM",[22],{"label":12,"icon":14,"to":13,"size":23},"xl",{"title":25,"steps":26},"[Load. See. Deploy.]{.text-primary}",[27,31,35],{"number":28,"title":29,"description":30},"1","Load your data.","Drag your dataset into udStream. LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many scanners including RIEGL.",{"number":32,"title":33,"description":34},"2","See everything.","Navigate your full dataset. Mark what matters. Share what you find.",{"number":36,"title":37,"description":38},"3","Deploy anywhere.","Install udStream on air-gapped classified networks, remote mine site laptops, or field survey hardware. No cloud dependency. No GPU procurement cycle.","i-lucide-panels-top-left",{"src":41},"\u002Fimages\u002Fproducts\u002FudStream-thumb.jpg",{},true,"\u002Fproducts\u002Fudstream",{"title":46,"description":47,"image":48,"cards":49},"Your data outgrew your tools. [Years ago.]{.text-secondary}","Drones, mobile LiDAR rigs, and terrestrial scanners produce larger datasets every year. Sensor prices drop. Point density climbs. The data doubles, but the tools don't. Your rendering software forces three compromises you never agreed to:","\u002Fimages\u002Fproducts\u002Fudstream-problem.png",[50,54,58],{"stat":51,"title":52,"description":53},"10%","Cut the data.","Your team subsamples and tiles point clouds to fit the rendering tool. An 80GB drone capture becomes a 4GB approximation. Your analysts make decisions on 10% of what the sensor captured.",{"stat":55,"title":56,"description":57},"$16K-$20K\u002Fyr","Buy GPUs.","Enterprise GPUs cost $16,000 to $20,000 per year in total cost of ownership. Power, cooling, staffing, and idle capacity are not optional. Field teams cannot carry them. Classified networks will not allow them.",{"stat":59,"title":60,"description":61},"185 days","Go cloud-only.","At 2Mbps satellite bandwidth, a 4TB capture sits six months away from anyone in the field. If the network is classified, the transfer never happens. Your analysts wait, or they work without the data.",[63,89],{"title":64,"description":65,"id":66,"closingText":67,"features":68},"Your current tools made you choose. [udStream]{.text-primary} doesn't.","Full resolution or large datasets. GPU hardware or field portability. Cloud access or classified deployment. udStream removes the \"or.\"","capabilities","udStream Pro connects to [udCloud](\u002Fproducts\u002Fudcloud). Your team curates in Pro. Stakeholders open a browser link and review the same dataset at full resolution. No second install, no additional format conversion.",[69,73,77,81,85],{"title":70,"description":71,"icon":72},"Every point the sensor captured","Load datasets exceeding 200TB. Navigate without fidelity loss. The data your sensor recorded is the data your analyst sees. No tiling. No decimation. No level-of-detail approximation.","i-lucide-eye",{"title":74,"description":75,"icon":76},"No dedicated GPU required","The rendering pipeline operates on CPU and everything else only needs an integrated GPU. Runs on the same Dell Latitude, Lenovo ThinkPad, or HP EliteBook your organization already deploys. Minimum spec: 4-core CPU, 8GB RAM, SSD.","i-lucide-cpu",{"title":78,"description":79,"icon":80},"Air-gapped and offline deployment.","Host data in the cloud because you want to, not because you have to. Your data lives where you want it to be. Go fully offline- The US Navy runs it on isolated classified networks.","i-lucide-shield-check",{"title":82,"description":83,"icon":84},"One load. Every source.","LiDAR, photogrammetry, UAV captures, terrain models, and CAD overlays in a single 3D environment at full resolution. Your team stops switching tools and starts measuring, annotating, and querying across every dataset at once.","i-lucide-layers",{"title":86,"description":87,"icon":88},"Not a viewer. A workspace.","udStream is where your team works, not where they look. Measure distances, run cross-sections, and filter by classification. Compare temporal datasets to track change over time. Annotate for field teams or command staff, then export findings as CSV, GeoJSON, or MP4.","i-lucide-ruler",{"title":90,"description":91,"id":92,"features":93},"Built for teams who cannot afford to see less than [100%]{.text-secondary} of their data.","Three industries. Three deployment constraints. One engine that handles all of them.","built-for",[94,98,102],{"title":95,"description":96,"icon":97},"Defense & Intelligence","Your classified networks ban GPU workstations and commercial cloud platforms. udStream runs on government-issue hardware, on air-gapped networks, with zero connectivity requirement. The US Navy chose it for this reason.","i-lucide-shield",{"title":99,"description":100,"icon":101},"Mining & Resources","An 80GB drone capture of the full pit wall at sub-centimetre resolution. Your geotechnical lead inspects slope stability, compares against last month's survey, and annotates risk zones. On a site office laptop. The same day the drone landed.","i-lucide-mountain",{"title":103,"description":104,"icon":105},"Survey & Linear Infrastructure","A 200GB corridor dataset from Leica, DJI, and RIEGL sources loaded together at native resolution. Your senior surveyor runs QA on the full capture, flags discrepancies across sensors, and shares the live dataset with the client before the field crew returns to the office.","i-lucide-route",{"title":6,"description":15},{"logos":108,"description":127},[109,112,115,118,121,124],{"alt":110,"src":111},"US Navy","\u002Fimages\u002Flogos\u002Fus-navy.svg",{"alt":113,"src":114},"Lockheed Martin","\u002Fimages\u002Flogos\u002Flockheed-martin.svg",{"alt":116,"src":117},"Queensland Department of Transport and Main Roads","\u002Fimages\u002Flogos\u002Fqld-tmr.svg",{"alt":119,"src":120},"Leica Geosystems","\u002Fimages\u002Flogos\u002Fleica-geosystems.svg",{"alt":122,"src":123},"University of Queensland","\u002Fimages\u002Flogos\u002Fuq.svg",{"alt":125,"src":126},"Department of Natural Resources and Mines","\u002Fimages\u002Flogos\u002Fqld-nrm.svg","The US Navy runs udStream on classified, air-gapped networks. Lockheed Martin integrates it into their operational program. The Queensland Government uses it for mineral exploration digital twins on standard government hardware.",{"title":129,"description":130,"image":131},"We eliminated [all three.]{.text-primary}","Nuclideon's Unlimited Detail™ engine works on a different principle (US Patent No. 9842425; international patent family). Instead of pushing geometry through a GPU graphics pipeline, the engine uses a search algorithm that finds the exact points needed for each pixel, frame by frame, from disk or network storage. A 200TB dataset does not need 200TB of RAM. The engine streams the relevant subset for each frame and maintains full-resolution rendering at interactive frame rates on commodity hardware.","\u002Fimages\u002Fproducts\u002Fudstream-solution.png",{"title":133,"items":134},"Technical [Specifications]{.text-primary}",[135,138,141,144,147,150,153,156,159],{"label":136,"value":137},"Rendering engine","Unlimited Detail engine (CPU-native point cloud search algorithm, US Patent No. 9842425)",{"label":139,"value":140},"Maximum dataset size","No file-size ceiling. 200TB+ demonstrated in production.",{"label":142,"value":143},"GPU requirement","No dedicated GPU required. Runs on integrated graphics on any CPU that works for Windows 10+. (GPU is used for non-pointcloud elements of the scene)",{"label":145,"value":146},"Minimum hardware","4-core CPU, 4GB RAM, SSD",{"label":148,"value":149},"Recommended hardware","8-core+ CPU, 8GB+ RAM, SSD. Recommended for datasets exceeding 50GB or multi-source fusion workflows.",{"label":151,"value":152},"Operating systems","Windows, macOS, and Linux.",{"label":154,"value":155},"Supported formats","LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many scanners including RIEGL. Built-in conversion tool included.",{"label":157,"value":158},"Connectivity requirement","None if everything is local- Fully offline option. Connection required only if data is hosted on a network drive or cloud storage and when using network\u002FSaaS license options.",{"label":160,"value":161},"Licensing","Per-seat and per-site annual licence options. No call-home requirement. Contact Nuclideon for pricing.","products\u002F1.udstream","5AlKzDh17meWnmx0_sGzHomnRvUx6AlxXjVjgr-deCM",{"id":165,"title":166,"body":7,"businessCase":167,"caseStudies":206,"closingCta":216,"description":231,"extension":16,"features":7,"hero":232,"howItWorks":7,"icon":242,"image":243,"meta":245,"navigation":43,"path":246,"pricing":7,"problem":247,"screenshots":7,"sections":264,"seo":336,"socialProof":337,"solution":346,"specs":350,"stem":376,"__hash__":377},"products\u002Fproducts\u002F2.udsdk.yml","udSDK",{"title":168,"tables":169,"closing":205},"Build vs. buy. Here is what each [path costs]{.text-secondary}.",[170,188],{"title":171,"items":172},"Build It Yourself",[173,176,179,182,185],{"label":174,"value":175},"Engineering timeline","3-5 years to production grade",{"label":177,"value":178},"Engineering investment","$5M+ fully loaded",{"label":180,"value":181},"Performance guarantee","None. Your team starts from zero.",{"label":183,"value":184},"Opportunity cost","12-18 months of senior engineering time diverted from your core product",{"label":186,"value":187},"Defense\u002Fair-gap capability","Unknown. Requires separate architecture work.",{"title":189,"highlight":43,"items":190},"License udSDK",[191,194,197,200,203],{"label":192,"value":193},"Time to integration","4-12 weeks depending on platform complexity",{"label":195,"value":196},"Annual license","Starting at $50K\u002Fyear. Scales with deployment and distribution rights.",{"label":198,"value":199},"Performance floor","200TB+ datasets on standard CPUs. Proven at enterprise scale.",{"label":201,"value":202},"Engineering support","Direct from the team that built the engine",{"label":186,"value":204},"Production-ready. US Navy deployed.","Your engineering team focuses on the platform features that differentiate your product. Nuclideon handles the rendering layer that none of your competitors have solved either.",{"title":207,"items":208},"Deployed. Proven. [At scale]{.text-primary}.",[209,212,214],{"title":210,"description":211},"Leica Geosystems JetStream","Leica licensed the Unlimited Detail engine and embedded it into their JetStream product line. The SDK integration shipped inside a Tier 1 Hexagon product distributed to the global survey market. 30,000+ production users ran on the engine for years.",{"title":113,"description":213},"Lockheed Martin integrates udSDK for point cloud rendering inside their C2 systems. Classified environment. Air-gapped deployment. Government-issue hardware. Zero GPU infrastructure.",{"title":122,"description":215},"University of Queensland embedded udSDK into their command and control platform for defense applications, giving end users full-resolution 3D geospatial rendering on standard hardware in operational environments.",{"title":217,"description":218,"button":219,"secondaryLink":223,"brochurePdf":227},"Your engineering team has better problems to solve than building a [renderer from scratch]{.text-primary}.","Nuclideon spent over a decade building the Unlimited Detail engine. Leica shipped it to 30,000 users. The US Navy runs it on classified networks. Lockheed Martin embeds it in their program. Your platform can ship the same capability in one product cycle. Talk to our engineering team. Bring your integration questions. Bring your hardest dataset.",{"label":220,"to":221,"icon":222},"Talk to Engineering","\u002Fcompany\u002Fcontact?interest=sdk","i-lucide-phone",{"label":224,"to":225,"icon":226},"Access SDK Documentation","\u002Fguide\u002Fudstream","i-lucide-book-open",{"label":228,"to":229,"icon":230},"Product Overview (PDF)","\u002Fbrochures\u002FudSDK-2026-04-13.pdf","i-lucide-file-down","Your product. Our engine underneath. 200TB+ rendering inside your platform.",{"label":233,"title":234,"description":235,"links":236},"udSDK — Developer SDK","Your product. [Our engine]{.text-secondary} underneath. 200TB+ rendering inside [your platform]{.text-primary}.","Full-resolution point cloud with CPU-native rendering. Multiple TB+ datasets. Shared library inside your platform. Your customers see everything their sensors captured.",[237,238],{"label":220,"icon":222,"to":221,"size":23},{"label":224,"icon":226,"size":23,"color":239,"variant":240,"to":241},"neutral","subtle","\u002Fguide\u002Fudsdk","i-lucide-package",{"src":244},"\u002Fimages\u002Fproducts\u002FudSDK-thumb.jpg",{},"\u002Fproducts\u002Fudsdk",{"title":248,"description":249,"image":250,"cards":251},"Your rendering layer is the ceiling your customers keep [hitting]{.text-secondary}.","Your platform handles workflows, analytics, collaboration, and data management. Your customers trust it. But when they load a 50GB point cloud, your rendering layer chokes. When they try 500GB, it crashes. The problem compounds from three directions:","\u002Fimages\u002Fproducts\u002Fudsdk-problem.png",[252,256,260],{"stat":253,"title":254,"description":255},"40%","Datasets grow faster than your renderer.","Your customers buy cheaper sensors every year. Their drone fleets expand. Their LiDAR captures grow denser. Your renderer handles the same ceiling it handled two years ago.",{"stat":257,"title":258,"description":259},"3-5x","GPU dependency limits deployment.","GPU cloud instances cost 3-5x what CPU instances cost. Air-gapped defense environments cannot use GPU infrastructure at all. GPU dependency is a cost your customers absorb and a market you cannot enter.",{"stat":261,"title":262,"description":263},"$5M+","Building your own is a multi-year bet.","3-5 years of senior engineering time. $5M+ in development cost. No guarantee of matching the performance Nuclideon achieves today. Your competitors are not waiting.",[265,289,318],{"title":266,"description":267,"id":66,"features":268},"What [udSDK]{.text-primary} gives your platform.","Unlimited dataset scale. Zero GPU dependency. Compiled DLL integration. Proven integration pathways. Air-gapped deployment support. Direct engineering support.",[269,272,275,278,282,285],{"title":270,"description":271,"icon":72},"Unlimited dataset scale for your customers","udSDK processes point cloud datasets exceeding 200TB with no file-size ceiling. Your customers load datasets that crash every competing product, on the hardware they already own.",{"title":273,"description":274,"icon":76},"Zero GPU dependency in your product stack","The engine runs on standard CPUs. Your cloud hosting costs drop. Your on-premise customers stop buying GPU workstations. Your product deploys into air-gapped defense environments.",{"title":276,"description":277,"icon":242},"Compiled DLL integration","udSDK ships as a compiled library with a clean API. Your engineering team integrates it into your existing platform. Both parties protect their core IP.",{"title":279,"description":280,"icon":281},"Proven integration pathway","Unreal Engine, custom C2 platforms, GIS systems, digital twin environments, and simulation frameworks. Documented and tested integration patterns.","i-lucide-puzzle",{"title":283,"description":284,"icon":80},"Air-gapped and classified deployment support","Your defense and government customers need platforms that operate on isolated networks with zero connectivity. udSDK carries no cloud dependency and no call-home licensing.",{"title":286,"description":287,"icon":288},"Direct engineering support","When your integration engineers have a question, they talk to the engineers who wrote the code. Paul Fox and the Nuclideon technical team support every SDK integration.","i-lucide-headset",{"title":290,"description":291,"id":292,"features":293},"How udSDK fits [your stack]{.text-primary}.","udSDK ships as a compiled DLL with a C API. Your engineering team links it into your existing rendering pipeline. The API handles data loading, view management, coordinate transforms, and frame rendering. Your application controls the camera, the UI, and the workflow. Integration timeline: 4-12 weeks.","integration",[294,298,302,306,310,314],{"title":295,"description":296,"icon":297},"Unreal Engine","Plugin available for direct integration into Unreal-based applications.","i-lucide-gamepad-2",{"title":299,"description":300,"icon":301},"Custom C++ \u002F C# Applications","Native API bindings for custom platform development.","i-lucide-code",{"title":303,"description":304,"icon":305},"GIS & Spatial Platforms","Integrate into existing geospatial data viewers and analysis tools.","i-lucide-map",{"title":307,"description":308,"icon":309},"Command & Control (C2)","Embed into defense C2 systems for operational 3D geospatial rendering.","i-lucide-radar",{"title":311,"description":312,"icon":313},"Digital Twin & Simulation","Power digital twin environments with real-world point cloud data at any scale.","i-lucide-rotate-3d",{"title":315,"description":316,"icon":317},"Web Platforms (Server-side)","Server-side rendering plus streaming for browser-based delivery.","i-lucide-globe",{"title":319,"description":320,"id":92,"features":321},"Built for platform builders who refuse to let a rendering layer [limit their product]{.text-secondary}.","udSDK serves organizations building products that need unlimited-scale 3D rendering as an embedded capability.",[322,325,329,333],{"title":323,"description":324,"icon":97},"Defense Primes","Your C2 and ISR platforms need 3D geospatial rendering on classified, air-gapped environments on government-issue hardware. udSDK eliminates the GPU constraint. Lockheed Martin runs on udSDK today.",{"title":326,"description":327,"icon":328},"GIS Platform Vendors","Your customers load larger datasets every quarter. Your rendering layer hits a ceiling. udSDK removes that ceiling. Your product handles any dataset size on standard hardware.","i-lucide-map-pin",{"title":330,"description":331,"icon":332},"Game Engine & Simulation Developers","Your simulation or digital twin environment needs real-world geospatial data at terabyte scale. udSDK renders real-world point clouds inside Unreal Engine and custom frameworks.","i-lucide-monitor",{"title":334,"description":335,"icon":313},"Digital Twin Platform Builders","Infrastructure mandates demand spatial data at resolutions that strain every rendering pipeline. udSDK gives your digital twin platform the rendering backbone for any asset, any scale, any deployment.",{"title":166,"description":231},{"logos":338,"description":345},[339,340,341,342,343,344],{"alt":110,"src":111},{"alt":113,"src":114},{"alt":116,"src":117},{"alt":119,"src":120},{"alt":122,"src":123},{"alt":125,"src":126},"Four organizations have embedded or deployed the Unlimited Detail engine. The engineering team that supported every one of those integrations is the team that supports yours.",{"title":347,"description":348,"image":349},"Leica Geosystems validated this model at [30,000 users]{.text-primary}.","Leica Geosystems licensed the Unlimited Detail™ engine and embedded it into their JetStream product line. 30,000+ survey professionals ran on Paul Fox's code at production scale for years inside a Tier 1 Hexagon product. udSDK delivers the same engine to your platform as a compiled DLL. Your core IP stays yours. Ours stays ours. Your customers get unlimited-scale point cloud rendering on standard CPUs. You ship the capability in one product cycle instead of spending three years building it.","\u002Fimages\u002Fproducts\u002Fudsdk-solution.png",{"title":133,"items":351},[352,355,357,360,362,365,367,370,373],{"label":353,"value":354},"Delivery format","Compiled DLL (C API)",{"label":139,"value":356},"No ceiling. 200TB+ demonstrated.",{"label":358,"value":359},"Rendering architecture","CPU-native. Zero GPU dependency.",{"label":361,"value":152},"Supported platforms",{"label":363,"value":364},"Integration targets","Unreal Engine, C++, C#, custom platforms",{"label":157,"value":366},"None. Fully offline capable.",{"label":368,"value":369},"Source code access","No. Compiled library. Core IP protected.",{"label":371,"value":372},"Licensing model","Annual license tied to deployment scale and distribution rights",{"label":374,"value":375},"Support","Direct engineering support from the team that built the engine","products\u002F2.udsdk","FVZMdv6e6QDro54Y-EDjSFwJPdMLBZkiRCVCqxAXEa4",{"id":379,"title":380,"body":7,"businessCase":7,"caseStudies":7,"closingCta":381,"description":386,"extension":16,"features":7,"hero":387,"howItWorks":391,"icon":403,"image":404,"meta":406,"navigation":43,"path":407,"pricing":7,"problem":408,"screenshots":7,"sections":426,"seo":516,"socialProof":517,"solution":526,"specs":530,"stem":554,"__hash__":555},"products\u002Fproducts\u002F3.udcloud.yml","udCloud",{"title":382,"description":383,"button":384},"Your clients are waiting weeks for data they should [see today]{.text-primary}.","Send us a dataset from your current campaign. We configure a udCloud instance, load your data, and send your team a link. They navigate terabytes at full resolution without installing anything. No commitment. You see the difference and decide.",{"label":385,"to":13,"icon":14},"Request Free Trial","Your team works on the full dataset together. Every point visible. Every change preserved.",{"title":386,"description":388,"links":389},"Full-resolution 3D in any browser. CPU-native rendering. Stream to any device at the resolution your sensor captured.",[390],{"label":385,"icon":14,"to":13,"size":23},{"title":392,"steps":393},"From capture to your team. [Three steps]{.text-primary}.",[394,397,400],{"number":28,"title":395,"description":396},"Ingest your data.","Upload your point cloud, LiDAR, photogrammetry, or terrain datasets to udCloud. One conversion step replaces the pipeline. No tiling. No subsampling. Full resolution preserved.",{"number":32,"title":398,"description":399},"Share a link. Or connect the app.","Generate a secure URL for instant browser access. Power users connect udStream directly to your udCloud instance for full-resolution curation beyond browser memory limits.",{"number":36,"title":401,"description":402},"Collaborate live.","Multiple users navigate, measure, annotate, and markup the same dataset at the same time. Your team works in the model, not on screenshots of it.","i-lucide-cloud",{"src":405},"\u002Fimages\u002Fproducts\u002FudCloud-thumb.jpg",{},"\u002Fproducts\u002Fudcloud",{"title":409,"description":410,"image":411,"imageAlt":412,"cards":413},"Your team spent weeks cleaning, aligning, and classifying that data. Then the pipeline [threw half of it away]{.text-secondary}.","Your survey crew captures 2TB in a day. Your client sees it six weeks later — after your team installs software on every device, provisions GPU infrastructure, and pre-processes the dataset into something smaller than what you captured. Each step is sequential. Each step loses fidelity.","\u002Fimages\u002Fproducts\u002Fudcloud-problem.png","LiDAR scanner with point cloud data rising and dissolving",[414,418,422],{"stat":415,"title":416,"description":417},"Distribute","Specialist software on every stakeholder's machine.","Every project manager, client, and field supervisor who needs to review data currently installs specialist desktop software and meets GPU hardware requirements before opening a single file. udCloud removes that barrier for anyone who needs to see, measure, or share.",{"stat":419,"title":420,"description":421},"GPU","Provision GPU infrastructure.","Cloud-hosted 3D rendering platforms require GPU instances at the server, the client, or both. Every user you add scales your GPU bill. Remote sites need GPU hardware on-premise or a dedicated cloud instance. Neither is cheap. Neither is fast to provision.",{"stat":423,"title":424,"description":425},"Convert","Pre-process before sharing.","Before anyone can open a dataset, your team tiles it, subsamples it, and converts it. A 1TB capture takes an hour of processing on a good machine — before it goes into whatever pipeline your client's platform requires next. Every conversion step is a decision about what to throw away.",[427,454,472,502],{"title":428,"description":429,"id":66,"features":430},"Everything your team needs. Nothing your IT team has to touch.","Browser access. Low-bandwidth streaming. Multi-user collaboration. Flexible deployment. Real-time delivery. One conversion step.",[431,434,438,442,446,450],{"title":432,"description":433,"icon":317},"Browser or app. Zero barriers.","Your stakeholders open a URL and navigate a terabyte dataset in Chrome, Firefox, Safari, or Edge. No install, no GPU, no waiting. Teams that need the full measurement, analysis, and curation toolset connect udStream Pro to the same udCloud-hosted data without browser memory limits.",{"title":435,"description":436,"icon":437},"Low-bandwidth delivery","The Unlimited Detail engine streams only the points visible in the current view — so a 200TB dataset uses the same bandwidth as a 2GB one. Field-grade connections at remote sites, corridors, and forward-deployed positions are sufficient.","i-lucide-wifi",{"title":439,"description":440,"icon":441},"Multi-user collaboration","Multiple users navigate the same live dataset at the same time. Annotations, measurements, and markup sync across all participants. Patented caching architecture supports up to 100,000 concurrent users.","i-lucide-users-round",{"title":443,"description":444,"icon":445},"Flexible hosting","Deploy on Nuclideon's managed cloud, your own AWS\u002FAzure\u002FGCP tenancy, or a private cloud within your security boundary. Encryption in transit and at rest. Role-based access. Audit logging.","i-lucide-server",{"title":447,"description":448,"icon":449},"Real-time client delivery during active campaigns","Your clients access survey data within hours of capture, not weeks. New datasets are available as soon as conversion completes — while your crew may still be in the field.","i-lucide-clock",{"title":451,"description":452,"icon":453},"Ingest and pre-process once. Share everywhere.","Drag in terabytes of LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary scanner formats. udCloud converts to streaming format automatically — at approximately 1TB per hour on standard hardware. No tiling. No subsampling. No quality loss.","i-lucide-database",{"title":455,"description":456,"id":92,"features":457},"Data everywhere. No specialist equipment.","If your team is distributed and your datasets are massive, udCloud was built for you.",[458,461,465,469],{"title":459,"description":460,"icon":328},"Survey Firms","Your clients access data within hours of capture. Your competitor delivers a report six weeks later. Give your clients a live link before the crew leaves the site. Price it into every proposal.",{"title":462,"description":463,"icon":464},"Enterprise Distributed Teams","Centralize spatial data and stream it to any browser. Your Perth office and your Pilbara site see the same dataset at the same resolution. No desktop software to install or maintain.","i-lucide-building",{"title":466,"description":467,"icon":468},"Project Managers & Stakeholders","No software to install. No training required. Send a link and your project manager is navigating the full dataset in their browser — measurements, annotations, and all — without touching a desktop application. Open a link. See the data.","i-lucide-clipboard-list",{"title":470,"description":471,"icon":313},"Digital Twin Programs","Most digital twin programs are built for the team that created them. udCloud makes them accessible to everyone who needs them. The Queensland Government runs 171,000+ datasets on udCloud. No desktop software required for any of them.",{"type":473,"title":474,"description":475,"headers":476,"rows":478,"closingText":501},"client-comparison","Two clients. [One platform]{.text-primary}.","udCloud is the platform. Anyone with a link uses the browser. Your data team uses udStream.",{"col1":477,"col2":6},"Browser Client",[479,483,487,489,493,497],{"label":480,"col1":481,"col2":482},"Access model","Open a URL","Installed application",{"label":484,"col1":485,"col2":486},"Install required","None","Yes (Windows, macOS, Linux)",{"label":488,"col1":485,"col2":485},"GPU required",{"label":490,"col1":491,"col2":492},"Best for","Stakeholders, clients, field review","Data curation, spatial analysis, full inspection",{"label":494,"col1":495,"col2":496},"Dataset limits","Browser memory applies","No memory ceiling",{"label":498,"col1":499,"col2":500},"Offline capable","No","Yes, full air-gapped operation","Both connect to the same udCloud-hosted datasets. Your survey lead uses udStream to curate. Your client opens a link to review.",{"title":503,"description":504,"id":505,"features":506},"Your cloud. Our cloud. [Your security boundary]{.text-primary}.","Encryption in transit and at rest. RBAC. Audit logging. SSO. Standard across every deployment model.","deployment",[507,510,513],{"title":508,"description":509,"icon":403},"Nuclideon Managed Cloud","We host, manage, and maintain the infrastructure. Fastest path to production. Queensland Government runs 171,000+ datasets on this model.",{"title":511,"description":512,"icon":445},"Your Cloud (AWS \u002F Azure \u002F GCP)","udCloud deploys inside your own cloud tenancy. No data traverses external networks. Your security team retains full control.",{"title":514,"description":515,"icon":80},"Private Cloud","On-premise, private cloud, or air-gapped classified networks. For organizations with data sovereignty, classification, or compliance requirements.",{"title":380,"description":386},{"logos":518,"description":525},[519,520,521,522,523,524],{"src":126,"alt":125},{"src":111,"alt":110},{"src":114,"alt":113},{"src":120,"alt":119},{"src":117,"alt":116},{"src":123,"alt":122},"The Queensland Government uses Nuclideon to deliver a 3D Digital Twin of mineral exploration sites across distributed teams on standard hardware. The same Unlimited Detail engine that streams data to classified defense environments streams it to your browser.",{"title":527,"description":528,"image":529},"We removed the pipeline. Your data goes from [capture to anyone]{.text-primary}.","udCloud streams only the points visible in your current view. Open a URL in any browser for instant access. Connect udStream Pro for measurement, analysis, and curation without browser memory limits. The Unlimited Detail™ engine renders client-side on CPU. No GPU anywhere in the stack.","\u002Fimages\u002Fproducts\u002Fudcloud-solution.png",{"title":133,"items":531},[532,534,537,540,542,544,546,549,552],{"label":136,"value":533},"Unlimited Detail (client-side, CPU-native via WebAssembly)",{"label":535,"value":536},"Client options","Browser (Chrome, Firefox, Safari, Edge) or udStream desktop application (Windows, macOS, Linux)",{"label":538,"value":539},"Bandwidth requirement","Proportional to screen resolution, not dataset size. A 200TB dataset uses the same bandwidth as a 2GB dataset.",{"label":139,"value":541},"No ceiling. 200TB+ demonstrated in production. Up to 1,000 × 200TB datasets in a single coordinate space.",{"label":142,"value":543},"None. CPU-native rendering on the client device via WebAssembly. No GPU on server or client.",{"label":154,"value":545},"LAS, LAZ, E57, PLY, PTS, XYZ and proprietary formats from many scanners including RIEGL (converted to UDS for streaming)",{"label":547,"value":548},"Hosting options","Nuclideon managed, AWS, Azure, GCP, private cloud, air-gapped classified networks",{"label":550,"value":551},"Security","Encryption in transit and at rest. RBAC. Audit logging. SSO. CMMC certified. DISP certification pending.",{"label":160,"value":553},"Per-server license. Up to ~1,000 users per server instance. Same price across all deployment models.","products\u002F3.udcloud","qKESPtmN9pxitY6qEwDSCh270JMGXCsqb4LX3dUT_d8",[557,730,886,1083,1224,1378],{"id":558,"title":559,"body":7,"competitive":7,"cta":560,"description":565,"extension":16,"features":7,"hero":566,"howItWorks":7,"icon":572,"image":7,"meta":573,"midCta":7,"navigation":43,"objections":574,"path":587,"problem":588,"products":7,"proof":603,"quotes":649,"resourcePanel":7,"sections":7,"seo":653,"solution":654,"specs":671,"stem":703,"testimonials":7,"tools":704,"useCases":7,"__hash__":729},"industries\u002Findustries\u002Fdefense.yml","Defense & Security",{"title":561,"description":562,"links":563},"We run the proof of concept on [your hardware]{.text-primary}, in your environment.","We walk you through the process with the data you're already working with. No data leaves your network. The US Navy and Lockheed Martin started this way. Both are contracted and operational.",[564],{"label":12,"icon":14,"to":13,"size":23},"Full-resolution 3D on government-issue hardware. Air-gapped. Zero GPU. Proven on classified networks.",{"headline":567,"title":568,"description":569,"links":570},"Deployed with US Navy • Lockheed Martin • Across US and Allied Defense Infrastructure","Your classified network runs on [standard-issue hardware]{.text-primary}. Your 3D platform should too.","udCloud hosts your petabyte-class datasets on your infrastructure. udStream streams only the pixels on screen to a government-issue laptop. Zero GPU anywhere in the stack. Proven on classified, air-gapped networks.",[571],{"label":12,"icon":14,"to":13,"size":23},"i-lucide-rocket",{},{"label":575,"title":576,"cards":577},"Direct Answers","Three questions your evaluation team [will ask]{.text-primary} before it signs anything.",[578,581,584],{"question":579,"answer":580},"\"What is your security accreditation pathway?\"","NIST 800-171 is on track for late April, 2026 with C3PAO during the year. udStream can operate with zero connectivity, zero call-home licensing, and zero data exfiltration surface. The architecture is designed to meet IL4\u002FIL5 environment requirements. Source code escrow is available for qualifying programs. We work directly with your security team on programme-specific accreditation requirements.",{"question":582,"answer":583},"\"You were Euclideon. Why should I trust Nuclideon will exist in five years?\"","Euclideon's commercial execution broke down while the technology continued to perform. In August 2025, Kristian Wares and Paul Fox acquired the assets from administration and incorporated Nuclideon. The original engineering team owns the IP. Zero debt and no external investor pressures. The US Navy and Lockheed Martin signed within five months of incorporation.",{"question":585,"answer":586},"\"We have 15 years of data in Esri and Hexagon workflows.\"","Nuclideon sits alongside your existing Esri and Hexagon investment. udStream converts and ingests LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many sensor platforms. Conversion runs inside udStream on the same hardware. No third-party software required. udSDK integrates into your existing Command and Control and ISR platforms. Your workflows continue. Your analysts access full-resolution rendering of datasets on the hardware they already carry, without replacing a single tool in their current stack.","\u002Findustries\u002Fdefense",{"title":589,"description":590,"cards":591},"Your analysts face [three constraints]{.text-secondary} no incumbent solves.","Your sensors capture terabytes. Your tools render ten percent. Your analysts carry government-issue laptops into locations that ban GPU workstations. Classified requirements disqualify cloud-first vendors before the evaluation starts.\n\nudStream removes all three. Render datasets exceeding 200TB at full resolution on the hardware your team carries today. CPU-native, patented, deployed on US Navy air-gapped networks and inside Lockheed Martin C2 infrastructure.\n\nSend us the dataset that crashes your current platform. We'll render it on your hardware so you can see the value.\n",[592,596,599],{"stat":593,"title":594,"description":595},"$16K–$20K\u002Fyr","The annual cost of GPU hardware your forward teams cannot use.","Every 3D platform your analysts use demands a dedicated GPU workstation. Forward-deployed teams and shipboard operators carry government-issue laptops with integrated graphics. The hardware your analysts carry cannot run what your IT department licensed. That $16K to $20K is an annual tax on hardware that cannot go where your analysts go.",{"stat":51,"title":597,"description":598},"Your sensors capture terabytes. Your tools load megabytes.","UAV swarms and mobile LiDAR rigs produce terabyte-scale captures. Before a single point loads, your rendering software forces tiling and decimation. Your analyst makes decisions on 10% of what the sensor captured. The other 90% sits on a drive.",{"stat":600,"title":601,"description":602},"3 Tools","Three sensor types. Three ingestion pipelines.","Your LiDAR scanner produces LAS files, your drone fleet produces photogrammetry outputs, and your archive holds a third format. Each needs separate ingestion and conversion before your analyst opens a single scene. Your analyst spends hours on data prep before the analysis begins.",{"label":604,"title":605,"description":606,"cards":607},"Contracted Customers","Proven where the [clearance level]{.text-secondary} is highest.","US Navy. Lockheed Martin. Leica Geosystems. Three customers. Three different operational requirements. One engine across all of them.",[608,622,635],{"label":110,"org":609,"title":610,"description":611,"metrics":612},"Logistics and Maintenance","Classified 3D visualisation on air-gapped networks.","The US Navy selected Nuclideon to deliver classified 3D geospatial visualisation across air-gapped networks. udStream runs on the hardware already deployed in classified environments: four-core CPU, 8GB RAM, no GPU, no connectivity requirement.",[613,616,619],{"value":614,"label":615},"Air-Gapped","Network",{"value":617,"label":618},"Zero GPU","Requirement",{"value":620,"label":621},"Classified","Environment",{"label":113,"org":623,"title":624,"description":625,"metrics":626},"Command & Control Infrastructure","C2 platform integration via udSDK.","Lockheed Martin integrated Nuclideon's rendering engine into their command and control infrastructure via udSDK. The compiled DLL delivers full-resolution point cloud rendering inside existing C2 platforms without GPU dependency.",[627,629,632],{"value":166,"label":628},"Integration",{"value":630,"label":631},"C2","Platform",{"value":633,"label":634},"CPU-Native","Rendering",{"label":119,"org":636,"title":637,"description":638,"metrics":639},"JetStream Product Line","30,000+ production users validated the engine.","Leica Geosystems licensed the Unlimited Detail engine to power their JetStream product line. 30,000+ survey professionals used this engine at production scale, inside a flagship Leica enterprise product, for years. The engineers who built and supported that integration are the same engineers who now own and operate Nuclideon.",[640,643,646],{"value":641,"label":642},"30,000+","Users",{"value":644,"label":645},"Production","Scale",{"value":647,"label":648},"Enterprise","Validated",[650],{"quote":651,"name":652,"role":110},"We use Nuclideon, because it just works. It's like magic.","Lab Director",{"title":559,"description":565},{"title":655,"description":656,"cards":657},"The Unlimited Detail™ engine.","It identifies the exact voxels your screen needs, frame by frame, reading direct from wherever you store the data. CPU-native, patented (US 9842425), running today on classified US Navy networks. Your analysts open it on the hardware they already carry.",[658,663,667],{"stat":659,"title":660,"description":661,"icon":662},"200TB+","Full resolution on government-issue hardware.","The Unlimited Detail engine renders scenes exceeding 200TB, locally, on a Dell Latitude or HP EliteBook. Four-core CPU. 8GB RAM. Integrated graphics. The hardware your organization already deploys.","i-lucide-monitor-smartphone",{"stat":664,"title":665,"description":666,"icon":76},"Zero","Zero GPU across the entire deployment.","No GPU workstations to procure, maintain, or replace every three years. No GPU cloud instances to provision. The rendering pipeline operates on CPU. Your hardware budget stays intact.",{"stat":668,"title":669,"description":670,"icon":80},"100%","Air-gapped by design. Not by workaround.","udStream operates fully offline with zero connectivity requirement. No cloud dependency. No call-home licensing. No data leaves the device. The US Navy runs it on classified, air-gapped networks today.",{"label":672,"title":673,"description":674,"rows":675},"Security Architecture","Your non-negotiable filter. [Addressed]{.text-primary}.","udStream was built for environments where data cannot leave the perimeter. No call-home. No cloud dependency. No vendor infrastructure in the chain. Your network. Your data. Your control.",[676,678,681,684,687,689,692,695,698,699,701],{"label":157,"value":677},"Completely optional. Supports fully offline operation.",{"label":679,"value":680},"Cloud dependency","Optional. Air-gapped deployment standard.",{"label":682,"value":683},"Call-home licensing","Optional. License validation is local.",{"label":685,"value":686},"Data exfiltration surface","Zero. No data leaves the device.",{"label":142,"value":688},"Optional. CPU-native rendering pipeline.",{"label":690,"value":691},"CMMC certification","Level 2 (Self-Certified). C3PAO On-going.",{"label":693,"value":694},"Source code escrow","Available for qualifying programs.",{"label":696,"value":697},"Accreditation support","Direct engagement with your security team.",{"label":151,"value":152},{"label":145,"value":700},"4-core CPU, 8GB RAM, SSD. Integrated graphics.",{"label":148,"value":702},"8-core CPU, 16GB RAM, SSD.","industries\u002Fdefense",{"label":705,"title":706,"description":707,"cards":708},"Operational Capability","Your analysts work inside the [full dataset]{.text-primary}.","udStream is a workspace. Military symbology, measurement, annotation, real-time change detection, and multi-sensor fusion on the complete point cloud your sensors captured.",[709,712,715,719,723,726],{"title":710,"description":711,"icon":84},"Multi-Sensor Fusion","LiDAR, photogrammetry, UAV imagery, terrain models, and CAD overlays fuse into a single navigable 3D environment. Your analyst works in one environment. Everything in it.",{"title":713,"description":714,"icon":88},"Survey-Grade Measurement","Measure distances and areas in 3D. Generate cross-sections, terrain profiles, and measurement reports. Full-resolution rendering preserves the precision the sensor captured.",{"title":716,"description":717,"icon":718},"Change Detection","Compare historical and current captures in real time to identify environmental changes, track objects of interest, and visualise differences between temporal datasets. Your analyst sees what changed and when.","i-lucide-git-compare-arrows",{"title":720,"description":721,"icon":722},"Military Symbology","Standard military symbology and a built-in JMSML library. Create and share operational scenes with unit icons, vehicles, and terrain features. Communicate operational intent in the environment the data describes.","i-lucide-scan-eye",{"title":724,"description":725,"icon":441},"Annotation and Collaboration","Multiple analysts work in the same 3D environment simultaneously. Annotations, markups, and measurements synchronise across sessions via udCloud. Your team in the SCIF and your team in the field use the same tools.",{"title":727,"description":728,"icon":662},"Cross-Platform Deployment","Windows, macOS, and Linux. The same installation runs on the standard-issue laptop in the SCIF, the rugged field tablet in the vehicle, and the analyst workstation at headquarters.","zF9NYSJVDZa6xLc5QPLKgby1ZudX4r_HlChyX4nyjdM",{"id":731,"title":732,"body":7,"competitive":733,"cta":736,"description":741,"extension":16,"features":7,"hero":742,"howItWorks":748,"icon":761,"image":7,"meta":762,"midCta":7,"navigation":43,"objections":7,"path":763,"problem":764,"products":778,"proof":807,"quotes":7,"resourcePanel":7,"sections":7,"seo":852,"solution":853,"specs":7,"stem":866,"testimonials":7,"tools":7,"useCases":867,"__hash__":885},"industries\u002Findustries\u002Fdigital-twins.yml","Digital Twins",{"heading":734,"body":735},"The trade-off every other platform forces","Esri, Hexagon, and Trimble serve most of the market well. Their rendering pipelines are GPU-dependent. In a controlled environment with stable connectivity and funded IT infrastructure, that works.\n\nDefence and mining deployments do not always offer those conditions. Classified networks prohibit GPU-heavy infrastructure. Remote mine sites run on generator power and intermittent satellite. Forward-deployed units carry the hardware that fits in a vehicle.\n\nGPU-dependent platforms require buyers to accept a choice: reduce the data to fit the hardware, or buy hardware the environment cannot support. Nuclideon's CPU-native architecture removes that choice.\n",{"title":737,"description":738,"links":739},"Bring your dataset. We build the digital twin on [your hardware]{.text-primary}, in your environment.","Your team runs the evaluation on your data, your hardware, your environment. The Queensland Government, the US Navy, and Lockheed Martin each started this way. They are all still running Nuclideon.",[740],{"label":12,"icon":14,"to":13,"size":23},"Terabyte-scale digital twins at full resolution on standard hardware. CPU-native rendering at any scale, on any network. Air-gapped, cloud, or embedded.",{"headline":743,"title":744,"description":745,"links":746},"Proven with Queensland Government • US Navy • Lockheed Martin","Your digital twin should contain [every point]{.text-primary} the sensor captured. Not [10%]{.text-secondary} of it.","Nuclideon renders terabyte-scale point clouds at full resolution, in real time, on the hardware your team already carries. Standard CPUs. Any network, including classified.",[747],{"label":12,"icon":14,"to":13,"size":23},{"label":749,"title":750,"steps":751},"How It Works","From raw capture to full-resolution twin. [Three steps]{.text-primary}. Standard hardware.",[752,755,758],{"number":28,"title":753,"description":754},"Ingest.","Connect udStream to terabytes of LiDAR, photogrammetry, terrain models, and imagery. We ingest native formats including LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from a variety of sensors platforms including RIEGL.",{"number":32,"title":756,"description":757},"Navigate.","Full-resolution real-time 3D on standard hardware. Measure, annotate, compare the same site across capture dates, filter by classification, and fuse multi-source data into a single navigable environment. Your team works inside the digital twin.",{"number":36,"title":759,"description":760},"Collaborate.","Your field teams, analysts, and partners access the same full-resolution twin from any location. Browser-based access for distributed teams. Embedded rendering for platform partners. On-premise or air-gapped for classified and disconnected environments. One dataset, every stakeholder, the deployment model your organisation requires.","i-lucide-building-2",{},"\u002Findustries\u002Fdigital-twins",{"title":765,"description":766,"cards":767},"Every digital twin program builds from [a fraction]{.text-secondary} of what the sensor captured.","Your team builds the digital twin from a fraction of what the sensor captured. Standard rendering platforms cannot process the full dataset at full resolution. The full dataset sits in storage, untouched.",[768,771,774],{"stat":51,"title":769,"description":770},"Your digital twin is an approximation.","A mine site generates terabytes of point cloud per quarter. A corridor survey produces 200GB per campaign. A naval asset scan runs tens to hundreds of gigabytes per vessel. Your digital twin platform downsamples every dataset it receives. The twin your team interrogates contains a fraction of the data the sensor captured. (Based on LiDAR industry rendering standards for point cloud visualisation workflows.)",{"stat":593,"title":772,"description":773},"GPU dependency compounds every year.","Enterprise GPU workstations carry a total cost of ownership of $16,000 to $20,000 per seat per year — hardware, power, cooling, and staffing combined. Classified environments prohibit them. Mine sites break them. Every field deployment, office, and remote viewer adds to the overhead. GPU cloud instances run at 3–5x the cost of standard compute. At 10 seats, the annual burden compounds to $160K–$200K before licences or support contracts.",{"stat":775,"title":776,"description":777},"30-40%","Your teams are disconnected when operational decisions happen.","Classified networks cannot use cloud platforms. Mine sites operate on satellite connections as slow as 2Mbps — enough to move email, not a 4TB drone capture. Field survey teams lose connection for 30-40% of the working day. A digital twin that requires cloud connectivity fails where operational decisions happen. (Based on Nuclideon deployment data across mining and defence field operations.)",{"label":779,"title":780,"description":781,"cards":782},"Products","Three products. [CPU-native, full-resolution rendering]{.text-primary} no GPU-dependent platform delivers.","Nuclideon built three products for three deployment environments. Pick the path that fits yours. Combine them when your program spans multiple.",[783,792,799],{"product":6,"subtitle":784,"description":785,"features":786,"to":44},"On-Premise & Air-Gapped","Your team runs full-resolution digital twins on classified networks, mine sites, and field offices. Data and rendering stay on device. The US Navy and Queensland Government run udStream.",[787,788,789,790,791],"Full-resolution rendering on standard hardware","Air-gapped and offline deployment","CPU-native rendering","Multi-sensor data fusion","Measurement, annotation, and analysis tools",{"product":380,"subtitle":793,"description":794,"features":795,"to":407},"Browser-Based Collaboration","udCloud delivers full-resolution digital twins to any device with a browser. Distributed teams navigate terabyte datasets over standard connections. Clients review project data as the capture progresses.",[796,435,439,797,798],"Browser-based 3D streaming","Flexible hosting (private or public cloud)","Browser-native access",{"product":166,"subtitle":800,"description":801,"features":802,"to":246},"Embeddable Engine","udSDK puts full-resolution digital twin rendering inside your platform. Your engineering team integrates the Unlimited Detail engine as a compiled DLL. Your customers get terabyte-scale 3D on the hardware they already run.",[803,804,789,805,806],"Compiled DLL with clean API","Unreal Engine, Command and Control (C2), GIS, and simulation integration","Air-gapped integration support","Direct engineering support from the team that wrote the code",{"label":808,"title":809,"description":810,"cards":811},"Deployment Evidence","Digital twins in production. [Queensland Government. US Navy. Lockheed Martin.]{.text-secondary} Verified at scale.","Queensland Government. US Navy. Lockheed Martin. Each sent their data. Nuclideon rendered it at full resolution on their hardware. Each signed.",[812,826,833,844],{"label":813,"org":814,"title":815,"description":816,"metrics":817},"Queensland Government","3D Digital Twin Program","Nuclideon unified 171,000+ datasets into a single navigable twin.","The Queensland Government selected Nuclideon to power their statewide 3D Digital Twin. Nuclideon fuses LiDAR, photogrammetry, and geochemical data into a single navigable environment. Full resolution on standard government hardware. GIS integrations included.",[818,821,823],{"value":819,"label":820},"171,000+","Datasets",{"value":822,"label":645},"TB+",{"value":824,"label":825},"Multi-Source","Data",{"label":110,"org":609,"title":827,"description":828,"metrics":829},"The US Navy runs classified digital twins on air-gapped infrastructure.","The US Navy deployed Nuclideon for classified 3D geospatial visualisation across air-gapped networks. Nuclideon renders digital twins of naval assets and operational environments on standard government-issue hardware. CPU-native. Offline-capable.",[830,831,832],{"value":614,"label":615},{"value":620,"label":621},{"value":633,"label":634},{"label":113,"org":623,"title":834,"description":835,"metrics":836},"udSDK powers the rendering engine inside Lockheed Martin's C2 infrastructure.","Lockheed Martin selected udSDK to deliver 3D geospatial rendering inside their Command and Control infrastructure. The library lives directly into the C2 stack. Full-resolution point cloud rendering on CPU.",[837,838,841],{"value":166,"label":628},{"value":839,"label":840},"Embedded","Engine",{"value":842,"label":843},"Active","Deployment",{"label":119,"org":636,"title":637,"description":845,"metrics":846},"Leica Geosystems licensed the Unlimited Detail engine to power their JetStream product line. 30,000+ survey professionals ran on this code at production scale for a decade inside a Tier 1 Hexagon product. Nuclideon's core engine carries a decade of production validation.",[847,848,849],{"value":641,"label":642},{"value":644,"label":645},{"value":850,"label":851},"Decade+","Development",{"title":732,"description":741},{"title":854,"description":855,"cards":856},"Your full dataset. [Rendered.]{.text-primary} On the hardware you already carry.","Nuclideon's Unlimited Detail™ engine finds the exact points needed for each pixel on screen, drawn from datasets the sensor captured at full resolution. CPU-native rendering on standard hardware.",[857,860,863],{"stat":659,"title":858,"description":859,"icon":72},"Full resolution at any scale.","Your team navigates the complete captured dataset at full resolution. The Unlimited Detail™ engine streams only the points each pixel on screen requires. Every point the sensor recorded is still there. Accessible at any camera position.",{"stat":664,"title":861,"description":862,"icon":76},"CPU-Native. Any Hardware.","Your team renders on the hardware they already carry. The same Dell Latitude that runs standard enterprise applications renders 200TB+ at full resolution. Standard CPUs on classified networks, mine sites, and field offices. Identical performance across all three.",{"stat":614,"title":864,"description":865,"icon":403},"Deploy in any environment.","Classified networks. Remote mine sites. Private cloud. Browser access within closed networks. Your team operates Nuclideon the same way across all four.","industries\u002Fdigital-twins",{"label":868,"title":869,"cards":870},"Use Cases","Four verticals. [Full-resolution digital twins]{.text-primary} in all of them.",[871,874,877,881],{"vertical":95,"icon":97,"title":872,"description":873},"Run full-resolution digital twins on air-gapped, classified networks.","Your team accesses naval assets, forward operating bases, and operational terrain at full resolution on air-gapped infrastructure. Standard CPUs. All processing stays within the network perimeter. The US Navy runs Nuclideon on classified networks.",{"vertical":99,"icon":101,"title":875,"description":876},"Access the full pit capture from the field edge to your geologists.","The drone captures the active pit at 80GB per flight. The Panasonic Toughbook at the pit edge loads the full dataset at full resolution. Geologists in Perth interrogate the same dataset for blast design. The Queensland Government builds their 3D Digital Twin on Nuclideon.",{"vertical":878,"icon":105,"title":879,"description":880},"Infrastructure & Survey","Render corridor-scale surveys at full fidelity on existing hardware.","Your team renders 200GB corridor surveys at full fidelity on existing hardware. Quarterly change detection runs across entire networks from a single capture. Condition monitoring from the complete captured dataset.",{"vertical":882,"icon":242,"title":883,"description":884},"Platform Builders","Embed digital twin rendering into your product.","Your customers need unlimited-scale 3D inside your platform. udSDK ships as a compiled DLL. Your engineering team integrates it. Your IP stays yours. Your customers get terabyte-scale digital twins inside the platform they already use.","429wg46a6fhHQ1FHxChF-6VIJ75gjASQ8lqSpt019Ps",{"id":887,"title":888,"body":7,"competitive":889,"cta":929,"description":938,"extension":16,"features":7,"hero":939,"howItWorks":7,"icon":945,"image":7,"meta":946,"midCta":947,"navigation":43,"objections":7,"path":952,"problem":953,"products":966,"proof":985,"quotes":7,"resourcePanel":7,"sections":7,"seo":1018,"solution":1019,"specs":1033,"stem":1057,"testimonials":7,"tools":7,"useCases":1058,"__hash__":1082},"industries\u002Findustries\u002Fmaritime.yml","Maritime",{"label":890,"title":891,"paragraphs":892,"table":897},"WHY YOUR CURRENT PLATFORM CANNOT DO THIS","Every major 3D visualization platform made the same architectural choice. We made [the opposite one]{.text-primary}.",[893,894,895,896],"GPU-dependent platforms were built for environments where power budgets are unconstrained and classified accreditation is not in scope. Shipboard and shore-facility naval environments are the inverse of those assumptions. GPU workstations cannot pass shipboard weight and power budgets. They cannot clear classified network accreditation. At $16,000–$20,000 per year per unit in lifecycle cost, the cost compounds across every vessel and facility in a fleet.","Cloud-dependent platforms require connectivity. Shipboard classified networks permit zero external cloud uplinks. Offshore platforms operate at 2Mbps satellite bandwidth on a clear day. A 4TB survey dataset sits months out of reach. Every vendor offering scalable 3D visualization encounters the same disqualification when the conversation reaches shipboard or shore-facility accreditation: the architecture depends on a network that does not exist in those environments.","Decimation-dependent platforms reduce your data to fit the tool. The structural defects, corrosion signatures, and intelligence features your sensor captured survive as raw scan data: until the visualization tool subsamples them before the file opens. Your analysts make decisions on an approximation.","Nuclideon's search algorithm works in the opposite direction. It finds the exact points each screen pixel needs, frame by frame, using only CPU. The result is full resolution on the hardware your network permits, in the environments where every other option fails the requirements stage before deployment begins.",{"headers":898,"rows":902},[618,899,900,901],"GPU-dependent platforms","Cloud-dependent platforms","Nuclideon",[903,909,914,919,924],{"cells":904},[905,906,907,908],"Shipboard deployment","✗ Hardware restrictions","✗ No connectivity","✓",{"cells":910},[911,912,913,908],"Classified network","✗ Fails accreditation","✗ Cloud blocked",{"cells":915},[916,917,918,908],"Full-resolution data","✗ Decimation required","✗ Subsampling required",{"cells":920},[921,922,923,908],"Standard hardware","✗ $16K–$20K\u002Fyr per unit","✗ Requires cloud GPU",{"cells":925},[926,927,928,908],"Air-gapped operation","Partial","✗ Cloud-only",{"title":930,"description":931,"links":932},"Send us your hardest dataset. We run it on [your hardware]{.text-primary}, in your security environment, on your network.","Your most trusted engineer runs the proof of concept against your own data, on your own hardware, in your own security environment. The US Navy started with a proof of concept. Lockheed Martin did the same. Your evaluation follows the same path.",[933,934],{"label":12,"icon":14,"to":13,"size":23},{"label":935,"icon":936,"size":23,"color":239,"variant":240,"to":937},"Read the TCO Analysis","i-lucide-file-text","\u002Ftco","Full-resolution 3D visualization of naval assets and port infrastructure on standard shipboard hardware. No GPU. No cloud. Air-gapped by design.",{"headline":940,"title":941,"description":942,"links":943},"Deployed with US Navy • Lockheed Martin • Queensland Government • Leica Geosystems","Full-resolution 3D on [shipboard hardware]{.text-primary}.","udStream renders terabyte-scale point clouds at full resolution on the standard-issue laptop your crew carries today. No GPU workstation. No cloud connection. The US Navy runs it on classified, air-gapped networks. Lockheed Martin embeds it into C2 infrastructure via udSDK. Every GPU workstation your vessels don't need is $16,000–$20,000 per year your programme doesn't spend.",[944],{"label":12,"icon":14,"to":13,"size":23},"i-lucide-ship",{},{"title":948,"description":949,"links":950},"Your programme runs the same [evaluation path]{.text-primary}.","The US Navy ran a proof of concept on their own hardware, in their own security environment. Lockheed Martin did the same. Your evaluation follows the same path: your most trusted engineer, your own dataset, your own network. Your data stays in your environment. Your engineer runs the evaluation.",[951],{"label":12,"icon":14,"to":13,"size":23},"\u002Findustries\u002Fmaritime",{"title":954,"description":955,"cards":956},"Three constraints every maritime 3D platform [fails to solve]{.text-secondary}.","A vessel hull scan generates 40–80GB. A full port infrastructure survey produces 200GB+. A coastal LiDAR campaign covering 100km of shoreline hits 1TB before processing. Your sensors capture all of it. Your rendering tools load 10% of it. Your operators need to make structural, operational, and intelligence decisions on the other 90%.",[957,960,963],{"stat":593,"title":958,"description":959},"GPU hardware costs more than most programs account for.","Enterprise GPU workstations cost $16,000–$20,000 per year in total cost of ownership: power, cooling, staffing, and idle capacity multiply the procurement cost. That figure compounds across every vessel and facility in your fleet. Moving to cloud GPU creates a problem that runs deeper than budget: cloud GPU doesn't work reliably at sea. The analyst who needs the data works from a shore-side approximation. The operator making decisions aboard the vessel never has it.",{"stat":51,"title":961,"description":962},"Decimation destroys what the survey captured.","Datasets at this scale exceed what current rendering tools handle at full resolution. Your analysts navigate 10% of what the sensor recorded — a subsampled approximation. The remaining 90% is discarded before the file opens. Structural defects, corrosion signatures, and intelligence features live in the data your current tools never load.",{"stat":664,"title":964,"description":965},"Classified networks cannot use cloud.","Shipboard classified networks permit zero external cloud connections. Every vendor that depends on cloud-hosted rendering hits the same disqualification point when shipboard or shore-facility accreditation requirements enter the evaluation. The architecture requires a network the environment prohibits. Most programmes discover this after procurement, not before.",{"label":779,"title":967,"description":968,"cards":969},"Three products. One maritime [capability]{.text-primary} no competitor delivers.","Each product maps to a deployment model. Pick the path that matches your maritime environment. Combine them if your programme spans multiple deployment models.",[970,975,979],{"product":6,"subtitle":784,"description":971,"features":972,"to":44},"Shipboard networks, shore facilities, and offshore platforms render at full sensor resolution on the hardware your crew carries. The US Navy runs udStream on classified, air-gapped networks: the environment that disqualifies every cloud-first and GPU-dependent platform.",[973,974,789,790,791],"Full-resolution rendering on standard-issue laptops","Air-gapped deployment",{"product":380,"subtitle":793,"description":976,"features":977,"to":407},"Port authority teams, survey firms, and distributed maritime stakeholders access full-resolution data through a browser. Clients see survey results during the campaign, not weeks after.",[796,435,439,797,978],"Zero client-side installation",{"product":166,"subtitle":800,"description":980,"features":981,"to":246},"Embed maritime 3D rendering into naval C2 systems, maritime operational platforms, and port management software. Your engineering team integrates the compiled DLL. Both parties protect their core IP.",[803,982,983,984,806],"C2, simulation, and maritime platform integration","CPU-native rendering pipeline","Air-gapped deployment support",{"label":808,"title":986,"description":987,"cards":988},"Two classified programmes. Neither cleared another vendor.","US Navy. Lockheed Martin. Each sent their data. Nuclideon rendered it at full resolution on their hardware. Each signed.",[989,997,1008],{"label":110,"org":609,"title":990,"description":991,"metrics":992},"The US Navy cleared it for classified, air-gapped deployment.","The US Navy selected Nuclideon for classified 3D geospatial visualization on air-gapped networks. Naval assets and operational environments render on standard government-issue hardware at full sensor resolution. udStream processes everything on the device. The data never leaves the network.",[993,994,995],{"value":614,"label":615},{"value":617,"label":618},{"value":996,"label":842},"Contract",{"label":113,"org":998,"title":999,"description":1000,"metrics":1001},"C2ISR","Lockheed Martin embedded the engine into live C2 infrastructure.","Lockheed Martin integrated the Unlimited Detail engine into their command and control infrastructure via udSDK. The compiled DLL runs unlimited-scale point cloud rendering inside existing C2 and ISR platforms on standard CPU: the hardware already in the C2 stack.",[1002,1005,1007],{"value":1003,"label":1004},"SOW","Executed",{"value":1006,"label":631},"C2\u002FISR",{"value":166,"label":628},{"label":119,"org":636,"title":637,"description":1009,"metrics":1010},"Leica Geosystems licensed the Unlimited Detail engine to power their JetStream product line for over a decade. 30,000+ survey professionals ran production workloads on this code inside a Tier 1 Hexagon product. When Euclideon went into administration in 2024, the JetStream product lost access to that engine. Nuclideon is the original engineering team. The engine never changed hands. The company around it did.",[1011,1013,1015],{"value":641,"label":1012},"Peak Users",{"value":1014,"label":644},"10+ Yrs",{"value":1016,"label":1017},"Original","Team",{"title":888,"description":938},{"title":1020,"description":1021,"cards":1022},"Built for environments where [every other option fails accreditation]{.text-primary}.","The Unlimited Detail engine (US Patent No. 9842425) uses a search algorithm that finds the exact points your screen needs, frame by frame, on standard CPU. It loads what the current view requires: a 200TB dataset uses the same compute as a 2GB one. The rendering load scales with what's on screen, not the size of the dataset.",[1023,1026,1029],{"stat":659,"title":1024,"description":1025,"icon":662},"Full resolution on standard shipboard hardware.","The Unlimited Detail engine renders on the standard-issue laptop your crew carries today. There is no file-size ceiling: a 2GB capture and a 200TB coastal survey run at the same hardware requirement. The algorithm loads only what's in view.",{"stat":668,"title":1027,"description":1028,"icon":72},"Every point the sensor captured.","Every point the sensor captured reaches the analyst's screen. Vessel scans, port surveys, and offshore captures rendered at full sensor resolution — as the sensor delivered them.",{"stat":1030,"title":1031,"description":1032,"icon":80},"Air-Gap","Air-gapped by design.","udStream operates offline. Licence validation is local. All data stays on the device. It works where the network doesn't reach.",{"label":672,"title":1034,"description":1035,"rows":1036},"Every architectural decision assumes [the network does not exist]{.text-primary}.","Your programme operates in environments where connectivity is a liability. The table below answers what your security team will ask.",[1037,1039,1041,1043,1045,1047,1049,1051,1052,1054,1056],{"label":157,"value":1038},"Zero. Offline operation.",{"label":679,"value":1040},"None. Air-gapped by default.",{"label":682,"value":1042},"None. License validation is local.",{"label":685,"value":1044},"Zero in air-gapped deployment. udCloud sharing is a separate, opt-in product.",{"label":142,"value":1046},"None. CPU-native rendering pipeline.",{"label":905,"value":1048},"Standard-issue laptop. No dedicated hardware.",{"label":693,"value":1050},"Available for qualifying programmes.",{"label":696,"value":697},{"label":690,"value":1053},"Certified.",{"label":151,"value":1055},"Windows, macOS, Linux.",{"label":145,"value":700},"industries\u002Fmaritime",{"label":1059,"title":1060,"cards":1061},"Maritime Applications","From vessel to port to [open water]{.text-primary}. One rendering capability.",[1062,1067,1072,1077],{"vertical":1063,"icon":1064,"title":1065,"description":1066},"Naval Asset Visualization","i-lucide-anchor","Full-resolution 3D digital twins of vessels on classified shipboard networks.","Compartments, hull structures, and topside geometry rendered at full sensor resolution on the standard-issue laptop your crew carries. udStream processes everything on the device. Data stays on the vessel. The US Navy runs it on classified, air-gapped networks. Lockheed Martin embeds it into their C2 systems via udSDK. Neither required new hardware to deploy it.",{"vertical":1068,"icon":1069,"title":1070,"description":1071},"Port & Harbour Infrastructure","i-lucide-warehouse","Above-water and below-water data in a single navigable environment.","Port infrastructure surveys, quay wall scans, and bathymetric point clouds fused into one 3D environment. Port authority teams and survey contractors access the same full-resolution dataset: field teams via udStream on standard laptops, remote stakeholders via a browser link through udCloud. Anyone with a browser link sees the full-resolution data. Clients see results during the campaign, not weeks after.",{"vertical":1073,"icon":1074,"title":1075,"description":1076},"Hydrographic & Coastal Survey","i-lucide-waves","Multi-sensor survey data at full resolution, on delivery.","LiDAR, photogrammetry, and bathymetric point clouds from field campaigns rendered at full fidelity: the complete capture, not a processed approximation. Survey firms deliver via udCloud during the campaign. The client sees the full-resolution dataset before the vessel leaves the survey area.",{"vertical":1078,"icon":1079,"title":1080,"description":1081},"Offshore & Subsea","i-lucide-drill","Platform inspection data visualized on standard field hardware.","Offshore platform scans, pipeline surveys, and subsea infrastructure data rendered at full resolution on the field laptop at the platform. udStream runs entirely on the device: the hardware your engineer already carries. When bandwidth is available, shore-based teams access the same full-resolution data via udCloud.","_O1dw1bczKGzM8aNPbuN8dgqq7qsVDnGW8DX-6mXQL0",{"id":1084,"title":99,"body":7,"competitive":7,"cta":1085,"description":1090,"extension":16,"features":7,"hero":1091,"howItWorks":7,"icon":1097,"image":7,"meta":1098,"midCta":1099,"navigation":43,"objections":1103,"path":1115,"problem":1116,"products":1132,"proof":1163,"quotes":1183,"resourcePanel":7,"sections":7,"seo":1189,"solution":1190,"specs":7,"stem":1203,"testimonials":7,"tools":1204,"useCases":7,"__hash__":1223},"industries\u002Findustries\u002Fmining.yml",{"title":1086,"description":1087,"links":1088},"Send us a dataset from your [current pit]{.text-primary}.","We load it. We render it at full resolution on a standard laptop. You see your data the way your survey team captured it.",[1089],{"label":12,"icon":14,"to":13,"size":23},"Terabyte-scale pit data at full resolution on a Panasonic Toughbook. No GPU. No decimation. Perth sees what site sees.",{"headline":1092,"title":1093,"description":1094,"links":1095},"Proven with Queensland Government · Leica Geosystems · 30,000+ Users","Your pit data at [full resolution]{.text-primary}. On a Toughbook. At the [pit edge]{.text-secondary}.","Your drone produces 80GB per flight. Your pit generates terabytes per quarter. Nuclideon renders the full dataset on a Toughbook, integrated GPU, no subsampling.",[1096],{"label":12,"icon":14,"to":13,"size":23},"i-lucide-pickaxe",{},{"title":1100,"links":1101},"See these capabilities on your [pit data]{.text-primary}.",[1102],{"label":12,"icon":14,"to":13,"size":23},{"label":575,"title":1104,"cards":1105},"Three questions your team [will ask]{.text-primary}.",[1106,1109,1112],{"question":1107,"answer":1108},"\"Show me it working on my data, at my site.\"","Every customer started with a proof of concept. The Queensland Government sent their data. We rendered it at full resolution on standard hardware. They signed a contract. The process is the same for every new engagement: your data, our engine, your hardware. No commitment required to see it work.",{"question":1110,"answer":1111},"\"What happened to Euclideon?\"","Euclideon's commercial execution broke down while the technology continued to perform. In August 2025, the original engineers acquired the assets, cleared the debt, and incorporated Nuclideon. Same engineering team. Zero debt. 100% gross margin. IP and patents owned outright. Leica ran this engine for 30,000+ users inside JetStream for years. That relationship wound down for commercial reasons, not technology. The engineers who built it own the company now. Source code escrow is available for qualifying contracts.",{"question":1113,"answer":1114},"\"I have 15 years of Leica and Trimble data.\"","Nuclideon ingests LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many scanners including RIEGL. If you work in the mining and resources sector, your data almost certainly works with udStream today.","\u002Findustries\u002Fmining",{"title":1117,"description":1118,"cards":1119},"Three problems. [None of them optional]{.text-secondary}.","Every drone flight adds more data. The tools your team uses today were built for datasets a quarter of this size. Something has to give, and right now it's the data.",[1120,1124,1128],{"stat":1121,"title":1122,"description":1123},"80GB","The drone landed an hour ago.","A single drone flight produces 80GB. A quarter of pit surveys produces terabytes. Your current viewer loads a subsampled fraction. Your team makes decisions on that fraction. Or worse- you can't process it and make decisions until the harddrive gets back to HQ.",{"stat":1125,"title":1126,"description":1127},"$8K–$20K to acquire","Built for a server room. Deployed at a mine site.","GPU workstations cost AUD $8K–$20K to acquire, need replacing every three years, and fail at site from dust, vibration, and temperature. That acquisition cost does not include power, cooling, or FIFO logistics.",{"stat":1129,"title":1130,"description":1131},"30–40%","Perth works from a fraction of the capture.","Transmitting a full pit survey over WAN at full resolution is not feasible, so the data gets subsampled before it leaves site. The corporate geology team in Perth works from a degraded subset. Blast design and resource model updates happen on incomplete information.",{"label":843,"title":1133,"description":1134,"cards":1135},"Site captures. Perth accesses. [Nobody waits]{.text-primary}.","Nuclideon fits the infrastructure reality of a mining operation. Full capability at site when connectivity is zero. Full resolution access at corporate when it matters. One dataset, no duplication, no degradation.",[1136,1145,1153],{"product":1137,"subtitle":1138,"description":1139,"features":1140,"to":44},"udStream at Site","On-Premise & Field Hardware","Full capability on the hardware your survey team carries. Runs on-premise, on a local server, or standalone on a Toughbook.",[1141,1142,1143,1144,791],"Full-resolution rendering on Toughbooks and field laptops","Offline operation with zero connectivity dependency","Local server deployment for site-wide access","Multi-sensor data ingestion without format conversion",{"product":1146,"subtitle":793,"description":1147,"features":1148,"to":407},"udCloud for Corporate","The geology team in Perth opens a browser and navigates the same dataset the surveyor captured that morning. No install. No subsampling. Full resolution over standard WAN.",[1149,1150,1151,1152,978],"Browser-based 3D streaming to any device","Low-bandwidth delivery over corporate WAN","Multi-user collaboration on live datasets","Flexible hosting (Nuclideon managed or your cloud tenancy)",{"product":1154,"subtitle":1155,"description":1156,"features":1157,"to":13},"Hybrid Deployment","Site & Corporate, One Dataset","Your survey team captures at site on udStream. Data syncs to udCloud when connectivity allows. Corporate gets full-resolution access in the browser. Nobody waits for upload windows.",[1158,1159,1160,1161,1162],"Capture and visualize at site without waiting for upload","Automatic sync to cloud when connectivity is available","Corporate access to full-resolution data in the browser","Field teams retain full capability during connectivity outages","One dataset, two access paths, zero resolution compromise",{"label":808,"title":1164,"description":1165,"cards":1166},"Deployed on [real data]{.text-secondary}, at production scale.","Queensland Government sent their data. Nuclideon rendered it at full resolution on standard hardware. They signed a contract.",[1167,1176],{"label":813,"org":814,"title":1168,"description":1169,"quote":1170,"quoteAttribution":1171,"metrics":1172},"171,000+ datasets. Full resolution. Standard hardware.","The Queensland Government selected Unlimited Detail to power their statewide 3D Digital Twin for mineral exploration, fusing LiDAR, photogrammetry, and geochemical survey data from over 171,000 datasets into a single navigable environment. No GPU infrastructure. No data decimation. Runs on government-issue hardware.","Australia is poised to become a premier region for responsible sourcing of critical minerals and energy transition metals. Finding and making decisions around the wealth of this data is a significant challenge.","Claire Cote, UQ Sustainable Minerals Institute",[1173,1174,1175],{"value":819,"label":820},{"value":822,"label":645},{"value":617,"label":618},{"label":119,"org":636,"title":1177,"description":1178,"metrics":1179},"30,000+ survey professionals validated the engine.","Leica Geosystems licensed the Unlimited Detail engine to power their JetStream product line. 30,000+ survey professionals ran on this code at production scale for years inside a Tier 1 Hexagon product. Mining surveyors using Cyclone-adjacent workflows operated on the same rendering engine Nuclideon delivers today.",[1180,1181,1182],{"value":641,"label":642},{"value":644,"label":645},{"value":850,"label":851},[1184],{"quote":1185,"name":1186,"role":1187,"avatar":1188},"Australia has outstanding precompetitive geoscience data. Finding and making decisions across that wealth of information is a significant challenge, a nice problem to have, but still a problem. Digital Earth solves it, and Nuclideon's technology is what makes that possible. This is what public, academic, and private partnership should look like.","Steven Micklethwaite","UQ Sustainable Minerals Institute","\u002Fimages\u002Fpeople\u002FStevenMicklethwaite.jpg",{"title":99,"description":1090},{"title":1191,"description":1192,"cards":1193},"Nuclideon removes [all three]{.text-primary}.","The Unlimited Detail™ engine finds the exact points your screen needs for each camera position, and only those points. A 200TB dataset loads in the same time as a 2GB one. Dataset size stops being the constraint.",[1194,1197,1201],{"stat":659,"title":1195,"description":1196},"Full resolution on the Toughbook at the pit edge.","The Unlimited Detail engine renders datasets exceeding 200TB at full fidelity on a Panasonic Toughbook. Four-core CPU. 8GB RAM. Integrated graphics. The survey hardware your sites already run.",{"stat":1198,"title":1199,"description":1200},"Data Fusion","Bring all your data together in one scene, the scan from last week, the one from today and the mine plan for tomorrow.","One dataset, everywhere. At site on the Toughbook. In Perth in the browser. On the field laptop. Your data stays synchronized and complete wherever your team works, without duplication or degradation. Make decisions with the full context.",{"stat":668,"title":669,"description":1202},"udCloud streams the full-resolution dataset to Perth over standard WAN. The chief geologist navigates the same dataset the surveyor captured at site. Streaming only what they need, don't transmit what you don't. udStream operates fully offline with zero connectivity requirement when connectivity is unavailable. No cloud dependency. No data leaves site.","industries\u002Fmining",{"label":705,"title":1205,"description":1206,"cards":1207},"What your survey team does with it [every shift]{.text-primary}.","Your team works inside the full-resolution dataset. Measurement, comparison, fusion, and shift handover on the same data the sensor captured.",[1208,1211,1213,1215,1218,1221],{"title":710,"description":1209,"icon":1210},"Leica scanner data, DJI UAV photogrammetry, RIEGL mobile mapping, and mine design surfaces load into one 3D environment. No switching between tools.","i-lucide-combine",{"title":713,"description":1212,"icon":88},"Measure distances, wall angles, bench faces, and surface areas directly in the full-resolution point cloud. Generate cross-sections, terrain profiles, and measurement reports. Stockpile volume calculation is available through direct customer engagement.",{"title":716,"description":1214,"icon":718},"Compare temporal captures to track pit progression, stockpile movement, and rehabilitation compliance against baseline surveys. Your survey team sees what changed between this morning's capture and last week's baseline.",{"title":1216,"description":1217,"icon":84},"Plan vs. Actual","Overlay mine design surfaces against actual survey captures. Track excavation progress and identify deviation from blast design before it compounds.",{"title":724,"description":1219,"icon":1220},"Mark up the 3D dataset with annotations, notes, and measurements. Hand over between shift teams and share with the corporate geology team without exporting or converting. Annotations synchronise via udCloud.","i-lucide-message-square-text",{"title":727,"description":1222,"icon":662},"Windows, macOS, and Linux. The same installation runs on the Panasonic Toughbook at the pit edge, the field laptop at the survey station, and the office workstation at corporate.","5ew__MLabyq-hPpRm-ikOi_oStiZFeOAB_8CtjoBgtk",{"id":1225,"title":1226,"body":7,"competitive":7,"cta":1227,"description":1232,"extension":16,"features":7,"hero":1233,"howItWorks":7,"icon":1239,"image":7,"meta":1240,"midCta":7,"navigation":43,"objections":1241,"path":1252,"problem":1253,"products":1268,"proof":1292,"quotes":7,"resourcePanel":7,"sections":7,"seo":1313,"solution":1314,"specs":1329,"stem":1355,"testimonials":7,"tools":7,"useCases":1356,"__hash__":1377},"industries\u002Findustries\u002Froad-and-rail.yml","Road & Rail",{"title":1228,"description":1229,"links":1230},"Send us a corridor dataset from your [current survey]{.text-primary}.","We load it. We render it at full resolution on a standard laptop, the same way we rendered terabytes for the Queensland Government 3D Digital Twin. Your team evaluates on their own terms, on their own data, on their own timeline. We work within structured proof of concept frameworks and formal tender processes for public sector clients.",[1231],{"label":12,"icon":14,"to":13,"size":23},"Corridor-scale survey data at full resolution. Clients see it during the campaign. Field teams work offline. No GPU. No tiling. No compromise.",{"headline":1234,"title":1235,"description":1236,"links":1237},"Proven with Queensland Government • Leica Geosystems • Powering 30,000+ Leica JetStream Users","Your clients see the full [200GB]{.text-primary}, live at full resolution, while the survey is still running.","A 100km corridor survey produces 200GB. Every other platform cuts that data to fit the hardware. We render the complete dataset on a standard laptop (no GPU, nothing removed) and stream it to your client's browser before you leave the field.",[1238],{"label":12,"icon":14,"to":13,"size":23},"i-lucide-tram-front",{},{"label":575,"title":1242,"cards":1243},"Three questions your evaluation team [will ask]{.text-primary}.",[1244,1247,1250],{"question":1245,"answer":1246},"\"What are your data portability guarantees?\"","Open-format export. LAS, LAZ, and E57 as standard. Your data is yours, a portability clause in the license makes that contractual, not just a promise. No proprietary lock-in. Your existing capture platforms, processing workflows, and client deliverable formats work as-is.",{"question":1248,"answer":1249},"\"How much does client viewer access cost?\"","udCloud enables browser-based client access. Your client opens a link and navigates the full-resolution dataset. We do not charge per-viewer for read-only client access, most platforms do. Your clients see their data. Your procurement team does not manage a separate viewer licence per recipient.",{"question":1110,"answer":1251},"Euclideon's commercial execution broke down while the technology continued to perform. In August 2025, the original engineers acquired the assets, cleared the debt, and incorporated Nuclideon. Same engineering team. Zero debt. 100% gross margin, no cost of goods, pure IP licensing. IP and patents owned outright. Leica ran this engine for 30,000+ JetStream users at production scale for years. That relationship wound down for commercial reasons, not technology. The Queensland Government, the US Navy, and Lockheed Martin are paying customers today. Source code escrow is available for enterprise agreements.","\u002Findustries\u002Froad-and-rail",{"title":1254,"description":1255,"cards":1256},"Three constraints costing you [contracts]{.text-secondary}.","A 100km corridor survey now produces 200GB of point cloud data. Your tools were built for a fraction of that. The data your sensors capture is not the data your clients receive, and your competitors are closing that gap.",[1257,1261,1265],{"stat":1258,"title":1259,"description":1260},"200GB","Your vis tool subsamples the data before your client sees it.","A 100km rail survey produces 200GB of point cloud data. To display it, your tools tile and subsample it. The density your LiDAR captured, the reason you invested in high-spec hardware, is stripped out before your client opens the file. What they receive is not what the sensor recorded. The advantage of better capture disappears at the delivery layer.",{"stat":1262,"title":1263,"description":1264},"Weeks","Your clients wait weeks for data your tools could have delivered days ago.","A two-month corridor campaign means two months of silence for your client. Processing holds everything. Oregon DOT measured the cost of this model: the breakeven point for high-frequency data delivery is 79km of scanning per year. Beyond that, every week of delay is margin and repeat business walking to whoever delivers first. Your tools were built to deliver a file at the end. Your client needs the full dataset the moment processing is done, not a subsampled version that fits the tool.",{"stat":775,"title":1266,"description":1267},"Your surveyors capture data they cannot access until they leave the corridor.","Remote corridor locations have no reliable internet. That is the infrastructure reality for road and rail survey. Cloud-based tools require connectivity to function. Your surveyors spend the day capturing data they cannot review, query, or share until they return to the office. Decisions that should happen on-site get deferred. Defects that should be caught in the field get carried into the office. Main Roads Western Australia operationalised 19,000km of corridor data across hundreds of staff. That scale is only viable if the data is accessible at the point of capture, not after it.",{"label":843,"title":1269,"description":1270,"cards":1271},"Field captures. Client accesses. [Full resolution. No delay beyond processing]{.text-primary}.","Your survey crew captures at the corridor. Your client sees the data in a browser. Your project office manages the programme. Three deployment paths, one rendering engine.",[1272,1279,1287],{"product":6,"subtitle":1273,"description":1274,"features":1275,"to":44},"Field Teams & On-Premise","Full capability offline on standard field laptops. Your surveyors process and visualise at the corridor, at the rail siding, at the bridge inspection. No GPU. No connectivity requirement. Main Roads Western Australia operationalised 19,000km of corridor data across hundreds of staff on this model.",[1276,1277,1144,791,1278],"Full-resolution rendering on standard field hardware","Zero connectivity dependency","Local server deployment for project office access",{"product":380,"subtitle":1280,"description":1281,"features":1282,"to":407},"Client Delivery & Collaboration","Your client opens a browser link and navigates the full-resolution dataset the moment processing is complete. No software installation. No per-viewer licence. Every competing platform makes the client wait longer for a subsampled file. We deliver first, at full fidelity.",[1149,1283,1284,1151,1285,1286],"Client access without per-viewer licensing overhead","Low-bandwidth delivery over standard connections","Hosting: Nuclideon managed, your AWS\u002FAzure\u002FGCP tenancy, or private cloud","Australian data hosting (PROTECTED cloud) for public sector",{"product":166,"subtitle":1288,"description":1289,"features":1290,"to":246},"Platform Integration","Embed the rendering capability into existing infrastructure management platforms. Your engineering team integrates the compiled DLL. Your platform gains terabyte-scale 3D without building a renderer. Leica Geosystems proved this model at scale: 30,000+ JetStream users, a decade of production deployment, inside a Tier 1 Hexagon product.",[803,1291,983,984],"Infrastructure platform, GIS, and simulation integration",{"label":1293,"title":1294,"description":1295,"cards":1296},"Technology Validation","Proven at [government scale]{.text-secondary}. Powering 30,000+ Leica JetStream users.","The Queensland Government sent their data. We rendered terabytes at full resolution on standard hardware. Leica Geosystems licensed the engine to power JetStream, their flagship product serving 30,000+ users inside the Hexagon group.",[1297,1306],{"label":813,"org":814,"title":1298,"description":1299,"metrics":1300},"171,000+ datasets. Multi-source fusion. Standard hardware.","The Queensland Government selected Nuclideon to power their statewide 3D Digital Twin. LiDAR, photogrammetry, and geochemical survey data fused into a single navigable environment, 171,000+ datasets, rendered at full resolution on standard government-issue hardware. No GPU procurement. No cloud dependency. GIS integrations including Esri delivered to staff on the hardware they already owned.",[1301,1302,1305],{"value":819,"label":820},{"value":1303,"label":1304},"Full","Resolution",{"value":499,"label":419},{"label":119,"org":636,"title":1307,"description":1308,"metrics":1309},"30,000+ Leica JetStream users ran on this engine. For years. At production scale.","Leica Geosystems licensed the Unlimited Detail™ engine to power JetStream, their flagship product line inside the Hexagon group. Infrastructure and linear asset surveyors used this engine daily, at production scale, for years. The same rendering engine Nuclideon delivers today. Leica's current JetStream product no longer runs on it. The team that built it does.",[1310,1311,1312],{"value":641,"label":642},{"value":644,"label":645},{"value":850,"label":851},{"title":1226,"description":1232},{"title":1191,"description":1315,"cards":1316},"Your client sees the data the sensor captured, at full resolution, on a standard laptop, the moment processing is complete. We built the Unlimited Detail™ engine to render what every other platform subsamples. CPU-native. No GPU. Nothing removed.",[1317,1320,1324],{"stat":1303,"title":1318,"description":1319,"icon":72},"Your client receives the complete dataset. No exceptions.","We render the complete 200GB corridor dataset on a standard laptop. No tiling. No subsampling. The density your LiDAR captured is the density your client navigates. Oregon DOT measured the cost of subsampling over five years: the breakeven point for high-frequency, full-fidelity delivery is 79km of scanning per year. Beyond that, every compromised deliverable is a contract renewal at risk.",{"stat":1321,"title":1322,"description":1323,"icon":317},"Live","Your client has the full dataset the moment processing is done.","udCloud streams the full-resolution corridor dataset to any browser, no install, no account setup for your client. They open a link and move through the complete data the day processing completes, not weeks later with a subsampled version that fits a competing tool. The firm that delivers first at full fidelity does not wait for contract renewals.",{"stat":1325,"title":1326,"description":1327,"icon":1328},"Offline","Full capability in the field. Cloud when you need it.","udStream runs at full capability with zero connectivity requirement. Your surveyors review, query, and share data at the point of capture, before they return to the office, before decisions get deferred, before defects get carried into the processing queue. Main Roads Western Australia operationalised 19,000km of corridor data across hundreds of staff. That scale requires data access at the corridor, not after it. When connectivity returns, udStream syncs to udCloud automatically. Nothing manual. Nothing lost.","i-lucide-wifi-off",{"label":1330,"title":1331,"description":1332,"rows":1333},"Standards & Integration","Your formats. Your standards. [No lock-in]{.text-primary}.","We sit inside your existing survey-to-delivery pipeline. Your capture platforms, your data standards, your client deliverable formats stay exactly as they are. We handle the rendering layer your current tools cannot.",[1334,1337,1340,1343,1346,1349,1352],{"label":1335,"value":1336},"Import formats","LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many scanners including RIEGL.",{"label":1338,"value":1339},"Export formats","LAS, LAZ, E57, and open formats. Your data leaves in the format your client requires. No conversion, no proprietary wrapper.",{"label":1341,"value":1342},"Coordinate systems","All major coordinate systems and datums supported natively. No manual reprojection required.",{"label":1344,"value":1345},"Standards pathway","ANZLIC and ISO 19115 compatibility pathway. Spatial metadata preserved through ingest and export.",{"label":1347,"value":1348},"Data portability","Your data is yours under contract. A portability clause in every enterprise licence specifies open export formats, no proprietary packaging, and your right to exit without data conversion cost.",{"label":1350,"value":1351},"GIS integration","Deployed alongside Esri on the Queensland Government 3D Digital Twin. Compatible with Bentley and existing survey workflows. We handle the rendering layer, your GIS stack stays in place.",{"label":1353,"value":1354},"Client deliverables","We deliver full-resolution data to clients via browser link (udCloud) or standard export formats. Your client receives the complete dataset, not a subsampled version that fits the tool.","industries\u002Froad-and-rail",{"label":1357,"title":1358,"cards":1359},"Applications","From corridor capture to [client delivery]{.text-primary}. Full resolution. One platform.",[1360,1364,1369,1373],{"vertical":1361,"icon":105,"title":1362,"description":1363},"Corridor Survey Delivery","Your client navigates the complete corridor dataset the day processing finishes.","Rail authorities and road agencies receive the complete corridor dataset the moment processing is complete. No subsampling. No file size ceiling. Your client opens a link in any browser and navigates full-resolution data, the same density the sensor captured. Main Roads Western Australia runs this model at 19,000km of scanned roads, used daily by 250+ staff across engineering, maintenance, and planning.",{"vertical":1365,"icon":1366,"title":1367,"description":1368},"Bridge & Structure Inspection","i-lucide-landmark","Leica scanner and DJI UAV data in one navigable environment. No switching between tools.","Fuse Leica scanner captures with DJI UAV photogrammetry in a single 3D environment. The structural engineer queries clearances, checks geometry, and reviews surface condition across both sensor sources in one session. Survey-grade accuracy preserved across every source. No resolution loss at the fusion layer.",{"vertical":1370,"icon":718,"title":1371,"description":1372},"Asset Condition Monitoring","Your asset managers see exactly what changed between surveys, and by how much.","Track infrastructure change, subsidence, vegetation encroachment, and rehabilitation progress at full sensor resolution. Compare quarterly captures without subsampling, the measurement accuracy that pavement management and structural monitoring depend on compounds with every scan cycle. Your client sees what changed, where, and by how much, in the same browser session as the full corridor dataset.",{"vertical":1374,"icon":761,"title":1375,"description":1376},"National Digital Twin Programs","The rendering layer that scales with the mandate.","Infrastructure digitization mandates require higher-resolution, higher-frequency spatial data delivery. We meet the data volume where incumbent tools hit their ceiling, not by compressing the data to fit the platform, but by rendering the full dataset on the hardware agencies already own. Local government digital twin programmes deliver 150-200% ROI within three years when the rendering layer stops subsampling the source data. We are the rendering layer that makes that possible.","KN1YXSpk2qyyVWWa_Ra9u5Ic2ilIaxrCi32AwsT_aNU",{"id":1379,"title":1380,"body":7,"competitive":7,"cta":1381,"description":1232,"extension":16,"features":7,"hero":1386,"howItWorks":7,"icon":1392,"image":7,"meta":1393,"midCta":7,"navigation":43,"objections":1394,"path":1405,"problem":1406,"products":1421,"proof":1452,"quotes":7,"resourcePanel":7,"sections":7,"seo":1475,"solution":1476,"specs":7,"stem":1490,"testimonials":7,"tools":1491,"useCases":7,"__hash__":1510},"industries\u002Findustries\u002Fsurvey.yml","Survey & Infrastructure",{"title":1382,"description":1383,"links":1384},"Send us a dataset from your [current corridor]{.text-primary}.","We load it. We render it at full resolution on the Dell Latitude your field team carries. You see your data the way your sensor captured it, not the way your current tools allow. No contract. No commitment. Most evaluations are complete within five business days.",[1385],{"label":12,"icon":14,"to":13,"size":23},{"headline":1387,"title":1388,"description":1389,"links":1390},"Proven with Leica Geosystems • 30,000+ Survey Professionals • Queensland Government","Your corridor data at [full resolution]{.text-primary}. Delivered to your client [during the capture]{.text-secondary}.","A 200GB corridor survey produces 200GB of usable data. Not a tiled fraction. Not post-processed six weeks later. Nuclideon loads the full dataset on your field laptop, streams it to your client in a standard browser, and runs on the hardware your team already carries.",[1391],{"label":12,"icon":14,"to":13,"size":23},"i-lucide-pencil-ruler",{},{"label":575,"title":1242,"cards":1395},[1396,1399,1402],{"question":1397,"answer":1398},"\"Our clients require deliverables in LAS, LAZ, E57, Shapefile, and GeoTIFF. What formats do you support?\"","Nuclideon ingests LAS, LAZ, E57, PLY, PTS, XYZ, and proprietary formats from many scanners including RIEGL. Export delivers LAS and OBJ with more formats coming later.",{"question":1400,"answer":1401},"\"What happened to Euclideon? Why should I build my delivery workflow on your platform?\"","Euclideon's commercial execution broke down while the engineering team continued to deliver. The technology never failed. Nuclideon exists because the original engineering team acquired the assets, cleared the debt, and rebuilt the company. Zero debt. 100% gross margin. No investor exit pressure. IP and patents owned outright — including US Patent No. 9842425, the Unlimited Detail algorithm. Source code escrow available for enterprise agreements. The engine powered Leica JetStream at 30,000+ users for years. The technology is production-proven. The company is new, lean, and has no structural pressure to compromise it.",{"question":1403,"answer":1404},"\"What measurement accuracy does Nuclideon support? Our firm signs off on survey deliverables.\"","Distances, areas, cross-sections, and terrain profiles are measured directly against every point the sensor captured. The data is not tiled or subsampled before measurement — your measurement is against the actual instrument output. A Leica ScanStation captured at ±3mm is measured at ±3mm. A RIEGL VZ-400i captured at ±5mm at 100m is measured at ±5mm. Nuclideon does not introduce error at the rendering layer. The accuracy your instrument delivers is the accuracy your deliverable reflects.","\u002Findustries\u002Fsurvey",{"title":1407,"description":1408,"cards":1409},"Three constraints your current workflow [cannot solve]{.text-secondary}.","Your capture hardware has improved every year. The tools that process and deliver the data have not kept up. That gap shows up on your project timeline and in your client conversations.",[1410,1413,1417],{"stat":1258,"title":1411,"description":1412},"Your deliverable is a fraction of your capture.","A corridor survey produces 200GB of point cloud data. Your tools tile and subsample it before it reaches the client. The resolution your sensor captured is not the resolution your client receives. Higher-density capture creates more waste, not more value. Your current tools cannot render what your sensors already know how to capture.",{"stat":1414,"title":1415,"description":1416},"3+ Tools","Every sensor type demands a different processing chain.","Leica scanner for bridges. DJI UAV for corridor photogrammetry. RIEGL mobile LiDAR for rail track. Each sensor produces a different format. Each format requires a separate processing environment. Your analysts spend more hours converting and reconciling data than analysing it. On every mixed-sensor project, that overhead compounds.",{"stat":1418,"title":1419,"description":1420},"Isolated","Zero client access until processing is done.","Your clients want to interrogate the survey dataset during the campaign. Your current tools require a full processing cycle before any visualisation is possible. By the time the data is viewable, the field team has moved on. The client has waited weeks. Survey firms that deliver faster win the next contract.",{"label":843,"title":1422,"description":1423,"cards":1424},"Field captures. Clients access. [Nobody waits]{.text-primary}.","Nuclideon fits the infrastructure reality of a survey operation. Your field team works at full capability when connectivity is unreliable. Your client accesses the same data in a browser when the field team syncs to cloud. One dataset, two access paths, every point the sensor captured.",[1425,1434,1442],{"product":6,"subtitle":1426,"description":1427,"features":1428,"to":44},"Field & On-Premise","udStream runs on the Dell Latitude your field surveyors carry, on a local server for site-wide team access, or standalone at a remote corridor site. Your team has full measurement and visualisation capability the moment the sensor stops — no upload required, no connectivity needed.",[1429,1430,1431,1432,1433],"Distances, areas, cross-sections, and terrain profiles measured against the full point cloud","Multi-sensor ingestion: Leica scanner, DJI UAV, and RIEGL mobile LiDAR in one environment","Offline operation — full capability without connectivity","Local server deployment for teams working across a corridor site","Annotations and change detection on captured data before leaving site",{"product":380,"subtitle":1435,"description":1436,"features":1437,"to":407},"Browser-Based Client Delivery","Your client opens a browser and navigates every point your field team captured that morning. No software installation. No GPU on their machine. The CPU-native renderer runs in the browser — the same engine your field team uses in udStream. Regional offices on degraded connections can access the full dataset.",[1438,1439,1151,1440,1441],"CPU-native rendering in the browser — no server-side GPU required","Role-based access: separate permissions for client viewers, analysts, and project managers","Nuclideon managed or your own cloud tenancy","100,000 concurrent users on a single deployment",{"product":1443,"subtitle":1444,"description":1445,"features":1446,"to":13},"Capture to Client, Same Session","Capture to Client Delivery","Your field team loads captured data into udStream at site. udStream syncs automatically to udCloud when connectivity is available — no manual trigger. Your client accesses every point the sensor captured in a browser before the field team has returned to the office. One dataset, two access paths, every point intact.",[1447,1448,1449,1450,1451],"Load and visualise captured data in the field — no upload required before starting","Background sync to udCloud triggers automatically when connectivity is detected","Client navigates the full point cloud in a browser on any device, no install required","Field team retains full measurement capability if the sync is delayed or connectivity drops","12D XML alignment data supported for road and rail corridor handoff",{"label":1453,"title":1454,"description":1455,"cards":1456},"Production Deployments","Two organisations tested it on their data. Both deployed it.","Leica Geosystems licensed the engine for a commercial product serving 30,000 users. The Queensland Government selected it for a national-scale geospatial programme. Neither relationship was a pilot. Both are in production.",[1457,1467],{"label":119,"org":636,"title":1458,"description":1459,"metrics":1460},"30,000 survey professionals ran their work on this engine.","For years, the world's largest survey equipment manufacturer ran its enterprise visualisation product on this engine. Leica Geosystems licensed the Unlimited Detail engine and embedded it into their JetStream product line — the platform their global install base used to process and deliver survey data. The CPU-native rendering architecture that powered JetStream is the same architecture your team deploys today.",[1461,1462,1464],{"value":641,"label":642},{"value":1463,"label":628},"SDK",{"value":1465,"label":1466},"No. 1 Survey","OEM",{"label":813,"org":814,"title":1468,"description":1469,"metrics":1470},"171,000+ datasets. Full resolution. Commodity hardware.","The Queensland Government selected Nuclideon to power their statewide 3D Digital Twin for mineral exploration. 171,000+ datasets rendered at full resolution on commodity hardware, with zero GPU infrastructure. The deployment is geoscience data, not corridor survey. The hardware proof and scale proof transfer directly.",[1471,1472,1474],{"value":819,"label":820},{"value":1473,"label":645},"2TB+",{"value":617,"label":618},{"title":1380,"description":1232},{"title":1477,"description":1478,"cards":1479},"Nuclideon removes [all three]{.text-primary}. Here is what that unlocks.","The Unlimited Detail™ engine finds the exact points your screen needs from datasets of any size, on a standard CPU. No approximation. No GPU. No ceiling on what your sensors can capture.",[1480,1483,1487],{"stat":668,"title":1481,"description":1482},"During the campaign. Not after it.","udCloud streams the full-resolution dataset to your client's browser while your field team is still on site. No decimation. Viewer access is priced at a fraction of a full seat, so every stakeholder who needs the data can get it, with the right licence for the role they actually play.",{"stat":1484,"title":1485,"description":1486},"200GB → 200GB","Every point your sensor captured.","Nuclideon renders your full corridor dataset at full fidelity. No tiling. No level-of-detail reduction. When your team measures a bridge clearance or a rail alignment in the dataset, they are measuring against the actual sensor output. Not a processed approximation. What you sign off on is what the instrument recorded.",{"stat":617,"title":1488,"description":1489},"No GPU in the field or the office.","The Unlimited Detail engine runs on standard CPUs. The same Dell Latitude your field surveyors carry. The same office workstations your analysts use. No GPU procurement, no specialist IT support, no three-year replacement cycle. Your hardware budget stays where it belongs. On capture equipment.","industries\u002Fsurvey",{"label":705,"title":1492,"description":1493,"cards":1494},"What your team delivers with it on [every project]{.text-primary}.","Your analysts work inside the full dataset — every point the sensor captured. Measurement, analysis, client delivery, and multi-sensor fusion on the hardware your field team already carries.",[1495,1498,1501,1503,1505,1508],{"title":1496,"description":1497,"icon":317},"Real-Time Client Delivery","While the campaign is active, your client opens a browser and navigates every point the sensor captured. No software install on their machine. No per-seat viewer fee.",{"title":1499,"description":1500,"icon":105},"Corridor-Scale Visualization","Load and navigate 100km+ road, rail, and pipeline corridor datasets at full resolution. The full dataset loads on a standard laptop — nothing tiled, nothing simplified. Your analyst and your client work with what the sensor captured, not a processed fraction of it.",{"title":710,"description":1502,"icon":84},"Leica scanner data, DJI UAV photogrammetry, RIEGL mobile LiDAR, and terrestrial captures load into a single 3D environment without format conversion. One dataset. Every source. Your QA team stops switching tools.",{"title":713,"description":1504,"icon":88},"Measure distances, areas, and cross-sections directly in the full-resolution 3D environment, against every point the sensor captured, not a decimated proxy. Generate terrain profiles and surface comparisons for design verification and compliance reporting. Volumetric calculations are available through direct engagement with the Nuclideon team.",{"title":1506,"description":1507,"icon":718},"Change Detection & Monitoring","Compare temporal captures to track corridor condition, surface movement, and asset degradation over time. Quarterly re-surveys overlay against the same full-resolution baseline, not a decimated version from the previous campaign. Survey firms running monitoring contracts quote this capability as a service line, not a one-off deliverable.",{"title":727,"description":1509,"icon":662},"Windows, macOS, and Linux. The same installation runs on the field laptop at a remote corridor site, the analyst workstation in the office, and the client's browser via udCloud. No GPU-dependent configurations on any of them.","nSZ_7TbPgnbMm8FcZdod1Gou4ikI945IFx7woV-GD0I",[1512,1580,1631],{"id":1513,"title":1514,"body":7,"columns":1515,"cta":1547,"description":1553,"extension":16,"features":1554,"hero":7,"icon":572,"image":1572,"meta":1574,"navigation":43,"path":1575,"seo":1576,"showContactForm":1577,"stem":1578,"__hash__":1579},"company\u002Fcompany\u002F0.index.yml","About Us",{"title":1516,"features":1517},"Our Leadership Team",[1518,1529,1538],{"title":1519,"description":1520,"text":1521,"image":1522,"links":1524},"Kristian Wares","CEO & Co-Founder","20 years in enterprise technology sales across [Microsoft, SAP, Apple, Dell, and Cisco]{.text-primary}. Kristian built the commercial operation that signed the US Navy, Lockheed Martin, and the Queensland Government in Nuclideon's first five months. He runs [go-to-market strategy]{.text-secondary}, commercial partnerships, and customer relationships.",{"src":1523},"\u002Fimages\u002Fteam\u002FKristianWares_LinkedIn.jpg",[1525],{"label":1526,"icon":1527,"to":1528},"LinkedIn","i-lucide-linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fkristianwares\u002F",{"title":1530,"description":1531,"text":1532,"image":1533,"links":1535},"Paul Fox","CTO & Co-Founder","Paul built the [Unlimited Detail engine]{.text-secondary}. Over a decade of continuous development, he created a CPU-native point cloud rendering algorithm that no one in the geospatial industry has replicated. [Leica Geosystems shipped his code to 30,000+ users]{.text-primary}. The US Navy runs it on classified networks. Paul leads architecture, engineering, and product development.",{"src":1534},"\u002Fimages\u002Fteam\u002FPaulFox_LinkedIn.jpg",[1536],{"label":1526,"icon":1527,"to":1537},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fpaul-fox-66b49a40\u002F",{"title":1539,"description":1540,"text":1541,"image":1542,"links":1544},"Corey Cook","President C2 Horizons & Nuclideon US Operations","Corey Cook is a senior defense and logistics leader with more than [three decades of experience]{.text-primary} across government, industry, and large-scale operational environments. He spent 16 years at Lockheed Martin, most recently as Director and Chief Engineer for Advanced Technology Solutions in Logistics and Sustainment, where he [led business development]{.text-secondary}, strategic planning, technology innovation, and government and industry partnerships.",{"src":1543},"\u002Fimages\u002Fteam\u002FCoreyCook_LinkedIn.jpg",[1545],{"label":1526,"icon":1527,"to":1546},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcorey-cook-23599b9\u002F",{"title":1548,"description":1549,"links":1550},"The technology is proven. The company is built.","The question is whether your team keeps working with 10% of their data. Send us your hardest dataset. We render it at full resolution on standard hardware.",[1551],{"label":12,"to":1552,"icon":14},"\u002Fdemo","We built the engine the geospatial market said was impossible. Then Leica shipped it to 30,000 users.",{"title":1555,"description":1556,"items":1557},"[Company]{.text-primary} Facts","Nuclideon renders terabyte-scale 3D spatial data at full resolution, in real time, on hardware you already own. No GPU. No downsampling. No cloud dependency.",[1558,1562,1566,1569],{"title":1559,"description":1560,"icon":1561},"Zero Debt","Incorporated August 2025, Brisbane, Australia. Cash-positive from November 2025 with no external investors.","i-lucide-badge-check",{"title":1563,"description":1564,"icon":1565},"100% Gross Margin","Patented technology with the Unlimited Detail algorithm delivering industry-leading margins.","i-lucide-trending-up",{"title":1567,"description":1568,"icon":80},"Patented Technology","Unlimited Detail engine: over a decade of continuous development, proven at enterprise scale.",{"title":1570,"description":1571,"icon":317},"Proven at Scale","Heritage: Leica Geosystems JetStream shipped to 30,000+ production users worldwide.",{"src":1573},"\u002Fimages\u002Findustries\u002Fdefence-thumb.jpg",{},"\u002Fcompany",{"title":1514,"description":1553},false,"company\u002F0.index","lD2wLUrcnegNSy_mLWhMH7gcktPrnerv8nlmBjGcayk",{"id":1581,"title":1582,"body":7,"columns":7,"cta":1583,"description":1591,"extension":16,"features":1592,"hero":7,"icon":572,"image":7,"meta":1626,"navigation":43,"path":1627,"seo":1628,"showContactForm":1577,"stem":1629,"__hash__":1630},"company\u002Fcompany\u002F1.careers.yml","Careers",{"title":1584,"description":1585,"links":1586},"Nothing right now...","We currently have no open positions, but we are always looking for talented and passionate people to join our team. If you think you would be a good fit for Nuclideon, please send us your resume and cover letter!",[1587],{"label":1588,"to":1589,"icon":1590},"Send us your resume","mailto:office@nuclideon.com?subject=Job%20Application","i-lucide-mail","Help us solve the challenge of managing, viewing, and sharing large, complex 3D datasets.",{"title":1593,"description":1594,"features":1595},"How we [work]{.text-primary}","We’re looking for people who believe in the power of teamwork and want to join us to visualize the future.",[1596,1602,1607,1611,1616,1621],{"title":1597,"description":1598,"icon":1599,"ui":1600},"Customer Focused","We are a customer-focused company and work closely with our customers and partners to solve their problems. We are not a faceless corporation, we are a small team of passionate people who care about our customers.","i-lucide-dollar-sign",{"leading":1601},"bg-accented\u002F50 p-2 rounded-md border border-muted border-dashed",{"title":1603,"description":1604,"icon":1605,"ui":1606},"Competent Colleagues","Work with a team of highly skilled and experienced professionals who are passionate about their work and just as keen to learn and innovate as you are.","i-lucide-biceps-flexed",{"leading":1601},{"title":1608,"description":1609,"icon":305,"ui":1610},"Varied Work","We're a small team, so you will get to (and have to sometimes) work on a variety of projects, technologies and devices with cross-training and upskilling opportunities.",{"leading":1601},{"title":1612,"description":1613,"icon":1614,"ui":1615},"Empowered Structure","We trust our staff to make the right decisions and take ownership of their work which means we don't need as much management- or meetings!","i-lucide-align-vertical-distribute-end",{"leading":1601},{"title":1617,"description":1618,"icon":1619,"ui":1620},"Work Life Balance","We understand that life happens and you should never have to choose between the life moments and your job! Make it to the concert, do the school runs or catch up with a mate over coffee and make the time up when it suits you.","i-lucide-scale",{"leading":1601},{"title":1622,"description":1623,"icon":1624,"ui":1625},"Work From Home","We found that most people are more productive and happy working at home so we don't have an office but have a celebrating & planning lunch every second Friday somewhere around Brisbane City.","i-lucide-home",{"leading":1601},{},"\u002Fcompany\u002Fcareers",{"title":1582,"description":1591},"company\u002F1.careers","Hrts3X80HstP91L-lc_E9EG1VUJphVYkC4WbG6i-K6o",{"id":1632,"title":1633,"body":7,"columns":7,"cta":1634,"description":1643,"extension":16,"features":1644,"hero":7,"icon":222,"image":7,"meta":1659,"navigation":43,"path":13,"seo":1660,"showContactForm":43,"stem":1661,"__hash__":1662},"company\u002Fcompany\u002F2.contact.yml","Contact Us",{"title":1635,"description":1636,"links":1637},"Get in Touch","Fill out the form below and tell us about your data, your environment, and the problem you need solved. Kristian or Paul will respond within one business day. No sales script. No BDR cadence. A direct conversation with the people who built the technology and run the company.",[1638,1641],{"label":1639,"to":1640,"icon":1590},"hello@nuclideon.com","mailto:hello@nuclideon.com",{"label":1526,"to":1642,"icon":1527,"color":239,"variant":240},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fnuclideon","Two minutes. One form. Your team stops working from a fraction of their data.",{"title":1645,"description":1646,"items":1647},"What happens when you [reach out]{.text-primary}","No automated nurture sequence. No multi-touch BDR campaign. A direct reply from the CEO or CTO.",[1648,1652,1655],{"title":1649,"description":1650,"icon":1651},"Confirmation","You receive a confirmation email with Kristian's direct reply address.","i-lucide-mail-check",{"title":1653,"description":1654,"icon":449},"Response Within One Business Day","Kristian or Paul responds with a concrete next step.",{"title":1656,"description":1657,"icon":1658},"See Your Data Rendered","If you requested a demo, we schedule a 30-minute session where we load your dataset and render it at full resolution on standard hardware.","i-lucide-monitor-play",{},{"title":1633,"description":1643},"company\u002F2.contact","e54EIM7552ZSpw-Pw1sbN82PnTh2gRsIVghEEjLVj3o",{"id":1664,"title":1665,"body":1666,"date":7,"description":2049,"extension":2064,"meta":2065,"navigation":43,"path":2066,"seo":2067,"stem":2068,"__hash__":2069},"udsdkguide\u002Fguide\u002Fudsdk\u002FudStreamer.md","udStreamer",{"type":1667,"value":1668,"toc":2048},"minimark",[1669,1673,1678,1688,1692,1702,1710,1746,1752,1755,1761,1764,1771,1793,1797,1801,1804],[1670,1671,1665],"h1",{"id":1672},"udstreamer",[1674,1675,1677],"h2",{"id":1676},"functions","Functions",[1679,1680,1682,1683,1687],"h3",{"id":1681},"enum-uderror-udstreamer_inituint64_t-memorythresholdbytes","enum ",[1684,1685,1686],"a",{"href":1686},"udError"," udStreamer_Init(uint64_t memoryThresholdBytes)",[1689,1690,1691],"p",{},"Initialises the UDS streamer",[1693,1694,1695],"blockquote",{},[1689,1696,1697,1701],{},[1698,1699,1700],"span",{},"!NOTE","\nIf the streamer hasn’t been initialised before loading a UDS or creating a udRenderContext it will be initialised during those using default values",[1693,1703,1704],{},[1689,1705,1706,1709],{},[1698,1707,1708],{},"!WARNING","\nIf memoryThresholdBytes is non-zero (which will use the default amount of memory) the return code will be udE_CalledMoreThanOnce if the streamer has already been started",[1711,1712,1713,1726],"table",{},[1714,1715,1716],"thead",{},[1717,1718,1719,1723],"tr",{},[1720,1721,1722],"th",{},"Parameter",[1720,1724,1725],{},"Description",[1727,1728,1729],"tbody",{},[1717,1730,1731,1738],{},[1732,1733,1734],"td",{},[1735,1736,1737],"code",{},"memoryThresholdBytes",[1732,1739,1740,1741,1745],{},"Sets the threshold for how much memory the streaming system should ",[1742,1743,1744],"em",{},"attempt"," to stay below in bytes. Set as 0 to use the default amount of memory for the current platform.",[1679,1747,1682,1749,1751],{"id":1748},"enum-uderror-udstreamer_deinit",[1684,1750,1686],{"href":1686}," udStreamer_Deinit()",[1689,1753,1754],{},"Deinitialises the UDS streamer (reference counted). This must be called once for every call to udStreamer_Init regardless of return code of that function to decrease the reference count.",[1679,1756,1682,1758,1760],{"id":1757},"enum-uderror-udstreamer_updatestruct-udstreamerstatus-pstatus",[1684,1759,1686],{"href":1686}," udStreamer_Update(struct udStreamerStatus *pStatus)",[1689,1762,1763],{},"Updates the UDS streamer manually (used in conjuction with udRCF_ManualStreamerUpdate)",[1693,1765,1766],{},[1689,1767,1768,1770],{},[1698,1769,1700],{},"\nThe application should call this immediately after the last render for the frame",[1711,1772,1773,1781],{},[1714,1774,1775],{},[1717,1776,1777,1779],{},[1720,1778,1722],{},[1720,1780,1725],{},[1727,1782,1783],{},[1717,1784,1785,1790],{},[1732,1786,1787],{},[1735,1788,1789],{},"pStatus",[1732,1791,1792],{},"A structure to write streaming information to; Use NULL if the information isn’t required",[1674,1794,1796],{"id":1795},"structs","Structs",[1679,1798,1800],{"id":1799},"struct-udstreamerstatus","struct udStreamerStatus",[1689,1802,1803],{},"Stores returned information from a streamer update",[1711,1805,1806,1818],{},[1714,1807,1808],{},[1717,1809,1810,1813,1816],{},[1720,1811,1812],{},"Field",[1720,1814,1815],{},"Type",[1720,1817,1725],{},[1727,1819,1820,1835,1850,1865,1879,1893,1907,1921,1936,1950,1964,1978,1992,2006,2020,2034],{},[1717,1821,1822,1827,1832],{},[1732,1823,1824],{},[1735,1825,1826],{},"active",[1732,1828,1829],{},[1735,1830,1831],{},"uint32_t",[1732,1833,1834],{},"Not 0 if streamer has blocked to load, or models are awaiting destruction.",[1717,1836,1837,1842,1847],{},[1732,1838,1839],{},[1735,1840,1841],{},"highestBlockPriority",[1732,1843,1844],{},[1735,1845,1846],{},"int",[1732,1848,1849],{},"Highest priority of any block waiting to be loaded (reduces to zero as streaming completes).",[1717,1851,1852,1857,1862],{},[1732,1853,1854],{},[1735,1855,1856],{},"modelErrors",[1732,1858,1859],{},[1735,1860,1861],{},"enum [udError](udError.md)",[1732,1863,1864],{},"Any errors from streaming.",[1717,1866,1867,1872,1876],{},[1732,1868,1869],{},[1735,1870,1871],{},"avgBytesPerSecond",[1732,1873,1874],{},[1735,1875,1846],{},[1732,1877,1878],{},"Data Throughput.",[1717,1880,1881,1886,1890],{},[1732,1882,1883],{},[1735,1884,1885],{},"blocksInQueue",[1732,1887,1888],{},[1735,1889,1846],{},[1732,1891,1892],{},"How many blocks (sections of a pointcloud) are waiting to be loaded.",[1717,1894,1895,1900,1904],{},[1732,1896,1897],{},[1735,1898,1899],{},"blocksInFlight",[1732,1901,1902],{},[1735,1903,1846],{},[1732,1905,1906],{},"How many blocks are actively being loaded.",[1717,1908,1909,1914,1918],{},[1732,1910,1911],{},[1735,1912,1913],{},"freeableBlocksLocked",[1732,1915,1916],{},[1735,1917,1846],{},[1732,1919,1920],{},"How many blocks are loaded that aren’t being used right now.",[1717,1922,1923,1928,1933],{},[1732,1924,1925],{},[1735,1926,1927],{},"blockMemoryInUse",[1732,1929,1930],{},[1735,1931,1932],{},"int64_t",[1732,1934,1935],{},"Total (approximate) memory in use by the streamer (in bytes).",[1717,1937,1938,1943,1947],{},[1732,1939,1940],{},[1735,1941,1942],{},"positionMemoryInUse",[1732,1944,1945],{},[1735,1946,1932],{},[1732,1948,1949],{},"Amount of memory used by positional data for all blocks loaded.",[1717,1951,1952,1957,1961],{},[1732,1953,1954],{},[1735,1955,1956],{},"freeableMemory",[1732,1958,1959],{},[1735,1960,1932],{},[1732,1962,1963],{},"Amount of memory used by blocks on the freeable list.",[1717,1965,1966,1971,1975],{},[1732,1967,1968],{},[1735,1969,1970],{},"blocksReadSinceLastUpdate",[1732,1972,1973],{},[1735,1974,1846],{},[1732,1976,1977],{},"Number of blocks whose read was started.",[1717,1979,1980,1985,1989],{},[1732,1981,1982],{},[1735,1983,1984],{},"blocksLoadedSinceLastUpdate",[1732,1986,1987],{},[1735,1988,1846],{},[1732,1990,1991],{},"Number of blocks that actually finished and unpacked.",[1717,1993,1994,1999,2003],{},[1732,1995,1996],{},[1735,1997,1998],{},"blocksActive",[1732,2000,2001],{},[1735,2002,1846],{},[1732,2004,2005],{},"Number of blocks potentially loadable before next update.",[1717,2007,2008,2013,2017],{},[1732,2009,2010],{},[1735,2011,2012],{},"modelsActive",[1732,2014,2015],{},[1735,2016,1846],{},[1732,2018,2019],{},"Number of models actively requesting blocks.",[1717,2021,2022,2027,2031],{},[1732,2023,2024],{},[1735,2025,2026],{},"totalBlocksLoaded",[1732,2028,2029],{},[1735,2030,1846],{},[1732,2032,2033],{},"How many blocks are loaded.",[1717,2035,2036,2041,2045],{},[1732,2037,2038],{},[1735,2039,2040],{},"starvedTimeMsSinceLastUpdate",[1732,2042,2043],{},[1735,2044,1846],{},[1732,2046,2047],{},"Number of milliseconds spent with waiting for more work that came on the very on the next update.",{"title":2049,"searchDepth":2050,"depth":2050,"links":2051},"",2,[2052,2061],{"id":1676,"depth":2050,"text":1677,"children":2053},[2054,2057,2059],{"id":1681,"depth":2055,"text":2056},3,"enum udError udStreamer_Init(uint64_t memoryThresholdBytes)",{"id":1748,"depth":2055,"text":2058},"enum udError udStreamer_Deinit()",{"id":1757,"depth":2055,"text":2060},"enum udError udStreamer_Update(struct udStreamerStatus *pStatus)",{"id":1795,"depth":2050,"text":1796,"children":2062},[2063],{"id":1799,"depth":2055,"text":1800},"md",{},"\u002Fguide\u002Fudsdk\u002Fudstreamer",{"title":1665,"description":2049},"guide\u002Fudsdk\u002FudStreamer","leQZsJt5YJSv4dVi0ikvmGEqovJLsemA-ULGuJKwoE8",[2071,2654,2684,4531,5546,5717,6074,6222,6550,6712,7022,7736,10333,11039,11080,11913,12010,14616,17407,17680,19375,19823,20854,22222,22646,23375,23962,24239,28633,28880,29189,29503,29585,29743],{"id":2072,"title":2073,"body":2074,"date":7,"description":2049,"extension":2064,"meta":2649,"navigation":43,"path":2650,"seo":2651,"stem":2652,"__hash__":2653},"udsdkguide\u002Fguide\u002Fudsdk\u002FReleaseNotes.md","udSDK Release Notes",{"type":1667,"value":2075,"toc":2629},[2076,2079,2083,2090,2094,2147,2151,2159,2163,2220,2223,2231,2235,2294,2297,2326,2330,2468,2471,2488,2492,2504,2509,2513,2584,2588,2591,2599,2603],[1670,2077,2073],{"id":2078},"udsdk-release-notes",[1674,2080,2082],{"id":2081},"udsdk-25","udSDK 2.5",[2084,2085,2086],"ul",{},[2087,2088,2089],"li",{},"Updated for Nuclideon rebrand and services",[1674,2091,2093],{"id":2092},"udsdk-24","udSDK 2.4",[2084,2095,2096,2116,2136],{},[2087,2097,2098,2099],{},"New Features\n",[2084,2100,2101,2104,2107,2110,2113],{},[2087,2102,2103],{},"Added option to mesh a UDS with udMeshing",[2087,2105,2106],{},"Added option to store source filenames as an attribute during conversion",[2087,2108,2109],{},"Added the f32 udPrimitiveU, f32 udPrimitiveV, u32 udPrimitiveMaterialID, f32 udAltitude and u16 udSourceFileID channels",[2087,2111,2112],{},"Added support for JSON attributes",[2087,2114,2115],{},"Added ability to merge scenes",[2087,2117,2118,2119],{},"Improvements\n",[2084,2120,2121,2124,2127,2130,2133],{},[2087,2122,2123],{},"Expanded udQuery API",[2087,2125,2126],{},"Expanded udGeometry API",[2087,2128,2129],{},"Expanded udCompare API",[2087,2131,2132],{},"Improved block renderer",[2087,2134,2135],{},"Improved debug support for GPU rendering",[2087,2137,2138,2139],{},"Bug Fixes\n",[2084,2140,2141,2144],{},[2087,2142,2143],{},"Function to keep machine awake during conversion now performs correctly",[2087,2145,2146],{},"Fixed issues with loading OBJs",[1679,2148,2150],{"id":2149},"breaking-changes","Breaking Changes",[2084,2152,2153,2156],{},[2087,2154,2155],{},"Removed cylinder support from udGeometry",[2087,2157,2158],{},"PointBuffer variable \"attributeSize\" renamed to \"attributeStride\"",[1674,2160,2162],{"id":2161},"udsdk-23","udSDK 2.3",[2084,2164,2165,2175,2188,2201,2209],{},[2087,2166,2098,2167],{},[2084,2168,2169,2172],{},[2087,2170,2171],{},"Added udCloud Workspace, Project, Scene and File APIs",[2087,2173,2174],{},"Added udGeoProjection API",[2087,2176,2118,2177],{},[2084,2178,2179,2182,2185],{},[2087,2180,2181],{},"Improved accuracy in voxeliser",[2087,2183,2184],{},"Convert now creates folder structure for temporary output directory, cleaning up the created folders at the end",[2087,2186,2187],{},"Domain logins can now access premium features if server is configured to allow",[2087,2189,2138,2190],{},[2084,2191,2192,2195,2198],{},[2087,2193,2194],{},"Fixed rare crash in streamer when blocks were destroyed while being loaded",[2087,2196,2197],{},"Fixed rare crash in streamer when multiple requests to a single block were made",[2087,2199,2200],{},"Renderer no longer crashes if matrices contain invalid floats",[2087,2202,2203,2204],{},"Emscripten \u002F WASM\n",[2084,2205,2206],{},[2087,2207,2208],{},"udSDKjs project moved to public udSDKSamples GitHub repo",[2087,2210,2211,2212],{},"macOS\n",[2084,2213,2214,2217],{},[2087,2215,2216],{},"Added M1 support",[2087,2218,2219],{},"Bumped minimum macOS version to 11.0",[1679,2221,2150],{"id":2222},"breaking-changes-1",[2084,2224,2225,2228],{},[2087,2226,2227],{},"Renamed udProject to udScene",[2087,2229,2230],{},"macOS minimum required version 11.0",[1674,2232,2234],{"id":2233},"udsdk-22","udSDK 2.2",[2084,2236,2237,2274,2287],{},[2087,2238,2098,2239],{},[2084,2240,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268,2271],{},[2087,2242,2243],{},"Added support for Collaboration",[2087,2245,2246],{},"Added support for logging into udCloud (including context creation and udServerAPI_Query)",[2087,2248,2249],{},"Added Bake lighting option when converting OBJ files",[2087,2251,2252],{},"Added option to export images contained in E57 files while converting",[2087,2254,2255],{},"Added support for login to udCloud",[2087,2257,2258],{},"Added support for Scenes from udCloud",[2087,2260,2261],{},"Added a Polygon Filter to the query geometries",[2087,2263,2264],{},"Added support for UDS Opacity",[2087,2266,2267],{},"Added support for RAE encoded E57 files",[2087,2269,2270],{},"Added support for RCP PTS files",[2087,2272,2273],{},"Added support for in\u002Fout SRIDs in udConvert",[2087,2275,2118,2276],{},[2084,2277,2278,2281,2284],{},[2087,2279,2280],{},"Exposed selective loading of attributes",[2087,2282,2283],{},"Increased number of attributes supported to 64",[2087,2285,2286],{},"Exposed a \"udQueryGroup\" for \"udQueryFilter\"",[2087,2288,2138,2289],{},[2084,2290,2291],{},[2087,2292,2293],{},"Fixed issue with xml reader for E57 files",[1679,2295,2150],{"id":2296},"breaking-changes-2",[2084,2298,2299,2302,2313,2320,2323],{},[2087,2300,2301],{},"udContext_Create is now udContext_CreateLegacy",[2087,2303,2304,2305,2308,2309,2312],{},"In udSessionInfo the variable ",[1735,2306,2307],{},"isOffline "," has been replaced with ",[1735,2310,2311],{},"apiVersion"," where 0 is offline, 1 is udServer and 2 is udCloud server APIs",[2087,2314,2315,2316,2319],{},"udScene_LoadFromServer, udScene_DeleteServerProject and udScene_SetLinkShareStatus need ",[1735,2317,2318],{},"workspace\u002Fproject"," as pGroupID; this should be null for udServer projects",[2087,2321,2322],{},"udQueryFilter shapes have been merged into udGeometry. Most APIs that used to take the simple shapes can be switched to the udGeometry equivilents easily",[2087,2324,2325],{},"udConvertCustomItem::pReadPointsInt was removed in favour of optimising the pReadPointsFloat path and to provide easier future expansion.",[1674,2327,2329],{"id":2328},"udsdk-21","udSDK 2.1",[2084,2331,2332,2361,2412,2437,2445,2458],{},[2087,2333,2098,2334],{},[2084,2335,2336,2339,2342,2349,2352,2355,2358],{},[2087,2337,2338],{},"Added support for CSG and more advanced geometric shapes",[2087,2340,2341],{},"Added support to create UDG when converting (using the '.udg' extension)",[2087,2343,2344,2345,2348],{},"Added attributes to ",[1742,2346,2347],{},"not"," include during conversion",[2087,2350,2351],{},"Added libraries for Ubuntu 20.04 Focal Fossa",[2087,2353,2354],{},"Added support for WKT to be used during conversion",[2087,2356,2357],{},"Added the u16 udRed, udGreen and udBlue channels used in many Geoverse Convert models",[2087,2359,2360],{},"(Enterprise) Static library options for all supported platforms",[2087,2362,2118,2363],{},[2084,2364,2365,2368,2375,2381,2384,2387,2394,2397,2403,2409],{},[2087,2366,2367],{},"Exposed \"udRCF_ZeroAlphaSkip\" render flag to skip rendering of a voxel after it is resolved",[2087,2369,2370,2371,2374],{},"Exposed ",[1735,2372,2373],{},"isVisible"," for project nodes (which is also synced\u002Fsaved)",[2087,2376,2370,2377,2380],{},[1735,2378,2379],{},"isPremium"," in udContext for premium sessions",[2087,2382,2383],{},"Exposed a lot more error codes for udError, now matches the full set of udResults from the open-source udCore library",[2087,2385,2386],{},"Exposed the standard attribute types",[2087,2388,2389,2390,2393],{},"Exposed information about the attributes that ",[1742,2391,2392],{},"are"," included in the conversion",[2087,2395,2396],{},"Removed the generic \"LiveFeed\" project type and added the specific \"GTFS\" type",[2087,2398,2370,2399,2402],{},[1735,2400,2401],{},"udRCF_2PixelOpt"," flag as a significant performance boost when speed is more important than pixel-perfect accuracy",[2087,2404,2370,2405,2408],{},[1735,2406,2407],{},"udRCF_DisableOrthographic"," flag as a significant accuracy boost when pixel perfect accuracy is more important than performance",[2087,2410,2411],{},"Updated udCore for a lot of improvements including significantly more accurate geospatial reprojection between datums",[2087,2413,2138,2414],{},[2084,2415,2416,2419,2422,2425,2428,2431,2434],{},[2087,2417,2418],{},"Fixed issues with the embedded ASC importer",[2087,2420,2421],{},"Fixed issue when trying to export or create very small (by point count) point cloud models",[2087,2423,2424],{},"Fixed issue where the estimated point count took precedence in some cases even though the source resolution was known",[2087,2426,2427],{},"Fixed issues where AVX was being used even though the CPU doesn't support it",[2087,2429,2430],{},"Fixed crash with conversion on machines with >34 cores",[2087,2432,2433],{},"Fixed crash when rendering lots of models or models with significant overlap",[2087,2435,2436],{},"Fixed an issue with export progress failing when exporting large areas",[2087,2438,2439,2440],{},"Android\n",[2084,2441,2442],{},[2087,2443,2444],{},"Fixed CA certs not being detected correctly",[2087,2446,2203,2447],{},[2084,2448,2449,2452,2455],{},[2087,2450,2451],{},"Updated all function names",[2087,2453,2454],{},"Added functions to use intensity and classification voxel shader and change the server URL",[2087,2456,2457],{},"Added the ability to create a context based on the domain the application is hosted from",[2087,2459,2211,2460],{},[2084,2461,2462,2465],{},[2087,2463,2464],{},"Framework is now able to be signed",[2087,2466,2467],{},"Added support for the M1",[1679,2469,2150],{"id":2470},"breaking-changes-3",[2084,2472,2473,2476,2479,2482,2485],{},[2087,2474,2475],{},"The sizes of the following structs changed: udSessionInfo, udConvertInfo, udSceneNode",[2087,2477,2478],{},"The udError enumerator was significantly changed. It now contains far more specific error codes and most of the more generic codes were removes.",[2087,2480,2481],{},"udPointCloud_Export returns a fourth argument, a float pointer that will be updated with the export progress; this can be NULL",[2087,2483,2484],{},"udPNT_LiveFeed was removed (The new udPNT_GTFS covers the GTFS version of Live Feeds all other versions are no longer supported)",[2087,2486,2487],{},"All udScene creation functions require a pointer to a valid udContext object as the first argument now, udScene_CreateInMemory, udScene_CreateInFile, udScene_LoadFromMemory and udScene_LoadFromFile",[1674,2489,2491],{"id":2490},"udsdk-20","udSDK 2.0",[2084,2493,2494],{},[2087,2495,2496,2497,2500,2501,2503],{},"Updated and Rebranded ",[1735,2498,2499],{},"Vault Development Kit"," to version 2.0 of ",[1735,2502,166],{},".",[1693,2505,2506],{},[1689,2507,2508],{},"Please Note: Nuclideon will continue to port features from udSDK 1.6.5 across which will result in further API changes.",[1679,2510,2512],{"id":2511},"breaking-changes-from-vdk","Breaking Changes (From VDK)",[2084,2514,2515,2574,2577],{},[2087,2516,2517,2518,2521,2522,2525],{},"Everything has been renamed. Mostly this is as simple as anything prefixed with ",[1735,2519,2520],{},"vdk..."," will now be prefixed with ",[1735,2523,2524],{},"ud...",[2084,2526,2527],{},[2087,2528,2529,2530],{},"There are a few exceptions the most notable are;\n",[2084,2531,2532,2541,2549,2557],{},[2087,2533,2534,2537,2538],{},[1735,2535,2536],{},"vdkRenderView"," became ",[1735,2539,2540],{},"udRenderTarget",[2087,2542,2543,2537,2546],{},[1735,2544,2545],{},"vdkQuery",[1735,2547,2548],{},"udQueryContext",[2087,2550,2551,2537,2554],{},[1735,2552,2553],{},"udRenderOptions",[1735,2555,2556],{},"udRenderSettings",[2087,2558,2559,2560,2563,2564,2567,2568,2563,2571],{},"Many changes in the attributes enums; ",[1735,2561,2562],{},"vdkAttributeTypeInfo..."," to ",[1735,2565,2566],{},"udATI..."," and ",[1735,2569,2570],{},"vdkStandardAttribute...",[1735,2572,2573],{},"udStdAttribute...",[2087,2575,2576],{},"Login now uses email instead of username",[2087,2578,2579,2580],{},"If you need assistance, reach out to ",[1684,2581,2583],{"href":2582},"mailto:info@nuclideon.com","info@nuclideon.com",[1679,2585,2587],{"id":2586},"breaking-changes-from-udsdk-165","Breaking Changes (From udSDK \u003C= 1.6.5)",[1689,2589,2590],{},"Not all features are available in udSDK 2.0 yet; Reach out to your developer contact so we can focus development where it is required to ensure we meet your requirements moving forward.",[2084,2592,2593,2596],{},[2087,2594,2595],{},"There is no direct upgrade path, the entire core renderer and convert pipelines have been upgraded and not all features are available yet.",[2087,2597,2598],{},"Lots of features may not exist or will exist in a different format.",[1679,2600,2602],{"id":2601},"specific-changes-since-vdk060","Specific changes since VDK0.6.0",[2084,2604,2605,2608,2611,2614,2617,2620,2623,2626],{},[2087,2606,2607],{},"Removed built-in watermark support (still available manually)",[2087,2609,2610],{},"Fixed some LAZ and ASC conversion issues reported by users",[2087,2612,2613],{},"Removed server-side license pooling (login to Nuclideon Servers is still required)",[2087,2615,2616],{},"Optimised login to require less back and forth with the server",[2087,2618,2619],{},"Added support for server-side projects",[2087,2621,2622],{},"Added user utility functions to Register, Change Password and Forgot Password",[2087,2624,2625],{},"Exposed udStreamer information and added a render flag to disable streamer updates after render (ideally 1 update\u002Fframe)",[2087,2627,2628],{},"Added preliminary support for storing primitives (currently limited to triangles) in the UDS file",{"title":2049,"searchDepth":2050,"depth":2050,"links":2630},[2631,2632,2635,2638,2641,2644],{"id":2081,"depth":2050,"text":2082},{"id":2092,"depth":2050,"text":2093,"children":2633},[2634],{"id":2149,"depth":2055,"text":2150},{"id":2161,"depth":2050,"text":2162,"children":2636},[2637],{"id":2222,"depth":2055,"text":2150},{"id":2233,"depth":2050,"text":2234,"children":2639},[2640],{"id":2296,"depth":2055,"text":2150},{"id":2328,"depth":2050,"text":2329,"children":2642},[2643],{"id":2470,"depth":2055,"text":2150},{"id":2490,"depth":2050,"text":2491,"children":2645},[2646,2647,2648],{"id":2511,"depth":2055,"text":2512},{"id":2586,"depth":2055,"text":2587},{"id":2601,"depth":2055,"text":2602},{},"\u002Fguide\u002Fudsdk\u002Freleasenotes",{"title":2073,"description":2049},"guide\u002Fudsdk\u002FReleaseNotes","jiapZsGD-qTTiLEuxykO4hA7N1PVc0EUVLxHR1Likc4",{"id":2655,"title":2656,"body":2657,"date":7,"description":2049,"extension":2064,"meta":2680,"navigation":43,"path":241,"seo":2681,"stem":2682,"__hash__":2683},"udsdkguide\u002Fguide\u002Fudsdk\u002Findex.md","Nuclideon udSDK!",{"type":1667,"value":2658,"toc":2677},[2659,2662,2666,2669],[1670,2660,2656],{"id":2661},"nuclideon-udsdk",[1674,2663,2665],{"id":2664},"welcome","Welcome",[1689,2667,2668],{},"Thanks for to your interest in Nuclideon udSDK!",[1689,2670,2671,2672],{},"For samples of how to use udSDK, please see the sample GitHub repository at ",[1684,2673,2674],{"href":2674,"rel":2675},"https:\u002F\u002Fgithub.com\u002FNuclideon\u002Fudsdksamples",[2676],"nofollow",{"title":2049,"searchDepth":2050,"depth":2050,"links":2678},[2679],{"id":2664,"depth":2050,"text":2665},{},{"title":2656,"description":2049},"guide\u002Fudsdk\u002Findex","WXBg7tLzoStihyLyGjE9BSuYiXHWvTmZE8GI6xk6PLs",{"id":2685,"title":2686,"body":2687,"date":7,"description":2694,"extension":2064,"meta":4526,"navigation":43,"path":4527,"seo":4528,"stem":4529,"__hash__":4530},"udsdkguide\u002Fguide\u002Fudsdk\u002FudAttributes.md","udAttributes",{"type":1667,"value":2688,"toc":4488},[2689,2692,2695,2699,2703,2708,2731,2735,2738,2742,3024,3028,3031,3038,3042,3324,3328,3331,3335,3397,3401,3404,3408,3610,3612,3618,3621,3628,3670,3680,3686,3689,3710,3717,3723,3726,3767,3774,3780,3783,3821,3827,3833,3836,3874,3880,3886,3889,3936,3942,3948,3951,3990,3997,4003,4006,4035,4041,4047,4050,4082,4089,4095,4098,4129,4136,4142,4145,4175,4181,4183,4187,4190,4305,4309,4312,4382,4386,4389],[1670,2690,2686],{"id":2691},"udattributes",[1689,2693,2694],{},"udAttributes.h provides an interface to attribute streams of Unlimited Detail models.",[1674,2696,2698],{"id":2697},"enums","Enums",[1679,2700,2702],{"id":2701},"enum-anonymous","enum [anonymous]",[1689,2704,2705],{},[1742,2706,2707],{},"Values:",[1711,2709,2710,2719],{},[1714,2711,2712],{},[1717,2713,2714,2717],{},[1720,2715,2716],{},"Value",[1720,2718,1725],{},[1727,2720,2721],{},[1717,2722,2723,2728],{},[1732,2724,2725],{},[1735,2726,2727],{},"udAttributeSet_MaxDescriptors",[1732,2729,2730],{},"Hard limit on the number of attributes in a .uds pointcloud.",[1679,2732,2734],{"id":2733},"enum-udstdattribute","enum udStdAttribute",[1689,2736,2737],{},"A list of standard UDS attributes",[1689,2739,2740],{},[1742,2741,2707],{},[1711,2743,2744,2752],{},[1714,2745,2746],{},[1717,2747,2748,2750],{},[1720,2749,2716],{},[1720,2751,1725],{},[1727,2753,2754,2764,2774,2784,2794,2804,2814,2824,2834,2844,2854,2864,2874,2883,2892,2901,2910,2920,2929,2938,2947,2956,2965,2974,2984,2994,3004,3014],{},[1717,2755,2756,2761],{},[1732,2757,2758],{},[1735,2759,2760],{},"udSA_GPSTime",[1732,2762,2763],{},"udATI_float64",[1717,2765,2766,2771],{},[1732,2767,2768],{},[1735,2769,2770],{},"udSA_PrimitiveID",[1732,2772,2773],{},"udATI_uint32",[1717,2775,2776,2781],{},[1732,2777,2778],{},[1735,2779,2780],{},"udSA_PrimitiveU",[1732,2782,2783],{},"udATI_float32 Texture U coordinate passed to custom conversions involving primitives",[1717,2785,2786,2791],{},[1732,2787,2788],{},[1735,2789,2790],{},"udSA_PrimitiveV",[1732,2792,2793],{},"udATI_float32 Texture V coordinate passed to custom conversions involving primitives",[1717,2795,2796,2801],{},[1732,2797,2798],{},[1735,2799,2800],{},"udSA_PrimitiveMaterialID",[1732,2802,2803],{},"udATI_uint32 ID of texture as returned by udConvert_GetPrimitiveMaterialID, passed to custom conversions involving primitives",[1717,2805,2806,2811],{},[1732,2807,2808],{},[1735,2809,2810],{},"udSA_ARGB",[1732,2812,2813],{},"udATI_color32",[1717,2815,2816,2821],{},[1732,2817,2818],{},[1735,2819,2820],{},"udSA_Normal",[1732,2822,2823],{},"udATI_normal32",[1717,2825,2826,2831],{},[1732,2827,2828],{},[1735,2829,2830],{},"udSA_Altitude",[1732,2832,2833],{},"udATI_float32",[1717,2835,2836,2841],{},[1732,2837,2838],{},[1735,2839,2840],{},"udSA_Red",[1732,2842,2843],{},"Legacy 16bit Red channel.",[1717,2845,2846,2851],{},[1732,2847,2848],{},[1735,2849,2850],{},"udSA_Green",[1732,2852,2853],{},"Legacy 16bit Green channel.",[1717,2855,2856,2861],{},[1732,2857,2858],{},[1735,2859,2860],{},"udSA_Blue",[1732,2862,2863],{},"Legacy 16bit Blue channel.",[1717,2865,2866,2871],{},[1732,2867,2868],{},[1735,2869,2870],{},"udSA_Intensity",[1732,2872,2873],{},"udATI_uint16",[1717,2875,2876,2881],{},[1732,2877,2878],{},[1735,2879,2880],{},"udSA_NIR",[1732,2882,2873],{},[1717,2884,2885,2890],{},[1732,2886,2887],{},[1735,2888,2889],{},"udSA_ScanAngle",[1732,2891,2873],{},[1717,2893,2894,2899],{},[1732,2895,2896],{},[1735,2897,2898],{},"udSA_PointSourceID",[1732,2900,2873],{},[1717,2902,2903,2908],{},[1732,2904,2905],{},[1735,2906,2907],{},"udSA_SourceFileID",[1732,2909,2873],{},[1717,2911,2912,2917],{},[1732,2913,2914],{},[1735,2915,2916],{},"udSA_Classification",[1732,2918,2919],{},"udATI_uint8",[1717,2921,2922,2927],{},[1732,2923,2924],{},[1735,2925,2926],{},"udSA_ReturnNumber",[1732,2928,2919],{},[1717,2930,2931,2936],{},[1732,2932,2933],{},[1735,2934,2935],{},"udSA_NumberOfReturns",[1732,2937,2919],{},[1717,2939,2940,2945],{},[1732,2941,2942],{},[1735,2943,2944],{},"udSA_ClassificationFlags",[1732,2946,2919],{},[1717,2948,2949,2954],{},[1732,2950,2951],{},[1735,2952,2953],{},"udSA_ScannerChannel",[1732,2955,2919],{},[1717,2957,2958,2963],{},[1732,2959,2960],{},[1735,2961,2962],{},"udSA_ScanDirection",[1732,2964,2919],{},[1717,2966,2967,2972],{},[1732,2968,2969],{},[1735,2970,2971],{},"udSA_EdgeOfFlightLine",[1732,2973,2919],{},[1717,2975,2976,2981],{},[1732,2977,2978],{},[1735,2979,2980],{},"udSA_ScanAngleRank",[1732,2982,2983],{},"udATI_int8",[1717,2985,2986,2991],{},[1732,2987,2988],{},[1735,2989,2990],{},"udSA_LasUserData",[1732,2992,2993],{},"Specific LAS User data field (udATI_uint8).",[1717,2995,2996,3001],{},[1732,2997,2998],{},[1735,2999,3000],{},"udSA_Count",[1732,3002,3003],{},"Count helper value to iterate this enum.",[1717,3005,3006,3011],{},[1732,3007,3008],{},[1735,3009,3010],{},"udSA_AllAttributes",[1732,3012,3013],{},"Internal sentinal value used by some functions to indicate getting start of interleaved attributes.",[1717,3015,3016,3021],{},[1732,3017,3018],{},[1735,3019,3020],{},"udSA_First",[1732,3022,3023],{},"Generally used to initialise an attribute value for use in loops.",[1679,3025,3027],{"id":3026},"enum-udstdattributecontent","enum udStdAttributeContent",[1689,3029,3030],{},"The standard UDS attributes provided as a bitfield",[1693,3032,3033],{},[1689,3034,3035,3037],{},[1698,3036,1700],{},"\nudStdAttributeContent enums are guaranteed to be 1 \u003C\u003C associated udStdAttribute value",[1689,3039,3040],{},[1742,3041,2707],{},[1711,3043,3044,3052],{},[1714,3045,3046],{},[1717,3047,3048,3050],{},[1720,3049,2716],{},[1720,3051,1725],{},[1727,3053,3054,3063,3072,3081,3090,3099,3108,3117,3126,3135,3144,3153,3162,3171,3180,3189,3198,3207,3216,3225,3234,3243,3252,3261,3270,3279,3288,3297,3306,3315],{},[1717,3055,3056,3061],{},[1732,3057,3058],{},[1735,3059,3060],{},"udSAC_None",[1732,3062],{},[1717,3064,3065,3070],{},[1732,3066,3067],{},[1735,3068,3069],{},"udSAC_GPSTime",[1732,3071],{},[1717,3073,3074,3079],{},[1732,3075,3076],{},[1735,3077,3078],{},"udSAC_PrimitiveID",[1732,3080],{},[1717,3082,3083,3088],{},[1732,3084,3085],{},[1735,3086,3087],{},"udSAC_PrimitiveU",[1732,3089],{},[1717,3091,3092,3097],{},[1732,3093,3094],{},[1735,3095,3096],{},"udSAC_PrimitiveV",[1732,3098],{},[1717,3100,3101,3106],{},[1732,3102,3103],{},[1735,3104,3105],{},"udSAC_PrimitiveMaterialID",[1732,3107],{},[1717,3109,3110,3115],{},[1732,3111,3112],{},[1735,3113,3114],{},"udSAC_ARGB",[1732,3116],{},[1717,3118,3119,3124],{},[1732,3120,3121],{},[1735,3122,3123],{},"udSAC_Normal",[1732,3125],{},[1717,3127,3128,3133],{},[1732,3129,3130],{},[1735,3131,3132],{},"udSAC_Altitude",[1732,3134],{},[1717,3136,3137,3142],{},[1732,3138,3139],{},[1735,3140,3141],{},"udSAC_Red",[1732,3143],{},[1717,3145,3146,3151],{},[1732,3147,3148],{},[1735,3149,3150],{},"udSAC_Green",[1732,3152],{},[1717,3154,3155,3160],{},[1732,3156,3157],{},[1735,3158,3159],{},"udSAC_Blue",[1732,3161],{},[1717,3163,3164,3169],{},[1732,3165,3166],{},[1735,3167,3168],{},"udSAC_Intensity",[1732,3170],{},[1717,3172,3173,3178],{},[1732,3174,3175],{},[1735,3176,3177],{},"udSAC_NIR",[1732,3179],{},[1717,3181,3182,3187],{},[1732,3183,3184],{},[1735,3185,3186],{},"udSAC_ScanAngle",[1732,3188],{},[1717,3190,3191,3196],{},[1732,3192,3193],{},[1735,3194,3195],{},"udSAC_PointSourceID",[1732,3197],{},[1717,3199,3200,3205],{},[1732,3201,3202],{},[1735,3203,3204],{},"udSAC_SourceFileID",[1732,3206],{},[1717,3208,3209,3214],{},[1732,3210,3211],{},[1735,3212,3213],{},"udSAC_Classification",[1732,3215],{},[1717,3217,3218,3223],{},[1732,3219,3220],{},[1735,3221,3222],{},"udSAC_ReturnNumber",[1732,3224],{},[1717,3226,3227,3232],{},[1732,3228,3229],{},[1735,3230,3231],{},"udSAC_NumberOfReturns",[1732,3233],{},[1717,3235,3236,3241],{},[1732,3237,3238],{},[1735,3239,3240],{},"udSAC_ClassificationFlags",[1732,3242],{},[1717,3244,3245,3250],{},[1732,3246,3247],{},[1735,3248,3249],{},"udSAC_ScannerChannel",[1732,3251],{},[1717,3253,3254,3259],{},[1732,3255,3256],{},[1735,3257,3258],{},"udSAC_ScanDirection",[1732,3260],{},[1717,3262,3263,3268],{},[1732,3264,3265],{},[1735,3266,3267],{},"udSAC_EdgeOfFlightLine",[1732,3269],{},[1717,3271,3272,3277],{},[1732,3273,3274],{},[1735,3275,3276],{},"udSAC_ScanAngleRank",[1732,3278],{},[1717,3280,3281,3286],{},[1732,3282,3283],{},[1735,3284,3285],{},"udSAC_LasUserData",[1732,3287],{},[1717,3289,3290,3295],{},[1732,3291,3292],{},[1735,3293,3294],{},"udSAC_AllAttributes",[1732,3296],{},[1717,3298,3299,3304],{},[1732,3300,3301],{},[1735,3302,3303],{},"udSAC_64BitAttributes",[1732,3305],{},[1717,3307,3308,3313],{},[1732,3309,3310],{},[1735,3311,3312],{},"udSAC_32BitAttributes",[1732,3314],{},[1717,3316,3317,3322],{},[1732,3318,3319],{},[1735,3320,3321],{},"udSAC_16BitAttributes",[1732,3323],{},[1679,3325,3327],{"id":3326},"enum-udattributeblendtype","enum udAttributeBlendType",[1689,3329,3330],{},"These are the various options for how an attribute is calculated when merging voxels while generating LODs",[1689,3332,3333],{},[1742,3334,2707],{},[1711,3336,3337,3345],{},[1714,3338,3339],{},[1717,3340,3341,3343],{},[1720,3342,2716],{},[1720,3344,1725],{},[1727,3346,3347,3357,3367,3377,3387],{},[1717,3348,3349,3354],{},[1732,3350,3351],{},[1735,3352,3353],{},"udABT_Mean",[1732,3355,3356],{},"This blend type merges nearby voxels together and finds the mean value for the attribute on those nodes.",[1717,3358,3359,3364],{},[1732,3360,3361],{},[1735,3362,3363],{},"udABT_FirstChild",[1732,3365,3366],{},"This blend type selects the value from one of the nodes and uses that.",[1717,3368,3369,3374],{},[1732,3370,3371],{},[1735,3372,3373],{},"udABT_NoLOD",[1732,3375,3376],{},"This blend type has no information in LODs and is only stored in the highest detail level.",[1717,3378,3379,3384],{},[1732,3380,3381],{},[1735,3382,3383],{},"udABT_OR",[1732,3385,3386],{},"This blend type does a bitwise OR of all of the children, and is only useful for flags.",[1717,3388,3389,3394],{},[1732,3390,3391],{},[1735,3392,3393],{},"udABT_Count",[1732,3395,3396],{},"Total number of blend types. Used internally but can be used as an iterator max when checking attribute blend modes.",[1679,3398,3400],{"id":3399},"enum-udattributetypeinfo","enum udAttributeTypeInfo",[1689,3402,3403],{},"These are the types that could be contained in attributes",[1689,3405,3406],{},[1742,3407,2707],{},[1711,3409,3410,3418],{},[1714,3411,3412],{},[1717,3413,3414,3416],{},[1720,3415,2716],{},[1720,3417,1725],{},[1727,3419,3420,3429,3438,3447,3456,3465,3474,3483,3492,3501,3509,3517,3525,3534,3542,3551,3560,3569,3577,3585,3593,3601],{},[1717,3421,3422,3427],{},[1732,3423,3424],{},[1735,3425,3426],{},"udATI_Invalid",[1732,3428],{},[1717,3430,3431,3436],{},[1732,3432,3433],{},[1735,3434,3435],{},"udATI_SizeMask",[1732,3437],{},[1717,3439,3440,3445],{},[1732,3441,3442],{},[1735,3443,3444],{},"udATI_SizeShift",[1732,3446],{},[1717,3448,3449,3454],{},[1732,3450,3451],{},[1735,3452,3453],{},"udATI_ComponentCountMask",[1732,3455],{},[1717,3457,3458,3463],{},[1732,3459,3460],{},[1735,3461,3462],{},"udATI_ComponentCountShift",[1732,3464],{},[1717,3466,3467,3472],{},[1732,3468,3469],{},[1735,3470,3471],{},"udATI_Signed",[1732,3473],{},[1717,3475,3476,3481],{},[1732,3477,3478],{},[1735,3479,3480],{},"udATI_Float",[1732,3482],{},[1717,3484,3485,3490],{},[1732,3486,3487],{},[1735,3488,3489],{},"udATI_Color",[1732,3491],{},[1717,3493,3494,3499],{},[1732,3495,3496],{},[1735,3497,3498],{},"udATI_Normal",[1732,3500],{},[1717,3502,3503,3507],{},[1732,3504,3505],{},[1735,3506,2919],{},[1732,3508],{},[1717,3510,3511,3515],{},[1732,3512,3513],{},[1735,3514,2873],{},[1732,3516],{},[1717,3518,3519,3523],{},[1732,3520,3521],{},[1735,3522,2773],{},[1732,3524],{},[1717,3526,3527,3532],{},[1732,3528,3529],{},[1735,3530,3531],{},"udATI_uint64",[1732,3533],{},[1717,3535,3536,3540],{},[1732,3537,3538],{},[1735,3539,2983],{},[1732,3541],{},[1717,3543,3544,3549],{},[1732,3545,3546],{},[1735,3547,3548],{},"udATI_int16",[1732,3550],{},[1717,3552,3553,3558],{},[1732,3554,3555],{},[1735,3556,3557],{},"udATI_int32",[1732,3559],{},[1717,3561,3562,3567],{},[1732,3563,3564],{},[1735,3565,3566],{},"udATI_int64",[1732,3568],{},[1717,3570,3571,3575],{},[1732,3572,3573],{},[1735,3574,2833],{},[1732,3576],{},[1717,3578,3579,3583],{},[1732,3580,3581],{},[1735,3582,2763],{},[1732,3584],{},[1717,3586,3587,3591],{},[1732,3588,3589],{},[1735,3590,2813],{},[1732,3592],{},[1717,3594,3595,3599],{},[1732,3596,3597],{},[1735,3598,2823],{},[1732,3600],{},[1717,3602,3603,3608],{},[1732,3604,3605],{},[1735,3606,3607],{},"udATI_vec3f32",[1732,3609],{},[1674,3611,1677],{"id":1676},[1679,3613,1682,3615,3617],{"id":3614},"enum-uderror-udattributeset_createstruct-udattributeset-pattributeset-enum-udstdattributecontent-content-uint32_t-additionalcustomattributes",[1684,3616,1686],{"href":1686}," udAttributeSet_Create(struct udAttributeSet *pAttributeSet, enum udStdAttributeContent content, uint32_t additionalCustomAttributes)",[1689,3619,3620],{},"Creates a udAttributeSet",[1693,3622,3623],{},[1689,3624,3625,3627],{},[1698,3626,1700],{},"\nThe application should call udAttributeSet_Free with pAttributeSet to destroy the object once it’s no longer needed.",[1711,3629,3630,3638],{},[1714,3631,3632],{},[1717,3633,3634,3636],{},[1720,3635,1722],{},[1720,3637,1725],{},[1727,3639,3640,3650,3660],{},[1717,3641,3642,3647],{},[1732,3643,3644],{},[1735,3645,3646],{},"pAttributeSet",[1732,3648,3649],{},"The attribute set to allocate into",[1717,3651,3652,3657],{},[1732,3653,3654],{},[1735,3655,3656],{},"content",[1732,3658,3659],{},"The standard attributes that will be created, provided as bitfields",[1717,3661,3662,3667],{},[1732,3663,3664],{},[1735,3665,3666],{},"additionalCustomAttributes",[1732,3668,3669],{},"The count of additional attributes to generate, these will be added to the attribute set blank after the standard attributes",[1689,3671,3672,3676,3677,3679],{},[3673,3674,3675],"strong",{},"Returns:"," A ",[1684,3678,1686],{"href":1686}," value based on the result of the creation of the attribute set.",[1679,3681,1682,3683,3685],{"id":3682},"enum-uderror-udattributeset_destroystruct-udattributeset-pattributeset",[1684,3684,1686],{"href":1686}," udAttributeSet_Destroy(struct udAttributeSet *pAttributeSet)",[1689,3687,3688],{},"Free the memory created by a call to udAttributeSet_Create",[1711,3690,3691,3699],{},[1714,3692,3693],{},[1717,3694,3695,3697],{},[1720,3696,1722],{},[1720,3698,1725],{},[1727,3700,3701],{},[1717,3702,3703,3707],{},[1732,3704,3705],{},[1735,3706,3646],{},[1732,3708,3709],{},"The attribute set to free the resources of",[1689,3711,3712,3676,3714,3716],{},[3673,3713,3675],{},[1684,3715,1686],{"href":1686}," value based on the result of the destruction of the attribute set.",[1679,3718,1682,3720,3722],{"id":3719},"enum-uderror-udattributeset_getoffsetofstandardattributeconst-struct-udattributeset-pattributeset-enum-udstdattribute-attribute-uint32_t-poffset",[1684,3721,1686],{"href":1686}," udAttributeSet_GetOffsetOfStandardAttribute(const struct udAttributeSet *pAttributeSet, enum udStdAttribute attribute, uint32_t *pOffset)",[1689,3724,3725],{},"Gets the offset for a standard attribute so that further querying of that attribute can be performed",[1711,3727,3728,3736],{},[1714,3729,3730],{},[1717,3731,3732,3734],{},[1720,3733,1722],{},[1720,3735,1725],{},[1727,3737,3738,3747,3757],{},[1717,3739,3740,3744],{},[1732,3741,3742],{},[1735,3743,3646],{},[1732,3745,3746],{},"The attribute set to get the offset for",[1717,3748,3749,3754],{},[1732,3750,3751],{},[1735,3752,3753],{},"attribute",[1732,3755,3756],{},"The enum value of the attribute",[1717,3758,3759,3764],{},[1732,3760,3761],{},[1735,3762,3763],{},"pOffset",[1732,3765,3766],{},"This pointer will be written to with the value of the offset if it is found",[1689,3768,3769,3676,3771,3773],{},[3673,3770,3675],{},[1684,3772,1686],{"href":1686}," value based on the result of writing the offset to pOffset",[1679,3775,1682,3777,3779],{"id":3776},"enum-uderror-udattributeset_getoffsetofindexedattributeconst-struct-udattributeset-pattributeset-uint32_t-attributeindex-uint32_t-poffset",[1684,3778,1686],{"href":1686}," udAttributeSet_GetOffsetOfIndexedAttribute(const struct udAttributeSet *pAttributeSet, uint32_t attributeIndex, uint32_t *pOffset)",[1689,3781,3782],{},"Gets the offset for an indexed attribute so that further querying of that attribute can be performed",[1711,3784,3785,3793],{},[1714,3786,3787],{},[1717,3788,3789,3791],{},[1720,3790,1722],{},[1720,3792,1725],{},[1727,3794,3795,3803,3813],{},[1717,3796,3797,3801],{},[1732,3798,3799],{},[1735,3800,3646],{},[1732,3802,3746],{},[1717,3804,3805,3810],{},[1732,3806,3807],{},[1735,3808,3809],{},"attributeIndex",[1732,3811,3812],{},"The index of the attribute",[1717,3814,3815,3819],{},[1732,3816,3817],{},[1735,3818,3763],{},[1732,3820,3766],{},[1689,3822,3823,3676,3825,3773],{},[3673,3824,3675],{},[1684,3826,1686],{"href":1686},[1679,3828,1682,3830,3832],{"id":3829},"enum-uderror-udattributeset_getoffsetofnamedattributeconst-struct-udattributeset-pattributeset-const-char-pname-uint32_t-poffset",[1684,3831,1686],{"href":1686}," udAttributeSet_GetOffsetOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, uint32_t *pOffset)",[1689,3834,3835],{},"Gets the offset for a named attribute so that further querying of that attribute can be performed",[1711,3837,3838,3846],{},[1714,3839,3840],{},[1717,3841,3842,3844],{},[1720,3843,1722],{},[1720,3845,1725],{},[1727,3847,3848,3856,3866],{},[1717,3849,3850,3854],{},[1732,3851,3852],{},[1735,3853,3646],{},[1732,3855,3746],{},[1717,3857,3858,3863],{},[1732,3859,3860],{},[1735,3861,3862],{},"pName",[1732,3864,3865],{},"The name of the attribute",[1717,3867,3868,3872],{},[1732,3869,3870],{},[1735,3871,3763],{},[1732,3873,3766],{},[1689,3875,3876,3676,3878,3773],{},[3673,3877,3675],{},[1684,3879,1686],{"href":1686},[1679,3881,1682,3883,3885],{"id":3882},"enum-uderror-udattributeset_getoffsetandindexofnamedattributeconst-struct-udattributeset-pattributeset-const-char-pname-uint32_t-poffset-uint32_t-pindex",[1684,3884,1686],{"href":1686}," udAttributeSet_GetOffsetAndIndexOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, uint32_t *pOffset, uint32_t *pIndex)",[1689,3887,3888],{},"Gets the offset and\u002For index for a named attribute so that further querying of that attribute can be performed",[1711,3890,3891,3899],{},[1714,3892,3893],{},[1717,3894,3895,3897],{},[1720,3896,1722],{},[1720,3898,1725],{},[1727,3900,3901,3909,3917,3926],{},[1717,3902,3903,3907],{},[1732,3904,3905],{},[1735,3906,3646],{},[1732,3908,3746],{},[1717,3910,3911,3915],{},[1732,3912,3913],{},[1735,3914,3862],{},[1732,3916,3865],{},[1717,3918,3919,3923],{},[1732,3920,3921],{},[1735,3922,3763],{},[1732,3924,3925],{},"Optional pointer to be written to with the value of the offset if it is found (may be null)",[1717,3927,3928,3933],{},[1732,3929,3930],{},[1735,3931,3932],{},"pIndex",[1732,3934,3935],{},"Optional pointer to be written with the index of the attribute if found (may be null)",[1689,3937,3938,3676,3940,3773],{},[3673,3939,3675],{},[1684,3941,1686],{"href":1686},[1679,3943,1682,3945,3947],{"id":3944},"enum-uderror-udattributeset_getdescriptorofnamedattributeconst-struct-udattributeset-pattributeset-const-char-pname-struct-udattributedescriptor-pdescriptor",[1684,3946,1686],{"href":1686}," udAttributeSet_GetDescriptorOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, struct udAttributeDescriptor *pDescriptor)",[1689,3949,3950],{},"Gets the descriptor of a named attribute stored in a udAttributeSet",[1711,3952,3953,3961],{},[1714,3954,3955],{},[1717,3956,3957,3959],{},[1720,3958,1722],{},[1720,3960,1725],{},[1727,3962,3963,3972,3980],{},[1717,3964,3965,3969],{},[1732,3966,3967],{},[1735,3968,3646],{},[1732,3970,3971],{},"The attribute set to get the descriptor from",[1717,3973,3974,3978],{},[1732,3975,3976],{},[1735,3977,3862],{},[1732,3979,3865],{},[1717,3981,3982,3987],{},[1732,3983,3984],{},[1735,3985,3986],{},"pDescriptor",[1732,3988,3989],{},"This pointer to be written to with the value of the descriptor if it is found",[1689,3991,3992,3676,3994,3996],{},[3673,3993,3675],{},[1684,3995,1686],{"href":1686}," value based on the result of writing the descriptor to pDescriptor",[1679,3998,1682,4000,4002],{"id":3999},"enum-uderror-udattribute_getdescriptorofstandardattributeconst-enum-udstdattribute-attribute-struct-udattributedescriptor-pdescriptor",[1684,4001,1686],{"href":1686}," udAttribute_GetDescriptorOfStandardAttribute(const enum udStdAttribute attribute, struct udAttributeDescriptor *pDescriptor)",[1689,4004,4005],{},"Gets the descriptor of a standard attribute",[1711,4007,4008,4016],{},[1714,4009,4010],{},[1717,4011,4012,4014],{},[1720,4013,1722],{},[1720,4015,1725],{},[1727,4017,4018,4027],{},[1717,4019,4020,4024],{},[1732,4021,4022],{},[1735,4023,3753],{},[1732,4025,4026],{},"The standard attribute to return the descriptor of",[1717,4028,4029,4033],{},[1732,4030,4031],{},[1735,4032,3986],{},[1732,4034,3989],{},[1689,4036,4037,3676,4039,3996],{},[3673,4038,3675],{},[1684,4040,1686],{"href":1686},[1679,4042,1682,4044,4046],{"id":4043},"enum-uderror-udattributeset_encodenormaluint32_t-pencoded-const-float-xyz3",[1684,4045,1686],{"href":1686}," udAttributeSet_EncodeNormal(uint32_t *pEncoded, const float xyz[3])",[1689,4048,4049],{},"Encodes a normal vector as a uint32 suitable for storage in the udNormal attribute field",[1711,4051,4052,4060],{},[1714,4053,4054],{},[1717,4055,4056,4058],{},[1720,4057,1722],{},[1720,4059,1725],{},[1727,4061,4062,4072],{},[1717,4063,4064,4069],{},[1732,4065,4066],{},[1735,4067,4068],{},"pEncoded",[1732,4070,4071],{},"The pointer to store the result of encoding the normal in",[1717,4073,4074,4079],{},[1732,4075,4076],{},[1735,4077,4078],{},"xyz",[1732,4080,4081],{},"An array representing the 3 components of the vector to be encoded. The vector must be normalised",[1689,4083,4084,3676,4086,4088],{},[3673,4085,3675],{},[1684,4087,1686],{"href":1686}," value based on the result of encoding the normal and writing it to pEncoded",[1679,4090,1682,4092,4094],{"id":4091},"enum-uderror-udattributeset_decodenormaluint32_t-encoded-float-xyz3",[1684,4093,1686],{"href":1686}," udAttributeSet_DecodeNormal(uint32_t encoded, float xyz[3])",[1689,4096,4097],{},"Decodes a normal vector as a uint32 to an array of 3 floats",[1711,4099,4100,4108],{},[1714,4101,4102],{},[1717,4103,4104,4106],{},[1720,4105,1722],{},[1720,4107,1725],{},[1727,4109,4110,4120],{},[1717,4111,4112,4117],{},[1732,4113,4114],{},[1735,4115,4116],{},"encoded",[1732,4118,4119],{},"The encoded normal to be decoded",[1717,4121,4122,4126],{},[1732,4123,4124],{},[1735,4125,4078],{},[1732,4127,4128],{},"An array representing the 3 components of the decoded vector to be written to",[1689,4130,4131,3676,4133,4135],{},[3673,4132,3675],{},[1684,4134,1686],{"href":1686}," value indicating the success of the operation",[1679,4137,1682,4139,4141],{"id":4138},"enum-uderror-udattributeset_generateattributesetcopyrunsstruct-udattributesetcopyruns-pcopy-const-struct-udattributeset-ptarget-const-struct-udattributeset-psource",[1684,4140,1686],{"href":1686}," udAttributeSet_GenerateAttributeSetCopyRuns(struct udAttributeSetCopyRuns *pCopy, const struct udAttributeSet *pTarget, const struct udAttributeSet *pSource)",[1689,4143,4144],{},"Generate a set of instructions mapping between byte arrays representing two attribute sets",[1711,4146,4147,4155],{},[1714,4148,4149],{},[1717,4150,4151,4153],{},[1720,4152,1722],{},[1720,4154,1725],{},[1727,4156,4157,4167],{},[1717,4158,4159,4164],{},[1732,4160,4161],{},[1735,4162,4163],{},"pCopy",[1732,4165,4166],{},"a pointer to the udAttributeSetCopyRuns objects to be oppulated",[1717,4168,4169,4173],{},[1732,4170,4171],{},[1735,4172,4078],{},[1732,4174,4128],{},[1689,4176,4177,3676,4179,4135],{},[3673,4178,3675],{},[1684,4180,1686],{"href":1686},[1674,4182,1796],{"id":1795},[1679,4184,4186],{"id":4185},"struct-udattributedescriptor","struct udAttributeDescriptor",[1689,4188,4189],{},"Describes the contents of an attribute stream including its size, type and how it gets blended in LOD layers",[1711,4191,4192,4202],{},[1714,4193,4194],{},[1717,4195,4196,4198,4200],{},[1720,4197,1812],{},[1720,4199,1815],{},[1720,4201,1725],{},[1727,4203,4204,4218,4232,4247,4261,4275,4290],{},[1717,4205,4206,4211,4215],{},[1732,4207,4208],{},[1735,4209,4210],{},"typeInfo",[1732,4212,4213],{},[1735,4214,3400],{},[1732,4216,4217],{},"This contains information about the type.",[1717,4219,4220,4225,4229],{},[1732,4221,4222],{},[1735,4223,4224],{},"blendType",[1732,4226,4227],{},[1735,4228,3327],{},[1732,4230,4231],{},"Which blend type this attribute is using.",[1717,4233,4234,4239,4244],{},[1732,4235,4236],{},[1735,4237,4238],{},"name[64]",[1732,4240,4241],{},[1735,4242,4243],{},"char",[1732,4245,4246],{},"Name of the attibute.",[1717,4248,4249,4254,4258],{},[1732,4250,4251],{},[1735,4252,4253],{},"prefix[16]",[1732,4255,4256],{},[1735,4257,4243],{},[1732,4259,4260],{},"Value prefix for display.",[1717,4262,4263,4268,4272],{},[1732,4264,4265],{},[1735,4266,4267],{},"suffix[16]",[1732,4269,4270],{},[1735,4271,4243],{},[1732,4273,4274],{},"Value suffix for display.",[1717,4276,4277,4282,4287],{},[1732,4278,4279],{},[1735,4280,4281],{},"histogramSize",[1732,4283,4284],{},[1735,4285,4286],{},"uint16_t",[1732,4288,4289],{},"Size of histogram data, currently only 0 and 64 are valid values.",[1717,4291,4292,4297,4302],{},[1732,4293,4294],{},[1735,4295,4296],{},"rangeMaskSize",[1732,4298,4299],{},[1735,4300,4301],{},"uint8_t",[1732,4303,4304],{},"Size in bytes of range mask data to keep for this attribute, currently only 1, 2, 4, and 8 are valid values.",[1679,4306,4308],{"id":4307},"struct-udattributeset","struct udAttributeSet",[1689,4310,4311],{},"Provides a set a attributes and includes an optimized lookup for standard types",[1711,4313,4314,4324],{},[1714,4315,4316],{},[1717,4317,4318,4320,4322],{},[1720,4319,1812],{},[1720,4321,1815],{},[1720,4323,1725],{},[1727,4325,4326,4339,4353,4367],{},[1717,4327,4328,4332,4336],{},[1732,4329,4330],{},[1735,4331,3656],{},[1732,4333,4334],{},[1735,4335,3027],{},[1732,4337,4338],{},"Which standard attributes are available (used to optimize lookups internally), they still appear in the descriptors.",[1717,4340,4341,4346,4350],{},[1732,4342,4343],{},[1735,4344,4345],{},"count",[1732,4347,4348],{},[1735,4349,1831],{},[1732,4351,4352],{},"How many udAttributeDescriptor objects are used in pDescriptors.",[1717,4354,4355,4360,4364],{},[1732,4356,4357],{},[1735,4358,4359],{},"allocated",[1732,4361,4362],{},[1735,4363,1831],{},[1732,4365,4366],{},"How many udAttributeDescriptor objects are allocated to be used in pDescriptors.",[1717,4368,4369,4374,4379],{},[1732,4370,4371],{},[1735,4372,4373],{},"pDescriptors",[1732,4375,4376],{},[1735,4377,4378],{},"struct udAttributeDescriptor \\*",[1732,4380,4381],{},"this contains the actual information on the attributes",[1679,4383,4385],{"id":4384},"struct-udattributesetcopyruns","struct udAttributeSetCopyRuns",[1689,4387,4388],{},"A structure of “instruction” chunks to copy from one attribute set to another For example if source has color, intensity, custom1 and custom2, and the destination had color, classification and custom2, udAttributeSet_GetTansforms would provide an array of chunks to define the memcpy\u002Fmemset’s required for color and custom2 In this example incomplete will be set to true to indicate at least one element is not written to in the copy instructions, so the entire structure should be initialised to zero beforehand (much simpler and potentially faster than trying to memset individual elements)",[1711,4390,4391,4401],{},[1714,4392,4393],{},[1717,4394,4395,4397,4399],{},[1720,4396,1812],{},[1720,4398,1815],{},[1720,4400,1725],{},[1727,4402,4403,4417,4431,4445,4459,4473],{},[1717,4404,4405,4410,4414],{},[1732,4406,4407],{},[1735,4408,4409],{},"len",[1732,4411,4412],{},[1735,4413,1831],{},[1732,4415,4416],{},"the number of copy instructions stored",[1717,4418,4419,4424,4428],{},[1732,4420,4421],{},[1735,4422,4423],{},"incomplete",[1732,4425,4426],{},[1735,4427,1831],{},[1732,4429,4430],{},"If true, not all the attributes are present so memset target to zero beforehand.",[1717,4432,4433,4438,4442],{},[1732,4434,4435],{},[1735,4436,4437],{},"sourceOffset",[1732,4439,4440],{},[1735,4441,1831],{},[1732,4443,4444],{},"offset of the attribute in the source as returned by the udAttributeSet_GetOffset* family of functions",[1717,4446,4447,4452,4456],{},[1732,4448,4449],{},[1735,4450,4451],{},"targetOffset",[1732,4453,4454],{},[1735,4455,1831],{},[1732,4457,4458],{},"offset of the attribute in the destination as returned by the udAttributeSet_GetOffset* family of functions",[1717,4460,4461,4466,4470],{},[1732,4462,4463],{},[1735,4464,4465],{},"size",[1732,4467,4468],{},[1735,4469,1831],{},[1732,4471,4472],{},"size of the attribute in bytes",[1717,4474,4475,4480,4485],{},[1732,4476,4477],{},[1735,4478,4479],{},"(uint32_t)[udAttributeSet_MaxDescriptors]",[1732,4481,4482],{},[1735,4483,4484],{},"struct udAttributeSetCopyRuns::[anonymous] chunks(uint32_t)udSA_Count +",[1732,4486,4487],{},"array of copy instructions",{"title":2049,"searchDepth":2050,"depth":2050,"links":4489},[4490,4497,4521],{"id":2697,"depth":2050,"text":2698,"children":4491},[4492,4493,4494,4495,4496],{"id":2701,"depth":2055,"text":2702},{"id":2733,"depth":2055,"text":2734},{"id":3026,"depth":2055,"text":3027},{"id":3326,"depth":2055,"text":3327},{"id":3399,"depth":2055,"text":3400},{"id":1676,"depth":2050,"text":1677,"children":4498},[4499,4501,4503,4505,4507,4509,4511,4513,4515,4517,4519],{"id":3614,"depth":2055,"text":4500},"enum udError udAttributeSet_Create(struct udAttributeSet *pAttributeSet, enum udStdAttributeContent content, uint32_t additionalCustomAttributes)",{"id":3682,"depth":2055,"text":4502},"enum udError udAttributeSet_Destroy(struct udAttributeSet *pAttributeSet)",{"id":3719,"depth":2055,"text":4504},"enum udError udAttributeSet_GetOffsetOfStandardAttribute(const struct udAttributeSet *pAttributeSet, enum udStdAttribute attribute, uint32_t *pOffset)",{"id":3776,"depth":2055,"text":4506},"enum udError udAttributeSet_GetOffsetOfIndexedAttribute(const struct udAttributeSet *pAttributeSet, uint32_t attributeIndex, uint32_t *pOffset)",{"id":3829,"depth":2055,"text":4508},"enum udError udAttributeSet_GetOffsetOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, uint32_t *pOffset)",{"id":3882,"depth":2055,"text":4510},"enum udError udAttributeSet_GetOffsetAndIndexOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, uint32_t *pOffset, uint32_t *pIndex)",{"id":3944,"depth":2055,"text":4512},"enum udError udAttributeSet_GetDescriptorOfNamedAttribute(const struct udAttributeSet *pAttributeSet, const char *pName, struct udAttributeDescriptor *pDescriptor)",{"id":3999,"depth":2055,"text":4514},"enum udError udAttribute_GetDescriptorOfStandardAttribute(const enum udStdAttribute attribute, struct udAttributeDescriptor *pDescriptor)",{"id":4043,"depth":2055,"text":4516},"enum udError udAttributeSet_EncodeNormal(uint32_t *pEncoded, const float xyz[3])",{"id":4091,"depth":2055,"text":4518},"enum udError udAttributeSet_DecodeNormal(uint32_t encoded, float xyz[3])",{"id":4138,"depth":2055,"text":4520},"enum udError udAttributeSet_GenerateAttributeSetCopyRuns(struct udAttributeSetCopyRuns *pCopy, const struct udAttributeSet *pTarget, const struct udAttributeSet *pSource)",{"id":1795,"depth":2050,"text":1796,"children":4522},[4523,4524,4525],{"id":4185,"depth":2055,"text":4186},{"id":4307,"depth":2055,"text":4308},{"id":4384,"depth":2055,"text":4385},{},"\u002Fguide\u002Fudsdk\u002Fudattributes",{"title":2686,"description":2694},"guide\u002Fudsdk\u002FudAttributes","WG9QyStnhwE7kpTEt2R4vSveqR2ju_vdzpRpiWJ5qU8",{"id":4532,"title":4533,"body":4534,"date":7,"description":5540,"extension":2064,"meta":5541,"navigation":43,"path":5542,"seo":5543,"stem":5544,"__hash__":5545},"udsdkguide\u002Fguide\u002Fudsdk\u002FudBlockRenderContext.md","udBlockRenderContext",{"type":1667,"value":4535,"toc":5515},[4536,4539,4545,4547,4551,4554,4586,4591,4597,4603,4625,4632,4638,4641,4663,4670,4684,4690,4751,4758,4762,4765,4787,4792,4796,4799,4820,4825,4831,4834,4856,4863,4869,4872,4892,4898,4900,4904,4907,4977,4981,4984,5039,5043,5046,5161,5165,5168,5311,5315,5318,5390,5394,5397],[1670,4537,4533],{"id":4538},"udblockrendercontext",[1689,4540,4541,4542,4544],{},"The ",[3673,4543,4533],{}," object provides an interface to render Nuclideon Unlimited Detail models, with callbacks to enable GPU renderering. It provides the ability to render by colour, intensity or classification; additionally allowing the user to query a specific pixel for information about the pointcloud data.",[1674,4546,1677],{"id":1676},[1679,4548,4550],{"id":4549},"uddouble3-udblockrendervertexdata_getfloatpositionconst-struct-udblockrendervertexdata-pdata-uint32_t-index","udDouble3 udBlockRenderVertexData_GetFloatPosition(const struct udBlockRenderVertexData *pData, uint32_t index)",[1689,4552,4553],{},"Retrieves a voxel position in model space.",[1711,4555,4556,4564],{},[1714,4557,4558],{},[1717,4559,4560,4562],{},[1720,4561,1722],{},[1720,4563,1725],{},[1727,4565,4566,4576],{},[1717,4567,4568,4573],{},[1732,4569,4570],{},[1735,4571,4572],{},"pData",[1732,4574,4575],{},"The block vertex data to query.",[1717,4577,4578,4583],{},[1732,4579,4580],{},[1735,4581,4582],{},"index",[1732,4584,4585],{},"The voxel index.",[1689,4587,4588,4590],{},[3673,4589,3675],{}," The voxel position in model space",[1679,4592,1682,4594,4596],{"id":4593},"enum-uderror-udblockrendercontext_initstruct-udblockrendergpuinterface-pgpuinterface",[1684,4595,1686],{"href":1686}," udBlockRenderContext_Init(struct udBlockRenderGPUInterface *pGPUInterface)",[1689,4598,4599,4600,4602],{},"Create an instance of ",[1735,4601,4533],{}," for rendering.",[1711,4604,4605,4613],{},[1714,4606,4607],{},[1717,4608,4609,4611],{},[1720,4610,1722],{},[1720,4612,1725],{},[1727,4614,4615],{},[1717,4616,4617,4622],{},[1732,4618,4619],{},[1735,4620,4621],{},"pGPUInterface",[1732,4623,4624],{},"The pointer of the user-defined callbacks interface.",[1689,4626,4627,3676,4629,4631],{},[3673,4628,3675],{},[1684,4630,1686],{"href":1686}," value based on the result of the render context creation.",[1679,4633,1682,4635,4637],{"id":4634},"enum-uderror-udblockrendercontext_deinit",[1684,4636,1686],{"href":1686}," udBlockRenderContext_Deinit()",[1689,4639,4640],{},"Destroy the instance of the renderer.",[1711,4642,4643,4651],{},[1714,4644,4645],{},[1717,4646,4647,4649],{},[1720,4648,1722],{},[1720,4650,1725],{},[1727,4652,4653],{},[1717,4654,4655,4660],{},[1732,4656,4657],{},[1735,4658,4659],{},"ppRenderer",[1732,4661,4662],{},"The pointer pointer of the udRenderContext. This will deallocate the instance of udRenderContext.",[1689,4664,4665,3676,4667,4669],{},[3673,4666,3675],{},[1684,4668,1686],{"href":1686}," value based on the result of the render context destruction.",[1679,4671,1682,4673,4675,4676,4680,4681,4683],{"id":4672},"enum-uderror-udblockrendercontext_renderstruct-udrendercontext-prenderer-struct-udrendertarget-prenderview-struct-udrenderinstance-pmodels-int-modelcount-struct-udrendersettings-prenderoptions",[1684,4674,1686],{"href":1686}," udBlockRenderContext_Render(struct udRenderContext *pRenderer, struct udRenderTarget *pRenderView, struct ",[1684,4677,4679],{"href":4678},"udRenderContext","udRenderInstance"," *pModels, int modelCount, struct ",[1684,4682,2556],{"href":4678}," *pRenderOptions)",[1689,4685,4686,4687,2503],{},"Render the models from the perspective of ",[1735,4688,4689],{},"pRenderView",[1711,4691,4692,4700],{},[1714,4693,4694],{},[1717,4695,4696,4698],{},[1720,4697,1722],{},[1720,4699,1725],{},[1727,4701,4702,4712,4721,4731,4741],{},[1717,4703,4704,4709],{},[1732,4705,4706],{},[1735,4707,4708],{},"pRenderer",[1732,4710,4711],{},"The renderer to render the scene.",[1717,4713,4714,4718],{},[1732,4715,4716],{},[1735,4717,4689],{},[1732,4719,4720],{},"The view to render from with the render buffers associated with it being filled out.",[1717,4722,4723,4728],{},[1732,4724,4725],{},[1735,4726,4727],{},"pModels",[1732,4729,4730],{},"The array of models to use in render.",[1717,4732,4733,4738],{},[1732,4734,4735],{},[1735,4736,4737],{},"modelCount",[1732,4739,4740],{},"The amount of models in pModels.",[1717,4742,4743,4748],{},[1732,4744,4745],{},[1735,4746,4747],{},"pRenderOptions",[1732,4749,4750],{},"Additional render options.",[1689,4752,4753,3676,4755,4757],{},[3673,4754,3675],{},[1684,4756,1686],{"href":1686}," value based on the result of the render.",[1679,4759,4761],{"id":4760},"uint32_t-udrendercontext_getmodelidconst-struct-udblockrendermodel-pblockrendermodel","uint32_t udRenderContext_GetModelId(const struct udBlockRenderModel *pBlockRenderModel)",[1689,4763,4764],{},"Get the unique user-defined id of the supplied model.",[1711,4766,4767,4775],{},[1714,4768,4769],{},[1717,4770,4771,4773],{},[1720,4772,1722],{},[1720,4774,1725],{},[1727,4776,4777],{},[1717,4778,4779,4784],{},[1732,4780,4781],{},[1735,4782,4783],{},"pBlockRenderModel",[1732,4785,4786],{},"The model whose id will be returned",[1689,4788,4789,4791],{},[3673,4790,3675],{}," The unique id of the model.",[1679,4793,4795],{"id":4794},"uint32_t-udrendercontext_getvoxelshaderconst-struct-udblockrendermodel-pblockrendermodel","uint32_t udRenderContext_GetVoxelShader(const struct udBlockRenderModel *pBlockRenderModel)",[1689,4797,4798],{},"Get the voxel shader function pointer",[1711,4800,4801,4809],{},[1714,4802,4803],{},[1717,4804,4805,4807],{},[1720,4806,1722],{},[1720,4808,1725],{},[1727,4810,4811],{},[1717,4812,4813,4817],{},[1732,4814,4815],{},[1735,4816,4783],{},[1732,4818,4819],{},"The model whose voxel shader function will be returned",[1689,4821,4822,4824],{},[3673,4823,3675],{}," The voxel shader function of the model.",[1679,4826,1682,4828,4830],{"id":4827},"enum-uderror-udrendercontext_lockblockvoid-pblock",[1684,4829,1686],{"href":1686}," udRenderContext_LockBlock(void *pBlock)",[1689,4832,4833],{},"Locks an Unlimited Detail block, preventing it from being freed by the streamer.",[1711,4835,4836,4844],{},[1714,4837,4838],{},[1717,4839,4840,4842],{},[1720,4841,1722],{},[1720,4843,1725],{},[1727,4845,4846],{},[1717,4847,4848,4853],{},[1732,4849,4850],{},[1735,4851,4852],{},"pBlock",[1732,4854,4855],{},"A pointer to an internal Unlimited Detail block.",[1689,4857,4858,3676,4860,4862],{},[3673,4859,3675],{},[1684,4861,1686],{"href":1686}," value indicating the result of the lock update.",[1679,4864,1682,4866,4868],{"id":4865},"enum-uderror-udrendercontext_unlockblockvoid-pblock",[1684,4867,1686],{"href":1686}," udRenderContext_UnlockBlock(void *pBlock)",[1689,4870,4871],{},"Unlocks an Unlimited Detail block, allowing the streamer to free it.",[1711,4873,4874,4882],{},[1714,4875,4876],{},[1717,4877,4878,4880],{},[1720,4879,1722],{},[1720,4881,1725],{},[1727,4883,4884],{},[1717,4885,4886,4890],{},[1732,4887,4888],{},[1735,4889,4852],{},[1732,4891,4855],{},[1689,4893,4894,3676,4896,4862],{},[3673,4895,3675],{},[1684,4897,1686],{"href":1686},[1674,4899,1796],{"id":1795},[1679,4901,4903],{"id":4902},"struct-udblockrenderdrawlist","struct udBlockRenderDrawList",[1689,4905,4906],{},"Passed by the block renderer to the implementation to define what parts of the block need to be rendered",[1711,4908,4909,4919],{},[1714,4910,4911],{},[1717,4912,4913,4915,4917],{},[1720,4914,1812],{},[1720,4916,1815],{},[1720,4918,1725],{},[1727,4920,4921,4935,4949,4963],{},[1717,4922,4923,4928,4932],{},[1732,4924,4925],{},[1735,4926,4927],{},"crc",[1732,4929,4930],{},[1735,4931,1831],{},[1732,4933,4934],{},"A crc representing inputs to the drawlist (eg listMask or geometry), allowing callers to cache if necessary.",[1717,4936,4937,4942,4946],{},[1732,4938,4939],{},[1735,4940,4941],{},"listMask",[1732,4943,4944],{},[1735,4945,4286],{},[1732,4947,4948],{},"When non-zero, the divisions the mask used to create the drawlist (with adjacent divisions merged), zero indicates non-merged\u002Ffiltered list.",[1717,4950,4951,4956,4960],{},[1732,4952,4953],{},[1735,4954,4955],{},"drawCount",[1732,4957,4958],{},[1735,4959,4286],{},[1732,4961,4962],{},"Number of drawcalls to complete this block.",[1717,4964,4965,4970,4975],{},[1732,4966,4967],{},[1735,4968,4969],{},"draws[1]",[1732,4971,4972],{},[1735,4973,4974],{},"struct udBlockRenderDrawList::DrawCall",[1732,4976],{},[1679,4978,4980],{"id":4979},"struct-drawcall","struct DrawCall",[1689,4982,4983],{},"Stores the internal state of the draw call",[1711,4985,4986,4996],{},[1714,4987,4988],{},[1717,4989,4990,4992,4994],{},[1720,4991,1812],{},[1720,4993,1815],{},[1720,4995,1725],{},[1727,4997,4998,5012,5025],{},[1717,4999,5000,5005,5009],{},[1732,5001,5002],{},[1735,5003,5004],{},"start",[1732,5006,5007],{},[1735,5008,4286],{},[1732,5010,5011],{},"Starting index in the vertex buffer.",[1717,5013,5014,5018,5022],{},[1732,5015,5016],{},[1735,5017,4345],{},[1732,5019,5020],{},[1735,5021,4286],{},[1732,5023,5024],{},"Number of points for this call.",[1717,5026,5027,5032,5036],{},[1732,5028,5029],{},[1735,5030,5031],{},"mask",[1732,5033,5034],{},[1735,5035,4286],{},[1732,5037,5038],{},"Mask of division this call is relevant to (bitwise and with supplied divisionMask to determine draw\u002Fskip).",[1679,5040,5042],{"id":5041},"struct-udblockrendervertexdata","struct udBlockRenderVertexData",[1689,5044,5045],{},"Stores the vertex data needed to render a block",[1711,5047,5048,5058],{},[1714,5049,5050],{},[1717,5051,5052,5054,5056],{},[1720,5053,1812],{},[1720,5055,1815],{},[1720,5057,1725],{},[1727,5059,5060,5074,5089,5104,5118,5132,5147],{},[1717,5061,5062,5066,5071],{},[1732,5063,5064],{},[1735,5065,4852],{},[1732,5067,5068],{},[1735,5069,5070],{},"void \\*",[1732,5072,5073],{},"Pointer to internal block memory.",[1717,5075,5076,5081,5086],{},[1732,5077,5078],{},[1735,5079,5080],{},"pPointBuffer",[1732,5082,5083],{},[1735,5084,5085],{},"const struct [udPointBufferU64](udPointBuffer.md) \\*",[1732,5087,5088],{},"Pointer to points data.",[1717,5090,5091,5096,5101],{},[1732,5092,5093],{},[1735,5094,5095],{},"unitOctreeMultiplier",[1732,5097,5098],{},[1735,5099,5100],{},"double",[1732,5102,5103],{},"Multiplier to take from integer octee space to 0..1 octree space.",[1717,5105,5106,5111,5115],{},[1732,5107,5108],{},[1735,5109,5110],{},"nodeSize",[1732,5112,5113],{},[1735,5114,5100],{},[1732,5116,5117],{},"Generally the w component for the size of the node (1.0 == root, 0.5 = level 1, 0.25, etc).",[1717,5119,5120,5125,5129],{},[1732,5121,5122],{},[1735,5123,5124],{},"childSize",[1732,5126,5127],{},[1735,5128,5100],{},[1732,5130,5131],{},"nodeSize * 0.5 Currently legacy, with intent to switch everything to nodeSize",[1717,5133,5134,5139,5144],{},[1732,5135,5136],{},[1735,5137,5138],{},"modelToBlock",[1732,5140,5141],{},[1735,5142,5143],{},"udDouble4x4",[1732,5145,5146],{},"Matrix to take a block from model space, to block space.",[1717,5148,5149,5154,5158],{},[1732,5150,5151],{},[1735,5152,5153],{},"distEye",[1732,5155,5156],{},[1735,5157,5100],{},[1732,5159,5160],{},"Distance of this block to the camera (in eye space).",[1679,5162,5164],{"id":5163},"struct-udblockrendermodel","struct udBlockRenderModel",[1689,5166,5167],{},"Exposes data required to render a model",[1711,5169,5170,5180],{},[1714,5171,5172],{},[1717,5173,5174,5176,5178],{},[1720,5175,1812],{},[1720,5177,1815],{},[1720,5179,1725],{},[1727,5181,5182,5197,5211,5225,5239,5253,5268,5283,5297],{},[1717,5183,5184,5189,5194],{},[1732,5185,5186],{},[1735,5187,5188],{},"pRenderModel",[1732,5190,5191],{},[1735,5192,5193],{},"struct udRenderModel \\*",[1732,5195,5196],{},"Pointer to internal model.",[1717,5198,5199,5204,5208],{},[1732,5200,5201],{},[1735,5202,5203],{},"world",[1732,5205,5206],{},[1735,5207,5143],{},[1732,5209,5210],{},"World Matrix.",[1717,5212,5213,5218,5222],{},[1732,5214,5215],{},[1735,5216,5217],{},"worldView",[1732,5219,5220],{},[1735,5221,5143],{},[1732,5223,5224],{},"World-View Matrix.",[1717,5226,5227,5232,5236],{},[1732,5228,5229],{},[1735,5230,5231],{},"projection",[1732,5233,5234],{},[1735,5235,5143],{},[1732,5237,5238],{},"Projection Matrix.",[1717,5240,5241,5246,5250],{},[1732,5242,5243],{},[1735,5244,5245],{},"wvps",[1732,5247,5248],{},[1735,5249,5143],{},[1732,5251,5252],{},"World-View-Projection-Screen Matrix.",[1717,5254,5255,5260,5265],{},[1732,5256,5257],{},[1735,5258,5259],{},"frustumPlanes[6]",[1732,5261,5262],{},[1735,5263,5264],{},"udDouble4",[1732,5266,5267],{},"Cached view frustum planes.",[1717,5269,5270,5275,5280],{},[1732,5271,5272],{},[1735,5273,5274],{},"eyePosMS",[1732,5276,5277],{},[1735,5278,5279],{},"udDouble3",[1732,5281,5282],{},"Position of the eye in model space.",[1717,5284,5285,5290,5294],{},[1732,5286,5287],{},[1735,5288,5289],{},"cameraForward",[1732,5291,5292],{},[1735,5293,5279],{},[1732,5295,5296],{},"Forward vector of the camera in model space.",[1717,5298,5299,5304,5308],{},[1732,5300,5301],{},[1735,5302,5303],{},"cameraFacingDiag",[1732,5305,5306],{},[1735,5307,5279],{},[1732,5309,5310],{},"Vector that when transformed will be a diagonal line in screen space.",[1679,5312,5314],{"id":5313},"struct-udblockrenderinfo","struct udBlockRenderInfo",[1689,5316,5317],{},"Structure to hold rendering info for a single drawcall",[1711,5319,5320,5330],{},[1714,5321,5322],{},[1717,5323,5324,5326,5328],{},[1720,5325,1812],{},[1720,5327,1815],{},[1720,5329,1725],{},[1727,5331,5332,5347,5361,5376],{},[1717,5333,5334,5339,5344],{},[1732,5335,5336],{},[1735,5337,5338],{},"pDrawList",[1732,5340,5341],{},[1735,5342,5343],{},"struct udBlockRenderDrawList \\*",[1732,5345,5346],{},"The draw list defining which points of the block are to be rendered.",[1717,5348,5349,5354,5358],{},[1732,5350,5351],{},[1735,5352,5353],{},"blockPriority",[1732,5355,5356],{},[1735,5357,5100],{},[1732,5359,5360],{},"The priority of the block.",[1717,5362,5363,5368,5373],{},[1732,5364,5365],{},[1735,5366,5367],{},"pointMode",[1732,5369,5370],{},[1735,5371,5372],{},"enum [udRenderContextPointMode](udRenderContext.md)",[1732,5374,5375],{},"points\u002Frectangles\u002Fcubes",[1717,5377,5378,5383,5387],{},[1732,5379,5380],{},[1735,5381,5382],{},"divisionsMask",[1732,5384,5385],{},[1735,5386,4286],{},[1732,5388,5389],{},"divisions mask, identifying which portions of the block are to be rendered",[1679,5391,5393],{"id":5392},"struct-udblockrendergpuinterface","struct udBlockRenderGPUInterface",[1689,5395,5396],{},"Structure that stores user-defined rendering callbacks (optional and required)",[1711,5398,5399,5409],{},[1714,5400,5401],{},[1717,5402,5403,5405,5407],{},[1720,5404,1812],{},[1720,5406,1815],{},[1720,5408,1725],{},[1727,5410,5411,5426,5441,5456,5471,5486,5501],{},[1717,5412,5413,5418,5423],{},[1732,5414,5415],{},[1735,5416,5417],{},"height)",[1732,5419,5420],{},[1735,5421,5422],{},"void (\\*pBeginRender)(void \\*pGPUContext, const struct udRenderView \\*pView, uint32_t width, uint32_t",[1732,5424,5425],{},"Called when rendering begins.",[1717,5427,5428,5433,5438],{},[1732,5429,5430],{},[1735,5431,5432],{},"pGPUContext)",[1732,5434,5435],{},[1735,5436,5437],{},"void (\\*pEndRender)(void \\*",[1732,5439,5440],{},"Called when rendering ends.",[1717,5442,5443,5448,5453],{},[1732,5444,5445],{},[1735,5446,5447],{},"ppVertexBuffer)",[1732,5449,5450],{},[1735,5451,5452],{},"enum [udError](udError.md) (\\*pCreateVertexBuffer)(void \\*pGPUContext, const struct udBlockRenderModel \\*pModel, const struct udBlockRenderVertexData vertexData, void \\* \\*",[1732,5454,5455],{},"Called when vertex buffer is ready to be created.",[1717,5457,5458,5463,5468],{},[1732,5459,5460],{},[1735,5461,5462],{},"pVoxelShaderData)",[1732,5464,5465],{},[1735,5466,5467],{},"enum [udError](udError.md) (\\*pUploadVertexBuffer)(void \\*pGPUContext, const struct udBlockRenderModel \\*pModel, void \\*pVertexBuffer, void \\*",[1732,5469,5470],{},"Called when vertex buffer is ready to upload to GPU.",[1717,5472,5473,5478,5483],{},[1732,5474,5475],{},[1735,5476,5477],{},"pInfo)",[1732,5479,5480],{},[1735,5481,5482],{},"enum [udError](udError.md) (\\*pRenderVertexBuffer)(void \\*pGPUContext, const struct udBlockRenderModel \\*pModel, void \\*pVertexBuffer, void \\*pVoxelShaderData, const struct udBlockRenderInfo \\*",[1732,5484,5485],{},"Called when vertex buffer is to be rendered.",[1717,5487,5488,5493,5498],{},[1732,5489,5490],{},[1735,5491,5492],{},"pVertexBuffer)",[1732,5494,5495],{},[1735,5496,5497],{},"enum [udError](udError.md) (\\*pDestroyVertexBuffer)(void \\*pGPUContext, void \\*",[1732,5499,5500],{},"Called when vertex buffer is to be destroyed.",[1717,5502,5503,5508,5512],{},[1732,5504,5505],{},[1735,5506,5507],{},"pGPUContext",[1732,5509,5510],{},[1735,5511,5070],{},[1732,5513,5514],{},"Internal pointer to user-defined storage.",{"title":2049,"searchDepth":2050,"depth":2050,"links":5516},[5517,5532],{"id":1676,"depth":2050,"text":1677,"children":5518},[5519,5520,5522,5524,5526,5527,5528,5530],{"id":4549,"depth":2055,"text":4550},{"id":4593,"depth":2055,"text":5521},"enum udError udBlockRenderContext_Init(struct udBlockRenderGPUInterface *pGPUInterface)",{"id":4634,"depth":2055,"text":5523},"enum udError udBlockRenderContext_Deinit()",{"id":4672,"depth":2055,"text":5525},"enum udError udBlockRenderContext_Render(struct udRenderContext *pRenderer, struct udRenderTarget *pRenderView, struct udRenderInstance *pModels, int modelCount, struct udRenderSettings *pRenderOptions)",{"id":4760,"depth":2055,"text":4761},{"id":4794,"depth":2055,"text":4795},{"id":4827,"depth":2055,"text":5529},"enum udError udRenderContext_LockBlock(void *pBlock)",{"id":4865,"depth":2055,"text":5531},"enum udError udRenderContext_UnlockBlock(void *pBlock)",{"id":1795,"depth":2050,"text":1796,"children":5533},[5534,5535,5536,5537,5538,5539],{"id":4902,"depth":2055,"text":4903},{"id":4979,"depth":2055,"text":4980},{"id":5041,"depth":2055,"text":5042},{"id":5163,"depth":2055,"text":5164},{"id":5313,"depth":2055,"text":5314},{"id":5392,"depth":2055,"text":5393},"The udBlockRenderContext object provides an interface to render Nuclideon Unlimited Detail models, with callbacks to enable GPU renderering. It provides the ability to render by colour, intensity or classification; additionally allowing the user to query a specific pixel for information about the pointcloud data.",{},"\u002Fguide\u002Fudsdk\u002Fudblockrendercontext",{"title":4533,"description":5540},"guide\u002Fudsdk\u002FudBlockRenderContext","JMjcOE0nWLWysyYztTDBZwxYvwRvaTADMlCNeq8wafQ",{"id":5547,"title":5548,"body":5549,"date":7,"description":5556,"extension":2064,"meta":5712,"navigation":43,"path":5713,"seo":5714,"stem":5715,"__hash__":5716},"udsdkguide\u002Fguide\u002Fudsdk\u002FudCloudFile.md","udCloudFile",{"type":1667,"value":5550,"toc":5707},[5551,5554,5557,5559,5563,5566],[1670,5552,5548],{"id":5553},"udcloudfile",[1689,5555,5556],{},"The udCloudFile object provide an interface for accessing data of files hosted in udCloud",[1674,5558,1796],{"id":1795},[1679,5560,5562],{"id":5561},"struct-udcloudfile","struct udCloudFile",[1689,5564,5565],{},"This represents a udCloud File",[1711,5567,5568,5578],{},[1714,5569,5570],{},[1717,5571,5572,5574,5576],{},[1720,5573,1812],{},[1720,5575,1815],{},[1720,5577,1725],{},[1727,5579,5580,5594,5608,5623,5637,5651,5665,5679,5693],{},[1717,5581,5582,5587,5591],{},[1732,5583,5584],{},[1735,5585,5586],{},"ID[64]",[1732,5588,5589],{},[1735,5590,4243],{},[1732,5592,5593],{},"The id from udCloud.",[1717,5595,5596,5601,5605],{},[1732,5597,5598],{},[1735,5599,5600],{},"projID[64]",[1732,5602,5603],{},[1735,5604,4243],{},[1732,5606,5607],{},"The project id it belongs to from udCloud.",[1717,5609,5610,5615,5620],{},[1732,5611,5612],{},[1735,5613,5614],{},"pPath",[1732,5616,5617],{},[1735,5618,5619],{},"char \\*",[1732,5621,5622],{},"The path of the udCloud File.",[1717,5624,5625,5630,5634],{},[1732,5626,5627],{},[1735,5628,5629],{},"pCreated",[1732,5631,5632],{},[1735,5633,5619],{},[1732,5635,5636],{},"The time this udCloud File was created.",[1717,5638,5639,5644,5648],{},[1732,5640,5641],{},[1735,5642,5643],{},"pTier",[1732,5645,5646],{},[1735,5647,5619],{},[1732,5649,5650],{},"The tier where this udCloud File is stored in udCloud.",[1717,5652,5653,5658,5662],{},[1732,5654,5655],{},[1735,5656,5657],{},"pTimeToLive",[1732,5659,5660],{},[1735,5661,5619],{},[1732,5663,5664],{},"If the udCloud File will be auto-deleted this is the timestamp for when that will occur.",[1717,5666,5667,5671,5676],{},[1732,5668,5669],{},[1735,5670,4465],{},[1732,5672,5673],{},[1735,5674,5675],{},"uint64_t",[1732,5677,5678],{},"The size of the udCloud File.",[1717,5680,5681,5686,5690],{},[1732,5682,5683],{},[1735,5684,5685],{},"isFolder",[1732,5687,5688],{},[1735,5689,1831],{},[1732,5691,5692],{},"!= 0 if the udCloud File is a folder",[1717,5694,5695,5700,5704],{},[1732,5696,5697],{},[1735,5698,5699],{},"isShared",[1732,5701,5702],{},[1735,5703,1831],{},[1732,5705,5706],{},"!= 0 if the udCloud File is shared",{"title":2049,"searchDepth":2050,"depth":2050,"links":5708},[5709],{"id":1795,"depth":2050,"text":1796,"children":5710},[5711],{"id":5561,"depth":2055,"text":5562},{},"\u002Fguide\u002Fudsdk\u002Fudcloudfile",{"title":5548,"description":5556},"guide\u002Fudsdk\u002FudCloudFile","qyY6cxqjGWkar54qc8glFH9dMBIruLP93YQdR7_LP0k",{"id":5718,"title":5719,"body":5720,"date":7,"description":5727,"extension":2064,"meta":6069,"navigation":43,"path":6070,"seo":6071,"stem":6072,"__hash__":6073},"udsdkguide\u002Fguide\u002Fudsdk\u002FudCloudProject.md","udCloudProject",{"type":1667,"value":5721,"toc":6054},[5722,5725,5728,5730,5739,5742,5794,5801,5810,5813,5842,5849,5859,5862,5909,5915,5924,5927,5957,5963,5965,5969,5972],[1670,5723,5719],{"id":5724},"udcloudproject",[1689,5726,5727],{},"The udCloudProject object provide an interface for accessing data of projects hosted in udCloud",[1674,5729,1677],{"id":1676},[1679,5731,1682,5733,5735,5736,5738],{"id":5732},"enum-uderror-udcloudproject_getfileliststruct-udcontext-pcontext-struct-udcloudproject-pcloudproject-struct-udcloudfile-ppcloudfiles-int-pcount",[1684,5734,1686],{"href":1686}," udCloudProject_GetFileList(struct udContext *pContext, struct udCloudProject *pCloudProject, struct ",[1684,5737,5548],{"href":5548}," **ppCloudFiles, int *pCount)",[1689,5740,5741],{},"Get a list of available Files owned by a specific Project in udCloud",[1711,5743,5744,5752],{},[1714,5745,5746],{},[1717,5747,5748,5750],{},[1720,5749,1722],{},[1720,5751,1725],{},[1727,5753,5754,5764,5774,5784],{},[1717,5755,5756,5761],{},[1732,5757,5758],{},[1735,5759,5760],{},"pContext",[1732,5762,5763],{},"The pointer to the udContext of the session to use",[1717,5765,5766,5771],{},[1732,5767,5768],{},[1735,5769,5770],{},"pCloudProject",[1732,5772,5773],{},"The pointer of the udCloudProject.",[1717,5775,5776,5781],{},[1732,5777,5778],{},[1735,5779,5780],{},"ppCloudFiles",[1732,5782,5783],{},"A list of Files returned.",[1717,5785,5786,5791],{},[1732,5787,5788],{},[1735,5789,5790],{},"pCount",[1732,5792,5793],{},"The number of Files in ppCloudFiles.",[1689,5795,5796,3676,5798,5800],{},[3673,5797,3675],{},[1684,5799,1686],{"href":1686}," value based on the result of the query on udCloud.",[1679,5802,1682,5804,5806,5807,5809],{"id":5803},"enum-uderror-udcloudproject_releasefileliststruct-udcloudfile-ppcloudfiles-int-count",[1684,5805,1686],{"href":1686}," udCloudProject_ReleaseFileList(struct ",[1684,5808,5548],{"href":5548}," **ppCloudFiles, int count)",[1689,5811,5812],{},"Destroys the list of Files that was created by udCloudProject_GetFileList",[1711,5814,5815,5823],{},[1714,5816,5817],{},[1717,5818,5819,5821],{},[1720,5820,1722],{},[1720,5822,1725],{},[1727,5824,5825,5834],{},[1717,5826,5827,5831],{},[1732,5828,5829],{},[1735,5830,5780],{},[1732,5832,5833],{},"The list of Files to be destroyed.",[1717,5835,5836,5840],{},[1732,5837,5838],{},[1735,5839,4345],{},[1732,5841,5793],{},[1689,5843,5844,3676,5846,5848],{},[3673,5845,3675],{},[1684,5847,1686],{"href":1686}," value based on the memory been freed.",[1679,5850,1682,5852,5854,5855,5858],{"id":5851},"enum-uderror-udcloudproject_getsceneliststruct-udcontext-pcontext-struct-udcloudproject-pcloudproject-struct-udcloudscene-ppcloudscenes-int-pcount",[1684,5853,1686],{"href":1686}," udCloudProject_GetSceneList(struct udContext *pContext, struct udCloudProject *pCloudProject, struct ",[1684,5856,5857],{"href":5857},"udCloudScene"," **ppCloudScenes, int *pCount)",[1689,5860,5861],{},"Get a list of available scenes owned by a specific Project in udCloud",[1711,5863,5864,5872],{},[1714,5865,5866],{},[1717,5867,5868,5870],{},[1720,5869,1722],{},[1720,5871,1725],{},[1727,5873,5874,5882,5890,5900],{},[1717,5875,5876,5880],{},[1732,5877,5878],{},[1735,5879,5760],{},[1732,5881,5763],{},[1717,5883,5884,5888],{},[1732,5885,5886],{},[1735,5887,5770],{},[1732,5889,5773],{},[1717,5891,5892,5897],{},[1732,5893,5894],{},[1735,5895,5896],{},"ppCloudScenes",[1732,5898,5899],{},"A list of Scenes returned.",[1717,5901,5902,5906],{},[1732,5903,5904],{},[1735,5905,5790],{},[1732,5907,5908],{},"The number of scenes in ppCloudScenes.",[1689,5910,5911,3676,5913,5800],{},[3673,5912,3675],{},[1684,5914,1686],{"href":1686},[1679,5916,1682,5918,5920,5921,5923],{"id":5917},"enum-uderror-udcloudproject_releasesceneliststruct-udcloudscene-ppcloudscenes-int-count",[1684,5919,1686],{"href":1686}," udCloudProject_ReleaseSceneList(struct ",[1684,5922,5857],{"href":5857}," **ppCloudScenes, int count)",[1689,5925,5926],{},"Destroys the list of Scenes that was created by udCloudProject_GetSceneList",[1711,5928,5929,5937],{},[1714,5930,5931],{},[1717,5932,5933,5935],{},[1720,5934,1722],{},[1720,5936,1725],{},[1727,5938,5939,5948],{},[1717,5940,5941,5945],{},[1732,5942,5943],{},[1735,5944,5896],{},[1732,5946,5947],{},"The list of Scenes to be destroyed.",[1717,5949,5950,5954],{},[1732,5951,5952],{},[1735,5953,4345],{},[1732,5955,5956],{},"The number of Scenes in ppCloudScenes.",[1689,5958,5959,3676,5961,5848],{},[3673,5960,3675],{},[1684,5962,1686],{"href":1686},[1674,5964,1796],{"id":1795},[1679,5966,5968],{"id":5967},"struct-udcloudproject","struct udCloudProject",[1689,5970,5971],{},"This represents a udCloud Project",[1711,5973,5974,5984],{},[1714,5975,5976],{},[1717,5977,5978,5980,5982],{},[1720,5979,1812],{},[1720,5981,1815],{},[1720,5983,1725],{},[1727,5985,5986,5999,6013,6026,6040],{},[1717,5987,5988,5992,5996],{},[1732,5989,5990],{},[1735,5991,5586],{},[1732,5993,5994],{},[1735,5995,4243],{},[1732,5997,5998],{},"The project id from udCloud.",[1717,6000,6001,6006,6010],{},[1732,6002,6003],{},[1735,6004,6005],{},"orgID[64]",[1732,6007,6008],{},[1735,6009,4243],{},[1732,6011,6012],{},"The workspace it belongs to from udCloud.",[1717,6014,6015,6019,6023],{},[1732,6016,6017],{},[1735,6018,3862],{},[1732,6020,6021],{},[1735,6022,5619],{},[1732,6024,6025],{},"The name of the project.",[1717,6027,6028,6033,6037],{},[1732,6029,6030],{},[1735,6031,6032],{},"created",[1732,6034,6035],{},[1735,6036,5100],{},[1732,6038,6039],{},"The time this project was created.",[1717,6041,6042,6047,6051],{},[1732,6043,6044],{},[1735,6045,6046],{},"optionalPermissions",[1732,6048,6049],{},[1735,6050,5675],{},[1732,6052,6053],{},"The permissions of this project.",{"title":2049,"searchDepth":2050,"depth":2050,"links":6055},[6056,6066],{"id":1676,"depth":2050,"text":1677,"children":6057},[6058,6060,6062,6064],{"id":5732,"depth":2055,"text":6059},"enum udError udCloudProject_GetFileList(struct udContext *pContext, struct udCloudProject *pCloudProject, struct udCloudFile **ppCloudFiles, int *pCount)",{"id":5803,"depth":2055,"text":6061},"enum udError udCloudProject_ReleaseFileList(struct udCloudFile **ppCloudFiles, int count)",{"id":5851,"depth":2055,"text":6063},"enum udError udCloudProject_GetSceneList(struct udContext *pContext, struct udCloudProject *pCloudProject, struct udCloudScene **ppCloudScenes, int *pCount)",{"id":5917,"depth":2055,"text":6065},"enum udError udCloudProject_ReleaseSceneList(struct udCloudScene **ppCloudScenes, int count)",{"id":1795,"depth":2050,"text":1796,"children":6067},[6068],{"id":5967,"depth":2055,"text":5968},{},"\u002Fguide\u002Fudsdk\u002Fudcloudproject",{"title":5719,"description":5727},"guide\u002Fudsdk\u002FudCloudProject","WxY5l6OEELla92kbylSF0hGqbUBP_iwR6fYATTSlsfM",{"id":6075,"title":5857,"body":6076,"date":7,"description":6083,"extension":2064,"meta":6217,"navigation":43,"path":6218,"seo":6219,"stem":6220,"__hash__":6221},"udsdkguide\u002Fguide\u002Fudsdk\u002FudCloudScene.md",{"type":1667,"value":6077,"toc":6212},[6078,6081,6084,6086,6090,6093],[1670,6079,5857],{"id":6080},"udcloudscene",[1689,6082,6083],{},"The udCloudScene object provide an interface for accessing data of Scenes hosted in udCloud",[1674,6085,1796],{"id":1795},[1679,6087,6089],{"id":6088},"struct-udcloudscene","struct udCloudScene",[1689,6091,6092],{},"This represents a udCloud Scene",[1711,6094,6095,6105],{},[1714,6096,6097],{},[1717,6098,6099,6101,6103],{},[1720,6100,1812],{},[1720,6102,1815],{},[1720,6104,1725],{},[1727,6106,6107,6120,6133,6145,6158,6171,6185,6199],{},[1717,6108,6109,6113,6117],{},[1732,6110,6111],{},[1735,6112,3862],{},[1732,6114,6115],{},[1735,6116,5619],{},[1732,6118,6119],{},"The name of the Scene.",[1717,6121,6122,6126,6130],{},[1732,6123,6124],{},[1735,6125,5586],{},[1732,6127,6128],{},[1735,6129,4243],{},[1732,6131,6132],{},"The sceneid from udCloud.",[1717,6134,6135,6139,6143],{},[1732,6136,6137],{},[1735,6138,6005],{},[1732,6140,6141],{},[1735,6142,4243],{},[1732,6144,6012],{},[1717,6146,6147,6151,6155],{},[1732,6148,6149],{},[1735,6150,5600],{},[1732,6152,6153],{},[1735,6154,4243],{},[1732,6156,6157],{},"The project it belongs to from udCloud.",[1717,6159,6160,6164,6168],{},[1732,6161,6162],{},[1735,6163,6032],{},[1732,6165,6166],{},[1735,6167,5100],{},[1732,6169,6170],{},"The time this scene was created.",[1717,6172,6173,6178,6182],{},[1732,6174,6175],{},[1735,6176,6177],{},"lastUpdated",[1732,6179,6180],{},[1735,6181,5100],{},[1732,6183,6184],{},"The time this scene was last updated.",[1717,6186,6187,6192,6196],{},[1732,6188,6189],{},[1735,6190,6191],{},"deletedTime",[1732,6193,6194],{},[1735,6195,5100],{},[1732,6197,6198],{},"The time this scene was deleted.",[1717,6200,6201,6205,6209],{},[1732,6202,6203],{},[1735,6204,5699],{},[1732,6206,6207],{},[1735,6208,1831],{},[1732,6210,6211],{},"Is the scene shared.",{"title":2049,"searchDepth":2050,"depth":2050,"links":6213},[6214],{"id":1795,"depth":2050,"text":1796,"children":6215},[6216],{"id":6088,"depth":2055,"text":6089},{},"\u002Fguide\u002Fudsdk\u002Fudcloudscene",{"title":5857,"description":6083},"guide\u002Fudsdk\u002FudCloudScene","Et0hWNnoJNPd7oeq9P-Lbav0THKY1tLm0Xm-kcLPsf8",{"id":6223,"title":6224,"body":6225,"date":7,"description":6232,"extension":2064,"meta":6545,"navigation":43,"path":6546,"seo":6547,"stem":6548,"__hash__":6549},"udsdkguide\u002Fguide\u002Fudsdk\u002FudCloudWorkspace.md","udCloudWorkspace",{"type":1667,"value":6226,"toc":6530},[6227,6230,6233,6235,6241,6244,6284,6290,6296,6299,6329,6335,6344,6347,6396,6402,6411,6414,6447,6453,6455,6459,6462],[1670,6228,6224],{"id":6229},"udcloudworkspace",[1689,6231,6232],{},"The udCloudWorkspace object provides an interface for accessing data of workspace hosted in udCloud",[1674,6234,1677],{"id":1676},[1679,6236,1682,6238,6240],{"id":6237},"enum-uderror-udcloudworkspace_getworkspaceliststruct-udcontext-pcontext-struct-udcloudworkspace-ppcloudworkspaces-int-pcount",[1684,6239,1686],{"href":1686}," udCloudWorkspace_GetWorkspaceList(struct udContext *pContext, struct udCloudWorkspace **ppCloudWorkspaces, int *pCount)",[1689,6242,6243],{},"Get a list of available Workspaces hosted in udCloud",[1711,6245,6246,6254],{},[1714,6247,6248],{},[1717,6249,6250,6252],{},[1720,6251,1722],{},[1720,6253,1725],{},[1727,6255,6256,6265,6275],{},[1717,6257,6258,6262],{},[1732,6259,6260],{},[1735,6261,5760],{},[1732,6263,6264],{},"The pointer to the udContext of the session to use.",[1717,6266,6267,6272],{},[1732,6268,6269],{},[1735,6270,6271],{},"ppCloudWorkspaces",[1732,6273,6274],{},"The pointer pointer of the udCloudWorkspace.",[1717,6276,6277,6281],{},[1732,6278,6279],{},[1735,6280,5790],{},[1732,6282,6283],{},"The number of Workspace in ppCloudWorkspaces.",[1689,6285,6286,3676,6288,5800],{},[3673,6287,3675],{},[1684,6289,1686],{"href":1686},[1679,6291,1682,6293,6295],{"id":6292},"enum-uderror-udcloudworkspace_releaseworkspaceliststruct-udcloudworkspace-ppcloudworkspaces-int-count",[1684,6294,1686],{"href":1686}," udCloudWorkspace_ReleaseWorkspaceList(struct udCloudWorkspace **ppCloudWorkspaces, int count)",[1689,6297,6298],{},"Destroys the list of Workspaces that was created by udCloudWorkspace_GetWorkspaceList",[1711,6300,6301,6309],{},[1714,6302,6303],{},[1717,6304,6305,6307],{},[1720,6306,1722],{},[1720,6308,1725],{},[1727,6310,6311,6320],{},[1717,6312,6313,6317],{},[1732,6314,6315],{},[1735,6316,6271],{},[1732,6318,6319],{},"The list of Workspaces to be destroyed.",[1717,6321,6322,6326],{},[1732,6323,6324],{},[1735,6325,4345],{},[1732,6327,6328],{},"The number of udCloudWorkspace in ppCloudWorkspaces.",[1689,6330,6331,3676,6333,5848],{},[3673,6332,3675],{},[1684,6334,1686],{"href":1686},[1679,6336,1682,6338,6340,6341,6343],{"id":6337},"enum-uderror-udcloudworkspace_getprojectliststruct-udcontext-pcontext-struct-udcloudworkspace-pcloudworkspace-struct-udcloudproject-ppcloudprojects-int-pcount",[1684,6339,1686],{"href":1686}," udCloudWorkspace_GetProjectList(struct udContext *pContext, struct udCloudWorkspace *pCloudWorkspace, struct ",[1684,6342,5719],{"href":5719}," **ppCloudProjects, int *pCount)",[1689,6345,6346],{},"Get a list of available Projects owned by a specific Workspace in udCloud",[1711,6348,6349,6357],{},[1714,6350,6351],{},[1717,6352,6353,6355],{},[1720,6354,1722],{},[1720,6356,1725],{},[1727,6358,6359,6367,6377,6387],{},[1717,6360,6361,6365],{},[1732,6362,6363],{},[1735,6364,5760],{},[1732,6366,6264],{},[1717,6368,6369,6374],{},[1732,6370,6371],{},[1735,6372,6373],{},"pCloudWorkspace",[1732,6375,6376],{},"The pointer of the udCloudWorkspace.",[1717,6378,6379,6384],{},[1732,6380,6381],{},[1735,6382,6383],{},"ppCloudProjects",[1732,6385,6386],{},"A list of Projects returned.",[1717,6388,6389,6393],{},[1732,6390,6391],{},[1735,6392,5790],{},[1732,6394,6395],{},"The number of projects in ppCloudProject.",[1689,6397,6398,3676,6400,5800],{},[3673,6399,3675],{},[1684,6401,1686],{"href":1686},[1679,6403,1682,6405,6407,6408,6410],{"id":6404},"enum-uderror-udcloudworkspace_releaseprojectliststruct-udcloudproject-ppcloudprojects-int-count",[1684,6406,1686],{"href":1686}," udCloudWorkspace_ReleaseProjectList(struct ",[1684,6409,5719],{"href":5719}," **ppCloudProjects, int count)",[1689,6412,6413],{},"Destroys the list of Projects that was created by udCloudWorkspace_GetProjectList",[1711,6415,6416,6424],{},[1714,6417,6418],{},[1717,6419,6420,6422],{},[1720,6421,1722],{},[1720,6423,1725],{},[1727,6425,6426,6435],{},[1717,6427,6428,6432],{},[1732,6429,6430],{},[1735,6431,6383],{},[1732,6433,6434],{},"The list of Projects to be destroyed.",[1717,6436,6437,6441],{},[1732,6438,6439],{},[1735,6440,4345],{},[1732,6442,6443,6444,6446],{},"The number of ",[1684,6445,5719],{"href":5719}," in ppCloudProjects.",[1689,6448,6449,3676,6451,5848],{},[3673,6450,3675],{},[1684,6452,1686],{"href":1686},[1674,6454,1796],{"id":1795},[1679,6456,6458],{"id":6457},"struct-udcloudworkspace","struct udCloudWorkspace",[1689,6460,6461],{},"This represents a udCloud Workspace",[1711,6463,6464,6474],{},[1714,6465,6466],{},[1717,6467,6468,6470,6472],{},[1720,6469,1812],{},[1720,6471,1815],{},[1720,6473,1725],{},[1727,6475,6476,6489,6502,6516],{},[1717,6477,6478,6482,6486],{},[1732,6479,6480],{},[1735,6481,5586],{},[1732,6483,6484],{},[1735,6485,4243],{},[1732,6487,6488],{},"The workspace id from udCloud.",[1717,6490,6491,6495,6499],{},[1732,6492,6493],{},[1735,6494,3862],{},[1732,6496,6497],{},[1735,6498,5619],{},[1732,6500,6501],{},"The name of the workspace.",[1717,6503,6504,6509,6513],{},[1732,6505,6506],{},[1735,6507,6508],{},"permissions",[1732,6510,6511],{},[1735,6512,5675],{},[1732,6514,6515],{},"The permissions of this workspace.",[1717,6517,6518,6523,6527],{},[1732,6519,6520],{},[1735,6521,6522],{},"isPendingDelete",[1732,6524,6525],{},[1735,6526,1831],{},[1732,6528,6529],{},"A flag to know if the workspace will be deleted shortly.",{"title":2049,"searchDepth":2050,"depth":2050,"links":6531},[6532,6542],{"id":1676,"depth":2050,"text":1677,"children":6533},[6534,6536,6538,6540],{"id":6237,"depth":2055,"text":6535},"enum udError udCloudWorkspace_GetWorkspaceList(struct udContext *pContext, struct udCloudWorkspace **ppCloudWorkspaces, int *pCount)",{"id":6292,"depth":2055,"text":6537},"enum udError udCloudWorkspace_ReleaseWorkspaceList(struct udCloudWorkspace **ppCloudWorkspaces, int count)",{"id":6337,"depth":2055,"text":6539},"enum udError udCloudWorkspace_GetProjectList(struct udContext *pContext, struct udCloudWorkspace *pCloudWorkspace, struct udCloudProject **ppCloudProjects, int *pCount)",{"id":6404,"depth":2055,"text":6541},"enum udError udCloudWorkspace_ReleaseProjectList(struct udCloudProject **ppCloudProjects, int count)",{"id":1795,"depth":2050,"text":1796,"children":6543},[6544],{"id":6457,"depth":2055,"text":6458},{},"\u002Fguide\u002Fudsdk\u002Fudcloudworkspace",{"title":6224,"description":6232},"guide\u002Fudsdk\u002FudCloudWorkspace","nM9dmaEKFQxe57Ylus0sYXu500pS91LYqJ7KDACwaWU",{"id":6551,"title":6552,"body":6553,"date":7,"description":6560,"extension":2064,"meta":6707,"navigation":43,"path":6708,"seo":6709,"stem":6710,"__hash__":6711},"udsdkguide\u002Fguide\u002Fudsdk\u002FudCompare.md","udCompare",{"type":1667,"value":6554,"toc":6698},[6555,6558,6561,6563,6569,6572,6579,6611,6618,6620,6624,6627],[1670,6556,6552],{"id":6557},"udcompare",[1689,6559,6560],{},"udCompare.h provides an interface to compare Unlimited Detail models.",[1674,6562,1677],{"id":1676},[1679,6564,1682,6566,6568],{"id":6565},"enum-uderror-udcompare_bpastruct-udconvertcontext-pconvertcontext-struct-udcomparebpaoptions-poptions",[1684,6567,1686],{"href":1686}," udCompare_BPA(struct udConvertContext *pConvertContext, struct udCompareBPAOptions *pOptions)",[1689,6570,6571],{},"Compares input models using the Ball-Pivot Algorithm (BPA). A meshing operation is first performed using BPA followed by a cloud to model (C2M) comparison",[1693,6573,6574],{},[1689,6575,6576,6578],{},[1698,6577,1700],{},"\nThis function does not start the conversion process, this allows the user to make additional changes to the convert job.",[1711,6580,6581,6589],{},[1714,6582,6583],{},[1717,6584,6585,6587],{},[1720,6586,1722],{},[1720,6588,1725],{},[1727,6590,6591,6601],{},[1717,6592,6593,6598],{},[1732,6594,6595],{},[1735,6596,6597],{},"pConvertContext",[1732,6599,6600],{},"The convert context to be used to compare the models.",[1717,6602,6603,6608],{},[1732,6604,6605],{},[1735,6606,6607],{},"pOptions",[1732,6609,6610],{},"The parameters passed to the BPA algorithm",[1689,6612,6613,3676,6615,6617],{},[3673,6614,3675],{},[1684,6616,1686],{"href":1686}," value based on the result of setting up BPA on the input models.",[1674,6619,1796],{"id":1795},[1679,6621,6623],{"id":6622},"struct-udcomparebpaoptions","struct udCompareBPAOptions",[1689,6625,6626],{},"Contains the options for the comparison algorithm",[1711,6628,6629,6639],{},[1714,6630,6631],{},[1717,6632,6633,6635,6637],{},[1720,6634,1812],{},[1720,6636,1815],{},[1720,6638,1725],{},[1727,6640,6641,6655,6669,6683],{},[1717,6642,6643,6648,6653],{},[1732,6644,6645],{},[1735,6646,6647],{},"pBaseModelPath",[1732,6649,6650],{},[1735,6651,6652],{},"const char \\*",[1732,6654],{},[1717,6656,6657,6662,6666],{},[1732,6658,6659],{},[1735,6660,6661],{},"pComparisonModelPath",[1732,6663,6664],{},[1735,6665,6652],{},[1732,6667,6668],{},"The path to the UDS model that pComparisonModel will be compared against.",[1717,6670,6671,6676,6680],{},[1732,6672,6673],{},[1735,6674,6675],{},"pOutputName",[1732,6677,6678],{},[1735,6679,6652],{},[1732,6681,6682],{},"The path to the UDS model for comparison.",[1717,6684,6685,6690,6695],{},[1732,6686,6687],{},[1735,6688,6689],{},"meshingOptions",[1732,6691,6692],{},[1735,6693,6694],{},"struct [udMeshingBPAOptions](udMeshing.md)",[1732,6696,6697],{},"The path that the displacement result UDS will be written to.",{"title":2049,"searchDepth":2050,"depth":2050,"links":6699},[6700,6704],{"id":1676,"depth":2050,"text":1677,"children":6701},[6702],{"id":6565,"depth":2055,"text":6703},"enum udError udCompare_BPA(struct udConvertContext *pConvertContext, struct udCompareBPAOptions *pOptions)",{"id":1795,"depth":2050,"text":1796,"children":6705},[6706],{"id":6622,"depth":2055,"text":6623},{},"\u002Fguide\u002Fudsdk\u002Fudcompare",{"title":6552,"description":6560},"guide\u002Fudsdk\u002FudCompare","60BujoQghZhN4j_bHuZDvd9DScQYck_aFtuy1RkVg10",{"id":6713,"title":6714,"body":6715,"date":7,"description":7016,"extension":2064,"meta":7017,"navigation":43,"path":7018,"seo":7019,"stem":7020,"__hash__":7021},"udsdkguide\u002Fguide\u002Fudsdk\u002FudConfig.md","udConfig",{"type":1667,"value":6716,"toc":7002},[6717,6720,6725,6727,6733,6736,6743,6784,6791,6797,6804,6814,6846,6853,6859,6862,6869,6876,6901,6908,6914,6917,6939,6946,6952,6955,6962,6973,6995],[1670,6718,6714],{"id":6719},"udconfig",[1689,6721,4541,6722,6724],{},[3673,6723,6714],{}," functions all set global configuration options for the entire loaded shared library.",[1674,6726,1677],{"id":1676},[1679,6728,1682,6730,6732],{"id":6729},"enum-uderror-udconfig_forceproxyconst-char-pproxyaddress",[1684,6731,1686],{"href":1686}," udConfig_ForceProxy(const char *pProxyAddress)",[1689,6734,6735],{},"This function can be used to override the internal proxy auto-detection used by cURL.",[1693,6737,6738],{},[1689,6739,6740,6742],{},[1698,6741,1700],{},"\nBy default the proxy is attempted to be auto-detected. This fails in many proxy configurations.",[1711,6744,6745,6753],{},[1714,6746,6747],{},[1717,6748,6749,6751],{},[1720,6750,1722],{},[1720,6752,1725],{},[1727,6754,6755],{},[1717,6756,6757,6762],{},[1732,6758,6759],{},[1735,6760,6761],{},"pProxyAddress",[1732,6763,6764,6765,6768,6769,6768,6772,6775,6776,6779,6780,6783],{},"This is a null terminated string, can include port number and protocol. ",[1735,6766,6767],{},"192.168.0.1",", ",[1735,6770,6771],{},"169.123.123.1:80",[1735,6773,6774],{},"or",". Setting this to either ",[1735,6777,6778],{},"NULL"," or (empty string) ",[1735,6781,6782],{},"\"\""," will reset to attempting auto-detection.",[1689,6785,6786,3676,6788,6790],{},[3673,6787,3675],{},[1684,6789,1686],{"href":1686}," value based on the result of forcing the proxy.",[1679,6792,1682,6794,6796],{"id":6793},"enum-uderror-udconfig_setproxyauthconst-char-pproxyusername-const-char-pproxypassword",[1684,6795,1686],{"href":1686}," udConfig_SetProxyAuth(const char *pProxyUsername, const char *pProxyPassword)",[1689,6798,6799,6800,6803],{},"This function is used in conjunction with ",[1735,6801,6802],{},"udConfig_ForceProxy"," or the auto-detect proxy system to forward info from the user for their proxy details.",[1693,6805,6806],{},[1689,6807,6808,6810,6811,2503],{},[1698,6809,1700],{},"\nThis is usually called after another udSDK function returns ",[1735,6812,6813],{},"[udE_ProxyAuthRequired](udError.md)",[1711,6815,6816,6824],{},[1714,6817,6818],{},[1717,6819,6820,6822],{},[1720,6821,1722],{},[1720,6823,1725],{},[1727,6825,6826,6836],{},[1717,6827,6828,6833],{},[1732,6829,6830],{},[1735,6831,6832],{},"pProxyUsername",[1732,6834,6835],{},"This is a null terminated string of the username of the user for the proxy.",[1717,6837,6838,6843],{},[1732,6839,6840],{},[1735,6841,6842],{},"pProxyPassword",[1732,6844,6845],{},"This is a null terminated string of the password of the user for the proxy.",[1689,6847,6848,3676,6850,6852],{},[3673,6849,3675],{},[1684,6851,1686],{"href":1686}," value based on the result of setting the proxy authentication.",[1679,6854,1682,6856,6858],{"id":6855},"enum-uderror-udconfig_ignorecertificateverificationuint32_t-ignore",[1684,6857,1686],{"href":1686}," udConfig_IgnoreCertificateVerification(uint32_t ignore)",[1689,6860,6861],{},"Allows udSDK to connect to server with an unrecognized certificate authority, sometimes required for self-signed certificates or poorly configured proxies.",[1693,6863,6864],{},[1689,6865,6866,6868],{},[1698,6867,1700],{},"\nBy default certificate verification is run (not ignored).",[1693,6870,6871],{},[1689,6872,6873,6875],{},[1698,6874,1708],{},"\nIgnoring certificate verification is very high risk. Do not enable this option by default and display clearly to the user that this setting will reduce the security of the entire system and they should only enable the setting if their system administrator has instructed them to do so.",[1711,6877,6878,6886],{},[1714,6879,6880],{},[1717,6881,6882,6884],{},[1720,6883,1722],{},[1720,6885,1725],{},[1727,6887,6888],{},[1717,6889,6890,6895],{},[1732,6891,6892],{},[1735,6893,6894],{},"ignore",[1732,6896,6897,6900],{},[1735,6898,6899],{},"0"," if verification is to be processed, all other values if certificate verification should be skipped.",[1689,6902,6903,3676,6905,6907],{},[3673,6904,3675],{},[1684,6906,1686],{"href":1686}," value based on the result of ignoring the certificate verification.",[1679,6909,1682,6911,6913],{"id":6910},"enum-uderror-udconfig_setuseragentconst-char-puseragent",[1684,6912,1686],{"href":1686}," udConfig_SetUserAgent(const char *pUserAgent)",[1689,6915,6916],{},"This function can be used to override the user agent used by cURL.",[1711,6918,6919,6927],{},[1714,6920,6921],{},[1717,6922,6923,6925],{},[1720,6924,1722],{},[1720,6926,1725],{},[1727,6928,6929],{},[1717,6930,6931,6936],{},[1732,6932,6933],{},[1735,6934,6935],{},"pUserAgent",[1732,6937,6938],{},"This is a null terminated string of the user agent.",[1689,6940,6941,3676,6943,6945],{},[3673,6942,3675],{},[1684,6944,1686],{"href":1686}," value based on the result of setting the user agent.",[1679,6947,1682,6949,6951],{"id":6948},"enum-uderror-udconfig_setconfiglocationconst-char-plocation",[1684,6950,1686],{"href":1686}," udConfig_SetConfigLocation(const char *pLocation)",[1689,6953,6954],{},"This function can be used to override the location that udSDK will save it’s configuration files.",[1693,6956,6957],{},[1689,6958,6959,6961],{},[1698,6960,1700],{},"\nBy default, udSDK will attempt to use some known platform locations, in some cases failing to save entirely.",[1693,6963,6964],{},[1689,6965,6966,6968,6969,6972],{},[1698,6967,1700],{},"\nThis location will have ",[1735,6970,6971],{},"\u002Fnuclideon\u002Fudsdk"," appending to the end.",[1711,6974,6975,6983],{},[1714,6976,6977],{},[1717,6978,6979,6981],{},[1720,6980,1722],{},[1720,6982,1725],{},[1727,6984,6985],{},[1717,6986,6987,6992],{},[1732,6988,6989],{},[1735,6990,6991],{},"pLocation",[1732,6993,6994],{},"This is a null terminated string specifying a directory to save configurations files.",[1689,6996,6997,3676,6999,7001],{},[3673,6998,3675],{},[1684,7000,1686],{"href":1686}," value based on the result of setting the configuration location.",{"title":2049,"searchDepth":2050,"depth":2050,"links":7003},[7004],{"id":1676,"depth":2050,"text":1677,"children":7005},[7006,7008,7010,7012,7014],{"id":6729,"depth":2055,"text":7007},"enum udError udConfig_ForceProxy(const char *pProxyAddress)",{"id":6793,"depth":2055,"text":7009},"enum udError udConfig_SetProxyAuth(const char *pProxyUsername, const char *pProxyPassword)",{"id":6855,"depth":2055,"text":7011},"enum udError udConfig_IgnoreCertificateVerification(uint32_t ignore)",{"id":6910,"depth":2055,"text":7013},"enum udError udConfig_SetUserAgent(const char *pUserAgent)",{"id":6948,"depth":2055,"text":7015},"enum udError udConfig_SetConfigLocation(const char *pLocation)","The udConfig functions all set global configuration options for the entire loaded shared library.",{},"\u002Fguide\u002Fudsdk\u002Fudconfig",{"title":6714,"description":7016},"guide\u002Fudsdk\u002FudConfig","qiWVSPx_fhPEN0syXZCZjzyE7DkEnINxTF41AN5vAZQ",{"id":7023,"title":7024,"body":7025,"date":7,"description":7730,"extension":2064,"meta":7731,"navigation":43,"path":7732,"seo":7733,"stem":7734,"__hash__":7735},"udsdkguide\u002Fguide\u002Fudsdk\u002FudContext.md","udContext",{"type":1667,"value":7026,"toc":7707},[7027,7030,7038,7040,7046,7049,7056,7128,7135,7141,7144,7159,7166,7196,7202,7208,7211,7232,7239,7245,7248,7257,7264,7319,7325,7331,7334,7344,7351,7389,7395,7401,7404,7411,7419,7426,7483,7489,7495,7498,7510,7517,7548,7555,7561,7564,7595,7602,7604,7608,7611],[1670,7028,7024],{"id":7029},"udcontext",[1689,7031,4541,7032,7034,7035,7037],{},[3673,7033,7024],{}," object provides an interface to connect and communicate with a Nuclideon udServer. Once instantiated, the ",[3673,7036,7024],{}," can be passed into many udSDK functions to provide a context to operate within.",[1674,7039,1677],{"id":1676},[1679,7041,1682,7043,7045],{"id":7042},"enum-uderror-udcontext_connectstartstruct-udcontextpartial-pppartialcontext-const-char-pserverurl-const-char-papplicationname-const-char-papplicationversion-const-char-ppapprovepath-const-char-ppapprovecode",[1684,7044,1686],{"href":1686}," udContext_ConnectStart(struct udContextPartial **ppPartialContext, const char *pServerURL, const char *pApplicationName, const char *pApplicationVersion, const char **ppApprovePath, const char **ppApproveCode)",[1689,7047,7048],{},"Establishes a connection to a Nuclideon udCloud and creates a new udContext object.",[1693,7050,7051],{},[1689,7052,7053,7055],{},[1698,7054,1700],{},"\nThe application should call udContext_ConnectComplete or udContext_ConnectCancel with ppPartialContext to destroy the object",[1711,7057,7058,7066],{},[1714,7059,7060],{},[1717,7061,7062,7064],{},[1720,7063,1722],{},[1720,7065,1725],{},[1727,7067,7068,7078,7088,7098,7108,7118],{},[1717,7069,7070,7075],{},[1732,7071,7072],{},[1735,7073,7074],{},"ppPartialContext",[1732,7076,7077],{},"A pointer to a location in which the new udContextPartial object is stored.",[1717,7079,7080,7085],{},[1732,7081,7082],{},[1735,7083,7084],{},"pServerURL",[1732,7086,7087],{},"A Server URL to the Nuclideon udCloud instance.",[1717,7089,7090,7095],{},[1732,7091,7092],{},[1735,7093,7094],{},"pApplicationName",[1732,7096,7097],{},"The name of the application using udSDK.",[1717,7099,7100,7105],{},[1732,7101,7102],{},[1735,7103,7104],{},"pApplicationVersion",[1732,7106,7107],{},"The version of the application using udSDK.",[1717,7109,7110,7115],{},[1732,7111,7112],{},[1735,7113,7114],{},"ppApprovePath",[1732,7116,7117],{},"The address that needs to be opened in a browser window (if this is nullptr proceed to udContext_ConnectComplete)",[1717,7119,7120,7125],{},[1732,7121,7122],{},[1735,7123,7124],{},"ppApproveCode",[1732,7126,7127],{},"A code that the user can use to verify their session in the udCloud API on another device (can be NULL)",[1689,7129,7130,3676,7132,7134],{},[3673,7131,3675],{},[1684,7133,1686],{"href":1686}," value based on the result of the connection creation.",[1679,7136,1682,7138,7140],{"id":7137},"enum-uderror-udcontext_connectcompletestruct-udcontext-ppcontext-struct-udcontextpartial-pppartialcontext",[1684,7139,1686],{"href":1686}," udContext_ConnectComplete(struct udContext **ppContext, struct udContextPartial **ppPartialContext)",[1689,7142,7143],{},"Establishes a connection to a Nuclideon udCloud server and creates a new udContext object.",[1693,7145,7146],{},[1689,7147,7148,7150,7151,7154,7155,7158],{},[1698,7149,1700],{},"\nThe application should call ",[3673,7152,7153],{},"udContext_Disconnect"," with ",[1735,7156,7157],{},"ppContext"," to destroy the object once it’s no longer needed.",[1693,7160,7161],{},[1689,7162,7163,7165],{},[1698,7164,1708],{},"\nppApprovePath from udContext_ConnectStart will be invalid after this call",[1711,7167,7168,7176],{},[1714,7169,7170],{},[1717,7171,7172,7174],{},[1720,7173,1722],{},[1720,7175,1725],{},[1727,7177,7178,7187],{},[1717,7179,7180,7184],{},[1732,7181,7182],{},[1735,7183,7157],{},[1732,7185,7186],{},"A pointer to a location in which the new udContext object is stored.",[1717,7188,7189,7193],{},[1732,7190,7191],{},[1735,7192,7074],{},[1732,7194,7195],{},"A pointer to the udContextPartial created from udContext_ConnectStart (will be freed on a successful login).",[1689,7197,7198,3676,7200,7134],{},[3673,7199,3675],{},[1684,7201,1686],{"href":1686},[1679,7203,1682,7205,7207],{"id":7204},"enum-uderror-udcontext_connectcancelstruct-udcontextpartial-pppartialcontext",[1684,7206,1686],{"href":1686}," udContext_ConnectCancel(struct udContextPartial **ppPartialContext)",[1689,7209,7210],{},"Cancels a login attempt to a Nuclideon udCloud server;",[1711,7212,7213,7221],{},[1714,7214,7215],{},[1717,7216,7217,7219],{},[1720,7218,1722],{},[1720,7220,1725],{},[1727,7222,7223],{},[1717,7224,7225,7229],{},[1732,7226,7227],{},[1735,7228,7074],{},[1732,7230,7231],{},"A pointer to the udContextPartial created from udContext_ConnectStart (will be freed).",[1689,7233,7234,3676,7236,7238],{},[3673,7235,3675],{},[1684,7237,1686],{"href":1686}," value based on the result of the connection cleanup.",[1679,7240,1682,7242,7244],{"id":7241},"enum-uderror-udcontext_connectwithkeystruct-udcontext-ppcontext-const-char-pserverurl-const-char-papplicationname-const-char-papplicationversion-const-char-pkey",[1684,7243,1686],{"href":1686}," udContext_ConnectWithKey(struct udContext **ppContext, const char *pServerURL, const char *pApplicationName, const char *pApplicationVersion, const char *pKey)",[1689,7246,7247],{},"Establishes a connection to Nuclideon udCloud server and creates a new udContext object.",[1693,7249,7250],{},[1689,7251,7252,7254,7255,7158],{},[1698,7253,1700],{},"\nThe application should call udContext_Disconnect with ",[1735,7256,7157],{},[1693,7258,7259],{},[1689,7260,7261,7263],{},[1698,7262,1708],{},"\nWhen used from the Emscripten\u002FWebAssembly builds it will try start a domain session when pKey is NULL",[1711,7265,7266,7274],{},[1714,7267,7268],{},[1717,7269,7270,7272],{},[1720,7271,1722],{},[1720,7273,1725],{},[1727,7275,7276,7284,7293,7301,7309],{},[1717,7277,7278,7282],{},[1732,7279,7280],{},[1735,7281,7157],{},[1732,7283,7186],{},[1717,7285,7286,7290],{},[1732,7287,7288],{},[1735,7289,7084],{},[1732,7291,7292],{},"A URL to a Nuclideon udCloud server to connect to.",[1717,7294,7295,7299],{},[1732,7296,7297],{},[1735,7298,7094],{},[1732,7300,7097],{},[1717,7302,7303,7307],{},[1732,7304,7305],{},[1735,7306,7104],{},[1732,7308,7107],{},[1717,7310,7311,7316],{},[1732,7312,7313],{},[1735,7314,7315],{},"pKey",[1732,7317,7318],{},"The provided key that will start the context",[1689,7320,7321,3676,7323,7134],{},[3673,7322,3675],{},[1684,7324,1686],{"href":1686},[1679,7326,1682,7328,7330],{"id":7327},"enum-uderror-udcontext_connectfromdomainstruct-udcontext-ppcontext-const-char-pserverurl-const-char-papplicationname",[1684,7329,1686],{"href":1686}," udContext_ConnectFromDomain(struct udContext **ppContext, const char *pServerURL, const char *pApplicationName)",[1689,7332,7333],{},"Establishes a (legacy) connection to a Nuclideon udServer and creates a new udContext object.",[1693,7335,7336],{},[1689,7337,7338,7150,7340,7154,7342,7158],{},[1698,7339,1700],{},[3673,7341,7153],{},[1735,7343,7157],{},[1693,7345,7346],{},[1689,7347,7348,7350],{},[1698,7349,1708],{},"\nThis connect function is specific to the Emscripten\u002FWebAssembly builds and will return udE_Unsupported on all other platforms",[1711,7352,7353,7361],{},[1714,7354,7355],{},[1717,7356,7357,7359],{},[1720,7358,1722],{},[1720,7360,1725],{},[1727,7362,7363,7371,7380],{},[1717,7364,7365,7369],{},[1732,7366,7367],{},[1735,7368,7157],{},[1732,7370,7186],{},[1717,7372,7373,7377],{},[1732,7374,7375],{},[1735,7376,7084],{},[1732,7378,7379],{},"A URL to a Nuclideon udServer to connect to.",[1717,7381,7382,7386],{},[1732,7383,7384],{},[1735,7385,7094],{},[1732,7387,7388],{},"The name of the application connecting to the Nuclideon udServer.",[1689,7390,7391,3676,7393,7134],{},[3673,7392,3675],{},[1684,7394,1686],{"href":1686},[1679,7396,1682,7398,7400],{"id":7397},"enum-uderror-udcontext_tryresumestruct-udcontext-ppcontext-const-char-purl-const-char-papplicationname-const-char-pusername-uint32_t-trydongle",[1684,7399,1686],{"href":1686}," udContext_TryResume(struct udContext **ppContext, const char *pURL, const char *pApplicationName, const char *pUsername, uint32_t tryDongle)",[1689,7402,7403],{},"Attempts to reestablish a connection to Nuclideon udCloud, Nuclideon udServer (or run offline with an offline context) and creates a new udContext object.",[1693,7405,7406],{},[1689,7407,7408,7410],{},[1698,7409,1700],{},"\nThis function will try use a session from a dongle first if that is supported; passing null to pURL, pApplicationName and pUsername will test the dongle but will otherwise be invalid",[1693,7412,7413],{},[1689,7414,7415,7254,7417,7158],{},[1698,7416,1708],{},[1735,7418,7157],{},[1693,7420,7421],{},[1689,7422,7423,7425],{},[1698,7424,1708],{},"\nThis function can crash with some debuggers attached when trying to read from a dongle. If debugging, ensure that tryDongle is set to 0.",[1711,7427,7428,7436],{},[1714,7429,7430],{},[1717,7431,7432,7434],{},[1720,7433,1722],{},[1720,7435,1725],{},[1727,7437,7438,7446,7455,7463,7473],{},[1717,7439,7440,7444],{},[1732,7441,7442],{},[1735,7443,7157],{},[1732,7445,7186],{},[1717,7447,7448,7453],{},[1732,7449,7450],{},[1735,7451,7452],{},"pURL",[1732,7454,7379],{},[1717,7456,7457,7461],{},[1732,7458,7459],{},[1735,7460,7094],{},[1732,7462,7388],{},[1717,7464,7465,7470],{},[1732,7466,7467],{},[1735,7468,7469],{},"pUsername",[1732,7471,7472],{},"The username of the user connecting to the Nuclideon udServer.",[1717,7474,7475,7480],{},[1732,7476,7477],{},[1735,7478,7479],{},"tryDongle",[1732,7481,7482],{},"If 0, the dongle will not be checked (on platforms that support dongles).",[1689,7484,7485,3676,7487,7134],{},[3673,7486,3675],{},[1684,7488,1686],{"href":1686},[1679,7490,1682,7492,7494],{"id":7491},"enum-uderror-udcontext_disconnectstruct-udcontext-ppcontext-uint32_t-endsession",[1684,7493,1686],{"href":1686}," udContext_Disconnect(struct udContext **ppContext, uint32_t endSession)",[1689,7496,7497],{},"Disconnects and destroys a udContext object that was created using one of the context creation functions.",[1693,7499,7500],{},[1689,7501,7502,7504,7505,7507,7508,2503],{},[1698,7503,1700],{},"\nThe value of ",[1735,7506,7157],{}," will be set to ",[1735,7509,6778],{},[1693,7511,7512],{},[1689,7513,7514,7516],{},[1698,7515,1708],{},"\nIf other resources are still referencing this context this will return udE_NotAllowed until those resources are destroyed first",[1711,7518,7519,7527],{},[1714,7520,7521],{},[1717,7522,7523,7525],{},[1720,7524,1722],{},[1720,7526,1725],{},[1727,7528,7529,7538],{},[1717,7530,7531,7535],{},[1732,7532,7533],{},[1735,7534,7157],{},[1732,7536,7537],{},"A pointer to a udContext object which is to be disconnected and destroyed.",[1717,7539,7540,7545],{},[1732,7541,7542],{},[1735,7543,7544],{},"endSession",[1732,7546,7547],{},"Not 0 if the session will be ended (cannot be resumed)",[1689,7549,7550,3676,7552,7554],{},[3673,7551,3675],{},[1684,7553,1686],{"href":1686}," value based on the result of the connection destruction.",[1679,7556,1682,7558,7560],{"id":7557},"enum-uderror-udcontext_getsessioninfostruct-udcontext-pcontext-struct-udsessioninfo-pinfo",[1684,7559,1686],{"href":1686}," udContext_GetSessionInfo(struct udContext *pContext, struct udSessionInfo *pInfo)",[1689,7562,7563],{},"Get the session information from an active udContext.",[1711,7565,7566,7574],{},[1714,7567,7568],{},[1717,7569,7570,7572],{},[1720,7571,1722],{},[1720,7573,1725],{},[1727,7575,7576,7585],{},[1717,7577,7578,7582],{},[1732,7579,7580],{},[1735,7581,5760],{},[1732,7583,7584],{},"The udContext to get the session info for.",[1717,7586,7587,7592],{},[1732,7588,7589],{},[1735,7590,7591],{},"pInfo",[1732,7593,7594],{},"The preallocated structure to copy the info into.",[1689,7596,7597,3676,7599,7601],{},[3673,7598,3675],{},[1684,7600,1686],{"href":1686}," value based on the result of copying the structure",[1674,7603,1796],{"id":1795},[1679,7605,7607],{"id":7606},"struct-udsessioninfo","struct udSessionInfo",[1689,7609,7610],{},"This structure stores information about the current session",[1711,7612,7613,7623],{},[1714,7614,7615],{},[1717,7616,7617,7619,7621],{},[1720,7618,1812],{},[1720,7620,1815],{},[1720,7622,1725],{},[1727,7624,7625,7638,7652,7665,7679,7693],{},[1717,7626,7627,7631,7635],{},[1732,7628,7629],{},[1735,7630,2311],{},[1732,7632,7633],{},[1735,7634,1831],{},[1732,7636,7637],{},"The version of the API of the remote system (0 is offine, 1 is legacy udServer, 2 is udCloud).",[1717,7639,7640,7645,7649],{},[1732,7641,7642],{},[1735,7643,7644],{},"isDomain",[1732,7646,7647],{},[1735,7648,1831],{},[1732,7650,7651],{},"If this is not 0 then this is a domain session (0 is non-domain session).",[1717,7653,7654,7658,7662],{},[1732,7655,7656],{},[1735,7657,2379],{},[1732,7659,7660],{},[1735,7661,1831],{},[1732,7663,7664],{},"If this session will have access to premium features.",[1717,7666,7667,7672,7676],{},[1732,7668,7669],{},[1735,7670,7671],{},"expiresTimestamp",[1732,7673,7674],{},[1735,7675,5100],{},[1732,7677,7678],{},"The timestamp in UTC when the session will automatically end.",[1717,7680,7681,7686,7690],{},[1732,7682,7683],{},[1735,7684,7685],{},"displayName[1024]",[1732,7687,7688],{},[1735,7689,4243],{},[1732,7691,7692],{},"The null terminated display name of the user.",[1717,7694,7695,7700,7704],{},[1732,7696,7697],{},[1735,7698,7699],{},"otherLicenses[1024]",[1732,7701,7702],{},[1735,7703,4243],{},[1732,7705,7706],{},"Comma seperated list of other licenses available for this user; common ones include “xr”, “defence”, “transport”, & “resources”.",{"title":2049,"searchDepth":2050,"depth":2050,"links":7708},[7709,7727],{"id":1676,"depth":2050,"text":1677,"children":7710},[7711,7713,7715,7717,7719,7721,7723,7725],{"id":7042,"depth":2055,"text":7712},"enum udError udContext_ConnectStart(struct udContextPartial **ppPartialContext, const char *pServerURL, const char *pApplicationName, const char *pApplicationVersion, const char **ppApprovePath, const char **ppApproveCode)",{"id":7137,"depth":2055,"text":7714},"enum udError udContext_ConnectComplete(struct udContext **ppContext, struct udContextPartial **ppPartialContext)",{"id":7204,"depth":2055,"text":7716},"enum udError udContext_ConnectCancel(struct udContextPartial **ppPartialContext)",{"id":7241,"depth":2055,"text":7718},"enum udError udContext_ConnectWithKey(struct udContext **ppContext, const char *pServerURL, const char *pApplicationName, const char *pApplicationVersion, const char *pKey)",{"id":7327,"depth":2055,"text":7720},"enum udError udContext_ConnectFromDomain(struct udContext **ppContext, const char *pServerURL, const char *pApplicationName)",{"id":7397,"depth":2055,"text":7722},"enum udError udContext_TryResume(struct udContext **ppContext, const char *pURL, const char *pApplicationName, const char *pUsername, uint32_t tryDongle)",{"id":7491,"depth":2055,"text":7724},"enum udError udContext_Disconnect(struct udContext **ppContext, uint32_t endSession)",{"id":7557,"depth":2055,"text":7726},"enum udError udContext_GetSessionInfo(struct udContext *pContext, struct udSessionInfo *pInfo)",{"id":1795,"depth":2050,"text":1796,"children":7728},[7729],{"id":7606,"depth":2055,"text":7607},"The udContext object provides an interface to connect and communicate with a Nuclideon udServer. Once instantiated, the udContext can be passed into many udSDK functions to provide a context to operate within.",{},"\u002Fguide\u002Fudsdk\u002Fudcontext",{"title":7024,"description":7730},"guide\u002Fudsdk\u002FudContext","GZ4mVq_7kpjhl-WkvIUbv08AmH7x5cgbRzFC5YWojcE",{"id":7737,"title":7738,"body":7739,"date":7,"description":10327,"extension":2064,"meta":10328,"navigation":43,"path":10329,"seo":10330,"stem":10331,"__hash__":10332},"udsdkguide\u002Fguide\u002Fudsdk\u002FudConvert.md","udConvert",{"type":1667,"value":7740,"toc":10247},[7741,7744,7753,7755,7761,7764,7776,7811,7818,7824,7829,7839,7862,7869,7875,7878,7885,7892,7923,7930,7936,7939,7946,7977,7984,7990,7993,8024,8031,8037,8040,8080,8087,8093,8096,8127,8133,8136,8166,8172,8175,8182,8222,8228,8231,8238,8278,8284,8287,8327,8334,8340,8343,8350,8381,8387,8393,8396,8403,8434,8441,8447,8450,8457,8464,8495,8502,8508,8511,8518,8549,8556,8562,8572,8579,8590,8608,8642,8649,8655,8658,8689,8696,8702,8705,8735,8742,8748,8751,8781,8787,8793,8796,8826,8833,8839,8842,8849,8875,8919,8926,8932,8935,8965,8972,8978,8981,9011,9018,9024,9027,9066,9073,9079,9082,9113,9120,9126,9129,9168,9175,9181,9184,9205,9212,9218,9221,9242,9249,9255,9258,9279,9286,9292,9295,9307,9342,9349,9360,9363,9405,9412,9418,9421,9474,9481,9491,9494,9524,9531,9538,9544,9547,9576,9583,9589,9592,9631,9638,9644,9647,9685,9692,9694,9698,9701,10158,10162,10165],[1670,7742,7738],{"id":7743},"udconvert",[1689,7745,4541,7746,7749,7750,7752],{},[3673,7747,7748],{},"udConvertContext"," object provides an interface to create a Nuclideon Unlimited Detail model from a number of supported pointcloud formats. Once instantiated, the ",[3673,7751,7748],{}," object can be populated with input files and various conversion settings, before initiating the conversion process.",[1674,7754,1677],{"id":1676},[1679,7756,1682,7758,7760],{"id":7757},"enum-uderror-udconvert_createcontextstruct-udcontext-pcontext-struct-udconvertcontext-ppconvertcontext",[1684,7759,1686],{"href":1686}," udConvert_CreateContext(struct udContext *pContext, struct udConvertContext **ppConvertContext)",[1689,7762,7763],{},"Create a udConvertContext to convert models to the Nuclideon file format.",[1693,7765,7766],{},[1689,7767,7768,7150,7770,7154,7773,7158],{},[1698,7769,1700],{},[3673,7771,7772],{},"udConvert_DestroyContext",[1735,7774,7775],{},"ppConvertContext",[1711,7777,7778,7786],{},[1714,7779,7780],{},[1717,7781,7782,7784],{},[1720,7783,1722],{},[1720,7785,1725],{},[1727,7787,7788,7797],{},[1717,7789,7790,7794],{},[1732,7791,7792],{},[1735,7793,5760],{},[1732,7795,7796],{},"The context to be used to create the convert context.",[1717,7798,7799,7803],{},[1732,7800,7801],{},[1735,7802,7775],{},[1732,7804,7805,7806,7808,7809,2503],{},"The pointer pointer of the udConvertContext. This will allocate an instance of ",[1735,7807,7748],{}," into ",[1735,7810,7775],{},[1689,7812,7813,3676,7815,7817],{},[3673,7814,3675],{},[1684,7816,1686],{"href":1686}," value based on the result of the convert context creation.",[1679,7819,1682,7821,7823],{"id":7820},"enum-uderror-udconvert_destroycontextstruct-udconvertcontext-ppconvertcontext",[1684,7822,1686],{"href":1686}," udConvert_DestroyContext(struct udConvertContext **ppConvertContext)",[1689,7825,7826,7827,2503],{},"Destroys the instance of ",[1735,7828,7775],{},[1693,7830,7831],{},[1689,7832,7833,7504,7835,7507,7837,2503],{},[1698,7834,1700],{},[1735,7836,7775],{},[1735,7838,6778],{},[1711,7840,7841,7849],{},[1714,7842,7843],{},[1717,7844,7845,7847],{},[1720,7846,1722],{},[1720,7848,1725],{},[1727,7850,7851],{},[1717,7852,7853,7857],{},[1732,7854,7855],{},[1735,7856,7775],{},[1732,7858,7859,7860,2503],{},"The pointer pointer of the udConvertContext. This will deallocate the instance of ",[1735,7861,7748],{},[1689,7863,7864,3676,7866,7868],{},[3673,7865,3675],{},[1684,7867,1686],{"href":1686}," value based on the result of the convert context destruction.",[1679,7870,1682,7872,7874],{"id":7871},"enum-uderror-udconvert_setoutputfilenamestruct-udconvertcontext-pconvertcontext-const-char-pfilename",[1684,7873,1686],{"href":1686}," udConvert_SetOutputFilename(struct udConvertContext *pConvertContext, const char *pFilename)",[1689,7876,7877],{},"Sets the filename of the output UDS.",[1693,7879,7880],{},[1689,7881,7882,7884],{},[1698,7883,1700],{},"\nIf the extension is .UDG the converter will generate a UDG file",[1693,7886,7887],{},[1689,7888,7889,7891],{},[1698,7890,1708],{},"\nIf the .UDS extension isn’t set, this function will add the extension.",[1711,7893,7894,7902],{},[1714,7895,7896],{},[1717,7897,7898,7900],{},[1720,7899,1722],{},[1720,7901,1725],{},[1727,7903,7904,7913],{},[1717,7905,7906,7910],{},[1732,7907,7908],{},[1735,7909,6597],{},[1732,7911,7912],{},"The convert context to use to set the output filename.",[1717,7914,7915,7920],{},[1732,7916,7917],{},[1735,7918,7919],{},"pFilename",[1732,7921,7922],{},"The filename to set for the output.",[1689,7924,7925,3676,7927,7929],{},[3673,7926,3675],{},[1684,7928,1686],{"href":1686}," value based on the result of setting the output filename.",[1679,7931,1682,7933,7935],{"id":7932},"enum-uderror-udconvert_settempdirectorystruct-udconvertcontext-pconvertcontext-const-char-pfolder",[1684,7934,1686],{"href":1686}," udConvert_SetTempDirectory(struct udConvertContext *pConvertContext, const char *pFolder)",[1689,7937,7938],{},"Sets the temporary output directory for the conversion.",[1693,7940,7941],{},[1689,7942,7943,7945],{},[1698,7944,1700],{},"\nA trailing slash is not automatically added, this is to allow for a prefix for the temporary files instead of, or as well as, folders.",[1711,7947,7948,7956],{},[1714,7949,7950],{},[1717,7951,7952,7954],{},[1720,7953,1722],{},[1720,7955,1725],{},[1727,7957,7958,7967],{},[1717,7959,7960,7964],{},[1732,7961,7962],{},[1735,7963,6597],{},[1732,7965,7966],{},"The convert context to use to set the temporary directory.",[1717,7968,7969,7974],{},[1732,7970,7971],{},[1735,7972,7973],{},"pFolder",[1732,7975,7976],{},"The folder path to set for the temporary directory.",[1689,7978,7979,3676,7981,7983],{},[3673,7980,3675],{},[1684,7982,1686],{"href":1686}," value based on the result of setting the temporary directory.",[1679,7985,1682,7987,7989],{"id":7986},"enum-uderror-udconvert_setuseboundsstruct-udconvertcontext-pconvertcontext-const-char-ppointcloudboundspath",[1684,7988,1686],{"href":1686}," udConvert_SetUseBounds(struct udConvertContext *pConvertContext, const char *pPointCloudBoundsPath)",[1689,7991,7992],{},"Sets the bounds and point resolution for the conversion from a previously converted point cloud.",[1711,7994,7995,8003],{},[1714,7996,7997],{},[1717,7998,7999,8001],{},[1720,8000,1722],{},[1720,8002,1725],{},[1727,8004,8005,8014],{},[1717,8006,8007,8011],{},[1732,8008,8009],{},[1735,8010,6597],{},[1732,8012,8013],{},"The convert context to use to set the point resolution.",[1717,8015,8016,8021],{},[1732,8017,8018],{},[1735,8019,8020],{},"pPointCloudBoundsPath",[1732,8022,8023],{},"The UDS file path to be used to set the bounds and point resolution.",[1689,8025,8026,3676,8028,8030],{},[3673,8027,3675],{},[1684,8029,1686],{"href":1686}," value based on the result of setting the point resolution and min ,max bounds.",[1679,8032,1682,8034,8036],{"id":8033},"enum-uderror-udconvert_setpointresolutionstruct-udconvertcontext-pconvertcontext-uint32_t-override-double-pointresolutionmeters",[1684,8035,1686],{"href":1686}," udConvert_SetPointResolution(struct udConvertContext *pConvertContext, uint32_t override, double pointResolutionMeters)",[1689,8038,8039],{},"Sets the point resolution for the conversion.",[1711,8041,8042,8050],{},[1714,8043,8044],{},[1717,8045,8046,8048],{},[1720,8047,1722],{},[1720,8049,1725],{},[1727,8051,8052,8060,8070],{},[1717,8053,8054,8058],{},[1732,8055,8056],{},[1735,8057,6597],{},[1732,8059,8013],{},[1717,8061,8062,8067],{},[1732,8063,8064],{},[1735,8065,8066],{},"override",[1732,8068,8069],{},"A boolean value (0 is false) to indicate whether to override the point resolution or use the auto-detected value.",[1717,8071,8072,8077],{},[1732,8073,8074],{},[1735,8075,8076],{},"pointResolutionMeters",[1732,8078,8079],{},"The point resolution in meters.",[1689,8081,8082,3676,8084,8086],{},[3673,8083,3675],{},[1684,8085,1686],{"href":1686}," value based on the result of setting the point resolution.",[1679,8088,1682,8090,8092],{"id":8089},"enum-uderror-udconvert_ignoreattributestruct-udconvertcontext-pconvertcontext-const-char-pattributename",[1684,8091,1686],{"href":1686}," udConvert_IgnoreAttribute(struct udConvertContext *pConvertContext, const char *pAttributeName)",[1689,8094,8095],{},"Flags an attribute to be ignored for the conversion.",[1711,8097,8098,8106],{},[1714,8099,8100],{},[1717,8101,8102,8104],{},[1720,8103,1722],{},[1720,8105,1725],{},[1727,8107,8108,8117],{},[1717,8109,8110,8114],{},[1732,8111,8112],{},[1735,8113,6597],{},[1732,8115,8116],{},"The convert context to use to set the ignored attribute.",[1717,8118,8119,8124],{},[1732,8120,8121],{},[1735,8122,8123],{},"pAttributeName",[1732,8125,8126],{},"The name of the attribute to be ignored.",[1679,8128,1682,8130,8132],{"id":8129},"enum-uderror-udconvert_restoreattributestruct-udconvertcontext-pconvertcontext-const-char-pattributename",[1684,8131,1686],{"href":1686}," udConvert_RestoreAttribute(struct udConvertContext *pConvertContext, const char *pAttributeName)",[1689,8134,8135],{},"Includes an attribute in the conversion if the attribute has previously been ignored.",[1711,8137,8138,8146],{},[1714,8139,8140],{},[1717,8141,8142,8144],{},[1720,8143,1722],{},[1720,8145,1725],{},[1727,8147,8148,8157],{},[1717,8149,8150,8154],{},[1732,8151,8152],{},[1735,8153,6597],{},[1732,8155,8156],{},"The convert context to restore attribute.",[1717,8158,8159,8163],{},[1732,8160,8161],{},[1735,8162,8123],{},[1732,8164,8165],{},"The name of the attribute to be restored.",[1679,8167,1682,8169,8171],{"id":8168},"enum-uderror-udconvert_setattributeprefixstruct-udconvertcontext-pconvertcontext-const-char-pattributename-const-char-pprefix",[1684,8170,1686],{"href":1686}," udConvert_SetAttributePrefix(struct udConvertContext *pConvertContext, const char *pAttributeName, const char *pPrefix)",[1689,8173,8174],{},"Sets the prefix of the attribute, used when displaying values to users.",[1693,8176,8177],{},[1689,8178,8179,8181],{},[1698,8180,1700],{},"\nThe prefix has a limit of 15 characters, not including the null terminator.",[1711,8183,8184,8192],{},[1714,8185,8186],{},[1717,8187,8188,8190],{},[1720,8189,1722],{},[1720,8191,1725],{},[1727,8193,8194,8203,8212],{},[1717,8195,8196,8200],{},[1732,8197,8198],{},[1735,8199,6597],{},[1732,8201,8202],{},"The convert context to use to set the attribute prefix.",[1717,8204,8205,8209],{},[1732,8206,8207],{},[1735,8208,8123],{},[1732,8210,8211],{},"The name of the attribute to set the prefix for.",[1717,8213,8214,8219],{},[1732,8215,8216],{},[1735,8217,8218],{},"pPrefix",[1732,8220,8221],{},"The prefix to use for the attribute.",[1679,8223,1682,8225,8227],{"id":8224},"enum-uderror-udconvert_setattributesuffixstruct-udconvertcontext-pconvertcontext-const-char-pattributename-const-char-psuffix",[1684,8226,1686],{"href":1686}," udConvert_SetAttributeSuffix(struct udConvertContext *pConvertContext, const char *pAttributeName, const char *pSuffix)",[1689,8229,8230],{},"Sets the suffix of the attribute, used when displaying values to users.",[1693,8232,8233],{},[1689,8234,8235,8237],{},[1698,8236,1700],{},"\nThe suffix has a limit of 15 characters, not including the null terminator.",[1711,8239,8240,8248],{},[1714,8241,8242],{},[1717,8243,8244,8246],{},[1720,8245,1722],{},[1720,8247,1725],{},[1727,8249,8250,8259,8268],{},[1717,8251,8252,8256],{},[1732,8253,8254],{},[1735,8255,6597],{},[1732,8257,8258],{},"The convert context to use to set the attribute suffix.",[1717,8260,8261,8265],{},[1732,8262,8263],{},[1735,8264,8123],{},[1732,8266,8267],{},"The name of the attribute to set the suffix for.",[1717,8269,8270,8275],{},[1732,8271,8272],{},[1735,8273,8274],{},"pSuffix",[1732,8276,8277],{},"The suffix to use for the attribute.",[1679,8279,1682,8281,8283],{"id":8280},"enum-uderror-udconvert_setsridstruct-udconvertcontext-pconvertcontext-uint32_t-override-int-srid",[1684,8282,1686],{"href":1686}," udConvert_SetSRID(struct udConvertContext *pConvertContext, uint32_t override, int srid)",[1689,8285,8286],{},"Sets the SRID for the conversion.",[1711,8288,8289,8297],{},[1714,8290,8291],{},[1717,8292,8293,8295],{},[1720,8294,1722],{},[1720,8296,1725],{},[1727,8298,8299,8308,8317],{},[1717,8300,8301,8305],{},[1732,8302,8303],{},[1735,8304,6597],{},[1732,8306,8307],{},"The convert context to use to set the SRID and WKT using SRID.",[1717,8309,8310,8314],{},[1732,8311,8312],{},[1735,8313,8066],{},[1732,8315,8316],{},"A boolean value (0 is false) to indicate whether to override the SRID or use the auto-detected value.",[1717,8318,8319,8324],{},[1732,8320,8321],{},[1735,8322,8323],{},"srid",[1732,8325,8326],{},"The SRID value to use.",[1689,8328,8329,3676,8331,8333],{},[3673,8330,3675],{},[1684,8332,1686],{"href":1686}," value based on the result of setting the SRID & WKT.",[1679,8335,1682,8337,8339],{"id":8336},"enum-uderror-udconvert_setwktstruct-udconvertcontext-pconvertcontext-const-char-pwkt",[1684,8338,1686],{"href":1686}," udConvert_SetWKT(struct udConvertContext *pConvertContext, const char *pWKT)",[1689,8341,8342],{},"Sets the WKT for the conversion.",[1693,8344,8345],{},[1689,8346,8347,8349],{},[1698,8348,1700],{},"\nThis will also enable the override on the SRID field (will not use the auto-detected value)",[1711,8351,8352,8360],{},[1714,8353,8354],{},[1717,8355,8356,8358],{},[1720,8357,1722],{},[1720,8359,1725],{},[1727,8361,8362,8371],{},[1717,8363,8364,8368],{},[1732,8365,8366],{},[1735,8367,6597],{},[1732,8369,8370],{},"The convert context to use to set the SRID and WKT using WKT.",[1717,8372,8373,8378],{},[1732,8374,8375],{},[1735,8376,8377],{},"pWKT",[1732,8379,8380],{},"The WKT string to use.",[1689,8382,8383,3676,8385,8333],{},[3673,8384,3675],{},[1684,8386,1686],{"href":1686},[1679,8388,1682,8390,8392],{"id":8389},"enum-uderror-udconvert_setglobaloffsetstruct-udconvertcontext-pconvertcontext-const-double-globaloffset3",[1684,8391,1686],{"href":1686}," udConvert_SetGlobalOffset(struct udConvertContext *pConvertContext, const double globalOffset[3])",[1689,8394,8395],{},"This function adds the supplied global offset to each point in the model.",[1693,8397,8398],{},[1689,8399,8400,8402],{},[1698,8401,1700],{},"\nThis is most useful for moving the origin of a model (or set of models) to the false easting and northing of an alternative geozone.",[1711,8404,8405,8413],{},[1714,8406,8407],{},[1717,8408,8409,8411],{},[1720,8410,1722],{},[1720,8412,1725],{},[1727,8414,8415,8424],{},[1717,8416,8417,8421],{},[1732,8418,8419],{},[1735,8420,6597],{},[1732,8422,8423],{},"The convert context to set the offset within.",[1717,8425,8426,8431],{},[1732,8427,8428],{},[1735,8429,8430],{},"globalOffset",[1732,8432,8433],{},"An array of 3 Doubles representing the desired offset in X, Y and then Z.",[1689,8435,8436,3676,8438,8440],{},[3673,8437,3675],{},[1684,8439,1686],{"href":1686}," value based on the result of setting the global offset.",[1679,8442,1682,8444,8446],{"id":8443},"enum-uderror-udconvert_setskiperrorswherepossiblestruct-udconvertcontext-pconvertcontext-uint32_t-ignoreparseerrorswherepossible",[1684,8445,1686],{"href":1686}," udConvert_SetSkipErrorsWherePossible(struct udConvertContext *pConvertContext, uint32_t ignoreParseErrorsWherePossible)",[1689,8448,8449],{},"This function sets the convert context up to attempt to skip errors where it can.",[1693,8451,8452],{},[1689,8453,8454,8456],{},[1698,8455,1700],{},"\nIn most situations this will mean that an input that is corrupt, malformed or not completely supported will be parsed as far as possible and if an error occurs it will skip the rest of this input and begin on the next.",[1693,8458,8459],{},[1689,8460,8461,8463],{},[1698,8462,1700],{},"\nSome importers may be able to skip to a later section in the file and continue conversion but this is up to the specific implementation of the importer.",[1711,8465,8466,8474],{},[1714,8467,8468],{},[1717,8469,8470,8472],{},[1720,8471,1722],{},[1720,8473,1725],{},[1727,8475,8476,8485],{},[1717,8477,8478,8482],{},[1732,8479,8480],{},[1735,8481,6597],{},[1732,8483,8484],{},"The convert context to use to set the skip errors where possible option.",[1717,8486,8487,8492],{},[1732,8488,8489],{},[1735,8490,8491],{},"ignoreParseErrorsWherePossible",[1732,8493,8494],{},"A boolean value (0 is false) to indicate whether to skip errors where possible.",[1689,8496,8497,3676,8499,8501],{},[3673,8498,3675],{},[1684,8500,1686],{"href":1686}," value based on the result of setting the skip errors where possible option.",[1679,8503,1682,8505,8507],{"id":8504},"enum-uderror-udconvert_setincludesourcefileidstruct-udconvertcontext-pconvertcontext-uint32_t-includesourcefileid",[1684,8506,1686],{"href":1686}," udConvert_SetIncludeSourceFileID(struct udConvertContext *pConvertContext, uint32_t includeSourceFileID)",[1689,8509,8510],{},"This function sets the convert context to include a source file ID attribute channel, corresponding to a list of ID-filename pairs written to the metadata.",[1693,8512,8513],{},[1689,8514,8515,8517],{},[1698,8516,1700],{},"\nThe udSourceFileID has a maximum size of 65,536, therefore any conversion performed with more than this amount of source files will have indices that overflow back to 0.",[1711,8519,8520,8528],{},[1714,8521,8522],{},[1717,8523,8524,8526],{},[1720,8525,1722],{},[1720,8527,1725],{},[1727,8529,8530,8539],{},[1717,8531,8532,8536],{},[1732,8533,8534],{},[1735,8535,6597],{},[1732,8537,8538],{},"The convert context to use to set the include source file ID option.",[1717,8540,8541,8546],{},[1732,8542,8543],{},[1735,8544,8545],{},"includeSourceFileID",[1732,8547,8548],{},"A boolean value (0 is false) to indicate whether to include the source file ID.",[1689,8550,8551,3676,8553,8555],{},[3673,8552,3675],{},[1684,8554,1686],{"href":1686}," value based on the result of setting the include source file ID option.",[1679,8557,1682,8559,8561],{"id":8558},"enum-uderror-udconvert_seteverynthstruct-udconvertcontext-pconvertcontext-uint32_t-everynth",[1684,8560,1686],{"href":1686}," udConvert_SetEveryNth(struct udConvertContext *pConvertContext, uint32_t everyNth)",[1689,8563,8564,8567,8568,8571],{},[1735,8565,8566],{},"EveryNth"," lets the importers know to only include every *",[1742,8569,8570],{},"n","*th point. If this is set to 0 or 1, every point will be included.",[1693,8573,8574],{},[1689,8575,8576,8578],{},[1698,8577,1700],{},"\nFor many file formats this will be significantly faster to process making this valuable as a tool to test if the resolution and geolocation settings are correct before doing a full conversion.",[1693,8580,8581],{},[1689,8582,8583,8585,8586,8589],{},[1698,8584,1700],{},"\nThe first (0th) point is always included regardless of this value. Example: Setting this to ",[1735,8587,8588],{},"50"," would:",[8591,8592,8593,8596,8599,8602,8605],"ol",{},[2087,8594,8595],{},"Include the first point(point 0)",[2087,8597,8598],{},"Skip 49 points",[2087,8600,8601],{},"Include the 50th point",[2087,8603,8604],{},"Skip another 49 points",[2087,8606,8607],{},"Include the 100th point n. …and so on skipping 49 points and including the 50th until all points from this input are processed. The next input would then reset the count and include the 0th, skipping 49 etc.as before.",[1711,8609,8610,8618],{},[1714,8611,8612],{},[1717,8613,8614,8616],{},[1720,8615,1722],{},[1720,8617,1725],{},[1727,8619,8620,8629],{},[1717,8621,8622,8626],{},[1732,8623,8624],{},[1735,8625,6597],{},[1732,8627,8628],{},"The convert context to set the everyNth param on",[1717,8630,8631,8636],{},[1732,8632,8633],{},[1735,8634,8635],{},"everyNth",[1732,8637,8638,8639,2503],{},"How many ",[1742,8640,8641],{},"n_th points to include. Alternatively, how many (n - 1) points to skip for every point included in the export. _See the example below for a bit more context on what this number means",[1689,8643,8644,3676,8646,8648],{},[3673,8645,3675],{},[1684,8647,1686],{"href":1686}," value based on the result of setting the every Nth option.",[1679,8650,1682,8652,8654],{"id":8651},"enum-uderror-udconvert_setpolygonverticesonlystruct-udconvertcontext-pconvertcontext-uint32_t-polygonverticesonly",[1684,8653,1686],{"href":1686}," udConvert_SetPolygonVerticesOnly(struct udConvertContext *pConvertContext, uint32_t polygonVerticesOnly)",[1689,8656,8657],{},"This function sets the convert context up to skip rasterization of the polygons, leaving only the vertices.",[1711,8659,8660,8668],{},[1714,8661,8662],{},[1717,8663,8664,8666],{},[1720,8665,1722],{},[1720,8667,1725],{},[1727,8669,8670,8679],{},[1717,8671,8672,8676],{},[1732,8673,8674],{},[1735,8675,6597],{},[1732,8677,8678],{},"The convert context to use to set the polygonVerticesOnly param on.",[1717,8680,8681,8686],{},[1732,8682,8683],{},[1735,8684,8685],{},"polygonVerticesOnly",[1732,8687,8688],{},"A boolean value (0 is false) to indicate whether to skip rasterization of the polygons being converted, leaving only the vertices.",[1689,8690,8691,3676,8693,8695],{},[3673,8692,3675],{},[1684,8694,1686],{"href":1686}," value based on the result of setting the polygon vertices only option.",[1679,8697,1682,8699,8701],{"id":8698},"enum-uderror-udconvert_setretainprimitivesstruct-udconvertcontext-pconvertcontext-uint32_t-retainprimitives",[1684,8700,1686],{"href":1686}," udConvert_SetRetainPrimitives(struct udConvertContext *pConvertContext, uint32_t retainPrimitives)",[1689,8703,8704],{},"This function sets the convert context up to retain rasterised primitives such as lines\u002Ftriangles to be rendered at finer resolutions at runtime",[1711,8706,8707,8715],{},[1714,8708,8709],{},[1717,8710,8711,8713],{},[1720,8712,1722],{},[1720,8714,1725],{},[1727,8716,8717,8725],{},[1717,8718,8719,8723],{},[1732,8720,8721],{},[1735,8722,6597],{},[1732,8724,8678],{},[1717,8726,8727,8732],{},[1732,8728,8729],{},[1735,8730,8731],{},"retainPrimitives",[1732,8733,8734],{},"A boolean value (0 is false) to indicate whether to retain the primitives in the output UDS file",[1689,8736,8737,3676,8739,8741],{},[3673,8738,3675],{},[1684,8740,1686],{"href":1686}," value based on the result of setting the retainPrimitives option.",[1679,8743,1682,8745,8747],{"id":8744},"enum-uderror-udconvert_setbakelightingstruct-udconvertcontext-pconvertcontext-uint32_t-bakelighting",[1684,8746,1686],{"href":1686}," udConvert_SetBakeLighting(struct udConvertContext *pConvertContext, uint32_t bakeLighting)",[1689,8749,8750],{},"This function sets the convert context up to set the udCIF_BakeLightning flag allowing the read point function to bake normals into the colour channel",[1711,8752,8753,8761],{},[1714,8754,8755],{},[1717,8756,8757,8759],{},[1720,8758,1722],{},[1720,8760,1725],{},[1727,8762,8763,8771],{},[1717,8764,8765,8769],{},[1732,8766,8767],{},[1735,8768,6597],{},[1732,8770,8678],{},[1717,8772,8773,8778],{},[1732,8774,8775],{},[1735,8776,8777],{},"bakeLighting",[1732,8779,8780],{},"A boolean value (0 is false) to indicate whether to bake the normals into the colour channel in the output UDS file",[1689,8782,8783,3676,8785,8741],{},[3673,8784,3675],{},[1684,8786,1686],{"href":1686},[1679,8788,1682,8790,8792],{"id":8789},"enum-uderror-udconvert_setexportotherembeddedassetsstruct-udconvertcontext-pconvertcontext-uint32_t-exportimages",[1684,8791,1686],{"href":1686}," udConvert_SetExportOtherEmbeddedAssets(struct udConvertContext *pConvertContext, uint32_t exportImages)",[1689,8794,8795],{},"This function sets the convert context up to set the udCIF_ExportImages flag allowing the open function to export images to png or jpg files",[1711,8797,8798,8806],{},[1714,8799,8800],{},[1717,8801,8802,8804],{},[1720,8803,1722],{},[1720,8805,1725],{},[1727,8807,8808,8816],{},[1717,8809,8810,8814],{},[1732,8811,8812],{},[1735,8813,6597],{},[1732,8815,8678],{},[1717,8817,8818,8823],{},[1732,8819,8820],{},[1735,8821,8822],{},"exportImages",[1732,8824,8825],{},"A boolean value (0 is false) to indicate whether to export or not images contained in e57 files",[1689,8827,8828,3676,8830,8832],{},[3673,8829,3675],{},[1684,8831,1686],{"href":1686}," value based on the result of setting the exportImages option.",[1679,8834,1682,8836,8838],{"id":8835},"enum-uderror-udconvert_setmetadatastruct-udconvertcontext-pconvertcontext-const-char-pmetadatakey-const-char-pmetadatavalue",[1684,8837,1686],{"href":1686}," udConvert_SetMetadata(struct udConvertContext *pConvertContext, const char *pMetadataKey, const char *pMetadataValue)",[1689,8840,8841],{},"This adds a metadata key to the output UDS file. There are no restrictions on the key.",[1693,8843,8844],{},[1689,8845,8846,8848],{},[1698,8847,1700],{},"\nThere are a number of ‘standard’ keys that are recommended to support.",[2084,8850,8851,8857,8863,8869],{},[2087,8852,8853,8856],{},[1735,8854,8855],{},"Author",": The name of the company that owns or captured the data",[2087,8858,8859,8862],{},[1735,8860,8861],{},"Comment",": A miscellaneous information section",[2087,8864,8865,8868],{},[1735,8866,8867],{},"Copyright",": The copyright information",[2087,8870,8871,8874],{},[1735,8872,8873],{},"License",": The general license information",[1711,8876,8877,8885],{},[1714,8878,8879],{},[1717,8880,8881,8883],{},[1720,8882,1722],{},[1720,8884,1725],{},[1727,8886,8887,8896,8906],{},[1717,8888,8889,8893],{},[1732,8890,8891],{},[1735,8892,6597],{},[1732,8894,8895],{},"The convert context to use to set the metadata key.",[1717,8897,8898,8903],{},[1732,8899,8900],{},[1735,8901,8902],{},"pMetadataKey",[1732,8904,8905],{},"The name of the key.This is parsed as a JSON address.",[1717,8907,8908,8913],{},[1732,8909,8910],{},[1735,8911,8912],{},"pMetadataValue",[1732,8914,8915,8916,8918],{},"The contents of the key, settings this as ",[1735,8917,6778],{}," will remove the key from the system (if it exists). This value is handled internal as a string (won’t be parsed as JSON).",[1689,8920,8921,3676,8923,8925],{},[3673,8922,3675],{},[1684,8924,1686],{"href":1686}," value based on the result of setting the metadata key and value.",[1679,8927,1682,8929,8931],{"id":8928},"enum-uderror-udconvert_additemstruct-udconvertcontext-pconvertcontext-const-char-pfilename",[1684,8930,1686],{"href":1686}," udConvert_AddItem(struct udConvertContext *pConvertContext, const char *pFilename)",[1689,8933,8934],{},"This adds an item to be converted in the convert context.",[1711,8936,8937,8945],{},[1714,8938,8939],{},[1717,8940,8941,8943],{},[1720,8942,1722],{},[1720,8944,1725],{},[1727,8946,8947,8956],{},[1717,8948,8949,8953],{},[1732,8950,8951],{},[1735,8952,6597],{},[1732,8954,8955],{},"The convert context to add the item to.",[1717,8957,8958,8962],{},[1732,8959,8960],{},[1735,8961,7919],{},[1732,8963,8964],{},"The file to add to the convert context.",[1689,8966,8967,3676,8969,8971],{},[3673,8968,3675],{},[1684,8970,1686],{"href":1686}," value based on the result of adding the item.",[1679,8973,1682,8975,8977],{"id":8974},"enum-uderror-udconvert_removeitemstruct-udconvertcontext-pconvertcontext-uint64_t-index",[1684,8976,1686],{"href":1686}," udConvert_RemoveItem(struct udConvertContext *pConvertContext, uint64_t index)",[1689,8979,8980],{},"This removes an item to be converted from the convert context.",[1711,8982,8983,8991],{},[1714,8984,8985],{},[1717,8986,8987,8989],{},[1720,8988,1722],{},[1720,8990,1725],{},[1727,8992,8993,9002],{},[1717,8994,8995,8999],{},[1732,8996,8997],{},[1735,8998,6597],{},[1732,9000,9001],{},"The convert context to remove the item from.",[1717,9003,9004,9008],{},[1732,9005,9006],{},[1735,9007,4582],{},[1732,9009,9010],{},"The index of the item to remove from the convert context.",[1689,9012,9013,3676,9015,9017],{},[3673,9014,3675],{},[1684,9016,1686],{"href":1686}," value based on the result of removing the item.",[1679,9019,1682,9021,9023],{"id":9020},"enum-uderror-udconvert_setinputsourceprojectionstruct-udconvertcontext-pconvertcontext-uint64_t-index-int-srid",[1684,9022,1686],{"href":1686}," udConvert_SetInputSourceProjection(struct udConvertContext *pConvertContext, uint64_t index, int srid)",[1689,9025,9026],{},"This specifies the projection of the source data.",[1711,9028,9029,9037],{},[1714,9030,9031],{},[1717,9032,9033,9035],{},[1720,9034,1722],{},[1720,9036,1725],{},[1727,9038,9039,9048,9057],{},[1717,9040,9041,9045],{},[1732,9042,9043],{},[1735,9044,6597],{},[1732,9046,9047],{},"The convert context to set the input source projection on.",[1717,9049,9050,9054],{},[1732,9051,9052],{},[1735,9053,4582],{},[1732,9055,9056],{},"The index of the item to set the source project on.",[1717,9058,9059,9063],{},[1732,9060,9061],{},[1735,9062,8323],{},[1732,9064,9065],{},"The SRID to use for the specified item.",[1689,9067,9068,3676,9070,9072],{},[3673,9069,3675],{},[1684,9071,1686],{"href":1686}," value based on the result of setting the source projection.",[1679,9074,1682,9076,9078],{"id":9075},"enum-uderror-udconvert_getinfostruct-udconvertcontext-pconvertcontext-const-struct-udconvertinfo-ppinfo",[1684,9077,1686],{"href":1686}," udConvert_GetInfo(struct udConvertContext *pConvertContext, const struct udConvertInfo **ppInfo)",[1689,9080,9081],{},"This provides a way to get the information of the convert context.",[1711,9083,9084,9092],{},[1714,9085,9086],{},[1717,9087,9088,9090],{},[1720,9089,1722],{},[1720,9091,1725],{},[1727,9093,9094,9103],{},[1717,9095,9096,9100],{},[1732,9097,9098],{},[1735,9099,6597],{},[1732,9101,9102],{},"The convert context to retrieve the information from.",[1717,9104,9105,9110],{},[1732,9106,9107],{},[1735,9108,9109],{},"ppInfo",[1732,9111,9112],{},"The pointer pointer of the udConvertInfo. This will be managed by the convert context and does not need to be deallocated.",[1689,9114,9115,3676,9117,9119],{},[3673,9116,3675],{},[1684,9118,1686],{"href":1686}," value based on the result of getting the information of the convert context.",[1679,9121,1682,9123,9125],{"id":9122},"enum-uderror-udconvert_getiteminfostruct-udconvertcontext-pconvertcontext-uint64_t-index-struct-udconvertiteminfo-pinfo",[1684,9124,1686],{"href":1686}," udConvert_GetItemInfo(struct udConvertContext *pConvertContext, uint64_t index, struct udConvertItemInfo *pInfo)",[1689,9127,9128],{},"This provides a way to get the information of a specific item in the convert context.",[1711,9130,9131,9139],{},[1714,9132,9133],{},[1717,9134,9135,9137],{},[1720,9136,1722],{},[1720,9138,1725],{},[1727,9140,9141,9150,9159],{},[1717,9142,9143,9147],{},[1732,9144,9145],{},[1735,9146,6597],{},[1732,9148,9149],{},"The convert context to retrieve the item information from.",[1717,9151,9152,9156],{},[1732,9153,9154],{},[1735,9155,4582],{},[1732,9157,9158],{},"The index of the item to retrieve the information for from the convert context.",[1717,9160,9161,9165],{},[1732,9162,9163],{},[1735,9164,7591],{},[1732,9166,9167],{},"The pointer of the udConvertItemInfo. The will be populated by the convert context from an internal representation.",[1689,9169,9170,3676,9172,9174],{},[3673,9171,3675],{},[1684,9173,1686],{"href":1686}," value based on the result of getting the information of the specified item.",[1679,9176,1682,9178,9180],{"id":9177},"enum-uderror-udconvert_doconvertstruct-udconvertcontext-pconvertcontext",[1684,9179,1686],{"href":1686}," udConvert_DoConvert(struct udConvertContext *pConvertContext)",[1689,9182,9183],{},"This begins the conversion process for the provided convert context.",[1711,9185,9186,9194],{},[1714,9187,9188],{},[1717,9189,9190,9192],{},[1720,9191,1722],{},[1720,9193,1725],{},[1727,9195,9196],{},[1717,9197,9198,9202],{},[1732,9199,9200],{},[1735,9201,6597],{},[1732,9203,9204],{},"The convert context on which to start the conversion.",[1689,9206,9207,3676,9209,9211],{},[3673,9208,3675],{},[1684,9210,1686],{"href":1686}," value based on the result of starting the conversion.",[1679,9213,1682,9215,9217],{"id":9214},"enum-uderror-udconvert_cancelstruct-udconvertcontext-pconvertcontext",[1684,9216,1686],{"href":1686}," udConvert_Cancel(struct udConvertContext *pConvertContext)",[1689,9219,9220],{},"This cancels the running conversion for the provided convert context.",[1711,9222,9223,9231],{},[1714,9224,9225],{},[1717,9226,9227,9229],{},[1720,9228,1722],{},[1720,9230,1725],{},[1727,9232,9233],{},[1717,9234,9235,9239],{},[1732,9236,9237],{},[1735,9238,6597],{},[1732,9240,9241],{},"The convert context on which to cancel the conversion.",[1689,9243,9244,3676,9246,9248],{},[3673,9245,3675],{},[1684,9247,1686],{"href":1686}," value based on the result of cancelling the conversion.",[1679,9250,1682,9252,9254],{"id":9251},"enum-uderror-udconvert_resetstruct-udconvertcontext-pconvertcontext",[1684,9253,1686],{"href":1686}," udConvert_Reset(struct udConvertContext *pConvertContext)",[1689,9256,9257],{},"This resets the status for the provided convert context, for example to re-run a previously completed conversion.",[1711,9259,9260,9268],{},[1714,9261,9262],{},[1717,9263,9264,9266],{},[1720,9265,1722],{},[1720,9267,1725],{},[1727,9269,9270],{},[1717,9271,9272,9276],{},[1732,9273,9274],{},[1735,9275,6597],{},[1732,9277,9278],{},"The convert context on which to reset the status.",[1689,9280,9281,3676,9283,9285],{},[3673,9282,3675],{},[1684,9284,1686],{"href":1686}," value based on the result of resetting the status.",[1679,9287,1682,9289,9291],{"id":9288},"enum-uderror-udconvert_generatepreviewstruct-udconvertcontext-pconvertcontext-struct-udpointcloud-ppcloud",[1684,9290,1686],{"href":1686}," udConvert_GeneratePreview(struct udConvertContext *pConvertContext, struct udPointCloud **ppCloud)",[1689,9293,9294],{},"This generates a preview of the provided convert context.",[1693,9296,9297],{},[1689,9298,9299,7150,9301,7154,9304,7158],{},[1698,9300,1700],{},[3673,9302,9303],{},"udPointCloud_Unload",[1735,9305,9306],{},"ppCloud",[1711,9308,9309,9317],{},[1714,9310,9311],{},[1717,9312,9313,9315],{},[1720,9314,1722],{},[1720,9316,1725],{},[1727,9318,9319,9328],{},[1717,9320,9321,9325],{},[1732,9322,9323],{},[1735,9324,6597],{},[1732,9326,9327],{},"The convert context to generate the preview for.",[1717,9329,9330,9334],{},[1732,9331,9332],{},[1735,9333,9306],{},[1732,9335,9336,9337,7808,9340,2503],{},"The pointer pointer of the udPointCloud. This will allocate an instance of ",[1735,9338,9339],{},"udPointCloud",[1735,9341,9306],{},[1689,9343,9344,3676,9346,9348],{},[3673,9345,3675],{},[1684,9347,1686],{"href":1686}," value based on the result of genearting the preview.",[1679,9350,1682,9352,9354,9355,9359],{"id":9351},"enum-uderror-udconvertpostprocesscallbackstruct-udconvertiteminfo-pconvertinput-struct-udpointbufferf64-pbuffer-void-puserdata",[1684,9353,1686],{"href":1686}," udConvertPostProcessCallback(struct udConvertItemInfo *pConvertInput, struct ",[1684,9356,9358],{"href":9357},"udPointBuffer","udPointBufferF64"," *pBuffer, void *pUserData)",[1689,9361,9362],{},"Callback invoked on pointbuffers after being read in during the convert process to conditionally modify points based on buffer contents",[1711,9364,9365,9373],{},[1714,9366,9367],{},[1717,9368,9369,9371],{},[1720,9370,1722],{},[1720,9372,1725],{},[1727,9374,9375,9385,9395],{},[1717,9376,9377,9382],{},[1732,9378,9379],{},[1735,9380,9381],{},"pConvertInput",[1732,9383,9384],{},"The convert info associated with the current item being processed at the time the callback is invoked",[1717,9386,9387,9392],{},[1732,9388,9389],{},[1735,9390,9391],{},"pBuffer",[1732,9393,9394],{},"The point buffer containing the points currently being read in prior to any processing done by convert (e.g. reprojection)",[1717,9396,9397,9402],{},[1732,9398,9399],{},[1735,9400,9401],{},"pUserData",[1732,9403,9404],{},"Pointer to a struct containing user data used by this function- this may be freed by pCleanUpUserData on completion of processing of convert inputs if necessary",[1689,9406,9407,3676,9409,9411],{},[3673,9408,3675],{},[1684,9410,1686],{"href":1686}," to indicate the success of the postprocessing - returning anything other than udE_Success will cause the conversion to fail",[1679,9413,1682,9415,9417],{"id":9414},"enum-uderror-udconvert_setpostprocesscallbackstruct-udconvertcontext-pcontext-udconvertpostprocesscallback-pcallback-void-puserdata-void-pcleanupuserdatavoid",[1684,9416,1686],{"href":1686}," udConvert_SetPostProcessCallback(struct udConvertContext *pContext, udConvertPostProcessCallback *pCallback, void *pUserData, void (*pCleanUpUserData)(void*))",[1689,9419,9420],{},"Postprocessing to perform on points as they are read in",[1711,9422,9423,9431],{},[1714,9424,9425],{},[1717,9426,9427,9429],{},[1720,9428,1722],{},[1720,9430,1725],{},[1727,9432,9433,9442,9455,9464],{},[1717,9434,9435,9439],{},[1732,9436,9437],{},[1735,9438,5760],{},[1732,9440,9441],{},"The convert context",[1717,9443,9444,9449],{},[1732,9445,9446],{},[1735,9447,9448],{},"pCallback",[1732,9450,9451,9452,9454],{},"takes the convertInput, a point buffer, a pointer to user data (which must point to memory that is valid for the duration of the convert process); returns ",[1684,9453,1686],{"href":1686}," This can be used to modify the points and their attributes as well as modify the contents of the userData Structure",[1717,9456,9457,9461],{},[1732,9458,9459],{},[1735,9460,9401],{},[1732,9462,9463],{},"a pointer to any data used by the callback",[1717,9465,9466,9471],{},[1732,9467,9468],{},[1735,9469,9470],{},"pCleanUpUserData",[1732,9472,9473],{},"a function called with pUserData as the argument once the input has finished processing",[1689,9475,9476,3676,9478,9480],{},[3673,9477,3675],{},[1684,9479,1686],{"href":1686}," value based on the result of setting the callback",[1679,9482,1682,9484,9486,9487,9490],{"id":9483},"enum-uderror-udconvert_addoutputattributestruct-udconvertcontext-pcontext-struct-udattributedescriptor-pattribute",[1684,9485,1686],{"href":1686}," udConvert_AddOutputAttribute(struct udConvertContext *pContext, struct ",[1684,9488,9489],{"href":2686},"udAttributeDescriptor"," *pAttribute)",[1689,9492,9493],{},"Forces the produced UDS to include the specified attribute despite not being present in any input file. This is useful when these attributes are calculated using a postprocess callback The forced attribute may still be excluded using udConvert_IgnoreAttribute. This allows an attribute added to the conversion using this function to be added\u002F removed using ignore\u002Frestore attribute",[1711,9495,9496,9504],{},[1714,9497,9498],{},[1717,9499,9500,9502],{},[1720,9501,1722],{},[1720,9503,1725],{},[1727,9505,9506,9514],{},[1717,9507,9508,9512],{},[1732,9509,9510],{},[1735,9511,5760],{},[1732,9513,9441],{},[1717,9515,9516,9521],{},[1732,9517,9518],{},[1735,9519,9520],{},"pAttribute",[1732,9522,9523],{},"descriptor of the attribute to be added. This is copied by the function",[1689,9525,9526,3676,9528,9530],{},[3673,9527,3675],{},[1684,9529,1686],{"href":1686}," value based on the result of setting the forced attribute",[2084,9532,9533],{},[2087,9534,9535,9537],{},[3673,9536,3675],{},"\nudE_CountExceeded if the number of attributes exceeds the limit in a UDS",[1679,9539,1682,9541,9543],{"id":9540},"enum-uderror-udconvert_removeoutputattributestruct-udconvertcontext-pcontext-uint32_t-index",[1684,9542,1686],{"href":1686}," udConvert_RemoveOutputAttribute(struct udConvertContext *pContext, uint32_t index)",[1689,9545,9546],{},"Removes the forced attribute at the index specified from the list",[1711,9548,9549,9557],{},[1714,9550,9551],{},[1717,9552,9553,9555],{},[1720,9554,1722],{},[1720,9556,1725],{},[1727,9558,9559,9567],{},[1717,9560,9561,9565],{},[1732,9562,9563],{},[1735,9564,5760],{},[1732,9566,9441],{},[1717,9568,9569,9573],{},[1732,9570,9571],{},[1735,9572,4582],{},[1732,9574,9575],{},"the index of from the array of forced attributes to remove",[1689,9577,9578,3676,9580,9582],{},[3673,9579,3675],{},[1684,9581,1686],{"href":1686}," value based on the result of removing the forced attribute",[1679,9584,1682,9586,9588],{"id":9585},"enum-uderror-udconvert_setattributerangemasksizestruct-udconvertcontext-pcontext-const-char-pattributename-uint8_t-attributerangemasksize",[1684,9587,1686],{"href":1686}," udConvert_SetAttributeRangeMaskSize(struct udConvertContext *pContext, const char *pAttributeName, uint8_t attributeRangeMaskSize)",[1689,9590,9591],{},"Sets the range mask size used during this conversion: higher values improve precision when performing attribute filtering on the resultant point cloud",[1711,9593,9594,9602],{},[1714,9595,9596],{},[1717,9597,9598,9600],{},[1720,9599,1722],{},[1720,9601,1725],{},[1727,9603,9604,9612,9621],{},[1717,9605,9606,9610],{},[1732,9607,9608],{},[1735,9609,5760],{},[1732,9611,9441],{},[1717,9613,9614,9618],{},[1732,9615,9616],{},[1735,9617,8123],{},[1732,9619,9620],{},"the name of the attribute to set the range mask size for",[1717,9622,9623,9628],{},[1732,9624,9625],{},[1735,9626,9627],{},"attributeRangeMaskSize",[1732,9629,9630],{},"the number of bytes to use for containing the range mask (0, 1, 2, 4, 8)",[1689,9632,9633,3676,9635,9637],{},[3673,9634,3675],{},[1684,9636,1686],{"href":1686}," value based on the result of setting the range mask size",[1679,9639,1682,9641,9643],{"id":9640},"enum-uderror-udconvert_getattributerangemasksizestruct-udconvertcontext-pcontext-const-char-pattributename-uint32_t-pattributerangemasksize",[1684,9642,1686],{"href":1686}," udConvert_GetAttributeRangeMaskSize(struct udConvertContext *pContext, const char *pAttributeName, uint32_t *pAttributeRangeMaskSize)",[1689,9645,9646],{},"Gets the range mask size used for the attribute with the given name during this conversion",[1711,9648,9649,9657],{},[1714,9650,9651],{},[1717,9652,9653,9655],{},[1720,9654,1722],{},[1720,9656,1725],{},[1727,9658,9659,9667,9676],{},[1717,9660,9661,9665],{},[1732,9662,9663],{},[1735,9664,5760],{},[1732,9666,9441],{},[1717,9668,9669,9673],{},[1732,9670,9671],{},[1735,9672,8123],{},[1732,9674,9675],{},"the name of the attribute to get the range mask size for",[1717,9677,9678,9683],{},[1732,9679,9680],{},[1735,9681,9682],{},"pAttributeRangeMaskSize",[1732,9684,9630],{},[1689,9686,9687,3676,9689,9691],{},[3673,9688,3675],{},[1684,9690,1686],{"href":1686}," value based on the result of getting the range mask size",[1674,9693,1796],{"id":1795},[1679,9695,9697],{"id":9696},"struct-udconvertinfo","struct udConvertInfo",[1689,9699,9700],{},"Provides a copy of a subset of the convert state",[1711,9702,9703,9713],{},[1714,9704,9705],{},[1717,9706,9707,9709,9711],{},[1720,9708,1812],{},[1720,9710,1815],{},[1720,9712,1725],{},[1727,9714,9715,9728,9742,9756,9771,9786,9801,9815,9829,9843,9857,9870,9883,9896,9909,9922,9936,9950,9964,9978,9991,10004,10018,10032,10046,10060,10074,10088,10102,10116,10130,10144],{},[1717,9716,9717,9721,9725],{},[1732,9718,9719],{},[1735,9720,6675],{},[1732,9722,9723],{},[1735,9724,6652],{},[1732,9726,9727],{},"The output filename.",[1717,9729,9730,9735,9739],{},[1732,9731,9732],{},[1735,9733,9734],{},"pTempFilesPrefix",[1732,9736,9737],{},[1735,9738,6652],{},[1732,9740,9741],{},"The file prefix for temp files.",[1717,9743,9744,9749,9753],{},[1732,9745,9746],{},[1735,9747,9748],{},"pMetadata",[1732,9750,9751],{},[1735,9752,6652],{},[1732,9754,9755],{},"The metadata that will be added to this model (in JSON format).",[1717,9757,9758,9763,9768],{},[1732,9759,9760],{},[1735,9761,9762],{},"attributes",[1732,9764,9765],{},[1735,9766,9767],{},"struct [udAttributeSet](udAttributes.md)",[1732,9769,9770],{},"The attributes in this model.",[1717,9772,9773,9778,9783],{},[1732,9774,9775],{},[1735,9776,9777],{},"ignoredAttributesLength",[1732,9779,9780],{},[1735,9781,9782],{},"int32_t",[1732,9784,9785],{},"The length of the ignored attributes list.",[1717,9787,9788,9793,9798],{},[1732,9789,9790],{},[1735,9791,9792],{},"ppIgnoredAttributes",[1732,9794,9795],{},[1735,9796,9797],{},"const char \\* \\*",[1732,9799,9800],{},"The list of ignored attributes.",[1717,9802,9803,9808,9812],{},[1732,9804,9805],{},[1735,9806,9807],{},"globalOffset[3]",[1732,9809,9810],{},[1735,9811,5100],{},[1732,9813,9814],{},"This amount is added to every point during conversion. Useful for moving the origin of the entire scene to geolocate.",[1717,9816,9817,9822,9826],{},[1732,9818,9819],{},[1735,9820,9821],{},"minPointResolution",[1732,9823,9824],{},[1735,9825,5100],{},[1732,9827,9828],{},"The native resolution of the highest resolution file.",[1717,9830,9831,9836,9840],{},[1732,9832,9833],{},[1735,9834,9835],{},"maxPointResolution",[1732,9837,9838],{},[1735,9839,5100],{},[1732,9841,9842],{},"The native resolution of the lowest resolution file.",[1717,9844,9845,9850,9854],{},[1732,9846,9847],{},[1735,9848,9849],{},"skipErrorsWherePossible",[1732,9851,9852],{},[1735,9853,1831],{},[1732,9855,9856],{},"If not 0 it will continue processing other files if a file is detected as corrupt or incorrect.",[1717,9858,9859,9863,9867],{},[1732,9860,9861],{},[1735,9862,8545],{},[1732,9864,9865],{},[1735,9866,1831],{},[1732,9868,9869],{},"If not 0 this will embed source files to the udSourceFileID attribute channel of the output.",[1717,9871,9872,9876,9880],{},[1732,9873,9874],{},[1735,9875,8635],{},[1732,9877,9878],{},[1735,9879,1831],{},[1732,9881,9882],{},"If this value is >1, only every Nth point is included in the model. e.g. 4 means only every 4th point will be included, skipping 3\u002F4 of the points.",[1717,9884,9885,9889,9893],{},[1732,9886,9887],{},[1735,9888,8685],{},[1732,9890,9891],{},[1735,9892,1831],{},[1732,9894,9895],{},"If not 0 it will skip rasterization of polygons in favour of just processing the vertices.",[1717,9897,9898,9902,9906],{},[1732,9899,9900],{},[1735,9901,8731],{},[1732,9903,9904],{},[1735,9905,1831],{},[1732,9907,9908],{},"If not 0 rasterised primitives such as triangles\u002Flines\u002Fetc are retained to be rendered at finer resolution if required at runtime.",[1717,9910,9911,9915,9919],{},[1732,9912,9913],{},[1735,9914,8777],{},[1732,9916,9917],{},[1735,9918,1831],{},[1732,9920,9921],{},"if not 0 bake the normals into the colour channel in the output UDS file",[1717,9923,9924,9929,9933],{},[1732,9925,9926],{},[1735,9927,9928],{},"exportOtherEmbeddedAssets",[1732,9930,9931],{},[1735,9932,1831],{},[1732,9934,9935],{},"if not 0 export images contained in e57 files",[1717,9937,9938,9943,9947],{},[1732,9939,9940],{},[1735,9941,9942],{},"overrideResolution",[1732,9944,9945],{},[1735,9946,1831],{},[1732,9948,9949],{},"Set to not 0 to stop the resolution from being recalculated.",[1717,9951,9952,9957,9961],{},[1732,9953,9954],{},[1735,9955,9956],{},"pointResolution",[1732,9958,9959],{},[1735,9960,5100],{},[1732,9962,9963],{},"The scale to be used in the conversion (either calculated or overriden).",[1717,9965,9966,9971,9975],{},[1732,9967,9968],{},[1735,9969,9970],{},"overrideSRID",[1732,9972,9973],{},[1735,9974,1831],{},[1732,9976,9977],{},"Set to not 0 to prevent the SRID being recalculated.",[1717,9979,9980,9984,9988],{},[1732,9981,9982],{},[1735,9983,8323],{},[1732,9985,9986],{},[1735,9987,1846],{},[1732,9989,9990],{},"The geospatial reference ID (either calculated or overriden).",[1717,9992,9993,9997,10001],{},[1732,9994,9995],{},[1735,9996,8377],{},[1732,9998,9999],{},[1735,10000,6652],{},[1732,10002,10003],{},"The geospatial WKT string.",[1717,10005,10006,10011,10015],{},[1732,10007,10008],{},[1735,10009,10010],{},"totalPointsRead",[1732,10012,10013],{},[1735,10014,5675],{},[1732,10016,10017],{},"How many points have been read in this model.",[1717,10019,10020,10025,10029],{},[1732,10021,10022],{},[1735,10023,10024],{},"totalItems",[1732,10026,10027],{},[1735,10028,5675],{},[1732,10030,10031],{},"How many items are in the list.",[1717,10033,10034,10039,10043],{},[1732,10035,10036],{},[1735,10037,10038],{},"currentInputItem",[1732,10040,10041],{},[1735,10042,5675],{},[1732,10044,10045],{},"The index of the item that is currently being read.",[1717,10047,10048,10053,10057],{},[1732,10049,10050],{},[1735,10051,10052],{},"outputFileSize",[1732,10054,10055],{},[1735,10056,5675],{},[1732,10058,10059],{},"Size of the result UDS file.",[1717,10061,10062,10067,10071],{},[1732,10063,10064],{},[1735,10065,10066],{},"sourcePointCount",[1732,10068,10069],{},[1735,10070,5675],{},[1732,10072,10073],{},"Number of points added (may include duplicates or out of range points).",[1717,10075,10076,10081,10085],{},[1732,10077,10078],{},[1735,10079,10080],{},"uniquePointCount",[1732,10082,10083],{},[1735,10084,5675],{},[1732,10086,10087],{},"Number of unique points in the final model.",[1717,10089,10090,10095,10099],{},[1732,10091,10092],{},[1735,10093,10094],{},"discardedPointCount",[1732,10096,10097],{},[1735,10098,5675],{},[1732,10100,10101],{},"Number of duplicate or ignored out of range points.",[1717,10103,10104,10109,10113],{},[1732,10105,10106],{},[1735,10107,10108],{},"outputPointCount",[1732,10110,10111],{},[1735,10112,5675],{},[1732,10114,10115],{},"Number of points written to UDS (can be used for progress).",[1717,10117,10118,10123,10127],{},[1732,10119,10120],{},[1735,10121,10122],{},"peakDiskUsage",[1732,10124,10125],{},[1735,10126,5675],{},[1732,10128,10129],{},"Peak amount of disk space used including both temp files and the actual output file.",[1717,10131,10132,10137,10141],{},[1732,10133,10134],{},[1735,10135,10136],{},"peakTempFileUsage",[1732,10138,10139],{},[1735,10140,5675],{},[1732,10142,10143],{},"Peak amount of disk space that contained temp files.",[1717,10145,10146,10151,10155],{},[1732,10147,10148],{},[1735,10149,10150],{},"peakTempFileCount",[1732,10152,10153],{},[1735,10154,1831],{},[1732,10156,10157],{},"Peak number of temporary files written.",[1679,10159,10161],{"id":10160},"struct-udconvertiteminfo","struct udConvertItemInfo",[1689,10163,10164],{},"Provides a copy of a subset of a convert item state",[1711,10166,10167,10177],{},[1714,10168,10169],{},[1717,10170,10171,10173,10175],{},[1720,10172,1812],{},[1720,10174,1815],{},[1720,10176,1725],{},[1727,10178,10179,10192,10206,10220,10234],{},[1717,10180,10181,10185,10189],{},[1732,10182,10183],{},[1735,10184,7919],{},[1732,10186,10187],{},[1735,10188,6652],{},[1732,10190,10191],{},"Name of the input file.",[1717,10193,10194,10199,10203],{},[1732,10195,10196],{},[1735,10197,10198],{},"pointsCount",[1732,10200,10201],{},[1735,10202,1932],{},[1732,10204,10205],{},"This might be an estimate, -1 is no estimate is available.",[1717,10207,10208,10213,10217],{},[1732,10209,10210],{},[1735,10211,10212],{},"pointsRead",[1732,10214,10215],{},[1735,10216,5675],{},[1732,10218,10219],{},"Once conversation begins, this will give an indication of progress.",[1717,10221,10222,10227,10231],{},[1732,10223,10224],{},[1735,10225,10226],{},"estimatedResolution",[1732,10228,10229],{},[1735,10230,5100],{},[1732,10232,10233],{},"The estimated scale of the item.",[1717,10235,10236,10240,10244],{},[1732,10237,10238],{},[1735,10239,8323],{},[1732,10241,10242],{},[1735,10243,1846],{},[1732,10245,10246],{},"The calculated geospatial reference ID of the item.",{"title":2049,"searchDepth":2050,"depth":2050,"links":10248},[10249,10323],{"id":1676,"depth":2050,"text":1677,"children":10250},[10251,10253,10255,10257,10259,10261,10263,10265,10267,10269,10271,10273,10275,10277,10279,10281,10283,10285,10287,10289,10291,10293,10295,10297,10299,10301,10303,10305,10307,10309,10311,10313,10315,10317,10319,10321],{"id":7757,"depth":2055,"text":10252},"enum udError udConvert_CreateContext(struct udContext *pContext, struct udConvertContext **ppConvertContext)",{"id":7820,"depth":2055,"text":10254},"enum udError udConvert_DestroyContext(struct udConvertContext **ppConvertContext)",{"id":7871,"depth":2055,"text":10256},"enum udError udConvert_SetOutputFilename(struct udConvertContext *pConvertContext, const char *pFilename)",{"id":7932,"depth":2055,"text":10258},"enum udError udConvert_SetTempDirectory(struct udConvertContext *pConvertContext, const char *pFolder)",{"id":7986,"depth":2055,"text":10260},"enum udError udConvert_SetUseBounds(struct udConvertContext *pConvertContext, const char *pPointCloudBoundsPath)",{"id":8033,"depth":2055,"text":10262},"enum udError udConvert_SetPointResolution(struct udConvertContext *pConvertContext, uint32_t override, double pointResolutionMeters)",{"id":8089,"depth":2055,"text":10264},"enum udError udConvert_IgnoreAttribute(struct udConvertContext *pConvertContext, const char *pAttributeName)",{"id":8129,"depth":2055,"text":10266},"enum udError udConvert_RestoreAttribute(struct udConvertContext *pConvertContext, const char *pAttributeName)",{"id":8168,"depth":2055,"text":10268},"enum udError udConvert_SetAttributePrefix(struct udConvertContext *pConvertContext, const char *pAttributeName, const char *pPrefix)",{"id":8224,"depth":2055,"text":10270},"enum udError udConvert_SetAttributeSuffix(struct udConvertContext *pConvertContext, const char *pAttributeName, const char *pSuffix)",{"id":8280,"depth":2055,"text":10272},"enum udError udConvert_SetSRID(struct udConvertContext *pConvertContext, uint32_t override, int srid)",{"id":8336,"depth":2055,"text":10274},"enum udError udConvert_SetWKT(struct udConvertContext *pConvertContext, const char *pWKT)",{"id":8389,"depth":2055,"text":10276},"enum udError udConvert_SetGlobalOffset(struct udConvertContext *pConvertContext, const double globalOffset[3])",{"id":8443,"depth":2055,"text":10278},"enum udError udConvert_SetSkipErrorsWherePossible(struct udConvertContext *pConvertContext, uint32_t ignoreParseErrorsWherePossible)",{"id":8504,"depth":2055,"text":10280},"enum udError udConvert_SetIncludeSourceFileID(struct udConvertContext *pConvertContext, uint32_t includeSourceFileID)",{"id":8558,"depth":2055,"text":10282},"enum udError udConvert_SetEveryNth(struct udConvertContext *pConvertContext, uint32_t everyNth)",{"id":8651,"depth":2055,"text":10284},"enum udError udConvert_SetPolygonVerticesOnly(struct udConvertContext *pConvertContext, uint32_t polygonVerticesOnly)",{"id":8698,"depth":2055,"text":10286},"enum udError udConvert_SetRetainPrimitives(struct udConvertContext *pConvertContext, uint32_t retainPrimitives)",{"id":8744,"depth":2055,"text":10288},"enum udError udConvert_SetBakeLighting(struct udConvertContext *pConvertContext, uint32_t bakeLighting)",{"id":8789,"depth":2055,"text":10290},"enum udError udConvert_SetExportOtherEmbeddedAssets(struct udConvertContext *pConvertContext, uint32_t exportImages)",{"id":8835,"depth":2055,"text":10292},"enum udError udConvert_SetMetadata(struct udConvertContext *pConvertContext, const char *pMetadataKey, const char *pMetadataValue)",{"id":8928,"depth":2055,"text":10294},"enum udError udConvert_AddItem(struct udConvertContext *pConvertContext, const char *pFilename)",{"id":8974,"depth":2055,"text":10296},"enum udError udConvert_RemoveItem(struct udConvertContext *pConvertContext, uint64_t index)",{"id":9020,"depth":2055,"text":10298},"enum udError udConvert_SetInputSourceProjection(struct udConvertContext *pConvertContext, uint64_t index, int srid)",{"id":9075,"depth":2055,"text":10300},"enum udError udConvert_GetInfo(struct udConvertContext *pConvertContext, const struct udConvertInfo **ppInfo)",{"id":9122,"depth":2055,"text":10302},"enum udError udConvert_GetItemInfo(struct udConvertContext *pConvertContext, uint64_t index, struct udConvertItemInfo *pInfo)",{"id":9177,"depth":2055,"text":10304},"enum udError udConvert_DoConvert(struct udConvertContext *pConvertContext)",{"id":9214,"depth":2055,"text":10306},"enum udError udConvert_Cancel(struct udConvertContext *pConvertContext)",{"id":9251,"depth":2055,"text":10308},"enum udError udConvert_Reset(struct udConvertContext *pConvertContext)",{"id":9288,"depth":2055,"text":10310},"enum udError udConvert_GeneratePreview(struct udConvertContext *pConvertContext, struct udPointCloud **ppCloud)",{"id":9351,"depth":2055,"text":10312},"enum udError udConvertPostProcessCallback(struct udConvertItemInfo *pConvertInput, struct udPointBufferF64 *pBuffer, void *pUserData)",{"id":9414,"depth":2055,"text":10314},"enum udError udConvert_SetPostProcessCallback(struct udConvertContext *pContext, udConvertPostProcessCallback *pCallback, void *pUserData, void (*pCleanUpUserData)(void*))",{"id":9483,"depth":2055,"text":10316},"enum udError udConvert_AddOutputAttribute(struct udConvertContext *pContext, struct udAttributeDescriptor *pAttribute)",{"id":9540,"depth":2055,"text":10318},"enum udError udConvert_RemoveOutputAttribute(struct udConvertContext *pContext, uint32_t index)",{"id":9585,"depth":2055,"text":10320},"enum udError udConvert_SetAttributeRangeMaskSize(struct udConvertContext *pContext, const char *pAttributeName, uint8_t attributeRangeMaskSize)",{"id":9640,"depth":2055,"text":10322},"enum udError udConvert_GetAttributeRangeMaskSize(struct udConvertContext *pContext, const char *pAttributeName, uint32_t *pAttributeRangeMaskSize)",{"id":1795,"depth":2050,"text":1796,"children":10324},[10325,10326],{"id":9696,"depth":2055,"text":9697},{"id":10160,"depth":2055,"text":10161},"The udConvertContext object provides an interface to create a Nuclideon Unlimited Detail model from a number of supported pointcloud formats. Once instantiated, the udConvertContext object can be populated with input files and various conversion settings, before initiating the conversion process.",{},"\u002Fguide\u002Fudsdk\u002Fudconvert",{"title":7738,"description":10327},"guide\u002Fudsdk\u002FudConvert","gjngmasf1gzYX4zXgJnWyTyzJI9NKoB8LCbASTI1n-Q",{"id":10334,"title":10335,"body":10336,"date":7,"description":10343,"extension":2064,"meta":11034,"navigation":43,"path":11035,"seo":11036,"stem":11037,"__hash__":11038},"udsdkguide\u002Fguide\u002Fudsdk\u002FudConvertCustom.md","udConvertCustom",{"type":1667,"value":10337,"toc":11014},[10338,10341,10344,10346,10350,10353,10357,10419,10423,10426,10430,10472,10476,10478,10482,10524,10526,10532,10535,10566,10573,10582,10585,10592,10633,10640,10646,10649,10701,10708,10717,10720,10761,10768,10770,10774,10777],[1670,10339,10335],{"id":10340},"udconvertcustom",[1689,10342,10343],{},"udConvertCustomItem provides a way to convert proprietary or unsupported file formats to Unlimited Detail format",[1674,10345,2698],{"id":2697},[1679,10347,10349],{"id":10348},"enum-udconvertcustomitemflags","enum udConvertCustomItemFlags",[1689,10351,10352],{},"Settings the custom converts need to be aware of that are set by the user",[1689,10354,10355],{},[1742,10356,2707],{},[1711,10358,10359,10367],{},[1714,10360,10361],{},[1717,10362,10363,10365],{},[1720,10364,2716],{},[1720,10366,1725],{},[1727,10368,10369,10379,10389,10399,10409],{},[1717,10370,10371,10376],{},[1732,10372,10373],{},[1735,10374,10375],{},"udCCIF_None",[1732,10377,10378],{},"No additional flags specified.",[1717,10380,10381,10386],{},[1732,10382,10383],{},[1735,10384,10385],{},"udCCIF_SkipErrorsWherePossible",[1732,10387,10388],{},"If its possible to continue parsing, that is perferable to failing.",[1717,10390,10391,10396],{},[1732,10392,10393],{},[1735,10394,10395],{},"udCCIF_PolygonVerticesOnly",[1732,10397,10398],{},"Do not rasterise the polygons, just use the vertices as points.",[1717,10400,10401,10406],{},[1732,10402,10403],{},[1735,10404,10405],{},"udCCIF_BakeLighting",[1732,10407,10408],{},"Bake normals into color channel for polygons conversion.",[1717,10410,10411,10416],{},[1732,10412,10413],{},[1735,10414,10415],{},"udCCIF_ExportImages",[1732,10417,10418],{},"Export images contained in e57 files.",[1679,10420,10422],{"id":10421},"enum-udprimitivevertextype","enum udPrimitiveVertexType",[1689,10424,10425],{},"Indicates the geometry type of a vertex passed to pReadPrimitives",[1689,10427,10428],{},[1742,10429,2707],{},[1711,10431,10432,10440],{},[1714,10433,10434],{},[1717,10435,10436,10438],{},[1720,10437,2716],{},[1720,10439,1725],{},[1727,10441,10442,10452,10462],{},[1717,10443,10444,10449],{},[1732,10445,10446],{},[1735,10447,10448],{},"udPVT_Null",[1732,10450,10451],{},"The vertex does not form part of a primitive.",[1717,10453,10454,10459],{},[1732,10455,10456],{},[1735,10457,10458],{},"udPVT_Line",[1732,10460,10461],{},"The vertex is the start point of a line, the next vertex will represent the endpoint.",[1717,10463,10464,10469],{},[1732,10465,10466],{},[1735,10467,10468],{},"udPVT_Triangle",[1732,10470,10471],{},"The next 3 vertices in the buffer represent a triangle.",[1679,10473,10475],{"id":10474},"enum-udprimitivetextureflags","enum udPrimitiveTextureFlags",[1689,10477,10425],{},[1689,10479,10480],{},[1742,10481,2707],{},[1711,10483,10484,10492],{},[1714,10485,10486],{},[1717,10487,10488,10490],{},[1720,10489,2716],{},[1720,10491,1725],{},[1727,10493,10494,10504,10514],{},[1717,10495,10496,10501],{},[1732,10497,10498],{},[1735,10499,10500],{},"udPMF_None",[1732,10502,10503],{},"Default material options.",[1717,10505,10506,10511],{},[1732,10507,10508],{},[1735,10509,10510],{},"udPMF_Filter",[1732,10512,10513],{},"Apply bilinear filtering to the texture.",[1717,10515,10516,10521],{},[1732,10517,10518],{},[1735,10519,10520],{},"udPMF_Clamp",[1732,10522,10523],{},"Apply clamping to the texture.",[1674,10525,1677],{"id":1676},[1679,10527,1682,10529,10531],{"id":10528},"enum-uderror-udconvert_addcustomitemstruct-udconvertcontext-pconvertcontext-struct-udconvertcustomitem-pcustomitem",[1684,10530,1686],{"href":1686}," udConvert_AddCustomItem(struct udConvertContext *pConvertContext, struct udConvertCustomItem *pCustomItem)",[1689,10533,10534],{},"Adds a prefilled udConvertCustomItem to a udConvertContext",[1711,10536,10537,10545],{},[1714,10538,10539],{},[1717,10540,10541,10543],{},[1720,10542,1722],{},[1720,10544,1725],{},[1727,10546,10547,10556],{},[1717,10548,10549,10553],{},[1732,10550,10551],{},[1735,10552,6597],{},[1732,10554,10555],{},"The convert context to add the item to",[1717,10557,10558,10563],{},[1732,10559,10560],{},[1735,10561,10562],{},"pCustomItem",[1732,10564,10565],{},"The custom convert item to add",[1689,10567,10568,3676,10570,10572],{},[3673,10569,3675],{},[1684,10571,1686],{"href":1686}," value based on the result of adding the item",[1679,10574,1682,10576,10578,10579,10581],{"id":10575},"enum-uderror-udconvert_addcustomitemformatstruct-udconvertcontext-pconvertcontext-int-pextensioncheckconst-char-pfilename-enum-uderror-ptryadditemstruct-udconvertcontext-pconvertcontext-const-char-pfilename-struct-udconvertcustomitem-pcustomitem",[1684,10577,1686],{"href":1686}," udConvert_AddCustomItemFormat(struct udConvertContext *pConvertContext, int (*pExtensionCheck)(const char *pFilename), enum ",[1684,10580,1686],{"href":1686}," (*pTryAddItem)(struct udConvertContext *pConvertContext, const char *pFilename, struct udConvertCustomItem *pCustomItem))",[1689,10583,10584],{},"Registers a format in the udConvertContext to allow users to just call udConvert_AddItem",[1693,10586,10587],{},[1689,10588,10589,10591],{},[1698,10590,1700],{},"\npTryAddItem needs to handle being called if a file doesn’t match any of the extensions",[1711,10593,10594,10602],{},[1714,10595,10596],{},[1717,10597,10598,10600],{},[1720,10599,1722],{},[1720,10601,1725],{},[1727,10603,10604,10613,10623],{},[1717,10605,10606,10610],{},[1732,10607,10608],{},[1735,10609,6597],{},[1732,10611,10612],{},"The convert context to register the format with",[1717,10614,10615,10620],{},[1732,10616,10617],{},[1735,10618,10619],{},"pExtensionCheck",[1732,10621,10622],{},"The callback used to determine if the format should be used, returns 1 when a match, 0 otherwise",[1717,10624,10625,10630],{},[1732,10626,10627],{},[1735,10628,10629],{},"pTryAddItem",[1732,10631,10632],{},"The callback used when calling udConvert_AddItem needs to populate the pCustomItem parameter, returns udE_Success on success",[1689,10634,10635,3676,10637,10639],{},[3673,10636,3675],{},[1684,10638,1686],{"href":1686}," value based on the result of registering the format",[1679,10641,1682,10643,10645],{"id":10642},"enum-uderror-udconvert_getprimitivematerialidstruct-udconvertcustomitem-pconvertitem-uint32_t-pmaterialid-const-char-ptexturepath-enum-udprimitivetextureflags-textureflags",[1684,10644,1686],{"href":1686}," udConvert_GetPrimitiveMaterialID(struct udConvertCustomItem *pConvertItem, uint32_t *pMaterialID, const char *pTexturePath, enum udPrimitiveTextureFlags textureFlags)",[1689,10647,10648],{},"Gets the id of a material suitable for use in a primitive",[1711,10650,10651,10659],{},[1714,10652,10653],{},[1717,10654,10655,10657],{},[1720,10656,1722],{},[1720,10658,1725],{},[1727,10660,10661,10671,10681,10691],{},[1717,10662,10663,10668],{},[1732,10664,10665],{},[1735,10666,10667],{},"pConvertItem",[1732,10669,10670],{},"The convert item to get the material ID from",[1717,10672,10673,10678],{},[1732,10674,10675],{},[1735,10676,10677],{},"pMaterialID",[1732,10679,10680],{},"A pointer to the ID to be populated.",[1717,10682,10683,10688],{},[1732,10684,10685],{},[1735,10686,10687],{},"pTexturePath",[1732,10689,10690],{},"THe path to the texture to be used in the material",[1717,10692,10693,10698],{},[1732,10694,10695],{},[1735,10696,10697],{},"textureFlags",[1732,10699,10700],{},"flags indicating how the texture is processed",[1689,10702,10703,3676,10705,10707],{},[3673,10704,3675],{},[1684,10706,1686],{"href":1686}," value based on the result of getting the texture ID",[1679,10709,1682,10711,10713,10714,10716],{"id":10710},"enum-uderror-udconvert_estimatepointsvertexbufferstruct-udpointbufferf64-pbuffer-double-gridresolution-int64_t-ppointcount",[1684,10712,1686],{"href":1686}," udConvert_EstimatePointsVertexBuffer(struct ",[1684,10715,9358],{"href":9357}," *pBuffer, double gridResolution, int64_t *pPointCount)",[1689,10718,10719],{},"Estimates the number of points generated by a vertex buffer when passed to a udPrimitive convert.",[1711,10721,10722,10730],{},[1714,10723,10724],{},[1717,10725,10726,10728],{},[1720,10727,1722],{},[1720,10729,1725],{},[1727,10731,10732,10741,10751],{},[1717,10733,10734,10738],{},[1732,10735,10736],{},[1735,10737,9391],{},[1732,10739,10740],{},"The buffer of vertices as passed to pReadPrimitives, each vertex must have at minimum a udPrimitiveID indicating the type of primitive (udPVT_Line or udPVT_Triangle)",[1717,10742,10743,10748],{},[1732,10744,10745],{},[1735,10746,10747],{},"gridResolution",[1732,10749,10750],{},"The resolution that the conversion takes place at",[1717,10752,10753,10758],{},[1732,10754,10755],{},[1735,10756,10757],{},"pPointCount",[1732,10759,10760],{},"a pointer to which the resultant estimate will be written",[1689,10762,10763,3676,10765,10767],{},[3673,10764,3675],{},[1684,10766,1686],{"href":1686}," value based on the result of estimating the number of points generated by the vertex buffer",[1674,10769,1796],{"id":1795},[1679,10771,10773],{"id":10772},"struct-udconvertcustomitem","struct udConvertCustomItem",[1689,10775,10776],{},"Allows for conversion of custom data formats to UDS",[1711,10778,10779,10789],{},[1714,10780,10781],{},[1717,10782,10783,10785,10787],{},[1720,10784,1812],{},[1720,10786,1815],{},[1720,10788,1725],{},[1727,10790,10791,10806,10821,10835,10850,10864,10877,10890,10904,10918,10932,10946,10959,10972,10986,11000],{},[1717,10792,10793,10798,10803],{},[1732,10794,10795],{},[1735,10796,10797],{},"flags)",[1732,10799,10800],{},[1735,10801,10802],{},"enum [udError](udError.md) (\\*pOpen)(struct udConvertCustomItem \\*pConvertInput, uint32_t everyNth, double pointResolution, enum udConvertCustomItemFlags",[1732,10804,10805],{},"Open the file and provide information on the file (bounds, point count, etc.).",[1717,10807,10808,10813,10818],{},[1732,10809,10810],{},[1735,10811,10812],{},"pBuffer)",[1732,10814,10815],{},[1735,10816,10817],{},"enum [udError](udError.md) (\\*pReadPointsFloat)(struct udConvertCustomItem \\*pConvertInput, struct [udPointBufferF64](udPointBuffer.md) \\*",[1732,10819,10820],{},"Provide position and attribute data to convert to UDS.",[1717,10822,10823,10827,10832],{},[1732,10824,10825],{},[1735,10826,10812],{},[1732,10828,10829],{},[1735,10830,10831],{},"enum [udError](udError.md) (\\*pReadPrimitives)(struct udConvertCustomItem \\*pConvertInput, struct [udPointBufferF64](udPointBuffer.md) \\*",[1732,10833,10834],{},"Provide vertex data of primitives to convert to UDS.",[1717,10836,10837,10842,10847],{},[1732,10838,10839],{},[1735,10840,10841],{},"pConvertInput)",[1732,10843,10844],{},[1735,10845,10846],{},"void (\\*pDestroy)(struct udConvertCustomItem \\*",[1732,10848,10849],{},"Cleanup all memory related to this custom convert item.",[1717,10851,10852,10856,10861],{},[1732,10853,10854],{},[1735,10855,10841],{},[1732,10857,10858],{},[1735,10859,10860],{},"void (\\*pClose)(struct udConvertCustomItem \\*",[1732,10862,10863],{},"This function will be called on completion of reading the file.",[1717,10865,10866,10870,10874],{},[1732,10867,10868],{},[1735,10869,4572],{},[1732,10871,10872],{},[1735,10873,5070],{},[1732,10875,10876],{},"Private user data relevant to the specific geomtype, must be freed by the pClose function.",[1717,10878,10879,10883,10887],{},[1732,10880,10881],{},[1735,10882,3862],{},[1732,10884,10885],{},[1735,10886,6652],{},[1732,10888,10889],{},"Filename or other identifier.",[1717,10891,10892,10897,10901],{},[1732,10893,10894],{},[1735,10895,10896],{},"boundMin[3]",[1732,10898,10899],{},[1735,10900,5100],{},[1732,10902,10903],{},"Optional (see boundsKnown) source space minimum values.",[1717,10905,10906,10911,10915],{},[1732,10907,10908],{},[1735,10909,10910],{},"boundMax[3]",[1732,10912,10913],{},[1735,10914,5100],{},[1732,10916,10917],{},"Optional (see boundsKnown) source space maximum values.",[1717,10919,10920,10925,10929],{},[1732,10921,10922],{},[1735,10923,10924],{},"sourceResolution",[1732,10926,10927],{},[1735,10928,5100],{},[1732,10930,10931],{},"Source resolution (eg 0.01 if points are 1cm apart). 0 indicates unknown.",[1717,10933,10934,10939,10943],{},[1732,10935,10936],{},[1735,10937,10938],{},"pointCount",[1732,10940,10941],{},[1735,10942,1932],{},[1732,10944,10945],{},"Number of points coming, -1 if unknown.",[1717,10947,10948,10952,10956],{},[1732,10949,10950],{},[1735,10951,8323],{},[1732,10953,10954],{},[1735,10955,9782],{},[1732,10957,10958],{},"If non-zero, this input is considered to be within the given srid code (useful mainly as a default value for other files in the conversion).",[1717,10960,10961,10965,10969],{},[1732,10962,10963],{},[1735,10964,9762],{},[1732,10966,10967],{},[1735,10968,9767],{},[1732,10970,10971],{},"Content of the input; this might not match the output.",[1717,10973,10974,10979,10983],{},[1732,10975,10976],{},[1735,10977,10978],{},"boundsKnown",[1732,10980,10981],{},[1735,10982,1831],{},[1732,10984,10985],{},"If not 0, boundMin and boundMax are valid, if 0 they will be calculated later.",[1717,10987,10988,10993,10997],{},[1732,10989,10990],{},[1735,10991,10992],{},"pointCountIsEstimate",[1732,10994,10995],{},[1735,10996,1831],{},[1732,10998,10999],{},"If not 0, the point count is an estimate and may be different.",[1717,11001,11002,11007,11011],{},[1732,11003,11004],{},[1735,11005,11006],{},"pReserved",[1732,11008,11009],{},[1735,11010,5070],{},[1732,11012,11013],{},"Contains information used in primitive convert.",{"title":2049,"searchDepth":2050,"depth":2050,"links":11015},[11016,11021,11031],{"id":2697,"depth":2050,"text":2698,"children":11017},[11018,11019,11020],{"id":10348,"depth":2055,"text":10349},{"id":10421,"depth":2055,"text":10422},{"id":10474,"depth":2055,"text":10475},{"id":1676,"depth":2050,"text":1677,"children":11022},[11023,11025,11027,11029],{"id":10528,"depth":2055,"text":11024},"enum udError udConvert_AddCustomItem(struct udConvertContext *pConvertContext, struct udConvertCustomItem *pCustomItem)",{"id":10575,"depth":2055,"text":11026},"enum udError udConvert_AddCustomItemFormat(struct udConvertContext *pConvertContext, int (*pExtensionCheck)(const char *pFilename), enum udError (*pTryAddItem)(struct udConvertContext *pConvertContext, const char *pFilename, struct udConvertCustomItem *pCustomItem))",{"id":10642,"depth":2055,"text":11028},"enum udError udConvert_GetPrimitiveMaterialID(struct udConvertCustomItem *pConvertItem, uint32_t *pMaterialID, const char *pTexturePath, enum udPrimitiveTextureFlags textureFlags)",{"id":10710,"depth":2055,"text":11030},"enum udError udConvert_EstimatePointsVertexBuffer(struct udPointBufferF64 *pBuffer, double gridResolution, int64_t *pPointCount)",{"id":1795,"depth":2050,"text":1796,"children":11032},[11033],{"id":10772,"depth":2055,"text":10773},{},"\u002Fguide\u002Fudsdk\u002Fudconvertcustom",{"title":10335,"description":10343},"guide\u002Fudsdk\u002FudConvertCustom","NCBRSp5mxDdtWEHU_RPPEF5Nr-Qggrdc5cWqyx4u0w4",{"id":11040,"title":11041,"body":11042,"date":7,"description":2049,"extension":2064,"meta":11075,"navigation":43,"path":11076,"seo":11077,"stem":11078,"__hash__":11079},"udsdkguide\u002Fguide\u002Fudsdk\u002FudDLLExport.md","udDLLExport",{"type":1667,"value":11043,"toc":11067},[11044,11047,11051,11055,11059,11063],[1670,11045,11041],{"id":11046},"uddllexport",[1674,11048,11050],{"id":11049},"defines","Defines",[1679,11052,11054],{"id":11053},"udsdkdll_import","UDSDKDLL_IMPORT",[1679,11056,11058],{"id":11057},"udsdkdll_export","UDSDKDLL_EXPORT",[1679,11060,11062],{"id":11061},"udsdkdll_api","UDSDKDLL_API",[1679,11064,11066],{"id":11065},"udsdkdll_data","UDSDKDLL_DATA",{"title":2049,"searchDepth":2050,"depth":2050,"links":11068},[11069],{"id":11049,"depth":2050,"text":11050,"children":11070},[11071,11072,11073,11074],{"id":11053,"depth":2055,"text":11054},{"id":11057,"depth":2055,"text":11058},{"id":11061,"depth":2055,"text":11062},{"id":11065,"depth":2055,"text":11066},{},"\u002Fguide\u002Fudsdk\u002Fuddllexport",{"title":11041,"description":2049},"guide\u002Fudsdk\u002FudDLLExport","0QebHwFXZ08f_wmUk7nQzZvXZzajDnvEWrd40vmMZLQ",{"id":11081,"title":1686,"body":11082,"date":7,"description":11089,"extension":2064,"meta":11908,"navigation":43,"path":11909,"seo":11910,"stem":11911,"__hash__":11912},"udsdkguide\u002Fguide\u002Fudsdk\u002FudError.md",{"type":1667,"value":11083,"toc":11895},[11084,11087,11090,11092,11096,11099,11101,11105,11108,11122,11126,11678,11682,11685,11689,11781,11783,11787,11790,11812,11817,11821,11824,11838,11890],[1670,11085,1686],{"id":11086},"uderror",[1689,11088,11089],{},"These are the shared return codes from most udSDK functions",[1674,11091,11050],{"id":11049},[1679,11093,11095],{"id":11094},"ud_error_version","UD_ERROR_VERSION",[1689,11097,11098],{},"When used with the udCore library the udError codes are interchangable with the udResult codes when this version number matches.",[1674,11100,2698],{"id":2697},[1679,11102,11104],{"id":11103},"enum-uderror","enum udError",[1689,11106,11107],{},"These are the various error codes returned by udSDK functions",[1693,11109,11110],{},[1689,11111,11112,11114,11115,11117,11118,11121],{},[1698,11113,1700],{},"\nThe ",[1735,11116,6899],{}," value is success, this is different to many C APIs and as such ",[1735,11119,11120],{},"if(udFunction() == udE_Success)"," is required to handle success cases.",[1689,11123,11124],{},[1742,11125,2707],{},[1711,11127,11128,11136],{},[1714,11129,11130],{},[1717,11131,11132,11134],{},[1720,11133,2716],{},[1720,11135,1725],{},[1727,11137,11138,11148,11158,11168,11178,11188,11198,11208,11218,11228,11238,11248,11258,11268,11278,11288,11298,11308,11318,11328,11338,11348,11358,11368,11378,11388,11398,11408,11418,11428,11438,11448,11458,11468,11478,11488,11498,11508,11518,11528,11538,11548,11558,11568,11578,11588,11598,11608,11618,11628,11638,11648,11658,11668],{},[1717,11139,11140,11145],{},[1732,11141,11142],{},[1735,11143,11144],{},"udE_Success",[1732,11146,11147],{},"Indicates the operation was successful.",[1717,11149,11150,11155],{},[1732,11151,11152],{},[1735,11153,11154],{},"udE_Failure",[1732,11156,11157],{},"A catch-all value that is rarely used, internally the below values are favored.",[1717,11159,11160,11165],{},[1732,11161,11162],{},[1735,11163,11164],{},"udE_NothingToDo",[1732,11166,11167],{},"The operation didn’t specifically fail but it also didn’t do anything.",[1717,11169,11170,11175],{},[1732,11171,11172],{},[1735,11173,11174],{},"udE_InternalError",[1732,11176,11177],{},"There was an internal error that could not be handled.",[1717,11179,11180,11185],{},[1732,11181,11182],{},[1735,11183,11184],{},"udE_NotInitialized",[1732,11186,11187],{},"The request can’t be processed because an object hasn’t been configured yet.",[1717,11189,11190,11195],{},[1732,11191,11192],{},[1735,11193,11194],{},"udE_InvalidConfiguration",[1732,11196,11197],{},"Something in the request is not correctly configured or has conflicting settings.",[1717,11199,11200,11205],{},[1732,11201,11202],{},[1735,11203,11204],{},"udE_InvalidParameter",[1732,11206,11207],{},"One or more parameters is not of the expected format.",[1717,11209,11210,11215],{},[1732,11211,11212],{},[1735,11213,11214],{},"udE_OutstandingReferences",[1732,11216,11217],{},"The requested operation failed because there are still references to this object.",[1717,11219,11220,11225],{},[1732,11221,11222],{},[1735,11223,11224],{},"udE_MemoryAllocationFailure",[1732,11226,11227],{},"udSDK wasn’t able to allocate enough memory for the requested feature",[1717,11229,11230,11235],{},[1732,11231,11232],{},[1735,11233,11234],{},"udE_CountExceeded",[1732,11236,11237],{},"An internal count was exceeded by the request, generally going beyond the end of a buffer or internal limit.",[1717,11239,11240,11245],{},[1732,11241,11242],{},[1735,11243,11244],{},"udE_NotFound",[1732,11246,11247],{},"The requested item wasn’t found or isn’t currently available.",[1717,11249,11250,11255],{},[1732,11251,11252],{},[1735,11253,11254],{},"udE_BufferTooSmall",[1732,11256,11257],{},"Either the provided buffer or an internal one wasn’t big enough to fufill the request.",[1717,11259,11260,11265],{},[1732,11261,11262],{},[1735,11263,11264],{},"udE_FormatVariationNotSupported",[1732,11266,11267],{},"The supplied item is an unsupported variant of a supported format.",[1717,11269,11270,11275],{},[1732,11271,11272],{},[1735,11273,11274],{},"udE_ObjectTypeMismatch",[1732,11276,11277],{},"There was a mismatch between what was expected and what was found.",[1717,11279,11280,11285],{},[1732,11281,11282],{},[1735,11283,11284],{},"udE_CorruptData",[1732,11286,11287],{},"The data\u002Ffile was corrupt.",[1717,11289,11290,11295],{},[1732,11291,11292],{},[1735,11293,11294],{},"udE_InputExhausted",[1732,11296,11297],{},"The input buffer was exhausted so no more processing can occur.",[1717,11299,11300,11305],{},[1732,11301,11302],{},[1735,11303,11304],{},"udE_OutputExhausted",[1732,11306,11307],{},"The output buffer was exhausted so no more processing can occur.",[1717,11309,11310,11315],{},[1732,11311,11312],{},[1735,11313,11314],{},"udE_CompressionError",[1732,11316,11317],{},"There was an error in compression or decompression.",[1717,11319,11320,11325],{},[1732,11321,11322],{},[1735,11323,11324],{},"udE_Unsupported",[1732,11326,11327],{},"This functionality has not yet been implemented (usually some combination of inputs isn’t compatible yet).",[1717,11329,11330,11335],{},[1732,11331,11332],{},[1735,11333,11334],{},"udE_Timeout",[1732,11336,11337],{},"The requested operation timed out. Trying again later may be successful.",[1717,11339,11340,11345],{},[1732,11341,11342],{},[1735,11343,11344],{},"udE_AlignmentRequired",[1732,11346,11347],{},"Memory alignment was required for the operation.",[1717,11349,11350,11355],{},[1732,11351,11352],{},[1735,11353,11354],{},"udE_DecryptionKeyRequired",[1732,11356,11357],{},"A decryption key is required and wasn’t provided.",[1717,11359,11360,11365],{},[1732,11361,11362],{},[1735,11363,11364],{},"udE_DecryptionKeyMismatch",[1732,11366,11367],{},"The provided decryption key wasn’t the required one.",[1717,11369,11370,11375],{},[1732,11371,11372],{},[1735,11373,11374],{},"udE_SignatureMismatch",[1732,11376,11377],{},"The digital signature did not match the expected signature.",[1717,11379,11380,11385],{},[1732,11381,11382],{},[1735,11383,11384],{},"udE_ObjectExpired",[1732,11386,11387],{},"The supplied object has expired.",[1717,11389,11390,11395],{},[1732,11391,11392],{},[1735,11393,11394],{},"udE_ParseError",[1732,11396,11397],{},"A requested resource or input was unable to be parsed.",[1717,11399,11400,11405],{},[1732,11401,11402],{},[1735,11403,11404],{},"udE_InternalCryptoError",[1732,11406,11407],{},"There was a low level cryptography issue.",[1717,11409,11410,11415],{},[1732,11411,11412],{},[1735,11413,11414],{},"udE_OutOfOrder",[1732,11416,11417],{},"There were inputs that were provided out of order.",[1717,11419,11420,11425],{},[1732,11421,11422],{},[1735,11423,11424],{},"udE_OutOfRange",[1732,11426,11427],{},"The inputs were outside the expected range.",[1717,11429,11430,11435],{},[1732,11431,11432],{},[1735,11433,11434],{},"udE_CalledMoreThanOnce",[1732,11436,11437],{},"This function was already called.",[1717,11439,11440,11445],{},[1732,11441,11442],{},[1735,11443,11444],{},"udE_ImageLoadFailure",[1732,11446,11447],{},"An image was unable to be parsed. This is usually an indication of either a corrupt or unsupported image format.",[1717,11449,11450,11455],{},[1732,11451,11452],{},[1735,11453,11454],{},"udE_StreamerNotInitialised",[1732,11456,11457],{},"The streamer needs to be initialised before this function can be called.",[1717,11459,11460,11465],{},[1732,11461,11462],{},[1735,11463,11464],{},"udE_OpenFailure",[1732,11466,11467],{},"The requested resource was unable to be opened.",[1717,11469,11470,11475],{},[1732,11471,11472],{},[1735,11473,11474],{},"udE_CloseFailure",[1732,11476,11477],{},"The resource was unable to be closed.",[1717,11479,11480,11485],{},[1732,11481,11482],{},[1735,11483,11484],{},"udE_ReadFailure",[1732,11486,11487],{},"A requested resource was unable to be read.",[1717,11489,11490,11495],{},[1732,11491,11492],{},[1735,11493,11494],{},"udE_WriteFailure",[1732,11496,11497],{},"A requested resource was unable to be written.",[1717,11499,11500,11505],{},[1732,11501,11502],{},[1735,11503,11504],{},"udE_SocketError",[1732,11506,11507],{},"There was an issue with a socket problem.",[1717,11509,11510,11515],{},[1732,11511,11512],{},[1735,11513,11514],{},"udE_DatabaseError",[1732,11516,11517],{},"A database error occurred.",[1717,11519,11520,11525],{},[1732,11521,11522],{},[1735,11523,11524],{},"udE_ServerError",[1732,11526,11527],{},"The server reported an error trying to complete the request.",[1717,11529,11530,11535],{},[1732,11531,11532],{},[1735,11533,11534],{},"udE_AuthError",[1732,11536,11537],{},"The provided credentials were declined (usually email or password issue).",[1717,11539,11540,11545],{},[1732,11541,11542],{},[1735,11543,11544],{},"udE_NotAllowed",[1732,11546,11547],{},"The requested operation is not allowed (usually this is because the operation isn’t allowed in the current state).",[1717,11549,11550,11555],{},[1732,11551,11552],{},[1735,11553,11554],{},"udE_InvalidLicense",[1732,11556,11557],{},"The required license isn’t available or has expired.",[1717,11559,11560,11565],{},[1732,11561,11562],{},[1735,11563,11564],{},"udE_Pending",[1732,11566,11567],{},"A requested operation is pending.",[1717,11569,11570,11575],{},[1732,11571,11572],{},[1735,11573,11574],{},"udE_Cancelled",[1732,11576,11577],{},"The requested operation was cancelled (usually by the user).",[1717,11579,11580,11585],{},[1732,11581,11582],{},[1735,11583,11584],{},"udE_OutOfSync",[1732,11586,11587],{},"There is an inconsistency between the internal udSDK state and something external. This is usually because of a time difference between the local machine and a remote server.",[1717,11589,11590,11595],{},[1732,11591,11592],{},[1735,11593,11594],{},"udE_SessionExpired",[1732,11596,11597],{},"The udServer has terminated your session.",[1717,11599,11600,11605],{},[1732,11601,11602],{},[1735,11603,11604],{},"udE_ProxyError",[1732,11606,11607],{},"There was some issue with the provided proxy information (either a proxy is in the way or the provided proxy info wasn’t correct).",[1717,11609,11610,11615],{},[1732,11611,11612],{},[1735,11613,11614],{},"udE_ProxyAuthRequired",[1732,11616,11617],{},"A proxy has requested authentication.",[1717,11619,11620,11625],{},[1732,11621,11622],{},[1735,11623,11624],{},"udE_ExceededAllowedLimit",[1732,11626,11627],{},"The requested operation failed because it would exceed the allowed limits (generally used for exceeding server limits like number of projects).",[1717,11629,11630,11635],{},[1732,11631,11632],{},[1735,11633,11634],{},"udE_RateLimited",[1732,11636,11637],{},"This functionality is currently being rate limited or has exhausted a shared resource. Trying again later may be successful.",[1717,11639,11640,11645],{},[1732,11641,11642],{},[1735,11643,11644],{},"udE_PremiumOnly",[1732,11646,11647],{},"The requested operation failed because the current session is not for a premium user.",[1717,11649,11650,11655],{},[1732,11651,11652],{},[1735,11653,11654],{},"udE_InProgress",[1732,11656,11657],{},"The requested operation is currently in progress.",[1717,11659,11660,11665],{},[1732,11661,11662],{},[1735,11663,11664],{},"udE_DuplicateKey",[1732,11666,11667],{},"The unique key of the item submitted is already in use.",[1717,11669,11670,11675],{},[1732,11671,11672],{},[1735,11673,11674],{},"udE_Count",[1732,11676,11677],{},"Internally used to verify return values.",[1679,11679,11681],{"id":11680},"enum-udprogresstype","enum udProgressType",[1689,11683,11684],{},"These are the various progress types for the progress handler",[1689,11686,11687],{},[1742,11688,2707],{},[1711,11690,11691,11699],{},[1714,11692,11693],{},[1717,11694,11695,11697],{},[1720,11696,2716],{},[1720,11698,1725],{},[1727,11700,11701,11711,11721,11731,11741,11751,11761,11771],{},[1717,11702,11703,11708],{},[1732,11704,11705],{},[1735,11706,11707],{},"udProgressType_Pending",[1732,11709,11710],{},"The expected progress hasn’t started yet.",[1717,11712,11713,11718],{},[1732,11714,11715],{},[1735,11716,11717],{},"udProgressType_Complete",[1732,11719,11720],{},"Always updated at the end of the event (doesn’t not indicate success), this can be set during the process by sections (e.g. downloading might complete before the next step).",[1717,11722,11723,11728],{},[1732,11724,11725],{},[1735,11726,11727],{},"udProgressType_Parsing",[1732,11729,11730],{},"Something is being parsed\u002Fdecoded, etc. (at\u002Fof in Bytes).",[1717,11732,11733,11738],{},[1732,11734,11735],{},[1735,11736,11737],{},"udProgressType_Reading",[1732,11739,11740],{},"Something is being read in. (at\u002Fof are items).",[1717,11742,11743,11748],{},[1732,11744,11745],{},[1735,11746,11747],{},"udProgressType_Writing",[1732,11749,11750],{},"Something is being written to. (at\u002Fof are items).",[1717,11752,11753,11758],{},[1732,11754,11755],{},[1735,11756,11757],{},"udProgressType_Downloading",[1732,11759,11760],{},"A download is occuring. (at\u002Fof in Bytes).",[1717,11762,11763,11768],{},[1732,11764,11765],{},[1735,11766,11767],{},"udProgressType_Uploading",[1732,11769,11770],{},"An upload is occuring. (at\u002Fof in Bytes).",[1717,11772,11773,11778],{},[1732,11774,11775],{},[1735,11776,11777],{},"udProgressType_Count",[1732,11779,11780],{},"The total number of progress types in this enum.",[1674,11782,1677],{"id":1676},[1679,11784,11786],{"id":11785},"const-char-uderror_geterrorstringenum-uderror-errorcode","const char *udError_GetErrorString(enum udError errorCode)",[1689,11788,11789],{},"Gets the udError enum value as a string value.",[1711,11791,11792,11800],{},[1714,11793,11794],{},[1717,11795,11796,11798],{},[1720,11797,1722],{},[1720,11799,1725],{},[1727,11801,11802],{},[1717,11803,11804,11809],{},[1732,11805,11806],{},[1735,11807,11808],{},"errorCode",[1732,11810,11811],{},"The error code",[1689,11813,11814,11816],{},[3673,11815,3675],{}," A string representing the suppplied errorCode. This memory is owned by udSDK and does not need to be returned or freed and should not be modified",[1679,11818,11820],{"id":11819},"enum-uderror-udprogresscallbackvoid-pprogressuserdata-enum-udprogresstype-progresstype-int64_t-atposition-int64_t-ofcount","enum udError udProgressCallback(void *pProgressUserData, enum udProgressType progressType, int64_t atPosition, int64_t ofCount)",[1689,11822,11823],{},"Callback invoked on when the internal status is updated to provide user feedback",[1689,11825,11826,11827,11830,11831,11834,11835],{},"Examples: Download Initialised: ",[1735,11828,11829],{},"udProgressCallback(\"downloading\", 0, -1, NULL)"," When downloading a file: ",[1735,11832,11833],{},"udProgressCallback(\"downloading\", 123, 456, \"bytes\")"," While parsing: ",[1735,11836,11837],{},"udProgressCallback(\"parsing\", 6, 62, \"items\")",[1711,11839,11840,11848],{},[1714,11841,11842],{},[1717,11843,11844,11846],{},[1720,11845,1722],{},[1720,11847,1725],{},[1727,11849,11850,11860,11870,11880],{},[1717,11851,11852,11857],{},[1732,11853,11854],{},[1735,11855,11856],{},"pProgressUserData",[1732,11858,11859],{},"The pointer provided in the parent function, purely passthrough.",[1717,11861,11862,11867],{},[1732,11863,11864],{},[1735,11865,11866],{},"progressType",[1732,11868,11869],{},"The type of event that occurred",[1717,11871,11872,11877],{},[1732,11873,11874],{},[1735,11875,11876],{},"atPosition",[1732,11878,11879],{},"The index or count of the item being processed",[1717,11881,11882,11887],{},[1732,11883,11884],{},[1735,11885,11886],{},"ofCount",[1732,11888,11889],{},"The total count of the items being processes in the current state, 0 if unknown and -1 if this was a once off state change (e.g. moving to downloading)",[1689,11891,11892,11894],{},[3673,11893,3675],{}," A udError to indicate if the process should continue, most functions will cancel on anything except udE_Success but it’s function specific",{"title":2049,"searchDepth":2050,"depth":2050,"links":11896},[11897,11900,11904],{"id":11049,"depth":2050,"text":11050,"children":11898},[11899],{"id":11094,"depth":2055,"text":11095},{"id":2697,"depth":2050,"text":2698,"children":11901},[11902,11903],{"id":11103,"depth":2055,"text":11104},{"id":11680,"depth":2055,"text":11681},{"id":1676,"depth":2050,"text":1677,"children":11905},[11906,11907],{"id":11785,"depth":2055,"text":11786},{"id":11819,"depth":2055,"text":11820},{},"\u002Fguide\u002Fudsdk\u002Fuderror",{"title":1686,"description":11089},"guide\u002Fudsdk\u002FudError","C-iOrT5wDuEDBAsC2k3pqRhsuABgRpElKGzISeNv-yc",{"id":11914,"title":11915,"body":11916,"date":7,"description":12004,"extension":2064,"meta":12005,"navigation":43,"path":12006,"seo":12007,"stem":12008,"__hash__":12009},"udsdkguide\u002Fguide\u002Fudsdk\u002FudGeoProjection.md","udGeoProjection",{"type":1667,"value":11917,"toc":11996},[11918,11921,11927,11929,11935,11938,11945,11987,11993],[1670,11919,11915],{"id":11920},"udgeoprojection",[1689,11922,11923,11924],{},"udGeoProjection.h provides a udSDK wrapper for ",[1684,11925,11926],{"href":11926},"udGeoZone",[1674,11928,1677],{"id":1676},[1679,11930,1682,11932,11934],{"id":11931},"enum-uderror-udgeoprojection_loadzonesfromjsonconst-char-pjsonstr-int-ploaded-int-pfailed",[1684,11933,1686],{"href":1686}," udGeoProjection_LoadZonesFromJSON(const char *pJSONStr, int *pLoaded, int *pFailed)",[1689,11936,11937],{},"Loads a set of zones from a JSON file where each member is defined as “AUTHORITY:SRID” (eg. “EPSG:32756”)",[1693,11939,11940],{},[1689,11941,11942,11944],{},[1698,11943,1700],{},"\nudGeoProjection_UnloadZones needs to be called to free loaded zones. This function can be called multiple times to load more zones",[1711,11946,11947,11955],{},[1714,11948,11949],{},[1717,11950,11951,11953],{},[1720,11952,1722],{},[1720,11954,1725],{},[1727,11956,11957,11967,11977],{},[1717,11958,11959,11964],{},[1732,11960,11961],{},[1735,11962,11963],{},"pJSONStr",[1732,11965,11966],{},"A pointer to a JSON string that contains the new zones to load",[1717,11968,11969,11974],{},[1732,11970,11971],{},[1735,11972,11973],{},"pLoaded",[1732,11975,11976],{},"[optional] If non-null, will be set to the number of zones successfully loaded",[1717,11978,11979,11984],{},[1732,11980,11981],{},[1735,11982,11983],{},"pFailed",[1732,11985,11986],{},"[optional] If non-null, will be set to the number of zones that failed to load",[1679,11988,1682,11990,11992],{"id":11989},"enum-uderror-udgeoprojection_unloadzones",[1684,11991,1686],{"href":1686}," udGeoProjection_UnloadZones()",[1689,11994,11995],{},"Unloads all loaded zones (only needs to be called once to unload all previously loaded zones from udGeoProjection_LoadZonesFromJSON)",{"title":2049,"searchDepth":2050,"depth":2050,"links":11997},[11998],{"id":1676,"depth":2050,"text":1677,"children":11999},[12000,12002],{"id":11931,"depth":2055,"text":12001},"enum udError udGeoProjection_LoadZonesFromJSON(const char *pJSONStr, int *pLoaded, int *pFailed)",{"id":11989,"depth":2055,"text":12003},"enum udError udGeoProjection_UnloadZones()","udGeoProjection.h provides a udSDK wrapper for udGeoZone",{},"\u002Fguide\u002Fudsdk\u002Fudgeoprojection",{"title":11915,"description":12004},"guide\u002Fudsdk\u002FudGeoProjection","7mZTYTOWP_NZi2WXYJnoixyeP9AVqFeo4mQxcH3YaTk",{"id":12011,"title":11926,"body":12012,"date":7,"description":12019,"extension":2064,"meta":14611,"navigation":43,"path":14612,"seo":14613,"stem":14614,"__hash__":14615},"udsdkguide\u002Fguide\u002Fudsdk\u002FudGeoZone.md",{"type":1667,"value":12013,"toc":14565},[12014,12017,12020,12022,12026,12028,12032,12035,12039,12275,12279,12282,12286,12887,12891,12894,12898,13081,13083,13089,13091,13130,13137,13143,13146,13156,13162,13165,13207,13213,13219,13222,13254,13260,13266,13269,13299,13305,13311,13314,13321,13352,13358,13362,13365,13386,13392,13395,13444,13450,13456,13459,13505,13511,13517,13520,13560,13566,13572,13574,13612,13618,13624,13627,13679,13685,13691,13694,13746,13752,13758,13761,13810,13816,13822,13825,13832,13853,13859,13861,13865,13868,14356,14360,14363,14495,14499,14502],[1670,12015,11926],{"id":12016},"udgeozone",[1689,12018,12019],{},"udGeoZone.h provides support for transforming geodetic and cartesian coordinates",[1674,12021,11050],{"id":11049},[1679,12023,12025],{"id":12024},"udgeozone_setfromwkt","udGeoZone_SetFromWKT",[1674,12027,2698],{"id":2697},[1679,12029,12031],{"id":12030},"enum-udgeozoneellipsoid","enum udGeoZoneEllipsoid",[1689,12033,12034],{},"Supported udGeoZone ellipsoids",[1689,12036,12037],{},[1742,12038,2707],{},[1711,12040,12041,12049],{},[1714,12042,12043],{},[1717,12044,12045,12047],{},[1720,12046,2716],{},[1720,12048,1725],{},[1727,12050,12051,12061,12071,12081,12091,12101,12111,12121,12131,12141,12151,12161,12171,12181,12191,12201,12210,12219,12228,12237,12246,12256,12266],{},[1717,12052,12053,12058],{},[1732,12054,12055],{},[1735,12056,12057],{},"udGZE_WGS84",[1732,12059,12060],{},"EPSG:7030.",[1717,12062,12063,12068],{},[1732,12064,12065],{},[1735,12066,12067],{},"udGZE_Airy1830",[1732,12069,12070],{},"EPSG:7001.",[1717,12072,12073,12078],{},[1732,12074,12075],{},[1735,12076,12077],{},"udGZE_AiryModified",[1732,12079,12080],{},"EPSG:7002.",[1717,12082,12083,12088],{},[1732,12084,12085],{},[1735,12086,12087],{},"udGZE_Bessel1841",[1732,12089,12090],{},"EPSG:7004.",[1717,12092,12093,12098],{},[1732,12094,12095],{},[1735,12096,12097],{},"udGZE_BesselModified",[1732,12099,12100],{},"EPSG:7005.",[1717,12102,12103,12108],{},[1732,12104,12105],{},[1735,12106,12107],{},"udGZE_Clarke1866",[1732,12109,12110],{},"EPSG:7008.",[1717,12112,12113,12118],{},[1732,12114,12115],{},[1735,12116,12117],{},"udGZE_Clarke1880IGN",[1732,12119,12120],{},"EPSG:7011.",[1717,12122,12123,12128],{},[1732,12124,12125],{},[1735,12126,12127],{},"udGZE_GRS80",[1732,12129,12130],{},"EPSG:7019.",[1717,12132,12133,12138],{},[1732,12134,12135],{},[1735,12136,12137],{},"udGZE_Intl1924",[1732,12139,12140],{},"EPSG:7022 (Same numbers as Hayford).",[1717,12142,12143,12148],{},[1732,12144,12145],{},[1735,12146,12147],{},"udGZE_WGS72",[1732,12149,12150],{},"EPSG:7043.",[1717,12152,12153,12158],{},[1732,12154,12155],{},[1735,12156,12157],{},"udGZE_CGCS2000",[1732,12159,12160],{},"EPSG:1024.",[1717,12162,12163,12168],{},[1732,12164,12165],{},[1735,12166,12167],{},"udGZE_Clarke1858",[1732,12169,12170],{},"EPSG:7007.",[1717,12172,12173,12178],{},[1732,12174,12175],{},[1735,12176,12177],{},"udGZE_Clarke1880FOOT",[1732,12179,12180],{},"EPSG:7055.",[1717,12182,12183,12188],{},[1732,12184,12185],{},[1735,12186,12187],{},"udGZE_Krassowsky1940",[1732,12189,12190],{},"EPSG:7024.",[1717,12192,12193,12198],{},[1732,12194,12195],{},[1735,12196,12197],{},"udGZE_Everest1930M",[1732,12199,12200],{},"EPSG:7018.",[1717,12202,12203,12208],{},[1732,12204,12205],{},[1735,12206,12207],{},"udGZE_Mars",[1732,12209],{},[1717,12211,12212,12217],{},[1732,12213,12214],{},[1735,12215,12216],{},"udGZE_Moon",[1732,12218],{},[1717,12220,12221,12226],{},[1732,12222,12223],{},[1735,12224,12225],{},"udGZE_IAG1975",[1732,12227],{},[1717,12229,12230,12235],{},[1732,12231,12232],{},[1735,12233,12234],{},"udGZE_Everest1830",[1732,12236],{},[1717,12238,12239,12244],{},[1732,12240,12241],{},[1735,12242,12243],{},"udGZE_GRS67",[1732,12245],{},[1717,12247,12248,12253],{},[1732,12249,12250],{},[1735,12251,12252],{},"udGZE_ANS",[1732,12254,12255],{},"EPSG:7003.",[1717,12257,12258,12263],{},[1732,12259,12260],{},[1735,12261,12262],{},"udGZE_INS",[1732,12264,12265],{},"EPSG:7021.",[1717,12267,12268,12273],{},[1732,12269,12270],{},[1735,12271,12272],{},"udGZE_Count",[1732,12274],{},[1679,12276,12278],{"id":12277},"enum-udgeozonegeodeticdatum","enum udGeoZoneGeodeticDatum",[1689,12280,12281],{},"Supported udGeoZone geodetic datums",[1689,12283,12284],{},[1742,12285,2707],{},[1711,12287,12288,12296],{},[1714,12289,12290],{},[1717,12291,12292,12294],{},[1720,12293,2716],{},[1720,12295,1725],{},[1727,12297,12298,12308,12318,12328,12338,12348,12358,12368,12378,12388,12398,12408,12418,12428,12438,12448,12458,12468,12478,12488,12498,12508,12518,12528,12538,12548,12558,12568,12578,12588,12598,12608,12618,12628,12638,12648,12658,12668,12678,12688,12698,12708,12718,12728,12738,12748,12758,12768,12778,12788,12798,12808,12818,12828,12838,12848,12858,12868,12878],{},[1717,12299,12300,12305],{},[1732,12301,12302],{},[1735,12303,12304],{},"udGZGD_WGS84",[1732,12306,12307],{},"EPSG:4326.",[1717,12309,12310,12315],{},[1732,12311,12312],{},[1735,12313,12314],{},"udGZGD_ED50",[1732,12316,12317],{},"EPSG:4230.",[1717,12319,12320,12325],{},[1732,12321,12322],{},[1735,12323,12324],{},"udGZGD_ETRS89",[1732,12326,12327],{},"EPSG:4258,4936.",[1717,12329,12330,12335],{},[1732,12331,12332],{},[1735,12333,12334],{},"udGZGD_TM75",[1732,12336,12337],{},"EPSG:4300.",[1717,12339,12340,12345],{},[1732,12341,12342],{},[1735,12343,12344],{},"udGZGD_NAD27",[1732,12346,12347],{},"EPSG:4267.",[1717,12349,12350,12355],{},[1732,12351,12352],{},[1735,12353,12354],{},"udGZGD_NAD27CGQ77",[1732,12356,12357],{},"EPSG:4609.",[1717,12359,12360,12365],{},[1732,12361,12362],{},[1735,12363,12364],{},"udGZGD_NAD83",[1732,12366,12367],{},"EPSG:4269.",[1717,12369,12370,12375],{},[1732,12371,12372],{},[1735,12373,12374],{},"udGZGD_NAD83_1996",[1732,12376,12377],{},"EPSG:6307.",[1717,12379,12380,12385],{},[1732,12381,12382],{},[1735,12383,12384],{},"udGZGD_NAD83_CSRS",[1732,12386,12387],{},"EPSG:2955.",[1717,12389,12390,12395],{},[1732,12391,12392],{},[1735,12393,12394],{},"udGZGD_NAD83_NSRS2007",[1732,12396,12397],{},"EPSG:3465.",[1717,12399,12400,12405],{},[1732,12401,12402],{},[1735,12403,12404],{},"udGZGD_NAD83_2011",[1732,12406,12407],{},"EPSG:6318.",[1717,12409,12410,12415],{},[1732,12411,12412],{},[1735,12413,12414],{},"udGZGD_NTF",[1732,12416,12417],{},"EPSG:4275.",[1717,12419,12420,12425],{},[1732,12421,12422],{},[1735,12423,12424],{},"udGZGD_OSGB36",[1732,12426,12427],{},"EPSG:4277.",[1717,12429,12430,12435],{},[1732,12431,12432],{},[1735,12433,12434],{},"udGZGD_Potsdam",[1732,12436,12437],{},"EPSG:4746.",[1717,12439,12440,12445],{},[1732,12441,12442],{},[1735,12443,12444],{},"udGZGD_Tokyo",[1732,12446,12447],{},"EPSG:7414.",[1717,12449,12450,12455],{},[1732,12451,12452],{},[1735,12453,12454],{},"udGZGD_WGS72",[1732,12456,12457],{},"EPSG:4322.",[1717,12459,12460,12465],{},[1732,12461,12462],{},[1735,12463,12464],{},"udGZGD_JGD2000",[1732,12466,12467],{},"EPSG:4612.",[1717,12469,12470,12475],{},[1732,12471,12472],{},[1735,12473,12474],{},"udGZGD_JGD2011",[1732,12476,12477],{},"EPSG:6668.",[1717,12479,12480,12485],{},[1732,12481,12482],{},[1735,12483,12484],{},"udGZGD_GDA94",[1732,12486,12487],{},"EPSG:4283.",[1717,12489,12490,12495],{},[1732,12491,12492],{},[1735,12493,12494],{},"udGZGD_GDA2020",[1732,12496,12497],{},"EPSG:7844.",[1717,12499,12500,12505],{},[1732,12501,12502],{},[1735,12503,12504],{},"udGZGD_RGF93",[1732,12506,12507],{},"EPSG:4171.",[1717,12509,12510,12515],{},[1732,12511,12512],{},[1735,12513,12514],{},"udGZGD_NAD83_HARN",[1732,12516,12517],{},"EPSG:4152.",[1717,12519,12520,12525],{},[1732,12521,12522],{},[1735,12523,12524],{},"udGZGD_CGCS2000",[1732,12526,12527],{},"EPSG:4490.",[1717,12529,12530,12535],{},[1732,12531,12532],{},[1735,12533,12534],{},"udGZGD_HK1980",[1732,12536,12537],{},"EPSG:4611.",[1717,12539,12540,12545],{},[1732,12541,12542],{},[1735,12543,12544],{},"udGZGD_SVY21",[1732,12546,12547],{},"EPSG:4757.",[1717,12549,12550,12555],{},[1732,12551,12552],{},[1735,12553,12554],{},"udGZGD_MGI",[1732,12556,12557],{},"EPSG:6312.",[1717,12559,12560,12565],{},[1732,12561,12562],{},[1735,12563,12564],{},"udGZGD_NZGD2000",[1732,12566,12567],{},"EPSG:2193.",[1717,12569,12570,12575],{},[1732,12571,12572],{},[1735,12573,12574],{},"udGZGD_AMERSFOORT",[1732,12576,12577],{},"EPSG:28992.",[1717,12579,12580,12585],{},[1732,12581,12582],{},[1735,12583,12584],{},"udGZGD_TRI1903",[1732,12586,12587],{},"EPSG:30200.",[1717,12589,12590,12595],{},[1732,12591,12592],{},[1735,12593,12594],{},"udGZGD_VANUA1915",[1732,12596,12597],{},"EPSG:3139.",[1717,12599,12600,12605],{},[1732,12601,12602],{},[1735,12603,12604],{},"udGZGD_DEALUL1970",[1732,12606,12607],{},"EPSG:31700.",[1717,12609,12610,12615],{},[1732,12611,12612],{},[1735,12613,12614],{},"udGZGD_SINGGRID",[1732,12616,12617],{},"EPSG:19920.",[1717,12619,12620,12625],{},[1732,12621,12622],{},[1735,12623,12624],{},"udGZGD_MARS_MERC",[1732,12626,12627],{},"EPSG:49974,49975.",[1717,12629,12630,12635],{},[1732,12631,12632],{},[1735,12633,12634],{},"udGZGD_MARS_PCPF",[1732,12636,12637],{},"EPSG:8705.",[1717,12639,12640,12645],{},[1732,12641,12642],{},[1735,12643,12644],{},"udGZGD_MOON_MERC",[1732,12646,12647],{},"EPSG:30174,30175.",[1717,12649,12650,12655],{},[1732,12651,12652],{},[1735,12653,12654],{},"udGZGD_MOON_PCPF",[1732,12656,12657],{},"EPSG:30100,30100.",[1717,12659,12660,12665],{},[1732,12661,12662],{},[1735,12663,12664],{},"udGZGD_DBREF",[1732,12666,12667],{},"EPSG:5681.",[1717,12669,12670,12675],{},[1732,12671,12672],{},[1735,12673,12674],{},"udGZGD_DHDN",[1732,12676,12677],{},"EPSG:4314.",[1717,12679,12680,12685],{},[1732,12681,12682],{},[1735,12683,12684],{},"udGZGD_SJTSK03",[1732,12686,12687],{},"EPSG:8353.",[1717,12689,12690,12695],{},[1732,12691,12692],{},[1735,12693,12694],{},"udGZGD_PULK1942",[1732,12696,12697],{},"EPSG:4284.",[1717,12699,12700,12705],{},[1732,12701,12702],{},[1735,12703,12704],{},"udGZGD_PULK194258",[1732,12706,12707],{},"EPSG:4179.",[1717,12709,12710,12715],{},[1732,12711,12712],{},[1735,12713,12714],{},"udGZGD_PULK194283",[1732,12716,12717],{},"EPSG:4178.",[1717,12719,12720,12725],{},[1732,12721,12722],{},[1735,12723,12724],{},"udGZGD_PULK1995",[1732,12726,12727],{},"EPSG:20004.",[1717,12729,12730,12735],{},[1732,12731,12732],{},[1735,12733,12734],{},"udGZGD_WGS_72BE",[1732,12736,12737],{},"EPSG:32401.",[1717,12739,12740,12745],{},[1732,12741,12742],{},[1735,12743,12744],{},"udGZGD_BEIJING1954",[1732,12746,12747],{},"EPSG:21413.",[1717,12749,12750,12755],{},[1732,12751,12752],{},[1735,12753,12754],{},"udGZGD_NEWBEIJING",[1732,12756,12757],{},"EPSG:4555.",[1717,12759,12760,12765],{},[1732,12761,12762],{},[1735,12763,12764],{},"udGZGD_XIAN1980",[1732,12766,12767],{},"EPSG:4610.",[1717,12769,12770,12775],{},[1732,12771,12772],{},[1735,12773,12774],{},"udGZGD_TIMB1948",[1732,12776,12777],{},"EPSG:28973.",[1717,12779,12780,12785],{},[1732,12781,12782],{},[1735,12783,12784],{},"udGZGD_NZGD49",[1732,12786,12787],{},"EPSG:4272.",[1717,12789,12790,12795],{},[1732,12791,12792],{},[1735,12793,12794],{},"udGZGD_SWEREF99",[1732,12796,12797],{},"EPSG:4619.",[1717,12799,12800,12805],{},[1732,12801,12802],{},[1735,12803,12804],{},"udGZGD_SAD69",[1732,12806,12807],{},"EPSG:4291.",[1717,12809,12810,12815],{},[1732,12811,12812],{},[1735,12813,12814],{},"udGZGD_GR96",[1732,12816,12817],{},"EPSG:4747.",[1717,12819,12820,12825],{},[1732,12821,12822],{},[1735,12823,12824],{},"udGZGD_DGN95",[1732,12826,12827],{},"EPSG:4755.",[1717,12829,12830,12835],{},[1732,12831,12832],{},[1735,12833,12834],{},"udGZGD_UCS2000",[1732,12836,12837],{},"EPSG:5561.",[1717,12839,12840,12845],{},[1732,12841,12842],{},[1735,12843,12844],{},"udGZGD_H94",[1732,12846,12847],{},"EPSG:4148.",[1717,12849,12850,12855],{},[1732,12851,12852],{},[1735,12853,12854],{},"udGZGD_ID74",[1732,12856,12857],{},"EPSG:4238.",[1717,12859,12860,12865],{},[1732,12861,12862],{},[1735,12863,12864],{},"udGZGD_NGO1948",[1732,12866,12867],{},"EPSG:4273.",[1717,12869,12870,12875],{},[1732,12871,12872],{},[1735,12873,12874],{},"udGZGD_RGF93v2b",[1732,12876,12877],{},"EPSG:9782.",[1717,12879,12880,12885],{},[1732,12881,12882],{},[1735,12883,12884],{},"udGZGD_Count",[1732,12886],{},[1679,12888,12890],{"id":12889},"enum-udgeozoneprojectiontype","enum udGeoZoneProjectionType",[1689,12892,12893],{},"Supported udGeoZone projection types",[1689,12895,12896],{},[1742,12897,2707],{},[1711,12899,12900,12908],{},[1714,12901,12902],{},[1717,12903,12904,12906],{},[1720,12905,2716],{},[1720,12907,1725],{},[1727,12909,12910,12919,12928,12937,12946,12955,12964,12973,12982,12991,13000,13009,13018,13027,13036,13045,13054,13063,13072],{},[1717,12911,12912,12917],{},[1732,12913,12914],{},[1735,12915,12916],{},"udGZPT_Unknown",[1732,12918],{},[1717,12920,12921,12926],{},[1732,12922,12923],{},[1735,12924,12925],{},"udGZPT_ECEF",[1732,12927],{},[1717,12929,12930,12935],{},[1732,12931,12932],{},[1735,12933,12934],{},"udGZPT_LongLat",[1732,12936],{},[1717,12938,12939,12944],{},[1732,12940,12941],{},[1735,12942,12943],{},"udGZPT_LatLong",[1732,12945],{},[1717,12947,12948,12953],{},[1732,12949,12950],{},[1735,12951,12952],{},"udGZPT_TransverseMercator",[1732,12954],{},[1717,12956,12957,12962],{},[1732,12958,12959],{},[1735,12960,12961],{},"udGZPT_LambertConformalConic2SP",[1732,12963],{},[1717,12965,12966,12971],{},[1732,12967,12968],{},[1735,12969,12970],{},"udGZPT_WebMercator",[1732,12972],{},[1717,12974,12975,12980],{},[1732,12976,12977],{},[1735,12978,12979],{},"udGZPT_CassiniSoldner",[1732,12981],{},[1717,12983,12984,12989],{},[1732,12985,12986],{},[1735,12987,12988],{},"udGZPT_CassiniSoldnerHyperbolic",[1732,12990],{},[1717,12992,12993,12998],{},[1732,12994,12995],{},[1735,12996,12997],{},"udGZPT_SterographicObliqueNEquatorial",[1732,12999],{},[1717,13001,13002,13007],{},[1732,13003,13004],{},[1735,13005,13006],{},"udGZPT_SterographicPolar_vB",[1732,13008],{},[1717,13010,13011,13016],{},[1732,13012,13013],{},[1735,13014,13015],{},"udGZPT_Mercator",[1732,13017],{},[1717,13019,13020,13025],{},[1732,13021,13022],{},[1735,13023,13024],{},"udGZPT_Krovak",[1732,13026],{},[1717,13028,13029,13034],{},[1732,13030,13031],{},[1735,13032,13033],{},"udGZPT_KrovakNorthOrientated",[1732,13035],{},[1717,13037,13038,13043],{},[1732,13039,13040],{},[1735,13041,13042],{},"udGZPT_HotineObliqueMercatorvA",[1732,13044],{},[1717,13046,13047,13052],{},[1732,13048,13049],{},[1735,13050,13051],{},"udGZPT_HotineObliqueMercatorvB",[1732,13053],{},[1717,13055,13056,13061],{},[1732,13057,13058],{},[1735,13059,13060],{},"udGZPT_AlbersEqualArea",[1732,13062],{},[1717,13064,13065,13070],{},[1732,13066,13067],{},[1735,13068,13069],{},"udGZPT_EquidistantCylindrical",[1732,13071],{},[1717,13073,13074,13079],{},[1732,13075,13076],{},[1735,13077,13078],{},"udGZPT_Count",[1732,13080],{},[1674,13082,1677],{"id":1676},[1679,13084,1682,13086,13088],{"id":13085},"enum-uderror-udgeozone_loadzonesfromjsonconst-char-pjsonstr-int-ploaded-int-pfailed",[1684,13087,1686],{"href":1686}," udGeoZone_LoadZonesFromJSON(const char *pJSONStr, int *pLoaded, int *pFailed)",[1689,13090,11937],{},[1711,13092,13093,13101],{},[1714,13094,13095],{},[1717,13096,13097,13099],{},[1720,13098,1722],{},[1720,13100,1725],{},[1727,13102,13103,13112,13121],{},[1717,13104,13105,13109],{},[1732,13106,13107],{},[1735,13108,11963],{},[1732,13110,13111],{},"A JSON-formatted string containing all the zones",[1717,13113,13114,13118],{},[1732,13115,13116],{},[1735,13117,11973],{},[1732,13119,13120],{},"Pointer to an integer that has the count of zones successfully loaded",[1717,13122,13123,13127],{},[1732,13124,13125],{},[1735,13126,11983],{},[1732,13128,13129],{},"Pointer to an integer that has the count of zones unsuccessfully loaded",[1689,13131,13132,3676,13134,13136],{},[3673,13133,3675],{},[1684,13135,1686],{"href":1686}," code",[1679,13138,1682,13140,13142],{"id":13139},"enum-uderror-udgeozone_unloadzones",[1684,13141,1686],{"href":1686}," udGeoZone_UnloadZones()",[1689,13144,13145],{},"Unloads all loaded zones (only needs to be called once to unload all)",[2084,13147,13148],{},[2087,13149,13150,13152,13153,13155],{},[3673,13151,3675],{},"\nA ",[1684,13154,1686],{"href":1686}," code, typically udE_Success",[1679,13157,1682,13159,13161],{"id":13158},"enum-uderror-udgeozone_findsridint32_t-psridcode-const-uddouble3-platlong-enum-udgeozonegeodeticdatum-datum",[1684,13160,1686],{"href":1686}," udGeoZone_FindSRID(int32_t *pSRIDCode, const udDouble3 *pLatLong, enum udGeoZoneGeodeticDatum datum)",[1689,13163,13164],{},"Find an appropriate SRID code for a given lat\u002Flong within UTM\u002FWGS84 (for example using datum udGZGD_WGS84)",[1711,13166,13167,13175],{},[1714,13168,13169],{},[1717,13170,13171,13173],{},[1720,13172,1722],{},[1720,13174,1725],{},[1727,13176,13177,13187,13197],{},[1717,13178,13179,13184],{},[1732,13180,13181],{},[1735,13182,13183],{},"pSRIDCode",[1732,13185,13186],{},"A pointer to which the SRID code is written upon success",[1717,13188,13189,13194],{},[1732,13190,13191],{},[1735,13192,13193],{},"pLatLong",[1732,13195,13196],{},"A pointer to a udDouble3 where x is the latitude, y is the longitude (z is ignored)",[1717,13198,13199,13204],{},[1732,13200,13201],{},[1735,13202,13203],{},"datum",[1732,13205,13206],{},"The geodetic datum (normally udGZGD_WGS84)",[1689,13208,13209,3676,13211,13136],{},[3673,13210,3675],{},[1684,13212,1686],{"href":1686},[1679,13214,1682,13216,13218],{"id":13215},"enum-uderror-udgeozone_setfromsridstruct-udgeozone-pzone-int32_t-sridcode",[1684,13217,1686],{"href":1686}," udGeoZone_SetFromSRID(struct udGeoZone *pZone, int32_t sridCode)",[1689,13220,13221],{},"Set the zone structure parameters from a given srid code",[1711,13223,13224,13232],{},[1714,13225,13226],{},[1717,13227,13228,13230],{},[1720,13229,1722],{},[1720,13231,1725],{},[1727,13233,13234,13244],{},[1717,13235,13236,13241],{},[1732,13237,13238],{},[1735,13239,13240],{},"pZone",[1732,13242,13243],{},"A udGeoZone structure that will be overwritten with parameters for the given sridCode",[1717,13245,13246,13251],{},[1732,13247,13248],{},[1735,13249,13250],{},"sridCode",[1732,13252,13253],{},"The sridCode for the desired zone",[1689,13255,13256,3676,13258,13136],{},[3673,13257,3675],{},[1684,13259,1686],{"href":1686},[1679,13261,1682,13263,13265],{"id":13262},"enum-uderror-udgeozone_setfromwellknowntextstruct-udgeozone-pzone-const-char-pwkt",[1684,13264,1686],{"href":1686}," udGeoZone_SetFromWellKnownText(struct udGeoZone *pZone, const char *pWKT)",[1689,13267,13268],{},"Initialise a geozone structure from well known text",[1711,13270,13271,13279],{},[1714,13272,13273],{},[1717,13274,13275,13277],{},[1720,13276,1722],{},[1720,13278,1725],{},[1727,13280,13281,13290],{},[1717,13282,13283,13287],{},[1732,13284,13285],{},[1735,13286,13240],{},[1732,13288,13289],{},"A udGeoZone structure that will be overwritten with parameters taken from the supplied Well Known Text",[1717,13291,13292,13296],{},[1732,13293,13294],{},[1735,13295,8377],{},[1732,13297,13298],{},"A Well Known Text formatted string",[1689,13300,13301,3676,13303,13136],{},[3673,13302,3675],{},[1684,13304,1686],{"href":1686},[1679,13306,1682,13308,13310],{"id":13307},"enum-uderror-udgeozone_getwellknowntextconst-char-ppwkt-const-struct-udgeozone-pzone",[1684,13309,1686],{"href":1686}," udGeoZone_GetWellKnownText(const char **ppWKT, const struct udGeoZone *pZone)",[1689,13312,13313],{},"Get the Well Known Text for a zone",[1693,13315,13316],{},[1689,13317,13318,13320],{},[1698,13319,1700],{},"\nThe Well Known Text must be freed using udGeoZone_FreeWellKnownText",[1711,13322,13323,13331],{},[1714,13324,13325],{},[1717,13326,13327,13329],{},[1720,13328,1722],{},[1720,13330,1725],{},[1727,13332,13333,13343],{},[1717,13334,13335,13340],{},[1732,13336,13337],{},[1735,13338,13339],{},"ppWKT",[1732,13341,13342],{},"A pointer to a string pointer that will be assigned with an allocated WKT string for the given zone",[1717,13344,13345,13349],{},[1732,13346,13347],{},[1735,13348,13240],{},[1732,13350,13351],{},"A valid udGeoZone structure used to generate the Well Known Text",[1689,13353,13354,3676,13356,13136],{},[3673,13355,3675],{},[1684,13357,1686],{"href":1686},[1679,13359,13361],{"id":13360},"void-udgeozone_freewellknowntextconst-char-ppwkt","void udGeoZone_FreeWellKnownText(const char **ppWKT)",[1689,13363,13364],{},"Free the Well Known Text returned by udGeoZone_GetWellKnownText",[1711,13366,13367,13375],{},[1714,13368,13369],{},[1717,13370,13371,13373],{},[1720,13372,1722],{},[1720,13374,1725],{},[1727,13376,13377],{},[1717,13378,13379,13383],{},[1732,13380,13381],{},[1735,13382,13339],{},[1732,13384,13385],{},"A pointer to a string pointer that was returned by udGeoZone_GetWellKnownText",[1679,13387,1682,13389,13391],{"id":13388},"enum-uderror-udgeozone_latlongtocartesianuddouble3-pcartesian-const-struct-udgeozone-pzone-const-uddouble3-platlong-enum-udgeozonegeodeticdatum-datum",[1684,13390,1686],{"href":1686}," udGeoZone_LatLongToCartesian(udDouble3 *pCartesian, const struct udGeoZone *pZone, const udDouble3 *pLatLong, enum udGeoZoneGeodeticDatum datum)",[1689,13393,13394],{},"Convert a point from lat\u002Flong to the cartesian coordinate system defined by the zone",[1711,13396,13397,13405],{},[1714,13398,13399],{},[1717,13400,13401,13403],{},[1720,13402,1722],{},[1720,13404,1725],{},[1727,13406,13407,13417,13426,13435],{},[1717,13408,13409,13414],{},[1732,13410,13411],{},[1735,13412,13413],{},"pCartesian",[1732,13415,13416],{},"A pointer to a udDouble3 overwritten with the cartesian value of the transformed LatLong",[1717,13418,13419,13423],{},[1732,13420,13421],{},[1735,13422,13240],{},[1732,13424,13425],{},"A valid udGeoZone defining the coordinate system",[1717,13427,13428,13432],{},[1732,13429,13430],{},[1735,13431,13193],{},[1732,13433,13434],{},"A pointer to a udDouble3 containing the Latitude in x, Longitude in y, and altitude in Z",[1717,13436,13437,13441],{},[1732,13438,13439],{},[1735,13440,13203],{},[1732,13442,13443],{},"The geodetic datum for the latlong coordinates, typically udGZGD_WGS84",[1689,13445,13446,3676,13448,13136],{},[3673,13447,3675],{},[1684,13449,1686],{"href":1686},[1679,13451,1682,13453,13455],{"id":13452},"enum-uderror-udgeozone_cartesiantolatlonguddouble3-platlong-const-struct-udgeozone-pzone-const-uddouble3-pposition-enum-udgeozonegeodeticdatum-datum",[1684,13454,1686],{"href":1686}," udGeoZone_CartesianToLatLong(udDouble3 *pLatLong, const struct udGeoZone *pZone, const udDouble3 *pPosition, enum udGeoZoneGeodeticDatum datum)",[1689,13457,13458],{},"Convert a point from the cartesian coordinate system defined by the zone to lat\u002Flong",[1711,13460,13461,13469],{},[1714,13462,13463],{},[1717,13464,13465,13467],{},[1720,13466,1722],{},[1720,13468,1725],{},[1727,13470,13471,13480,13488,13497],{},[1717,13472,13473,13477],{},[1732,13474,13475],{},[1735,13476,13193],{},[1732,13478,13479],{},"A pointer to a udDouble3 overwritten with the transformed Latitude in x, Longitude in y, and altitude in Z",[1717,13481,13482,13486],{},[1732,13483,13484],{},[1735,13485,13240],{},[1732,13487,13425],{},[1717,13489,13490,13494],{},[1732,13491,13492],{},[1735,13493,13413],{},[1732,13495,13496],{},"A pointer to a udDouble3 containing the cartesian coordinates",[1717,13498,13499,13503],{},[1732,13500,13501],{},[1735,13502,13203],{},[1732,13504,13443],{},[1689,13506,13507,3676,13509,13136],{},[3673,13508,3675],{},[1684,13510,1686],{"href":1686},[1679,13512,1682,13514,13516],{"id":13513},"enum-uderror-udgeozone_latlongtogeocentricuddouble3-pgeocentric-const-uddouble3-platlong-const-struct-udgeozoneellipsoidinfo-pellipsoid",[1684,13515,1686],{"href":1686}," udGeoZone_LatLongToGeocentric(udDouble3 *pGeocentric, const udDouble3 *pLatLong, const struct udGeoZoneEllipsoidInfo *pEllipsoid)",[1689,13518,13519],{},"Conversion to and from Geocentric",[1711,13521,13522,13530],{},[1714,13523,13524],{},[1717,13525,13526,13528],{},[1720,13527,1722],{},[1720,13529,1725],{},[1727,13531,13532,13542,13550],{},[1717,13533,13534,13539],{},[1732,13535,13536],{},[1735,13537,13538],{},"pGeocentric",[1732,13540,13541],{},"A pointer to a udDouble3 overwritten with the transformed geocentric coordinates",[1717,13543,13544,13548],{},[1732,13545,13546],{},[1735,13547,13193],{},[1732,13549,13434],{},[1717,13551,13552,13557],{},[1732,13553,13554],{},[1735,13555,13556],{},"pEllipsoid",[1732,13558,13559],{},"The ellipsoid parameters as specified in the datum",[1689,13561,13562,3676,13564,13136],{},[3673,13563,3675],{},[1684,13565,1686],{"href":1686},[1679,13567,1682,13569,13571],{"id":13568},"enum-uderror-udgeozone_geocentrictolatlonguddouble3-platlong-const-uddouble3-pgeocentric-const-struct-udgeozoneellipsoidinfo-pellipsoid",[1684,13570,1686],{"href":1686}," udGeoZone_GeocentricToLatLong(udDouble3 *pLatLong, const udDouble3 *pGeoCentric, const struct udGeoZoneEllipsoidInfo *pEllipsoid)",[1689,13573,13519],{},[1711,13575,13576,13584],{},[1714,13577,13578],{},[1717,13579,13580,13582],{},[1720,13581,1722],{},[1720,13583,1725],{},[1727,13585,13586,13595,13604],{},[1717,13587,13588,13592],{},[1732,13589,13590],{},[1735,13591,13193],{},[1732,13593,13594],{},"A pointer to a udDouble3 with the Latitude in x, Longitude in y, and altitude in Z",[1717,13596,13597,13601],{},[1732,13598,13599],{},[1735,13600,13538],{},[1732,13602,13603],{},"A pointer to a udDouble3 containing the geocentric coordinates",[1717,13605,13606,13610],{},[1732,13607,13608],{},[1735,13609,13556],{},[1732,13611,13559],{},[1689,13613,13614,3676,13616,13136],{},[3673,13615,3675],{},[1684,13617,1686],{"href":1686},[1679,13619,1682,13621,13623],{"id":13620},"enum-uderror-udgeozone_convertdatumuddouble3-poutlatlong-const-uddouble3-pinlatlong-enum-udgeozonegeodeticdatum-currentdatum-enum-udgeozonegeodeticdatum-newdatum",[1684,13622,1686],{"href":1686}," udGeoZone_ConvertDatum(udDouble3 *pOutLatLong, const udDouble3 *pInLatLong, enum udGeoZoneGeodeticDatum currentDatum, enum udGeoZoneGeodeticDatum newDatum)",[1689,13625,13626],{},"Convert a lat\u002Flong pair in one datum to another datum",[1711,13628,13629,13637],{},[1714,13630,13631],{},[1717,13632,13633,13635],{},[1720,13634,1722],{},[1720,13636,1725],{},[1727,13638,13639,13649,13659,13669],{},[1717,13640,13641,13646],{},[1732,13642,13643],{},[1735,13644,13645],{},"pOutLatLong",[1732,13647,13648],{},"A pointer to a udDouble3 with the output Latitude in x, Longitude in y, and altitude in Z",[1717,13650,13651,13656],{},[1732,13652,13653],{},[1735,13654,13655],{},"pInLatLong",[1732,13657,13658],{},"A pointer to a udDouble3 with the input Latitude in x, Longitude in y, and altitude in Z",[1717,13660,13661,13666],{},[1732,13662,13663],{},[1735,13664,13665],{},"currentDatum",[1732,13667,13668],{},"The datum that the pInLatLong references",[1717,13670,13671,13676],{},[1732,13672,13673],{},[1735,13674,13675],{},"newDatum",[1732,13677,13678],{},"The datum that the pOutLatLong references",[1689,13680,13681,3676,13683,13136],{},[3673,13682,3675],{},[1684,13684,1686],{"href":1686},[1679,13686,1682,13688,13690],{"id":13687},"enum-uderror-udgeozone_transformpointuddouble3-ptransformed-const-uddouble3-ppoint-const-struct-udgeozone-psourcezone-const-struct-udgeozone-pdestzone",[1684,13689,1686],{"href":1686}," udGeoZone_TransformPoint(udDouble3 *pTransformed, const udDouble3 *pPoint, const struct udGeoZone *pSourceZone, const struct udGeoZone *pDestZone)",[1689,13692,13693],{},"Transform a point from one zone to another",[1711,13695,13696,13704],{},[1714,13697,13698],{},[1717,13699,13700,13702],{},[1720,13701,1722],{},[1720,13703,1725],{},[1727,13705,13706,13716,13726,13736],{},[1717,13707,13708,13713],{},[1732,13709,13710],{},[1735,13711,13712],{},"pTransformed",[1732,13714,13715],{},"A pointer to a udDouble3 with the output transformed coordinates, which may be cartesian or latlong depending on the destination zone",[1717,13717,13718,13723],{},[1732,13719,13720],{},[1735,13721,13722],{},"pPoint",[1732,13724,13725],{},"A pointer to a udDouble3 with the input coordinates, which may be cartesian or latlong depending on the source zone",[1717,13727,13728,13733],{},[1732,13729,13730],{},[1735,13731,13732],{},"pSourceZone",[1732,13734,13735],{},"The zone that pPoint references",[1717,13737,13738,13743],{},[1732,13739,13740],{},[1735,13741,13742],{},"pDestZone",[1732,13744,13745],{},"The zone the point is transformed to, which pTransformed references",[1689,13747,13748,3676,13750,13136],{},[3673,13749,3675],{},[1684,13751,1686],{"href":1686},[1679,13753,1682,13755,13757],{"id":13754},"enum-uderror-udgeozone_transformmatrixuddouble4x4-ptransformed-const-uddouble4x4-pmatrix-const-struct-udgeozone-psourcezone-const-struct-udgeozone-pdestzone",[1684,13756,1686],{"href":1686}," udGeoZone_TransformMatrix(udDouble4x4 *pTransformed, const udDouble4x4 *pMatrix, const struct udGeoZone *pSourceZone, const struct udGeoZone *pDestZone)",[1689,13759,13760],{},"Transform a matrix from one zone to another",[1711,13762,13763,13771],{},[1714,13764,13765],{},[1717,13766,13767,13769],{},[1720,13768,1722],{},[1720,13770,1725],{},[1727,13772,13773,13782,13792,13801],{},[1717,13774,13775,13779],{},[1732,13776,13777],{},[1735,13778,13712],{},[1732,13780,13781],{},"A pointer to a matrix that has been transformed to the destination zone",[1717,13783,13784,13789],{},[1732,13785,13786],{},[1735,13787,13788],{},"pMatrix",[1732,13790,13791],{},"A pointer to a matrix that is in the source zone coordinate system",[1717,13793,13794,13798],{},[1732,13795,13796],{},[1735,13797,13732],{},[1732,13799,13800],{},"The zone that pMatrix references",[1717,13802,13803,13807],{},[1732,13804,13805],{},[1735,13806,13742],{},[1732,13808,13809],{},"The zone that pTransformed references",[1689,13811,13812,3676,13814,13136],{},[3673,13813,3675],{},[1684,13815,1686],{"href":1686},[1679,13817,1682,13819,13821],{"id":13818},"enum-uderror-udgeozone_updatesphereoidinfostruct-udgeozone-pzone",[1684,13820,1686],{"href":1686}," udGeoZone_UpdateSphereoidInfo(struct udGeoZone *pZone)",[1689,13823,13824],{},"Complete setup of a udGeoZone",[1693,13826,13827],{},[1689,13828,13829,13831],{},[1698,13830,1700],{},"\nThis is called after changing parameters of the zone",[1711,13833,13834,13842],{},[1714,13835,13836],{},[1717,13837,13838,13840],{},[1720,13839,1722],{},[1720,13841,1725],{},[1727,13843,13844],{},[1717,13845,13846,13850],{},[1732,13847,13848],{},[1735,13849,13240],{},[1732,13851,13852],{},"The zone to complete the setup of",[1689,13854,13855,3676,13857,13136],{},[3673,13856,3675],{},[1684,13858,1686],{"href":1686},[1674,13860,1796],{"id":1795},[1679,13862,13864],{"id":13863},"struct-udgeozone","struct udGeoZone",[1689,13866,13867],{},"udGeoZone structure. Do not rely on element order as they may change in a future release.",[1711,13869,13870,13880],{},[1714,13871,13872],{},[1717,13873,13874,13876,13878],{},[1720,13875,1812],{},[1720,13877,1815],{},[1720,13879,1725],{},[1727,13881,13882,13894,13906,13920,13933,13946,13960,13974,13988,14001,14014,14027,14040,14053,14066,14079,14092,14105,14118,14131,14144,14157,14170,14183,14197,14210,14222,14235,14248,14262,14276,14290,14303,14316,14329,14342],{},[1717,13883,13884,13888,13892],{},[1732,13885,13886],{},[1735,13887,13203],{},[1732,13889,13890],{},[1735,13891,12278],{},[1732,13893],{},[1717,13895,13896,13900,13904],{},[1732,13897,13898],{},[1735,13899,5231],{},[1732,13901,13902],{},[1735,13903,12890],{},[1732,13905],{},[1717,13907,13908,13913,13918],{},[1732,13909,13910],{},[1735,13911,13912],{},"latLongBoundMin",[1732,13914,13915],{},[1735,13916,13917],{},"udDouble2",[1732,13919],{},[1717,13921,13922,13927,13931],{},[1732,13923,13924],{},[1735,13925,13926],{},"latLongBoundMax",[1732,13928,13929],{},[1735,13930,13917],{},[1732,13932],{},[1717,13934,13935,13940,13944],{},[1732,13936,13937],{},[1735,13938,13939],{},"meridian",[1732,13941,13942],{},[1735,13943,5100],{},[1732,13945],{},[1717,13947,13948,13953,13957],{},[1732,13949,13950],{},[1735,13951,13952],{},"parallel",[1732,13954,13955],{},[1735,13956,5100],{},[1732,13958,13959],{},"Parallel of origin for Transverse Mercator.",[1717,13961,13962,13967,13971],{},[1732,13963,13964],{},[1735,13965,13966],{},"latProjCentre",[1732,13968,13969],{},[1735,13970,5100],{},[1732,13972,13973],{},"Latitude of Projection Centre for Krovak Projection.",[1717,13975,13976,13981,13985],{},[1732,13977,13978],{},[1735,13979,13980],{},"coLatConeAxis",[1732,13982,13983],{},[1735,13984,5100],{},[1732,13986,13987],{},"Co Latitude of the cone axis for Krovak Projection.",[1717,13989,13990,13995,13999],{},[1732,13991,13992],{},[1735,13993,13994],{},"flattening",[1732,13996,13997],{},[1735,13998,5100],{},[1732,14000],{},[1717,14002,14003,14008,14012],{},[1732,14004,14005],{},[1735,14006,14007],{},"semiMajorAxis",[1732,14009,14010],{},[1735,14011,5100],{},[1732,14013],{},[1717,14015,14016,14021,14025],{},[1732,14017,14018],{},[1735,14019,14020],{},"semiMinorAxis",[1732,14022,14023],{},[1735,14024,5100],{},[1732,14026],{},[1717,14028,14029,14034,14038],{},[1732,14030,14031],{},[1735,14032,14033],{},"thirdFlattening",[1732,14035,14036],{},[1735,14037,5100],{},[1732,14039],{},[1717,14041,14042,14047,14051],{},[1732,14043,14044],{},[1735,14045,14046],{},"eccentricity",[1732,14048,14049],{},[1735,14050,5100],{},[1732,14052],{},[1717,14054,14055,14060,14064],{},[1732,14056,14057],{},[1735,14058,14059],{},"eccentricitySq",[1732,14061,14062],{},[1735,14063,5100],{},[1732,14065],{},[1717,14067,14068,14073,14077],{},[1732,14069,14070],{},[1735,14071,14072],{},"radius",[1732,14074,14075],{},[1735,14076,5100],{},[1732,14078],{},[1717,14080,14081,14086,14090],{},[1732,14082,14083],{},[1735,14084,14085],{},"scaleFactor",[1732,14087,14088],{},[1735,14089,5100],{},[1732,14091],{},[1717,14093,14094,14099,14103],{},[1732,14095,14096],{},[1735,14097,14098],{},"n[10]",[1732,14100,14101],{},[1735,14102,5100],{},[1732,14104],{},[1717,14106,14107,14112,14116],{},[1732,14108,14109],{},[1735,14110,14111],{},"alpha[9]",[1732,14113,14114],{},[1735,14115,5100],{},[1732,14117],{},[1717,14119,14120,14125,14129],{},[1732,14121,14122],{},[1735,14123,14124],{},"beta[9]",[1732,14126,14127],{},[1735,14128,5100],{},[1732,14130],{},[1717,14132,14133,14138,14142],{},[1732,14134,14135],{},[1735,14136,14137],{},"firstParallel",[1732,14139,14140],{},[1735,14141,5100],{},[1732,14143],{},[1717,14145,14146,14151,14155],{},[1732,14147,14148],{},[1735,14149,14150],{},"secondParallel",[1732,14152,14153],{},[1735,14154,5100],{},[1732,14156],{},[1717,14158,14159,14164,14168],{},[1732,14160,14161],{},[1735,14162,14163],{},"falseNorthing",[1732,14165,14166],{},[1735,14167,5100],{},[1732,14169],{},[1717,14171,14172,14177,14181],{},[1732,14173,14174],{},[1735,14175,14176],{},"falseEasting",[1732,14178,14179],{},[1735,14180,5100],{},[1732,14182],{},[1717,14184,14185,14190,14194],{},[1732,14186,14187],{},[1735,14188,14189],{},"unitMetreScale",[1732,14191,14192],{},[1735,14193,5100],{},[1732,14195,14196],{},"1.0 for metres, 0.3048006096012192 for feet",[1717,14198,14199,14204,14208],{},[1732,14200,14201],{},[1735,14202,14203],{},"zone",[1732,14205,14206],{},[1735,14207,9782],{},[1732,14209],{},[1717,14211,14212,14216,14220],{},[1732,14213,14214],{},[1735,14215,8323],{},[1732,14217,14218],{},[1735,14219,9782],{},[1732,14221],{},[1717,14223,14224,14229,14233],{},[1732,14225,14226],{},[1735,14227,14228],{},"datumShortName[16]",[1732,14230,14231],{},[1735,14232,4243],{},[1732,14234],{},[1717,14236,14237,14242,14246],{},[1732,14238,14239],{},[1735,14240,14241],{},"datumName[64]",[1732,14243,14244],{},[1735,14245,4243],{},[1732,14247],{},[1717,14249,14250,14255,14259],{},[1732,14251,14252],{},[1735,14253,14254],{},"zoneName[64]",[1732,14256,14257],{},[1735,14258,4243],{},[1732,14260,14261],{},"Full name for zone, only 33 characters required for longest known name “Japan Plane Rectangular CS XVIII”.",[1717,14263,14264,14269,14273],{},[1732,14265,14266],{},[1735,14267,14268],{},"displayName[128]",[1732,14270,14271],{},[1735,14272,4243],{},[1732,14274,14275],{},"This is the human readable name; often just datumShortName & zoneName concatenated.",[1717,14277,14278,14283,14287],{},[1732,14279,14280],{},[1735,14281,14282],{},"knownDatum",[1732,14284,14285],{},[1735,14286,4243],{},[1732,14288,14289],{},"boolean",[1717,14291,14292,14297,14301],{},[1732,14293,14294],{},[1735,14295,14296],{},"datumSrid",[1732,14298,14299],{},[1735,14300,9782],{},[1732,14302],{},[1717,14304,14305,14310,14314],{},[1732,14306,14307],{},[1735,14308,14309],{},"toWGS84",[1732,14311,14312],{},[1735,14313,4243],{},[1732,14315,14289],{},[1717,14317,14318,14323,14327],{},[1732,14319,14320],{},[1735,14321,14322],{},"axisInfo",[1732,14324,14325],{},[1735,14326,4243],{},[1732,14328,14289],{},[1717,14330,14331,14336,14340],{},[1732,14332,14333],{},[1735,14334,14335],{},"zoneSpheroid",[1732,14337,14338],{},[1735,14339,12031],{},[1732,14341],{},[1717,14343,14344,14349,14353],{},[1732,14345,14346],{},[1735,14347,14348],{},"paramsHelmert7[7]",[1732,14350,14351],{},[1735,14352,5100],{},[1732,14354,14355],{},"TO-WGS84 as { Tx, Ty, Tz, Rx, Ry, Rz, DS }.",[1679,14357,14359],{"id":14358},"struct-udgeozonegeodeticdatumdescriptor","struct udGeoZoneGeodeticDatumDescriptor",[1689,14361,14362],{},"Geodetic Datum descriptor, stored globally as g_udGZ_GeodeticDatumDescriptors",[1711,14364,14365,14375],{},[1714,14366,14367],{},[1717,14368,14369,14371,14373],{},[1720,14370,1812],{},[1720,14372,1815],{},[1720,14374,1725],{},[1727,14376,14377,14390,14403,14416,14429,14441,14455,14469,14482],{},[1717,14378,14379,14384,14388],{},[1732,14380,14381],{},[1735,14382,14383],{},"pFullName",[1732,14385,14386],{},[1735,14387,6652],{},[1732,14389],{},[1717,14391,14392,14397,14401],{},[1732,14393,14394],{},[1735,14395,14396],{},"pShortName",[1732,14398,14399],{},[1735,14400,6652],{},[1732,14402],{},[1717,14404,14405,14410,14414],{},[1732,14406,14407],{},[1735,14408,14409],{},"pDatumName",[1732,14411,14412],{},[1735,14413,6652],{},[1732,14415],{},[1717,14417,14418,14423,14427],{},[1732,14419,14420],{},[1735,14421,14422],{},"ellipsoid",[1732,14424,14425],{},[1735,14426,12031],{},[1732,14428],{},[1717,14430,14431,14435,14439],{},[1732,14432,14433],{},[1735,14434,14348],{},[1732,14436,14437],{},[1735,14438,5100],{},[1732,14440,14355],{},[1717,14442,14443,14448,14452],{},[1732,14444,14445],{},[1735,14446,14447],{},"epsg",[1732,14449,14450],{},[1735,14451,9782],{},[1732,14453,14454],{},"epsg code for the datum",[1717,14456,14457,14462,14466],{},[1732,14458,14459],{},[1735,14460,14461],{},"authority",[1732,14463,14464],{},[1735,14465,9782],{},[1732,14467,14468],{},"authority for this datum",[1717,14470,14471,14476,14480],{},[1732,14472,14473],{},[1735,14474,14475],{},"exportAxisInfo",[1732,14477,14478],{},[1735,14479,4243],{},[1732,14481],{},[1717,14483,14484,14489,14493],{},[1732,14485,14486],{},[1735,14487,14488],{},"exportToWGS84",[1732,14490,14491],{},[1735,14492,4243],{},[1732,14494],{},[1679,14496,14498],{"id":14497},"struct-udgeozoneellipsoidinfo","struct udGeoZoneEllipsoidInfo",[1689,14500,14501],{},"Ellipsoid info",[1711,14503,14504,14514],{},[1714,14505,14506],{},[1717,14507,14508,14510,14512],{},[1720,14509,1812],{},[1720,14511,1815],{},[1720,14513,1725],{},[1727,14515,14516,14528,14540,14552],{},[1717,14517,14518,14522,14526],{},[1732,14519,14520],{},[1735,14521,3862],{},[1732,14523,14524],{},[1735,14525,6652],{},[1732,14527],{},[1717,14529,14530,14534,14538],{},[1732,14531,14532],{},[1735,14533,14007],{},[1732,14535,14536],{},[1735,14537,5100],{},[1732,14539],{},[1717,14541,14542,14546,14550],{},[1732,14543,14544],{},[1735,14545,13994],{},[1732,14547,14548],{},[1735,14549,5100],{},[1732,14551],{},[1717,14553,14554,14559,14563],{},[1732,14555,14556],{},[1735,14557,14558],{},"authorityEpsg",[1732,14560,14561],{},[1735,14562,9782],{},[1732,14564],{},{"title":2049,"searchDepth":2050,"depth":2050,"links":14566},[14567,14570,14575,14606],{"id":11049,"depth":2050,"text":11050,"children":14568},[14569],{"id":12024,"depth":2055,"text":12025},{"id":2697,"depth":2050,"text":2698,"children":14571},[14572,14573,14574],{"id":12030,"depth":2055,"text":12031},{"id":12277,"depth":2055,"text":12278},{"id":12889,"depth":2055,"text":12890},{"id":1676,"depth":2050,"text":1677,"children":14576},[14577,14579,14581,14583,14585,14587,14589,14590,14592,14594,14596,14598,14600,14602,14604],{"id":13085,"depth":2055,"text":14578},"enum udError udGeoZone_LoadZonesFromJSON(const char *pJSONStr, int *pLoaded, int *pFailed)",{"id":13139,"depth":2055,"text":14580},"enum udError udGeoZone_UnloadZones()",{"id":13158,"depth":2055,"text":14582},"enum udError udGeoZone_FindSRID(int32_t *pSRIDCode, const udDouble3 *pLatLong, enum udGeoZoneGeodeticDatum datum)",{"id":13215,"depth":2055,"text":14584},"enum udError udGeoZone_SetFromSRID(struct udGeoZone *pZone, int32_t sridCode)",{"id":13262,"depth":2055,"text":14586},"enum udError udGeoZone_SetFromWellKnownText(struct udGeoZone *pZone, const char *pWKT)",{"id":13307,"depth":2055,"text":14588},"enum udError udGeoZone_GetWellKnownText(const char **ppWKT, const struct udGeoZone *pZone)",{"id":13360,"depth":2055,"text":13361},{"id":13388,"depth":2055,"text":14591},"enum udError udGeoZone_LatLongToCartesian(udDouble3 *pCartesian, const struct udGeoZone *pZone, const udDouble3 *pLatLong, enum udGeoZoneGeodeticDatum datum)",{"id":13452,"depth":2055,"text":14593},"enum udError udGeoZone_CartesianToLatLong(udDouble3 *pLatLong, const struct udGeoZone *pZone, const udDouble3 *pPosition, enum udGeoZoneGeodeticDatum datum)",{"id":13513,"depth":2055,"text":14595},"enum udError udGeoZone_LatLongToGeocentric(udDouble3 *pGeocentric, const udDouble3 *pLatLong, const struct udGeoZoneEllipsoidInfo *pEllipsoid)",{"id":13568,"depth":2055,"text":14597},"enum udError udGeoZone_GeocentricToLatLong(udDouble3 *pLatLong, const udDouble3 *pGeoCentric, const struct udGeoZoneEllipsoidInfo *pEllipsoid)",{"id":13620,"depth":2055,"text":14599},"enum udError udGeoZone_ConvertDatum(udDouble3 *pOutLatLong, const udDouble3 *pInLatLong, enum udGeoZoneGeodeticDatum currentDatum, enum udGeoZoneGeodeticDatum newDatum)",{"id":13687,"depth":2055,"text":14601},"enum udError udGeoZone_TransformPoint(udDouble3 *pTransformed, const udDouble3 *pPoint, const struct udGeoZone *pSourceZone, const struct udGeoZone *pDestZone)",{"id":13754,"depth":2055,"text":14603},"enum udError udGeoZone_TransformMatrix(udDouble4x4 *pTransformed, const udDouble4x4 *pMatrix, const struct udGeoZone *pSourceZone, const struct udGeoZone *pDestZone)",{"id":13818,"depth":2055,"text":14605},"enum udError udGeoZone_UpdateSphereoidInfo(struct udGeoZone *pZone)",{"id":1795,"depth":2050,"text":1796,"children":14607},[14608,14609,14610],{"id":13863,"depth":2055,"text":13864},{"id":14358,"depth":2055,"text":14359},{"id":14497,"depth":2055,"text":14498},{},"\u002Fguide\u002Fudsdk\u002Fudgeozone",{"title":11926,"description":12019},"guide\u002Fudsdk\u002FudGeoZone","ssfaVxBULBmZ5YuyCZgQwuLZ-J8E-nA3qYWXFbKrRjw",{"id":14617,"title":14618,"body":14619,"date":7,"description":17401,"extension":2064,"meta":17402,"navigation":43,"path":17403,"seo":17404,"stem":17405,"__hash__":17406},"udsdkguide\u002Fguide\u002Fudsdk\u002FudGeometry.md","udGeometry",{"type":1667,"value":14620,"toc":17332},[14621,14624,14629,14633,14637,14640,14644,14647,14649,14653,14656,14660,14801,14805,14808,14812,14904,14908,14912,14944,14948,14951,14955,14997,15001,15004,15008,15077,15079,15083,15086,15092,15094,15100,15103,15135,15141,15144,15183,15189,15192,15232,15238,15241,15290,15296,15299,15375,15381,15384,15434,15440,15443,15483,15489,15492,15539,15545,15548,15587,15593,15596,15634,15640,15643,15682,15688,15691,15740,15753,15756,15826,15836,15839,15899,15903,15906,15927,15931,15934,15955,15960,15966,15969,15999,16004,16010,16013,16035,16039,16042,16063,16065,16069,16072,16156,16160,16163,16203,16207,16210,16252,16256,16259,16329,16333,16336,16511,16515,16518,16599,16603,16606,16646,16650,16653,16681,16685,16688,16728,16732,16735,16787,16791,16794,16837,16841,16844,16913,16917,16920,17061,17065,17068,17075],[1670,14622,14618],{"id":14623},"udgeometry",[1689,14625,4541,14626,14628],{},[3673,14627,14618],{}," object provides an interface to filter Nuclideon Unlimited Detail models using geometric filters.",[1674,14630,14632],{"id":14631},"typedefs","Typedefs",[1679,14634,14636],{"id":14635},"typedef-uint32_t-udgeometrycrcconst-struct-udgeometry-pgeometry","typedef uint32_t udGeometryCrc(const struct udGeometry *pGeometry)",[1689,14638,14639],{},"Optional function to return a crc of ADDITIONAL data outside the structure, such as pointers in a CSG\u002FInverse type etc.",[1679,14641,14643],{"id":14642},"typedef-void-udgeometrydeinitstruct-udgeometry-pgeometry","typedef void udGeometryDeinit(struct udGeometry *pGeometry)",[1689,14645,14646],{},"This sets up pFilterOut by doing the pMatrix transform on pFilterIn (which isn’t modified)- pFilterOut needs to be deinited after this.",[1674,14648,2698],{"id":2697},[1679,14650,14652],{"id":14651},"enum-udgeometrytype","enum udGeometryType",[1689,14654,14655],{},"The currently supported geometry types",[1689,14657,14658],{},[1742,14659,2707],{},[1711,14661,14662,14670],{},[1714,14663,14664],{},[1717,14665,14666,14668],{},[1720,14667,2716],{},[1720,14669,1725],{},[1727,14671,14672,14682,14692,14702,14712,14722,14732,14742,14752,14762,14772,14782,14792],{},[1717,14673,14674,14679],{},[1732,14675,14676],{},[1735,14677,14678],{},"udGT_Inverse",[1732,14680,14681],{},"An inversion filter; flips the udGeometryTestResult of the child udGeometry node.",[1717,14683,14684,14689],{},[1732,14685,14686],{},[1735,14687,14688],{},"udGT_CircleXY",[1732,14690,14691],{},"A 2D Circle with an infinite Z value.",[1717,14693,14694,14699],{},[1732,14695,14696],{},[1735,14697,14698],{},"udGT_RectangleXY",[1732,14700,14701],{},"A 2D Rectangle with an infinite Z value.",[1717,14703,14704,14709],{},[1732,14705,14706],{},[1735,14707,14708],{},"udGT_PolygonXY",[1732,14710,14711],{},"A 2D Polygon with rotation (quaternion) to define the up of the polygon.",[1717,14713,14714,14719],{},[1732,14715,14716],{},[1735,14717,14718],{},"udGT_PolygonPerspective",[1732,14720,14721],{},"A 2D polygon with a perspective projection to the screen plane.",[1717,14723,14724,14729],{},[1732,14725,14726],{},[1735,14727,14728],{},"udGT_Capsule",[1732,14730,14731],{},"A line with a radius from the line; forming hemispherical caps at the end of the line.",[1717,14733,14734,14739],{},[1732,14735,14736],{},[1735,14737,14738],{},"udGT_Sphere",[1732,14740,14741],{},"A radius from a point.",[1717,14743,14744,14749],{},[1732,14745,14746],{},[1735,14747,14748],{},"udGT_HalfSpace",[1732,14750,14751],{},"A binary space partition allowing 1 side of a plane.",[1717,14753,14754,14759],{},[1732,14755,14756],{},[1735,14757,14758],{},"udGT_AABB",[1732,14760,14761],{},"An axis aligned box; Use with caution. OBB while less performant correctly handles transforms.",[1717,14763,14764,14769],{},[1732,14765,14766],{},[1735,14767,14768],{},"udGT_OBB",[1732,14770,14771],{},"An oriented bounding box using half size and orientation.",[1717,14773,14774,14779],{},[1732,14775,14776],{},[1735,14777,14778],{},"udGT_CSG",[1732,14780,14781],{},"A constructed solid geometry that uses a udGeometryCSGOperation to join to child udGeometry nodes.",[1717,14783,14784,14789],{},[1732,14785,14786],{},[1735,14787,14788],{},"udGT_Attribute",[1732,14790,14791],{},"Filter based on attribute values (automatic pass if no attribute information passed to test function).",[1717,14793,14794,14799],{},[1732,14795,14796],{},[1735,14797,14798],{},"udGT_Count",[1732,14800,3003],{},[1679,14802,14804],{"id":14803},"enum-udgeometrycomparator","enum udGeometryComparator",[1689,14806,14807],{},"The currently supported geometry comparator types (used in attribute filtering)",[1689,14809,14810],{},[1742,14811,2707],{},[1711,14813,14814,14822],{},[1714,14815,14816],{},[1717,14817,14818,14820],{},[1720,14819,2716],{},[1720,14821,1725],{},[1727,14823,14824,14834,14844,14854,14864,14874,14884,14894],{},[1717,14825,14826,14831],{},[1732,14827,14828],{},[1735,14829,14830],{},"udGC_EQ",[1732,14832,14833],{},"Equal, param is tolerance (0 = none).",[1717,14835,14836,14841],{},[1732,14837,14838],{},[1735,14839,14840],{},"udGC_NE",[1732,14842,14843],{},"Not equal, param is tolerance (0 = none).",[1717,14845,14846,14851],{},[1732,14847,14848],{},[1735,14849,14850],{},"udGC_GT",[1732,14852,14853],{},"Greater than, param is range limit (0 = none).",[1717,14855,14856,14861],{},[1732,14857,14858],{},[1735,14859,14860],{},"udGC_GE",[1732,14862,14863],{},"Greater than or Equal, param is range limit (0 = none).",[1717,14865,14866,14871],{},[1732,14867,14868],{},[1735,14869,14870],{},"udGC_LT",[1732,14872,14873],{},"Less rhan, param is range limit (0 = none).",[1717,14875,14876,14881],{},[1732,14877,14878],{},[1735,14879,14880],{},"udGC_LE",[1732,14882,14883],{},"Less than or equal, param is range limit (0 = none).",[1717,14885,14886,14891],{},[1732,14887,14888],{},[1735,14889,14890],{},"udGC_AND_ANY",[1732,14892,14893],{},"Bitwise AND, true if value AND comparands != 0, param is unused (should be zero).",[1717,14895,14896,14901],{},[1732,14897,14898],{},[1735,14899,14900],{},"udGC_AND_ALL",[1732,14902,14903],{},"Bitwise AND, true if value AND comparands == comparand, param is unused (should be zero).",[1679,14905,14907],{"id":14906},"enum-udgeometryvoxelnodeflags","enum udGeometryVoxelNodeFlags",[1689,14909,14910],{},[1742,14911,2707],{},[1711,14913,14914,14922],{},[1714,14915,14916],{},[1717,14917,14918,14920],{},[1720,14919,2716],{},[1720,14921,1725],{},[1727,14923,14924,14934],{},[1717,14925,14926,14931],{},[1732,14927,14928],{},[1735,14929,14930],{},"udGVNF_None",[1732,14932,14933],{},"Default no flags present.",[1717,14935,14936,14941],{},[1732,14937,14938],{},[1735,14939,14940],{},"udGVNF_RenderLeaf",[1732,14942,14943],{},"The voxel is either a leaf or being rendered as a leaf.",[1679,14945,14947],{"id":14946},"enum-udgeometrycsgoperation","enum udGeometryCSGOperation",[1689,14949,14950],{},"The Constructive Solid Geometry operations",[1689,14952,14953],{},[1742,14954,2707],{},[1711,14956,14957,14965],{},[1714,14958,14959],{},[1717,14960,14961,14963],{},[1720,14962,2716],{},[1720,14964,1725],{},[1727,14966,14967,14977,14987],{},[1717,14968,14969,14974],{},[1732,14970,14971],{},[1735,14972,14973],{},"udGCSGO_Union",[1732,14975,14976],{},"A union CSG operation; any point matching the one or the other geometry (OR operation).",[1717,14978,14979,14984],{},[1732,14980,14981],{},[1735,14982,14983],{},"udGCSGO_Difference",[1732,14985,14986],{},"A subtractive CSG operation; any point in the first geometry but not matching the second geometry (XOR operation).",[1717,14988,14989,14994],{},[1732,14990,14991],{},[1735,14992,14993],{},"udGCSGO_Intersection",[1732,14995,14996],{},"An intersection CSG operation; any point that matches both geometries (AND operation).",[1679,14998,15000],{"id":14999},"enum-udgeometrytestresult","enum udGeometryTestResult",[1689,15002,15003],{},"The results of a geometry test",[1689,15005,15006],{},[1742,15007,2707],{},[1711,15009,15010,15018],{},[1714,15011,15012],{},[1717,15013,15014,15016],{},[1720,15015,2716],{},[1720,15017,1725],{},[1727,15019,15020,15030,15040,15050,15059,15068],{},[1717,15021,15022,15027],{},[1732,15023,15024],{},[1735,15025,15026],{},"udGTR_Reject",[1732,15028,15029],{},"The node is either totally outside of the geometry filter OR fails attribute filter.",[1717,15031,15032,15037],{},[1732,15033,15034],{},[1735,15035,15036],{},"udGTR_Accept",[1732,15038,15039],{},"The node is both totally inside of the geometry AND fully matches attribute filter (and no further tests are required).",[1717,15041,15042,15047],{},[1732,15043,15044],{},[1735,15045,15046],{},"udGTR_Partial",[1732,15048,15049],{},"The node is partiall filtered, should be accepted but child nodes must be re-tested (eg overlapping the boundary of the geometry).",[1717,15051,15052,15057],{},[1732,15053,15054],{},[1735,15055,15056],{},"udGTR_CompletelyOutside",[1732,15058],{},[1717,15060,15061,15066],{},[1732,15062,15063],{},[1735,15064,15065],{},"udGTR_CompletelyInside",[1732,15067],{},[1717,15069,15070,15075],{},[1732,15071,15072],{},[1735,15073,15074],{},"udGTR_PartiallyOverlap",[1732,15076],{},[1674,15078,1677],{"id":1676},[1679,15080,15082],{"id":15081},"enum-udgeometrytestresult-udgeometrytestfuncconst-struct-udgeometry-pgeometry-const-struct-udgeometryvoxelnode-pvoxel","enum udGeometryTestResult udGeometryTestFunc(const struct udGeometry *pGeometry, const struct udGeometryVoxelNode *pVoxel)",[1689,15084,15085],{},"The function that will be called for each node until the node is either inside or outside of the geometry.",[1679,15087,1682,15089,15091],{"id":15088},"enum-uderror-udgeometrytransformconst-struct-udgeometry-pfilterin-struct-udgeometry-pfilterout-const-uddouble4x4-pmatrix",[1684,15090,1686],{"href":1686}," udGeometryTransform(const struct udGeometry *pFilterIn, struct udGeometry *pFilterOut, const udDouble4x4 *pMatrix)",[1689,15093,14646],{},[1679,15095,1682,15097,15099],{"id":15096},"enum-uderror-udgeometry_initinversestruct-udgeometry-pgeometry-const-struct-udgeometry-psource",[1684,15098,1686],{"href":1686}," udGeometry_InitInverse(struct udGeometry *pGeometry, const struct udGeometry *pSource)",[1689,15101,15102],{},"Helper to initialise a geometry that simply inverts another primitive (CompletelyOutside \u003C-> CompletelyInside)",[1711,15104,15105,15113],{},[1714,15106,15107],{},[1717,15108,15109,15111],{},[1720,15110,1722],{},[1720,15112,1725],{},[1727,15114,15115,15125],{},[1717,15116,15117,15122],{},[1732,15118,15119],{},[1735,15120,15121],{},"pGeometry",[1732,15123,15124],{},"The preallocated udGeometry to init",[1717,15126,15127,15132],{},[1732,15128,15129],{},[1735,15130,15131],{},"pSource",[1732,15133,15134],{},"The Geometry to inverse",[1679,15136,1682,15138,15140],{"id":15137},"enum-uderror-udgeometry_initcirclexystruct-udgeometry-pgeometry-const-uddouble2-centre-double-radius",[1684,15139,1686],{"href":1686}," udGeometry_InitCircleXY(struct udGeometry *pGeometry, const udDouble2 centre, double radius)",[1689,15142,15143],{},"Helper to initialise a 2D circle extended to infinity in Z (elevation)",[1711,15145,15146,15154],{},[1714,15147,15148],{},[1717,15149,15150,15152],{},[1720,15151,1722],{},[1720,15153,1725],{},[1727,15155,15156,15164,15174],{},[1717,15157,15158,15162],{},[1732,15159,15160],{},[1735,15161,15121],{},[1732,15163,15124],{},[1717,15165,15166,15171],{},[1732,15167,15168],{},[1735,15169,15170],{},"centre",[1732,15172,15173],{},"The centre of the Circle",[1717,15175,15176,15180],{},[1732,15177,15178],{},[1735,15179,14072],{},[1732,15181,15182],{},"The radius of the circle",[1679,15184,1682,15186,15188],{"id":15185},"enum-uderror-udgeometry_initrectanglexystruct-udgeometry-pgeometry-const-uddouble2-point1-const-uddouble2-point2",[1684,15187,1686],{"href":1686}," udGeometry_InitRectangleXY(struct udGeometry *pGeometry, const udDouble2 point1, const udDouble2 point2)",[1689,15190,15191],{},"Helper to initialise a 2D rectangle extended to infinity in Z (elevation)",[1711,15193,15194,15202],{},[1714,15195,15196],{},[1717,15197,15198,15200],{},[1720,15199,1722],{},[1720,15201,1725],{},[1727,15203,15204,15212,15222],{},[1717,15205,15206,15210],{},[1732,15207,15208],{},[1735,15209,15121],{},[1732,15211,15124],{},[1717,15213,15214,15219],{},[1732,15215,15216],{},[1735,15217,15218],{},"point1",[1732,15220,15221],{},"The first point to define a rectangle",[1717,15223,15224,15229],{},[1732,15225,15226],{},[1735,15227,15228],{},"point2",[1732,15230,15231],{},"The second point to define a rectangle",[1679,15233,1682,15235,15237],{"id":15234},"enum-uderror-udgeometry_initpolygonxystruct-udgeometry-pgeometry-const-uddouble3-pxycoords-uint32_t-count-const-uddouble3-polygonnomal",[1684,15236,1686],{"href":1686}," udGeometry_InitPolygonXY(struct udGeometry *pGeometry, const udDouble3 *pXYCoords, uint32_t count, const udDouble3 polygonNomal)",[1689,15239,15240],{},"Helper to initialise a Polygon shape extened to infinity along a direction",[1711,15242,15243,15251],{},[1714,15244,15245],{},[1717,15246,15247,15249],{},[1720,15248,1722],{},[1720,15250,1725],{},[1727,15252,15253,15261,15271,15280],{},[1717,15254,15255,15259],{},[1732,15256,15257],{},[1735,15258,15121],{},[1732,15260,15124],{},[1717,15262,15263,15268],{},[1732,15264,15265],{},[1735,15266,15267],{},"pXYCoords",[1732,15269,15270],{},"the list of 2D positions defining the polygon",[1717,15272,15273,15277],{},[1732,15274,15275],{},[1735,15276,4345],{},[1732,15278,15279],{},"the number of points in pXYCoords list",[1717,15281,15282,15287],{},[1732,15283,15284],{},[1735,15285,15286],{},"polygonNormal",[1732,15288,15289],{},"the normal vector to the polygon",[1679,15291,1682,15293,15295],{"id":15292},"enum-uderror-udgeometry_initpolygonperspectivestruct-udgeometry-pgeometry-const-uddouble2-pxycoords-uint32_t-count-uddouble4x4-projectionmatrix-uddouble4x4-cameramatrix-double-nearplaneoffset-double-farplaneoffset",[1684,15294,1686],{"href":1686}," udGeometry_InitPolygonPerspective(struct udGeometry *pGeometry, const udDouble2 *pXYCoords, uint32_t count, udDouble4x4 projectionMatrix, udDouble4x4 cameraMatrix, double nearPlaneOffset, double farPlaneOffset)",[1689,15297,15298],{},"Helper to initialise a Polygon shape extended to infinity with a perspective projection",[1711,15300,15301,15309],{},[1714,15302,15303],{},[1717,15304,15305,15307],{},[1720,15306,1722],{},[1720,15308,1725],{},[1727,15310,15311,15319,15327,15335,15345,15355,15365],{},[1717,15312,15313,15317],{},[1732,15314,15315],{},[1735,15316,15121],{},[1732,15318,15124],{},[1717,15320,15321,15325],{},[1732,15322,15323],{},[1735,15324,15267],{},[1732,15326,15270],{},[1717,15328,15329,15333],{},[1732,15330,15331],{},[1735,15332,4345],{},[1732,15334,15279],{},[1717,15336,15337,15342],{},[1732,15338,15339],{},[1735,15340,15341],{},"projectionMatrix",[1732,15343,15344],{},"The model to world projection matrix",[1717,15346,15347,15352],{},[1732,15348,15349],{},[1735,15350,15351],{},"cameraMatrix",[1732,15353,15354],{},"The projection matrix of world to screen",[1717,15356,15357,15362],{},[1732,15358,15359],{},[1735,15360,15361],{},"nearPlaneOffset",[1732,15363,15364],{},"The offset off the near plane to detect if voxel is visible by the camera",[1717,15366,15367,15372],{},[1732,15368,15369],{},[1735,15370,15371],{},"farPlaneOffset",[1732,15373,15374],{},"The offset off the far plane to detect if voxel is visible by the camera",[1679,15376,1682,15378,15380],{"id":15377},"enum-uderror-udgeometry_initcsgstruct-udgeometry-pgeometry-const-struct-udgeometry-pgeometry1-const-struct-udgeometry-pgeometry2-enum-udgeometrycsgoperation-function",[1684,15379,1686],{"href":1686}," udGeometry_InitCSG(struct udGeometry *pGeometry, const struct udGeometry *pGeometry1, const struct udGeometry *pGeometry2, enum udGeometryCSGOperation function)",[1689,15382,15383],{},"Helper to initialise a CSG shape",[1711,15385,15386,15394],{},[1714,15387,15388],{},[1717,15389,15390,15392],{},[1720,15391,1722],{},[1720,15393,1725],{},[1727,15395,15396,15404,15414,15424],{},[1717,15397,15398,15402],{},[1732,15399,15400],{},[1735,15401,15121],{},[1732,15403,15124],{},[1717,15405,15406,15411],{},[1732,15407,15408],{},[1735,15409,15410],{},"pGeometry1",[1732,15412,15413],{},"First Geometry",[1717,15415,15416,15421],{},[1732,15417,15418],{},[1735,15419,15420],{},"pGeometry2",[1732,15422,15423],{},"Second Geometry",[1717,15425,15426,15431],{},[1732,15427,15428],{},[1735,15429,15430],{},"function",[1732,15432,15433],{},"the function to apply to these 2 geometries (Union, Difference, Intersection)",[1679,15435,1682,15437,15439],{"id":15436},"enum-uderror-udgeometry_inithalfspacestruct-udgeometry-pgeometry-const-uddouble3-point-const-uddouble3-normal",[1684,15438,1686],{"href":1686}," udGeometry_InitHalfSpace(struct udGeometry *pGeometry, const udDouble3 point, const udDouble3 normal)",[1689,15441,15442],{},"Helper to initialise a plane extended to infinity in the direction of its normal",[1711,15444,15445,15453],{},[1714,15446,15447],{},[1717,15448,15449,15451],{},[1720,15450,1722],{},[1720,15452,1725],{},[1727,15454,15455,15463,15473],{},[1717,15456,15457,15461],{},[1732,15458,15459],{},[1735,15460,15121],{},[1732,15462,15124],{},[1717,15464,15465,15470],{},[1732,15466,15467],{},[1735,15468,15469],{},"point",[1732,15471,15472],{},"The first point to define the space",[1717,15474,15475,15480],{},[1732,15476,15477],{},[1735,15478,15479],{},"normal",[1732,15481,15482],{},"The normal vector of the defined space",[1679,15484,1682,15486,15488],{"id":15485},"enum-uderror-udgeometry_initcapsulestruct-udgeometry-pgeometry-const-uddouble3-point1-const-uddouble3-point2-double-radius",[1684,15487,1686],{"href":1686}," udGeometry_InitCapsule(struct udGeometry *pGeometry, const udDouble3 point1, const udDouble3 point2, double radius)",[1689,15490,15491],{},"Helper to initialise a Capsule",[1711,15493,15494,15502],{},[1714,15495,15496],{},[1717,15497,15498,15500],{},[1720,15499,1722],{},[1720,15501,1725],{},[1727,15503,15504,15512,15521,15530],{},[1717,15505,15506,15510],{},[1732,15507,15508],{},[1735,15509,15121],{},[1732,15511,15124],{},[1717,15513,15514,15518],{},[1732,15515,15516],{},[1735,15517,15218],{},[1732,15519,15520],{},"First point to define a capsule at this position",[1717,15522,15523,15527],{},[1732,15524,15525],{},[1735,15526,15228],{},[1732,15528,15529],{},"Second point to define a capsule",[1717,15531,15532,15536],{},[1732,15533,15534],{},[1735,15535,14072],{},[1732,15537,15538],{},"Radius of the capsule",[1679,15540,1682,15542,15544],{"id":15541},"enum-uderror-udgeometry_initspherestruct-udgeometry-pgeometry-const-uddouble3-center-double-radius",[1684,15543,1686],{"href":1686}," udGeometry_InitSphere(struct udGeometry *pGeometry, const udDouble3 center, double radius)",[1689,15546,15547],{},"Helper to initialise a Sphere",[1711,15549,15550,15558],{},[1714,15551,15552],{},[1717,15553,15554,15556],{},[1720,15555,1722],{},[1720,15557,1725],{},[1727,15559,15560,15568,15578],{},[1717,15561,15562,15566],{},[1732,15563,15564],{},[1735,15565,15121],{},[1732,15567,15124],{},[1717,15569,15570,15575],{},[1732,15571,15572],{},[1735,15573,15574],{},"center",[1732,15576,15577],{},"The center of the Sphere",[1717,15579,15580,15584],{},[1732,15581,15582],{},[1735,15583,14072],{},[1732,15585,15586],{},"The radius of the sphere",[1679,15588,1682,15590,15592],{"id":15589},"enum-uderror-udgeometry_initaabbfromminmaxstruct-udgeometry-pgeometry-const-uddouble3-point1-const-uddouble3-point2",[1684,15591,1686],{"href":1686}," udGeometry_InitAABBFromMinMax(struct udGeometry *pGeometry, const udDouble3 point1, const udDouble3 point2)",[1689,15594,15595],{},"Helper to initialise an Axis Aligned Box using the min and max point",[1711,15597,15598,15606],{},[1714,15599,15600],{},[1717,15601,15602,15604],{},[1720,15603,1722],{},[1720,15605,1725],{},[1727,15607,15608,15616,15625],{},[1717,15609,15610,15614],{},[1732,15611,15612],{},[1735,15613,15121],{},[1732,15615,15124],{},[1717,15617,15618,15622],{},[1732,15619,15620],{},[1735,15621,15218],{},[1732,15623,15624],{},"First point to define a box starting at this position",[1717,15626,15627,15631],{},[1732,15628,15629],{},[1735,15630,15228],{},[1732,15632,15633],{},"Last point to define a box ending at this position",[1679,15635,1682,15637,15639],{"id":15636},"enum-uderror-udgeometry_initaabbfromcentreextentsstruct-udgeometry-pgeometry-const-uddouble3-centre-const-uddouble3-extents",[1684,15638,1686],{"href":1686}," udGeometry_InitAABBFromCentreExtents(struct udGeometry *pGeometry, const udDouble3 centre, const udDouble3 extents)",[1689,15641,15642],{},"Helper to initialise an Axis Aligned Box using center and extents",[1711,15644,15645,15653],{},[1714,15646,15647],{},[1717,15648,15649,15651],{},[1720,15650,1722],{},[1720,15652,1725],{},[1727,15654,15655,15663,15672],{},[1717,15656,15657,15661],{},[1732,15658,15659],{},[1735,15660,15121],{},[1732,15662,15124],{},[1717,15664,15665,15669],{},[1732,15666,15667],{},[1735,15668,15170],{},[1732,15670,15671],{},"The centre of the Axis Aligned Box",[1717,15673,15674,15679],{},[1732,15675,15676],{},[1735,15677,15678],{},"extents",[1732,15680,15681],{},"The dimension of the Axis Aligned Box",[1679,15683,1682,15685,15687],{"id":15684},"enum-uderror-udgeometry_initobbstruct-udgeometry-pgeometry-const-uddouble3-centerpoint-const-uddouble3-extents-const-uddouble3-rotations",[1684,15686,1686],{"href":1686}," udGeometry_InitOBB(struct udGeometry *pGeometry, const udDouble3 centerPoint, const udDouble3 extents, const udDouble3 rotations)",[1689,15689,15690],{},"Helper to initialise an arbitrarily aligned three dimensional box, centered at centerPoint, rotated about the center",[1711,15692,15693,15701],{},[1714,15694,15695],{},[1717,15696,15697,15699],{},[1720,15698,1722],{},[1720,15700,1725],{},[1727,15702,15703,15711,15721,15730],{},[1717,15704,15705,15709],{},[1732,15706,15707],{},[1735,15708,15121],{},[1732,15710,15124],{},[1717,15712,15713,15718],{},[1732,15714,15715],{},[1735,15716,15717],{},"centerPoint",[1732,15719,15720],{},"The centre of the box",[1717,15722,15723,15727],{},[1732,15724,15725],{},[1735,15726,15678],{},[1732,15728,15729],{},"The distances from the center to the sides (half the size of the dimensions of the box)",[1717,15731,15732,15737],{},[1732,15733,15734],{},[1735,15735,15736],{},"rotations",[1732,15738,15739],{},"The rotations of the box in radians about x,y,z",[1679,15741,1682,15743,15745,15746,15749,15750,15752],{"id":15742},"enum-uderror-udgeometry_initattributeint64struct-udgeometry-pgeometry-enum-udgeometrycomparator-comp-int64_t-value-int64_t-tolerance-enum-udstdattribute-attr-const-struct-udattributedescriptor-pdesc",[1684,15744,1686],{"href":1686}," udGeometry_InitAttributeInt64(struct udGeometry *pGeometry, enum udGeometryComparator comp, int64_t value, int64_t tolerance, enum ",[1684,15747,15748],{"href":2686},"udStdAttribute"," attr, const struct ",[1684,15751,9489],{"href":2686}," *pDesc)",[1689,15754,15755],{},"Helper to initialise an attribute equality filter, testing the attribute for equality with integer based comparitors",[1711,15757,15758,15766],{},[1714,15759,15760],{},[1717,15761,15762,15764],{},[1720,15763,1722],{},[1720,15765,1725],{},[1727,15767,15768,15776,15786,15796,15806,15816],{},[1717,15769,15770,15774],{},[1732,15771,15772],{},[1735,15773,15121],{},[1732,15775,15124],{},[1717,15777,15778,15783],{},[1732,15779,15780],{},[1735,15781,15782],{},"comp",[1732,15784,15785],{},"The type of comparison, for example udGC_EQ for equality comparison",[1717,15787,15788,15793],{},[1732,15789,15790],{},[1735,15791,15792],{},"value",[1732,15794,15795],{},"Value to compare node’s attribute with",[1717,15797,15798,15803],{},[1732,15799,15800],{},[1735,15801,15802],{},"tolerance",[1732,15804,15805],{},"For udGC_EQ comparisons, values +\u002F- the tolerance is considered a match (0.0 for exact match)",[1717,15807,15808,15813],{},[1732,15809,15810],{},[1735,15811,15812],{},"attr",[1732,15814,15815],{},"Attribute from standard attribute set (ignored if pDesc is non-null, use udSA_Count)",[1717,15817,15818,15823],{},[1732,15819,15820],{},[1735,15821,15822],{},"pDesc",[1732,15824,15825],{},"A descriptor for testing non-standard attributes (pass null if using a standard attribute)",[1679,15827,1682,15829,15831,15832,15749,15834,15752],{"id":15828},"enum-uderror-udgeometry_initattributefloat64struct-udgeometry-pgeometry-enum-udgeometrycomparator-comp-double-value-double-tolerance-enum-udstdattribute-attr-const-struct-udattributedescriptor-pdesc",[1684,15830,1686],{"href":1686}," udGeometry_InitAttributeFloat64(struct udGeometry *pGeometry, enum udGeometryComparator comp, double value, double tolerance, enum ",[1684,15833,15748],{"href":2686},[1684,15835,9489],{"href":2686},[1689,15837,15838],{},"Helper to initialise an attribute equality filter, testing the attribute for equality with float based comparitors",[1711,15840,15841,15849],{},[1714,15842,15843],{},[1717,15844,15845,15847],{},[1720,15846,1722],{},[1720,15848,1725],{},[1727,15850,15851,15859,15867,15875,15883,15891],{},[1717,15852,15853,15857],{},[1732,15854,15855],{},[1735,15856,15121],{},[1732,15858,15124],{},[1717,15860,15861,15865],{},[1732,15862,15863],{},[1735,15864,15782],{},[1732,15866,15785],{},[1717,15868,15869,15873],{},[1732,15870,15871],{},[1735,15872,15792],{},[1732,15874,15795],{},[1717,15876,15877,15881],{},[1732,15878,15879],{},[1735,15880,15802],{},[1732,15882,15805],{},[1717,15884,15885,15889],{},[1732,15886,15887],{},[1735,15888,15812],{},[1732,15890,15815],{},[1717,15892,15893,15897],{},[1732,15894,15895],{},[1735,15896,15822],{},[1732,15898,15825],{},[1679,15900,15902],{"id":15901},"void-udgeometry_deinitstruct-udgeometry-pgeometry","void udGeometry_Deinit(struct udGeometry *pGeometry)",[1689,15904,15905],{},"This cleans up internal allocations",[1711,15907,15908,15916],{},[1714,15909,15910],{},[1717,15911,15912,15914],{},[1720,15913,1722],{},[1720,15915,1725],{},[1727,15917,15918],{},[1717,15919,15920,15924],{},[1732,15921,15922],{},[1735,15923,15121],{},[1732,15925,15926],{},"The geometry to deinitialise",[1679,15928,15930],{"id":15929},"uint32_t-udgeometry_crcconst-struct-udgeometry-pgeometry","uint32_t udGeometry_CRC(const struct udGeometry *pGeometry)",[1689,15932,15933],{},"Return a crc of the geometry (and sub-geometry in the case of CSG etc)",[1711,15935,15936,15944],{},[1714,15937,15938],{},[1717,15939,15940,15942],{},[1720,15941,1722],{},[1720,15943,1725],{},[1727,15945,15946],{},[1717,15947,15948,15952],{},[1732,15949,15950],{},[1735,15951,15121],{},[1732,15953,15954],{},"Pointer to geometry",[1689,15956,15957,15959],{},[3673,15958,3675],{}," The CRC of the geometry, or zero if pGeometry is null",[1679,15961,1682,15963,15965],{"id":15962},"enum-uderror-udgeometry_hastypeconst-struct-udgeometry-pgeometry-enum-udgeometrytype-type",[1684,15964,1686],{"href":1686}," udGeometry_HasType(const struct udGeometry *pGeometry, enum udGeometryType type)",[1689,15967,15968],{},"Return true if the geometry (or sub-geometry in the case of CSG etc) contains the given type",[1711,15970,15971,15979],{},[1714,15972,15973],{},[1717,15974,15975,15977],{},[1720,15976,1722],{},[1720,15978,1725],{},[1727,15980,15981,15989],{},[1717,15982,15983,15987],{},[1732,15984,15985],{},[1735,15986,15121],{},[1732,15988,15954],{},[1717,15990,15991,15996],{},[1732,15992,15993],{},[1735,15994,15995],{},"type",[1732,15997,15998],{},"The type of geometry to test for",[1689,16000,16001,16003],{},[3673,16002,3675],{}," udE_Success if the type is present in the geometry, otherwise udE_NotFound",[1679,16005,1682,16007,16009],{"id":16006},"enum-uderror-udgeometry_createstruct-udgeometry-ppgeometry",[1684,16008,1686],{"href":1686}," udGeometry_Create(struct udGeometry **ppGeometry)",[1689,16011,16012],{},"Helper to create a pointer to an allocated udGeometry struct. This is a convenience for wrapping libraries that do not need or have a concept of the underlying object It is NOT recommended to use this function in applications where creating a udGeometry struct directly is possible (either using an allocation or on stack)",[1711,16014,16015,16023],{},[1714,16016,16017],{},[1717,16018,16019,16021],{},[1720,16020,1722],{},[1720,16022,1725],{},[1727,16024,16025],{},[1717,16026,16027,16032],{},[1732,16028,16029],{},[1735,16030,16031],{},"ppGeometry",[1732,16033,16034],{},"Pointer to memory location with which to return the allocated struct",[1679,16036,16038],{"id":16037},"void-udgeometry_destroystruct-udgeometry-ppgeometry","void udGeometry_Destroy(struct udGeometry **ppGeometry)",[1689,16040,16041],{},"Free the struct allocated by udGeometry_Create udGeometry_DeInit should be called on the struct first before calling this function. Calling this function on a udGeometry struct that was not allocated using udGeometry_Create may result in a crash",[1711,16043,16044,16052],{},[1714,16045,16046],{},[1717,16047,16048,16050],{},[1720,16049,1722],{},[1720,16051,1725],{},[1727,16053,16054],{},[1717,16055,16056,16060],{},[1732,16057,16058],{},[1735,16059,16031],{},[1732,16061,16062],{},"Pointer to memory location of struct to free",[1674,16064,1796],{"id":1795},[1679,16066,16068],{"id":16067},"struct-udgeometryvoxelnode","struct udGeometryVoxelNode",[1689,16070,16071],{},"The geometric representation of a Node in a Unlimited Detail Model.",[1711,16073,16074,16084],{},[1714,16075,16076],{},[1717,16077,16078,16080,16082],{},[1720,16079,1812],{},[1720,16081,1815],{},[1720,16083,1725],{},[1727,16085,16086,16100,16113,16128,16142],{},[1717,16087,16088,16093,16097],{},[1732,16089,16090],{},[1735,16091,16092],{},"minPos",[1732,16094,16095],{},[1735,16096,5279],{},[1732,16098,16099],{},"The Bottom, Left, Front corner of the voxel (closest to the origin).",[1717,16101,16102,16106,16110],{},[1732,16103,16104],{},[1735,16105,5124],{},[1732,16107,16108],{},[1735,16109,5100],{},[1732,16111,16112],{},"The half size of the voxel (which is the same size as this voxels children).",[1717,16114,16115,16120,16125],{},[1732,16116,16117],{},[1735,16118,16119],{},"pNode",[1732,16121,16122],{},[1735,16123,16124],{},"const struct udNode \\*",[1732,16126,16127],{},"Optional pointer to the node for testing attributes.",[1717,16129,16130,16135,16139],{},[1732,16131,16132],{},[1735,16133,16134],{},"childDepth",[1732,16136,16137],{},[1735,16138,4301],{},[1732,16140,16141],{},"Optional depth down the tree value for additional context (0=unspecified, 1=root etc).",[1717,16143,16144,16149,16153],{},[1732,16145,16146],{},[1735,16147,16148],{},"flags",[1732,16150,16151],{},[1735,16152,4301],{},[1732,16154,16155],{},"Optional flags, set from enum udGeometryVoxelNodeFlags.",[1679,16157,16159],{"id":16158},"struct-udgeometrycirclexy","struct udGeometryCircleXY",[1689,16161,16162],{},"The geometric representation of a Circle.",[1711,16164,16165,16175],{},[1714,16166,16167],{},[1717,16168,16169,16171,16173],{},[1720,16170,1812],{},[1720,16172,1815],{},[1720,16174,1725],{},[1727,16176,16177,16190],{},[1717,16178,16179,16183,16187],{},[1732,16180,16181],{},[1735,16182,15170],{},[1732,16184,16185],{},[1735,16186,13917],{},[1732,16188,16189],{},"The centre of the circle.",[1717,16191,16192,16196,16200],{},[1732,16193,16194],{},[1735,16195,14072],{},[1732,16197,16198],{},[1735,16199,5100],{},[1732,16201,16202],{},"The radius of the circle.",[1679,16204,16206],{"id":16205},"struct-udgeometryrectanglexy","struct udGeometryRectangleXY",[1689,16208,16209],{},"The geometric representation of a Rectangle.",[1711,16211,16212,16222],{},[1714,16213,16214],{},[1717,16215,16216,16218,16220],{},[1720,16217,1812],{},[1720,16219,1815],{},[1720,16221,1725],{},[1727,16223,16224,16238],{},[1717,16225,16226,16231,16235],{},[1732,16227,16228],{},[1735,16229,16230],{},"minPoint",[1732,16232,16233],{},[1735,16234,13917],{},[1732,16236,16237],{},"The lowest point of the rectangle.",[1717,16239,16240,16245,16249],{},[1732,16241,16242],{},[1735,16243,16244],{},"maxPoint",[1732,16246,16247],{},[1735,16248,13917],{},[1732,16250,16251],{},"The highest point of the rectangle.",[1679,16253,16255],{"id":16254},"struct-udgeometrypolygonxyz","struct udGeometryPolygonXYZ",[1689,16257,16258],{},"The geometric representation of a Polygon.",[1711,16260,16261,16271],{},[1714,16262,16263],{},[1717,16264,16265,16267,16269],{},[1720,16266,1812],{},[1720,16268,1815],{},[1720,16270,1725],{},[1727,16272,16273,16286,16301,16314],{},[1717,16274,16275,16279,16283],{},[1732,16276,16277],{},[1735,16278,10938],{},[1732,16280,16281],{},[1735,16282,1831],{},[1732,16284,16285],{},"The number of points defining the polygon.",[1717,16287,16288,16293,16298],{},[1732,16289,16290],{},[1735,16291,16292],{},"pointsList",[1732,16294,16295],{},[1735,16296,16297],{},"udDouble3 \\*",[1732,16299,16300],{},"The list of points defining the polygon.",[1717,16302,16303,16307,16311],{},[1732,16304,16305],{},[1735,16306,15286],{},[1732,16308,16309],{},[1735,16310,5279],{},[1732,16312,16313],{},"The polygon normal.",[1717,16315,16316,16321,16326],{},[1732,16317,16318],{},[1735,16319,16320],{},"rotationQuat",[1732,16322,16323],{},[1735,16324,16325],{},"udDoubleQuat",[1732,16327,16328],{},"The rotation of the polygon compare to Z axis.",[1679,16330,16332],{"id":16331},"struct-udgeometrypolygonperspective","struct udGeometryPolygonPerspective",[1689,16334,16335],{},"The geometric representation of a Polygon with a perspective projection.",[1711,16337,16338,16348],{},[1714,16339,16340],{},[1717,16341,16342,16344,16346],{},[1720,16343,1812],{},[1720,16345,1815],{},[1720,16347,1725],{},[1727,16349,16350,16362,16374,16387,16401,16414,16427,16441,16455,16469,16483,16497],{},[1717,16351,16352,16356,16360],{},[1732,16353,16354],{},[1735,16355,10938],{},[1732,16357,16358],{},[1735,16359,1831],{},[1732,16361,16285],{},[1717,16363,16364,16368,16372],{},[1732,16365,16366],{},[1735,16367,16292],{},[1732,16369,16370],{},[1735,16371,16297],{},[1732,16373,16300],{},[1717,16375,16376,16380,16384],{},[1732,16377,16378],{},[1735,16379,16320],{},[1732,16381,16382],{},[1735,16383,5264],{},[1732,16385,16386],{},"The rotation of the polygon.",[1717,16388,16389,16394,16398],{},[1732,16390,16391],{},[1735,16392,16393],{},"worldToScreen",[1732,16395,16396],{},[1735,16397,5143],{},[1732,16399,16400],{},"The matrix to project from World space to Screen space.",[1717,16402,16403,16407,16411],{},[1732,16404,16405],{},[1735,16406,15341],{},[1732,16408,16409],{},[1735,16410,5143],{},[1732,16412,16413],{},"The matrix to project the points of the polygon.",[1717,16415,16416,16420,16424],{},[1732,16417,16418],{},[1735,16419,15351],{},[1732,16421,16422],{},[1735,16423,5143],{},[1732,16425,16426],{},"The camera matrix.",[1717,16428,16429,16434,16438],{},[1732,16430,16431],{},[1735,16432,16433],{},"normRight",[1732,16435,16436],{},[1735,16437,5279],{},[1732,16439,16440],{},"The normal on the right of the plane.",[1717,16442,16443,16448,16452],{},[1732,16444,16445],{},[1735,16446,16447],{},"normLeft",[1732,16449,16450],{},[1735,16451,5279],{},[1732,16453,16454],{},"The normal on the left of the plane.",[1717,16456,16457,16462,16466],{},[1732,16458,16459],{},[1735,16460,16461],{},"normTop",[1732,16463,16464],{},[1735,16465,5279],{},[1732,16467,16468],{},"The normal on the top of the plane.",[1717,16470,16471,16476,16480],{},[1732,16472,16473],{},[1735,16474,16475],{},"normBottom",[1732,16477,16478],{},[1735,16479,5279],{},[1732,16481,16482],{},"The normal on the bottom of the plane.",[1717,16484,16485,16490,16494],{},[1732,16486,16487],{},[1735,16488,16489],{},"nearPlane",[1732,16491,16492],{},[1735,16493,5100],{},[1732,16495,16496],{},"the near plane distance",[1717,16498,16499,16504,16508],{},[1732,16500,16501],{},[1735,16502,16503],{},"farPlane",[1732,16505,16506],{},[1735,16507,5100],{},[1732,16509,16510],{},"The far plane distance.",[1679,16512,16514],{"id":16513},"struct-udgeometrycapsule","struct udGeometryCapsule",[1689,16516,16517],{},"Stores the properties of a geometric capsule",[1711,16519,16520,16530],{},[1714,16521,16522],{},[1717,16523,16524,16526,16528],{},[1720,16525,1812],{},[1720,16527,1815],{},[1720,16529,1725],{},[1727,16531,16532,16545,16558,16571,16585],{},[1717,16533,16534,16538,16542],{},[1732,16535,16536],{},[1735,16537,15218],{},[1732,16539,16540],{},[1735,16541,5279],{},[1732,16543,16544],{},"One end of the line.",[1717,16546,16547,16551,16555],{},[1732,16548,16549],{},[1735,16550,15228],{},[1732,16552,16553],{},[1735,16554,5279],{},[1732,16556,16557],{},"The other end of the line.",[1717,16559,16560,16564,16568],{},[1732,16561,16562],{},[1735,16563,14072],{},[1732,16565,16566],{},[1735,16567,5100],{},[1732,16569,16570],{},"The radius around the line.",[1717,16572,16573,16578,16582],{},[1732,16574,16575],{},[1735,16576,16577],{},"axisVector",[1732,16579,16580],{},[1735,16581,5279],{},[1732,16583,16584],{},"The vector of the line.",[1717,16586,16587,16592,16596],{},[1732,16588,16589],{},[1735,16590,16591],{},"length",[1732,16593,16594],{},[1735,16595,5100],{},[1732,16597,16598],{},"The length of the line.",[1679,16600,16602],{"id":16601},"struct-udgeometrysphere","struct udGeometrySphere",[1689,16604,16605],{},"Stores the properties of a geometric sphere",[1711,16607,16608,16618],{},[1714,16609,16610],{},[1717,16611,16612,16614,16616],{},[1720,16613,1812],{},[1720,16615,1815],{},[1720,16617,1725],{},[1727,16619,16620,16633],{},[1717,16621,16622,16626,16630],{},[1732,16623,16624],{},[1735,16625,15574],{},[1732,16627,16628],{},[1735,16629,5279],{},[1732,16631,16632],{},"The center of the sphere.",[1717,16634,16635,16639,16643],{},[1732,16636,16637],{},[1735,16638,14072],{},[1732,16640,16641],{},[1735,16642,5100],{},[1732,16644,16645],{},"The radius of the sphere.",[1679,16647,16649],{"id":16648},"struct-udgeometryhalfspace","struct udGeometryHalfSpace",[1689,16651,16652],{},"Stores the properties of a geometric half space",[1711,16654,16655,16665],{},[1714,16656,16657],{},[1717,16658,16659,16661,16663],{},[1720,16660,1812],{},[1720,16662,1815],{},[1720,16664,1725],{},[1727,16666,16667],{},[1717,16668,16669,16674,16678],{},[1732,16670,16671],{},[1735,16672,16673],{},"plane",[1732,16675,16676],{},[1735,16677,5264],{},[1732,16679,16680],{},"The parameters to define the plane (normal XYZ and offset from origin).",[1679,16682,16684],{"id":16683},"struct-udgeometryaabb","struct udGeometryAABB",[1689,16686,16687],{},"Stores the properties of a geometric axis aligned bounding box",[1711,16689,16690,16700],{},[1714,16691,16692],{},[1717,16693,16694,16696,16698],{},[1720,16695,1812],{},[1720,16697,1815],{},[1720,16699,1725],{},[1727,16701,16702,16715],{},[1717,16703,16704,16708,16712],{},[1732,16705,16706],{},[1735,16707,15574],{},[1732,16709,16710],{},[1735,16711,5279],{},[1732,16713,16714],{},"The point at the center of the AABB.",[1717,16716,16717,16721,16725],{},[1732,16718,16719],{},[1735,16720,15678],{},[1732,16722,16723],{},[1735,16724,5279],{},[1732,16726,16727],{},"The half space size of the AABB.",[1679,16729,16731],{"id":16730},"struct-udgeometryobb","struct udGeometryOBB",[1689,16733,16734],{},"Stores the properties of a geometric axis aligned bounding box (extending AABB)",[1711,16736,16737,16747],{},[1714,16738,16739],{},[1717,16740,16741,16743,16745],{},[1720,16742,1812],{},[1720,16744,1815],{},[1720,16746,1725],{},[1727,16748,16749,16761,16773],{},[1717,16750,16751,16755,16759],{},[1732,16752,16753],{},[1735,16754,15574],{},[1732,16756,16757],{},[1735,16758,5279],{},[1732,16760,16714],{},[1717,16762,16763,16767,16771],{},[1732,16764,16765],{},[1735,16766,15678],{},[1732,16768,16769],{},[1735,16770,5279],{},[1732,16772,16727],{},[1717,16774,16775,16780,16784],{},[1732,16776,16777],{},[1735,16778,16779],{},"rotationMatrix",[1732,16781,16782],{},[1735,16783,5143],{},[1732,16785,16786],{},"The transform that represents the rotation.",[1679,16788,16790],{"id":16789},"struct-udgeometryinverse","struct udGeometryInverse",[1689,16792,16793],{},"Stores the properties of an inversed udGeometry node",[1711,16795,16796,16806],{},[1714,16797,16798],{},[1717,16799,16800,16802,16804],{},[1720,16801,1812],{},[1720,16803,1815],{},[1720,16805,1725],{},[1727,16807,16808,16823],{},[1717,16809,16810,16815,16820],{},[1732,16811,16812],{},[1735,16813,16814],{},"pInverseOf",[1732,16816,16817],{},[1735,16818,16819],{},"const struct udGeometry \\*",[1732,16821,16822],{},"The inverse geometry.",[1717,16824,16825,16830,16834],{},[1732,16826,16827],{},[1735,16828,16829],{},"owns",[1732,16831,16832],{},[1735,16833,1846],{},[1732,16835,16836],{},"If non-zero pInverseOf is owned by this need (and will need to be cleaned up).",[1679,16838,16840],{"id":16839},"struct-udgeometrycsg","struct udGeometryCSG",[1689,16842,16843],{},"Stores the properties of a CSG udGeometry node",[1711,16845,16846,16856],{},[1714,16847,16848],{},[1717,16849,16850,16852,16854],{},[1720,16851,1812],{},[1720,16853,1815],{},[1720,16855,1725],{},[1727,16857,16858,16872,16886,16900],{},[1717,16859,16860,16865,16869],{},[1732,16861,16862],{},[1735,16863,16864],{},"pFirst",[1732,16866,16867],{},[1735,16868,16819],{},[1732,16870,16871],{},"The first geometry.",[1717,16873,16874,16879,16883],{},[1732,16875,16876],{},[1735,16877,16878],{},"pSecond",[1732,16880,16881],{},[1735,16882,16819],{},[1732,16884,16885],{},"The second geometry.",[1717,16887,16888,16893,16897],{},[1732,16889,16890],{},[1735,16891,16892],{},"operation",[1732,16894,16895],{},[1735,16896,14947],{},[1732,16898,16899],{},"The operation applied to the 2 geometries.",[1717,16901,16902,16906,16910],{},[1732,16903,16904],{},[1735,16905,16829],{},[1732,16907,16908],{},[1735,16909,1846],{},[1732,16911,16912],{},"non zero if it owns both children",[1679,16914,16916],{"id":16915},"struct-udgeometryattribute","struct udGeometryAttribute",[1689,16918,16919],{},"Stores the properties of a attribute udGeometry node",[1711,16921,16922,16932],{},[1714,16923,16924],{},[1717,16925,16926,16928,16930],{},[1720,16927,1812],{},[1720,16929,1815],{},[1720,16931,1725],{},[1727,16933,16934,16948,16963,16977,16991,17006,17020,17034,17048],{},[1717,16935,16936,16940,16945],{},[1732,16937,16938],{},[1735,16939,15812],{},[1732,16941,16942],{},[1735,16943,16944],{},"enum [udStdAttribute](udAttributes.md)",[1732,16946,16947],{},"For custom attributes this should be udSA_Count, otherwise the appropriate enum value.",[1717,16949,16950,16955,16960],{},[1732,16951,16952],{},[1735,16953,16954],{},"desc",[1732,16956,16957],{},[1735,16958,16959],{},"struct [udAttributeDescriptor](udAttributes.md)",[1732,16961,16962],{},"Attribute descriptor.",[1717,16964,16965,16970,16974],{},[1732,16966,16967],{},[1735,16968,16969],{},"u",[1732,16971,16972],{},[1735,16973,5675],{},[1732,16975,16976],{},"Any unsigned integer typed values.",[1717,16978,16979,16984,16988],{},[1732,16980,16981],{},[1735,16982,16983],{},"i",[1732,16985,16986],{},[1735,16987,1932],{},[1732,16989,16990],{},"Any signed integer typed values.",[1717,16992,16993,16998,17003],{},[1732,16994,16995],{},[1735,16996,16997],{},"f32",[1732,16999,17000],{},[1735,17001,17002],{},"float",[1732,17004,17005],{},"Any float typed values.",[1717,17007,17008,17013,17017],{},[1732,17009,17010],{},[1735,17011,17012],{},"f64",[1732,17014,17015],{},[1735,17016,5100],{},[1732,17018,17019],{},"Any double-precision typed values.",[1717,17021,17022,17026,17031],{},[1732,17023,17024],{},[1735,17025,15792],{},[1732,17027,17028],{},[1735,17029,17030],{},"union udGeometryAttribute::[anonymous]",[1732,17032,17033],{},"The value for the comparison, with the expected type derived from the type in the descriptor.",[1717,17035,17036,17041,17045],{},[1732,17037,17038],{},[1735,17039,17040],{},"param",[1732,17042,17043],{},[1735,17044,17030],{},[1732,17046,17047],{},"Optional comparitor-specific parameter, such as the tolerance when using the EQ operator. Default to zero.",[1717,17049,17050,17054,17058],{},[1732,17051,17052],{},[1735,17053,15782],{},[1732,17055,17056],{},[1735,17057,14804],{},[1732,17059,17060],{},"The comparison operator.",[1679,17062,17064],{"id":17063},"struct-udgeometry","struct udGeometry",[1689,17066,17067],{},"Stores the information required for all udGeometry shapes",[1693,17069,17070],{},[1689,17071,17072,17074],{},[1698,17073,1708],{},"\nThis struct will change drastically as udSDK shifts to programable query filters",[1711,17076,17077,17087],{},[1714,17078,17079],{},[1717,17080,17081,17083,17085],{},[1720,17082,1812],{},[1720,17084,1815],{},[1720,17086,1725],{},[1727,17088,17089,17104,17119,17134,17149,17162,17175,17188,17201,17214,17227,17240,17253,17266,17279,17292,17304,17319],{},[1717,17090,17091,17096,17101],{},[1732,17092,17093],{},[1735,17094,17095],{},"pTestFunc",[1732,17097,17098],{},[1735,17099,17100],{},"udGeometryTestFunc \\*",[1732,17102,17103],{},"The function to call to test the geometry.",[1717,17105,17106,17111,17116],{},[1732,17107,17108],{},[1735,17109,17110],{},"pTransformFunc",[1732,17112,17113],{},[1735,17114,17115],{},"udGeometryTransform \\*",[1732,17117,17118],{},"The function to transform this geometry using a linear matrix.",[1717,17120,17121,17126,17131],{},[1732,17122,17123],{},[1735,17124,17125],{},"pExtraCRCFunc",[1732,17127,17128],{},[1735,17129,17130],{},"udGeometryCrc \\*",[1732,17132,17133],{},"When non-null, the function to perform crc calculation on ADDITIONAL data outside the base structure that represents the geometry (0 is valid for no extra data).",[1717,17135,17136,17141,17146],{},[1732,17137,17138],{},[1735,17139,17140],{},"pDeinitFunc",[1732,17142,17143],{},[1735,17144,17145],{},"udGeometryDeinit \\*",[1732,17147,17148],{},"The function that is called when this is cleaned up.",[1717,17150,17151,17156,17160],{},[1732,17152,17153],{},[1735,17154,17155],{},"inverse",[1732,17157,17158],{},[1735,17159,16790],{},[1732,17161],{},[1717,17163,17164,17169,17173],{},[1732,17165,17166],{},[1735,17167,17168],{},"circleXY",[1732,17170,17171],{},[1735,17172,16159],{},[1732,17174],{},[1717,17176,17177,17182,17186],{},[1732,17178,17179],{},[1735,17180,17181],{},"rectangleXY",[1732,17183,17184],{},[1735,17185,16206],{},[1732,17187],{},[1717,17189,17190,17195,17199],{},[1732,17191,17192],{},[1735,17193,17194],{},"polygonXYZ",[1732,17196,17197],{},[1735,17198,16255],{},[1732,17200],{},[1717,17202,17203,17208,17212],{},[1732,17204,17205],{},[1735,17206,17207],{},"polygonPerspective",[1732,17209,17210],{},[1735,17211,16332],{},[1732,17213],{},[1717,17215,17216,17221,17225],{},[1732,17217,17218],{},[1735,17219,17220],{},"capsule",[1732,17222,17223],{},[1735,17224,16514],{},[1732,17226],{},[1717,17228,17229,17234,17238],{},[1732,17230,17231],{},[1735,17232,17233],{},"sphere",[1732,17235,17236],{},[1735,17237,16602],{},[1732,17239],{},[1717,17241,17242,17247,17251],{},[1732,17243,17244],{},[1735,17245,17246],{},"halfSpace",[1732,17248,17249],{},[1735,17250,16649],{},[1732,17252],{},[1717,17254,17255,17260,17264],{},[1732,17256,17257],{},[1735,17258,17259],{},"aabb",[1732,17261,17262],{},[1735,17263,16684],{},[1732,17265],{},[1717,17267,17268,17273,17277],{},[1732,17269,17270],{},[1735,17271,17272],{},"obb",[1732,17274,17275],{},[1735,17276,16731],{},[1732,17278],{},[1717,17280,17281,17286,17290],{},[1732,17282,17283],{},[1735,17284,17285],{},"csg",[1732,17287,17288],{},[1735,17289,16840],{},[1732,17291],{},[1717,17293,17294,17298,17302],{},[1732,17295,17296],{},[1735,17297,3753],{},[1732,17299,17300],{},[1735,17301,16916],{},[1732,17303],{},[1717,17305,17306,17311,17316],{},[1732,17307,17308],{},[1735,17309,17310],{},"data",[1732,17312,17313],{},[1735,17314,17315],{},"union udGeometry::[anonymous]",[1732,17317,17318],{},"The geometry used.",[1717,17320,17321,17325,17329],{},[1732,17322,17323],{},[1735,17324,15995],{},[1732,17326,17327],{},[1735,17328,14652],{},[1732,17330,17331],{},"The type of the geometry for internal verification.",{"title":2049,"searchDepth":2050,"depth":2050,"links":17333},[17334,17338,17345,17385],{"id":14631,"depth":2050,"text":14632,"children":17335},[17336,17337],{"id":14635,"depth":2055,"text":14636},{"id":14642,"depth":2055,"text":14643},{"id":2697,"depth":2050,"text":2698,"children":17339},[17340,17341,17342,17343,17344],{"id":14651,"depth":2055,"text":14652},{"id":14803,"depth":2055,"text":14804},{"id":14906,"depth":2055,"text":14907},{"id":14946,"depth":2055,"text":14947},{"id":14999,"depth":2055,"text":15000},{"id":1676,"depth":2050,"text":1677,"children":17346},[17347,17348,17350,17352,17354,17356,17358,17360,17362,17364,17366,17368,17370,17372,17374,17376,17378,17379,17380,17382,17384],{"id":15081,"depth":2055,"text":15082},{"id":15088,"depth":2055,"text":17349},"enum udError udGeometryTransform(const struct udGeometry *pFilterIn, struct udGeometry *pFilterOut, const udDouble4x4 *pMatrix)",{"id":15096,"depth":2055,"text":17351},"enum udError udGeometry_InitInverse(struct udGeometry *pGeometry, const struct udGeometry *pSource)",{"id":15137,"depth":2055,"text":17353},"enum udError udGeometry_InitCircleXY(struct udGeometry *pGeometry, const udDouble2 centre, double radius)",{"id":15185,"depth":2055,"text":17355},"enum udError udGeometry_InitRectangleXY(struct udGeometry *pGeometry, const udDouble2 point1, const udDouble2 point2)",{"id":15234,"depth":2055,"text":17357},"enum udError udGeometry_InitPolygonXY(struct udGeometry *pGeometry, const udDouble3 *pXYCoords, uint32_t count, const udDouble3 polygonNomal)",{"id":15292,"depth":2055,"text":17359},"enum udError udGeometry_InitPolygonPerspective(struct udGeometry *pGeometry, const udDouble2 *pXYCoords, uint32_t count, udDouble4x4 projectionMatrix, udDouble4x4 cameraMatrix, double nearPlaneOffset, double farPlaneOffset)",{"id":15377,"depth":2055,"text":17361},"enum udError udGeometry_InitCSG(struct udGeometry *pGeometry, const struct udGeometry *pGeometry1, const struct udGeometry *pGeometry2, enum udGeometryCSGOperation function)",{"id":15436,"depth":2055,"text":17363},"enum udError udGeometry_InitHalfSpace(struct udGeometry *pGeometry, const udDouble3 point, const udDouble3 normal)",{"id":15485,"depth":2055,"text":17365},"enum udError udGeometry_InitCapsule(struct udGeometry *pGeometry, const udDouble3 point1, const udDouble3 point2, double radius)",{"id":15541,"depth":2055,"text":17367},"enum udError udGeometry_InitSphere(struct udGeometry *pGeometry, const udDouble3 center, double radius)",{"id":15589,"depth":2055,"text":17369},"enum udError udGeometry_InitAABBFromMinMax(struct udGeometry *pGeometry, const udDouble3 point1, const udDouble3 point2)",{"id":15636,"depth":2055,"text":17371},"enum udError udGeometry_InitAABBFromCentreExtents(struct udGeometry *pGeometry, const udDouble3 centre, const udDouble3 extents)",{"id":15684,"depth":2055,"text":17373},"enum udError udGeometry_InitOBB(struct udGeometry *pGeometry, const udDouble3 centerPoint, const udDouble3 extents, const udDouble3 rotations)",{"id":15742,"depth":2055,"text":17375},"enum udError udGeometry_InitAttributeInt64(struct udGeometry *pGeometry, enum udGeometryComparator comp, int64_t value, int64_t tolerance, enum udStdAttribute attr, const struct udAttributeDescriptor *pDesc)",{"id":15828,"depth":2055,"text":17377},"enum udError udGeometry_InitAttributeFloat64(struct udGeometry *pGeometry, enum udGeometryComparator comp, double value, double tolerance, enum udStdAttribute attr, const struct udAttributeDescriptor *pDesc)",{"id":15901,"depth":2055,"text":15902},{"id":15929,"depth":2055,"text":15930},{"id":15962,"depth":2055,"text":17381},"enum udError udGeometry_HasType(const struct udGeometry *pGeometry, enum udGeometryType type)",{"id":16006,"depth":2055,"text":17383},"enum udError udGeometry_Create(struct udGeometry **ppGeometry)",{"id":16037,"depth":2055,"text":16038},{"id":1795,"depth":2050,"text":1796,"children":17386},[17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400],{"id":16067,"depth":2055,"text":16068},{"id":16158,"depth":2055,"text":16159},{"id":16205,"depth":2055,"text":16206},{"id":16254,"depth":2055,"text":16255},{"id":16331,"depth":2055,"text":16332},{"id":16513,"depth":2055,"text":16514},{"id":16601,"depth":2055,"text":16602},{"id":16648,"depth":2055,"text":16649},{"id":16683,"depth":2055,"text":16684},{"id":16730,"depth":2055,"text":16731},{"id":16789,"depth":2055,"text":16790},{"id":16839,"depth":2055,"text":16840},{"id":16915,"depth":2055,"text":16916},{"id":17063,"depth":2055,"text":17064},"The udGeometry object provides an interface to filter Nuclideon Unlimited Detail models using geometric filters.",{},"\u002Fguide\u002Fudsdk\u002Fudgeometry",{"title":14618,"description":17401},"guide\u002Fudsdk\u002FudGeometry","tZX1Rl4xTb3RDJQ_FxzMDEWxmkusNDY_bqi_sPvPDsg",{"id":17408,"title":17409,"body":17410,"date":7,"description":2049,"extension":2064,"meta":17675,"navigation":43,"path":17676,"seo":17677,"stem":17678,"__hash__":17679},"udsdkguide\u002Fguide\u002Fudsdk\u002FudMath.md","udMath",{"type":1667,"value":17411,"toc":17619},[17412,17415,17417,17421,17425,17429,17433,17437,17441,17445,17449,17453,17457,17461,17465,17469,17473,17477,17481,17485,17489,17493,17497,17501,17505,17507,17511,17515,17519,17523,17527,17531,17535,17539,17543,17547,17551,17555,17559,17563,17567,17571,17575,17579,17583,17587,17591,17595,17599,17603,17607,17611,17615],[1670,17413,17409],{"id":17414},"udmath",[1674,17416,11050],{"id":11049},[1679,17418,17420],{"id":17419},"ud_pi","UD_PI",[1679,17422,17424],{"id":17423},"ud_2pi","UD_2PI",[1679,17426,17428],{"id":17427},"ud_half_pi","UD_HALF_PI",[1679,17430,17432],{"id":17431},"ud_root_2","UD_ROOT_2",[1679,17434,17436],{"id":17435},"ud_inv_root_2","UD_INV_ROOT_2",[1679,17438,17440],{"id":17439},"ud_rad2degval","UD_RAD2DEGVAL",[1679,17442,17444],{"id":17443},"ud_deg2radval","UD_DEG2RADVAL",[1679,17446,17448],{"id":17447},"ud_rad2degrad","UD_RAD2DEG(rad)",[1679,17450,17452],{"id":17451},"ud_deg2raddeg","UD_DEG2RAD(deg)",[1679,17454,17456],{"id":17455},"ud_pif","UD_PIf",[1679,17458,17460],{"id":17459},"ud_2pif","UD_2PIf",[1679,17462,17464],{"id":17463},"ud_half_pif","UD_HALF_PIf",[1679,17466,17468],{"id":17467},"ud_root_2f","UD_ROOT_2f",[1679,17470,17472],{"id":17471},"ud_inv_root_2f","UD_INV_ROOT_2f",[1679,17474,17476],{"id":17475},"ud_rad2degvalf","UD_RAD2DEGVALf",[1679,17478,17480],{"id":17479},"ud_deg2radvalf","UD_DEG2RADVALf",[1679,17482,17484],{"id":17483},"ud_rad2degfrad","UD_RAD2DEGf(rad)",[1679,17486,17488],{"id":17487},"ud_deg2radfdeg","UD_DEG2RADf(deg)",[1679,17490,17492],{"id":17491},"ud_epsilon","UD_EPSILON",[1679,17494,17496],{"id":17495},"udmathdecl2type-name","udMathDecl2(type, name)",[1679,17498,17500],{"id":17499},"udmathdecl3type-name","udMathDecl3(type, name)",[1679,17502,17504],{"id":17503},"udmathdecl4type-name","udMathDecl4(type, name)",[1674,17506,1677],{"id":1676},[1679,17508,17510],{"id":17509},"udmathdecl2int16_t-udshort2","udMathDecl2(int16_t, udShort2)",[1679,17512,17514],{"id":17513},"udmathdecl3int16_t-udshort3","udMathDecl3(int16_t, udShort3)",[1679,17516,17518],{"id":17517},"udmathdecl4int16_t-udshort4","udMathDecl4(int16_t, udShort4)",[1679,17520,17522],{"id":17521},"udmathdecl2int32_t-udint2","udMathDecl2(int32_t, udInt2)",[1679,17524,17526],{"id":17525},"udmathdecl3int32_t-udint3","udMathDecl3(int32_t, udInt3)",[1679,17528,17530],{"id":17529},"udmathdecl4int32_t-udint4","udMathDecl4(int32_t, udInt4)",[1679,17532,17534],{"id":17533},"udmathdecl2int64_t-udlong2","udMathDecl2(int64_t, udLong2)",[1679,17536,17538],{"id":17537},"udmathdecl3int64_t-udlong3","udMathDecl3(int64_t, udLong3)",[1679,17540,17542],{"id":17541},"udmathdecl4int64_t-udlong4","udMathDecl4(int64_t, udLong4)",[1679,17544,17546],{"id":17545},"udmathdecl2uint16_t-udushort2","udMathDecl2(uint16_t, udUShort2)",[1679,17548,17550],{"id":17549},"udmathdecl3uint16_t-udushort3","udMathDecl3(uint16_t, udUShort3)",[1679,17552,17554],{"id":17553},"udmathdecl4uint16_t-udushort4","udMathDecl4(uint16_t, udUShort4)",[1679,17556,17558],{"id":17557},"udmathdecl2uint32_t-uduint2","udMathDecl2(uint32_t, udUInt2)",[1679,17560,17562],{"id":17561},"udmathdecl3uint32_t-uduint3","udMathDecl3(uint32_t, udUInt3)",[1679,17564,17566],{"id":17565},"udmathdecl4uint32_t-uduint4","udMathDecl4(uint32_t, udUInt4)",[1679,17568,17570],{"id":17569},"udmathdecl2uint64_t-udulong2","udMathDecl2(uint64_t, udULong2)",[1679,17572,17574],{"id":17573},"udmathdecl3uint64_t-udulong3","udMathDecl3(uint64_t, udULong3)",[1679,17576,17578],{"id":17577},"udmathdecl4uint64_t-udulong4","udMathDecl4(uint64_t, udULong4)",[1679,17580,17582],{"id":17581},"udmathdecl2float-udfloat2","udMathDecl2(float, udFloat2)",[1679,17584,17586],{"id":17585},"udmathdecl3float-udfloat3","udMathDecl3(float, udFloat3)",[1679,17588,17590],{"id":17589},"udmathdecl4float-udfloat4","udMathDecl4(float, udFloat4)",[1679,17592,17594],{"id":17593},"udmathdecl2double-uddouble2","udMathDecl2(double, udDouble2)",[1679,17596,17598],{"id":17597},"udmathdecl3double-uddouble3","udMathDecl3(double, udDouble3)",[1679,17600,17602],{"id":17601},"udmathdecl4double-uddouble4","udMathDecl4(double, udDouble4)",[1679,17604,17606],{"id":17605},"udmathdecl4udfloat4-udfloat4x4","udMathDecl4(udFloat4, udFloat4x4)",[1679,17608,17610],{"id":17609},"udmathdecl4uddouble4-uddouble4x4","udMathDecl4(udDouble4, udDouble4x4)",[1679,17612,17614],{"id":17613},"udmathdecl4float-udfloatquat","udMathDecl4(float, udFloatQuat)",[1679,17616,17618],{"id":17617},"udmathdecl4double-uddoublequat","udMathDecl4(double, udDoubleQuat)",{"title":2049,"searchDepth":2050,"depth":2050,"links":17620},[17621,17645],{"id":11049,"depth":2050,"text":11050,"children":17622},[17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644],{"id":17419,"depth":2055,"text":17420},{"id":17423,"depth":2055,"text":17424},{"id":17427,"depth":2055,"text":17428},{"id":17431,"depth":2055,"text":17432},{"id":17435,"depth":2055,"text":17436},{"id":17439,"depth":2055,"text":17440},{"id":17443,"depth":2055,"text":17444},{"id":17447,"depth":2055,"text":17448},{"id":17451,"depth":2055,"text":17452},{"id":17455,"depth":2055,"text":17456},{"id":17459,"depth":2055,"text":17460},{"id":17463,"depth":2055,"text":17464},{"id":17467,"depth":2055,"text":17468},{"id":17471,"depth":2055,"text":17472},{"id":17475,"depth":2055,"text":17476},{"id":17479,"depth":2055,"text":17480},{"id":17483,"depth":2055,"text":17484},{"id":17487,"depth":2055,"text":17488},{"id":17491,"depth":2055,"text":17492},{"id":17495,"depth":2055,"text":17496},{"id":17499,"depth":2055,"text":17500},{"id":17503,"depth":2055,"text":17504},{"id":1676,"depth":2050,"text":1677,"children":17646},[17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674],{"id":17509,"depth":2055,"text":17510},{"id":17513,"depth":2055,"text":17514},{"id":17517,"depth":2055,"text":17518},{"id":17521,"depth":2055,"text":17522},{"id":17525,"depth":2055,"text":17526},{"id":17529,"depth":2055,"text":17530},{"id":17533,"depth":2055,"text":17534},{"id":17537,"depth":2055,"text":17538},{"id":17541,"depth":2055,"text":17542},{"id":17545,"depth":2055,"text":17546},{"id":17549,"depth":2055,"text":17550},{"id":17553,"depth":2055,"text":17554},{"id":17557,"depth":2055,"text":17558},{"id":17561,"depth":2055,"text":17562},{"id":17565,"depth":2055,"text":17566},{"id":17569,"depth":2055,"text":17570},{"id":17573,"depth":2055,"text":17574},{"id":17577,"depth":2055,"text":17578},{"id":17581,"depth":2055,"text":17582},{"id":17585,"depth":2055,"text":17586},{"id":17589,"depth":2055,"text":17590},{"id":17593,"depth":2055,"text":17594},{"id":17597,"depth":2055,"text":17598},{"id":17601,"depth":2055,"text":17602},{"id":17605,"depth":2055,"text":17606},{"id":17609,"depth":2055,"text":17610},{"id":17613,"depth":2055,"text":17614},{"id":17617,"depth":2055,"text":17618},{},"\u002Fguide\u002Fudsdk\u002Fudmath",{"title":17409,"description":2049},"guide\u002Fudsdk\u002FudMath","f_rgyJzL7gqA233YR2PC_JhEnR-R8MEPG8EWfJvIfRA",{"id":17681,"title":17682,"body":17683,"date":7,"description":2049,"extension":2064,"meta":19370,"navigation":43,"path":19371,"seo":19372,"stem":19373,"__hash__":19374},"udsdkguide\u002Fguide\u002Fudsdk\u002FudMath_Inl.md","udMath_Inl",{"type":1667,"value":17684,"toc":19077},[17685,17688,17690,17698,17704,17710,17716,17720,17724,17728,17732,17736,17740,17744,17748,17752,17756,17760,17764,17768,17772,17776,17780,17784,17788,17792,17796,17800,17804,17808,17812,17816,17820,17824,17828,17832,17836,17840,17844,17848,17852,17856,17860,17864,17868,17872,17876,17880,17884,17888,17892,17905,17916,17927,17931,17935,17945,17955,17965,17969,17973,17983,17993,18003,18007,18011,18021,18031,18041,18047,18057,18067,18077,18089,18103,18116,18129,18137,18145,18153,18165,18177,18189,18197,18205,18213,18219,18236,18252,18268,18274,18284,18294,18304,18308,18318,18328,18338,18350,18360,18370,18380,18390,18400,18410,18422,18432,18440,18448,18456,18464,18472,18480,18488,18496,18504,18512,18520,18528,18536,18544,18552,18560,18568,18576,18584,18592,18600,18608,18618,18631,18641,18651,18661,18673,18685,18696,18706,18717,18728,18738,18748,18758,18768,18778,18788,18798,18804,18816,18822,18833,18844,18854,18866,18878,18890,18904,18916,18928,18940,18946,18952,18965,18977,18989,19002,19015,19028,19039,19047,19057,19067],[1670,17686,17682],{"id":17687},"udmath_inl",[1674,17689,1677],{"id":1676},[1679,17691,17693,17694],{"id":17692},"templatet-udhighestbitvaluet-i","template",[17695,17696,17697],"typename",{"t":2049},"T udHighestBitValue(T i)",[1679,17699,17693,17701],{"id":17700},"templatebool-udispoweroftwot-i",[17695,17702,17703],{"t":2049},"bool udIsPowerOfTwo(T i)",[1679,17705,17693,17707],{"id":17706},"templatet-udpoweroftwoabovet-v",[17695,17708,17709],{"t":2049},"T udPowerOfTwoAbove(T v)",[1679,17711,17693,17713],{"id":17712},"templatet-udroundevent-t",[17695,17714,17715],{"t":2049},"T udRoundEven(T t)",[1679,17717,17719],{"id":17718},"inline-float-udpowfloat-f-float-n","inline float udPow(float f, float n)",[1679,17721,17723],{"id":17722},"inline-double-udpowdouble-d-double-n","inline double udPow(double d, double n)",[1679,17725,17727],{"id":17726},"inline-float-udexpfloat-f","inline float udExp(float f)",[1679,17729,17731],{"id":17730},"inline-double-udexpdouble-d","inline double udExp(double d)",[1679,17733,17735],{"id":17734},"inline-float-udlognfloat-f","inline float udLogN(float f)",[1679,17737,17739],{"id":17738},"inline-double-udlogndouble-d","inline double udLogN(double d)",[1679,17741,17743],{"id":17742},"inline-float-udlog10float-f","inline float udLog10(float f)",[1679,17745,17747],{"id":17746},"inline-double-udlog10double-d","inline double udLog10(double d)",[1679,17749,17751],{"id":17750},"inline-float-udlogfloat-f-float-base","inline float udLog(float f, float base)",[1679,17753,17755],{"id":17754},"inline-double-udlogdouble-f-double-base","inline double udLog(double f, double base)",[1679,17757,17759],{"id":17758},"inline-float-udlog2float-f","inline float udLog2(float f)",[1679,17761,17763],{"id":17762},"inline-double-udlog2double-d","inline double udLog2(double d)",[1679,17765,17767],{"id":17766},"inline-float-udrsqrtfloat-f","inline float udRSqrt(float f)",[1679,17769,17771],{"id":17770},"inline-double-udrsqrtdouble-d","inline double udRSqrt(double d)",[1679,17773,17775],{"id":17774},"inline-float-udsqrtfloat-f","inline float udSqrt(float f)",[1679,17777,17779],{"id":17778},"inline-double-udsqrtdouble-d","inline double udSqrt(double d)",[1679,17781,17783],{"id":17782},"inline-float-udsinfloat-f","inline float udSin(float f)",[1679,17785,17787],{"id":17786},"inline-double-udsindouble-d","inline double udSin(double d)",[1679,17789,17791],{"id":17790},"inline-float-udcosfloat-f","inline float udCos(float f)",[1679,17793,17795],{"id":17794},"inline-double-udcosdouble-d","inline double udCos(double d)",[1679,17797,17799],{"id":17798},"inline-float-udtanfloat-f","inline float udTan(float f)",[1679,17801,17803],{"id":17802},"inline-double-udtandouble-d","inline double udTan(double d)",[1679,17805,17807],{"id":17806},"inline-float-udsinhfloat-f","inline float udSinh(float f)",[1679,17809,17811],{"id":17810},"inline-double-udsinhdouble-d","inline double udSinh(double d)",[1679,17813,17815],{"id":17814},"inline-float-udcoshfloat-f","inline float udCosh(float f)",[1679,17817,17819],{"id":17818},"inline-double-udcoshdouble-d","inline double udCosh(double d)",[1679,17821,17823],{"id":17822},"inline-float-udtanhfloat-f","inline float udTanh(float f)",[1679,17825,17827],{"id":17826},"inline-double-udtanhdouble-d","inline double udTanh(double d)",[1679,17829,17831],{"id":17830},"inline-float-udasinfloat-f","inline float udASin(float f)",[1679,17833,17835],{"id":17834},"inline-double-udasindouble-d","inline double udASin(double d)",[1679,17837,17839],{"id":17838},"inline-float-udacosfloat-f","inline float udACos(float f)",[1679,17841,17843],{"id":17842},"inline-double-udacosdouble-d","inline double udACos(double d)",[1679,17845,17847],{"id":17846},"inline-float-udatanfloat-f","inline float udATan(float f)",[1679,17849,17851],{"id":17850},"inline-double-udatandouble-d","inline double udATan(double d)",[1679,17853,17855],{"id":17854},"inline-float-udatan2float-y-float-x","inline float udATan2(float y, float x)",[1679,17857,17859],{"id":17858},"inline-double-udatan2double-y-double-x","inline double udATan2(double y, double x)",[1679,17861,17863],{"id":17862},"inline-float-udasinhfloat-f","inline float udASinh(float f)",[1679,17865,17867],{"id":17866},"inline-double-udasinhdouble-d","inline double udASinh(double d)",[1679,17869,17871],{"id":17870},"inline-float-udacoshfloat-f","inline float udACosh(float f)",[1679,17873,17875],{"id":17874},"inline-double-udacoshdouble-d","inline double udACosh(double d)",[1679,17877,17879],{"id":17878},"inline-float-udatanhfloat-f","inline float udATanh(float f)",[1679,17881,17883],{"id":17882},"inline-double-udatanhdouble-d","inline double udATanh(double d)",[1679,17885,17887],{"id":17886},"inline-float-udroundfloat-f","inline float udRound(float f)",[1679,17889,17891],{"id":17890},"inline-double-udrounddouble-d","inline double udRound(double d)",[1679,17893,17693,17895],{"id":17894},"templateudvector2-udroundconst-udvector2-v",[17695,17896,17897,17898],{"t":2049},"udVector2",[17899,17900,17901,17902],"t",{}," udRound(const udVector2",[17899,17903,17904],{}," &v)",[1679,17906,17693,17908],{"id":17907},"templateudvector3-udroundconst-udvector3-v",[17695,17909,17910,17911],{"t":2049},"udVector3",[17899,17912,17913,17914],{}," udRound(const udVector3",[17899,17915,17904],{},[1679,17917,17693,17919],{"id":17918},"templateudvector4-udroundconst-udvector4-v",[17695,17920,17921,17922],{"t":2049},"udVector4",[17899,17923,17924,17925],{}," udRound(const udVector4",[17899,17926,17904],{},[1679,17928,17930],{"id":17929},"inline-float-udfloorfloat-f","inline float udFloor(float f)",[1679,17932,17934],{"id":17933},"inline-double-udfloordouble-d","inline double udFloor(double d)",[1679,17936,17693,17938],{"id":17937},"templateudvector2-udfloorconst-udvector2-v",[17695,17939,17897,17940],{"t":2049},[17899,17941,17942,17943],{}," udFloor(const udVector2",[17899,17944,17904],{},[1679,17946,17693,17948],{"id":17947},"templateudvector3-udfloorconst-udvector3-v",[17695,17949,17910,17950],{"t":2049},[17899,17951,17952,17953],{}," udFloor(const udVector3",[17899,17954,17904],{},[1679,17956,17693,17958],{"id":17957},"templateudvector4-udfloorconst-udvector4-v",[17695,17959,17921,17960],{"t":2049},[17899,17961,17962,17963],{}," udFloor(const udVector4",[17899,17964,17904],{},[1679,17966,17968],{"id":17967},"inline-float-udceilfloat-f","inline float udCeil(float f)",[1679,17970,17972],{"id":17971},"inline-double-udceildouble-d","inline double udCeil(double d)",[1679,17974,17693,17976],{"id":17975},"templateudvector2-udceilconst-udvector2-v",[17695,17977,17897,17978],{"t":2049},[17899,17979,17980,17981],{}," udCeil(const udVector2",[17899,17982,17904],{},[1679,17984,17693,17986],{"id":17985},"templateudvector3-udceilconst-udvector3-v",[17695,17987,17910,17988],{"t":2049},[17899,17989,17990,17991],{}," udCeil(const udVector3",[17899,17992,17904],{},[1679,17994,17693,17996],{"id":17995},"templateudvector4-udceilconst-udvector4-v",[17695,17997,17921,17998],{"t":2049},[17899,17999,18000,18001],{}," udCeil(const udVector4",[17899,18002,17904],{},[1679,18004,18006],{"id":18005},"inline-float-udmodfloat-f-float-den","inline float udMod(float f, float den)",[1679,18008,18010],{"id":18009},"inline-double-udmoddouble-d-double-den","inline double udMod(double d, double den)",[1679,18012,17693,18014],{"id":18013},"templateudvector2-udmodconst-udvector2-v",[17695,18015,17897,18016],{"t":2049},[17899,18017,18018,18019],{}," udMod(const udVector2",[17899,18020,17904],{},[1679,18022,17693,18024],{"id":18023},"templateudvector3-udmodconst-udvector3-v",[17695,18025,17910,18026],{"t":2049},[17899,18027,18028,18029],{}," udMod(const udVector3",[17899,18030,17904],{},[1679,18032,17693,18034],{"id":18033},"templateudvector4-udmodconst-udvector4-v",[17695,18035,17921,18036],{"t":2049},[17899,18037,18038,18039],{}," udMod(const udVector4",[17899,18040,17904],{},[1679,18042,17693,18044],{"id":18043},"templatet-udabst-v",[17695,18045,18046],{"t":2049},"T udAbs(T v)",[1679,18048,17693,18050],{"id":18049},"templateudvector2-udabsconst-udvector2-v",[17695,18051,17897,18052],{"t":2049},[17899,18053,18054,18055],{}," udAbs(const udVector2",[17899,18056,17904],{},[1679,18058,17693,18060],{"id":18059},"templateudvector3-udabsconst-udvector3-v",[17695,18061,17910,18062],{"t":2049},[17899,18063,18064,18065],{}," udAbs(const udVector3",[17899,18066,17904],{},[1679,18068,17693,18070],{"id":18069},"templateudvector4-udabsconst-udvector4-v",[17695,18071,17921,18072],{"t":2049},[17899,18073,18074,18075],{}," udAbs(const udVector4",[17899,18076,17904],{},[1679,18078,17693,18080],{"id":18079},"templateudquaternion-udabsconst-udquaternion-q",[17695,18081,18082,18083],{"t":2049},"udQuaternion",[17899,18084,18085,18086],{}," udAbs(const udQuaternion",[17899,18087,18088],{}," &q)",[1679,18090,17693,18092],{"id":18091},"templateudvector2-udminconst-udvector2-v1-const-udvector2-v2",[17695,18093,17897,18094],{"t":2049},[17899,18095,18096,18097],{}," udMin(const udVector2",[17899,18098,18099,18100],{}," &v1, const udVector2",[17899,18101,18102],{}," &v2)",[1679,18104,17693,18106],{"id":18105},"templateudvector3-udminconst-udvector3-v1-const-udvector3-v2",[17695,18107,17910,18108],{"t":2049},[17899,18109,18110,18111],{}," udMin(const udVector3",[17899,18112,18113,18114],{}," &v1, const udVector3",[17899,18115,18102],{},[1679,18117,17693,18119],{"id":18118},"templateudvector4-udminconst-udvector4-v1-const-udvector4-v2",[17695,18120,17921,18121],{"t":2049},[17899,18122,18123,18124],{}," udMin(const udVector4",[17899,18125,18126,18127],{}," &v1, const udVector4",[17899,18128,18102],{},[1679,18130,17693,18132],{"id":18131},"templatet-udminelementconst-udvector2-v",[17695,18133,18134,18135],{"t":2049},"T udMinElement(const udVector2",[17899,18136,17904],{},[1679,18138,17693,18140],{"id":18139},"templatet-udminelementconst-udvector3-v",[17695,18141,18142,18143],{"t":2049},"T udMinElement(const udVector3",[17899,18144,17904],{},[1679,18146,17693,18148],{"id":18147},"templatet-udminelementconst-udvector4-v",[17695,18149,18150,18151],{"t":2049},"T udMinElement(const udVector4",[17899,18152,17904],{},[1679,18154,17693,18156],{"id":18155},"templateudvector2-udmaxconst-udvector2-v1-const-udvector2-v2",[17695,18157,17897,18158],{"t":2049},[17899,18159,18160,18161],{}," udMax(const udVector2",[17899,18162,18099,18163],{},[17899,18164,18102],{},[1679,18166,17693,18168],{"id":18167},"templateudvector3-udmaxconst-udvector3-v1-const-udvector3-v2",[17695,18169,17910,18170],{"t":2049},[17899,18171,18172,18173],{}," udMax(const udVector3",[17899,18174,18113,18175],{},[17899,18176,18102],{},[1679,18178,17693,18180],{"id":18179},"templateudvector4-udmaxconst-udvector4-v1-const-udvector4-v2",[17695,18181,17921,18182],{"t":2049},[17899,18183,18184,18185],{}," udMax(const udVector4",[17899,18186,18126,18187],{},[17899,18188,18102],{},[1679,18190,17693,18192],{"id":18191},"templatet-udmaxelementconst-udvector2-v",[17695,18193,18194,18195],{"t":2049},"T udMaxElement(const udVector2",[17899,18196,17904],{},[1679,18198,17693,18200],{"id":18199},"templatet-udmaxelementconst-udvector3-v",[17695,18201,18202,18203],{"t":2049},"T udMaxElement(const udVector3",[17899,18204,17904],{},[1679,18206,17693,18208],{"id":18207},"templatet-udmaxelementconst-udvector4-v",[17695,18209,18210,18211],{"t":2049},"T udMaxElement(const udVector4",[17899,18212,17904],{},[1679,18214,17693,18216],{"id":18215},"templatet-udclampt-v-t-_min-t-_max",[17695,18217,18218],{"t":2049},"T udClamp(T v, T _min, T _max)",[1679,18220,17693,18222],{"id":18221},"templateudvector2-udclampconst-udvector2-v-const-udvector2-_min-const-udvector2-_max",[17695,18223,17897,18224],{"t":2049},[17899,18225,18226,18227],{}," udClamp(const udVector2",[17899,18228,18229,18230],{}," &v, const udVector2",[17899,18231,18232,18233],{}," &_min, const udVector2",[17899,18234,18235],{}," &_max)",[1679,18237,17693,18239],{"id":18238},"templateudvector3-udclampconst-udvector3-v-const-udvector3-_min-const-udvector3-_max",[17695,18240,17910,18241],{"t":2049},[17899,18242,18243,18244],{}," udClamp(const udVector3",[17899,18245,18246,18247],{}," &v, const udVector3",[17899,18248,18249,18250],{}," &_min, const udVector3",[17899,18251,18235],{},[1679,18253,17693,18255],{"id":18254},"templateudvector4-udclampconst-udvector4-v-const-udvector4-_min-const-udvector4-_max",[17695,18256,17921,18257],{"t":2049},[17899,18258,18259,18260],{}," udClamp(const udVector4",[17899,18261,18262,18263],{}," &v, const udVector4",[17899,18264,18265,18266],{}," &_min, const udVector4",[17899,18267,18235],{},[1679,18269,17693,18271],{"id":18270},"templatet-udsaturateconst-t-v",[17695,18272,18273],{"t":2049},"T udSaturate(const T &v)",[1679,18275,17693,18277],{"id":18276},"templateudvector2-udsaturateconst-udvector2-v",[17695,18278,17897,18279],{"t":2049},[17899,18280,18281,18282],{}," udSaturate(const udVector2",[17899,18283,17904],{},[1679,18285,17693,18287],{"id":18286},"templateudvector3-udsaturateconst-udvector3-v",[17695,18288,17910,18289],{"t":2049},[17899,18290,18291,18292],{}," udSaturate(const udVector3",[17899,18293,17904],{},[1679,18295,17693,18297],{"id":18296},"templateudvector4-udsaturateconst-udvector4-v",[17695,18298,17921,18299],{"t":2049},[17899,18300,18301,18302],{}," udSaturate(const udVector4",[17899,18303,17904],{},[1679,18305,18307],{"id":18306},"templatetypename-v-typename-tbool-udisunitlengthconst-v-v-t-epsilon","template\u003Ctypename V, typename T>bool udIsUnitLength(const V &v, T epsilon)",[1679,18309,17693,18311],{"id":18310},"templateinline-t-uddotconst-udvector2-v1-const-udvector2-v2",[17695,18312,18313,18314],{"t":2049},"inline T udDot(const udVector2",[17899,18315,18099,18316],{},[17899,18317,18102],{},[1679,18319,17693,18321],{"id":18320},"templateinline-t-uddotconst-udvector3-v1-const-udvector3-v2",[17695,18322,18323,18324],{"t":2049},"inline T udDot(const udVector3",[17899,18325,18113,18326],{},[17899,18327,18102],{},[1679,18329,17693,18331],{"id":18330},"templateinline-t-uddotconst-udvector4-v1-const-udvector4-v2",[17695,18332,18333,18334],{"t":2049},"inline T udDot(const udVector4",[17899,18335,18126,18336],{},[17899,18337,18102],{},[1679,18339,17693,18341],{"id":18340},"templateinline-t-uddotconst-udquaternion-q1-const-udquaternion-q2",[17695,18342,18343,18344],{"t":2049},"inline T udDot(const udQuaternion",[17899,18345,18346,18347],{}," &q1, const udQuaternion",[17899,18348,18349],{}," &q2)",[1679,18351,17693,18353],{"id":18352},"templatet-uddot2const-udvector2-v1-const-udvector2-v2",[17695,18354,18355,18356],{"t":2049},"T udDot2(const udVector2",[17899,18357,18099,18358],{},[17899,18359,18102],{},[1679,18361,17693,18363],{"id":18362},"templatet-uddot2const-udvector3-v1-const-udvector3-v2",[17695,18364,18365,18366],{"t":2049},"T udDot2(const udVector3",[17899,18367,18113,18368],{},[17899,18369,18102],{},[1679,18371,17693,18373],{"id":18372},"templatet-uddot2const-udvector4-v1-const-udvector4-v2",[17695,18374,18375,18376],{"t":2049},"T udDot2(const udVector4",[17899,18377,18126,18378],{},[17899,18379,18102],{},[1679,18381,17693,18383],{"id":18382},"templatet-uddot3const-udvector3-v1-const-udvector3-v2",[17695,18384,18385,18386],{"t":2049},"T udDot3(const udVector3",[17899,18387,18113,18388],{},[17899,18389,18102],{},[1679,18391,17693,18393],{"id":18392},"templatet-uddot3const-udvector4-v1-const-udvector4-v2",[17695,18394,18395,18396],{"t":2049},"T udDot3(const udVector4",[17899,18397,18126,18398],{},[17899,18399,18102],{},[1679,18401,17693,18403],{"id":18402},"templatet-uddot4const-udvector4-v1-const-udvector4-v2",[17695,18404,18405,18406],{"t":2049},"T udDot4(const udVector4",[17899,18407,18126,18408],{},[17899,18409,18102],{},[1679,18411,17693,18413],{"id":18412},"templatet-uddothconst-udvector3-v3-const-udvector4-v4",[17695,18414,18415,18416],{"t":2049},"T udDoth(const udVector3",[17899,18417,18418,18419],{}," &v3, const udVector4",[17899,18420,18421],{}," &v4)",[1679,18423,17693,18425],{"id":18424},"templatet-uddotqconst-udquaternion-q1-const-udquaternion-q2",[17695,18426,18427,18428],{"t":2049},"T udDotQ(const udQuaternion",[17899,18429,18346,18430],{},[17899,18431,18349],{},[1679,18433,17693,18435],{"id":18434},"templateinline-t-udmagsqconst-udvector2-v",[17695,18436,18437,18438],{"t":2049},"inline T udMagSq(const udVector2",[17899,18439,17904],{},[1679,18441,17693,18443],{"id":18442},"templateinline-t-udmagsqconst-udvector3-v",[17695,18444,18445,18446],{"t":2049},"inline T udMagSq(const udVector3",[17899,18447,17904],{},[1679,18449,17693,18451],{"id":18450},"templateinline-t-udmagsqconst-udvector4-v",[17695,18452,18453,18454],{"t":2049},"inline T udMagSq(const udVector4",[17899,18455,17904],{},[1679,18457,17693,18459],{"id":18458},"templateinline-t-udmagsqconst-udquaternion-q",[17695,18460,18461,18462],{"t":2049},"inline T udMagSq(const udQuaternion",[17899,18463,18088],{},[1679,18465,17693,18467],{"id":18466},"templatet-udmagsq2const-udvector2-v",[17695,18468,18469,18470],{"t":2049},"T udMagSq2(const udVector2",[17899,18471,17904],{},[1679,18473,17693,18475],{"id":18474},"templatet-udmagsq2const-udvector3-v",[17695,18476,18477,18478],{"t":2049},"T udMagSq2(const udVector3",[17899,18479,17904],{},[1679,18481,17693,18483],{"id":18482},"templatet-udmagsq2const-udvector4-v",[17695,18484,18485,18486],{"t":2049},"T udMagSq2(const udVector4",[17899,18487,17904],{},[1679,18489,17693,18491],{"id":18490},"templatet-udmagsq3const-udvector3-v",[17695,18492,18493,18494],{"t":2049},"T udMagSq3(const udVector3",[17899,18495,17904],{},[1679,18497,17693,18499],{"id":18498},"templatet-udmagsq3const-udvector4-v",[17695,18500,18501,18502],{"t":2049},"T udMagSq3(const udVector4",[17899,18503,17904],{},[1679,18505,17693,18507],{"id":18506},"templatet-udmagsq4const-udvector4-v",[17695,18508,18509,18510],{"t":2049},"T udMagSq4(const udVector4",[17899,18511,17904],{},[1679,18513,17693,18515],{"id":18514},"templatet-udmagsqqconst-udquaternion-q",[17695,18516,18517,18518],{"t":2049},"T udMagSqQ(const udQuaternion",[17899,18519,18088],{},[1679,18521,17693,18523],{"id":18522},"templateinline-t-udmagconst-udvector2-v",[17695,18524,18525,18526],{"t":2049},"inline T udMag(const udVector2",[17899,18527,17904],{},[1679,18529,17693,18531],{"id":18530},"templateinline-t-udmagconst-udvector3-v",[17695,18532,18533,18534],{"t":2049},"inline T udMag(const udVector3",[17899,18535,17904],{},[1679,18537,17693,18539],{"id":18538},"templateinline-t-udmagconst-udvector4-v",[17695,18540,18541,18542],{"t":2049},"inline T udMag(const udVector4",[17899,18543,17904],{},[1679,18545,17693,18547],{"id":18546},"templateinline-t-udmagconst-udquaternion-v",[17695,18548,18549,18550],{"t":2049},"inline T udMag(const udQuaternion",[17899,18551,17904],{},[1679,18553,17693,18555],{"id":18554},"templatet-udmag2const-udvector2-v",[17695,18556,18557,18558],{"t":2049},"T udMag2(const udVector2",[17899,18559,17904],{},[1679,18561,17693,18563],{"id":18562},"templatet-udmag2const-udvector3-v",[17695,18564,18565,18566],{"t":2049},"T udMag2(const udVector3",[17899,18567,17904],{},[1679,18569,17693,18571],{"id":18570},"templatet-udmag2const-udvector4-v",[17695,18572,18573,18574],{"t":2049},"T udMag2(const udVector4",[17899,18575,17904],{},[1679,18577,17693,18579],{"id":18578},"templatet-udmag3const-udvector3-v",[17695,18580,18581,18582],{"t":2049},"T udMag3(const udVector3",[17899,18583,17904],{},[1679,18585,17693,18587],{"id":18586},"templatet-udmag3const-udvector4-v",[17695,18588,18589,18590],{"t":2049},"T udMag3(const udVector4",[17899,18591,17904],{},[1679,18593,17693,18595],{"id":18594},"templatet-udmag4const-udvector4-v",[17695,18596,18597,18598],{"t":2049},"T udMag4(const udVector4",[17899,18599,17904],{},[1679,18601,17693,18603],{"id":18602},"templatet-udmagqconst-udquaternion-q",[17695,18604,18605,18606],{"t":2049},"T udMagQ(const udQuaternion",[17899,18607,18088],{},[1679,18609,17693,18611],{"id":18610},"templateinline-t-udcrossconst-udvector2-v1-const-udvector2-v2",[17695,18612,18613,18614],{"t":2049},"inline T udCross(const udVector2",[17899,18615,18099,18616],{},[17899,18617,18102],{},[1679,18619,17693,18621],{"id":18620},"templateinline-udvector3-udcrossconst-udvector3-v1-const-udvector3-v2",[17695,18622,18623,18624],{"t":2049},"inline udVector3",[17899,18625,18626,18627],{}," udCross(const udVector3",[17899,18628,18113,18629],{},[17899,18630,18102],{},[1679,18632,17693,18634],{"id":18633},"templatet-udcross2const-udvector2-v1-const-udvector2-v2",[17695,18635,18636,18637],{"t":2049},"T udCross2(const udVector2",[17899,18638,18099,18639],{},[17899,18640,18102],{},[1679,18642,17693,18644],{"id":18643},"templatet-udcross2const-udvector3-v1-const-udvector3-v2",[17695,18645,18646,18647],{"t":2049},"T udCross2(const udVector3",[17899,18648,18113,18649],{},[17899,18650,18102],{},[1679,18652,17693,18654],{"id":18653},"templatet-udcross2const-udvector4-v1-const-udvector4-v2",[17695,18655,18656,18657],{"t":2049},"T udCross2(const udVector4",[17899,18658,18126,18659],{},[17899,18660,18102],{},[1679,18662,17693,18664],{"id":18663},"templateudvector3-udcross3const-udvector3-v1-const-udvector3-v2",[17695,18665,17910,18666],{"t":2049},[17899,18667,18668,18669],{}," udCross3(const udVector3",[17899,18670,18113,18671],{},[17899,18672,18102],{},[1679,18674,17693,18676],{"id":18675},"templateudvector3-udcross3const-udvector4-v1-const-udvector4-v2",[17695,18677,17910,18678],{"t":2049},[17899,18679,18680,18681],{}," udCross3(const udVector4",[17899,18682,18126,18683],{},[17899,18684,18102],{},[1679,18686,17693,18688],{"id":18687},"templateinline-udvector2-udnormalizeconst-udvector2-v",[17695,18689,18690,18691],{"t":2049},"inline udVector2",[17899,18692,18693,18694],{}," udNormalize(const udVector2",[17899,18695,17904],{},[1679,18697,17693,18699],{"id":18698},"templateinline-udvector3-udnormalizeconst-udvector3-v",[17695,18700,18623,18701],{"t":2049},[17899,18702,18703,18704],{}," udNormalize(const udVector3",[17899,18705,17904],{},[1679,18707,17693,18709],{"id":18708},"templateinline-udvector4-udnormalizeconst-udvector4-v",[17695,18710,18711,18712],{"t":2049},"inline udVector4",[17899,18713,18714,18715],{}," udNormalize(const udVector4",[17899,18716,17904],{},[1679,18718,17693,18720],{"id":18719},"templateinline-udquaternion-udnormalizeconst-udquaternion-q",[17695,18721,18722,18723],{"t":2049},"inline udQuaternion",[17899,18724,18725,18726],{}," udNormalize(const udQuaternion",[17899,18727,18088],{},[1679,18729,17693,18731],{"id":18730},"templateudvector2-udnormalize2const-udvector2-v",[17695,18732,17897,18733],{"t":2049},[17899,18734,18735,18736],{}," udNormalize2(const udVector2",[17899,18737,17904],{},[1679,18739,17693,18741],{"id":18740},"templateudvector3-udnormalize2const-udvector3-v",[17695,18742,17910,18743],{"t":2049},[17899,18744,18745,18746],{}," udNormalize2(const udVector3",[17899,18747,17904],{},[1679,18749,17693,18751],{"id":18750},"templateudvector4-udnormalize2const-udvector4-v",[17695,18752,17921,18753],{"t":2049},[17899,18754,18755,18756],{}," udNormalize2(const udVector4",[17899,18757,17904],{},[1679,18759,17693,18761],{"id":18760},"templateudvector3-udnormalize3const-udvector3-v",[17695,18762,17910,18763],{"t":2049},[17899,18764,18765,18766],{}," udNormalize3(const udVector3",[17899,18767,17904],{},[1679,18769,17693,18771],{"id":18770},"templateudvector4-udnormalize3const-udvector4-v",[17695,18772,17921,18773],{"t":2049},[17899,18774,18775,18776],{}," udNormalize3(const udVector4",[17899,18777,17904],{},[1679,18779,17693,18781],{"id":18780},"templateudvector4-udnormalize4const-udvector4-v",[17695,18782,17921,18783],{"t":2049},[17899,18784,18785,18786],{}," udNormalize4(const udVector4",[17899,18787,17904],{},[1679,18789,17693,18791],{"id":18790},"templateudquaternion-udnormalizeqconst-udquaternion-v",[17695,18792,18082,18793],{"t":2049},[17899,18794,18795,18796],{}," udNormalizeQ(const udQuaternion",[17899,18797,17904],{},[1679,18799,17693,18801],{"id":18800},"templateinline-bool-udequalapproxconst-v-a-const-v-b-typename-velementtype-epsilon",[17695,18802,18803],{"v":2049},"inline bool udEqualApprox(const V &a, const V &b, typename V::ElementType epsilon)",[1679,18805,17693,18807],{"id":18806},"templateinline-bool-udmatrixequalapproxconst-udmatrix4x4-a-const-udmatrix4x4-b-t-epsilon",[17695,18808,18809,18810],{"t":2049},"inline bool udMatrixEqualApprox(const udMatrix4x4",[17899,18811,18812,18813],{}," &a, const udMatrix4x4",[17899,18814,18815],{}," &b, T epsilon)",[1679,18817,17693,18819],{"id":18818},"templateinline-t-udnormaliserotationt-rad-t-absrange",[17695,18820,18821],{"t":2049},"inline T udNormaliseRotation(T rad, T absRange)",[1679,18823,17693,18825],{"id":18824},"templateudvector3-uddirectionfromyprconst-udvector3-ypr",[17695,18826,17910,18827],{"t":2049},[17899,18828,18829,18830],{}," udDirectionFromYPR(const udVector3",[17899,18831,18832],{}," &ypr)",[1679,18834,17693,18836],{"id":18835},"templateudvector3-uddirectiontoyprconst-udvector3-direction",[17695,18837,17910,18838],{"t":2049},[17899,18839,18840,18841],{}," udDirectionToYPR(const udVector3",[17899,18842,18843],{}," &direction)",[1679,18845,18847,18848],{"id":18846},"templatetypename-t-typename-uudmatrix4x4-udmulconst-udmatrix4x4-m-u-f","template\u003Ctypename T, typename U>udMatrix4x4",[17899,18849,18850,18851],{}," udMul(const udMatrix4x4",[17899,18852,18853],{}," &m, U f)",[1679,18855,17693,18857],{"id":18856},"templateudvector2-udmulconst-udmatrix4x4-m-const-udvector2-v",[17695,18858,17897,18859],{"t":2049},[17899,18860,18850,18861],{},[17899,18862,18863,18864],{}," &m, const udVector2",[17899,18865,17904],{},[1679,18867,17693,18869],{"id":18868},"templateudvector3-udmulconst-udmatrix4x4-m-const-udvector3-v",[17695,18870,17910,18871],{"t":2049},[17899,18872,18850,18873],{},[17899,18874,18875,18876],{}," &m, const udVector3",[17899,18877,17904],{},[1679,18879,17693,18881],{"id":18880},"templateudvector4-udmulconst-udmatrix4x4-m-const-udvector4-v",[17695,18882,17921,18883],{"t":2049},[17899,18884,18850,18885],{},[17899,18886,18887,18888],{}," &m, const udVector4",[17899,18889,17904],{},[1679,18891,17693,18893],{"id":18892},"templateudmatrix4x4-udmulconst-udmatrix4x4-m1-const-udmatrix4x4-m2",[17695,18894,18895,18896],{"t":2049},"udMatrix4x4",[17899,18897,18850,18898],{},[17899,18899,18900,18901],{}," &m1, const udMatrix4x4",[17899,18902,18903],{}," &m2)",[1679,18905,17693,18907],{"id":18906},"templateudmatrix4x4-udaddconst-udmatrix4x4-m1-const-udmatrix4x4-m2",[17695,18908,18895,18909],{"t":2049},[17899,18910,18911,18912],{}," udAdd(const udMatrix4x4",[17899,18913,18900,18914],{},[17899,18915,18903],{},[1679,18917,17693,18919],{"id":18918},"templateudmatrix4x4-udsubconst-udmatrix4x4-m1-const-udmatrix4x4-m2",[17695,18920,18895,18921],{"t":2049},[17899,18922,18923,18924],{}," udSub(const udMatrix4x4",[17899,18925,18900,18926],{},[17899,18927,18903],{},[1679,18929,17693,18931],{"id":18930},"templateudquaternion-udmulconst-udquaternion-q1-const-udquaternion-q2",[17695,18932,18082,18933],{"t":2049},[17899,18934,18935,18936],{}," udMul(const udQuaternion",[17899,18937,18346,18938],{},[17899,18939,18349],{},[1679,18941,17693,18943],{"id":18942},"templatet-udlerpt-a-t-b-double-t",[17695,18944,18945],{"t":2049},"T udLerp(T a, T b, double t)",[1679,18947,17693,18949],{"id":18948},"templatet-udbilerpt-a-t-b-t-c-t-d-double-t1-double-t2",[17695,18950,18951],{"t":2049},"T udBiLerp(T a, T b, T c, T d, double t1, double t2)",[1679,18953,17693,18955],{"id":18954},"templateudvector2-udlerpconst-udvector2-v1-const-udvector2-v2-double-t",[17695,18956,17897,18957],{"t":2049},[17899,18958,18959,18960],{}," udLerp(const udVector2",[17899,18961,18099,18962],{},[17899,18963,18964],{}," &v2, double t)",[1679,18966,17693,18968],{"id":18967},"templateudvector3-udlerpconst-udvector3-v1-const-udvector3-v2-double-t",[17695,18969,17910,18970],{"t":2049},[17899,18971,18972,18973],{}," udLerp(const udVector3",[17899,18974,18113,18975],{},[17899,18976,18964],{},[1679,18978,17693,18980],{"id":18979},"templateudvector4-udlerpconst-udvector4-v1-const-udvector4-v2-double-t",[17695,18981,17921,18982],{"t":2049},[17899,18983,18984,18985],{}," udLerp(const udVector4",[17899,18986,18126,18987],{},[17899,18988,18964],{},[1679,18990,17693,18992],{"id":18991},"templateudmatrix4x4-udlerpconst-udmatrix4x4-m1-const-udmatrix4x4-m2-double-t",[17695,18993,18895,18994],{"t":2049},[17899,18995,18996,18997],{}," udLerp(const udMatrix4x4",[17899,18998,18900,18999],{},[17899,19000,19001],{}," &m2, double t)",[1679,19003,17693,19005],{"id":19004},"templateudquaternion-udlerpconst-udquaternion-q1-const-udquaternion-q2-double-t",[17695,19006,18082,19007],{"t":2049},[17899,19008,19009,19010],{}," udLerp(const udQuaternion",[17899,19011,18346,19012],{},[17899,19013,19014],{}," &q2, double t)",[1679,19016,17693,19018],{"id":19017},"templateudquaternion-udslerpconst-udquaternion-q1-const-udquaternion-_q2-double-t",[17695,19019,18082,19020],{"t":2049},[17899,19021,19022,19023],{}," udSlerp(const udQuaternion",[17899,19024,18346,19025],{},[17899,19026,19027],{}," &_q2, double t)",[1679,19029,17693,19031],{"id":19030},"templateudmatrix4x4-udtransposeconst-udmatrix4x4-m",[17695,19032,18895,19033],{"t":2049},[17899,19034,19035,19036],{}," udTranspose(const udMatrix4x4",[17899,19037,19038],{}," &m)",[1679,19040,17693,19042],{"id":19041},"templatet-uddeterminantconst-udmatrix4x4-m",[17695,19043,19044,19045],{"t":2049},"T udDeterminant(const udMatrix4x4",[17899,19046,19038],{},[1679,19048,17693,19050],{"id":19049},"templateudmatrix4x4-udinverseconst-udmatrix4x4-m",[17695,19051,18895,19052],{"t":2049},[17899,19053,19054,19055],{}," udInverse(const udMatrix4x4",[17899,19056,19038],{},[1679,19058,17693,19060],{"id":19059},"templateudquaternion-udinverseconst-udquaternion-q",[17695,19061,18082,19062],{"t":2049},[17899,19063,19064,19065],{}," udInverse(const udQuaternion",[17899,19066,18088],{},[1679,19068,17693,19070],{"id":19069},"templateudquaternion-udconjugateconst-udquaternion-q",[17695,19071,18082,19072],{"t":2049},[17899,19073,19074,19075],{}," udConjugate(const udQuaternion",[17899,19076,18088],{},{"title":2049,"searchDepth":2050,"depth":2050,"links":19078},[19079],{"id":1676,"depth":2050,"text":1677,"children":19080},[19081,19083,19085,19087,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19135,19137,19139,19140,19141,19143,19145,19147,19148,19149,19151,19153,19155,19156,19157,19159,19161,19163,19165,19167,19169,19171,19173,19175,19177,19179,19181,19183,19185,19187,19189,19191,19193,19195,19197,19199,19201,19203,19205,19207,19209,19211,19213,19214,19216,19218,19220,19222,19224,19226,19228,19230,19232,19234,19236,19238,19240,19242,19244,19246,19248,19250,19252,19254,19256,19258,19260,19262,19264,19266,19268,19270,19272,19274,19276,19278,19280,19282,19284,19286,19288,19290,19292,19294,19296,19298,19300,19302,19304,19306,19308,19310,19312,19314,19316,19318,19320,19322,19324,19326,19328,19330,19332,19334,19336,19338,19340,19342,19344,19346,19348,19350,19352,19354,19356,19358,19360,19362,19364,19366,19368],{"id":17692,"depth":2055,"text":19082},"templateT udHighestBitValue(T i)",{"id":17700,"depth":2055,"text":19084},"templatebool udIsPowerOfTwo(T i)",{"id":17706,"depth":2055,"text":19086},"templateT udPowerOfTwoAbove(T v)",{"id":17712,"depth":2055,"text":19088},"templateT udRoundEven(T t)",{"id":17718,"depth":2055,"text":17719},{"id":17722,"depth":2055,"text":17723},{"id":17726,"depth":2055,"text":17727},{"id":17730,"depth":2055,"text":17731},{"id":17734,"depth":2055,"text":17735},{"id":17738,"depth":2055,"text":17739},{"id":17742,"depth":2055,"text":17743},{"id":17746,"depth":2055,"text":17747},{"id":17750,"depth":2055,"text":17751},{"id":17754,"depth":2055,"text":17755},{"id":17758,"depth":2055,"text":17759},{"id":17762,"depth":2055,"text":17763},{"id":17766,"depth":2055,"text":17767},{"id":17770,"depth":2055,"text":17771},{"id":17774,"depth":2055,"text":17775},{"id":17778,"depth":2055,"text":17779},{"id":17782,"depth":2055,"text":17783},{"id":17786,"depth":2055,"text":17787},{"id":17790,"depth":2055,"text":17791},{"id":17794,"depth":2055,"text":17795},{"id":17798,"depth":2055,"text":17799},{"id":17802,"depth":2055,"text":17803},{"id":17806,"depth":2055,"text":17807},{"id":17810,"depth":2055,"text":17811},{"id":17814,"depth":2055,"text":17815},{"id":17818,"depth":2055,"text":17819},{"id":17822,"depth":2055,"text":17823},{"id":17826,"depth":2055,"text":17827},{"id":17830,"depth":2055,"text":17831},{"id":17834,"depth":2055,"text":17835},{"id":17838,"depth":2055,"text":17839},{"id":17842,"depth":2055,"text":17843},{"id":17846,"depth":2055,"text":17847},{"id":17850,"depth":2055,"text":17851},{"id":17854,"depth":2055,"text":17855},{"id":17858,"depth":2055,"text":17859},{"id":17862,"depth":2055,"text":17863},{"id":17866,"depth":2055,"text":17867},{"id":17870,"depth":2055,"text":17871},{"id":17874,"depth":2055,"text":17875},{"id":17878,"depth":2055,"text":17879},{"id":17882,"depth":2055,"text":17883},{"id":17886,"depth":2055,"text":17887},{"id":17890,"depth":2055,"text":17891},{"id":17894,"depth":2055,"text":19134},"templateudVector2 udRound(const udVector2 &v)",{"id":17907,"depth":2055,"text":19136},"templateudVector3 udRound(const udVector3 &v)",{"id":17918,"depth":2055,"text":19138},"templateudVector4 udRound(const udVector4 &v)",{"id":17929,"depth":2055,"text":17930},{"id":17933,"depth":2055,"text":17934},{"id":17937,"depth":2055,"text":19142},"templateudVector2 udFloor(const udVector2 &v)",{"id":17947,"depth":2055,"text":19144},"templateudVector3 udFloor(const udVector3 &v)",{"id":17957,"depth":2055,"text":19146},"templateudVector4 udFloor(const udVector4 &v)",{"id":17967,"depth":2055,"text":17968},{"id":17971,"depth":2055,"text":17972},{"id":17975,"depth":2055,"text":19150},"templateudVector2 udCeil(const udVector2 &v)",{"id":17985,"depth":2055,"text":19152},"templateudVector3 udCeil(const udVector3 &v)",{"id":17995,"depth":2055,"text":19154},"templateudVector4 udCeil(const udVector4 &v)",{"id":18005,"depth":2055,"text":18006},{"id":18009,"depth":2055,"text":18010},{"id":18013,"depth":2055,"text":19158},"templateudVector2 udMod(const udVector2 &v)",{"id":18023,"depth":2055,"text":19160},"templateudVector3 udMod(const udVector3 &v)",{"id":18033,"depth":2055,"text":19162},"templateudVector4 udMod(const udVector4 &v)",{"id":18043,"depth":2055,"text":19164},"templateT udAbs(T v)",{"id":18049,"depth":2055,"text":19166},"templateudVector2 udAbs(const udVector2 &v)",{"id":18059,"depth":2055,"text":19168},"templateudVector3 udAbs(const udVector3 &v)",{"id":18069,"depth":2055,"text":19170},"templateudVector4 udAbs(const udVector4 &v)",{"id":18079,"depth":2055,"text":19172},"templateudQuaternion udAbs(const udQuaternion &q)",{"id":18091,"depth":2055,"text":19174},"templateudVector2 udMin(const udVector2 &v1, const udVector2 &v2)",{"id":18105,"depth":2055,"text":19176},"templateudVector3 udMin(const udVector3 &v1, const udVector3 &v2)",{"id":18118,"depth":2055,"text":19178},"templateudVector4 udMin(const udVector4 &v1, const udVector4 &v2)",{"id":18131,"depth":2055,"text":19180},"templateT udMinElement(const udVector2 &v)",{"id":18139,"depth":2055,"text":19182},"templateT udMinElement(const udVector3 &v)",{"id":18147,"depth":2055,"text":19184},"templateT udMinElement(const udVector4 &v)",{"id":18155,"depth":2055,"text":19186},"templateudVector2 udMax(const udVector2 &v1, const udVector2 &v2)",{"id":18167,"depth":2055,"text":19188},"templateudVector3 udMax(const udVector3 &v1, const udVector3 &v2)",{"id":18179,"depth":2055,"text":19190},"templateudVector4 udMax(const udVector4 &v1, const udVector4 &v2)",{"id":18191,"depth":2055,"text":19192},"templateT udMaxElement(const udVector2 &v)",{"id":18199,"depth":2055,"text":19194},"templateT udMaxElement(const udVector3 &v)",{"id":18207,"depth":2055,"text":19196},"templateT udMaxElement(const udVector4 &v)",{"id":18215,"depth":2055,"text":19198},"templateT udClamp(T v, T _min, T _max)",{"id":18221,"depth":2055,"text":19200},"templateudVector2 udClamp(const udVector2 &v, const udVector2 &_min, const udVector2 &_max)",{"id":18238,"depth":2055,"text":19202},"templateudVector3 udClamp(const udVector3 &v, const udVector3 &_min, const udVector3 &_max)",{"id":18254,"depth":2055,"text":19204},"templateudVector4 udClamp(const udVector4 &v, const udVector4 &_min, const udVector4 &_max)",{"id":18270,"depth":2055,"text":19206},"templateT udSaturate(const T &v)",{"id":18276,"depth":2055,"text":19208},"templateudVector2 udSaturate(const udVector2 &v)",{"id":18286,"depth":2055,"text":19210},"templateudVector3 udSaturate(const udVector3 &v)",{"id":18296,"depth":2055,"text":19212},"templateudVector4 udSaturate(const udVector4 &v)",{"id":18306,"depth":2055,"text":18307},{"id":18310,"depth":2055,"text":19215},"templateinline T udDot(const udVector2 &v1, const udVector2 &v2)",{"id":18320,"depth":2055,"text":19217},"templateinline T udDot(const udVector3 &v1, const udVector3 &v2)",{"id":18330,"depth":2055,"text":19219},"templateinline T udDot(const udVector4 &v1, const udVector4 &v2)",{"id":18340,"depth":2055,"text":19221},"templateinline T udDot(const udQuaternion &q1, const udQuaternion &q2)",{"id":18352,"depth":2055,"text":19223},"templateT udDot2(const udVector2 &v1, const udVector2 &v2)",{"id":18362,"depth":2055,"text":19225},"templateT udDot2(const udVector3 &v1, const udVector3 &v2)",{"id":18372,"depth":2055,"text":19227},"templateT udDot2(const udVector4 &v1, const udVector4 &v2)",{"id":18382,"depth":2055,"text":19229},"templateT udDot3(const udVector3 &v1, const udVector3 &v2)",{"id":18392,"depth":2055,"text":19231},"templateT udDot3(const udVector4 &v1, const udVector4 &v2)",{"id":18402,"depth":2055,"text":19233},"templateT udDot4(const udVector4 &v1, const udVector4 &v2)",{"id":18412,"depth":2055,"text":19235},"templateT udDoth(const udVector3 &v3, const udVector4 &v4)",{"id":18424,"depth":2055,"text":19237},"templateT udDotQ(const udQuaternion &q1, const udQuaternion &q2)",{"id":18434,"depth":2055,"text":19239},"templateinline T udMagSq(const udVector2 &v)",{"id":18442,"depth":2055,"text":19241},"templateinline T udMagSq(const udVector3 &v)",{"id":18450,"depth":2055,"text":19243},"templateinline T udMagSq(const udVector4 &v)",{"id":18458,"depth":2055,"text":19245},"templateinline T udMagSq(const udQuaternion &q)",{"id":18466,"depth":2055,"text":19247},"templateT udMagSq2(const udVector2 &v)",{"id":18474,"depth":2055,"text":19249},"templateT udMagSq2(const udVector3 &v)",{"id":18482,"depth":2055,"text":19251},"templateT udMagSq2(const udVector4 &v)",{"id":18490,"depth":2055,"text":19253},"templateT udMagSq3(const udVector3 &v)",{"id":18498,"depth":2055,"text":19255},"templateT udMagSq3(const udVector4 &v)",{"id":18506,"depth":2055,"text":19257},"templateT udMagSq4(const udVector4 &v)",{"id":18514,"depth":2055,"text":19259},"templateT udMagSqQ(const udQuaternion &q)",{"id":18522,"depth":2055,"text":19261},"templateinline T udMag(const udVector2 &v)",{"id":18530,"depth":2055,"text":19263},"templateinline T udMag(const udVector3 &v)",{"id":18538,"depth":2055,"text":19265},"templateinline T udMag(const udVector4 &v)",{"id":18546,"depth":2055,"text":19267},"templateinline T udMag(const udQuaternion &v)",{"id":18554,"depth":2055,"text":19269},"templateT udMag2(const udVector2 &v)",{"id":18562,"depth":2055,"text":19271},"templateT udMag2(const udVector3 &v)",{"id":18570,"depth":2055,"text":19273},"templateT udMag2(const udVector4 &v)",{"id":18578,"depth":2055,"text":19275},"templateT udMag3(const udVector3 &v)",{"id":18586,"depth":2055,"text":19277},"templateT udMag3(const udVector4 &v)",{"id":18594,"depth":2055,"text":19279},"templateT udMag4(const udVector4 &v)",{"id":18602,"depth":2055,"text":19281},"templateT udMagQ(const udQuaternion &q)",{"id":18610,"depth":2055,"text":19283},"templateinline T udCross(const udVector2 &v1, const udVector2 &v2)",{"id":18620,"depth":2055,"text":19285},"templateinline udVector3 udCross(const udVector3 &v1, const udVector3 &v2)",{"id":18633,"depth":2055,"text":19287},"templateT udCross2(const udVector2 &v1, const udVector2 &v2)",{"id":18643,"depth":2055,"text":19289},"templateT udCross2(const udVector3 &v1, const udVector3 &v2)",{"id":18653,"depth":2055,"text":19291},"templateT udCross2(const udVector4 &v1, const udVector4 &v2)",{"id":18663,"depth":2055,"text":19293},"templateudVector3 udCross3(const udVector3 &v1, const udVector3 &v2)",{"id":18675,"depth":2055,"text":19295},"templateudVector3 udCross3(const udVector4 &v1, const udVector4 &v2)",{"id":18687,"depth":2055,"text":19297},"templateinline udVector2 udNormalize(const udVector2 &v)",{"id":18698,"depth":2055,"text":19299},"templateinline udVector3 udNormalize(const udVector3 &v)",{"id":18708,"depth":2055,"text":19301},"templateinline udVector4 udNormalize(const udVector4 &v)",{"id":18719,"depth":2055,"text":19303},"templateinline udQuaternion udNormalize(const udQuaternion &q)",{"id":18730,"depth":2055,"text":19305},"templateudVector2 udNormalize2(const udVector2 &v)",{"id":18740,"depth":2055,"text":19307},"templateudVector3 udNormalize2(const udVector3 &v)",{"id":18750,"depth":2055,"text":19309},"templateudVector4 udNormalize2(const udVector4 &v)",{"id":18760,"depth":2055,"text":19311},"templateudVector3 udNormalize3(const udVector3 &v)",{"id":18770,"depth":2055,"text":19313},"templateudVector4 udNormalize3(const udVector4 &v)",{"id":18780,"depth":2055,"text":19315},"templateudVector4 udNormalize4(const udVector4 &v)",{"id":18790,"depth":2055,"text":19317},"templateudQuaternion udNormalizeQ(const udQuaternion &v)",{"id":18800,"depth":2055,"text":19319},"templateinline bool udEqualApprox(const V &a, const V &b, typename V::ElementType epsilon)",{"id":18806,"depth":2055,"text":19321},"templateinline bool udMatrixEqualApprox(const udMatrix4x4 &a, const udMatrix4x4 &b, T epsilon)",{"id":18818,"depth":2055,"text":19323},"templateinline T udNormaliseRotation(T rad, T absRange)",{"id":18824,"depth":2055,"text":19325},"templateudVector3 udDirectionFromYPR(const udVector3 &ypr)",{"id":18835,"depth":2055,"text":19327},"templateudVector3 udDirectionToYPR(const udVector3 &direction)",{"id":18846,"depth":2055,"text":19329},"template\u003Ctypename T, typename U>udMatrix4x4 udMul(const udMatrix4x4 &m, U f)",{"id":18856,"depth":2055,"text":19331},"templateudVector2 udMul(const udMatrix4x4 &m, const udVector2 &v)",{"id":18868,"depth":2055,"text":19333},"templateudVector3 udMul(const udMatrix4x4 &m, const udVector3 &v)",{"id":18880,"depth":2055,"text":19335},"templateudVector4 udMul(const udMatrix4x4 &m, const udVector4 &v)",{"id":18892,"depth":2055,"text":19337},"templateudMatrix4x4 udMul(const udMatrix4x4 &m1, const udMatrix4x4 &m2)",{"id":18906,"depth":2055,"text":19339},"templateudMatrix4x4 udAdd(const udMatrix4x4 &m1, const udMatrix4x4 &m2)",{"id":18918,"depth":2055,"text":19341},"templateudMatrix4x4 udSub(const udMatrix4x4 &m1, const udMatrix4x4 &m2)",{"id":18930,"depth":2055,"text":19343},"templateudQuaternion udMul(const udQuaternion &q1, const udQuaternion &q2)",{"id":18942,"depth":2055,"text":19345},"templateT udLerp(T a, T b, double t)",{"id":18948,"depth":2055,"text":19347},"templateT udBiLerp(T a, T b, T c, T d, double t1, double t2)",{"id":18954,"depth":2055,"text":19349},"templateudVector2 udLerp(const udVector2 &v1, const udVector2 &v2, double t)",{"id":18967,"depth":2055,"text":19351},"templateudVector3 udLerp(const udVector3 &v1, const udVector3 &v2, double t)",{"id":18979,"depth":2055,"text":19353},"templateudVector4 udLerp(const udVector4 &v1, const udVector4 &v2, double t)",{"id":18991,"depth":2055,"text":19355},"templateudMatrix4x4 udLerp(const udMatrix4x4 &m1, const udMatrix4x4 &m2, double t)",{"id":19004,"depth":2055,"text":19357},"templateudQuaternion udLerp(const udQuaternion &q1, const udQuaternion &q2, double t)",{"id":19017,"depth":2055,"text":19359},"templateudQuaternion udSlerp(const udQuaternion &q1, const udQuaternion &_q2, double t)",{"id":19030,"depth":2055,"text":19361},"templateudMatrix4x4 udTranspose(const udMatrix4x4 &m)",{"id":19041,"depth":2055,"text":19363},"templateT udDeterminant(const udMatrix4x4 &m)",{"id":19049,"depth":2055,"text":19365},"templateudMatrix4x4 udInverse(const udMatrix4x4 &m)",{"id":19059,"depth":2055,"text":19367},"templateudQuaternion udInverse(const udQuaternion &q)",{"id":19069,"depth":2055,"text":19369},"templateudQuaternion udConjugate(const udQuaternion &q)",{},"\u002Fguide\u002Fudsdk\u002Fudmath_inl",{"title":17682,"description":2049},"guide\u002Fudsdk\u002FudMath_Inl","9G_UQmjB_LqvgXaVXFoPIzV-Vpu2vu4w11JG3eYqPa8",{"id":19376,"title":19377,"body":19378,"date":7,"description":19385,"extension":2064,"meta":19818,"navigation":43,"path":19819,"seo":19820,"stem":19821,"__hash__":19822},"udsdkguide\u002Fguide\u002Fudsdk\u002FudMeshing.md","udMeshing",{"type":1667,"value":19379,"toc":19801},[19380,19383,19386,19388,19392,19394,19400,19406,19409,19416,19454,19461,19467,19470,19490,19497,19499,19503,19506,19739,19743,19746],[1670,19381,19377],{"id":19382},"udmeshing",[1689,19384,19385],{},"udMeshing.h provides an interface to create meshes from Unlimited Detail models.",[1674,19387,14632],{"id":14631},[1679,19389,19391],{"id":19390},"typedef-void-udcompareonwritemeshcleanupvoid-pdata","typedef void udCompareOnWriteMeshCleanup(void **pData)",[1674,19393,1677],{"id":1676},[1679,19395,1682,19397,19399],{"id":19396},"enum-uderror-udcompareonwritemeshcallbackconst-char-poutputname-void-pdata",[1684,19398,1686],{"href":1686}," udCompareOnWriteMeshCallback(const char *pOutputName, void *pData)",[1679,19401,1682,19403,19405],{"id":19402},"enum-uderror-udmeshing_bpameshstruct-udcontext-pcontext-struct-udmeshingbpaoptions-poptions-struct-udmeshingbpastatus-pstatus",[1684,19404,1686],{"href":1686}," udMeshing_BPAMesh(struct udContext *pContext, struct udMeshingBPAOptions *pOptions, struct udMeshingBPAStatus *pStatus)",[1689,19407,19408],{},"Meshes a model using the BPA algorithm.",[1693,19410,19411],{},[1689,19412,19413,19415],{},[1698,19414,1700],{},"\nThis function begins the meshing process to write to obj, the pObjOutputPath option must not be NULL",[1711,19417,19418,19426],{},[1714,19419,19420],{},[1717,19421,19422,19424],{},[1720,19423,1722],{},[1720,19425,1725],{},[1727,19427,19428,19437,19445],{},[1717,19429,19430,19434],{},[1732,19431,19432],{},[1735,19433,5760],{},[1732,19435,19436],{},"The UD context to be used to compare the models.",[1717,19438,19439,19443],{},[1732,19440,19441],{},[1735,19442,6607],{},[1732,19444,6610],{},[1717,19446,19447,19451],{},[1732,19448,19449],{},[1735,19450,1789],{},[1732,19452,19453],{},"Pointer to the struct to which write the algorithm progress. May be NULL",[1689,19455,19456,3676,19458,19460],{},[3673,19457,3675],{},[1684,19459,1686],{"href":1686}," value based on the result of performing BPA on the input model.",[1679,19462,1682,19464,19466],{"id":19463},"enum-uderror-udmeshing_bpacancelmeshingstruct-udmeshingbpaoptions-poptions",[1684,19465,1686],{"href":1686}," udMeshing_BPACancelMeshing(struct udMeshingBPAOptions *pOptions)",[1689,19468,19469],{},"Cancels a BPA meshing job started with pOptions",[1711,19471,19472,19480],{},[1714,19473,19474],{},[1717,19475,19476,19478],{},[1720,19477,1722],{},[1720,19479,1725],{},[1727,19481,19482],{},[1717,19483,19484,19488],{},[1732,19485,19486],{},[1735,19487,6607],{},[1732,19489,6610],{},[1689,19491,19492,3676,19494,19496],{},[3673,19493,3675],{},[1684,19495,1686],{"href":1686}," value based on the result of cancelling the job",[1674,19498,1796],{"id":1795},[1679,19500,19502],{"id":19501},"struct-udmeshingbpaoptions","struct udMeshingBPAOptions",[1689,19504,19505],{},"Contains the options for the meshing algorithm",[1711,19507,19508,19518],{},[1714,19509,19510],{},[1717,19511,19512,19514,19516],{},[1720,19513,1812],{},[1720,19515,1815],{},[1720,19517,1725],{},[1727,19519,19520,19532,19546,19560,19574,19588,19602,19615,19629,19643,19657,19671,19684,19697,19712,19727],{},[1717,19521,19522,19526,19530],{},[1732,19523,19524],{},[1735,19525,6647],{},[1732,19527,19528],{},[1735,19529,6652],{},[1732,19531],{},[1717,19533,19534,19539,19543],{},[1732,19535,19536],{},[1735,19537,19538],{},"pObjOutputPath",[1732,19540,19541],{},[1735,19542,6652],{},[1732,19544,19545],{},"The path to the UDS model to be meshed.",[1717,19547,19548,19553,19557],{},[1732,19549,19550],{},[1735,19551,19552],{},"writeOBJColours",[1732,19554,19555],{},[1735,19556,1831],{},[1732,19558,19559],{},"The directory to which intermediate obj meshes generated by the BPA algorithm will be written to. Must not be NULL when running standalone BPA algorithm.",[1717,19561,19562,19567,19571],{},[1732,19563,19564],{},[1735,19565,19566],{},"writeSingleOBJ",[1732,19568,19569],{},[1735,19570,1831],{},[1732,19572,19573],{},"If not 0 write objs with vertex colours taken from their source points.",[1717,19575,19576,19581,19585],{},[1732,19577,19578],{},[1735,19579,19580],{},"pSingleObjName",[1732,19582,19583],{},[1735,19584,6652],{},[1732,19586,19587],{},"If not 0 writes the output as a single obj - this may cause a failure for large inputs due to high memory usage.",[1717,19589,19590,19595,19599],{},[1732,19591,19592],{},[1735,19593,19594],{},"mergeLevels",[1732,19596,19597],{},[1735,19598,1831],{},[1732,19600,19601],{},"The name to give a single output obj, if writeSingleOBJ is set (NULL for UUID).",[1717,19603,19604,19608,19612],{},[1732,19605,19606],{},[1735,19607,9807],{},[1732,19609,19610],{},[1735,19611,5100],{},[1732,19613,19614],{},"If set grid cubes are merged into larger OBJs when written - increasing this value by 1 will multiply the size of output OBJs by a factor of 8. This setting is overwritten if writeSingleOBJ is set.",[1717,19616,19617,19622,19626],{},[1732,19618,19619],{},[1735,19620,19621],{},"ballRadius",[1732,19623,19624],{},[1735,19625,5100],{},[1732,19627,19628],{},"apply a global offset to the vertices when writing an OBJ",[1717,19630,19631,19636,19640],{},[1732,19632,19633],{},[1735,19634,19635],{},"gridSize",[1732,19637,19638],{},[1735,19639,5100],{},[1732,19641,19642],{},"The radius of the ball used in the BPA algorithm.",[1717,19644,19645,19650,19654],{},[1732,19646,19647],{},[1735,19648,19649],{},"maxGridPointCount",[1732,19651,19652],{},[1735,19653,1831],{},[1732,19655,19656],{},"The maximum size of each cube to be processed independantly by the BPA algorithm.",[1717,19658,19659,19663,19668],{},[1732,19660,19661],{},[1735,19662,15121],{},[1732,19664,19665],{},[1735,19666,19667],{},"struct [udGeometry](udGeometry.md) \\*",[1732,19669,19670],{},"The maximum number of grid points in a grid, if exceeded in a grid cube the grid will be subdivided.",[1717,19672,19673,19677,19682],{},[1732,19674,19675],{},[1735,19676,9448],{},[1732,19678,19679],{},[1735,19680,19681],{},"udCompareOnWriteMeshCallback \\*",[1732,19683],{},[1717,19685,19686,19690,19694],{},[1732,19687,19688],{},[1735,19689,4572],{},[1732,19691,19692],{},[1735,19693,5070],{},[1732,19695,19696],{},"callback to be run on each mesh written (one for each grid), may be NULL",[1717,19698,19699,19704,19709],{},[1732,19700,19701],{},[1735,19702,19703],{},"pCleanup",[1732,19705,19706],{},[1735,19707,19708],{},"udCompareOnWriteMeshCleanup \\*",[1732,19710,19711],{},"data to be passed to pCallback, may be NULL",[1717,19713,19714,19719,19724],{},[1732,19715,19716],{},[1735,19717,19718],{},"onWriteMesh",[1732,19720,19721],{},[1735,19722,19723],{},"struct udMeshingBPAOptions::[anonymous]",[1732,19725,19726],{},"The geometry filter to restrict the BPA algorithm to, NULL to process whole model.",[1717,19728,19729,19733,19737],{},[1732,19730,19731],{},[1735,19732,11006],{},[1732,19734,19735],{},[1735,19736,5070],{},[1732,19738],{},[1679,19740,19742],{"id":19741},"struct-udmeshingbpastatus","struct udMeshingBPAStatus",[1689,19744,19745],{},"Stores the internal state of the meshing process",[1711,19747,19748,19758],{},[1714,19749,19750],{},[1717,19751,19752,19754,19756],{},[1720,19753,1812],{},[1720,19755,1815],{},[1720,19757,1725],{},[1727,19759,19760,19773,19787],{},[1717,19761,19762,19767,19771],{},[1732,19763,19764],{},[1735,19765,19766],{},"nGrids",[1732,19768,19769],{},[1735,19770,5675],{},[1732,19772],{},[1717,19774,19775,19780,19784],{},[1732,19776,19777],{},[1735,19778,19779],{},"nCompleted",[1732,19781,19782],{},[1735,19783,5675],{},[1732,19785,19786],{},"The total number of grids to be processed.",[1717,19788,19789,19794,19798],{},[1732,19790,19791],{},[1735,19792,19793],{},"running",[1732,19795,19796],{},[1735,19797,5675],{},[1732,19799,19800],{},"The total number of grids that have been processed.",{"title":2049,"searchDepth":2050,"depth":2050,"links":19802},[19803,19806,19814],{"id":14631,"depth":2050,"text":14632,"children":19804},[19805],{"id":19390,"depth":2055,"text":19391},{"id":1676,"depth":2050,"text":1677,"children":19807},[19808,19810,19812],{"id":19396,"depth":2055,"text":19809},"enum udError udCompareOnWriteMeshCallback(const char *pOutputName, void *pData)",{"id":19402,"depth":2055,"text":19811},"enum udError udMeshing_BPAMesh(struct udContext *pContext, struct udMeshingBPAOptions *pOptions, struct udMeshingBPAStatus *pStatus)",{"id":19463,"depth":2055,"text":19813},"enum udError udMeshing_BPACancelMeshing(struct udMeshingBPAOptions *pOptions)",{"id":1795,"depth":2050,"text":1796,"children":19815},[19816,19817],{"id":19501,"depth":2055,"text":19502},{"id":19741,"depth":2055,"text":19742},{},"\u002Fguide\u002Fudsdk\u002Fudmeshing",{"title":19377,"description":19385},"guide\u002Fudsdk\u002FudMeshing","hnwpy0WOOcs18z0Uc4uqLnBpWt2hfxNmdGoTIbQsa-I",{"id":19824,"title":9357,"body":19825,"date":7,"description":19832,"extension":2064,"meta":20849,"navigation":43,"path":20850,"seo":20851,"stem":20852,"__hash__":20853},"udsdkguide\u002Fguide\u002Fudsdk\u002FudPointBuffer.md",{"type":1667,"value":19826,"toc":20823},[19827,19830,19833,19835,19841,19844,19857,19893,19900,19906,19909,19919,19940,19947,19957,19960,19973,20021,20027,20033,20036,20046,20067,20073,20081,20084,20095,20139,20145,20151,20154,20164,20184,20190,20198,20201,20212,20256,20262,20268,20271,20281,20301,20307,20309,20313,20318,20373,20377,20380,20535,20539,20542,20679,20683,20686],[1670,19828,9357],{"id":19829},"udpointbuffer",[1689,19831,19832],{},"The udPointBuffer object provides an interface to add or get points from udPointClouds",[1674,19834,1677],{"id":1676},[1679,19836,1682,19838,19840],{"id":19837},"enum-uderror-udpointbufferindices_createstruct-udpointbufferindices-ppindices-uint32_t-numindices",[1684,19839,1686],{"href":1686}," udPointBufferIndices_Create(struct udPointBufferIndices **ppIndices, uint32_t numIndices)",[1689,19842,19843],{},"Create a point buffer indices object",[1693,19845,19846],{},[1689,19847,19848,7150,19850,7154,19853,19856],{},[1698,19849,1700],{},[3673,19851,19852],{},"udPointBufferIndices_Destroy",[1735,19854,19855],{},"ppIndices"," to destroy the point buffer indices object once it’s no longer needed.",[1711,19858,19859,19867],{},[1714,19860,19861],{},[1717,19862,19863,19865],{},[1720,19864,1722],{},[1720,19866,1725],{},[1727,19868,19869,19883],{},[1717,19870,19871,19875],{},[1732,19872,19873],{},[1735,19874,19855],{},[1732,19876,19877,19878,7808,19881],{},"The pointer pointer of the udPointBufferIndices. This will allocate an instance of ",[1735,19879,19880],{},"udPointBufferIndices",[1735,19882,19855],{},[1717,19884,19885,19890],{},[1732,19886,19887],{},[1735,19888,19889],{},"numIndices",[1732,19891,19892],{},"The maximum number of indices that this object will contain (these are preallocated to avoid allocations later)",[1689,19894,19895,3676,19897,19899],{},[3673,19896,3675],{},[1684,19898,1686],{"href":1686}," value based on creation status.",[1679,19901,1682,19903,19905],{"id":19902},"enum-uderror-udpointbufferindices_destroystruct-udpointbufferindices-ppindices",[1684,19904,1686],{"href":1686}," udPointBufferIndices_Destroy(struct udPointBufferIndices **ppIndices)",[1689,19907,19908],{},"Destroys the udPointBufferIndices.",[1693,19910,19911],{},[1689,19912,19913,7504,19915,7507,19917,2503],{},[1698,19914,1700],{},[1735,19916,19855],{},[1735,19918,6778],{},[1711,19920,19921,19929],{},[1714,19922,19923],{},[1717,19924,19925,19927],{},[1720,19926,1722],{},[1720,19928,1725],{},[1727,19930,19931],{},[1717,19932,19933,19937],{},[1732,19934,19935],{},[1735,19936,19855],{},[1732,19938,19939],{},"The pointer pointer of the udPointBufferIndices. This will deallocate any memory used.",[1689,19941,19942,3676,19944,19946],{},[3673,19943,3675],{},[1684,19945,1686],{"href":1686}," value based on the result of the destruction.",[1679,19948,1682,19950,19952,19953,19956],{"id":19949},"enum-uderror-udpointbufferf64_createstruct-udpointbufferf64-ppbuffer-uint32_t-maxpoints-struct-udattributeset-pattributes",[1684,19951,1686],{"href":1686}," udPointBufferF64_Create(struct udPointBufferF64 **ppBuffer, uint32_t maxPoints, struct ",[1684,19954,19955],{"href":2686},"udAttributeSet"," *pAttributes)",[1689,19958,19959],{},"Create a 64bit floating point, point buffer object",[1693,19961,19962],{},[1689,19963,19964,7150,19966,7154,19969,19972],{},[1698,19965,1700],{},[3673,19967,19968],{},"udPointBufferF64_Destroy",[1735,19970,19971],{},"ppBuffer"," to destroy the point buffer object once it’s no longer needed.",[1711,19974,19975,19983],{},[1714,19976,19977],{},[1717,19978,19979,19981],{},[1720,19980,1722],{},[1720,19982,1725],{},[1727,19984,19985,19998,20008],{},[1717,19986,19987,19991],{},[1732,19988,19989],{},[1735,19990,19971],{},[1732,19992,19993,19994,7808,19996,2503],{},"The pointer pointer of the udPointBufferF64. This will allocate an instance of ",[1735,19995,9358],{},[1735,19997,19971],{},[1717,19999,20000,20005],{},[1732,20001,20002],{},[1735,20003,20004],{},"maxPoints",[1732,20006,20007],{},"The maximum number of points that this buffer will contain (these are preallocated to avoid allocations later)",[1717,20009,20010,20015],{},[1732,20011,20012],{},[1735,20013,20014],{},"pAttributes",[1732,20016,20017,20018,20020],{},"The pointer to the ",[1684,20019,19955],{"href":2686}," containing information on the attributes that will be available in this point buffer; NULL will have no attributes. An internal copy is made of this attribute set.",[1689,20022,20023,3676,20025,19899],{},[3673,20024,3675],{},[1684,20026,1686],{"href":1686},[1679,20028,1682,20030,20032],{"id":20029},"enum-uderror-udpointbufferf64_destroystruct-udpointbufferf64-ppbuffer",[1684,20031,1686],{"href":1686}," udPointBufferF64_Destroy(struct udPointBufferF64 **ppBuffer)",[1689,20034,20035],{},"Destroys the udPointBufferF64.",[1693,20037,20038],{},[1689,20039,20040,7504,20042,7507,20044,2503],{},[1698,20041,1700],{},[1735,20043,19971],{},[1735,20045,6778],{},[1711,20047,20048,20056],{},[1714,20049,20050],{},[1717,20051,20052,20054],{},[1720,20053,1722],{},[1720,20055,1725],{},[1727,20057,20058],{},[1717,20059,20060,20064],{},[1732,20061,20062],{},[1735,20063,19971],{},[1732,20065,20066],{},"The pointer pointer of the ppBuffer. This will deallocate any memory used.",[1689,20068,20069,3676,20071,19946],{},[3673,20070,3675],{},[1684,20072,1686],{"href":1686},[1679,20074,1682,20076,20078,20079,19956],{"id":20075},"enum-uderror-udpointbufferi64_createstruct-udpointbufferi64-ppbuffer-uint32_t-maxpoints-struct-udattributeset-pattributes",[1684,20077,1686],{"href":1686}," udPointBufferI64_Create(struct udPointBufferI64 **ppBuffer, uint32_t maxPoints, struct ",[1684,20080,19955],{"href":2686},[1689,20082,20083],{},"Create a 64bit integer, point buffer object",[1693,20085,20086],{},[1689,20087,20088,7150,20090,7154,20093,19972],{},[1698,20089,1700],{},[3673,20091,20092],{},"udPointBufferI64_Destroy",[1735,20094,19971],{},[1711,20096,20097,20105],{},[1714,20098,20099],{},[1717,20100,20101,20103],{},[1720,20102,1722],{},[1720,20104,1725],{},[1727,20106,20107,20121,20129],{},[1717,20108,20109,20113],{},[1732,20110,20111],{},[1735,20112,19971],{},[1732,20114,20115,20116,7808,20119,2503],{},"The pointer pointer of the udPointBufferI64. This will allocate an instance of ",[1735,20117,20118],{},"udPointBufferI64",[1735,20120,19971],{},[1717,20122,20123,20127],{},[1732,20124,20125],{},[1735,20126,20004],{},[1732,20128,20007],{},[1717,20130,20131,20135],{},[1732,20132,20133],{},[1735,20134,20014],{},[1732,20136,20017,20137,20020],{},[1684,20138,19955],{"href":2686},[1689,20140,20141,3676,20143,19899],{},[3673,20142,3675],{},[1684,20144,1686],{"href":1686},[1679,20146,1682,20148,20150],{"id":20147},"enum-uderror-udpointbufferi64_destroystruct-udpointbufferi64-ppbuffer",[1684,20149,1686],{"href":1686}," udPointBufferI64_Destroy(struct udPointBufferI64 **ppBuffer)",[1689,20152,20153],{},"Destroys the udPointBufferI64.",[1693,20155,20156],{},[1689,20157,20158,7504,20160,7507,20162,2503],{},[1698,20159,1700],{},[1735,20161,19971],{},[1735,20163,6778],{},[1711,20165,20166,20174],{},[1714,20167,20168],{},[1717,20169,20170,20172],{},[1720,20171,1722],{},[1720,20173,1725],{},[1727,20175,20176],{},[1717,20177,20178,20182],{},[1732,20179,20180],{},[1735,20181,19971],{},[1732,20183,20066],{},[1689,20185,20186,3676,20188,19946],{},[3673,20187,3675],{},[1684,20189,1686],{"href":1686},[1679,20191,1682,20193,20195,20196,19956],{"id":20192},"enum-uderror-udpointbufferu64_createstruct-udpointbufferu64-ppbuffer-uint32_t-maxpoints-struct-udattributeset-pattributes",[1684,20194,1686],{"href":1686}," udPointBufferU64_Create(struct udPointBufferU64 **ppBuffer, uint32_t maxPoints, struct ",[1684,20197,19955],{"href":2686},[1689,20199,20200],{},"Create a 64bit unsigned integer, point buffer object",[1693,20202,20203],{},[1689,20204,20205,7150,20207,7154,20210,19972],{},[1698,20206,1700],{},[3673,20208,20209],{},"udPointBufferU64_Destroy",[1735,20211,19971],{},[1711,20213,20214,20222],{},[1714,20215,20216],{},[1717,20217,20218,20220],{},[1720,20219,1722],{},[1720,20221,1725],{},[1727,20223,20224,20238,20246],{},[1717,20225,20226,20230],{},[1732,20227,20228],{},[1735,20229,19971],{},[1732,20231,20232,20233,7808,20236,2503],{},"The pointer pointer of the udPointBufferU64. This will allocate an instance of ",[1735,20234,20235],{},"udPointBufferU64",[1735,20237,19971],{},[1717,20239,20240,20244],{},[1732,20241,20242],{},[1735,20243,20004],{},[1732,20245,20007],{},[1717,20247,20248,20252],{},[1732,20249,20250],{},[1735,20251,20014],{},[1732,20253,20017,20254,20020],{},[1684,20255,19955],{"href":2686},[1689,20257,20258,3676,20260,19899],{},[3673,20259,3675],{},[1684,20261,1686],{"href":1686},[1679,20263,1682,20265,20267],{"id":20264},"enum-uderror-udpointbufferu64_destroystruct-udpointbufferu64-ppbuffer",[1684,20266,1686],{"href":1686}," udPointBufferU64_Destroy(struct udPointBufferU64 **ppBuffer)",[1689,20269,20270],{},"Destroys the udPointBufferU64.",[1693,20272,20273],{},[1689,20274,20275,7504,20277,7507,20279,2503],{},[1698,20276,1700],{},[1735,20278,19971],{},[1735,20280,6778],{},[1711,20282,20283,20291],{},[1714,20284,20285],{},[1717,20286,20287,20289],{},[1720,20288,1722],{},[1720,20290,1725],{},[1727,20292,20293],{},[1717,20294,20295,20299],{},[1732,20296,20297],{},[1735,20298,19971],{},[1732,20300,20066],{},[1689,20302,20303,3676,20305,19946],{},[3673,20304,3675],{},[1684,20306,1686],{"href":1686},[1674,20308,1796],{"id":1795},[1679,20310,20312],{"id":20311},"struct-udpointbufferindices","struct udPointBufferIndices",[1689,20314,20315,20316],{},"Stores a set of indices to be used with a ",[3673,20317,9357],{},[1711,20319,20320,20330],{},[1714,20321,20322],{},[1717,20323,20324,20326,20328],{},[1720,20325,1812],{},[1720,20327,1815],{},[1720,20329,1725],{},[1727,20331,20332,20345,20359],{},[1717,20333,20334,20338,20342],{},[1732,20335,20336],{},[1735,20337,4345],{},[1732,20339,20340],{},[1735,20341,1831],{},[1732,20343,20344],{},"Total number of indices currently contained in this object.",[1717,20346,20347,20352,20356],{},[1732,20348,20349],{},[1735,20350,20351],{},"capacity",[1732,20353,20354],{},[1735,20355,1831],{},[1732,20357,20358],{},"Total number of indices that can fit in this object.",[1717,20360,20361,20366,20370],{},[1732,20362,20363],{},[1735,20364,20365],{},"indices[1]",[1732,20367,20368],{},[1735,20369,1831],{},[1732,20371,20372],{},"Array of indices, real length of the array is stored in capacity.",[1679,20374,20376],{"id":20375},"struct-udpointbufferf64","struct udPointBufferF64",[1689,20378,20379],{},"Stores a set of points and their attributes that have positions as double (64bit float) values",[1711,20381,20382,20392],{},[1714,20383,20384],{},[1717,20385,20386,20388,20390],{},[1720,20387,1812],{},[1720,20389,1815],{},[1720,20391,1725],{},[1727,20393,20394,20409,20425,20439,20453,20466,20480,20494,20507,20521],{},[1717,20395,20396,20401,20406],{},[1732,20397,20398],{},[1735,20399,20400],{},"pPositions",[1732,20402,20403],{},[1735,20404,20405],{},"double \\*",[1732,20407,20408],{},"Flat array of XYZ positions in the format XYZXYZXYZXYZXYZXYZXYZ…",[1717,20410,20411,20415,20420],{},[1732,20412,20413],{},[1735,20414,20014],{},[1732,20416,20417],{},[1735,20418,20419],{},"uint8_t \\*",[1732,20421,20422,20423,2503],{},"Byte array of attribute data ordered as specified in ",[1735,20424,9762],{},[1717,20426,20427,20432,20436],{},[1732,20428,20429],{},[1735,20430,20431],{},"pRangeMaskData",[1732,20433,20434],{},[1735,20435,20419],{},[1732,20437,20438],{},"Array of interleaved rangemask blobs, each of rangeMaskStride size, with the array being pointCount\u002FpointsAllocated length\u002Freservation.",[1717,20440,20441,20446,20450],{},[1732,20442,20443],{},[1735,20444,20445],{},"rangeMaskPresent[4]",[1732,20447,20448],{},[1735,20449,5675],{},[1732,20451,20452],{},"Masks for 64,32,16 and 8 bit rangemask presence respectively. Rangemasks are ordered by size, anf sub-ordered by attribute index.",[1717,20454,20455,20459,20463],{},[1732,20456,20457],{},[1735,20458,9762],{},[1732,20460,20461],{},[1735,20462,9767],{},[1732,20464,20465],{},"Information on the attributes that are available in this point buffer.",[1717,20467,20468,20473,20477],{},[1732,20469,20470],{},[1735,20471,20472],{},"attributeStride",[1732,20474,20475],{},[1735,20476,1831],{},[1732,20478,20479],{},"Total number of bytes between the start of the attibutes of one point and the first byte of the next attribute.",[1717,20481,20482,20487,20491],{},[1732,20483,20484],{},[1735,20485,20486],{},"rangeMaskStride",[1732,20488,20489],{},[1735,20490,1831],{},[1732,20492,20493],{},"Rounded\u002Faligned stride between rangeMasks in pRangeMaskData.",[1717,20495,20496,20500,20504],{},[1732,20497,20498],{},[1735,20499,10938],{},[1732,20501,20502],{},[1735,20503,1831],{},[1732,20505,20506],{},"How many points are currently contained in this buffer.",[1717,20508,20509,20514,20518],{},[1732,20510,20511],{},[1735,20512,20513],{},"pointsAllocated",[1732,20515,20516],{},[1735,20517,1831],{},[1732,20519,20520],{},"Total number of points that can fit in this udPointBufferF64.",[1717,20522,20523,20528,20532],{},[1732,20524,20525],{},[1735,20526,20527],{},"\\_reserved",[1732,20529,20530],{},[1735,20531,1831],{},[1732,20533,20534],{},"Reserved for internal use.",[1679,20536,20538],{"id":20537},"struct-udpointbufferi64","struct udPointBufferI64",[1689,20540,20541],{},"Stores a set of points and their attributes that have positions as Int64 values",[1711,20543,20544,20554],{},[1714,20545,20546],{},[1717,20547,20548,20550,20552],{},[1720,20549,1812],{},[1720,20551,1815],{},[1720,20553,1725],{},[1727,20555,20556,20569,20583,20595,20607,20619,20631,20643,20655,20667],{},[1717,20557,20558,20562,20567],{},[1732,20559,20560],{},[1735,20561,20400],{},[1732,20563,20564],{},[1735,20565,20566],{},"int64_t \\*",[1732,20568,20408],{},[1717,20570,20571,20575,20579],{},[1732,20572,20573],{},[1735,20574,20014],{},[1732,20576,20577],{},[1735,20578,20419],{},[1732,20580,20422,20581,2503],{},[1735,20582,9762],{},[1717,20584,20585,20589,20593],{},[1732,20586,20587],{},[1735,20588,20431],{},[1732,20590,20591],{},[1735,20592,20419],{},[1732,20594,20438],{},[1717,20596,20597,20601,20605],{},[1732,20598,20599],{},[1735,20600,20445],{},[1732,20602,20603],{},[1735,20604,5675],{},[1732,20606,20452],{},[1717,20608,20609,20613,20617],{},[1732,20610,20611],{},[1735,20612,9762],{},[1732,20614,20615],{},[1735,20616,9767],{},[1732,20618,20465],{},[1717,20620,20621,20625,20629],{},[1732,20622,20623],{},[1735,20624,20472],{},[1732,20626,20627],{},[1735,20628,1831],{},[1732,20630,20479],{},[1717,20632,20633,20637,20641],{},[1732,20634,20635],{},[1735,20636,20486],{},[1732,20638,20639],{},[1735,20640,1831],{},[1732,20642,20493],{},[1717,20644,20645,20649,20653],{},[1732,20646,20647],{},[1735,20648,10938],{},[1732,20650,20651],{},[1735,20652,1831],{},[1732,20654,20506],{},[1717,20656,20657,20661,20665],{},[1732,20658,20659],{},[1735,20660,20513],{},[1732,20662,20663],{},[1735,20664,1831],{},[1732,20666,20520],{},[1717,20668,20669,20673,20677],{},[1732,20670,20671],{},[1735,20672,20527],{},[1732,20674,20675],{},[1735,20676,1831],{},[1732,20678,20534],{},[1679,20680,20682],{"id":20681},"struct-udpointbufferu64","struct udPointBufferU64",[1689,20684,20685],{},"Stores a set of points and their attributes that have positions as UInt64 values",[1711,20687,20688,20698],{},[1714,20689,20690],{},[1717,20691,20692,20694,20696],{},[1720,20693,1812],{},[1720,20695,1815],{},[1720,20697,1725],{},[1727,20699,20700,20713,20727,20739,20751,20763,20775,20787,20799,20811],{},[1717,20701,20702,20706,20711],{},[1732,20703,20704],{},[1735,20705,20400],{},[1732,20707,20708],{},[1735,20709,20710],{},"uint64_t \\*",[1732,20712,20408],{},[1717,20714,20715,20719,20723],{},[1732,20716,20717],{},[1735,20718,20014],{},[1732,20720,20721],{},[1735,20722,20419],{},[1732,20724,20422,20725,2503],{},[1735,20726,9762],{},[1717,20728,20729,20733,20737],{},[1732,20730,20731],{},[1735,20732,20431],{},[1732,20734,20735],{},[1735,20736,20419],{},[1732,20738,20438],{},[1717,20740,20741,20745,20749],{},[1732,20742,20743],{},[1735,20744,20445],{},[1732,20746,20747],{},[1735,20748,5675],{},[1732,20750,20452],{},[1717,20752,20753,20757,20761],{},[1732,20754,20755],{},[1735,20756,9762],{},[1732,20758,20759],{},[1735,20760,9767],{},[1732,20762,20465],{},[1717,20764,20765,20769,20773],{},[1732,20766,20767],{},[1735,20768,20472],{},[1732,20770,20771],{},[1735,20772,1831],{},[1732,20774,20479],{},[1717,20776,20777,20781,20785],{},[1732,20778,20779],{},[1735,20780,20486],{},[1732,20782,20783],{},[1735,20784,1831],{},[1732,20786,20493],{},[1717,20788,20789,20793,20797],{},[1732,20790,20791],{},[1735,20792,10938],{},[1732,20794,20795],{},[1735,20796,1831],{},[1732,20798,20506],{},[1717,20800,20801,20805,20809],{},[1732,20802,20803],{},[1735,20804,20513],{},[1732,20806,20807],{},[1735,20808,1831],{},[1732,20810,20520],{},[1717,20812,20813,20817,20821],{},[1732,20814,20815],{},[1735,20816,20527],{},[1732,20818,20819],{},[1735,20820,1831],{},[1732,20822,20534],{},{"title":2049,"searchDepth":2050,"depth":2050,"links":20824},[20825,20843],{"id":1676,"depth":2050,"text":1677,"children":20826},[20827,20829,20831,20833,20835,20837,20839,20841],{"id":19837,"depth":2055,"text":20828},"enum udError udPointBufferIndices_Create(struct udPointBufferIndices **ppIndices, uint32_t numIndices)",{"id":19902,"depth":2055,"text":20830},"enum udError udPointBufferIndices_Destroy(struct udPointBufferIndices **ppIndices)",{"id":19949,"depth":2055,"text":20832},"enum udError udPointBufferF64_Create(struct udPointBufferF64 **ppBuffer, uint32_t maxPoints, struct udAttributeSet *pAttributes)",{"id":20029,"depth":2055,"text":20834},"enum udError udPointBufferF64_Destroy(struct udPointBufferF64 **ppBuffer)",{"id":20075,"depth":2055,"text":20836},"enum udError udPointBufferI64_Create(struct udPointBufferI64 **ppBuffer, uint32_t maxPoints, struct udAttributeSet *pAttributes)",{"id":20147,"depth":2055,"text":20838},"enum udError udPointBufferI64_Destroy(struct udPointBufferI64 **ppBuffer)",{"id":20192,"depth":2055,"text":20840},"enum udError udPointBufferU64_Create(struct udPointBufferU64 **ppBuffer, uint32_t maxPoints, struct udAttributeSet *pAttributes)",{"id":20264,"depth":2055,"text":20842},"enum udError udPointBufferU64_Destroy(struct udPointBufferU64 **ppBuffer)",{"id":1795,"depth":2050,"text":1796,"children":20844},[20845,20846,20847,20848],{"id":20311,"depth":2055,"text":20312},{"id":20375,"depth":2055,"text":20376},{"id":20537,"depth":2055,"text":20538},{"id":20681,"depth":2055,"text":20682},{},"\u002Fguide\u002Fudsdk\u002Fudpointbuffer",{"title":9357,"description":19832},"guide\u002Fudsdk\u002FudPointBuffer","YoCCa5MLUhBg4zD9ciCkcu5iiiiHVy_9LIn8Ul_3Emo",{"id":20855,"title":9339,"body":20856,"date":7,"description":22216,"extension":2064,"meta":22217,"navigation":43,"path":22218,"seo":22219,"stem":22220,"__hash__":22221},"udsdkguide\u002Fguide\u002Fudsdk\u002FudPointCloud.md",{"type":1667,"value":20857,"toc":22175},[20858,20861,20869,20871,20877,20883,20894,20946,20953,20959,20964,20974,21031,21037,21043,21046,21056,21077,21084,21090,21093,21125,21132,21138,21141,21148,21178,21185,21194,21197,21204,21256,21263,21269,21272,21279,21320,21327,21333,21335,21341,21377,21383,21389,21392,21398,21448,21455,21461,21464,21471,21492,21499,21508,21514,21521,21551,21558,21564,21567,21598,21605,21611,21614,21704,21711,21717,21720,21769,21776,21782,21785,21829,21835,21841,21844,21888,21894,21896,21900,21903,21959,21963,21966,22119,22123,22129],[1670,20859,9339],{"id":20860},"udpointcloud",[1689,20862,4541,20863,20865,20866,20868],{},[3673,20864,9339],{}," object provides an interface to load a Nuclideon Unlimited Detail model. Once instantiated, the ",[3673,20867,9339],{}," can be queried for metadata information, and rendered with the udRenderContext functions. Future releases will allow users to also query the pointcloud data itself, providing the ability to export to LAS or render sub-sections of the pointcloud.",[1674,20870,1677],{"id":1676},[1679,20872,1682,20874,20876],{"id":20873},"enum-uderror-udpointcloud_loadstruct-udcontext-pcontext-struct-udpointcloud-ppmodel-const-char-modellocation-struct-udpointcloudheader-pheader",[1684,20875,1686],{"href":1686}," udPointCloud_Load(struct udContext *pContext, struct udPointCloud **ppModel, const char *modelLocation, struct udPointCloudHeader *pHeader)",[1689,20878,20879,20880,2503],{},"Load a udPointCloud from ",[1735,20881,20882],{},"modelLocation",[1693,20884,20885],{},[1689,20886,20887,7150,20889,7154,20891,7158],{},[1698,20888,1700],{},[3673,20890,9303],{},[1735,20892,20893],{},"ppModel",[1711,20895,20896,20904],{},[1714,20897,20898],{},[1717,20899,20900,20902],{},[1720,20901,1722],{},[1720,20903,1725],{},[1727,20905,20906,20915,20927,20936],{},[1717,20907,20908,20912],{},[1732,20909,20910],{},[1735,20911,5760],{},[1732,20913,20914],{},"The context to be used to load the model.",[1717,20916,20917,20921],{},[1732,20918,20919],{},[1735,20920,20893],{},[1732,20922,9336,20923,7808,20925,2503],{},[1735,20924,9339],{},[1735,20926,20893],{},[1717,20928,20929,20933],{},[1732,20930,20931],{},[1735,20932,20882],{},[1732,20934,20935],{},"The location to load the model from. This may be a file location, or a supported protocol (HTTP, HTTPS, FTP).",[1717,20937,20938,20943],{},[1732,20939,20940],{},[1735,20941,20942],{},"pHeader",[1732,20944,20945],{},"If non-null, the provided udPointCloudHeader structure will be writen to",[1689,20947,20948,3676,20950,20952],{},[3673,20949,3675],{},[1684,20951,1686],{"href":1686}," value based on the result of the model load.",[1679,20954,1682,20956,20958],{"id":20955},"enum-uderror-udpointcloud_loadadvstruct-udcontext-pcontext-struct-udpointcloud-ppmodel-const-char-modellocation-struct-udpointcloudheader-pheader-struct-udpointcloudloadoptions-poptions",[1684,20957,1686],{"href":1686}," udPointCloud_LoadAdv(struct udContext *pContext, struct udPointCloud **ppModel, const char *modelLocation, struct udPointCloudHeader *pHeader, struct udPointCloudLoadOptions *pOptions)",[1689,20960,20879,20961,20963],{},[1735,20962,20882],{}," with additional load options.",[1693,20965,20966],{},[1689,20967,20968,7150,20970,7154,20972,7158],{},[1698,20969,1700],{},[3673,20971,9303],{},[1735,20973,20893],{},[1711,20975,20976,20984],{},[1714,20977,20978],{},[1717,20979,20980,20982],{},[1720,20981,1722],{},[1720,20983,1725],{},[1727,20985,20986,20994,21006,21014,21022],{},[1717,20987,20988,20992],{},[1732,20989,20990],{},[1735,20991,5760],{},[1732,20993,20914],{},[1717,20995,20996,21000],{},[1732,20997,20998],{},[1735,20999,20893],{},[1732,21001,9336,21002,7808,21004,2503],{},[1735,21003,9339],{},[1735,21005,20893],{},[1717,21007,21008,21012],{},[1732,21009,21010],{},[1735,21011,20882],{},[1732,21013,20935],{},[1717,21015,21016,21020],{},[1732,21017,21018],{},[1735,21019,20942],{},[1732,21021,20945],{},[1717,21023,21024,21028],{},[1732,21025,21026],{},[1735,21027,6607],{},[1732,21029,21030],{},"If non-null, the options to be applied when loading the model.",[1689,21032,21033,3676,21035,20952],{},[3673,21034,3675],{},[1684,21036,1686],{"href":1686},[1679,21038,1682,21040,21042],{"id":21039},"enum-uderror-udpointcloud_unloadstruct-udpointcloud-ppmodel",[1684,21041,1686],{"href":1686}," udPointCloud_Unload(struct udPointCloud **ppModel)",[1689,21044,21045],{},"Destroys the udPointCloud.",[1693,21047,21048],{},[1689,21049,21050,7504,21052,7507,21054,2503],{},[1698,21051,1700],{},[1735,21053,20893],{},[1735,21055,6778],{},[1711,21057,21058,21066],{},[1714,21059,21060],{},[1717,21061,21062,21064],{},[1720,21063,1722],{},[1720,21065,1725],{},[1727,21067,21068],{},[1717,21069,21070,21074],{},[1732,21071,21072],{},[1735,21073,20893],{},[1732,21075,21076],{},"The pointer pointer of the udPointCloud. This will deallocate any internal memory used. It may take a few frames before the streamer releases the internal memory.",[1689,21078,21079,3676,21081,21083],{},[3673,21080,3675],{},[1684,21082,1686],{"href":1686}," value based on the result of the model unload.",[1679,21085,1682,21087,21089],{"id":21086},"enum-uderror-udpointcloud_getmetadatastruct-udpointcloud-ppointcloud-const-char-ppjsonmetadata",[1684,21088,1686],{"href":1686}," udPointCloud_GetMetadata(struct udPointCloud *pPointCloud, const char **ppJSONMetadata)",[1689,21091,21092],{},"Get the metadata associated with this object.",[1711,21094,21095,21103],{},[1714,21096,21097],{},[1717,21098,21099,21101],{},[1720,21100,1722],{},[1720,21102,1725],{},[1727,21104,21105,21115],{},[1717,21106,21107,21112],{},[1732,21108,21109],{},[1735,21110,21111],{},"pPointCloud",[1732,21113,21114],{},"The point cloud model to get the metadata from.",[1717,21116,21117,21122],{},[1732,21118,21119],{},[1735,21120,21121],{},"ppJSONMetadata",[1732,21123,21124],{},"The metadata(in JSON) from the model.",[1689,21126,21127,3676,21129,21131],{},[3673,21128,3675],{},[1684,21130,1686],{"href":1686}," value based on the result of getting the model metadata.",[1679,21133,1682,21135,21137],{"id":21134},"enum-uderror-udpointcloud_getheaderstruct-udpointcloud-ppointcloud-struct-udpointcloudheader-pheader",[1684,21136,1686],{"href":1686}," udPointCloud_GetHeader(struct udPointCloud *pPointCloud, struct udPointCloudHeader *pHeader)",[1689,21139,21140],{},"Get the matrix of this model.",[1693,21142,21143],{},[1689,21144,21145,21147],{},[1698,21146,1700],{},"\nAll Unlimited Detail models are assumed to be from { 0, 0, 0 } to { 1, 1, 1 }. Any scaling applied to the model will be in this matrix along with the translation and rotation.",[1711,21149,21150,21158],{},[1714,21151,21152],{},[1717,21153,21154,21156],{},[1720,21155,1722],{},[1720,21157,1725],{},[1727,21159,21160,21169],{},[1717,21161,21162,21166],{},[1732,21163,21164],{},[1735,21165,21111],{},[1732,21167,21168],{},"The point cloud model to get the matrix from.",[1717,21170,21171,21175],{},[1732,21172,21173],{},[1735,21174,20942],{},[1732,21176,21177],{},"The header structure to fill out",[1689,21179,21180,3676,21182,21184],{},[3673,21181,3675],{},[1684,21183,1686],{"href":1686}," value based on the result of getting the model header.",[1679,21186,1682,21188,21190,21191,21193],{"id":21187},"enum-uderror-udpointcloud_exportstruct-udpointcloud-pmodel-const-char-pexportfilename-const-struct-udgeometry-pfilter-float-pprogress",[1684,21189,1686],{"href":1686}," udPointCloud_Export(struct udPointCloud *pModel, const char *pExportFilename, const struct ",[1684,21192,14618],{"href":14618}," *pFilter, float *pProgress)",[1689,21195,21196],{},"Exports a point cloud",[1693,21198,21199],{},[1689,21200,21201,21203],{},[1698,21202,1708],{},"\nIf an existing file exists this function will try override it",[1711,21205,21206,21214],{},[1714,21207,21208],{},[1717,21209,21210,21212],{},[1720,21211,1722],{},[1720,21213,1725],{},[1727,21215,21216,21226,21236,21246],{},[1717,21217,21218,21223],{},[1732,21219,21220],{},[1735,21221,21222],{},"pModel",[1732,21224,21225],{},"The loaded pointcloud to export.",[1717,21227,21228,21233],{},[1732,21229,21230],{},[1735,21231,21232],{},"pExportFilename",[1732,21234,21235],{},"The path and filename to export the point cloud to. This should be a file location with write permissions. Supported formats are .UDS and .LAS.",[1717,21237,21238,21243],{},[1732,21239,21240],{},[1735,21241,21242],{},"pFilter",[1732,21244,21245],{},"If non-NULL this filter will be applied on the export to export a subsection",[1717,21247,21248,21253],{},[1732,21249,21250],{},[1735,21251,21252],{},"pProgress",[1732,21254,21255],{},"If non-NULL, this will be updated with a (estimated) progress throughout the export. Ranges between 0.f - 1.f",[1689,21257,21258,3676,21260,21262],{},[3673,21259,3675],{},[1684,21261,1686],{"href":1686}," value based on the result of the model export",[1679,21264,1682,21266,21268],{"id":21265},"enum-uderror-udpointcloud_getnodecolourconst-struct-udpointcloud-pmodel-const-struct-udvoxelid-pvoxelid-uint32_t-pcolour",[1684,21267,1686],{"href":1686}," udPointCloud_GetNodeColour(const struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint32_t *pColour)",[1689,21270,21271],{},"Gets the default colour for a specific voxel in a given point cloud",[1693,21273,21274],{},[1689,21275,21276,21278],{},[1698,21277,1708],{},"\nCalling this with invalid inputs can easily crash the program",[1711,21280,21281,21289],{},[1714,21282,21283],{},[1717,21284,21285,21287],{},[1720,21286,1722],{},[1720,21288,1725],{},[1727,21290,21291,21300,21310],{},[1717,21292,21293,21297],{},[1732,21294,21295],{},[1735,21296,21222],{},[1732,21298,21299],{},"The point cloud to get a default colour for.",[1717,21301,21302,21307],{},[1732,21303,21304],{},[1735,21305,21306],{},"pVoxelID",[1732,21308,21309],{},"The voxelID provided by picking or to voxel shaders",[1717,21311,21312,21317],{},[1732,21313,21314],{},[1735,21315,21316],{},"pColour",[1732,21318,21319],{},"The address to write the colour of the given voxel to",[1689,21321,21322,3676,21324,21326],{},[3673,21323,3675],{},[1684,21325,1686],{"href":1686}," value based on the result of getting the colour",[1679,21328,1682,21330,21332],{"id":21329},"enum-uderror-udpointcloud_getnodecolour64const-struct-udpointcloud-pmodel-const-struct-udvoxelid-pvoxelid-uint64_t-pcolour",[1684,21331,1686],{"href":1686}," udPointCloud_GetNodeColour64(const struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint64_t *pColour)",[1689,21334,21271],{},[1693,21336,21337],{},[1689,21338,21339,21278],{},[1698,21340,1708],{},[1711,21342,21343,21351],{},[1714,21344,21345],{},[1717,21346,21347,21349],{},[1720,21348,1722],{},[1720,21350,1725],{},[1727,21352,21353,21361,21369],{},[1717,21354,21355,21359],{},[1732,21356,21357],{},[1735,21358,21222],{},[1732,21360,21299],{},[1717,21362,21363,21367],{},[1732,21364,21365],{},[1735,21366,21306],{},[1732,21368,21309],{},[1717,21370,21371,21375],{},[1732,21372,21373],{},[1735,21374,21316],{},[1732,21376,21319],{},[1689,21378,21379,3676,21381,21326],{},[3673,21380,3675],{},[1684,21382,1686],{"href":1686},[1679,21384,1682,21386,21388],{"id":21385},"enum-uderror-udpointcloud_getattributeaddressstruct-udpointcloud-pmodel-const-struct-udvoxelid-pvoxelid-uint32_t-attributeoffset-const-void-ppattributeaddress",[1684,21387,1686],{"href":1686}," udPointCloud_GetAttributeAddress(struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint32_t attributeOffset, const void **ppAttributeAddress)",[1689,21390,21391],{},"Gets the pointer to the attribute offset on a specific voxel in a point cloud",[1693,21393,21394],{},[1689,21395,21396,21278],{},[1698,21397,1708],{},[1711,21399,21400,21408],{},[1714,21401,21402],{},[1717,21403,21404,21406],{},[1720,21405,1722],{},[1720,21407,1725],{},[1727,21409,21410,21419,21428,21438],{},[1717,21411,21412,21416],{},[1732,21413,21414],{},[1735,21415,21222],{},[1732,21417,21418],{},"The point cloud to get an address for.",[1717,21420,21421,21425],{},[1732,21422,21423],{},[1735,21424,21306],{},[1732,21426,21427],{},"The node provided by picking or to voxel shaders",[1717,21429,21430,21435],{},[1732,21431,21432],{},[1735,21433,21434],{},"attributeOffset",[1732,21436,21437],{},"The attribute offset from udAttributeSet_GetOffsetOfNamedAttribute or udAttributeSet_GetOffsetOfStandardAttribute",[1717,21439,21440,21445],{},[1732,21441,21442],{},[1735,21443,21444],{},"ppAttributeAddress",[1732,21446,21447],{},"The pointer will be updated with the address to the attribute",[1689,21449,21450,3676,21452,21454],{},[3673,21451,3675],{},[1684,21453,1686],{"href":1686}," value based on the result of getting the attribute address",[1679,21456,1682,21458,21460],{"id":21457},"enum-uderror-udpointcloud_getstreamingstatusstruct-udpointcloud-pmodel",[1684,21459,1686],{"href":1686}," udPointCloud_GetStreamingStatus(struct udPointCloud *pModel)",[1689,21462,21463],{},"Gets the streamer status for the model",[1693,21465,21466],{},[1689,21467,21468,21470],{},[1698,21469,1700],{},"\nudE_Success indicates the model is streaming successfully, other errors indicate other specific issues",[1711,21472,21473,21481],{},[1714,21474,21475],{},[1717,21476,21477,21479],{},[1720,21478,1722],{},[1720,21480,1725],{},[1727,21482,21483],{},[1717,21484,21485,21489],{},[1732,21486,21487],{},[1735,21488,21222],{},[1732,21490,21491],{},"The point cloud to get the status of.",[1689,21493,21494,3676,21496,21498],{},[3673,21495,3675],{},[1684,21497,1686],{"href":1686}," value indicating the internal streamer status for this model.",[1679,21500,1682,21502,21504,21505,21507],{"id":21501},"enum-uderror-udpointcloud_getsourceattributesstruct-udpointcloud-pmodel-struct-udattributeset-pattributeset",[1684,21503,1686],{"href":1686}," udPointCloud_GetSourceAttributes(struct udPointCloud *pModel, struct ",[1684,21506,19955],{"href":2686}," *pAttributeSet)",[1689,21509,21510,21511,21513],{},"Gets the ",[1684,21512,19955],{"href":2686}," of the model",[1693,21515,21516],{},[1689,21517,21518,21520],{},[1698,21519,1700],{},"\nudAttributeSet_Destroy must be called on pAttributeSet",[1711,21522,21523,21531],{},[1714,21524,21525],{},[1717,21526,21527,21529],{},[1720,21528,1722],{},[1720,21530,1725],{},[1727,21532,21533,21542],{},[1717,21534,21535,21539],{},[1732,21536,21537],{},[1735,21538,21222],{},[1732,21540,21541],{},"The point cloud to get original attributes of.",[1717,21543,21544,21548],{},[1732,21545,21546],{},[1735,21547,3646],{},[1732,21549,21550],{},"The attributeSet to be populated",[1689,21552,21553,3676,21555,21557],{},[3673,21554,3675],{},[1684,21556,1686],{"href":1686}," value indicating success of fetching the attributes",[1679,21559,1682,21561,21563],{"id":21560},"enum-uderror-udpointcloud_setantioctreestruct-udpointcloud-pmodel-struct-udpointcloud-pantioctreemodel",[1684,21562,1686],{"href":1686}," udPointCloud_SetAntiOctree(struct udPointCloud *pModel, struct udPointCloud *pAntiOctreeModel)",[1689,21565,21566],{},"Set the Anti Octree of the model",[1711,21568,21569,21577],{},[1714,21570,21571],{},[1717,21572,21573,21575],{},[1720,21574,1722],{},[1720,21576,1725],{},[1727,21578,21579,21588],{},[1717,21580,21581,21585],{},[1732,21582,21583],{},[1735,21584,21222],{},[1732,21586,21587],{},"The point cloud to get assigned a new Anti Octree.",[1717,21589,21590,21595],{},[1732,21591,21592],{},[1735,21593,21594],{},"pAntiOctreeModel",[1732,21596,21597],{},"The point cloud to be used as anti octree",[1689,21599,21600,3676,21602,21604],{},[3673,21601,3675],{},[1684,21603,1686],{"href":1686}," value indicating success setting the anti octree to this PointCloud",[1679,21606,1682,21608,21610],{"id":21607},"enum-uderror-udpointcloud_gethistogramdatastruct-udpointcloud-pmodel-uint32_t-attributeindex-uint64_t-phistogram-uint32_t-phistogramsize-double-pmin-double-pincrement-uint64_t-phistogrammax-uint64_t-phistogramtotal",[1684,21609,1686],{"href":1686}," udPointCloud_GetHistogramData(struct udPointCloud *pModel, uint32_t attributeIndex, uint64_t *pHistogram, uint32_t *pHistogramSize, double *pMin, double *pIncrement, uint64_t *pHistogramMax, uint64_t *pHistogramTotal)",[1689,21612,21613],{},"Get a histogram of an attribute for this point cloud (if calculated at convert time)",[1711,21615,21616,21624],{},[1714,21617,21618],{},[1717,21619,21620,21622],{},[1720,21621,1722],{},[1720,21623,1725],{},[1727,21625,21626,21635,21644,21654,21664,21674,21684,21694],{},[1717,21627,21628,21632],{},[1732,21629,21630],{},[1735,21631,21111],{},[1732,21633,21634],{},"Pointer to the point cloud to get histogram from",[1717,21636,21637,21641],{},[1732,21638,21639],{},[1735,21640,3809],{},[1732,21642,21643],{},"Index of the attribute within the pointcloud attribute to of the pointcloud",[1717,21645,21646,21651],{},[1732,21647,21648],{},[1735,21649,21650],{},"pHistogram",[1732,21652,21653],{},"An array of 64 uint64s to be populated with the bins of the histogram",[1717,21655,21656,21661],{},[1732,21657,21658],{},[1735,21659,21660],{},"pHistogramSize",[1732,21662,21663],{},"Pointer to be populated with the number of 64 bit bins in the histogram",[1717,21665,21666,21671],{},[1732,21667,21668],{},[1735,21669,21670],{},"pMin",[1732,21672,21673],{},"Pointer to be populated with the minimum value in the histogram (may be NULL)",[1717,21675,21676,21681],{},[1732,21677,21678],{},[1735,21679,21680],{},"pIncrement",[1732,21682,21683],{},"Pointer to be populated with the width of the histogram buckets (may be NULL)",[1717,21685,21686,21691],{},[1732,21687,21688],{},[1735,21689,21690],{},"pHistogramMax",[1732,21692,21693],{},"Pointer to be populated with the maximum count recorded in the histogram (may be NULL)",[1717,21695,21696,21701],{},[1732,21697,21698],{},[1735,21699,21700],{},"pHistogramTotal",[1732,21702,21703],{},"Pointer to be populated with the total points represented in the histogram (may be NULL)",[1689,21705,21706,3676,21708,21710],{},[3673,21707,3675],{},[1684,21709,1686],{"href":1686}," value indicating success of getting the histogram for this point cloud",[1679,21712,1682,21714,21716],{"id":21713},"enum-uderror-udpointcloud_getattrminmaxf64struct-udpointcloud-pmodel-uint32_t-index-double-pmin-double-pmax",[1684,21715,1686],{"href":1686}," udPointCloud_GetAttrMinMaxF64(struct udPointCloud *pModel, uint32_t index, double *pMin, double *pMax)",[1689,21718,21719],{},"Get the min and max values of an attribute in a point cloud as doubles",[1711,21721,21722,21730],{},[1714,21723,21724],{},[1717,21725,21726,21728],{},[1720,21727,1722],{},[1720,21729,1725],{},[1727,21731,21732,21741,21750,21759],{},[1717,21733,21734,21738],{},[1732,21735,21736],{},[1735,21737,21222],{},[1732,21739,21740],{},"The pointer to the point cloud to get the min and max from",[1717,21742,21743,21747],{},[1732,21744,21745],{},[1735,21746,4582],{},[1732,21748,21749],{},"The index of the attribute to retrieve the min and max of",[1717,21751,21752,21756],{},[1732,21753,21754],{},[1735,21755,21670],{},[1732,21757,21758],{},"A pointer to store the resultant min in",[1717,21760,21761,21766],{},[1732,21762,21763],{},[1735,21764,21765],{},"pMax",[1732,21767,21768],{},"A pointer to store the resultant max in",[1689,21770,21771,3676,21773,21775],{},[3673,21772,3675],{},[1684,21774,1686],{"href":1686}," value indicating success of getting the attribute min and max values, udE_NotFound if the attribute is not present",[1679,21777,1682,21779,21781],{"id":21778},"enum-uderror-udpointcloud_getattrminmaxi64struct-udpointcloud-pmodel-uint32_t-index-int64_t-pmin-int64_t-pmax",[1684,21780,1686],{"href":1686}," udPointCloud_GetAttrMinMaxI64(struct udPointCloud *pModel, uint32_t index, int64_t *pMin, int64_t *pMax)",[1689,21783,21784],{},"Get the min and max values of an attribute in a point cloud as 64 bit signed integers",[1711,21786,21787,21795],{},[1714,21788,21789],{},[1717,21790,21791,21793],{},[1720,21792,1722],{},[1720,21794,1725],{},[1727,21796,21797,21805,21813,21821],{},[1717,21798,21799,21803],{},[1732,21800,21801],{},[1735,21802,21222],{},[1732,21804,21740],{},[1717,21806,21807,21811],{},[1732,21808,21809],{},[1735,21810,4582],{},[1732,21812,21749],{},[1717,21814,21815,21819],{},[1732,21816,21817],{},[1735,21818,21670],{},[1732,21820,21758],{},[1717,21822,21823,21827],{},[1732,21824,21825],{},[1735,21826,21765],{},[1732,21828,21768],{},[1689,21830,21831,3676,21833,21775],{},[3673,21832,3675],{},[1684,21834,1686],{"href":1686},[1679,21836,1682,21838,21840],{"id":21837},"enum-uderror-udpointcloud_getattrminmaxu64struct-udpointcloud-pmodel-uint32_t-index-uint64_t-pmin-uint64_t-pmax",[1684,21839,1686],{"href":1686}," udPointCloud_GetAttrMinMaxU64(struct udPointCloud *pModel, uint32_t index, uint64_t *pMin, uint64_t *pMax)",[1689,21842,21843],{},"Get the min and max values of an attribute in a point cloud as 64 bit unsigned integers",[1711,21845,21846,21854],{},[1714,21847,21848],{},[1717,21849,21850,21852],{},[1720,21851,1722],{},[1720,21853,1725],{},[1727,21855,21856,21864,21872,21880],{},[1717,21857,21858,21862],{},[1732,21859,21860],{},[1735,21861,21222],{},[1732,21863,21740],{},[1717,21865,21866,21870],{},[1732,21867,21868],{},[1735,21869,4582],{},[1732,21871,21749],{},[1717,21873,21874,21878],{},[1732,21875,21876],{},[1735,21877,21670],{},[1732,21879,21758],{},[1717,21881,21882,21886],{},[1732,21883,21884],{},[1735,21885,21765],{},[1732,21887,21768],{},[1689,21889,21890,3676,21892,21775],{},[3673,21891,3675],{},[1684,21893,1686],{"href":1686},[1674,21895,1796],{"id":1795},[1679,21897,21899],{"id":21898},"struct-udvoxelid","struct udVoxelID",[1689,21901,21902],{},"Combines the traverse context and node index to uniquely identify a node",[1711,21904,21905,21915],{},[1714,21906,21907],{},[1717,21908,21909,21911,21913],{},[1720,21910,1812],{},[1720,21912,1815],{},[1720,21914,1725],{},[1727,21916,21917,21930,21945],{},[1717,21918,21919,21923,21927],{},[1732,21920,21921],{},[1735,21922,4582],{},[1732,21924,21925],{},[1735,21926,5675],{},[1732,21928,21929],{},"Internal index value.",[1717,21931,21932,21937,21942],{},[1732,21933,21934],{},[1735,21935,21936],{},"pTrav",[1732,21938,21939],{},[1735,21940,21941],{},"const void \\*",[1732,21943,21944],{},"Internal traverse info.",[1717,21946,21947,21952,21956],{},[1732,21948,21949],{},[1735,21950,21951],{},"pRenderInfo",[1732,21953,21954],{},[1735,21955,5070],{},[1732,21957,21958],{},"Internal render info.",[1679,21960,21962],{"id":21961},"struct-udpointcloudheader","struct udPointCloudHeader",[1689,21964,21965],{},"Stores basic information about a udPointCloud",[1711,21967,21968,21978],{},[1714,21969,21970],{},[1717,21971,21972,21974,21976],{},[1720,21973,1812],{},[1720,21975,1815],{},[1720,21977,1725],{},[1727,21979,21980,21994,22008,22022,22036,22050,22063,22077,22091,22105],{},[1717,21981,21982,21987,21991],{},[1732,21983,21984],{},[1735,21985,21986],{},"scaledRange",[1732,21988,21989],{},[1735,21990,5100],{},[1732,21992,21993],{},"The point cloud’s range multiplied by the voxel size.",[1717,21995,21996,22001,22005],{},[1732,21997,21998],{},[1735,21999,22000],{},"unitMeterScale",[1732,22002,22003],{},[1735,22004,5100],{},[1732,22006,22007],{},"The scale to apply to convert to\u002Ffrom metres (after scaledRange is applied to the unitCube).",[1717,22009,22010,22015,22019],{},[1732,22011,22012],{},[1735,22013,22014],{},"totalLODLayers",[1732,22016,22017],{},[1735,22018,1831],{},[1732,22020,22021],{},"The total number of LOD layers in this octree.",[1717,22023,22024,22029,22033],{},[1732,22025,22026],{},[1735,22027,22028],{},"convertedResolution",[1732,22030,22031],{},[1735,22032,5100],{},[1732,22034,22035],{},"The resolution this model was converted at.",[1717,22037,22038,22043,22047],{},[1732,22039,22040],{},[1735,22041,22042],{},"storedMatrix[16]",[1732,22044,22045],{},[1735,22046,5100],{},[1732,22048,22049],{},"This matrix is the ‘default’ internal matrix to go from a unit cube to the full size.",[1717,22051,22052,22056,22060],{},[1732,22053,22054],{},[1735,22055,9762],{},[1732,22057,22058],{},[1735,22059,9767],{},[1732,22061,22062],{},"The attributes contained in this pointcloud.",[1717,22064,22065,22070,22074],{},[1732,22066,22067],{},[1735,22068,22069],{},"baseOffset[3]",[1732,22071,22072],{},[1735,22073,5100],{},[1732,22075,22076],{},"The offset to the root of the pointcloud in unit cube space.",[1717,22078,22079,22084,22088],{},[1732,22080,22081],{},[1735,22082,22083],{},"pivot[3]",[1732,22085,22086],{},[1735,22087,5100],{},[1732,22089,22090],{},"The pivot point of the model, in unit cube space.",[1717,22092,22093,22098,22102],{},[1732,22094,22095],{},[1735,22096,22097],{},"boundingBoxCenter[3]",[1732,22099,22100],{},[1735,22101,5100],{},[1732,22103,22104],{},"The center of the bounding volume, in unit cube space.",[1717,22106,22107,22112,22116],{},[1732,22108,22109],{},[1735,22110,22111],{},"boundingBoxExtents[3]",[1732,22113,22114],{},[1735,22115,5100],{},[1732,22117,22118],{},"The extents of the bounding volume, in unit cube space.",[1679,22120,22122],{"id":22121},"struct-udpointcloudloadoptions","struct udPointCloudLoadOptions",[1689,22124,22125,22126],{},"Contains additional loading options passed to ",[1735,22127,22128],{},"udPointCloud_LoadAdv",[1711,22130,22131,22141],{},[1714,22132,22133],{},[1717,22134,22135,22137,22139],{},[1720,22136,1812],{},[1720,22138,1815],{},[1720,22140,1725],{},[1727,22142,22143,22157],{},[1717,22144,22145,22150,22154],{},[1732,22146,22147],{},[1735,22148,22149],{},"numberAttributesLimited",[1732,22151,22152],{},[1735,22153,1831],{},[1732,22155,22156],{},"indicates whether to limit attributes uing the limitAttributes array",[1717,22158,22159,22164,22169],{},[1732,22160,22161],{},[1735,22162,22163],{},"pLimitedAttributes",[1732,22165,22166],{},[1735,22167,22168],{},"uint32_t \\*",[1732,22170,22171,22172,22174],{},"array of booleans corresponding to the pAttributes array in the models original ",[1684,22173,19955],{"href":2686}," indicating which attributes to load from the pointcloud",{"title":2049,"searchDepth":2050,"depth":2050,"links":22176},[22177,22211],{"id":1676,"depth":2050,"text":1677,"children":22178},[22179,22181,22183,22185,22187,22189,22191,22193,22195,22197,22199,22201,22203,22205,22207,22209],{"id":20873,"depth":2055,"text":22180},"enum udError udPointCloud_Load(struct udContext *pContext, struct udPointCloud **ppModel, const char *modelLocation, struct udPointCloudHeader *pHeader)",{"id":20955,"depth":2055,"text":22182},"enum udError udPointCloud_LoadAdv(struct udContext *pContext, struct udPointCloud **ppModel, const char *modelLocation, struct udPointCloudHeader *pHeader, struct udPointCloudLoadOptions *pOptions)",{"id":21039,"depth":2055,"text":22184},"enum udError udPointCloud_Unload(struct udPointCloud **ppModel)",{"id":21086,"depth":2055,"text":22186},"enum udError udPointCloud_GetMetadata(struct udPointCloud *pPointCloud, const char **ppJSONMetadata)",{"id":21134,"depth":2055,"text":22188},"enum udError udPointCloud_GetHeader(struct udPointCloud *pPointCloud, struct udPointCloudHeader *pHeader)",{"id":21187,"depth":2055,"text":22190},"enum udError udPointCloud_Export(struct udPointCloud *pModel, const char *pExportFilename, const struct udGeometry *pFilter, float *pProgress)",{"id":21265,"depth":2055,"text":22192},"enum udError udPointCloud_GetNodeColour(const struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint32_t *pColour)",{"id":21329,"depth":2055,"text":22194},"enum udError udPointCloud_GetNodeColour64(const struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint64_t *pColour)",{"id":21385,"depth":2055,"text":22196},"enum udError udPointCloud_GetAttributeAddress(struct udPointCloud *pModel, const struct udVoxelID *pVoxelID, uint32_t attributeOffset, const void **ppAttributeAddress)",{"id":21457,"depth":2055,"text":22198},"enum udError udPointCloud_GetStreamingStatus(struct udPointCloud *pModel)",{"id":21501,"depth":2055,"text":22200},"enum udError udPointCloud_GetSourceAttributes(struct udPointCloud *pModel, struct udAttributeSet *pAttributeSet)",{"id":21560,"depth":2055,"text":22202},"enum udError udPointCloud_SetAntiOctree(struct udPointCloud *pModel, struct udPointCloud *pAntiOctreeModel)",{"id":21607,"depth":2055,"text":22204},"enum udError udPointCloud_GetHistogramData(struct udPointCloud *pModel, uint32_t attributeIndex, uint64_t *pHistogram, uint32_t *pHistogramSize, double *pMin, double *pIncrement, uint64_t *pHistogramMax, uint64_t *pHistogramTotal)",{"id":21713,"depth":2055,"text":22206},"enum udError udPointCloud_GetAttrMinMaxF64(struct udPointCloud *pModel, uint32_t index, double *pMin, double *pMax)",{"id":21778,"depth":2055,"text":22208},"enum udError udPointCloud_GetAttrMinMaxI64(struct udPointCloud *pModel, uint32_t index, int64_t *pMin, int64_t *pMax)",{"id":21837,"depth":2055,"text":22210},"enum udError udPointCloud_GetAttrMinMaxU64(struct udPointCloud *pModel, uint32_t index, uint64_t *pMin, uint64_t *pMax)",{"id":1795,"depth":2050,"text":1796,"children":22212},[22213,22214,22215],{"id":21898,"depth":2055,"text":21899},{"id":21961,"depth":2055,"text":21962},{"id":22121,"depth":2055,"text":22122},"The udPointCloud object provides an interface to load a Nuclideon Unlimited Detail model. Once instantiated, the udPointCloud can be queried for metadata information, and rendered with the udRenderContext functions. Future releases will allow users to also query the pointcloud data itself, providing the ability to export to LAS or render sub-sections of the pointcloud.",{},"\u002Fguide\u002Fudsdk\u002Fudpointcloud",{"title":9339,"description":22216},"guide\u002Fudsdk\u002FudPointCloud","MyeOaLVb2Ab76K0tGyr9Yh0Bach-Xq5NJ05rAVJz1q0",{"id":22223,"title":2548,"body":22224,"date":7,"description":22231,"extension":2064,"meta":22641,"navigation":43,"path":22642,"seo":22643,"stem":22644,"__hash__":22645},"udsdkguide\u002Fguide\u002Fudsdk\u002FudQueryContext.md",{"type":1667,"value":22225,"toc":22623},[22226,22229,22232,22234,22243,22246,22253,22305,22312,22320,22323,22330,22361,22368,22374,22377,22383,22412,22418,22427,22430,22437,22467,22473,22481,22483,22489,22517,22523,22529,22532,22556,22563,22572,22575,22616],[1670,22227,2548],{"id":22228},"udquerycontext",[1689,22230,22231],{},"The udQueryContext object provides an interface to query or filter pointclouds.",[1674,22233,1677],{"id":1676},[1679,22235,1682,22237,22239,22240,22242],{"id":22236},"enum-uderror-udquerycontext_createstruct-udcontext-pcontext-struct-udquerycontext-ppqueryctx-struct-udpointcloud-ppointcloud-const-struct-udgeometry-pfilter",[1684,22238,1686],{"href":1686}," udQueryContext_Create(struct udContext *pContext, struct udQueryContext **ppQueryCtx, struct udPointCloud *pPointCloud, const struct ",[1684,22241,14618],{"href":14618}," *pFilter)",[1689,22244,22245],{},"Create an instance of a udQueryContext with a specific model.",[1693,22247,22248],{},[1689,22249,22250,22252],{},[1698,22251,1700],{},"\nA future release will add multiple model support and non-storedMatrix locations.",[1711,22254,22255,22263],{},[1714,22256,22257],{},[1717,22258,22259,22261],{},[1720,22260,1722],{},[1720,22262,1725],{},[1727,22264,22265,22274,22287,22296],{},[1717,22266,22267,22271],{},[1732,22268,22269],{},[1735,22270,5760],{},[1732,22272,22273],{},"The context to be used to create the query context.",[1717,22275,22276,22281],{},[1732,22277,22278],{},[1735,22279,22280],{},"ppQueryCtx",[1732,22282,22283,22284,2503],{},"The pointer pointer of the udQueryContext. This will allocate an instance of udQueryContext into ",[1735,22285,22286],{},"ppQuery",[1717,22288,22289,22293],{},[1732,22290,22291],{},[1735,22292,21111],{},[1732,22294,22295],{},"The point cloud to run the query on, it is located at its storedMatrix location (this can be changed using udQueryContext_ChangePointCloud).",[1717,22297,22298,22302],{},[1732,22299,22300],{},[1735,22301,21242],{},[1732,22303,22304],{},"The filter to use in this query (this can be changed using udQueryContext_ChangeFilter).",[1689,22306,22307,3676,22309,22311],{},[3673,22308,3675],{},[1684,22310,1686],{"href":1686}," value based on the result of the udQueryContext creation.",[1679,22313,1682,22315,22317,22318,22242],{"id":22314},"enum-uderror-udquerycontext_changefilterstruct-udquerycontext-pqueryctx-const-struct-udgeometry-pfilter",[1684,22316,1686],{"href":1686}," udQueryContext_ChangeFilter(struct udQueryContext *pQueryCtx, const struct ",[1684,22319,14618],{"href":14618},[1689,22321,22322],{},"Resets the udQueryContext and uses a new filter.",[1693,22324,22325],{},[1689,22326,22327,22329],{},[1698,22328,1700],{},"\nThis will reset the query, any existing progress will be lost.",[1711,22331,22332,22340],{},[1714,22333,22334],{},[1717,22335,22336,22338],{},[1720,22337,1722],{},[1720,22339,1725],{},[1727,22341,22342,22352],{},[1717,22343,22344,22349],{},[1732,22345,22346],{},[1735,22347,22348],{},"pQueryCtx",[1732,22350,22351],{},"The udQueryContext item previously created using udQueryContext_Create.",[1717,22353,22354,22358],{},[1732,22355,22356],{},[1735,22357,21242],{},[1732,22359,22360],{},"The new filter to use in this query.",[1689,22362,22363,3676,22365,22367],{},[3673,22364,3675],{},[1684,22366,1686],{"href":1686}," value based on the result of the operation.",[1679,22369,1682,22371,22373],{"id":22370},"enum-uderror-udquerycontext_changepointcloudstruct-udquerycontext-pqueryctx-const-struct-udpointcloud-ppointcloud",[1684,22372,1686],{"href":1686}," udQueryContext_ChangePointCloud(struct udQueryContext *pQueryCtx, const struct udPointCloud *pPointCloud)",[1689,22375,22376],{},"Resets the udQueryContext and uses a different model.",[1693,22378,22379],{},[1689,22380,22381,22329],{},[1698,22382,1700],{},[1711,22384,22385,22393],{},[1714,22386,22387],{},[1717,22388,22389,22391],{},[1720,22390,1722],{},[1720,22392,1725],{},[1727,22394,22395,22403],{},[1717,22396,22397,22401],{},[1732,22398,22399],{},[1735,22400,22348],{},[1732,22402,22351],{},[1717,22404,22405,22409],{},[1732,22406,22407],{},[1735,22408,21111],{},[1732,22410,22411],{},"The new model to use in this query.",[1689,22413,22414,3676,22416,22367],{},[3673,22415,3675],{},[1684,22417,1686],{"href":1686},[1679,22419,1682,22421,22423,22424,22426],{"id":22420},"enum-uderror-udquerycontext_executef64struct-udquerycontext-pqueryctx-struct-udpointbufferf64-ppointbuffer",[1684,22422,1686],{"href":1686}," udQueryContext_ExecuteF64(struct udQueryContext *pQueryCtx, struct ",[1684,22425,9358],{"href":9357}," *pPointBuffer)",[1689,22428,22429],{},"Gets the next set of points from an existing udQueryContext.",[1693,22431,22432],{},[1689,22433,22434,22436],{},[1698,22435,1700],{},"\nThis should continue to be called until it returns udE_NotFound indicating the query has completed.",[1711,22438,22439,22447],{},[1714,22440,22441],{},[1717,22442,22443,22445],{},[1720,22444,1722],{},[1720,22446,1725],{},[1727,22448,22449,22458],{},[1717,22450,22451,22455],{},[1732,22452,22453],{},[1735,22454,22348],{},[1732,22456,22457],{},"The udQueryContext to execute.",[1717,22459,22460,22464],{},[1732,22461,22462],{},[1735,22463,5080],{},[1732,22465,22466],{},"The point buffer to write found points to.",[1689,22468,22469,3676,22471,22367],{},[3673,22470,3675],{},[1684,22472,1686],{"href":1686},[1679,22474,1682,22476,22478,22479,22426],{"id":22475},"enum-uderror-udquerycontext_executei64struct-udquerycontext-pqueryctx-struct-udpointbufferi64-ppointbuffer",[1684,22477,1686],{"href":1686}," udQueryContext_ExecuteI64(struct udQueryContext *pQueryCtx, struct ",[1684,22480,20118],{"href":9357},[1689,22482,22429],{},[1693,22484,22485],{},[1689,22486,22487,22436],{},[1698,22488,1700],{},[1711,22490,22491,22499],{},[1714,22492,22493],{},[1717,22494,22495,22497],{},[1720,22496,1722],{},[1720,22498,1725],{},[1727,22500,22501,22509],{},[1717,22502,22503,22507],{},[1732,22504,22505],{},[1735,22506,22348],{},[1732,22508,22457],{},[1717,22510,22511,22515],{},[1732,22512,22513],{},[1735,22514,5080],{},[1732,22516,22466],{},[1689,22518,22519,3676,22521,22367],{},[3673,22520,3675],{},[1684,22522,1686],{"href":1686},[1679,22524,1682,22526,22528],{"id":22525},"enum-uderror-udquerycontext_destroystruct-udquerycontext-ppqueryctx",[1684,22527,1686],{"href":1686}," udQueryContext_Destroy(struct udQueryContext **ppQueryCtx)",[1689,22530,22531],{},"Destroy the instance of udQueryContext.",[1711,22533,22534,22542],{},[1714,22535,22536],{},[1717,22537,22538,22540],{},[1720,22539,1722],{},[1720,22541,1725],{},[1727,22543,22544],{},[1717,22545,22546,22550],{},[1732,22547,22548],{},[1735,22549,22280],{},[1732,22551,22552,22553,22555],{},"The pointer pointer of the udQueryContext. This will destroy the instance of udQueryContext in ",[1735,22554,22286],{}," and set it to NULL.",[1689,22557,22558,3676,22560,22562],{},[3673,22559,3675],{},[1684,22561,1686],{"href":1686}," value based on the result of the udQueryContext destruction.",[1679,22564,1682,22566,22568,22569,22571],{"id":22565},"enum-uderror-udquery_testrendervoxelstruct-udgeometry-pqueryfilter-double-matrix16-void-prenderinfo",[1684,22567,1686],{"href":1686}," udQuery_TestRenderVoxel(struct ",[1684,22570,14618],{"href":14618}," *pQueryFilter, double matrix[16], void *pRenderInfo)",[1689,22573,22574],{},"Test the specified voxel against the given udQueryFilter.",[1711,22576,22577,22585],{},[1714,22578,22579],{},[1717,22580,22581,22583],{},[1720,22582,1722],{},[1720,22584,1725],{},[1727,22586,22587,22597,22607],{},[1717,22588,22589,22594],{},[1732,22590,22591],{},[1735,22592,22593],{},"pQueryFilter",[1732,22595,22596],{},"The udQueryFilter to test.",[1717,22598,22599,22604],{},[1732,22600,22601],{},[1735,22602,22603],{},"matrix",[1732,22605,22606],{},"The scene matrix for the model that contains the voxel being rendered.",[1717,22608,22609,22613],{},[1732,22610,22611],{},[1735,22612,21951],{},[1732,22614,22615],{},"The render info of the voxel being rendered.",[1689,22617,22618,3676,22620,22622],{},[3673,22619,3675],{},[1684,22621,1686],{"href":1686}," value based on the result of the test.",{"title":2049,"searchDepth":2050,"depth":2050,"links":22624},[22625],{"id":1676,"depth":2050,"text":1677,"children":22626},[22627,22629,22631,22633,22635,22637,22639],{"id":22236,"depth":2055,"text":22628},"enum udError udQueryContext_Create(struct udContext *pContext, struct udQueryContext **ppQueryCtx, struct udPointCloud *pPointCloud, const struct udGeometry *pFilter)",{"id":22314,"depth":2055,"text":22630},"enum udError udQueryContext_ChangeFilter(struct udQueryContext *pQueryCtx, const struct udGeometry *pFilter)",{"id":22370,"depth":2055,"text":22632},"enum udError udQueryContext_ChangePointCloud(struct udQueryContext *pQueryCtx, const struct udPointCloud *pPointCloud)",{"id":22420,"depth":2055,"text":22634},"enum udError udQueryContext_ExecuteF64(struct udQueryContext *pQueryCtx, struct udPointBufferF64 *pPointBuffer)",{"id":22475,"depth":2055,"text":22636},"enum udError udQueryContext_ExecuteI64(struct udQueryContext *pQueryCtx, struct udPointBufferI64 *pPointBuffer)",{"id":22525,"depth":2055,"text":22638},"enum udError udQueryContext_Destroy(struct udQueryContext **ppQueryCtx)",{"id":22565,"depth":2055,"text":22640},"enum udError udQuery_TestRenderVoxel(struct udGeometry *pQueryFilter, double matrix[16], void *pRenderInfo)",{},"\u002Fguide\u002Fudsdk\u002Fudquerycontext",{"title":2548,"description":22231},"guide\u002Fudsdk\u002FudQueryContext","AWfwS7EPLhWDPkGeJu2gAhEIqudo-HwM43sZJA3fjb8",{"id":22647,"title":4678,"body":22648,"date":7,"description":23369,"extension":2064,"meta":23370,"navigation":43,"path":23371,"seo":23372,"stem":23373,"__hash__":23374},"udsdkguide\u002Fguide\u002Fudsdk\u002FudRenderContext.md",{"type":1667,"value":22649,"toc":23350},[22650,22653,22658,22660,22664,22667,22671,22723,22727,22730,22734,22854,22856,22862,22866,22873,22905,22911,22917,22919,22939,22945,22951,22955,23007,23013,23015,23019,23022,23136,23140,23143,23252,23256,23259,23301],[1670,22651,4678],{"id":22652},"udrendercontext",[1689,22654,4541,22655,22657],{},[3673,22656,4678],{}," object provides an interface to render Nuclideon Unlimited Detail models. It provides the ability to render by colour, intensity or classification; additionally allowing the user to query a specific pixel for information about the pointcloud data.",[1674,22659,2698],{"id":2697},[1679,22661,22663],{"id":22662},"enum-udrendercontextpointmode","enum udRenderContextPointMode",[1689,22665,22666],{},"These are the various point modes available in udSDK",[1689,22668,22669],{},[1742,22670,2707],{},[1711,22672,22673,22681],{},[1714,22674,22675],{},[1717,22676,22677,22679],{},[1720,22678,2716],{},[1720,22680,1725],{},[1727,22682,22683,22693,22703,22713],{},[1717,22684,22685,22690],{},[1732,22686,22687],{},[1735,22688,22689],{},"udRCPM_Rectangles",[1732,22691,22692],{},"This is the default, renders the voxels expanded as screen space rectangles.",[1717,22694,22695,22700],{},[1732,22696,22697],{},[1735,22698,22699],{},"udRCPM_Cubes",[1732,22701,22702],{},"Renders the voxels as cubes.",[1717,22704,22705,22710],{},[1732,22706,22707],{},[1735,22708,22709],{},"udRCPM_Points",[1732,22711,22712],{},"Renders voxels as a single point (Note: does not accurately reflect the ‘size’ of voxels).",[1717,22714,22715,22720],{},[1732,22716,22717],{},[1735,22718,22719],{},"udRCPM_Count",[1732,22721,22722],{},"Total number of point modes. Used internally but can be used as an iterator max when displaying different point modes.",[1679,22724,22726],{"id":22725},"enum-udrendercontextflags","enum udRenderContextFlags",[1689,22728,22729],{},"These are the various render flags available in udSDK",[1689,22731,22732],{},[1742,22733,2707],{},[1711,22735,22736,22744],{},[1714,22737,22738],{},[1717,22739,22740,22742],{},[1720,22741,2716],{},[1720,22743,1725],{},[1727,22745,22746,22756,22766,22776,22786,22796,22806,22816,22825,22834,22844],{},[1717,22747,22748,22753],{},[1732,22749,22750],{},[1735,22751,22752],{},"udRCF_None",[1732,22754,22755],{},"Render the points using the default configuration.",[1717,22757,22758,22763],{},[1732,22759,22760],{},[1735,22761,22762],{},"udRCF_PreserveBuffers",[1732,22764,22765],{},"The colour and depth buffers won’t be cleared before drawing and existing depth will be respected.",[1717,22767,22768,22773],{},[1732,22769,22770],{},[1735,22771,22772],{},"udRCF_ComplexIntersections",[1732,22774,22775],{},"This flag is required in some scenes where there is a very large amount of intersecting point clouds It will internally batch rendering with the udRCF_PreserveBuffers flag after the first render.",[1717,22777,22778,22783],{},[1732,22779,22780],{},[1735,22781,22782],{},"udRCF_BlockingStreaming",[1732,22784,22785],{},"This forces the streamer to load as much of the pointcloud as required to give an accurate representation in the current view. A small amount of further refinement may still occur.",[1717,22787,22788,22793],{},[1732,22789,22790],{},[1735,22791,22792],{},"udRCF_LogarithmicDepth",[1732,22794,22795],{},"Calculate the depth as a logarithmic distribution.",[1717,22797,22798,22803],{},[1732,22799,22800],{},[1735,22801,22802],{},"udRCF_ManualStreamerUpdate",[1732,22804,22805],{},"The streamer won’t be updated internally but a render call without this flag or a manual streamer update will be required.",[1717,22807,22808,22813],{},[1732,22809,22810],{},[1735,22811,22812],{},"udRCF_ZeroAlphaSkip",[1732,22814,22815],{},"If the voxel has 0 alpha (upper 8 bits) after the voxel shader then the voxel will not be drawn to the buffers (effectively skipped).",[1717,22817,22818,22822],{},[1732,22819,22820],{},[1735,22821,2401],{},[1732,22823,22824],{},"Optimisation that allows the renderer to resolve the last 2 pixels simulataneously, this can result in slight inaccuracies (generally a few pixels) in the final image for a huge performance improvement.",[1717,22826,22827,22831],{},[1732,22828,22829],{},[1735,22830,2407],{},[1732,22832,22833],{},"Disables the renderer entering high-performance orthographic mode.",[1717,22835,22836,22841],{},[1732,22837,22838],{},[1735,22839,22840],{},"udRCF_NoTraversal",[1732,22842,22843],{},"Skip octree traversal, instead reuse existing data from previous traversal.",[1717,22845,22846,22851],{},[1732,22847,22848],{},[1735,22849,22850],{},"udRCF_DisableDrawCallFiltering",[1732,22852,22853],{},"Disables the splitting of blocks into multiple draw calls, when a filter is active.",[1674,22855,1677],{"id":1676},[1679,22857,1682,22859,22861],{"id":22858},"enum-uderror-udrendercontext_createstruct-udcontext-pcontext-struct-udrendercontext-pprenderer",[1684,22860,1686],{"href":1686}," udRenderContext_Create(struct udContext *pContext, struct udRenderContext **ppRenderer)",[1689,22863,4599,22864,4602],{},[1735,22865,4678],{},[1693,22867,22868],{},[1689,22869,22870,22872],{},[1698,22871,1700],{},"\nIt is not recommended to have more than one instance of udRenderContext.",[1711,22874,22875,22883],{},[1714,22876,22877],{},[1717,22878,22879,22881],{},[1720,22880,1722],{},[1720,22882,1725],{},[1727,22884,22885,22894],{},[1717,22886,22887,22891],{},[1732,22888,22889],{},[1735,22890,5760],{},[1732,22892,22893],{},"The context to be used to create the render context.",[1717,22895,22896,22900],{},[1732,22897,22898],{},[1735,22899,4659],{},[1732,22901,22902,22903,2503],{},"The pointer pointer of the udRenderContext. This will allocate an instance of udRenderContext into ",[1735,22904,4659],{},[1689,22906,22907,3676,22909,4631],{},[3673,22908,3675],{},[1684,22910,1686],{"href":1686},[1679,22912,1682,22914,22916],{"id":22913},"enum-uderror-udrendercontext_destroystruct-udrendercontext-pprenderer",[1684,22915,1686],{"href":1686}," udRenderContext_Destroy(struct udRenderContext **ppRenderer)",[1689,22918,4640],{},[1711,22920,22921,22929],{},[1714,22922,22923],{},[1717,22924,22925,22927],{},[1720,22926,1722],{},[1720,22928,1725],{},[1727,22930,22931],{},[1717,22932,22933,22937],{},[1732,22934,22935],{},[1735,22936,4659],{},[1732,22938,4662],{},[1689,22940,22941,3676,22943,4669],{},[3673,22942,3675],{},[1684,22944,1686],{"href":1686},[1679,22946,1682,22948,22950],{"id":22947},"enum-uderror-udrendercontext_renderstruct-udrendercontext-prenderer-struct-udrendertarget-prenderview-struct-udrenderinstance-pmodels-int-modelcount-struct-udrendersettings-prenderoptions",[1684,22949,1686],{"href":1686}," udRenderContext_Render(struct udRenderContext *pRenderer, struct udRenderTarget *pRenderView, struct udRenderInstance *pModels, int modelCount, struct udRenderSettings *pRenderOptions)",[1689,22952,4686,22953,2503],{},[1735,22954,4689],{},[1711,22956,22957,22965],{},[1714,22958,22959],{},[1717,22960,22961,22963],{},[1720,22962,1722],{},[1720,22964,1725],{},[1727,22966,22967,22975,22983,22991,22999],{},[1717,22968,22969,22973],{},[1732,22970,22971],{},[1735,22972,4708],{},[1732,22974,4711],{},[1717,22976,22977,22981],{},[1732,22978,22979],{},[1735,22980,4689],{},[1732,22982,4720],{},[1717,22984,22985,22989],{},[1732,22986,22987],{},[1735,22988,4727],{},[1732,22990,4730],{},[1717,22992,22993,22997],{},[1732,22994,22995],{},[1735,22996,4737],{},[1732,22998,4740],{},[1717,23000,23001,23005],{},[1732,23002,23003],{},[1735,23004,4747],{},[1732,23006,4750],{},[1689,23008,23009,3676,23011,4757],{},[3673,23010,3675],{},[1684,23012,1686],{"href":1686},[1674,23014,1796],{"id":1795},[1679,23016,23018],{"id":23017},"struct-udrenderpicking","struct udRenderPicking",[1689,23020,23021],{},"Stores both the input and output of the udSDK picking system",[1711,23023,23024,23034],{},[1714,23025,23026],{},[1717,23027,23028,23030,23032],{},[1720,23029,1812],{},[1720,23031,1815],{},[1720,23033,1725],{},[1727,23035,23036,23051,23065,23079,23093,23107,23121],{},[1717,23037,23038,23043,23048],{},[1732,23039,23040],{},[1735,23041,23042],{},"x",[1732,23044,23045],{},[1735,23046,23047],{},"unsigned int",[1732,23049,23050],{},"Mouse X position in udRenderTarget space.",[1717,23052,23053,23058,23062],{},[1732,23054,23055],{},[1735,23056,23057],{},"y",[1732,23059,23060],{},[1735,23061,23047],{},[1732,23063,23064],{},"Mouse Y position in udRenderTarget space.",[1717,23066,23067,23072,23076],{},[1732,23068,23069],{},[1735,23070,23071],{},"hit",[1732,23073,23074],{},[1735,23075,1831],{},[1732,23077,23078],{},"Not 0 if a voxel was hit by this pick.",[1717,23080,23081,23086,23090],{},[1732,23082,23083],{},[1735,23084,23085],{},"isHighestLOD",[1732,23087,23088],{},[1735,23089,1831],{},[1732,23091,23092],{},"Not 0 if this voxel that was hit is as precise as possible.",[1717,23094,23095,23100,23104],{},[1732,23096,23097],{},[1735,23098,23099],{},"modelIndex",[1732,23101,23102],{},[1735,23103,23047],{},[1732,23105,23106],{},"Index of the model in the ppModels list.",[1717,23108,23109,23114,23118],{},[1732,23110,23111],{},[1735,23112,23113],{},"pointCenter[3]",[1732,23115,23116],{},[1735,23117,5100],{},[1732,23119,23120],{},"The center of the hit voxel in world space.",[1717,23122,23123,23128,23133],{},[1732,23124,23125],{},[1735,23126,23127],{},"voxelID",[1732,23129,23130],{},[1735,23131,23132],{},"struct [udVoxelID](udPointCloud.md)",[1732,23134,23135],{},"The ID of the voxel that was hit by the pick; this ID is only valid for a very short period of time- Do any additional work using this ID this frame.",[1679,23137,23139],{"id":23138},"struct-udrendersettings","struct udRenderSettings",[1689,23141,23142],{},"Stores the render settings used per render",[1711,23144,23145,23155],{},[1714,23146,23147],{},[1717,23148,23149,23151,23153],{},[1720,23150,1812],{},[1720,23152,1815],{},[1720,23154,1725],{},[1727,23156,23157,23170,23185,23198,23211,23224,23238],{},[1717,23158,23159,23163,23167],{},[1732,23160,23161],{},[1735,23162,16148],{},[1732,23164,23165],{},[1735,23166,22726],{},[1732,23168,23169],{},"Optional flags providing information about how to perform this render.",[1717,23171,23172,23177,23182],{},[1732,23173,23174],{},[1735,23175,23176],{},"pPick",[1732,23178,23179],{},[1735,23180,23181],{},"struct udRenderPicking \\*",[1732,23183,23184],{},"Optional This provides information about the voxel under the mouse.",[1717,23186,23187,23191,23195],{},[1732,23188,23189],{},[1735,23190,5367],{},[1732,23192,23193],{},[1735,23194,22663],{},[1732,23196,23197],{},"The point mode for this render.",[1717,23199,23200,23204,23208],{},[1732,23201,23202],{},[1735,23203,21242],{},[1732,23205,23206],{},[1735,23207,19667],{},[1732,23209,23210],{},"Optional This filter is applied to all models in the scene.",[1717,23212,23213,23217,23221],{},[1732,23214,23215],{},[1735,23216,10938],{},[1732,23218,23219],{},[1735,23220,1831],{},[1732,23222,23223],{},"Optional (GPU Renderer) A hint to the renderer at the upper limit of voxels that are to be rendered.",[1717,23225,23226,23231,23235],{},[1732,23227,23228],{},[1735,23229,23230],{},"pointThreshold",[1732,23232,23233],{},[1735,23234,17002],{},[1732,23236,23237],{},"Optional (GPU Renderer) A hint of the minimum size (in screen space) of a voxel that the renderer will produce.",[1717,23239,23240,23245,23249],{},[1732,23241,23242],{},[1735,23243,23244],{},"forwardAxis[3]",[1732,23246,23247],{},[1735,23248,5100],{},[1732,23250,23251],{},"Optional (GPU Renderer) Override the forward axis of this render.",[1679,23253,23255],{"id":23254},"struct-udrenderinstance","struct udRenderInstance",[1689,23257,23258],{},"Stores the instance settings of a model to be rendered",[1711,23260,23261,23271],{},[1714,23262,23263],{},[1717,23264,23265,23267,23269],{},[1720,23266,1812],{},[1720,23268,1815],{},[1720,23270,1725],{},[1727,23272,23273,23287],{},[1717,23274,23275,23279,23284],{},[1732,23276,23277],{},[1735,23278,21111],{},[1732,23280,23281],{},[1735,23282,23283],{},"struct udPointCloud \\*",[1732,23285,23286],{},"This is the point cloud to display.",[1717,23288,23289,23294,23298],{},[1732,23290,23291],{},[1735,23292,23293],{},"matrix[16]",[1732,23295,23296],{},[1735,23297,5100],{},[1732,23299,23300],{},"The world space matrix for this point cloud instance (this does not to be the default matrix)",[1693,23302,23303],{},[1689,23304,23305,23307,23308,23311,23312,23314,23315,23318,23319,23314,23322,23324,23325,23314,23328,23331,23332,23314,23335,23337,23338,23314,23341,23343,23344,23314,23347,23349],{},[1698,23306,1700],{},"\nThe default matrix for a model can be accessed from the associated ",[1684,23309,23310],{"href":9339},"udPointCloudHeader","> |\n| ",[1735,23313,21242],{}," | ",[1735,23316,23317],{},"const struct [udGeometry](udGeometry.md) \\*"," | Filter to override for this model, this one will be used instead of the global one applied in udRenderSettings. |\n| ",[1735,23320,23321],{},"modelID",[1735,23323,1831],{}," | (for GPU only) This value is considered as sceneID\u002FobjectID as well. |\n| ",[1735,23326,23327],{},"pVoxelUserData)",[1735,23329,23330],{},"uint32_t (\\*pVoxelShader)(struct udPointCloud \\*pPointCloud, const struct [udVoxelID](udPointCloud.md) \\*pVoxelID, const void \\*"," | When the renderer goes to select a colour, it calls this function instead. |\n| ",[1735,23333,23334],{},"pVoxelUserData",[1735,23336,5070],{}," | If pVoxelShader is set, this parameter is passed to that function. |\n| ",[1735,23339,23340],{},"opacity",[1735,23342,5100],{}," | If this is a value between 0 and 1 this model will be rendered blended with the rest of the scene. If the alpha from pVoxelShader is 0, the alpha provided will be written to the colourBuffer otherwise it will be calculated using this opacity value. |\n| ",[1735,23345,23346],{},"skipRender",[1735,23348,1831],{}," | If set not 0 the model will not be rendered. |",{"title":2049,"searchDepth":2050,"depth":2050,"links":23351},[23352,23356,23364],{"id":2697,"depth":2050,"text":2698,"children":23353},[23354,23355],{"id":22662,"depth":2055,"text":22663},{"id":22725,"depth":2055,"text":22726},{"id":1676,"depth":2050,"text":1677,"children":23357},[23358,23360,23362],{"id":22858,"depth":2055,"text":23359},"enum udError udRenderContext_Create(struct udContext *pContext, struct udRenderContext **ppRenderer)",{"id":22913,"depth":2055,"text":23361},"enum udError udRenderContext_Destroy(struct udRenderContext **ppRenderer)",{"id":22947,"depth":2055,"text":23363},"enum udError udRenderContext_Render(struct udRenderContext *pRenderer, struct udRenderTarget *pRenderView, struct udRenderInstance *pModels, int modelCount, struct udRenderSettings *pRenderOptions)",{"id":1795,"depth":2050,"text":1796,"children":23365},[23366,23367,23368],{"id":23017,"depth":2055,"text":23018},{"id":23138,"depth":2055,"text":23139},{"id":23254,"depth":2055,"text":23255},"The udRenderContext object provides an interface to render Nuclideon Unlimited Detail models. It provides the ability to render by colour, intensity or classification; additionally allowing the user to query a specific pixel for information about the pointcloud data.",{},"\u002Fguide\u002Fudsdk\u002Fudrendercontext",{"title":4678,"description":23369},"guide\u002Fudsdk\u002FudRenderContext","KSoBPN4mX-lWKr8_fKf2JKZA9ECdxeOK7Fcu27HbadM",{"id":23376,"title":2540,"body":23377,"date":7,"description":23956,"extension":2064,"meta":23957,"navigation":43,"path":23958,"seo":23959,"stem":23960,"__hash__":23961},"udsdkguide\u002Fguide\u002Fudsdk\u002FudRenderTarget.md",{"type":1667,"value":23378,"toc":23935},[23379,23382,23390,23392,23396,23399,23403,23465,23467,23473,23482,23494,23553,23560,23566,23570,23580,23601,23608,23614,23617,23624,23676,23683,23689,23692,23756,23762,23768,23780,23819,23826,23832,23842,23881,23888,23894,23897],[1670,23380,2540],{"id":23381},"udrendertarget",[1689,23383,4541,23384,23386,23387,23389],{},[3673,23385,2540],{}," object provides an interface to specify a viewport to render to. Once instantiated, the ",[3673,23388,2540],{}," can have its targets set, providing both a colour and depth output of the render which will utilize the matrices provided to the SetMatrix function.",[1674,23391,2698],{"id":2697},[1679,23393,23395],{"id":23394},"enum-udrendertargetmatrix","enum udRenderTargetMatrix",[1689,23397,23398],{},"These are the various matrix types used within the render target",[1689,23400,23401],{},[1742,23402,2707],{},[1711,23404,23405,23413],{},[1714,23406,23407],{},[1717,23408,23409,23411],{},[1720,23410,2716],{},[1720,23412,1725],{},[1727,23414,23415,23425,23435,23445,23455],{},[1717,23416,23417,23422],{},[1732,23418,23419],{},[1735,23420,23421],{},"udRTM_Camera",[1732,23423,23424],{},"The local to world-space transform of the camera (View is implicitly set as the inverse).",[1717,23426,23427,23432],{},[1732,23428,23429],{},[1735,23430,23431],{},"udRTM_View",[1732,23433,23434],{},"The view-space transform for the model (does not need to be set explicitly).",[1717,23436,23437,23442],{},[1732,23438,23439],{},[1735,23440,23441],{},"udRTM_Projection",[1732,23443,23444],{},"The projection matrix (default is 60 degree LH).",[1717,23446,23447,23452],{},[1732,23448,23449],{},[1735,23450,23451],{},"udRTM_Viewport",[1732,23453,23454],{},"Viewport scaling matrix (default width and height of viewport).",[1717,23456,23457,23462],{},[1732,23458,23459],{},[1735,23460,23461],{},"udRTM_Count",[1732,23463,23464],{},"Total number of matrix types. Used internally but can be used as an iterator max when checking matrix information.",[1674,23466,1677],{"id":1676},[1679,23468,1682,23470,23472],{"id":23469},"enum-uderror-udrendertarget_createstruct-udcontext-pcontext-struct-udrendertarget-pprendertarget-struct-udrendercontext-prenderer-uint32_t-width-uint32_t-height",[1684,23471,1686],{"href":1686}," udRenderTarget_Create(struct udContext *pContext, struct udRenderTarget **ppRenderTarget, struct udRenderContext *pRenderer, uint32_t width, uint32_t height)",[1689,23474,23475,23476,2567,23479,2503],{},"Create a udRenderTarget with a viewport using ",[1735,23477,23478],{},"width",[1735,23480,23481],{},"height",[1693,23483,23484],{},[1689,23485,23486,7150,23488,7154,23491,7158],{},[1698,23487,1700],{},[3673,23489,23490],{},"udRenderTarget_Destroy",[1735,23492,23493],{},"ppRenderTarget",[1711,23495,23496,23504],{},[1714,23497,23498],{},[1717,23499,23500,23502],{},[1720,23501,1722],{},[1720,23503,1725],{},[1727,23505,23506,23515,23526,23535,23544],{},[1717,23507,23508,23512],{},[1732,23509,23510],{},[1735,23511,5760],{},[1732,23513,23514],{},"The context to be used to create the render target.",[1717,23516,23517,23521],{},[1732,23518,23519],{},[1735,23520,23493],{},[1732,23522,23523,23524,2503],{},"The pointer pointer of the udRenderTarget. This will allocate an instance of udRenderTarget into ",[1735,23525,23493],{},[1717,23527,23528,23532],{},[1732,23529,23530],{},[1735,23531,4708],{},[1732,23533,23534],{},"The renderer associated with the render target.",[1717,23536,23537,23541],{},[1732,23538,23539],{},[1735,23540,23478],{},[1732,23542,23543],{},"The width of the viewport.",[1717,23545,23546,23550],{},[1732,23547,23548],{},[1735,23549,23481],{},[1732,23551,23552],{},"The height of the viewport.",[1689,23554,23555,3676,23557,23559],{},[3673,23556,3675],{},[1684,23558,1686],{"href":1686}," value based on the result of the render target creation.",[1679,23561,1682,23563,23565],{"id":23562},"enum-uderror-udrendertarget_destroystruct-udrendertarget-pprendertarget",[1684,23564,1686],{"href":1686}," udRenderTarget_Destroy(struct udRenderTarget **ppRenderTarget)",[1689,23567,7826,23568,2503],{},[1735,23569,23493],{},[1693,23571,23572],{},[1689,23573,23574,7504,23576,7507,23578,2503],{},[1698,23575,1700],{},[1735,23577,23493],{},[1735,23579,6778],{},[1711,23581,23582,23590],{},[1714,23583,23584],{},[1717,23585,23586,23588],{},[1720,23587,1722],{},[1720,23589,1725],{},[1727,23591,23592],{},[1717,23593,23594,23598],{},[1732,23595,23596],{},[1735,23597,23493],{},[1732,23599,23600],{},"The pointer pointer of the udRenderTarget. This will deallocate the instance of udRenderTarget.",[1689,23602,23603,3676,23605,23607],{},[3673,23604,3675],{},[1684,23606,1686],{"href":1686}," value based on the result of the render target destruction.",[1679,23609,1682,23611,23613],{"id":23610},"enum-uderror-udrendertarget_settargetsstruct-udrendertarget-prendertarget-void-pcolorbuffer-uint32_t-colorclearvalue-void-pdepthbuffer",[1684,23612,1686],{"href":1686}," udRenderTarget_SetTargets(struct udRenderTarget *pRenderTarget, void *pColorBuffer, uint32_t colorClearValue, void *pDepthBuffer)",[1689,23615,23616],{},"Set a memory buffers that a render target will write to.",[1693,23618,23619],{},[1689,23620,23621,23623],{},[1698,23622,1700],{},"\nThis internally calls udRenderTarget_SetTargetsWithPitch with both color and depth pitches set to 0.",[1711,23625,23626,23634],{},[1714,23627,23628],{},[1717,23629,23630,23632],{},[1720,23631,1722],{},[1720,23633,1725],{},[1727,23635,23636,23646,23656,23666],{},[1717,23637,23638,23643],{},[1732,23639,23640],{},[1735,23641,23642],{},"pRenderTarget",[1732,23644,23645],{},"The render target to associate a target buffer with.",[1717,23647,23648,23653],{},[1732,23649,23650],{},[1735,23651,23652],{},"pColorBuffer",[1732,23654,23655],{},"The color buffer, if null the buffer will not be rendered to anymore.",[1717,23657,23658,23663],{},[1732,23659,23660],{},[1735,23661,23662],{},"colorClearValue",[1732,23664,23665],{},"The clear value to clear the color buffer with.",[1717,23667,23668,23673],{},[1732,23669,23670],{},[1735,23671,23672],{},"pDepthBuffer",[1732,23674,23675],{},"The depth buffer, required",[1689,23677,23678,3676,23680,23682],{},[3673,23679,3675],{},[1684,23681,1686],{"href":1686}," value based on the result of setting the targets.",[1679,23684,1682,23686,23688],{"id":23685},"enum-uderror-udrendertarget_settargetswithpitchstruct-udrendertarget-prendertarget-void-pcolorbuffer-uint32_t-colorclearvalue-void-pdepthbuffer-uint32_t-colorpitchinbytes-uint32_t-depthpitchinbytes",[1684,23687,1686],{"href":1686}," udRenderTarget_SetTargetsWithPitch(struct udRenderTarget *pRenderTarget, void *pColorBuffer, uint32_t colorClearValue, void *pDepthBuffer, uint32_t colorPitchInBytes, uint32_t depthPitchInBytes)",[1689,23690,23691],{},"Set a memory buffers that a render target will write to (with pitch).",[1711,23693,23694,23702],{},[1714,23695,23696],{},[1717,23697,23698,23700],{},[1720,23699,1722],{},[1720,23701,1725],{},[1727,23703,23704,23712,23720,23728,23736,23746],{},[1717,23705,23706,23710],{},[1732,23707,23708],{},[1735,23709,23642],{},[1732,23711,23645],{},[1717,23713,23714,23718],{},[1732,23715,23716],{},[1735,23717,23652],{},[1732,23719,23655],{},[1717,23721,23722,23726],{},[1732,23723,23724],{},[1735,23725,23662],{},[1732,23727,23665],{},[1717,23729,23730,23734],{},[1732,23731,23732],{},[1735,23733,23672],{},[1732,23735,23675],{},[1717,23737,23738,23743],{},[1732,23739,23740],{},[1735,23741,23742],{},"colorPitchInBytes",[1732,23744,23745],{},"The number of bytes that make up a row of the color buffer.",[1717,23747,23748,23753],{},[1732,23749,23750],{},[1735,23751,23752],{},"depthPitchInBytes",[1732,23754,23755],{},"The number of bytes that make up a row of the depth buffer.",[1689,23757,23758,3676,23760,23682],{},[3673,23759,3675],{},[1684,23761,1686],{"href":1686},[1679,23763,1682,23765,23767],{"id":23764},"enum-uderror-udrendertarget_getmatrixconst-struct-udrendertarget-prendertarget-enum-udrendertargetmatrix-matrixtype-double-cameramatrix16",[1684,23766,1686],{"href":1686}," udRenderTarget_GetMatrix(const struct udRenderTarget *pRenderTarget, enum udRenderTargetMatrix matrixType, double cameraMatrix[16])",[1689,23769,23770,23771,23773,23774,23777,23778,2503],{},"Get the matrix associated with ",[1735,23772,23642],{}," of type ",[1735,23775,23776],{},"matrixType"," and fill it in ",[1735,23779,15351],{},[1711,23781,23782,23790],{},[1714,23783,23784],{},[1717,23785,23786,23788],{},[1720,23787,1722],{},[1720,23789,1725],{},[1727,23791,23792,23801,23810],{},[1717,23793,23794,23798],{},[1732,23795,23796],{},[1735,23797,23642],{},[1732,23799,23800],{},"The render target to get the matrix from.",[1717,23802,23803,23807],{},[1732,23804,23805],{},[1735,23806,23776],{},[1732,23808,23809],{},"The type of matrix to get.",[1717,23811,23812,23816],{},[1732,23813,23814],{},[1735,23815,15351],{},[1732,23817,23818],{},"The array of 16 doubles which gets filled out with the matrix.",[1689,23820,23821,3676,23823,23825],{},[3673,23822,3675],{},[1684,23824,1686],{"href":1686}," value based on the result of getting the matrix.",[1679,23827,1682,23829,23831],{"id":23828},"enum-uderror-udrendertarget_setmatrixstruct-udrendertarget-prendertarget-enum-udrendertargetmatrix-matrixtype-const-double-cameramatrix16",[1684,23830,1686],{"href":1686}," udRenderTarget_SetMatrix(struct udRenderTarget *pRenderTarget, enum udRenderTargetMatrix matrixType, const double cameraMatrix[16])",[1689,23833,23834,23835,23773,23837,23839,23840,2503],{},"Set the matrix associated with ",[1735,23836,23642],{},[1735,23838,23776],{}," and get it from ",[1735,23841,15351],{},[1711,23843,23844,23852],{},[1714,23845,23846],{},[1717,23847,23848,23850],{},[1720,23849,1722],{},[1720,23851,1725],{},[1727,23853,23854,23863,23872],{},[1717,23855,23856,23860],{},[1732,23857,23858],{},[1735,23859,23642],{},[1732,23861,23862],{},"The render target to set the matrix to.",[1717,23864,23865,23869],{},[1732,23866,23867],{},[1735,23868,23776],{},[1732,23870,23871],{},"The type of matrix to set.",[1717,23873,23874,23878],{},[1732,23875,23876],{},[1735,23877,15351],{},[1732,23879,23880],{},"The array of 16 doubles to fill out the internal matrix with.",[1689,23882,23883,3676,23885,23887],{},[3673,23884,3675],{},[1684,23886,1686],{"href":1686}," value based on the result of setting the matrix.",[1679,23889,1682,23891,23893],{"id":23890},"enum-uderror-udrendertarget_setlogarithmicdepthplanesstruct-udrendertarget-prendertarget-double-nearplane-double-farplane",[1684,23892,1686],{"href":1686}," udRenderTarget_SetLogarithmicDepthPlanes(struct udRenderTarget *pRenderTarget, double nearPlane, double farPlane)",[1689,23895,23896],{},"Set the logarithmic depth near and far planes that will be used for logarithmic rendering. Note: These values are only used when the ‘udRCF_LogarithmicDepth’ rendering flag is set.",[1711,23898,23899,23907],{},[1714,23900,23901],{},[1717,23902,23903,23905],{},[1720,23904,1722],{},[1720,23906,1725],{},[1727,23908,23909,23917,23926],{},[1717,23910,23911,23915],{},[1732,23912,23913],{},[1735,23914,23642],{},[1732,23916,23862],{},[1717,23918,23919,23923],{},[1732,23920,23921],{},[1735,23922,16489],{},[1732,23924,23925],{},"The value that the near plane will be set to.",[1717,23927,23928,23932],{},[1732,23929,23930],{},[1735,23931,16503],{},[1732,23933,23934],{},"The value that the far plane will be set to.",{"title":2049,"searchDepth":2050,"depth":2050,"links":23936},[23937,23940],{"id":2697,"depth":2050,"text":2698,"children":23938},[23939],{"id":23394,"depth":2055,"text":23395},{"id":1676,"depth":2050,"text":1677,"children":23941},[23942,23944,23946,23948,23950,23952,23954],{"id":23469,"depth":2055,"text":23943},"enum udError udRenderTarget_Create(struct udContext *pContext, struct udRenderTarget **ppRenderTarget, struct udRenderContext *pRenderer, uint32_t width, uint32_t height)",{"id":23562,"depth":2055,"text":23945},"enum udError udRenderTarget_Destroy(struct udRenderTarget **ppRenderTarget)",{"id":23610,"depth":2055,"text":23947},"enum udError udRenderTarget_SetTargets(struct udRenderTarget *pRenderTarget, void *pColorBuffer, uint32_t colorClearValue, void *pDepthBuffer)",{"id":23685,"depth":2055,"text":23949},"enum udError udRenderTarget_SetTargetsWithPitch(struct udRenderTarget *pRenderTarget, void *pColorBuffer, uint32_t colorClearValue, void *pDepthBuffer, uint32_t colorPitchInBytes, uint32_t depthPitchInBytes)",{"id":23764,"depth":2055,"text":23951},"enum udError udRenderTarget_GetMatrix(const struct udRenderTarget *pRenderTarget, enum udRenderTargetMatrix matrixType, double cameraMatrix[16])",{"id":23828,"depth":2055,"text":23953},"enum udError udRenderTarget_SetMatrix(struct udRenderTarget *pRenderTarget, enum udRenderTargetMatrix matrixType, const double cameraMatrix[16])",{"id":23890,"depth":2055,"text":23955},"enum udError udRenderTarget_SetLogarithmicDepthPlanes(struct udRenderTarget *pRenderTarget, double nearPlane, double farPlane)","The udRenderTarget object provides an interface to specify a viewport to render to. Once instantiated, the udRenderTarget can have its targets set, providing both a colour and depth output of the render which will utilize the matrices provided to the SetMatrix function.",{},"\u002Fguide\u002Fudsdk\u002Fudrendertarget",{"title":2540,"description":23956},"guide\u002Fudsdk\u002FudRenderTarget","uoLhy2kNBVo959QWgdEbml2ZEzYB2XgGQrukVvlkHLM",{"id":23963,"title":23964,"body":23965,"date":7,"description":2049,"extension":2064,"meta":24234,"navigation":43,"path":24235,"seo":24236,"stem":24237,"__hash__":24238},"udsdkguide\u002Fguide\u002Fudsdk\u002FudSDKExternal.md","3rd Party Licenses",{"type":1667,"value":23966,"toc":24227},[23967,23970,23974,23986,23989,23997,24000,24003,24006,24009,24013,24024,24027,24030,24033,24036,24039,24049,24052,24055,24058,24061,24064,24074,24083,24086,24161,24164,24167,24173,24183,24186,24192,24195,24198,24208,24211,24214,24217,24220],[1670,23968,23964],{"id":23969},"_3rd-party-licenses",[1674,23971,23973],{"id":23972},"curl","cURL",[1693,23975,23976],{},[1689,23977,23978,23980,23981],{},[1735,23979,23973],{}," from ",[1684,23982,23985],{"href":23983,"rel":23984},"https:\u002F\u002Fgithub.com\u002Fcurl\u002Fcurl",[2676],"GitHub",[1689,23987,23988],{},"COPYRIGHT AND PERMISSION NOTICE",[1689,23990,23991,23992,23996],{},"Copyright (c) 1996 - 2018, Daniel Stenberg, ",[1684,23993,23995],{"href":23994},"mailto:daniel@haxx.se","daniel@haxx.se",", and many\ncontributors, see the THANKS file.",[1689,23998,23999],{},"All rights reserved.",[1689,24001,24002],{},"Permission to use, copy, modify, and distribute this software for any purpose\nwith or without fee is hereby granted, provided that the above copyright\nnotice and this permission notice appear in all copies.",[1689,24004,24005],{},"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN\nNO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\nOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE\nOR OTHER DEALINGS IN THE SOFTWARE.",[1689,24007,24008],{},"Except as contained in this notice, the name of a copyright holder shall not\nbe used in advertising or otherwise to promote the sale, use or other dealings\nin this Software without prior written authorization of the copyright holder.",[1674,24010,24012],{"id":24011},"nothingsstb","Nothings\u002FSTB",[1693,24014,24015],{},[1689,24016,24017,24019,24020],{},[1735,24018,24012],{}," single header libraries from ",[1684,24021,23985],{"href":24022,"rel":24023},"https:\u002F\u002Fgithub.com\u002Fnothings\u002Fstb",[2676],[1689,24025,24026],{},"Copyright (c) 2017 Sean Barrett",[1689,24028,24029],{},"Permission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and\u002For sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:",[1689,24031,24032],{},"The above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.",[1689,24034,24035],{},"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.",[1674,24037,24038],{"id":24038},"libdeflate",[1693,24040,24041],{},[1689,24042,24043,23980,24045],{},[1735,24044,24038],{},[1684,24046,23985],{"href":24047,"rel":24048},"https:\u002F\u002Fgithub.com\u002Febiggers\u002Flibdeflate",[2676],[1689,24050,24051],{},"Copyright 2016 Eric Biggers",[1689,24053,24054],{},"Permission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation files\n(the \"Software\"), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge,\npublish, distribute, sublicense, and\u002For sell copies of the Software,\nand to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:",[1689,24056,24057],{},"The above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.",[1689,24059,24060],{},"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\nBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.",[1674,24062,24063],{"id":24063},"mbedtls",[1693,24065,24066],{},[1689,24067,24068,23980,24070],{},[1735,24069,24063],{},[1684,24071,23985],{"href":24072,"rel":24073},"https:\u002F\u002Fgithub.com\u002FARMmbed\u002Fmbedtls",[2676],[24075,24076,24081],"pre",{"className":24077,"code":24079,"language":24080},[24078],"language-text","                             Apache License\n                       Version 2.0, January 2004\n                    http:\u002F\u002Fwww.apache.org\u002Flicenses\u002F\n","text",[1735,24082,24079],{"__ignoreMap":2049},[1689,24084,24085],{},"TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",[8591,24087,24088,24122,24125,24128,24146,24149,24152,24155,24158],{},[2087,24089,24090,24091,24094,24095,24097,24098,24100,24101,24103,24104,24106,24107,24109,24110,24112,24113,24115,24116,24118,24119,24121],{},"Definitions.",[24092,24093],"br",{},"\"License\" shall mean the terms and conditions for use, reproduction,\nand distribution as defined by Sections 1 through 9 of this document.",[24092,24096],{},"\"Licensor\" shall mean the copyright owner or entity authorized by\nthe copyright owner that is granting the License.",[24092,24099],{},"\"Legal Entity\" shall mean the union of the acting entity and all\nother entities that control, are controlled by, or are under common\ncontrol with that entity. For the purposes of this definition,\n\"control\" means (i) the power, direct or indirect, to cause the\ndirection or management of such entity, whether by contract or\notherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.",[24092,24102],{},"\"You\" (or \"Your\") shall mean an individual or Legal Entity\nexercising permissions granted by this License.",[24092,24105],{},"\"Source\" form shall mean the preferred form for making modifications,\nincluding but not limited to software source code, documentation\nsource, and configuration files.",[24092,24108],{},"\"Object\" form shall mean any form resulting from mechanical\ntransformation or translation of a Source form, including but\nnot limited to compiled object code, generated documentation,\nand conversions to other media types.",[24092,24111],{},"\"Work\" shall mean the work of authorship, whether in Source or\nObject form, made available under the License, as indicated by a\ncopyright notice that is included in or attached to the work\n(an example is provided in the Appendix below).",[24092,24114],{},"\"Derivative Works\" shall mean any work, whether in Source or Object\nform, that is based on (or derived from) the Work and for which the\neditorial revisions, annotations, elaborations, or other modifications\nrepresent, as a whole, an original work of authorship. For the purposes\nof this License, Derivative Works shall not include works that remain\nseparable from, or merely link (or bind by name) to the interfaces of,\nthe Work and Derivative Works thereof.",[24092,24117],{},"\"Contribution\" shall mean any work of authorship, including\nthe original version of the Work and any modifications or additions\nto that Work or Derivative Works thereof, that is intentionally\nsubmitted to Licensor for inclusion in the Work by the copyright owner\nor by an individual or Legal Entity authorized to submit on behalf of\nthe copyright owner. For the purposes of this definition, \"submitted\"\nmeans any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems,\nand issue tracking systems that are managed by, or on behalf of, the\nLicensor for the purpose of discussing and improving the Work, but\nexcluding communication that is conspicuously marked or otherwise\ndesignated in writing by the copyright owner as \"Not a Contribution.\"",[24092,24120],{},"\"Contributor\" shall mean Licensor and any individual or Legal Entity\non behalf of whom a Contribution has been received by Licensor and\nsubsequently incorporated within the Work.",[2087,24123,24124],{},"Grant of Copyright License. Subject to the terms and conditions of\nthis License, each Contributor hereby grants to You a perpetual,\nworldwide, non-exclusive, no-charge, royalty-free, irrevocable\ncopyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the\nWork and such Derivative Works in Source or Object form.",[2087,24126,24127],{},"Grant of Patent License. Subject to the terms and conditions of\nthis License, each Contributor hereby grants to You a perpetual,\nworldwide, non-exclusive, no-charge, royalty-free, irrevocable\n(except as stated in this section) patent license to make, have made,\nuse, offer to sell, sell, import, and otherwise transfer the Work,\nwhere such license applies only to those patent claims licensable\nby such Contributor that are necessarily infringed by their\nContribution(s) alone or by combination of their Contribution(s)\nwith the Work to which such Contribution(s) was submitted. If You\ninstitute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work\nor a Contribution incorporated within the Work constitutes direct\nor contributory patent infringement, then any patent licenses\ngranted to You under this License for that Work shall terminate\nas of the date such litigation is filed.",[2087,24129,24130,24131,24133,24134,24136,24137,24139,24140,24142,24143,24145],{},"Redistribution. You may reproduce and distribute copies of the\nWork or Derivative Works thereof in any medium, with or without\nmodifications, and in Source or Object form, provided that You\nmeet the following conditions:",[24092,24132],{},"(a) You must give any other recipients of the Work or\nDerivative Works a copy of this License; and",[24092,24135],{},"(b) You must cause any modified files to carry prominent notices\nstating that You changed the files; and",[24092,24138],{},"(c) You must retain, in the Source form of any Derivative Works\nthat You distribute, all copyright, patent, trademark, and\nattribution notices from the Source form of the Work,\nexcluding those notices that do not pertain to any part of\nthe Derivative Works; and",[24092,24141],{},"(d) If the Work includes a \"NOTICE\" text file as part of its\ndistribution, then any Derivative Works that You distribute must\ninclude a readable copy of the attribution notices contained\nwithin such NOTICE file, excluding those notices that do not\npertain to any part of the Derivative Works, in at least one\nof the following places: within a NOTICE text file distributed\nas part of the Derivative Works; within the Source form or\ndocumentation, if provided along with the Derivative Works; or,\nwithin a display generated by the Derivative Works, if and\nwherever such third-party notices normally appear. The contents\nof the NOTICE file are for informational purposes only and\ndo not modify the License. You may add Your own attribution\nnotices within Derivative Works that You distribute, alongside\nor as an addendum to the NOTICE text from the Work, provided\nthat such additional attribution notices cannot be construed\nas modifying the License.",[24092,24144],{},"You may add Your own copyright statement to Your modifications and\nmay provide additional or different license terms and conditions\nfor use, reproduction, or distribution of Your modifications, or\nfor any such Derivative Works as a whole, provided Your use,\nreproduction, and distribution of the Work otherwise complies with\nthe conditions stated in this License.",[2087,24147,24148],{},"Submission of Contributions. Unless You explicitly state otherwise,\nany Contribution intentionally submitted for inclusion in the Work\nby You to the Licensor shall be under the terms and conditions of\nthis License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify\nthe terms of any separate license agreement you may have executed\nwith Licensor regarding such Contributions.",[2087,24150,24151],{},"Trademarks. This License does not grant permission to use the trade\nnames, trademarks, service marks, or product names of the Licensor,\nexcept as required for reasonable and customary use in describing the\norigin of the Work and reproducing the content of the NOTICE file.",[2087,24153,24154],{},"Disclaimer of Warranty. Unless required by applicable law or\nagreed to in writing, Licensor provides the Work (and each\nContributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied, including, without limitation, any warranties or conditions\nof TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\nPARTICULAR PURPOSE. You are solely responsible for determining the\nappropriateness of using or redistributing the Work and assume any\nrisks associated with Your exercise of permissions under this License.",[2087,24156,24157],{},"Limitation of Liability. In no event and under no legal theory,\nwhether in tort (including negligence), contract, or otherwise,\nunless required by applicable law (such as deliberate and grossly\nnegligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special,\nincidental, or consequential damages of any character arising as a\nresult of this License or out of the use or inability to use the\nWork (including but not limited to damages for loss of goodwill,\nwork stoppage, computer failure or malfunction, or any and all\nother commercial damages or losses), even if such Contributor\nhas been advised of the possibility of such damages.",[2087,24159,24160],{},"Accepting Warranty or Additional Liability. While redistributing\nthe Work or Derivative Works thereof, You may choose to offer,\nand charge a fee for, acceptance of support, warranty, indemnity,\nor other liability obligations and\u002For rights consistent with this\nLicense. However, in accepting such obligations, You may act only\non Your own behalf and on Your sole responsibility, not on behalf\nof any other Contributor, and only if You agree to indemnify,\ndefend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason\nof your accepting any such warranty or additional liability.",[1689,24162,24163],{},"END OF TERMS AND CONDITIONS",[1689,24165,24166],{},"APPENDIX: How to apply the Apache License to your work.",[24075,24168,24171],{"className":24169,"code":24170,"language":24080},[24078],"  To apply the Apache License to your work, attach the following\n  boilerplate notice, with the fields enclosed by brackets \"[]\"\n  replaced with your own identifying information. (Don't include\n  the brackets!)  The text should be enclosed in the appropriate\n  comment syntax for the file format. We also recommend that a\n  file or class name and description of purpose be included on the\n  same \"printed page\" as the copyright notice for easier\n  identification within third-party archives.\n",[1735,24172,24170],{"__ignoreMap":2049},[1689,24174,24175,24176,24179,24180],{},"Copyright ",[1698,24177,24178],{},"yyyy"," ",[1698,24181,24182],{},"name of copyright owner",[1689,24184,24185],{},"Licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at",[24075,24187,24190],{"className":24188,"code":24189,"language":24080},[24078],"   http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n",[1735,24191,24189],{"__ignoreMap":2049},[1689,24193,24194],{},"Unless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.",[1674,24196,24197],{"id":24197},"miniz",[1693,24199,24200],{},[1689,24201,24202,23980,24204],{},[1735,24203,24197],{},[1684,24205,23985],{"href":24206,"rel":24207},"https:\u002F\u002Fgithub.com\u002Frichgel999\u002Fminiz",[2676],[1689,24209,24210],{},"This is free and unencumbered software released into the public domain.",[1689,24212,24213],{},"Anyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.",[1689,24215,24216],{},"In jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.",[1689,24218,24219],{},"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.",[1689,24221,24222,24223],{},"For more information, please refer to ",[1684,24224,24225],{"href":24225,"rel":24226},"http:\u002F\u002Funlicense.org\u002F",[2676],{"title":2049,"searchDepth":2050,"depth":2050,"links":24228},[24229,24230,24231,24232,24233],{"id":23972,"depth":2050,"text":23973},{"id":24011,"depth":2050,"text":24012},{"id":24038,"depth":2050,"text":24038},{"id":24063,"depth":2050,"text":24063},{"id":24197,"depth":2050,"text":24197},{},"\u002Fguide\u002Fudsdk\u002Fudsdkexternal",{"title":23964,"description":2049},"guide\u002Fudsdk\u002FudSDKExternal","y4sRT7hmiVealPiz7oSHxYrxZPIo5CoTNpmn8PTMhTQ",{"id":24240,"title":24241,"body":24242,"date":7,"description":24249,"extension":2064,"meta":28628,"navigation":43,"path":28629,"seo":28630,"stem":28631,"__hash__":28632},"udsdkguide\u002Fguide\u002Fudsdk\u002FudScene.md","udScene",{"type":1667,"value":24243,"toc":28516},[24244,24247,24250,24257,24264,24271,24273,24277,24281,24332,24336,24339,24343,24455,24459,24462,24472,24476,24687,24691,24694,24698,24750,24754,24757,24761,24813,24815,24821,24826,24868,24875,24881,24885,24934,24940,24946,24951,25010,25016,25022,25028,25069,25075,25081,25086,25126,25132,25142,25148,25227,25233,25239,25247,25254,25294,25301,25307,25310,25317,25338,25345,25351,25354,25375,25382,25388,25391,25421,25427,25433,25436,25443,25483,25490,25496,25499,25506,25552,25559,25565,25567,25574,25613,25619,25625,25628,25635,25642,25673,25680,25686,25689,25696,25726,25732,25738,25741,25761,25769,25775,25778,25807,25812,25818,25821,25902,25909,25915,25918,25977,25984,25990,25993,26000,26039,26046,26052,26055,26094,26101,26107,26110,26141,26148,26154,26157,26195,26202,26208,26211,26250,26257,26263,26266,26314,26321,26327,26330,26389,26396,26402,26405,26444,26450,26456,26459,26509,26516,26522,26525,26564,26571,26577,26580,26624,26630,26636,26639,26676,26682,26688,26691,26737,26744,26750,26753,26790,26796,26802,26805,26851,26858,26864,26867,26905,26911,26917,26920,26967,26974,26980,26983,27021,27027,27033,27036,27084,27091,27097,27100,27138,27144,27150,27153,27182,27188,27194,27197,27204,27211,27269,27276,27280,27283,27305,27310,27316,27319,27367,27374,27380,27383,27438,27445,27451,27454,27460,27490,27496,27502,27505,27556,27563,27569,27572,27603,27610,27612,27616,27619,27626,27722,27726,27729,27757,27761,27764,27831,27835,27838,27992,27996,27999,28009,28314,28318,28321,28328],[1670,24245,24241],{"id":24246},"udscene",[1689,24248,24249],{},"The udScene and udSceneNode objects provide an interface for storing and syncronising geolocated projects between udSDK sessions",[1693,24251,24252],{},[1689,24253,24254,24256],{},[1698,24255,1700],{},"\nThe GeoJSON provided by this implementation is not fully compliant with RFC7946",[1693,24258,24259],{},[1689,24260,24261,24263],{},[1698,24262,1708],{},"\nAntimeridian Cutting (Section 3.1.9) and handling the poles (Secion 5.3) are not fully working in this implementation",[1693,24265,24266],{},[1689,24267,24268,24270],{},[1698,24269,1708],{},"\nThis module does not currently expose the functionality to sync with the server. This will be added in a future release.",[1674,24272,2698],{"id":2697},[1679,24274,24276],{"id":24275},"enum-udscenealtitudetype","enum udSceneAltitudeType",[1689,24278,24279],{},[1742,24280,2707],{},[1711,24282,24283,24291],{},[1714,24284,24285],{},[1717,24286,24287,24289],{},[1720,24288,2716],{},[1720,24290,1725],{},[1727,24292,24293,24303,24313,24323],{},[1717,24294,24295,24300],{},[1732,24296,24297],{},[1735,24298,24299],{},"udSceneAltitudeType_Absolute",[1732,24301,24302],{},"The position is from the ellipsoid (or just ECEF).",[1717,24304,24305,24310],{},[1732,24306,24307],{},[1735,24308,24309],{},"udSceneAltitudeType_Relative",[1732,24311,24312],{},"The position is relative to the terrain.",[1717,24314,24315,24320],{},[1732,24316,24317],{},[1735,24318,24319],{},"udSceneAltitudeType_Clamp",[1732,24321,24322],{},"The position is clamped to the terrain.",[1717,24324,24325,24330],{},[1732,24326,24327],{},[1735,24328,24329],{},"udSceneAltitudeType_Count",[1732,24331],{},[1679,24333,24335],{"id":24334},"enum-udscenegeometrytype","enum udSceneGeometryType",[1689,24337,24338],{},"These are the geometry types for nodes",[1689,24340,24341],{},[1742,24342,2707],{},[1711,24344,24345,24353],{},[1714,24346,24347],{},[1717,24348,24349,24351],{},[1720,24350,2716],{},[1720,24352,1725],{},[1727,24354,24355,24365,24375,24385,24395,24405,24415,24425,24435,24445],{},[1717,24356,24357,24362],{},[1732,24358,24359],{},[1735,24360,24361],{},"udPGT_None",[1732,24363,24364],{},"There is no geometry associated with this node.",[1717,24366,24367,24372],{},[1732,24368,24369],{},[1735,24370,24371],{},"udPGT_Point",[1732,24373,24374],{},"pCoordinates is a single 3D position",[1717,24376,24377,24382],{},[1732,24378,24379],{},[1735,24380,24381],{},"udPGT_MultiPoint",[1732,24383,24384],{},"Array of udPGT_Point, pCoordinates is an array of 3D positions.",[1717,24386,24387,24392],{},[1732,24388,24389],{},[1735,24390,24391],{},"udPGT_LineString",[1732,24393,24394],{},"pCoordinates is an array of 3D positions forming an open line",[1717,24396,24397,24402],{},[1732,24398,24399],{},[1735,24400,24401],{},"udPGT_MultiLineString",[1732,24403,24404],{},"Array of udPGT_LineString; pCoordinates is NULL and children will be present.",[1717,24406,24407,24412],{},[1732,24408,24409],{},[1735,24410,24411],{},"udPGT_Polygon",[1732,24413,24414],{},"pCoordinates will be a closed linear ring (the outside), there MAY be children that are interior as pChildren udPGT_MultiLineString items, these should be counted as islands of the external ring.",[1717,24416,24417,24422],{},[1732,24418,24419],{},[1735,24420,24421],{},"udPGT_MultiPolygon",[1732,24423,24424],{},"pCoordinates is null, children will be udPGT_Polygon (which still may have internal islands)",[1717,24426,24427,24432],{},[1732,24428,24429],{},[1735,24430,24431],{},"udPGT_GeometryCollection",[1732,24433,24434],{},"Array of geometries; pCoordinates is NULL and children may be present of any type.",[1717,24436,24437,24442],{},[1732,24438,24439],{},[1735,24440,24441],{},"udPGT_Count",[1732,24443,24444],{},"Total number of geometry types. Used internally but can be used as an iterator max when displaying different type modes.",[1717,24446,24447,24452],{},[1732,24448,24449],{},[1735,24450,24451],{},"udPGT_Internal",[1732,24453,24454],{},"Used internally when calculating other types. Do not use.",[1679,24456,24458],{"id":24457},"enum-udscenenodetype","enum udSceneNodeType",[1689,24460,24461],{},"This represents the type of data stored in the node.",[1693,24463,24464],{},[1689,24465,24466,11114,24468,24471],{},[1698,24467,1700],{},[1735,24469,24470],{},"itemtypeStr"," in the udSceneNode is a string version. This enum serves to simplify the reading of standard types. The the string in brackets at the end of the comment is the string.",[1689,24473,24474],{},[1742,24475,2707],{},[1711,24477,24478,24486],{},[1714,24479,24480],{},[1717,24481,24482,24484],{},[1720,24483,2716],{},[1720,24485,1725],{},[1727,24487,24488,24498,24508,24518,24528,24538,24548,24558,24568,24578,24588,24598,24608,24618,24628,24638,24648,24658,24668,24677],{},[1717,24489,24490,24495],{},[1732,24491,24492],{},[1735,24493,24494],{},"udPNT_Custom",[1732,24496,24497],{},"Need to check the itemtypeStr string manually.",[1717,24499,24500,24505],{},[1732,24501,24502],{},[1735,24503,24504],{},"udPNT_PointCloud",[1732,24506,24507],{},"A Nuclideon Unlimited Detail Point Cloud file (“UDS”).",[1717,24509,24510,24515],{},[1732,24511,24512],{},[1735,24513,24514],{},"udPNT_PointOfInterest",[1732,24516,24517],{},"A point, line or region describing a location of interest (“POI”).",[1717,24519,24520,24525],{},[1732,24521,24522],{},[1735,24523,24524],{},"udPNT_Folder",[1732,24526,24527],{},"A folder of other nodes (“Folder”).",[1717,24529,24530,24535],{},[1732,24531,24532],{},[1735,24533,24534],{},"udPNT_Media",[1732,24536,24537],{},"An Image, Movie, Audio file or other media object (“Media”).",[1717,24539,24540,24545],{},[1732,24541,24542],{},[1735,24543,24544],{},"udPNT_Viewpoint",[1732,24546,24547],{},"An Camera Location & Orientation (“Camera”).",[1717,24549,24550,24555],{},[1732,24551,24552],{},[1735,24553,24554],{},"udPNT_VisualisationSettings",[1732,24556,24557],{},"Visualisation settings (itensity, map height etc) (“VizSet”).",[1717,24559,24560,24565],{},[1732,24561,24562],{},[1735,24563,24564],{},"udPNT_I3S",[1732,24566,24567],{},"An Indexed 3d Scene Layer (I3S) or Scene Layer Package (SLPK) dataset (“I3S”).",[1717,24569,24570,24575],{},[1732,24571,24572],{},[1735,24573,24574],{},"udPNT_3DTiles",[1732,24576,24577],{},"A 3D tile dataset using the open-source Cesium standard format (“3DTiles”).",[1717,24579,24580,24585],{},[1732,24581,24582],{},[1735,24583,24584],{},"udPNT_Water",[1732,24586,24587],{},"A region describing the location of a body of water (“Water”).",[1717,24589,24590,24595],{},[1732,24591,24592],{},[1735,24593,24594],{},"udPNT_ViewShed",[1732,24596,24597],{},"A point describing where to generate a view shed from (“ViewMap”).",[1717,24599,24600,24605],{},[1732,24601,24602],{},[1735,24603,24604],{},"udPNT_Polygon",[1732,24606,24607],{},"A polygon model, usually an OBJ or FBX (“Polygon”).",[1717,24609,24610,24615],{},[1732,24611,24612],{},[1735,24613,24614],{},"udPNT_QueryFilter",[1732,24616,24617],{},"A query filter to be applied to all PointCloud types in the scene (“QFilter”).",[1717,24619,24620,24625],{},[1732,24621,24622],{},[1735,24623,24624],{},"udPNT_Places",[1732,24626,24627],{},"A collection of places that can be grouped together at a distance (“Places”).",[1717,24629,24630,24635],{},[1732,24631,24632],{},[1735,24633,24634],{},"udPNT_HeightMeasurement",[1732,24636,24637],{},"A height measurement object (“MHeight”).",[1717,24639,24640,24645],{},[1732,24641,24642],{},[1735,24643,24644],{},"udPNT_GTFS",[1732,24646,24647],{},"A General Transit Feed Specification object (“GTFS”).",[1717,24649,24650,24655],{},[1732,24651,24652],{},[1735,24653,24654],{},"udPNT_LassoNode",[1732,24656,24657],{},"A Lasso Selection Folder (“LNode”).",[1717,24659,24660,24665],{},[1732,24661,24662],{},[1735,24663,24664],{},"udPNT_QueryGroup",[1732,24666,24667],{},"A Group of Query node being represented as one node (“QGroup”).",[1717,24669,24670,24675],{},[1732,24671,24672],{},[1735,24673,24674],{},"udPNT_BasicShape",[1732,24676],{},[1717,24678,24679,24684],{},[1732,24680,24681],{},[1735,24682,24683],{},"udPNT_Count",[1732,24685,24686],{},"Total number of node types. Used internally but can be used as an iterator max when displaying different type modes.",[1679,24688,24690],{"id":24689},"enum-udsceneuserflag","enum udSceneUserFlag",[1689,24692,24693],{},"This represents the flags for scene users",[1689,24695,24696],{},[1742,24697,2707],{},[1711,24699,24700,24708],{},[1714,24701,24702],{},[1717,24703,24704,24706],{},[1720,24705,2716],{},[1720,24707,1725],{},[1727,24709,24710,24720,24730,24740],{},[1717,24711,24712,24717],{},[1732,24713,24714],{},[1735,24715,24716],{},"udSceneUserFlag_HasHead",[1732,24718,24719],{},"User has a head.",[1717,24721,24722,24727],{},[1732,24723,24724],{},[1735,24725,24726],{},"udSceneUserFlag_HasAnchorAndScale",[1732,24728,24729],{},"User has a world anchor point. This usually indicates they are using a VR Cave or Table.",[1717,24731,24732,24737],{},[1732,24733,24734],{},[1735,24735,24736],{},"udSceneUserFlag_LeftHand",[1732,24738,24739],{},"User has a left hand\u002Fwand.",[1717,24741,24742,24747],{},[1732,24743,24744],{},[1735,24745,24746],{},"udSceneUserFlag_RightHand",[1732,24748,24749],{},"User has a right hand\u002Fwand.",[1679,24751,24753],{"id":24752},"enum-udsceneloadsource","enum udSceneLoadSource",[1689,24755,24756],{},"This represents where the scene was loaded from\u002Fsaved to most recently and where future calls to udScene_Save will go",[1689,24758,24759],{},[1742,24760,2707],{},[1711,24762,24763,24771],{},[1714,24764,24765],{},[1717,24766,24767,24769],{},[1720,24768,2716],{},[1720,24770,1725],{},[1727,24772,24773,24783,24793,24803],{},[1717,24774,24775,24780],{},[1732,24776,24777],{},[1735,24778,24779],{},"udSceneLoadSource_Memory",[1732,24781,24782],{},"The scene source exists in memory; udScene_CreateInMemory, udScene_LoadFromMemory or udScene_SaveToMemory.",[1717,24784,24785,24790],{},[1732,24786,24787],{},[1735,24788,24789],{},"udSceneLoadSource_Server",[1732,24791,24792],{},"The scene source exists from the server; udScene_CreateInServer, udScene_LoadFromServer or udScene_SaveToServer.",[1717,24794,24795,24800],{},[1732,24796,24797],{},[1735,24798,24799],{},"udSceneLoadSource_URI",[1732,24801,24802],{},"The scene source exists from a file or URL; udScene_CreateInFile, udScene_LoadFromFile or udScene_SaveToFile.",[1717,24804,24805,24810],{},[1732,24806,24807],{},[1735,24808,24809],{},"udSceneLoadSource_Count",[1732,24811,24812],{},"Total number of source types. Used internally but can be used as an iterator max when displaying different source types.",[1674,24814,1677],{"id":1676},[1679,24816,1682,24818,24820],{"id":24817},"enum-uderror-udscene_createinmemorystruct-udcontext-pcontext-struct-udscene-ppscene-const-char-pname",[1684,24819,1686],{"href":1686}," udScene_CreateInMemory(struct udContext *pContext, struct udScene **ppScene, const char *pName)",[1689,24822,24823,24824,2503],{},"Create an empty, local only, instance of ",[1735,24825,24241],{},[1711,24827,24828,24836],{},[1714,24829,24830],{},[1717,24831,24832,24834],{},[1720,24833,1722],{},[1720,24835,1725],{},[1727,24837,24838,24847,24859],{},[1717,24839,24840,24844],{},[1732,24841,24842],{},[1735,24843,5760],{},[1732,24845,24846],{},"The pointer to the udContext of the session to use to creae in memory",[1717,24848,24849,24854],{},[1732,24850,24851],{},[1735,24852,24853],{},"ppScene",[1732,24855,24856,24857,2503],{},"The pointer pointer of the udScene. This will allocate an instance of udScene into ",[1735,24858,24853],{},[1717,24860,24861,24865],{},[1732,24862,24863],{},[1735,24864,3862],{},[1732,24866,24867],{},"The name of the scene, this will be the name of the root item.",[1689,24869,24870,3676,24872,24874],{},[3673,24871,3675],{},[1684,24873,1686],{"href":1686}," value based on the result of the project creation.",[1679,24876,1682,24878,24880],{"id":24877},"enum-uderror-udscene_createinfilestruct-udcontext-pcontext-struct-udscene-ppscene-const-char-pname-const-char-pfilename",[1684,24879,1686],{"href":1686}," udScene_CreateInFile(struct udContext *pContext, struct udScene **ppScene, const char *pName, const char *pFilename)",[1689,24882,24823,24883,2503],{},[1735,24884,24241],{},[1711,24886,24887,24895],{},[1714,24888,24889],{},[1717,24890,24891,24893],{},[1720,24892,1722],{},[1720,24894,1725],{},[1727,24896,24897,24906,24916,24925],{},[1717,24898,24899,24903],{},[1732,24900,24901],{},[1735,24902,5760],{},[1732,24904,24905],{},"The pointer to the udContext of the session to use to create ina file",[1717,24907,24908,24912],{},[1732,24909,24910],{},[1735,24911,24853],{},[1732,24913,24856,24914,2503],{},[1735,24915,24853],{},[1717,24917,24918,24922],{},[1732,24919,24920],{},[1735,24921,3862],{},[1732,24923,24924],{},"The name of the project, this will be the name of the root item.",[1717,24926,24927,24931],{},[1732,24928,24929],{},[1735,24930,7919],{},[1732,24932,24933],{},"The path to create the project at.",[1689,24935,24936,3676,24938,24874],{},[3673,24937,3675],{},[1684,24939,1686],{"href":1686},[1679,24941,1682,24943,24945],{"id":24942},"enum-uderror-udscene_createinserverstruct-udcontext-pcontext-struct-udscene-ppscene-const-char-pname-const-char-porgid-const-char-pprojid",[1684,24944,1686],{"href":1686}," udScene_CreateInServer(struct udContext *pContext, struct udScene **ppScene, const char *pName, const char *pOrgID, const char *pProjID)",[1689,24947,24948,24949,2503],{},"Create an empty project in the server and the local instance of ",[1735,24950,24241],{},[1711,24952,24953,24961],{},[1714,24954,24955],{},[1717,24956,24957,24959],{},[1720,24958,1722],{},[1720,24960,1725],{},[1727,24962,24963,24972,24982,24990,25000],{},[1717,24964,24965,24969],{},[1732,24966,24967],{},[1735,24968,5760],{},[1732,24970,24971],{},"The pointer to the udContext of the session to use to load the project, read\u002Fwrite permissions will be based on the current session.",[1717,24973,24974,24978],{},[1732,24975,24976],{},[1735,24977,24853],{},[1732,24979,24856,24980,2503],{},[1735,24981,24853],{},[1717,24983,24984,24988],{},[1732,24985,24986],{},[1735,24987,3862],{},[1732,24989,24924],{},[1717,24991,24992,24997],{},[1732,24993,24994],{},[1735,24995,24996],{},"pOrgID",[1732,24998,24999],{},"The ID for the udCloud organisation that the scene will belong to",[1717,25001,25002,25007],{},[1732,25003,25004],{},[1735,25005,25006],{},"pProjectID",[1732,25008,25009],{},"The ID for the udCloud project that the scene will belong to",[1689,25011,25012,3676,25014,24874],{},[3673,25013,3675],{},[1684,25015,1686],{"href":1686},[1679,25017,1682,25019,25021],{"id":25018},"enum-uderror-udscene_loadfrommemorystruct-udcontext-pcontext-struct-udscene-ppscene-const-char-pgeojson",[1684,25020,1686],{"href":1686}," udScene_LoadFromMemory(struct udContext *pContext, struct udScene **ppScene, const char *pGeoJSON)",[1689,25023,25024,25025,25027],{},"Create a local only instance of ",[1735,25026,24241],{}," filled in with the contents of a GeoJSON string.",[1711,25029,25030,25038],{},[1714,25031,25032],{},[1717,25033,25034,25036],{},[1720,25035,1722],{},[1720,25037,1725],{},[1727,25039,25040,25049,25059],{},[1717,25041,25042,25046],{},[1732,25043,25044],{},[1735,25045,5760],{},[1732,25047,25048],{},"The pointer to the udContext of the session to use to load from memory",[1717,25050,25051,25055],{},[1732,25052,25053],{},[1735,25054,24853],{},[1732,25056,24856,25057,2503],{},[1735,25058,24853],{},[1717,25060,25061,25066],{},[1732,25062,25063],{},[1735,25064,25065],{},"pGeoJSON",[1732,25067,25068],{},"The GeoJSON string of the project, this will be unpacked into udSceneNode items.",[1689,25070,25071,3676,25073,24874],{},[3673,25072,3675],{},[1684,25074,1686],{"href":1686},[1679,25076,1682,25078,25080],{"id":25077},"enum-uderror-udscene_loadfromfilestruct-udcontext-pcontext-struct-udscene-ppscene-const-char-pfilename",[1684,25079,1686],{"href":1686}," udScene_LoadFromFile(struct udContext *pContext, struct udScene **ppScene, const char *pFilename)",[1689,25082,25024,25083,25085],{},[1735,25084,24241],{}," filled in with the contents of the specified project file.",[1711,25087,25088,25096],{},[1714,25089,25090],{},[1717,25091,25092,25094],{},[1720,25093,1722],{},[1720,25095,1725],{},[1727,25097,25098,25107,25117],{},[1717,25099,25100,25104],{},[1732,25101,25102],{},[1735,25103,5760],{},[1732,25105,25106],{},"The pointer to the udContext of the session to use to load from a file",[1717,25108,25109,25113],{},[1732,25110,25111],{},[1735,25112,24853],{},[1732,25114,24856,25115,2503],{},[1735,25116,24853],{},[1717,25118,25119,25123],{},[1732,25120,25121],{},[1735,25122,7919],{},[1732,25124,25125],{},"The project file URL.",[1689,25127,25128,3676,25130,24874],{},[3673,25129,3675],{},[1684,25131,1686],{"href":1686},[1679,25133,1682,25135,25137,25138,25141],{"id":25134},"enum-uderror-udscene_loadfromserverstruct-udcontext-pcontext-struct-udscene-ppscene-const-char-porgid-const-char-pprojid-const-char-psceneid-udprogresscallback-pprogresscallback-void-pprogressuserdata",[1684,25136,1686],{"href":1686}," udScene_LoadFromServer(struct udContext *pContext, struct udScene **ppScene, const char *pOrgID, const char *pProjID, const char *pSceneID, ",[1684,25139,25140],{"href":1686},"udProgressCallback"," *pProgressCallback, void *pProgressUserData)",[1689,25143,25144,25145,25147],{},"Create a local instance of ",[1735,25146,24241],{}," filled in from the server.",[1711,25149,25150,25158],{},[1714,25151,25152],{},[1717,25153,25154,25156],{},[1720,25155,1722],{},[1720,25157,1725],{},[1727,25159,25160,25169,25179,25188,25198,25208,25218],{},[1717,25161,25162,25166],{},[1732,25163,25164],{},[1735,25165,5760],{},[1732,25167,25168],{},"The pointer to the udContext of the session to use to load the scene, read\u002Fwrite permissions will be based on the current session.",[1717,25170,25171,25175],{},[1732,25172,25173],{},[1735,25174,24853],{},[1732,25176,24856,25177,2503],{},[1735,25178,24853],{},[1717,25180,25181,25185],{},[1732,25182,25183],{},[1735,25184,24996],{},[1732,25186,25187],{},"The ID for the organisation in udCloud that the scene belongs to",[1717,25189,25190,25195],{},[1732,25191,25192],{},[1735,25193,25194],{},"pProjID",[1732,25196,25197],{},"The ID for the project in udCloud that the scene belongs to",[1717,25199,25200,25205],{},[1732,25201,25202],{},[1735,25203,25204],{},"pSceneID",[1732,25206,25207],{},"The ID for the scene that is being requested",[1717,25209,25210,25215],{},[1732,25211,25212],{},[1735,25213,25214],{},"pProgressCallback",[1732,25216,25217],{},"A function callback when there are progress updates",[1717,25219,25220,25224],{},[1732,25221,25222],{},[1735,25223,11856],{},[1732,25225,25226],{},"A pointer that will be passed to the pProgressCallback",[1689,25228,25229,3676,25231,24874],{},[3673,25230,3675],{},[1684,25232,1686],{"href":1686},[1679,25234,1682,25236,25238],{"id":25235},"enum-uderror-udscene_mergescenesstruct-udcontext-pcontext-struct-udscene-pscene-struct-udscene-pscenetomerge",[1684,25237,1686],{"href":1686}," udScene_MergeScenes(struct udContext *pContext, struct udScene *pScene, struct udScene *pSceneToMerge)",[1689,25240,25241,25242,25244,25245,2503],{},"Update a local instance of ",[1735,25243,24241],{}," by merging elements from another ",[1735,25246,24241],{},[1693,25248,25249],{},[1689,25250,25251,25253],{},[1698,25252,1700],{},"\npSceneToMerge will be empty after this operation.",[1711,25255,25256,25264],{},[1714,25257,25258],{},[1717,25259,25260,25262],{},[1720,25261,1722],{},[1720,25263,1725],{},[1727,25265,25266,25274,25284],{},[1717,25267,25268,25272],{},[1732,25269,25270],{},[1735,25271,5760],{},[1732,25273,25168],{},[1717,25275,25276,25281],{},[1732,25277,25278],{},[1735,25279,25280],{},"pScene",[1732,25282,25283],{},"The pointer of the udScene to update.",[1717,25285,25286,25291],{},[1732,25287,25288],{},[1735,25289,25290],{},"pSceneToMerge",[1732,25292,25293],{},"The pointer of the udScene to merge its elements into previous udScene",[1689,25295,25296,3676,25298,25300],{},[3673,25297,3675],{},[1684,25299,1686],{"href":1686}," value based on the result of the merge.",[1679,25302,1682,25304,25306],{"id":25303},"enum-uderror-udscene_releasestruct-udscene-ppscene",[1684,25305,1686],{"href":1686}," udScene_Release(struct udScene **ppScene)",[1689,25308,25309],{},"Destroy the instance of the scene.",[1693,25311,25312],{},[1689,25313,25314,25316],{},[1698,25315,1708],{},"\nThe pUserData item should be already released from every node before calling this.",[1711,25318,25319,25327],{},[1714,25320,25321],{},[1717,25322,25323,25325],{},[1720,25324,1722],{},[1720,25326,1725],{},[1727,25328,25329],{},[1717,25330,25331,25335],{},[1732,25332,25333],{},[1735,25334,24853],{},[1732,25336,25337],{},"The pointer pointer of the udScene. This will deallocate the instance of the scene as well as destroying all nodes.",[1689,25339,25340,3676,25342,25344],{},[3673,25341,3675],{},[1684,25343,1686],{"href":1686}," value based on the result of the scene destruction.",[1679,25346,1682,25348,25350],{"id":25347},"enum-uderror-udscene_savestruct-udscene-pscene",[1684,25349,1686],{"href":1686}," udScene_Save(struct udScene *pScene)",[1689,25352,25353],{},"Export a scene to where it was loaded from (server or file).",[1711,25355,25356,25364],{},[1714,25357,25358],{},[1717,25359,25360,25362],{},[1720,25361,1722],{},[1720,25363,1725],{},[1727,25365,25366],{},[1717,25367,25368,25372],{},[1732,25369,25370],{},[1735,25371,25280],{},[1732,25373,25374],{},"The pointer to a valid udScene that will saved. This will fail immediately for scenes loaded from memory",[1689,25376,25377,3676,25379,25381],{},[3673,25378,3675],{},[1684,25380,1686],{"href":1686}," value based on the result of the scene save",[1679,25383,1682,25385,25387],{"id":25384},"enum-uderror-udscene_updatestruct-udscene-pscene-struct-udsceneupdateinfo-pupdateinfo",[1684,25386,1686],{"href":1686}," udScene_Update(struct udScene *pScene, struct udSceneUpdateInfo *pUpdateInfo)",[1689,25389,25390],{},"Update a scene to where it was loaded from (server or file).",[1711,25392,25393,25401],{},[1714,25394,25395],{},[1717,25396,25397,25399],{},[1720,25398,1722],{},[1720,25400,1725],{},[1727,25402,25403,25411],{},[1717,25404,25405,25409],{},[1732,25406,25407],{},[1735,25408,25280],{},[1732,25410,25374],{},[1717,25412,25413,25418],{},[1732,25414,25415],{},[1735,25416,25417],{},"pUpdateInfo",[1732,25419,25420],{},"The data that would be updated",[1689,25422,25423,3676,25425,25381],{},[3673,25424,3675],{},[1684,25426,1686],{"href":1686},[1679,25428,1682,25430,25432],{"id":25429},"enum-uderror-udscene_savetomemorystruct-udcontext-pcontext-struct-udscene-pscene-const-char-ppmemory",[1684,25431,1686],{"href":1686}," udScene_SaveToMemory(struct udContext *pContext, struct udScene *pScene, const char **ppMemory)",[1689,25434,25435],{},"Export a scene to a GeoJSON string in memory.",[1693,25437,25438],{},[1689,25439,25440,25442],{},[1698,25441,1708],{},"\nThe memory is stored in the udScene and subsequent calls will destroy older versions, the buffer is released when the scene is released.",[1711,25444,25445,25453],{},[1714,25446,25447],{},[1717,25448,25449,25451],{},[1720,25450,1722],{},[1720,25452,1725],{},[1727,25454,25455,25464,25473],{},[1717,25456,25457,25461],{},[1732,25458,25459],{},[1735,25460,5760],{},[1732,25462,25463],{},"The pointer to the udContext of the session to use to save the scene to memory.",[1717,25465,25466,25470],{},[1732,25467,25468],{},[1735,25469,25280],{},[1732,25471,25472],{},"The pointer to a valid udScene that will be exported as GeoJSON.",[1717,25474,25475,25480],{},[1732,25476,25477],{},[1735,25478,25479],{},"ppMemory",[1732,25481,25482],{},"The pointer pointer to a string that will contain the exported GeoJSON.",[1689,25484,25485,3676,25487,25489],{},[3673,25486,3675],{},[1684,25488,1686],{"href":1686}," value based on the result of the scene export.",[1679,25491,1682,25493,25495],{"id":25492},"enum-uderror-udscene_savetoserverstruct-udcontext-pcontext-struct-udscene-pscene-const-char-porgid-const-char-pprojid",[1684,25494,1686],{"href":1686}," udScene_SaveToServer(struct udContext *pContext, struct udScene *pScene, const char *pOrgID, const char *pProjID)",[1689,25497,25498],{},"Create an scene in the server from an existing udScene",[1693,25500,25501],{},[1689,25502,25503,25505],{},[1698,25504,1700],{},"\npScene will point to the newly created scene if this is successful",[1711,25507,25508,25516],{},[1714,25509,25510],{},[1717,25511,25512,25514],{},[1720,25513,1722],{},[1720,25515,1725],{},[1727,25517,25518,25527,25536,25544],{},[1717,25519,25520,25524],{},[1732,25521,25522],{},[1735,25523,5760],{},[1732,25525,25526],{},"The pointer to the udContext of the session to use to upload the scene, write permissions will be based on the current session.",[1717,25528,25529,25533],{},[1732,25530,25531],{},[1735,25532,25280],{},[1732,25534,25535],{},"The udScene to upload.",[1717,25537,25538,25542],{},[1732,25539,25540],{},[1735,25541,24996],{},[1732,25543,24999],{},[1717,25545,25546,25550],{},[1732,25547,25548],{},[1735,25549,25006],{},[1732,25551,25009],{},[1689,25553,25554,3676,25556,25558],{},[3673,25555,3675],{},[1684,25557,1686],{"href":1686}," value based on the result of the scene creation.",[1679,25560,1682,25562,25564],{"id":25561},"enum-uderror-udscene_savetofilestruct-udcontext-pcontext-struct-udscene-pscene-const-char-ppath",[1684,25563,1686],{"href":1686}," udScene_SaveToFile(struct udContext *pContext, struct udScene *pScene, const char *pPath)",[1689,25566,25498],{},[1693,25568,25569],{},[1689,25570,25571,25573],{},[1698,25572,1700],{},"\npScene will point to the newly created file if this is successful",[1711,25575,25576,25584],{},[1714,25577,25578],{},[1717,25579,25580,25582],{},[1720,25581,1722],{},[1720,25583,1725],{},[1727,25585,25586,25595,25604],{},[1717,25587,25588,25592],{},[1732,25589,25590],{},[1735,25591,5760],{},[1732,25593,25594],{},"The pointer to the udContext of the session to use to save the scene to file.",[1717,25596,25597,25601],{},[1732,25598,25599],{},[1735,25600,25280],{},[1732,25602,25603],{},"The udScene to save out.",[1717,25605,25606,25610],{},[1732,25607,25608],{},[1735,25609,5614],{},[1732,25611,25612],{},"The new path to save the scene to",[1689,25614,25615,3676,25617,25558],{},[3673,25616,3675],{},[1684,25618,1686],{"href":1686},[1679,25620,1682,25622,25624],{"id":25621},"enum-uderror-udscene_getscenerootstruct-udscene-pscene-struct-udscenenode-pprootnode",[1684,25623,1686],{"href":1686}," udScene_GetSceneRoot(struct udScene *pScene, struct udSceneNode **ppRootNode)",[1689,25626,25627],{},"Get the scene root node.",[1693,25629,25630],{},[1689,25631,25632,25634],{},[1698,25633,1700],{},"\nThis node will always have itemtype of type udPNT_Folder and cannot (and will not) have sibling nodes.",[1693,25636,25637],{},[1689,25638,25639,25641],{},[1698,25640,1700],{},"\nThe name of the scene is the name of the returned root node.",[1711,25643,25644,25652],{},[1714,25645,25646],{},[1717,25647,25648,25650],{},[1720,25649,1722],{},[1720,25651,1725],{},[1727,25653,25654,25663],{},[1717,25655,25656,25660],{},[1732,25657,25658],{},[1735,25659,25280],{},[1732,25661,25662],{},"The pointer to a valid udScene.",[1717,25664,25665,25670],{},[1732,25666,25667],{},[1735,25668,25669],{},"ppRootNode",[1732,25671,25672],{},"The pointer pointer to a node that will contain the node. The node ownership still belongs to the pScene.",[1689,25674,25675,3676,25677,25679],{},[3673,25676,3675],{},[1684,25678,1686],{"href":1686}," value based on the result of getting the root node.",[1679,25681,1682,25683,25685],{"id":25682},"enum-uderror-udscene_getsceneidstruct-udscene-pscene-const-char-ppsceneid",[1684,25684,1686],{"href":1686}," udScene_GetSceneID(struct udScene *pScene, const char **ppSceneID)",[1689,25687,25688],{},"Get the scene ID (for server projects).",[1693,25690,25691],{},[1689,25692,25693,25695],{},[1698,25694,1700],{},"\nReturns udE_NotFound for non-server projects",[1711,25697,25698,25706],{},[1714,25699,25700],{},[1717,25701,25702,25704],{},[1720,25703,1722],{},[1720,25705,1725],{},[1727,25707,25708,25716],{},[1717,25709,25710,25714],{},[1732,25711,25712],{},[1735,25713,25280],{},[1732,25715,25662],{},[1717,25717,25718,25723],{},[1732,25719,25720],{},[1735,25721,25722],{},"ppSceneID",[1732,25724,25725],{},"The pointer pointer to memory that will contain the scene ID. The ownership still belongs to the pScene.",[1689,25727,25728,3676,25730,25679],{},[3673,25729,3675],{},[1684,25731,1686],{"href":1686},[1679,25733,1682,25735,25737],{"id":25734},"enum-uderror-udscene_hasunsavedchangesstruct-udscene-pscene",[1684,25736,1686],{"href":1686}," udScene_HasUnsavedChanges(struct udScene *pScene)",[1689,25739,25740],{},"Get the state of unsaved local changes",[1711,25742,25743,25751],{},[1714,25744,25745],{},[1717,25746,25747,25749],{},[1720,25748,1722],{},[1720,25750,1725],{},[1727,25752,25753],{},[1717,25754,25755,25759],{},[1732,25756,25757],{},[1735,25758,25280],{},[1732,25760,25662],{},[1689,25762,25763,25765,25766,25768],{},[3673,25764,3675],{}," udE_Success if there a unsaved changes, udE_NotFound when no local changes exist and other ",[1684,25767,1686],{"href":1686}," values for errors",[1679,25770,1682,25772,25774],{"id":25771},"enum-uderror-udscene_getloadsourcestruct-udscene-pscene-enum-udsceneloadsource-psource",[1684,25773,1686],{"href":1686}," udScene_GetLoadSource(struct udScene *pScene, enum udSceneLoadSource *pSource)",[1689,25776,25777],{},"Gets the current source of a given udScene",[1711,25779,25780,25788],{},[1714,25781,25782],{},[1717,25783,25784,25786],{},[1720,25785,1722],{},[1720,25787,1725],{},[1727,25789,25790,25798],{},[1717,25791,25792,25796],{},[1732,25793,25794],{},[1735,25795,25280],{},[1732,25797,25662],{},[1717,25799,25800,25804],{},[1732,25801,25802],{},[1735,25803,15131],{},[1732,25805,25806],{},"The pointer to memory to write the source of pScene to",[1689,25808,25809,25811],{},[3673,25810,3675],{}," udE_Success if wrote source, error otherwise",[1679,25813,1682,25815,25817],{"id":25814},"enum-uderror-udscenenode_createstruct-udscene-pscene-struct-udscenenode-ppnode-struct-udscenenode-pparent-const-char-ptype-const-char-pname-const-char-puri-void-puserdata",[1684,25816,1686],{"href":1686}," udSceneNode_Create(struct udScene *pScene, struct udSceneNode **ppNode, struct udSceneNode *pParent, const char *pType, const char *pName, const char *pURI, void *pUserData)",[1689,25819,25820],{},"Create a node in a project",[1711,25822,25823,25831],{},[1714,25824,25825],{},[1717,25826,25827,25829],{},[1720,25828,1722],{},[1720,25830,1725],{},[1727,25832,25833,25841,25851,25861,25871,25880,25890],{},[1717,25834,25835,25839],{},[1732,25836,25837],{},[1735,25838,25280],{},[1732,25840,25662],{},[1717,25842,25843,25848],{},[1732,25844,25845],{},[1735,25846,25847],{},"ppNode",[1732,25849,25850],{},"A pointer pointer to the node that will be created. This can be NULL if getting the node back isn’t required.",[1717,25852,25853,25858],{},[1732,25854,25855],{},[1735,25856,25857],{},"pParent",[1732,25859,25860],{},"The parent node of the item.",[1717,25862,25863,25868],{},[1732,25864,25865],{},[1735,25866,25867],{},"pType",[1732,25869,25870],{},"The string representing the type of the item. This can be a defined string provided by udScene_GetTypeName or a custom type. Cannot be NULL.",[1717,25872,25873,25877],{},[1732,25874,25875],{},[1735,25876,3862],{},[1732,25878,25879],{},"A human readable name for the item. If this item is NULL it will attempt to generate a name from the pURI or the pType strings.",[1717,25881,25882,25887],{},[1732,25883,25884],{},[1735,25885,25886],{},"pURI",[1732,25888,25889],{},"The URL, filename or other URI containing where to find this item. These should be absolute paths where applicable (preferably HTTPS) to ensure maximum interop with other packages.",[1717,25891,25892,25896],{},[1732,25893,25894],{},[1735,25895,9401],{},[1732,25897,25898,25899,25901],{},"A pointer to data provided by the application to store in the ",[1735,25900,9401],{}," item in the udSceneNode.",[1689,25903,25904,3676,25906,25908],{},[3673,25905,3675],{},[1684,25907,1686],{"href":1686}," value based on the result of the node being created in the project.",[1679,25910,1682,25912,25914],{"id":25911},"enum-uderror-udscenenode_movechildstruct-udscene-pscene-struct-udscenenode-pcurrentparent-struct-udscenenode-pnewparent-struct-udscenenode-pnode-struct-udscenenode-pinsertbeforechild",[1684,25913,1686],{"href":1686}," udSceneNode_MoveChild(struct udScene *pScene, struct udSceneNode *pCurrentParent, struct udSceneNode *pNewParent, struct udSceneNode *pNode, struct udSceneNode *pInsertBeforeChild)",[1689,25916,25917],{},"Move a node to reorder within the current parent or move to a different parent.",[1711,25919,25920,25928],{},[1714,25921,25922],{},[1717,25923,25924,25926],{},[1720,25925,1722],{},[1720,25927,1725],{},[1727,25929,25930,25938,25948,25958,25967],{},[1717,25931,25932,25936],{},[1732,25933,25934],{},[1735,25935,25280],{},[1732,25937,25662],{},[1717,25939,25940,25945],{},[1732,25941,25942],{},[1735,25943,25944],{},"pCurrentParent",[1732,25946,25947],{},"The current parent of pNode.",[1717,25949,25950,25955],{},[1732,25951,25952],{},[1735,25953,25954],{},"pNewParent",[1732,25956,25957],{},"The intended new parent of pNode.",[1717,25959,25960,25964],{},[1732,25961,25962],{},[1735,25963,16119],{},[1732,25965,25966],{},"The node to move.",[1717,25968,25969,25974],{},[1732,25970,25971],{},[1735,25972,25973],{},"pInsertBeforeChild",[1732,25975,25976],{},"The node that will be after pNode after the move. Set as NULL to be the last child of pNewParent.",[1689,25978,25979,3676,25981,25983],{},[3673,25980,3675],{},[1684,25982,1686],{"href":1686}," value based on the result of the move.",[1679,25985,1682,25987,25989],{"id":25986},"enum-uderror-udscenenode_removechildstruct-udscene-pscene-struct-udscenenode-pparentnode-struct-udscenenode-pnode",[1684,25988,1686],{"href":1686}," udSceneNode_RemoveChild(struct udScene *pScene, struct udSceneNode *pParentNode, struct udSceneNode *pNode)",[1689,25991,25992],{},"Remove a node from the project.",[1693,25994,25995],{},[1689,25996,25997,25999],{},[1698,25998,1708],{},"\nEnsure that the pUserData point of pNode has been released before calling this.",[1711,26001,26002,26010],{},[1714,26003,26004],{},[1717,26005,26006,26008],{},[1720,26007,1722],{},[1720,26009,1725],{},[1727,26011,26012,26020,26030],{},[1717,26013,26014,26018],{},[1732,26015,26016],{},[1735,26017,25280],{},[1732,26019,25662],{},[1717,26021,26022,26027],{},[1732,26023,26024],{},[1735,26025,26026],{},"pParentNode",[1732,26028,26029],{},"The parent of the node to be removed.",[1717,26031,26032,26036],{},[1732,26033,26034],{},[1735,26035,16119],{},[1732,26037,26038],{},"The node to remove from the project.",[1689,26040,26041,3676,26043,26045],{},[3673,26042,3675],{},[1684,26044,1686],{"href":1686}," value based on the result of removing the node.",[1679,26047,1682,26049,26051],{"id":26048},"enum-uderror-udscenenode_setnamestruct-udscene-pscene-struct-udscenenode-pnode-const-char-pnodename",[1684,26050,1686],{"href":1686}," udSceneNode_SetName(struct udScene *pScene, struct udSceneNode *pNode, const char *pNodeName)",[1689,26053,26054],{},"Set the human readable name of a node.",[1711,26056,26057,26065],{},[1714,26058,26059],{},[1717,26060,26061,26063],{},[1720,26062,1722],{},[1720,26064,1725],{},[1727,26066,26067,26075,26084],{},[1717,26068,26069,26073],{},[1732,26070,26071],{},[1735,26072,25280],{},[1732,26074,25662],{},[1717,26076,26077,26081],{},[1732,26078,26079],{},[1735,26080,16119],{},[1732,26082,26083],{},"The node to change the name of.",[1717,26085,26086,26091],{},[1732,26087,26088],{},[1735,26089,26090],{},"pNodeName",[1732,26092,26093],{},"The new name of the node. This is duplicated internally.",[1689,26095,26096,3676,26098,26100],{},[3673,26097,3675],{},[1684,26099,1686],{"href":1686}," value based on the result of setting the name.",[1679,26102,1682,26104,26106],{"id":26103},"enum-uderror-udscenenode_setvisibilitystruct-udscenenode-pnode-int-visibility",[1684,26105,1686],{"href":1686}," udSceneNode_SetVisibility(struct udSceneNode *pNode, int visibility)",[1689,26108,26109],{},"Set the visibility of the node",[1711,26111,26112,26120],{},[1714,26113,26114],{},[1717,26115,26116,26118],{},[1720,26117,1722],{},[1720,26119,1725],{},[1727,26121,26122,26131],{},[1717,26123,26124,26128],{},[1732,26125,26126],{},[1735,26127,16119],{},[1732,26129,26130],{},"The node to change the visibility.",[1717,26132,26133,26138],{},[1732,26134,26135],{},[1735,26136,26137],{},"visibility",[1732,26139,26140],{},"The new visibility of the node (non-zero for visible).",[1689,26142,26143,3676,26145,26147],{},[3673,26144,3675],{},[1684,26146,1686],{"href":1686}," value based on the result of updating the visibility.",[1679,26149,1682,26151,26153],{"id":26150},"enum-uderror-udscenenode_seturistruct-udscene-pscene-struct-udscenenode-pnode-const-char-pnodeuri",[1684,26152,1686],{"href":1686}," udSceneNode_SetURI(struct udScene *pScene, struct udSceneNode *pNode, const char *pNodeURI)",[1689,26155,26156],{},"Set the URI of a node.",[1711,26158,26159,26167],{},[1714,26160,26161],{},[1717,26162,26163,26165],{},[1720,26164,1722],{},[1720,26166,1725],{},[1727,26168,26169,26177,26185],{},[1717,26170,26171,26175],{},[1732,26172,26173],{},[1735,26174,25280],{},[1732,26176,25662],{},[1717,26178,26179,26183],{},[1732,26180,26181],{},[1735,26182,16119],{},[1732,26184,26083],{},[1717,26186,26187,26192],{},[1732,26188,26189],{},[1735,26190,26191],{},"pNodeURI",[1732,26193,26194],{},"The new URI of the node. This is duplicated internally.",[1689,26196,26197,3676,26199,26201],{},[3673,26198,3675],{},[1684,26200,1686],{"href":1686}," value based on the result of setting the URI.",[1679,26203,1682,26205,26207],{"id":26204},"enum-uderror-udscenenode_setboundingboxstruct-udscene-pscene-struct-udscenenode-pnode-double-boundingbox6",[1684,26206,1686],{"href":1686}," udSceneNode_SetBoundingBox(struct udScene *pScene, struct udSceneNode *pNode, double boundingBox[6])",[1689,26209,26210],{},"Set a bounding box for the node.",[1711,26212,26213,26221],{},[1714,26214,26215],{},[1717,26216,26217,26219],{},[1720,26218,1722],{},[1720,26220,1725],{},[1727,26222,26223,26231,26240],{},[1717,26224,26225,26229],{},[1732,26226,26227],{},[1735,26228,25280],{},[1732,26230,25662],{},[1717,26232,26233,26237],{},[1732,26234,26235],{},[1735,26236,16119],{},[1732,26238,26239],{},"The node to change the bounding box of.",[1717,26241,26242,26247],{},[1732,26243,26244],{},[1735,26245,26246],{},"boundingBox",[1732,26248,26249],{},"An array of doubles representing the bounds of the node, ordered as [West, South, Floor, East, North, Ceiling]",[1689,26251,26252,3676,26254,26256],{},[3673,26253,3675],{},[1684,26255,1686],{"href":1686}," value based on the result of setting the bounding box.",[1679,26258,1682,26260,26262],{"id":26259},"enum-uderror-udscenenode_settimespanstruct-udscene-pscene-struct-udscenenode-pnode-double-start-double-end",[1684,26261,1686],{"href":1686}," udSceneNode_SetTimeSpan(struct udScene *pScene, struct udSceneNode *pNode, double start, double end)",[1689,26264,26265],{},"Set a time span for the node.",[1711,26267,26268,26276],{},[1714,26269,26270],{},[1717,26271,26272,26274],{},[1720,26273,1722],{},[1720,26275,1725],{},[1727,26277,26278,26286,26295,26304],{},[1717,26279,26280,26284],{},[1732,26281,26282],{},[1735,26283,25280],{},[1732,26285,25662],{},[1717,26287,26288,26292],{},[1732,26289,26290],{},[1735,26291,16119],{},[1732,26293,26294],{},"The node to change the time span of.",[1717,26296,26297,26301],{},[1732,26298,26299],{},[1735,26300,5004],{},[1732,26302,26303],{},"A Unix Epoch in Seconds. The node will be relevant after this timestamp. Set to -1.0 to unassign.",[1717,26305,26306,26311],{},[1732,26307,26308],{},[1735,26309,26310],{},"end",[1732,26312,26313],{},"A Unix Epoch in Seconds. The node will be relevant before this timestamp. Set to -1.0 to unassign.",[1689,26315,26316,3676,26318,26320],{},[3673,26317,3675],{},[1684,26319,1686],{"href":1686}," value based on the result of setting the time span.",[1679,26322,1682,26324,26326],{"id":26323},"enum-uderror-udscenenode_setgeometrystruct-udscene-pscene-struct-udscenenode-pnode-enum-udscenegeometrytype-nodetype-int-geometrycount-double-pcoordinates",[1684,26325,1686],{"href":1686}," udSceneNode_SetGeometry(struct udScene *pScene, struct udSceneNode *pNode, enum udSceneGeometryType nodeType, int geometryCount, double *pCoordinates)",[1689,26328,26329],{},"Set the new geometry of a node.",[1711,26331,26332,26340],{},[1714,26333,26334],{},[1717,26335,26336,26338],{},[1720,26337,1722],{},[1720,26339,1725],{},[1727,26341,26342,26350,26359,26369,26379],{},[1717,26343,26344,26348],{},[1732,26345,26346],{},[1735,26347,25280],{},[1732,26349,25662],{},[1717,26351,26352,26356],{},[1732,26353,26354],{},[1735,26355,16119],{},[1732,26357,26358],{},"The node to change the geometry of.",[1717,26360,26361,26366],{},[1732,26362,26363],{},[1735,26364,26365],{},"nodeType",[1732,26367,26368],{},"The new type of the geometry",[1717,26370,26371,26376],{},[1732,26372,26373],{},[1735,26374,26375],{},"geometryCount",[1732,26377,26378],{},"How many coordinates are being added",[1717,26380,26381,26386],{},[1732,26382,26383],{},[1735,26384,26385],{},"pCoordinates",[1732,26387,26388],{},"A pointer to the new coordinates (this is an array that should be 3x the length of geometryCount). Ordered in [ longitude0, latitude0, altitude0, …, longitudeN, latitudeN, altitudeN ] order.",[1689,26390,26391,3676,26393,26395],{},[3673,26392,3675],{},[1684,26394,1686],{"href":1686}," value based on the result of setting the geometry.",[1679,26397,1682,26399,26401],{"id":26398},"enum-uderror-udscenenode_setgeometryaltitudetypestruct-udscene-pscene-struct-udscenenode-pscenenode-enum-udscenealtitudetype-altitudetype",[1684,26400,1686],{"href":1686}," udSceneNode_SetGeometryAltitudeType(struct udScene *pScene, struct udSceneNode *pSceneNode, enum udSceneAltitudeType altitudeType)",[1689,26403,26404],{},"Set the altitude type for the node.",[1711,26406,26407,26415],{},[1714,26408,26409],{},[1717,26410,26411,26413],{},[1720,26412,1722],{},[1720,26414,1725],{},[1727,26416,26417,26425,26434],{},[1717,26418,26419,26423],{},[1732,26420,26421],{},[1735,26422,25280],{},[1732,26424,25662],{},[1717,26426,26427,26431],{},[1732,26428,26429],{},[1735,26430,16119],{},[1732,26432,26433],{},"The node to change the altitude type of.",[1717,26435,26436,26441],{},[1732,26437,26438],{},[1735,26439,26440],{},"altitudeType",[1732,26442,26443],{},"The altitude type",[1689,26445,26446,3676,26448,26320],{},[3673,26447,3675],{},[1684,26449,1686],{"href":1686},[1679,26451,1682,26453,26455],{"id":26452},"enum-uderror-udscenenode_getmetadataintstruct-udscenenode-pnode-const-char-pmetadatakey-int32_t-pint-int32_t-defaultvalue",[1684,26454,1686],{"href":1686}," udSceneNode_GetMetadataInt(struct udSceneNode *pNode, const char *pMetadataKey, int32_t *pInt, int32_t defaultValue)",[1689,26457,26458],{},"Get a metadata item of a node as an integer.",[1711,26460,26461,26469],{},[1714,26462,26463],{},[1717,26464,26465,26467],{},[1720,26466,1722],{},[1720,26468,1725],{},[1727,26470,26471,26480,26489,26499],{},[1717,26472,26473,26477],{},[1732,26474,26475],{},[1735,26476,16119],{},[1732,26478,26479],{},"The node to get the metadata from.",[1717,26481,26482,26486],{},[1732,26483,26484],{},[1735,26485,8902],{},[1732,26487,26488],{},"The name of the metadata key.",[1717,26490,26491,26496],{},[1732,26492,26493],{},[1735,26494,26495],{},"pInt",[1732,26497,26498],{},"The pointer to the memory to write the metadata to",[1717,26500,26501,26506],{},[1732,26502,26503],{},[1735,26504,26505],{},"defaultValue",[1732,26507,26508],{},"The value to write to pInt if the metadata item isn’t in the udSceneNode or if it isn’t of an integer type",[1689,26510,26511,3676,26513,26515],{},[3673,26512,3675],{},[1684,26514,1686],{"href":1686}," value based on the result of reading the metadata into pInt.",[1679,26517,1682,26519,26521],{"id":26518},"enum-uderror-udscenenode_setmetadataintstruct-udscenenode-pnode-const-char-pmetadatakey-int32_t-ivalue",[1684,26520,1686],{"href":1686}," udSceneNode_SetMetadataInt(struct udSceneNode *pNode, const char *pMetadataKey, int32_t iValue)",[1689,26523,26524],{},"Set a metadata item of a node from an integer.",[1711,26526,26527,26535],{},[1714,26528,26529],{},[1717,26530,26531,26533],{},[1720,26532,1722],{},[1720,26534,1725],{},[1727,26536,26537,26546,26554],{},[1717,26538,26539,26543],{},[1732,26540,26541],{},[1735,26542,16119],{},[1732,26544,26545],{},"The node to set the metadata on.",[1717,26547,26548,26552],{},[1732,26549,26550],{},[1735,26551,8902],{},[1732,26553,26488],{},[1717,26555,26556,26561],{},[1732,26557,26558],{},[1735,26559,26560],{},"iValue",[1732,26562,26563],{},"The integer value to write to the metadata key",[1689,26565,26566,3676,26568,26570],{},[3673,26567,3675],{},[1684,26569,1686],{"href":1686}," value based on the result of writing the metadata into the node.",[1679,26572,1682,26574,26576],{"id":26573},"enum-uderror-udscenenode_getmetadatauintstruct-udscenenode-pnode-const-char-pmetadatakey-uint32_t-pint-uint32_t-defaultvalue",[1684,26575,1686],{"href":1686}," udSceneNode_GetMetadataUint(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t *pInt, uint32_t defaultValue)",[1689,26578,26579],{},"Get a metadata item of a node as an unsigned integer.",[1711,26581,26582,26590],{},[1714,26583,26584],{},[1717,26585,26586,26588],{},[1720,26587,1722],{},[1720,26589,1725],{},[1727,26591,26592,26600,26608,26616],{},[1717,26593,26594,26598],{},[1732,26595,26596],{},[1735,26597,16119],{},[1732,26599,26479],{},[1717,26601,26602,26606],{},[1732,26603,26604],{},[1735,26605,8902],{},[1732,26607,26488],{},[1717,26609,26610,26614],{},[1732,26611,26612],{},[1735,26613,26495],{},[1732,26615,26498],{},[1717,26617,26618,26622],{},[1732,26619,26620],{},[1735,26621,26505],{},[1732,26623,26508],{},[1689,26625,26626,3676,26628,26515],{},[3673,26627,3675],{},[1684,26629,1686],{"href":1686},[1679,26631,1682,26633,26635],{"id":26632},"enum-uderror-udscenenode_setmetadatauintstruct-udscenenode-pnode-const-char-pmetadatakey-uint32_t-ivalue",[1684,26634,1686],{"href":1686}," udSceneNode_SetMetadataUint(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t iValue)",[1689,26637,26638],{},"Set a metadata item of a node from an unsigned integer.",[1711,26640,26641,26649],{},[1714,26642,26643],{},[1717,26644,26645,26647],{},[1720,26646,1722],{},[1720,26648,1725],{},[1727,26650,26651,26659,26667],{},[1717,26652,26653,26657],{},[1732,26654,26655],{},[1735,26656,16119],{},[1732,26658,26545],{},[1717,26660,26661,26665],{},[1732,26662,26663],{},[1735,26664,8902],{},[1732,26666,26488],{},[1717,26668,26669,26673],{},[1732,26670,26671],{},[1735,26672,26560],{},[1732,26674,26675],{},"The unsigned integer value to write to the metadata key",[1689,26677,26678,3676,26680,26570],{},[3673,26679,3675],{},[1684,26681,1686],{"href":1686},[1679,26683,1682,26685,26687],{"id":26684},"enum-uderror-udscenenode_getmetadataint64struct-udscenenode-pnode-const-char-pmetadatakey-int64_t-pint64-int64_t-defaultvalue",[1684,26686,1686],{"href":1686}," udSceneNode_GetMetadataInt64(struct udSceneNode *pNode, const char *pMetadataKey, int64_t *pInt64, int64_t defaultValue)",[1689,26689,26690],{},"Get a metadata item of a node as a 64 bit integer.",[1711,26692,26693,26701],{},[1714,26694,26695],{},[1717,26696,26697,26699],{},[1720,26698,1722],{},[1720,26700,1725],{},[1727,26702,26703,26711,26719,26728],{},[1717,26704,26705,26709],{},[1732,26706,26707],{},[1735,26708,16119],{},[1732,26710,26479],{},[1717,26712,26713,26717],{},[1732,26714,26715],{},[1735,26716,8902],{},[1732,26718,26488],{},[1717,26720,26721,26726],{},[1732,26722,26723],{},[1735,26724,26725],{},"pInt64",[1732,26727,26498],{},[1717,26729,26730,26734],{},[1732,26731,26732],{},[1735,26733,26505],{},[1732,26735,26736],{},"The value to write to pInt64 if the metadata item isn’t in the udSceneNode or if it isn’t of an integer type",[1689,26738,26739,3676,26741,26743],{},[3673,26740,3675],{},[1684,26742,1686],{"href":1686}," value based on the result of reading the metadata into pInt64.",[1679,26745,1682,26747,26749],{"id":26746},"enum-uderror-udscenenode_setmetadataint64struct-udscenenode-pnode-const-char-pmetadatakey-int64_t-i64value",[1684,26748,1686],{"href":1686}," udSceneNode_SetMetadataInt64(struct udSceneNode *pNode, const char *pMetadataKey, int64_t i64Value)",[1689,26751,26752],{},"Set a metadata item of a node from a 64 bit integer.",[1711,26754,26755,26763],{},[1714,26756,26757],{},[1717,26758,26759,26761],{},[1720,26760,1722],{},[1720,26762,1725],{},[1727,26764,26765,26773,26781],{},[1717,26766,26767,26771],{},[1732,26768,26769],{},[1735,26770,16119],{},[1732,26772,26545],{},[1717,26774,26775,26779],{},[1732,26776,26777],{},[1735,26778,8902],{},[1732,26780,26488],{},[1717,26782,26783,26788],{},[1732,26784,26785],{},[1735,26786,26787],{},"i64Value",[1732,26789,26563],{},[1689,26791,26792,3676,26794,26570],{},[3673,26793,3675],{},[1684,26795,1686],{"href":1686},[1679,26797,1682,26799,26801],{"id":26798},"enum-uderror-udscenenode_getmetadatadoublestruct-udscenenode-pnode-const-char-pmetadatakey-double-pdouble-double-defaultvalue",[1684,26800,1686],{"href":1686}," udSceneNode_GetMetadataDouble(struct udSceneNode *pNode, const char *pMetadataKey, double *pDouble, double defaultValue)",[1689,26803,26804],{},"Get a metadata item of a node as a double.",[1711,26806,26807,26815],{},[1714,26808,26809],{},[1717,26810,26811,26813],{},[1720,26812,1722],{},[1720,26814,1725],{},[1727,26816,26817,26825,26833,26842],{},[1717,26818,26819,26823],{},[1732,26820,26821],{},[1735,26822,16119],{},[1732,26824,26479],{},[1717,26826,26827,26831],{},[1732,26828,26829],{},[1735,26830,8902],{},[1732,26832,26488],{},[1717,26834,26835,26840],{},[1732,26836,26837],{},[1735,26838,26839],{},"pDouble",[1732,26841,26498],{},[1717,26843,26844,26848],{},[1732,26845,26846],{},[1735,26847,26505],{},[1732,26849,26850],{},"The value to write to pDouble if the metadata item isn’t in the udSceneNode or if it isn’t of an integer or floating point type",[1689,26852,26853,3676,26855,26857],{},[3673,26854,3675],{},[1684,26856,1686],{"href":1686}," value based on the result of reading the metadata into pDouble.",[1679,26859,1682,26861,26863],{"id":26860},"enum-uderror-udscenenode_setmetadatadoublestruct-udscenenode-pnode-const-char-pmetadatakey-double-doublevalue",[1684,26862,1686],{"href":1686}," udSceneNode_SetMetadataDouble(struct udSceneNode *pNode, const char *pMetadataKey, double doubleValue)",[1689,26865,26866],{},"Set a metadata item of a node from a double.",[1711,26868,26869,26877],{},[1714,26870,26871],{},[1717,26872,26873,26875],{},[1720,26874,1722],{},[1720,26876,1725],{},[1727,26878,26879,26887,26895],{},[1717,26880,26881,26885],{},[1732,26882,26883],{},[1735,26884,16119],{},[1732,26886,26545],{},[1717,26888,26889,26893],{},[1732,26890,26891],{},[1735,26892,8902],{},[1732,26894,26488],{},[1717,26896,26897,26902],{},[1732,26898,26899],{},[1735,26900,26901],{},"doubleValue",[1732,26903,26904],{},"The double value to write to the metadata key",[1689,26906,26907,3676,26909,26570],{},[3673,26908,3675],{},[1684,26910,1686],{"href":1686},[1679,26912,1682,26914,26916],{"id":26913},"enum-uderror-udscenenode_getmetadataboolstruct-udscenenode-pnode-const-char-pmetadatakey-uint32_t-pbool-uint32_t-defaultvalue",[1684,26915,1686],{"href":1686}," udSceneNode_GetMetadataBool(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t *pBool, uint32_t defaultValue)",[1689,26918,26919],{},"Get a metadata item of a node as a boolean.",[1711,26921,26922,26930],{},[1714,26923,26924],{},[1717,26925,26926,26928],{},[1720,26927,1722],{},[1720,26929,1725],{},[1727,26931,26932,26940,26948,26958],{},[1717,26933,26934,26938],{},[1732,26935,26936],{},[1735,26937,16119],{},[1732,26939,26479],{},[1717,26941,26942,26946],{},[1732,26943,26944],{},[1735,26945,8902],{},[1732,26947,26488],{},[1717,26949,26950,26955],{},[1732,26951,26952],{},[1735,26953,26954],{},"pBool",[1732,26956,26957],{},"The pointer to the memory to write the metadata to (0=false, !0=true)",[1717,26959,26960,26964],{},[1732,26961,26962],{},[1735,26963,26505],{},[1732,26965,26966],{},"The value to write to pBool if the metadata item isn’t in the udSceneNode or if it isn’t of a boolean type",[1689,26968,26969,3676,26971,26973],{},[3673,26970,3675],{},[1684,26972,1686],{"href":1686}," value based on the result of reading the metadata into pBool.",[1679,26975,1682,26977,26979],{"id":26976},"enum-uderror-udscenenode_setmetadataboolstruct-udscenenode-pnode-const-char-pmetadatakey-uint32_t-boolvalue",[1684,26978,1686],{"href":1686}," udSceneNode_SetMetadataBool(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t boolValue)",[1689,26981,26982],{},"Set a metadata item of a node from a boolean.",[1711,26984,26985,26993],{},[1714,26986,26987],{},[1717,26988,26989,26991],{},[1720,26990,1722],{},[1720,26992,1725],{},[1727,26994,26995,27003,27011],{},[1717,26996,26997,27001],{},[1732,26998,26999],{},[1735,27000,16119],{},[1732,27002,26545],{},[1717,27004,27005,27009],{},[1732,27006,27007],{},[1735,27008,8902],{},[1732,27010,26488],{},[1717,27012,27013,27018],{},[1732,27014,27015],{},[1735,27016,27017],{},"boolValue",[1732,27019,27020],{},"The boolean value to write to the metadata key (0=false, !0=true)",[1689,27022,27023,3676,27025,26570],{},[3673,27024,3675],{},[1684,27026,1686],{"href":1686},[1679,27028,1682,27030,27032],{"id":27029},"enum-uderror-udscenenode_getmetadatastringstruct-udscenenode-pnode-const-char-pmetadatakey-const-char-ppstring-const-char-pdefaultvalue",[1684,27031,1686],{"href":1686}," udSceneNode_GetMetadataString(struct udSceneNode *pNode, const char *pMetadataKey, const char **ppString, const char *pDefaultValue)",[1689,27034,27035],{},"Get a metadata item of a node as a string.",[1711,27037,27038,27046],{},[1714,27039,27040],{},[1717,27041,27042,27044],{},[1720,27043,1722],{},[1720,27045,1725],{},[1727,27047,27048,27056,27064,27074],{},[1717,27049,27050,27054],{},[1732,27051,27052],{},[1735,27053,16119],{},[1732,27055,26479],{},[1717,27057,27058,27062],{},[1732,27059,27060],{},[1735,27061,8902],{},[1732,27063,26488],{},[1717,27065,27066,27071],{},[1732,27067,27068],{},[1735,27069,27070],{},"ppString",[1732,27072,27073],{},"The pointer pointer to the memory of the string. This is owned by the udSceneNode and should be copied if required to be stored for a long period.",[1717,27075,27076,27081],{},[1732,27077,27078],{},[1735,27079,27080],{},"pDefaultValue",[1732,27082,27083],{},"The value to write to ppString if the metadata item isn’t in the udSceneNode or if it isn’t of a string type",[1689,27085,27086,3676,27088,27090],{},[3673,27087,3675],{},[1684,27089,1686],{"href":1686}," value based on the result of reading the metadata into ppString.",[1679,27092,1682,27094,27096],{"id":27093},"enum-uderror-udscenenode_setmetadatastringstruct-udscenenode-pnode-const-char-pmetadatakey-const-char-pstring",[1684,27095,1686],{"href":1686}," udSceneNode_SetMetadataString(struct udSceneNode *pNode, const char *pMetadataKey, const char *pString)",[1689,27098,27099],{},"Set a metadata item of a node from a string.",[1711,27101,27102,27110],{},[1714,27103,27104],{},[1717,27105,27106,27108],{},[1720,27107,1722],{},[1720,27109,1725],{},[1727,27111,27112,27120,27128],{},[1717,27113,27114,27118],{},[1732,27115,27116],{},[1735,27117,16119],{},[1732,27119,26545],{},[1717,27121,27122,27126],{},[1732,27123,27124],{},[1735,27125,8902],{},[1732,27127,26488],{},[1717,27129,27130,27135],{},[1732,27131,27132],{},[1735,27133,27134],{},"pString",[1732,27136,27137],{},"The string to write to the metadata key. This is duplicated internally.",[1689,27139,27140,3676,27142,26570],{},[3673,27141,3675],{},[1684,27143,1686],{"href":1686},[1679,27145,1682,27147,27149],{"id":27146},"enum-uderror-udscenenode_setmetadatanullstruct-udscenenode-pnode-const-char-pmetadatakey",[1684,27148,1686],{"href":1686}," udSceneNode_SetMetadataNull(struct udSceneNode *pNode, const char *pMetadataKey)",[1689,27151,27152],{},"Set a metadata item of a node to null.",[1711,27154,27155,27163],{},[1714,27156,27157],{},[1717,27158,27159,27161],{},[1720,27160,1722],{},[1720,27162,1725],{},[1727,27164,27165,27174],{},[1717,27166,27167,27171],{},[1732,27168,27169],{},[1735,27170,16119],{},[1732,27172,27173],{},"The node to set the metadata item on.",[1717,27175,27176,27180],{},[1732,27177,27178],{},[1735,27179,8902],{},[1732,27181,26488],{},[1689,27183,27184,3676,27186,26570],{},[3673,27185,3675],{},[1684,27187,1686],{"href":1686},[1679,27189,1682,27191,27193],{"id":27190},"enum-uderror-udscenenode_getmetadataobjectjsonstruct-udscenenode-pnode-const-char-pmetadatakey-char-pbuffer-int-bufferlen-int-pstrlen",[1684,27192,1686],{"href":1686}," udSceneNode_GetMetadataObjectJSON(struct udSceneNode *pNode, const char *pMetadataKey, char *pBuffer, int bufferLen, int *pStrLen)",[1689,27195,27196],{},"Get a metadata item of a node as a null terminated JSON string.",[1693,27198,27199],{},[1689,27200,27201,27203],{},[1698,27202,1700],{},"\npStrLen will be filled if pMetadataKey is valid which allows for calling it again with a bigger pBuffer",[1693,27205,27206],{},[1689,27207,27208,27210],{},[1698,27209,1700],{},"\nThere is intentionally no equivilent “udSceneNode_SetMetadataObjectJSON” as this time",[1711,27212,27213,27221],{},[1714,27214,27215],{},[1717,27216,27217,27219],{},[1720,27218,1722],{},[1720,27220,1725],{},[1727,27222,27223,27231,27240,27249,27259],{},[1717,27224,27225,27229],{},[1732,27226,27227],{},[1735,27228,16119],{},[1732,27230,26479],{},[1717,27232,27233,27237],{},[1732,27234,27235],{},[1735,27236,8902],{},[1732,27238,27239],{},"The name of the metadata key or NULL to get the full metadata object.",[1717,27241,27242,27246],{},[1732,27243,27244],{},[1735,27245,9391],{},[1732,27247,27248],{},"The pointer to a preallocated buffer that you own (or NULL if trying to get the length via pStrLen).",[1717,27250,27251,27256],{},[1732,27252,27253],{},[1735,27254,27255],{},"bufferLen",[1732,27257,27258],{},"The usable size of pBuffer in bytes (0 if pBuffer is NULL)",[1717,27260,27261,27266],{},[1732,27262,27263],{},[1735,27264,27265],{},"pStrLen",[1732,27267,27268],{},"The size of the total string required (including null terminator)",[1689,27270,27271,3676,27273,27275],{},[3673,27272,3675],{},[1684,27274,1686],{"href":1686}," value based on the result of writing the metadata JSON into pBuffer.",[1679,27277,27279],{"id":27278},"const-char-udscene_gettypenameenum-udscenenodetype-itemtype","const char *udScene_GetTypeName(enum udSceneNodeType itemtype)",[1689,27281,27282],{},"Get the standard type string name for an itemtype",[1711,27284,27285,27293],{},[1714,27286,27287],{},[1717,27288,27289,27291],{},[1720,27290,1722],{},[1720,27292,1725],{},[1727,27294,27295],{},[1717,27296,27297,27302],{},[1732,27298,27299],{},[1735,27300,27301],{},"itemtype",[1732,27303,27304],{},"The udSceneNodeType value",[1689,27306,27307,27309],{},[3673,27308,3675],{}," A string containing the standard name for the item in the udSceneNodeType enum. This is internal and should not be freed.",[1679,27311,1682,27313,27315],{"id":27312},"enum-uderror-udscene_deleteserverprojectstruct-udcontext-pcontext-const-char-porgid-const-char-pprojid-const-char-psceneid",[1684,27314,1686],{"href":1686}," udScene_DeleteServerProject(struct udContext *pContext, const char *pOrgID, const char *pProjID, const char *pSceneID)",[1689,27317,27318],{},"Deletes a project from the server",[1711,27320,27321,27329],{},[1714,27322,27323],{},[1717,27324,27325,27327],{},[1720,27326,1722],{},[1720,27328,1725],{},[1727,27330,27331,27340,27349,27358],{},[1717,27332,27333,27337],{},[1732,27334,27335],{},[1735,27336,5760],{},[1732,27338,27339],{},"The udContext to use to communicate with the server",[1717,27341,27342,27346],{},[1732,27343,27344],{},[1735,27345,24996],{},[1732,27347,27348],{},"The ID for the udCloud organisation that the scene belongs to",[1717,27350,27351,27355],{},[1732,27352,27353],{},[1735,27354,25006],{},[1732,27356,27357],{},"The ID for the udCloud project that the scene belongs to",[1717,27359,27360,27364],{},[1732,27361,27362],{},[1735,27363,25204],{},[1732,27365,27366],{},"The ID of the scene to delete",[1689,27368,27369,3676,27371,27373],{},[3673,27370,3675],{},[1684,27372,1686],{"href":1686}," result (udE_Success if it was deleted, other status codes depending on result)",[1679,27375,1682,27377,27379],{"id":27376},"enum-uderror-udscene_setlinksharestatusstruct-udcontext-pcontext-uint32_t-issharabletoanyonewiththelink-const-char-porgid-const-char-pprojid-const-char-psceneid",[1684,27378,1686],{"href":1686}," udScene_SetLinkShareStatus(struct udContext *pContext, uint32_t isSharableToAnyoneWithTheLink, const char *pOrgID, const char *pProjID, const char *pSceneID)",[1689,27381,27382],{},"Sets the share status of a project on the server",[1711,27384,27385,27393],{},[1714,27386,27387],{},[1717,27388,27389,27391],{},[1720,27390,1722],{},[1720,27392,1725],{},[1727,27394,27395,27403,27413,27421,27429],{},[1717,27396,27397,27401],{},[1732,27398,27399],{},[1735,27400,5760],{},[1732,27402,27339],{},[1717,27404,27405,27410],{},[1732,27406,27407],{},[1735,27408,27409],{},"isSharableToAnyoneWithTheLink",[1732,27411,27412],{},"Not 0 if the project should be able to be loaded by anyone with the link, 0 otherwise",[1717,27414,27415,27419],{},[1732,27416,27417],{},[1735,27418,24996],{},[1732,27420,24999],{},[1717,27422,27423,27427],{},[1732,27424,27425],{},[1735,27426,25006],{},[1732,27428,25009],{},[1717,27430,27431,27435],{},[1732,27432,27433],{},[1735,27434,25204],{},[1732,27436,27437],{},"The ID of the project to update the share status of",[1689,27439,27440,3676,27442,27444],{},[3673,27441,3675],{},[1684,27443,1686],{"href":1686}," result (udE_Success if it was updated, other status codes depending on result)",[1679,27446,1682,27448,27450],{"id":27447},"enum-uderror-udscene_getsessionidstruct-udscene-pscene-const-char-ppsessionid",[1684,27449,1686],{"href":1686}," udScene_GetSessionID(struct udScene *pScene, const char **ppSessionID)",[1689,27452,27453],{},"Get the session ID (for server projects).",[1693,27455,27456],{},[1689,27457,27458,25695],{},[1698,27459,1700],{},[1711,27461,27462,27470],{},[1714,27463,27464],{},[1717,27465,27466,27468],{},[1720,27467,1722],{},[1720,27469,1725],{},[1727,27471,27472,27480],{},[1717,27473,27474,27478],{},[1732,27475,27476],{},[1735,27477,25280],{},[1732,27479,25662],{},[1717,27481,27482,27487],{},[1732,27483,27484],{},[1735,27485,27486],{},"ppSessionID",[1732,27488,27489],{},"The pointer pointer to memory that will contain the session ID. The ownership still belongs to the pScene.",[1689,27491,27492,3676,27494,25679],{},[3673,27493,3675],{},[1684,27495,1686],{"href":1686},[1679,27497,1682,27499,27501],{"id":27498},"enum-uderror-udscene_queuemessagestruct-udscene-pscene-const-char-ptargetsessionid-const-char-pmessagetype-const-char-pmessagepayload",[1684,27500,1686],{"href":1686}," udScene_QueueMessage(struct udScene *pScene, const char *pTargetSessionID, const char *pMessageType, const char *pMessagePayload)",[1689,27503,27504],{},"Queues a message to be sent on next project update (for server projects).",[1711,27506,27507,27515],{},[1714,27508,27509],{},[1717,27510,27511,27513],{},[1720,27512,1722],{},[1720,27514,1725],{},[1727,27516,27517,27526,27536,27546],{},[1717,27518,27519,27523],{},[1732,27520,27521],{},[1735,27522,25280],{},[1732,27524,27525],{},"The pointer to the active udScene.",[1717,27527,27528,27533],{},[1732,27529,27530],{},[1735,27531,27532],{},"pTargetSessionID",[1732,27534,27535],{},"The session ID of the user who will receive this message. Passing in ‘nullptr’ to this parameter indicates all users (except the sender) will receive this message.",[1717,27537,27538,27543],{},[1732,27539,27540],{},[1735,27541,27542],{},"pMessageType",[1732,27544,27545],{},"pMessageType User defined message type.",[1717,27547,27548,27553],{},[1732,27549,27550],{},[1735,27551,27552],{},"pMessagePayload",[1732,27554,27555],{},"User defined payload.",[1689,27557,27558,3676,27560,27562],{},[3673,27559,3675],{},[1684,27561,1686],{"href":1686}," result (udE_Success if the message was successfully queued, other status codes depending on result)",[1679,27564,1682,27566,27568],{"id":27565},"enum-uderror-udscene_savethumbnailstruct-udscene-pscene-const-char-pimagebase64",[1684,27567,1686],{"href":1686}," udScene_SaveThumbnail(struct udScene *pScene, const char *pImageBase64)",[1689,27570,27571],{},"Saves a project thumbnail in base64 format to the server (udCloud only).",[1711,27573,27574,27582],{},[1714,27575,27576],{},[1717,27577,27578,27580],{},[1720,27579,1722],{},[1720,27581,1725],{},[1727,27583,27584,27593],{},[1717,27585,27586,27590],{},[1732,27587,27588],{},[1735,27589,25280],{},[1732,27591,27592],{},"The pointer to a valid udScene to save the thumbnail to.",[1717,27594,27595,27600],{},[1732,27596,27597],{},[1735,27598,27599],{},"pImageBase64",[1732,27601,27602],{},"The base64 encoded thumbnail.",[1689,27604,27605,3676,27607,27609],{},[3673,27606,3675],{},[1684,27608,1686],{"href":1686}," value based on the result of the save.",[1674,27611,1796],{"id":1795},[1679,27613,27615],{"id":27614},"struct-udsceneposition","struct udScenePosition",[1689,27617,27618],{},"This represents a position in 3D",[1693,27620,27621],{},[1689,27622,27623,27625],{},[1698,27624,1700],{},"\ncontains x,y,z and heading, pitch (generally of a camera) in the project CRS",[1711,27627,27628,27638],{},[1714,27629,27630],{},[1717,27631,27632,27634,27636],{},[1720,27633,1812],{},[1720,27635,1815],{},[1720,27637,1725],{},[1727,27639,27640,27653,27666,27680,27694,27708],{},[1717,27641,27642,27646,27650],{},[1732,27643,27644],{},[1735,27645,23042],{},[1732,27647,27648],{},[1735,27649,5100],{},[1732,27651,27652],{},"The x coordiante of the item.",[1717,27654,27655,27659,27663],{},[1732,27656,27657],{},[1735,27658,23057],{},[1732,27660,27661],{},[1735,27662,5100],{},[1732,27664,27665],{},"The y coordiante of the item.",[1717,27667,27668,27673,27677],{},[1732,27669,27670],{},[1735,27671,27672],{},"z",[1732,27674,27675],{},[1735,27676,5100],{},[1732,27678,27679],{},"The z coordiante of the item.",[1717,27681,27682,27687,27691],{},[1732,27683,27684],{},[1735,27685,27686],{},"heading",[1732,27688,27689],{},[1735,27690,5100],{},[1732,27692,27693],{},"The heading of the item.",[1717,27695,27696,27701,27705],{},[1732,27697,27698],{},[1735,27699,27700],{},"pitch",[1732,27702,27703],{},[1735,27704,5100],{},[1732,27706,27707],{},"The pitch of the item.",[1717,27709,27710,27715,27719],{},[1732,27711,27712],{},[1735,27713,27714],{},"roll",[1732,27716,27717],{},[1735,27718,5100],{},[1732,27720,27721],{},"The roll of the item.",[1679,27723,27725],{"id":27724},"struct-udscenenodeselected","struct udSceneNodeSelected",[1689,27727,27728],{},"This represents the selected scene node of a user",[1711,27730,27731,27741],{},[1714,27732,27733],{},[1717,27734,27735,27737,27739],{},[1720,27736,1812],{},[1720,27738,1815],{},[1720,27740,1725],{},[1727,27742,27743],{},[1717,27744,27745,27750,27754],{},[1732,27746,27747],{},[1735,27748,27749],{},"id[37]",[1732,27751,27752],{},[1735,27753,4243],{},[1732,27755,27756],{},"The uuid of the selected node.",[1679,27758,27760],{"id":27759},"struct-udscenemessage","struct udSceneMessage",[1689,27762,27763],{},"This represents the message sent to other users (or to us) in a scene during collaboration",[1711,27765,27766,27776],{},[1714,27767,27768],{},[1717,27769,27770,27772,27774],{},[1720,27771,1812],{},[1720,27773,1815],{},[1720,27775,1725],{},[1727,27777,27778,27791,27804,27817],{},[1717,27779,27780,27784,27788],{},[1732,27781,27782],{},[1735,27783,27542],{},[1732,27785,27786],{},[1735,27787,6652],{},[1732,27789,27790],{},"The type of the message.",[1717,27792,27793,27797,27801],{},[1732,27794,27795],{},[1735,27796,27552],{},[1732,27798,27799],{},[1735,27800,6652],{},[1732,27802,27803],{},"The payload of the message.",[1717,27805,27806,27810,27814],{},[1732,27807,27808],{},[1735,27809,27532],{},[1732,27811,27812],{},[1735,27813,6652],{},[1732,27815,27816],{},"The session ID of the message.",[1717,27818,27819,27824,27828],{},[1732,27820,27821],{},[1735,27822,27823],{},"pReceivedFromSessionID",[1732,27825,27826],{},[1735,27827,6652],{},[1732,27829,27830],{},"The session Id where it’s been received.",[1679,27832,27834],{"id":27833},"struct-udsceneuser","struct udSceneUser",[1689,27836,27837],{},"This represents the user info (used for collaboration)",[1711,27839,27840,27850],{},[1714,27841,27842],{},[1717,27843,27844,27846,27848],{},[1720,27845,1812],{},[1720,27847,1815],{},[1720,27849,1725],{},[1727,27851,27852,27866,27880,27893,27907,27921,27936,27950,27964,27978],{},[1717,27853,27854,27859,27863],{},[1732,27855,27856],{},[1735,27857,27858],{},"pDisplayName",[1732,27860,27861],{},[1735,27862,6652],{},[1732,27864,27865],{},"The name to display for this user.",[1717,27867,27868,27873,27877],{},[1732,27869,27870],{},[1735,27871,27872],{},"pSceneSessionID",[1732,27874,27875],{},[1735,27876,6652],{},[1732,27878,27879],{},"The current scene\u002Fsession ID this user is log in.",[1717,27881,27882,27886,27890],{},[1732,27883,27884],{},[1735,27885,6177],{},[1732,27887,27888],{},[1735,27889,5100],{},[1732,27891,27892],{},"The time its position was been last updated [server time].",[1717,27894,27895,27900,27904],{},[1732,27896,27897],{},[1735,27898,27899],{},"userFlags",[1732,27901,27902],{},[1735,27903,24690],{},[1732,27905,27906],{},"Flag to know if user is using XR.",[1717,27908,27909,27914,27918],{},[1732,27910,27911],{},[1735,27912,27913],{},"selectedNodesCount",[1732,27915,27916],{},[1735,27917,1831],{},[1732,27919,27920],{},"The number of node selected.",[1717,27922,27923,27928,27933],{},[1732,27924,27925],{},[1735,27926,27927],{},"selectedNodesList",[1732,27929,27930],{},[1735,27931,27932],{},"struct udSceneNodeSelected \\*",[1732,27934,27935],{},"The selected nodes.",[1717,27937,27938,27943,27947],{},[1732,27939,27940],{},[1735,27941,27942],{},"headCamera",[1732,27944,27945],{},[1735,27946,27615],{},[1732,27948,27949],{},"The position of the head or camera for the active viewer.",[1717,27951,27952,27957,27961],{},[1732,27953,27954],{},[1735,27955,27956],{},"handRight",[1732,27958,27959],{},[1735,27960,27615],{},[1732,27962,27963],{},"The position of the right hand for the active viewer if udSceneUserFlag_HasHands is set in userFlags.",[1717,27965,27966,27971,27975],{},[1732,27967,27968],{},[1735,27969,27970],{},"handLeft",[1732,27972,27973],{},[1735,27974,27615],{},[1732,27976,27977],{},"The position of the left hand for the active viewer if udSceneUserFlag_HasHands is set in userFlags.",[1717,27979,27980,27985,27989],{},[1732,27981,27982],{},[1735,27983,27984],{},"worldAnchorPoint",[1732,27986,27987],{},[1735,27988,5264],{},[1732,27990,27991],{},"The position of the world anchor point if udSceneUserFlag_HasAnchorAndScale is set; xyz are a position in world space and w is the scale factor.",[1679,27993,27995],{"id":27994},"struct-udscenenode","struct udSceneNode",[1689,27997,27998],{},"Stores the state of a node.",[1693,28000,28001],{},[1689,28002,28003,28005,28006,28008],{},[1698,28004,1708],{},"\nThis struct is exposed to avoid having a huge API of accessor functions but it should be treated as read only with the exception of ",[1735,28007,9401],{},". Making changes to the internal data will cause issues syncronising data",[1711,28010,28011,28021],{},[1714,28012,28013],{},[1717,28014,28015,28017,28019],{},[1720,28016,1812],{},[1720,28018,1815],{},[1720,28020,1725],{},[1727,28022,28023,28036,28050,28064,28077,28094,28107,28120,28134,28148,28162,28176,28188,28202,28216,28229,28243,28257,28271,28286,28299],{},[1717,28024,28025,28029,28033],{},[1732,28026,28027],{},[1735,28028,2373],{},[1732,28030,28031],{},[1735,28032,1846],{},[1732,28034,28035],{},"Non-zero if the node is visible and should be drawn in the scene.",[1717,28037,28038,28043,28047],{},[1732,28039,28040],{},[1735,28041,28042],{},"UUID[37]",[1732,28044,28045],{},[1735,28046,4243],{},[1732,28048,28049],{},"Unique identifier for this node “id”.",[1717,28051,28052,28057,28061],{},[1732,28053,28054],{},[1735,28055,28056],{},"lastUpdate",[1732,28058,28059],{},[1735,28060,5100],{},[1732,28062,28063],{},"The last time this node was updated in UTC.",[1717,28065,28066,28070,28074],{},[1732,28067,28068],{},[1735,28069,27301],{},[1732,28071,28072],{},[1735,28073,24458],{},[1732,28075,28076],{},"The type of this node, see udSceneNodeType for more information.",[1717,28078,28079,28084,28088],{},[1732,28080,28081],{},[1735,28082,28083],{},"itemtypeStr[8]",[1732,28085,28086],{},[1735,28087,4243],{},[1732,28089,28090,28091,28093],{},"The string representing the type of node. If its a known type during node creation ",[1735,28092,27301],{}," will be set to something other than udPNT_Custom.",[1717,28095,28096,28100,28104],{},[1732,28097,28098],{},[1735,28099,3862],{},[1732,28101,28102],{},[1735,28103,6652],{},[1732,28105,28106],{},"Human readable name of the item.",[1717,28108,28109,28113,28117],{},[1732,28110,28111],{},[1735,28112,25886],{},[1732,28114,28115],{},[1735,28116,6652],{},[1732,28118,28119],{},"The address or filename that the resource can be found.",[1717,28121,28122,28127,28131],{},[1732,28123,28124],{},[1735,28125,28126],{},"hasBoundingBox",[1732,28128,28129],{},[1735,28130,1831],{},[1732,28132,28133],{},"Set to not 0 if this nodes boundingBox item is filled out.",[1717,28135,28136,28141,28145],{},[1732,28137,28138],{},[1735,28139,28140],{},"boundingBox[6]",[1732,28142,28143],{},[1735,28144,5100],{},[1732,28146,28147],{},"The bounds of this model, ordered as [West, South, Floor, East, North, Ceiling].",[1717,28149,28150,28155,28159],{},[1732,28151,28152],{},[1735,28153,28154],{},"timeSpanBegin",[1732,28156,28157],{},[1735,28158,5100],{},[1732,28160,28161],{},"Unix Epoch in Seconds. This node is relevant after this timestamp. -1.0 if not assigned.",[1717,28163,28164,28169,28173],{},[1732,28165,28166],{},[1735,28167,28168],{},"timeSpanEnd",[1732,28170,28171],{},[1735,28172,5100],{},[1732,28174,28175],{},"Unix Epoch in Seconds. This node is relevant until this timestamp. -1.0 if not assigned.",[1717,28177,28178,28182,28186],{},[1732,28179,28180],{},[1735,28181,26440],{},[1732,28183,28184],{},[1735,28185,24276],{},[1732,28187],{},[1717,28189,28190,28195,28199],{},[1732,28191,28192],{},[1735,28193,28194],{},"geomtype",[1732,28196,28197],{},[1735,28198,24335],{},[1732,28200,28201],{},"Indicates what geometry can be found in this model. See the udSceneGeometryType documentation for more information.",[1717,28203,28204,28209,28213],{},[1732,28205,28206],{},[1735,28207,28208],{},"geomCount",[1732,28210,28211],{},[1735,28212,1846],{},[1732,28214,28215],{},"How many geometry items can be found on this model.",[1717,28217,28218,28222,28226],{},[1732,28219,28220],{},[1735,28221,26385],{},[1732,28223,28224],{},[1735,28225,20405],{},[1732,28227,28228],{},"The positions of the geometry of this node (NULL this this node doesn’t have points). The format is [X0,Y0,Z0,…Xn,Yn,Zn].",[1717,28230,28231,28235,28240],{},[1732,28232,28233],{},[1735,28234,25857],{},[1732,28236,28237],{},[1735,28238,28239],{},"struct udSceneNode \\*",[1732,28241,28242],{},"This is the parent item of the current node (NULL if root node).",[1717,28244,28245,28250,28254],{},[1732,28246,28247],{},[1735,28248,28249],{},"pNextSibling",[1732,28251,28252],{},[1735,28253,28239],{},[1732,28255,28256],{},"This is the next item in the scene (NULL if no further siblings).",[1717,28258,28259,28264,28268],{},[1732,28260,28261],{},[1735,28262,28263],{},"pFirstChild",[1732,28265,28266],{},[1735,28267,28239],{},[1732,28269,28270],{},"Some types (“folder”, “collection”, “polygon”…) have children nodes, NULL if there are no children.",[1717,28272,28273,28278,28283],{},[1732,28274,28275],{},[1735,28276,28277],{},"pUserData)",[1732,28279,28280],{},[1735,28281,28282],{},"void (\\*pUserDataCleanup)(struct udSceneNode \\*pNode, void \\*",[1732,28284,28285],{},"When a project node is deleted, this function is called first.",[1717,28287,28288,28292,28296],{},[1732,28289,28290],{},[1735,28291,9401],{},[1732,28293,28294],{},[1735,28295,5070],{},[1732,28297,28298],{},"This is application specific user data. The application should traverse the tree to release these before releasing the udScene.",[1717,28300,28301,28306,28311],{},[1732,28302,28303],{},[1735,28304,28305],{},"pInternalData",[1732,28307,28308],{},[1735,28309,28310],{},"struct udSceneNodeInternal \\*",[1732,28312,28313],{},"Internal udSDK specific state for this node.",[1679,28315,28317],{"id":28316},"struct-udsceneupdateinfo","struct udSceneUpdateInfo",[1689,28319,28320],{},"This represents the update info given\u002Freceived to\u002Fby udScene_Update",[1693,28322,28323],{},[1689,28324,28325,28327],{},[1698,28326,1708],{},"\nMemory is Freed on next call of udScene_Updte()",[1711,28329,28330,28340],{},[1714,28331,28332],{},[1717,28333,28334,28336,28338],{},[1720,28335,1812],{},[1720,28337,1815],{},[1720,28339,1725],{},[1727,28341,28342,28356,28370,28383,28396,28410,28422,28434,28446,28458,28473,28487,28502],{},[1717,28343,28344,28349,28353],{},[1732,28345,28346],{},[1735,28347,28348],{},"forceSync",[1732,28350,28351],{},[1735,28352,1831],{},[1732,28354,28355],{},"If this is non-zero the sync to the server will happen immediately and the update call will block.",[1717,28357,28358,28363,28367],{},[1732,28359,28360],{},[1735,28361,28362],{},"lastUpdatedTime",[1732,28364,28365],{},[1735,28366,5100],{},[1732,28368,28369],{},"The timestamp that the scene was last updated (local time).",[1717,28371,28372,28376,28380],{},[1732,28373,28374],{},[1735,28375,27899],{},[1732,28377,28378],{},[1735,28379,24690],{},[1732,28381,28382],{},"User flags to define the device and other properties.",[1717,28384,28385,28389,28393],{},[1732,28386,28387],{},[1735,28388,27913],{},[1732,28390,28391],{},[1735,28392,1831],{},[1732,28394,28395],{},"The length of pSelectedNodesList.",[1717,28397,28398,28403,28407],{},[1732,28399,28400],{},[1735,28401,28402],{},"pSelectedNodesList",[1732,28404,28405],{},[1735,28406,27932],{},[1732,28408,28409],{},"The list of selected nodes.",[1717,28411,28412,28416,28420],{},[1732,28413,28414],{},[1735,28415,27942],{},[1732,28417,28418],{},[1735,28419,27615],{},[1732,28421,27949],{},[1717,28423,28424,28428,28432],{},[1732,28425,28426],{},[1735,28427,27956],{},[1732,28429,28430],{},[1735,28431,27615],{},[1732,28433,27963],{},[1717,28435,28436,28440,28444],{},[1732,28437,28438],{},[1735,28439,27970],{},[1732,28441,28442],{},[1735,28443,27615],{},[1732,28445,27977],{},[1717,28447,28448,28452,28456],{},[1732,28449,28450],{},[1735,28451,27984],{},[1732,28453,28454],{},[1735,28455,5264],{},[1732,28457,27991],{},[1717,28459,28460,28465,28470],{},[1732,28461,28462],{},[1735,28463,28464],{},"pUserList",[1732,28466,28467],{},[1735,28468,28469],{},"struct udSceneUser \\*",[1732,28471,28472],{},"The list of other users in this scene.",[1717,28474,28475,28480,28484],{},[1732,28476,28477],{},[1735,28478,28479],{},"usersCount",[1732,28481,28482],{},[1735,28483,1831],{},[1732,28485,28486],{},"The number of users in the scene (and length of pUserList).",[1717,28488,28489,28494,28499],{},[1732,28490,28491],{},[1735,28492,28493],{},"pReceivedMessages",[1732,28495,28496],{},[1735,28497,28498],{},"struct udSceneMessage \\*",[1732,28500,28501],{},"The list of messages.",[1717,28503,28504,28509,28513],{},[1732,28505,28506],{},[1735,28507,28508],{},"receivedMessagesCount",[1732,28510,28511],{},[1735,28512,1831],{},[1732,28514,28515],{},"The length of pReceivedMessages.",{"title":2049,"searchDepth":2050,"depth":2050,"links":28517},[28518,28525,28620],{"id":2697,"depth":2050,"text":2698,"children":28519},[28520,28521,28522,28523,28524],{"id":24275,"depth":2055,"text":24276},{"id":24334,"depth":2055,"text":24335},{"id":24457,"depth":2055,"text":24458},{"id":24689,"depth":2055,"text":24690},{"id":24752,"depth":2055,"text":24753},{"id":1676,"depth":2050,"text":1677,"children":28526},[28527,28529,28531,28533,28535,28537,28539,28541,28543,28545,28547,28549,28551,28553,28555,28557,28559,28561,28563,28565,28567,28569,28571,28573,28575,28577,28579,28581,28583,28585,28587,28589,28591,28593,28595,28597,28599,28601,28603,28605,28607,28609,28610,28612,28614,28616,28618],{"id":24817,"depth":2055,"text":28528},"enum udError udScene_CreateInMemory(struct udContext *pContext, struct udScene **ppScene, const char *pName)",{"id":24877,"depth":2055,"text":28530},"enum udError udScene_CreateInFile(struct udContext *pContext, struct udScene **ppScene, const char *pName, const char *pFilename)",{"id":24942,"depth":2055,"text":28532},"enum udError udScene_CreateInServer(struct udContext *pContext, struct udScene **ppScene, const char *pName, const char *pOrgID, const char *pProjID)",{"id":25018,"depth":2055,"text":28534},"enum udError udScene_LoadFromMemory(struct udContext *pContext, struct udScene **ppScene, const char *pGeoJSON)",{"id":25077,"depth":2055,"text":28536},"enum udError udScene_LoadFromFile(struct udContext *pContext, struct udScene **ppScene, const char *pFilename)",{"id":25134,"depth":2055,"text":28538},"enum udError udScene_LoadFromServer(struct udContext *pContext, struct udScene **ppScene, const char *pOrgID, const char *pProjID, const char *pSceneID, udProgressCallback *pProgressCallback, void *pProgressUserData)",{"id":25235,"depth":2055,"text":28540},"enum udError udScene_MergeScenes(struct udContext *pContext, struct udScene *pScene, struct udScene *pSceneToMerge)",{"id":25303,"depth":2055,"text":28542},"enum udError udScene_Release(struct udScene **ppScene)",{"id":25347,"depth":2055,"text":28544},"enum udError udScene_Save(struct udScene *pScene)",{"id":25384,"depth":2055,"text":28546},"enum udError udScene_Update(struct udScene *pScene, struct udSceneUpdateInfo *pUpdateInfo)",{"id":25429,"depth":2055,"text":28548},"enum udError udScene_SaveToMemory(struct udContext *pContext, struct udScene *pScene, const char **ppMemory)",{"id":25492,"depth":2055,"text":28550},"enum udError udScene_SaveToServer(struct udContext *pContext, struct udScene *pScene, const char *pOrgID, const char *pProjID)",{"id":25561,"depth":2055,"text":28552},"enum udError udScene_SaveToFile(struct udContext *pContext, struct udScene *pScene, const char *pPath)",{"id":25621,"depth":2055,"text":28554},"enum udError udScene_GetSceneRoot(struct udScene *pScene, struct udSceneNode **ppRootNode)",{"id":25682,"depth":2055,"text":28556},"enum udError udScene_GetSceneID(struct udScene *pScene, const char **ppSceneID)",{"id":25734,"depth":2055,"text":28558},"enum udError udScene_HasUnsavedChanges(struct udScene *pScene)",{"id":25771,"depth":2055,"text":28560},"enum udError udScene_GetLoadSource(struct udScene *pScene, enum udSceneLoadSource *pSource)",{"id":25814,"depth":2055,"text":28562},"enum udError udSceneNode_Create(struct udScene *pScene, struct udSceneNode **ppNode, struct udSceneNode *pParent, const char *pType, const char *pName, const char *pURI, void *pUserData)",{"id":25911,"depth":2055,"text":28564},"enum udError udSceneNode_MoveChild(struct udScene *pScene, struct udSceneNode *pCurrentParent, struct udSceneNode *pNewParent, struct udSceneNode *pNode, struct udSceneNode *pInsertBeforeChild)",{"id":25986,"depth":2055,"text":28566},"enum udError udSceneNode_RemoveChild(struct udScene *pScene, struct udSceneNode *pParentNode, struct udSceneNode *pNode)",{"id":26048,"depth":2055,"text":28568},"enum udError udSceneNode_SetName(struct udScene *pScene, struct udSceneNode *pNode, const char *pNodeName)",{"id":26103,"depth":2055,"text":28570},"enum udError udSceneNode_SetVisibility(struct udSceneNode *pNode, int visibility)",{"id":26150,"depth":2055,"text":28572},"enum udError udSceneNode_SetURI(struct udScene *pScene, struct udSceneNode *pNode, const char *pNodeURI)",{"id":26204,"depth":2055,"text":28574},"enum udError udSceneNode_SetBoundingBox(struct udScene *pScene, struct udSceneNode *pNode, double boundingBox[6])",{"id":26259,"depth":2055,"text":28576},"enum udError udSceneNode_SetTimeSpan(struct udScene *pScene, struct udSceneNode *pNode, double start, double end)",{"id":26323,"depth":2055,"text":28578},"enum udError udSceneNode_SetGeometry(struct udScene *pScene, struct udSceneNode *pNode, enum udSceneGeometryType nodeType, int geometryCount, double *pCoordinates)",{"id":26398,"depth":2055,"text":28580},"enum udError udSceneNode_SetGeometryAltitudeType(struct udScene *pScene, struct udSceneNode *pSceneNode, enum udSceneAltitudeType altitudeType)",{"id":26452,"depth":2055,"text":28582},"enum udError udSceneNode_GetMetadataInt(struct udSceneNode *pNode, const char *pMetadataKey, int32_t *pInt, int32_t defaultValue)",{"id":26518,"depth":2055,"text":28584},"enum udError udSceneNode_SetMetadataInt(struct udSceneNode *pNode, const char *pMetadataKey, int32_t iValue)",{"id":26573,"depth":2055,"text":28586},"enum udError udSceneNode_GetMetadataUint(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t *pInt, uint32_t defaultValue)",{"id":26632,"depth":2055,"text":28588},"enum udError udSceneNode_SetMetadataUint(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t iValue)",{"id":26684,"depth":2055,"text":28590},"enum udError udSceneNode_GetMetadataInt64(struct udSceneNode *pNode, const char *pMetadataKey, int64_t *pInt64, int64_t defaultValue)",{"id":26746,"depth":2055,"text":28592},"enum udError udSceneNode_SetMetadataInt64(struct udSceneNode *pNode, const char *pMetadataKey, int64_t i64Value)",{"id":26798,"depth":2055,"text":28594},"enum udError udSceneNode_GetMetadataDouble(struct udSceneNode *pNode, const char *pMetadataKey, double *pDouble, double defaultValue)",{"id":26860,"depth":2055,"text":28596},"enum udError udSceneNode_SetMetadataDouble(struct udSceneNode *pNode, const char *pMetadataKey, double doubleValue)",{"id":26913,"depth":2055,"text":28598},"enum udError udSceneNode_GetMetadataBool(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t *pBool, uint32_t defaultValue)",{"id":26976,"depth":2055,"text":28600},"enum udError udSceneNode_SetMetadataBool(struct udSceneNode *pNode, const char *pMetadataKey, uint32_t boolValue)",{"id":27029,"depth":2055,"text":28602},"enum udError udSceneNode_GetMetadataString(struct udSceneNode *pNode, const char *pMetadataKey, const char **ppString, const char *pDefaultValue)",{"id":27093,"depth":2055,"text":28604},"enum udError udSceneNode_SetMetadataString(struct udSceneNode *pNode, const char *pMetadataKey, const char *pString)",{"id":27146,"depth":2055,"text":28606},"enum udError udSceneNode_SetMetadataNull(struct udSceneNode *pNode, const char *pMetadataKey)",{"id":27190,"depth":2055,"text":28608},"enum udError udSceneNode_GetMetadataObjectJSON(struct udSceneNode *pNode, const char *pMetadataKey, char *pBuffer, int bufferLen, int *pStrLen)",{"id":27278,"depth":2055,"text":27279},{"id":27312,"depth":2055,"text":28611},"enum udError udScene_DeleteServerProject(struct udContext *pContext, const char *pOrgID, const char *pProjID, const char *pSceneID)",{"id":27376,"depth":2055,"text":28613},"enum udError udScene_SetLinkShareStatus(struct udContext *pContext, uint32_t isSharableToAnyoneWithTheLink, const char *pOrgID, const char *pProjID, const char *pSceneID)",{"id":27447,"depth":2055,"text":28615},"enum udError udScene_GetSessionID(struct udScene *pScene, const char **ppSessionID)",{"id":27498,"depth":2055,"text":28617},"enum udError udScene_QueueMessage(struct udScene *pScene, const char *pTargetSessionID, const char *pMessageType, const char *pMessagePayload)",{"id":27565,"depth":2055,"text":28619},"enum udError udScene_SaveThumbnail(struct udScene *pScene, const char *pImageBase64)",{"id":1795,"depth":2050,"text":1796,"children":28621},[28622,28623,28624,28625,28626,28627],{"id":27614,"depth":2055,"text":27615},{"id":27724,"depth":2055,"text":27725},{"id":27759,"depth":2055,"text":27760},{"id":27833,"depth":2055,"text":27834},{"id":27994,"depth":2055,"text":27995},{"id":28316,"depth":2055,"text":28317},{},"\u002Fguide\u002Fudsdk\u002Fudscene",{"title":24241,"description":24249},"guide\u002Fudsdk\u002FudScene","Rcu7XSFJDuYmmKwHPUJTG1BN3WRa42UYr3BilljXj5o",{"id":28634,"title":28635,"body":28636,"date":7,"description":28874,"extension":2064,"meta":28875,"navigation":43,"path":28876,"seo":28877,"stem":28878,"__hash__":28879},"udsdkguide\u002Fguide\u002Fudsdk\u002FudServerAPI.md","udServerAPI",{"type":1667,"value":28637,"toc":28864},[28638,28641,28646,28648,28654,28657,28670,28727,28734,28742,28744,28754,28818,28824,28830,28833,28843],[1670,28639,28635],{"id":28640},"udserverapi",[1689,28642,4541,28643,28645],{},[3673,28644,28635],{}," module provides an interface to communicate with a Nuclideon udServer API directly in a simple fashion.",[1674,28647,1677],{"id":1676},[1679,28649,1682,28651,28653],{"id":28650},"enum-uderror-udserverapi_querystruct-udcontext-pcontext-const-char-papiaddress-const-char-pjson-const-char-ppresult",[1684,28652,1686],{"href":1686}," udServerAPI_Query(struct udContext *pContext, const char *pAPIAddress, const char *pJSON, const char **ppResult)",[1689,28655,28656],{},"Queries provided API on the specified Nuclideon udServer.",[1693,28658,28659],{},[1689,28660,28661,7150,28663,7154,28666,28669],{},[1698,28662,1700],{},[3673,28664,28665],{},"udServerAPI_ReleaseResult",[1735,28667,28668],{},"ppResult"," to destroy the data once it’s no longer needed.",[1711,28671,28672,28680],{},[1714,28673,28674],{},[1717,28675,28676,28678],{},[1720,28677,1722],{},[1720,28679,1725],{},[1727,28681,28682,28691,28708,28718],{},[1717,28683,28684,28688],{},[1732,28685,28686],{},[1735,28687,5760],{},[1732,28689,28690],{},"The context to execute the query with.",[1717,28692,28693,28698],{},[1732,28694,28695],{},[1735,28696,28697],{},"pAPIAddress",[1732,28699,28700,28701,24179,28704,28707],{},"The API address to query, this is the part of the address ",[1742,28702,28703],{},"after",[1735,28705,28706],{},"\u002Fapi\u002F",". The rest of the address is constructed from the context provided.",[1717,28709,28710,28715],{},[1732,28711,28712],{},[1735,28713,28714],{},"pJSON",[1732,28716,28717],{},"The JSON text to POST to the API address.",[1717,28719,28720,28724],{},[1732,28721,28722],{},[1735,28723,28668],{},[1732,28725,28726],{},"A pointer to a location in which the result data is to be stored.",[1689,28728,28729,3676,28731,28733],{},[3673,28730,3675],{},[1684,28732,1686],{"href":1686}," value based on the result of the API query.",[1679,28735,1682,28737,28739,28740,25141],{"id":28736},"enum-uderror-udserverapi_querywithprogressstruct-udcontext-pcontext-const-char-papiaddress-const-char-pjson-const-char-ppresult-udprogresscallback-pprogresscallback-void-pprogressuserdata",[1684,28738,1686],{"href":1686}," udServerAPI_QueryWithProgress(struct udContext *pContext, const char *pAPIAddress, const char *pJSON, const char **ppResult, ",[1684,28741,25140],{"href":1686},[1689,28743,28656],{},[1693,28745,28746],{},[1689,28747,28748,7150,28750,7154,28752,28669],{},[1698,28749,1700],{},[3673,28751,28665],{},[1735,28753,28668],{},[1711,28755,28756,28764],{},[1714,28757,28758],{},[1717,28759,28760,28762],{},[1720,28761,1722],{},[1720,28763,1725],{},[1727,28765,28766,28774,28786,28794,28802,28810],{},[1717,28767,28768,28772],{},[1732,28769,28770],{},[1735,28771,5760],{},[1732,28773,28690],{},[1717,28775,28776,28780],{},[1732,28777,28778],{},[1735,28779,28697],{},[1732,28781,28700,28782,24179,28784,28707],{},[1742,28783,28703],{},[1735,28785,28706],{},[1717,28787,28788,28792],{},[1732,28789,28790],{},[1735,28791,28714],{},[1732,28793,28717],{},[1717,28795,28796,28800],{},[1732,28797,28798],{},[1735,28799,28668],{},[1732,28801,28726],{},[1717,28803,28804,28808],{},[1732,28805,28806],{},[1735,28807,25214],{},[1732,28809,25217],{},[1717,28811,28812,28816],{},[1732,28813,28814],{},[1735,28815,11856],{},[1732,28817,25226],{},[1689,28819,28820,3676,28822,28733],{},[3673,28821,3675],{},[1684,28823,1686],{"href":1686},[1679,28825,1682,28827,28829],{"id":28826},"enum-uderror-udserverapi_releaseresultconst-char-ppresult",[1684,28828,1686],{"href":1686}," udServerAPI_ReleaseResult(const char **ppResult)",[1689,28831,28832],{},"Destroys the result that was allocated.",[1693,28834,28835],{},[1689,28836,28837,7504,28839,7507,28841,2503],{},[1698,28838,1700],{},[1735,28840,28668],{},[1735,28842,6778],{},[1711,28844,28845,28853],{},[1714,28846,28847],{},[1717,28848,28849,28851],{},[1720,28850,1722],{},[1720,28852,1725],{},[1727,28854,28855],{},[1717,28856,28857,28861],{},[1732,28858,28859],{},[1735,28860,28668],{},[1732,28862,28863],{},"A pointer to a location in which the result data is stored.",{"title":2049,"searchDepth":2050,"depth":2050,"links":28865},[28866],{"id":1676,"depth":2050,"text":1677,"children":28867},[28868,28870,28872],{"id":28650,"depth":2055,"text":28869},"enum udError udServerAPI_Query(struct udContext *pContext, const char *pAPIAddress, const char *pJSON, const char **ppResult)",{"id":28736,"depth":2055,"text":28871},"enum udError udServerAPI_QueryWithProgress(struct udContext *pContext, const char *pAPIAddress, const char *pJSON, const char **ppResult, udProgressCallback *pProgressCallback, void *pProgressUserData)",{"id":28826,"depth":2055,"text":28873},"enum udError udServerAPI_ReleaseResult(const char **ppResult)","The udServerAPI module provides an interface to communicate with a Nuclideon udServer API directly in a simple fashion.",{},"\u002Fguide\u002Fudsdk\u002Fudserverapi",{"title":28635,"description":28874},"guide\u002Fudsdk\u002FudServerAPI","yUn-eVQR0IFXdkIUgnQfAczTCRB4Ikz0DEikgISyxEU",{"id":1664,"title":1665,"body":28881,"date":7,"description":2049,"extension":2064,"meta":29187,"navigation":43,"path":2066,"seo":29188,"stem":2068,"__hash__":2069},{"type":1667,"value":28882,"toc":29177},[28883,28885,28887,28891,28893,28899,28905,28927,28931,28933,28937,28939,28945,28965,28967,28969,28971],[1670,28884,1665],{"id":1672},[1674,28886,1677],{"id":1676},[1679,28888,1682,28889,1687],{"id":1681},[1684,28890,1686],{"href":1686},[1689,28892,1691],{},[1693,28894,28895],{},[1689,28896,28897,1701],{},[1698,28898,1700],{},[1693,28900,28901],{},[1689,28902,28903,1709],{},[1698,28904,1708],{},[1711,28906,28907,28915],{},[1714,28908,28909],{},[1717,28910,28911,28913],{},[1720,28912,1722],{},[1720,28914,1725],{},[1727,28916,28917],{},[1717,28918,28919,28923],{},[1732,28920,28921],{},[1735,28922,1737],{},[1732,28924,1740,28925,1745],{},[1742,28926,1744],{},[1679,28928,1682,28929,1751],{"id":1748},[1684,28930,1686],{"href":1686},[1689,28932,1754],{},[1679,28934,1682,28935,1760],{"id":1757},[1684,28936,1686],{"href":1686},[1689,28938,1763],{},[1693,28940,28941],{},[1689,28942,28943,1770],{},[1698,28944,1700],{},[1711,28946,28947,28955],{},[1714,28948,28949],{},[1717,28950,28951,28953],{},[1720,28952,1722],{},[1720,28954,1725],{},[1727,28956,28957],{},[1717,28958,28959,28963],{},[1732,28960,28961],{},[1735,28962,1789],{},[1732,28964,1792],{},[1674,28966,1796],{"id":1795},[1679,28968,1800],{"id":1799},[1689,28970,1803],{},[1711,28972,28973,28983],{},[1714,28974,28975],{},[1717,28976,28977,28979,28981],{},[1720,28978,1812],{},[1720,28980,1815],{},[1720,28982,1725],{},[1727,28984,28985,28997,29009,29021,29033,29045,29057,29069,29081,29093,29105,29117,29129,29141,29153,29165],{},[1717,28986,28987,28991,28995],{},[1732,28988,28989],{},[1735,28990,1826],{},[1732,28992,28993],{},[1735,28994,1831],{},[1732,28996,1834],{},[1717,28998,28999,29003,29007],{},[1732,29000,29001],{},[1735,29002,1841],{},[1732,29004,29005],{},[1735,29006,1846],{},[1732,29008,1849],{},[1717,29010,29011,29015,29019],{},[1732,29012,29013],{},[1735,29014,1856],{},[1732,29016,29017],{},[1735,29018,1861],{},[1732,29020,1864],{},[1717,29022,29023,29027,29031],{},[1732,29024,29025],{},[1735,29026,1871],{},[1732,29028,29029],{},[1735,29030,1846],{},[1732,29032,1878],{},[1717,29034,29035,29039,29043],{},[1732,29036,29037],{},[1735,29038,1885],{},[1732,29040,29041],{},[1735,29042,1846],{},[1732,29044,1892],{},[1717,29046,29047,29051,29055],{},[1732,29048,29049],{},[1735,29050,1899],{},[1732,29052,29053],{},[1735,29054,1846],{},[1732,29056,1906],{},[1717,29058,29059,29063,29067],{},[1732,29060,29061],{},[1735,29062,1913],{},[1732,29064,29065],{},[1735,29066,1846],{},[1732,29068,1920],{},[1717,29070,29071,29075,29079],{},[1732,29072,29073],{},[1735,29074,1927],{},[1732,29076,29077],{},[1735,29078,1932],{},[1732,29080,1935],{},[1717,29082,29083,29087,29091],{},[1732,29084,29085],{},[1735,29086,1942],{},[1732,29088,29089],{},[1735,29090,1932],{},[1732,29092,1949],{},[1717,29094,29095,29099,29103],{},[1732,29096,29097],{},[1735,29098,1956],{},[1732,29100,29101],{},[1735,29102,1932],{},[1732,29104,1963],{},[1717,29106,29107,29111,29115],{},[1732,29108,29109],{},[1735,29110,1970],{},[1732,29112,29113],{},[1735,29114,1846],{},[1732,29116,1977],{},[1717,29118,29119,29123,29127],{},[1732,29120,29121],{},[1735,29122,1984],{},[1732,29124,29125],{},[1735,29126,1846],{},[1732,29128,1991],{},[1717,29130,29131,29135,29139],{},[1732,29132,29133],{},[1735,29134,1998],{},[1732,29136,29137],{},[1735,29138,1846],{},[1732,29140,2005],{},[1717,29142,29143,29147,29151],{},[1732,29144,29145],{},[1735,29146,2012],{},[1732,29148,29149],{},[1735,29150,1846],{},[1732,29152,2019],{},[1717,29154,29155,29159,29163],{},[1732,29156,29157],{},[1735,29158,2026],{},[1732,29160,29161],{},[1735,29162,1846],{},[1732,29164,2033],{},[1717,29166,29167,29171,29175],{},[1732,29168,29169],{},[1735,29170,2040],{},[1732,29172,29173],{},[1735,29174,1846],{},[1732,29176,2047],{},{"title":2049,"searchDepth":2050,"depth":2050,"links":29178},[29179,29184],{"id":1676,"depth":2050,"text":1677,"children":29180},[29181,29182,29183],{"id":1681,"depth":2055,"text":2056},{"id":1748,"depth":2055,"text":2058},{"id":1757,"depth":2055,"text":2060},{"id":1795,"depth":2050,"text":1796,"children":29185},[29186],{"id":1799,"depth":2055,"text":1800},{},{"title":1665,"description":2049},{"id":29190,"title":29191,"body":29192,"date":7,"description":29497,"extension":2064,"meta":29498,"navigation":43,"path":29499,"seo":29500,"stem":29501,"__hash__":29502},"udsdkguide\u002Fguide\u002Fudsdk\u002FudTriangleVoxelizer.md","udTriangleVoxelizer",{"type":1667,"value":29193,"toc":29485},[29194,29197,29202,29204,29210,29213,29225,29257,29264,29270,29276,29286,29307,29314,29320,29323,29330,29337,29389,29396,29402,29405,29412,29419,29478],[1670,29195,29191],{"id":29196},"udtrianglevoxelizer",[1689,29198,4541,29199,29201],{},[3673,29200,29191],{}," object provides an interface to convert triangles to voxels to be added to a convert job.",[1674,29203,1677],{"id":1676},[1679,29205,1682,29207,29209],{"id":29206},"enum-uderror-udtrianglevoxelizer_createstruct-udtrianglevoxelizer-ppvoxelizer-double-gridres",[1684,29208,1686],{"href":1686}," udTriangleVoxelizer_Create(struct udTriangleVoxelizer **ppVoxelizer, double gridRes)",[1689,29211,29212],{},"Creates a udTriangleVoxelizer object at the specified grid resolution.",[1693,29214,29215],{},[1689,29216,29217,7150,29219,7154,29222,7158],{},[1698,29218,1700],{},[3673,29220,29221],{},"udTriangleVoxelizer_Destroy",[1735,29223,29224],{},"ppTriRaster",[1711,29226,29227,29235],{},[1714,29228,29229],{},[1717,29230,29231,29233],{},[1720,29232,1722],{},[1720,29234,1725],{},[1727,29236,29237,29247],{},[1717,29238,29239,29244],{},[1732,29240,29241],{},[1735,29242,29243],{},"ppVoxelizer",[1732,29245,29246],{},"A pointer to a location in which the new udTriangleVoxelizer object is stored.",[1717,29248,29249,29254],{},[1732,29250,29251],{},[1735,29252,29253],{},"gridRes",[1732,29255,29256],{},"The intended grid resolution of the convert job.",[1689,29258,29259,3676,29261,29263],{},[3673,29260,3675],{},[1684,29262,1686],{"href":1686}," value based on the result of the triangle voxelizer creation.",[1679,29265,1682,29267,29269],{"id":29266},"enum-uderror-udtrianglevoxelizer_destroystruct-udtrianglevoxelizer-ppvoxelizer",[1684,29268,1686],{"href":1686}," udTriangleVoxelizer_Destroy(struct udTriangleVoxelizer **ppVoxelizer)",[1689,29271,29272,29273,2503],{},"Destroys a udTriangleVoxelizer object that was created using ",[3673,29274,29275],{},"udTriangleVoxelizer_Create",[1693,29277,29278],{},[1689,29279,29280,7504,29282,7507,29284,2503],{},[1698,29281,1700],{},[1735,29283,29224],{},[1735,29285,6778],{},[1711,29287,29288,29296],{},[1714,29289,29290],{},[1717,29291,29292,29294],{},[1720,29293,1722],{},[1720,29295,1725],{},[1727,29297,29298],{},[1717,29299,29300,29304],{},[1732,29301,29302],{},[1735,29303,29243],{},[1732,29305,29306],{},"A pointer to a udTriangleVoxelizer object which is to be destroyed.",[1689,29308,29309,3676,29311,29313],{},[3673,29310,3675],{},[1684,29312,1686],{"href":1686}," value based on the result of the object destruction.",[1679,29315,1682,29317,29319],{"id":29316},"enum-uderror-udtrianglevoxelizer_settrianglestruct-udtrianglevoxelizer-pvoxelizer-const-double-pv0-const-double-pv1-const-double-pv2",[1684,29318,1686],{"href":1686}," udTriangleVoxelizer_SetTriangle(struct udTriangleVoxelizer *pVoxelizer, const double *pV0, const double *pV1, const double *pV2)",[1689,29321,29322],{},"Set the vertices of the triangle, this primes a new triangle.",[1693,29324,29325],{},[1689,29326,29327,29329],{},[1698,29328,1700],{},"\nTriangle will be treated as a line if v1 == v2 (v2 is degenerate)",[1693,29331,29332],{},[1689,29333,29334,29336],{},[1698,29335,1708],{},"\nThis will overwrite any existing unread points from a previous triangle",[1711,29338,29339,29347],{},[1714,29340,29341],{},[1717,29342,29343,29345],{},[1720,29344,1722],{},[1720,29346,1725],{},[1727,29348,29349,29359,29369,29379],{},[1717,29350,29351,29356],{},[1732,29352,29353],{},[1735,29354,29355],{},"pVoxelizer",[1732,29357,29358],{},"The voxelizer to be used to set the triangle.",[1717,29360,29361,29366],{},[1732,29362,29363],{},[1735,29364,29365],{},"pV0",[1732,29367,29368],{},"The first vertex in the triangle.",[1717,29370,29371,29376],{},[1732,29372,29373],{},[1735,29374,29375],{},"pV1",[1732,29377,29378],{},"The second vertex in the triangle.",[1717,29380,29381,29386],{},[1732,29382,29383],{},[1735,29384,29385],{},"pV2",[1732,29387,29388],{},"The third vertex in the triangle.",[1689,29390,29391,3676,29393,29395],{},[3673,29392,3675],{},[1684,29394,1686],{"href":1686}," value based on the result of setting the triangle.",[1679,29397,1682,29399,29401],{"id":29398},"enum-uderror-udtrianglevoxelizer_getpointsstruct-udtrianglevoxelizer-pvoxelizer-double-pppositions-double-ppbarycentricweights-uint32_t-ppointcount-uint32_t-maxpoints",[1684,29400,1686],{"href":1686}," udTriangleVoxelizer_GetPoints(struct udTriangleVoxelizer *pVoxelizer, double **ppPositions, double **ppBarycentricWeights, uint32_t *pPointCount, uint32_t maxPoints)",[1689,29403,29404],{},"Get the voxelized points from the current triangle.",[1693,29406,29407],{},[1689,29408,29409,29411],{},[1698,29410,1700],{},"\nReturns a portion of voxelized points from current triangle, call repeatedly until *pPointCount is zero meaning the triangle is fully voxelized.",[1693,29413,29414],{},[1689,29415,29416,29418],{},[1698,29417,1700],{},"\nThe udTriangleVoxelizer object owns the arrays returned via ppPositions and ppBarycentricWeights.",[1711,29420,29421,29429],{},[1714,29422,29423],{},[1717,29424,29425,29427],{},[1720,29426,1722],{},[1720,29428,1725],{},[1727,29430,29431,29440,29450,29460,29469],{},[1717,29432,29433,29437],{},[1732,29434,29435],{},[1735,29436,29355],{},[1732,29438,29439],{},"The voxelizer to be used to get the points.",[1717,29441,29442,29447],{},[1732,29443,29444],{},[1735,29445,29446],{},"ppPositions",[1732,29448,29449],{},"A pointer to be populated with an array of positions.",[1717,29451,29452,29457],{},[1732,29453,29454],{},[1735,29455,29456],{},"ppBarycentricWeights",[1732,29458,29459],{},"A pointer to be populated with an array of Barycentric weights.",[1717,29461,29462,29466],{},[1732,29463,29464],{},[1735,29465,10757],{},[1732,29467,29468],{},"A pointer to be populated with the number of poisitions and weights.",[1717,29470,29471,29475],{},[1732,29472,29473],{},[1735,29474,20004],{},[1732,29476,29477],{},"The maximum number of points to be returned.",[1689,29479,29480,3676,29482,29484],{},[3673,29481,3675],{},[1684,29483,1686],{"href":1686}," value based on the result of getting the points.",{"title":2049,"searchDepth":2050,"depth":2050,"links":29486},[29487],{"id":1676,"depth":2050,"text":1677,"children":29488},[29489,29491,29493,29495],{"id":29206,"depth":2055,"text":29490},"enum udError udTriangleVoxelizer_Create(struct udTriangleVoxelizer **ppVoxelizer, double gridRes)",{"id":29266,"depth":2055,"text":29492},"enum udError udTriangleVoxelizer_Destroy(struct udTriangleVoxelizer **ppVoxelizer)",{"id":29316,"depth":2055,"text":29494},"enum udError udTriangleVoxelizer_SetTriangle(struct udTriangleVoxelizer *pVoxelizer, const double *pV0, const double *pV1, const double *pV2)",{"id":29398,"depth":2055,"text":29496},"enum udError udTriangleVoxelizer_GetPoints(struct udTriangleVoxelizer *pVoxelizer, double **ppPositions, double **ppBarycentricWeights, uint32_t *pPointCount, uint32_t maxPoints)","The udTriangleVoxelizer object provides an interface to convert triangles to voxels to be added to a convert job.",{},"\u002Fguide\u002Fudsdk\u002Fudtrianglevoxelizer",{"title":29191,"description":29497},"guide\u002Fudsdk\u002FudTriangleVoxelizer","EAHlNXsZSNzZqIZb6qac_1DQNpqP3pgGS0n_p-UFgbY",{"id":29504,"title":29505,"body":29506,"date":7,"description":29513,"extension":2064,"meta":29580,"navigation":43,"path":29581,"seo":29582,"stem":29583,"__hash__":29584},"udsdkguide\u002Fguide\u002Fudsdk\u002FudUtil.md","udUtil",{"type":1667,"value":29507,"toc":29574},[29508,29511,29514,29516,29522,29525,29567],[1670,29509,29505],{"id":29510},"udutil",[1689,29512,29513],{},"Helper functions for diverse use cases",[1674,29515,1677],{"id":1676},[1679,29517,1682,29519,29521],{"id":29518},"enum-uderror-udutil_e57extractimagesconst-char-pfilename-const-char-pfoldername-const-char-ppmetadata",[1684,29520,1686],{"href":1686}," udUtil_E57ExtractImages(const char *pFileName, const char *pFolderName, const char **ppMetaData)",[1689,29523,29524],{},"Extract Images from an e57 file",[1711,29526,29527,29535],{},[1714,29528,29529],{},[1717,29530,29531,29533],{},[1720,29532,1722],{},[1720,29534,1725],{},[1727,29536,29537,29547,29557],{},[1717,29538,29539,29544],{},[1732,29540,29541],{},[1735,29542,29543],{},"pFileName",[1732,29545,29546],{},"The e57 filename",[1717,29548,29549,29554],{},[1732,29550,29551],{},[1735,29552,29553],{},"pFolderName",[1732,29555,29556],{},"The folder to extract the images into",[1717,29558,29559,29564],{},[1732,29560,29561],{},[1735,29562,29563],{},"ppMetaData",[1732,29565,29566],{},"Optional char* filled withmetadata from exported images (paths, position, rotation, shape) as JSON",[1689,29568,29569,3676,29571,29573],{},[3673,29570,3675],{},[1684,29572,1686],{"href":1686}," value based on the result of the extraction",{"title":2049,"searchDepth":2050,"depth":2050,"links":29575},[29576],{"id":1676,"depth":2050,"text":1677,"children":29577},[29578],{"id":29518,"depth":2055,"text":29579},"enum udError udUtil_E57ExtractImages(const char *pFileName, const char *pFolderName, const char **ppMetaData)",{},"\u002Fguide\u002Fudsdk\u002Fudutil",{"title":29505,"description":29513},"guide\u002Fudsdk\u002FudUtil","tyTfHXrU2LQC2fbXf8qq2OOViHj3u5b3PoruiDsnSmc",{"id":29586,"title":29587,"body":29588,"date":7,"description":29737,"extension":2064,"meta":29738,"navigation":43,"path":29739,"seo":29740,"stem":29741,"__hash__":29742},"udsdkguide\u002Fguide\u002Fudsdk\u002FudVersion.md","udVersion",{"type":1667,"value":29589,"toc":29723},[29590,29593,29598,29600,29604,29607,29611,29614,29618,29621,29623,29629,29632,29654,29661,29663,29667,29670],[1670,29591,29587],{"id":29592},"udversion",[1689,29594,4541,29595,29597],{},[3673,29596,29587],{}," object provides an interface to query the version of the loaded udSDK library.",[1674,29599,11050],{"id":11049},[1679,29601,29603],{"id":29602},"udsdk_major_version","UDSDK_MAJOR_VERSION",[1689,29605,29606],{},"The major version part of the library version.",[1679,29608,29610],{"id":29609},"udsdk_minor_version","UDSDK_MINOR_VERSION",[1689,29612,29613],{},"The minor version part of the library version.",[1679,29615,29617],{"id":29616},"udsdk_patch_version","UDSDK_PATCH_VERSION",[1689,29619,29620],{},"The patch version part of the library version.",[1674,29622,1677],{"id":1676},[1679,29624,1682,29626,29628],{"id":29625},"enum-uderror-udversion_getversionstruct-udversion-pversion",[1684,29627,1686],{"href":1686}," udVersion_GetVersion(struct udVersion *pVersion)",[1689,29630,29631],{},"Populates the provided structure with the version information for the loaded udSDK library.",[1711,29633,29634,29642],{},[1714,29635,29636],{},[1717,29637,29638,29640],{},[1720,29639,1722],{},[1720,29641,1725],{},[1727,29643,29644],{},[1717,29645,29646,29651],{},[1732,29647,29648],{},[1735,29649,29650],{},"pVersion",[1732,29652,29653],{},"The version structure which will be populated with the version information.",[1689,29655,29656,3676,29658,29660],{},[3673,29657,3675],{},[1684,29659,1686],{"href":1686}," value based on the result of getting the version information.",[1674,29662,1796],{"id":1795},[1679,29664,29666],{"id":29665},"struct-udversion","struct udVersion",[1689,29668,29669],{},"Stores the version information for the loaded udSDK library.",[1711,29671,29672,29682],{},[1714,29673,29674],{},[1717,29675,29676,29678,29680],{},[1720,29677,1812],{},[1720,29679,1815],{},[1720,29681,1725],{},[1727,29683,29684,29697,29710],{},[1717,29685,29686,29691,29695],{},[1732,29687,29688],{},[1735,29689,29690],{},"major",[1732,29692,29693],{},[1735,29694,4301],{},[1732,29696,29606],{},[1717,29698,29699,29704,29708],{},[1732,29700,29701],{},[1735,29702,29703],{},"minor",[1732,29705,29706],{},[1735,29707,4301],{},[1732,29709,29613],{},[1717,29711,29712,29717,29721],{},[1732,29713,29714],{},[1735,29715,29716],{},"patch",[1732,29718,29719],{},[1735,29720,4301],{},[1732,29722,29620],{},{"title":2049,"searchDepth":2050,"depth":2050,"links":29724},[29725,29730,29734],{"id":11049,"depth":2050,"text":11050,"children":29726},[29727,29728,29729],{"id":29602,"depth":2055,"text":29603},{"id":29609,"depth":2055,"text":29610},{"id":29616,"depth":2055,"text":29617},{"id":1676,"depth":2050,"text":1677,"children":29731},[29732],{"id":29625,"depth":2055,"text":29733},"enum udError udVersion_GetVersion(struct udVersion *pVersion)",{"id":1795,"depth":2050,"text":1796,"children":29735},[29736],{"id":29665,"depth":2055,"text":29666},"The udVersion object provides an interface to query the version of the loaded udSDK library.",{},"\u002Fguide\u002Fudsdk\u002Fudversion",{"title":29587,"description":29737},"guide\u002Fudsdk\u002FudVersion","-y_88V-hfbPJ-9G-CUCxfLkemM5KGnuILYqQiIZijWA",{"id":29744,"title":29745,"body":29746,"date":7,"description":30216,"extension":2064,"meta":30217,"navigation":43,"path":30218,"seo":30219,"stem":30220,"__hash__":30221},"udsdkguide\u002Fguide\u002Fudsdk\u002FudWeb.md","udWeb",{"type":1667,"value":29747,"toc":30200},[29748,29751,29760,29762,29766,29769,29773,29815,29817,29823,29829,29842,29904,29911,29917,29922,29983,29989,29995,30004,30029,30036,30038,30042,30045,30060],[1670,29749,29745],{"id":29750},"udweb",[1689,29752,29753,29754,29756,29757,29759],{},"This is an optional helper module to assist with doing web requests. Internally it uses libcURL with the global settings (proxy and certificates information) from ",[1735,29755,6714],{},". As this is not a core module, it does not accept a ",[1735,29758,7024],{}," and can be used without having a udServer available.",[1674,29761,2698],{"id":2697},[1679,29763,29765],{"id":29764},"enum-udwebmethod","enum udWebMethod",[1689,29767,29768],{},"These are the support HTTP method types in udWeb",[1689,29770,29771],{},[1742,29772,2707],{},[1711,29774,29775,29783],{},[1714,29776,29777],{},[1717,29778,29779,29781],{},[1720,29780,2716],{},[1720,29782,1725],{},[1727,29784,29785,29795,29805],{},[1717,29786,29787,29792],{},[1732,29788,29789],{},[1735,29790,29791],{},"udWM_HEAD",[1732,29793,29794],{},"Performs a HEAD request.",[1717,29796,29797,29802],{},[1732,29798,29799],{},[1735,29800,29801],{},"udWM_GET",[1732,29803,29804],{},"Performs a GET request.",[1717,29806,29807,29812],{},[1732,29808,29809],{},[1735,29810,29811],{},"udWM_POST",[1732,29813,29814],{},"Performs a POST request.",[1674,29816,1677],{"id":1676},[1679,29818,1682,29820,29822],{"id":29819},"enum-uderror-udweb_requestconst-char-purl-const-char-ppresponse-uint64_t-presponselength-int-phttpresponsecode",[1684,29821,1686],{"href":1686}," udWeb_Request(const char *pURL, const char **ppResponse, uint64_t *pResponseLength, int *pHTTPResponseCode)",[1689,29824,29825,29826,2503],{},"This sends a GET request to a given URL, the response (if any) is written to ",[1735,29827,29828],{},"ppResponse",[1693,29830,29831],{},[1689,29832,29833,29835,29836,29839,29840,2503],{},[1698,29834,1700],{},"\nThis function internally just calls ",[1735,29837,29838],{},"udWeb_RequestAdv"," with the option members being zeroed, except for the method which is set to ",[1735,29841,29801],{},[1711,29843,29844,29852],{},[1714,29845,29846],{},[1717,29847,29848,29850],{},[1720,29849,1722],{},[1720,29851,1725],{},[1727,29853,29854,29863,29876,29888],{},[1717,29855,29856,29860],{},[1732,29857,29858],{},[1735,29859,7452],{},[1732,29861,29862],{},"The URL to request.",[1717,29864,29865,29869],{},[1732,29866,29867],{},[1735,29868,29828],{},[1732,29870,29871,29872,29875],{},"This will be modified with a pointer to internal udSDK memory with the contents of the request. You must call ",[1735,29873,29874],{},"udWeb_ReleaseResponse"," to free this memory.",[1717,29877,29878,29883],{},[1732,29879,29880],{},[1735,29881,29882],{},"pResponseLength",[1732,29884,29885,29886,2503],{},"If non-null, the pointer’s memory will be set to the length of ",[1735,29887,29828],{},[1717,29889,29890,29895],{},[1732,29891,29892],{},[1735,29893,29894],{},"pHTTPResponseCode",[1732,29896,29897,29898,29903],{},"If non-null this will be set to the HTTP status code. See https :\u002F\u002F",[1684,29899,29902],{"href":29900,"rel":29901},"http:\u002F\u002Fwww.ietf.org\u002Fassignments\u002Fhttp-status-codes\u002Fhttp-status-codes.xml",[2676],"www.ietf.org\u002Fassignments\u002Fhttp-status-codes\u002Fhttp-status-codes.xml"," for status codes.",[1689,29905,29906,3676,29908,29910],{},[3673,29907,3675],{},[1684,29909,1686],{"href":1686}," value based on the result of the HTTP request.",[1679,29912,1682,29914,29916],{"id":29913},"enum-uderror-udweb_requestadvconst-char-purl-struct-udweboptions-options-const-char-ppresponse-uint64_t-presponselength-int-phttpresponsecode",[1684,29915,1686],{"href":1686}," udWeb_RequestAdv(const char *pURL, struct udWebOptions options, const char **ppResponse, uint64_t *pResponseLength, int *pHTTPResponseCode)",[1689,29918,29919,29920,2503],{},"This sends a request to a given URL using the specified options, the response (if any) is written to ",[1735,29921,29828],{},[1711,29923,29924,29932],{},[1714,29925,29926],{},[1717,29927,29928,29930],{},[1720,29929,1722],{},[1720,29931,1725],{},[1727,29933,29934,29942,29952,29962,29972],{},[1717,29935,29936,29940],{},[1732,29937,29938],{},[1735,29939,7452],{},[1732,29941,29862],{},[1717,29943,29944,29949],{},[1732,29945,29946],{},[1735,29947,29948],{},"options",[1732,29950,29951],{},"The options for the request, see above for details.",[1717,29953,29954,29958],{},[1732,29955,29956],{},[1735,29957,29828],{},[1732,29959,29871,29960,29875],{},[1735,29961,29874],{},[1717,29963,29964,29968],{},[1732,29965,29966],{},[1735,29967,29882],{},[1732,29969,29885,29970,2503],{},[1735,29971,29828],{},[1717,29973,29974,29978],{},[1732,29975,29976],{},[1735,29977,29894],{},[1732,29979,29897,29980,29903],{},[1684,29981,29902],{"href":29900,"rel":29982},[2676],[1689,29984,29985,3676,29987,29910],{},[3673,29986,3675],{},[1684,29988,1686],{"href":1686},[1679,29990,1682,29992,29994],{"id":29991},"enum-uderror-udweb_releaseresponseconst-char-ppresponse",[1684,29993,1686],{"href":1686}," udWeb_ReleaseResponse(const char **ppResponse)",[1689,29996,29997,29998,30001,30002,2503],{},"Frees memory of a prior call to ",[1735,29999,30000],{},"udWeb_Request"," or ",[1735,30003,29838],{},[1711,30005,30006,30014],{},[1714,30007,30008],{},[1717,30009,30010,30012],{},[1720,30011,1722],{},[1720,30013,1725],{},[1727,30015,30016],{},[1717,30017,30018,30022],{},[1732,30019,30020],{},[1735,30021,29828],{},[1732,30023,30024,30025,30001,30027,2503],{},"A pointer to a pointer containing the response from a prior call to ",[1735,30026,30000],{},[1735,30028,29838],{},[1689,30030,30031,3676,30033,30035],{},[3673,30032,3675],{},[1684,30034,1686],{"href":1686}," value based on the result of releasing the HTTP response.",[1674,30037,1796],{"id":1795},[1679,30039,30041],{"id":30040},"struct-udweboptions","struct udWebOptions",[1689,30043,30044],{},"This structure stores the options for a udWeb request",[1693,30046,30047],{},[1689,30048,30049,30051,30052,30055,30056,30001,30058,2503],{},[1698,30050,1700],{},"\nThe default values for the members except ",[1735,30053,30054],{},"method"," is ",[1735,30057,6778],{},[1735,30059,6899],{},[1711,30061,30062,30072],{},[1714,30063,30064],{},[1717,30065,30066,30068,30070],{},[1720,30067,1812],{},[1720,30069,1815],{},[1720,30071,1725],{},[1727,30073,30074,30087,30102,30116,30130,30144,30158,30172,30186],{},[1717,30075,30076,30080,30084],{},[1732,30077,30078],{},[1735,30079,30054],{},[1732,30081,30082],{},[1735,30083,29765],{},[1732,30085,30086],{},"The HTTP method to use for the request.",[1717,30088,30089,30094,30099],{},[1732,30090,30091],{},[1735,30092,30093],{},"pPostData",[1732,30095,30096],{},[1735,30097,30098],{},"const uint8_t \\*",[1732,30100,30101],{},"The data to send to the server as part of a POST request.",[1717,30103,30104,30109,30113],{},[1732,30105,30106],{},[1735,30107,30108],{},"postLength",[1732,30110,30111],{},[1735,30112,5675],{},[1732,30114,30115],{},"The length of the data being sent to the server.",[1717,30117,30118,30123,30127],{},[1732,30119,30120],{},[1735,30121,30122],{},"rangeBegin",[1732,30124,30125],{},[1735,30126,5675],{},[1732,30128,30129],{},"The position of the first byte in the requested file to receive data from.",[1717,30131,30132,30137,30141],{},[1732,30133,30134],{},[1735,30135,30136],{},"rangeEnd",[1732,30138,30139],{},[1735,30140,5675],{},[1732,30142,30143],{},"The position of the last byte in the requested file to receive data from.",[1717,30145,30146,30151,30155],{},[1732,30147,30148],{},[1735,30149,30150],{},"pAuthUsername",[1732,30152,30153],{},[1735,30154,6652],{},[1732,30156,30157],{},"The username to use when authenticating with the server.",[1717,30159,30160,30165,30169],{},[1732,30161,30162],{},[1735,30163,30164],{},"pAuthPassword",[1732,30166,30167],{},[1735,30168,6652],{},[1732,30170,30171],{},"The password to use when authenticating with the server.",[1717,30173,30174,30179,30183],{},[1732,30175,30176],{},[1735,30177,30178],{},"pCookie",[1732,30180,30181],{},[1735,30182,6652],{},[1732,30184,30185],{},"A cookie to include in the header.",[1717,30187,30188,30192,30197],{},[1732,30189,30190],{},[1735,30191,5760],{},[1732,30193,30194],{},[1735,30195,30196],{},"struct udContext \\*",[1732,30198,30199],{},"If this is provided and pURL is on the same domain as the pContext server the API details will be passed through.",{"title":2049,"searchDepth":2050,"depth":2050,"links":30201},[30202,30205,30213],{"id":2697,"depth":2050,"text":2698,"children":30203},[30204],{"id":29764,"depth":2055,"text":29765},{"id":1676,"depth":2050,"text":1677,"children":30206},[30207,30209,30211],{"id":29819,"depth":2055,"text":30208},"enum udError udWeb_Request(const char *pURL, const char **ppResponse, uint64_t *pResponseLength, int *pHTTPResponseCode)",{"id":29913,"depth":2055,"text":30210},"enum udError udWeb_RequestAdv(const char *pURL, struct udWebOptions options, const char **ppResponse, uint64_t *pResponseLength, int *pHTTPResponseCode)",{"id":29991,"depth":2055,"text":30212},"enum udError udWeb_ReleaseResponse(const char **ppResponse)",{"id":1795,"depth":2050,"text":1796,"children":30214},[30215],{"id":30040,"depth":2055,"text":30041},"This is an optional helper module to assist with doing web requests. Internally it uses libcURL with the global settings (proxy and certificates information) from udConfig. As this is not a core module, it does not accept a udContext and can be used without having a udServer available.",{},"\u002Fguide\u002Fudsdk\u002Fudweb",{"title":29745,"description":30216},"guide\u002Fudsdk\u002FudWeb","Y8mA75q35bUn5eGH5AoIipGO0aOHZsyb4oWISrIhvWo",1776307962900]