Skip to main content

MeshDecoder

Struct MeshDecoder 

Source
pub struct MeshDecoder { /* private fields */ }
Available on crate feature decoder only.
Expand description

Decoder for Draco triangle mesh bitstreams.

MeshDecoder reads a .drc bitstream produced by MeshEncoder (or C++ Draco) and reconstructs a Mesh: faces, attributes, and any metadata. It handles both EdgeBreaker and sequential connectivity and dequantizes attributes back to their original data types.

A point-cloud bitstream (geometry type 0) is also accepted and decoded into the mesh’s underlying PointCloud with no faces.

§Examples

use draco_core::{DecoderBuffer, Mesh, MeshDecoder};

let mut mesh = Mesh::new();
MeshDecoder::new().decode(&mut DecoderBuffer::new(drc_bytes), &mut mesh)?;
println!("{} faces, {} points", mesh.num_faces(), mesh.num_points());

A full encode/decode round trip is shown on the MeshEncoder type docs.

Implementations§

Source§

impl MeshDecoder

Source

pub fn new() -> Self

Creates a mesh decoder with default state.

Source

pub fn decode( &mut self, in_buffer: &mut DecoderBuffer<'_>, out_mesh: &mut Mesh, ) -> Status

Decodes a Draco mesh from in_buffer into out_mesh.

Reads the header, optional metadata, connectivity, and attributes, populating out_mesh. Point-cloud bitstreams are decoded into the mesh’s underlying point cloud (no faces).

§Errors

Returns an error if the magic/header is invalid, the bitstream version is unsupported, the geometry is malformed, or a required feature (such as point_cloud_decode) is disabled.

Source

pub fn get_corner_table_ref(&self) -> Option<&CornerTable>

Test helper: Returns a reference to the decoded corner table (if any). This is useful in unit tests that wish to compare encoder/decoder corner table structures without accessing internal decoder types.

Trait Implementations§

Source§

impl Default for MeshDecoder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.