コード例 #1
0
def load_scene(filename):
    obj = model.Model(filename, is_point_cloud=True)
    m = obj._add_mesh()
    with open(filename, "rb") as f:
        dtype = []
        count = 0
        format = None
        line = None
        header = ''

        while line != 'end_header\n' and line != '':
            line = f.readline()
            header += line
        # Discart faces
        header = header.split('element face ')[0].split('\n')

        if header[0] == 'ply':

            for line in header:
                if 'format ' in line:
                    format = line.split(' ')[1]
                    break

            if format is not None:
                if format == 'ascii':
                    fm = ''
                elif format == 'binary_big_endian':
                    fm = '>'
                elif format == 'binary_little_endian':
                    fm = '<'

            df = {'float': fm + 'f', 'uchar': fm + 'B'}
            dt = {'x': 'v', 'nx': 'n', 'red': 'c', 'alpha': 'a'}
            ds = {'x': 3, 'nx': 3, 'red': 3, 'alpha': 1}

            for line in header:
                if 'element vertex ' in line:
                    count = int(line.split('element vertex ')[1])
                elif 'property ' in line:
                    props = line.split(' ')
                    if props[2] in list(dt.keys()):
                        dtype = dtype + [(dt[props[2]], df[props[1]],
                                          (ds[props[2]], ))]

            dtype = np.dtype(dtype)

            if format is not None:
                if format == 'ascii':
                    m._prepare_vertex_count(count)
                    _load_ascii(m, f, dtype, count)
                elif format == 'binary_big_endian' or format == 'binary_little_endian':
                    _load_binary(m, f, dtype, count)
            obj._post_process_after_load()
            return obj

        else:
            logger.error("Error: incorrect file format.")
            return None
コード例 #2
0
ファイル: stl.py プロジェクト: Schwub/LMU_Zahnscanner
def load_scene(filename):
    obj = model.Model(filename)
    m = obj._add_mesh()
    with open(filename, "rb") as f:
        if f.read(5).lower() == "solid":
            _load_ascii(m, f)
        else:
            _load_binary(m, f)
        obj._post_process_after_load()
        return obj
コード例 #3
0
def loadScene(filename):
    obj = model.Model(filename)
    m = obj._addMesh()
    with open(filename, "rb") as f:
        if f.read(5).lower() == "solid":
            _loadAscii(m, f)
        else:
            _loadBinary(m, f)
        obj._postProcessAfterLoad()
        return obj
コード例 #4
0
ファイル: scene_view.py プロジェクト: Schwub/LMU_Zahnscanner
 def create_default_object(self):
     self._clear_scene()
     self._object = model.Model(None, is_point_cloud=True)
     self._object._add_mesh()
     self._object._mesh._prepare_vertex_count(4000000)
コード例 #5
0
ファイル: sceneView.py プロジェクト: josejuansanchez/horus
 def createDefaultObject(self):
     self._clearScene()
     self._object = model.Model(None, isPointCloud=True)
     self._object._addMesh()
     self._object._mesh._prepareVertexCount(2000000)