Source code for subsurface.writer.to_rex.common

import numpy as np

__all__ = ['write_data_block_header', 'encode']

rexFileHeaderSize = 64
rexCoordSize = 22

file_header_size = 86
rexDataBlockHeaderSize = 16

file_header_and_data_header = 102
mesh_header_size = 128
all_header_size = 230

# Supported block types
# typeLineSet = 0
# typeText = 1
# typePointList = 2
typeMesh = 3
# typeImage = 4
# typeMaterial = 5
# typePeopleSimulation = 6
# typeUnityPackage = 7
# typeSceneNode = 8


n_bytes = 0


[docs]def write_data_block_header(size_data, data_id=1, data_type=3, version_data=1): """Function to write a DATA BLOCK header. Args: size_data: data block size (without header) data_id: id which is used in the database data_type (int): Type of data the data block contains: * 0 LineSet A list of vertices which get connected by line segments * 1 Text A position information and the actual text * 2 PointList A list of 3D points with color information (e.g. point cloud) * 3 Mesh A triangle mesh datastructure️ * 4 Image A single of arbitrary format can be stored in this block * 5 MaterialStandard A standard (mesh) material definition * 6 SceneNode A wrapper around a data block which can be used in the scenegraph * 7 Track A track is a tracked position and orientation of an AR device version_data: version for this data block Returns: """ input_ = [(data_type, 'uint16'), # data type (version_data, 'uint16'), # version for this data block (size_data, 'uint32'), # data block size (without header) (data_id, 'uint64')] # id which is used in the database block_bytes = encode(input_) return block_bytes
[docs]def encode(input_: list): """Encode python objects - normally Python primitives or numpy arrays - into its correspondent byte representation Args: input_ (List[tuples]): List of tuples: (object, type) Returns: byte: Array of bytes """ global n_bytes block = bytearray() for tup in input_: arr = np.array(tup[0], dtype=tup[1]).tobytes() n_bytes += len(arr) block += arr return block