import numpy as np


def testOFFReader():
    path = '../sample-data/chair.off'
    raw_data = tuple(open(path, 'r'))
    header = raw_data.strip(' ')[:-1]
    n_vertices, n_faces = header[0], header[1]
        

if __name__ == '__main__':
    a = testOFFReader()
    print a

import trimesh
import sys

import scipy.ndimage as nd
import numpy as np
import matplotlib.pyplot as plt

from stl import mesh
from mpl_toolkits import mplot3d


def getVerticesFaces(path):
    raw_data = tuple(open(path, 'r'))
    header = raw_data[1].split()
    n_vertices = int(header[0])
    n_faces = int(header[1])
    
    vertices = np.asarray([map(float,raw_data[i+2].split()) for i in range(n_vertices)])
    faces = np.asarray([map(int,raw_data[i+2+n_vertices].split()) for i in range(n_faces)]) 
    return vertices, faces

def plot(vertices, faces):
    input_vec = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
    for i, f in enumerate(faces):
        for j in range(3):
            input_vec.vectors[i][j] = vertices[f[j],:]
    figure = plt.figure()
    axes = mplot3d.Axes3D(figure)
    axes.add_collection3d(mplot3d.art3d.Poly3DCollection(input_vec.vectors))
    scale = input_vec.points.flatten(-1)
    axes.auto_scale_xyz(scale, scale, scale)
    plt.show()

def binaryPlot(voxels):
    z,x,y = voxels.nonzero()
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x, y, -z, zdir='z', c= 'red')
    plt.show()

def discretePlot(vertices):
    figure = pyplot.figure()
    axes = mplot3d.Axes3D(figure)
    axes.scatter(vertices.T[0,:],vertices.T[1,:],vertices.T[2,:])
    pyplot.show()

def getVolume(path, sideLen=32):
    mesh = trimesh.load(path)
    volume = trimesh.voxel.Voxel(mesh, 0.5).raw
    (x, y, z) = map(float, volume.shape)
    volume = nd.zoom(volume.astype(float), 
                     (sideLen/x, sideLen/y, sideLen/z),
                     order=1, 
                     mode='nearest')
    volume[np.nonzero(volume)] = 1.0
    return volume.astype(np.bool)

if __name__ == '__main__':
    path = sys.argv[1]
    volume = getVolume(path)
    binaryPlot(volume)

Add off file reader with 3d resampling
Add off file reader with 3d resampling

+ import trimesh
+ import sys
+ 
+ import scipy.ndimage as nd
  import numpy as np
+ import matplotlib.pyplot as plt
+ 
+ from stl import mesh
+ from mpl_toolkits import mplot3d
  
  
+ def getVerticesFaces(path):
- def testOFFReader():
-     path = '../sample-data/chair.off'
      raw_data = tuple(open(path, 'r'))
-     header = raw_data.strip(' ')[:-1]
+     header = raw_data[1].split()
-     n_vertices, n_faces = header[0], header[1]
-         
+     n_vertices = int(header[0])
+     n_faces = int(header[1])
+     
+     vertices = np.asarray([map(float,raw_data[i+2].split()) for i in range(n_vertices)])
+     faces = np.asarray([map(int,raw_data[i+2+n_vertices].split()) for i in range(n_faces)]) 
+     return vertices, faces
+ 
+ def plot(vertices, faces):
+     input_vec = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
+     for i, f in enumerate(faces):
+         for j in range(3):
+             input_vec.vectors[i][j] = vertices[f[j],:]
+     figure = plt.figure()
+     axes = mplot3d.Axes3D(figure)
+     axes.add_collection3d(mplot3d.art3d.Poly3DCollection(input_vec.vectors))
+     scale = input_vec.points.flatten(-1)
+     axes.auto_scale_xyz(scale, scale, scale)
+     plt.show()
+ 
+ def binaryPlot(voxels):
+     z,x,y = voxels.nonzero()
+     fig = plt.figure()
+     ax = fig.add_subplot(111, projection='3d')
+     ax.scatter(x, y, -z, zdir='z', c= 'red')
+     plt.show()
+ 
+ def discretePlot(vertices):
+     figure = pyplot.figure()
+     axes = mplot3d.Axes3D(figure)
+     axes.scatter(vertices.T[0,:],vertices.T[1,:],vertices.T[2,:])
+     pyplot.show()
+ 
+ def getVolume(path, sideLen=32):
+     mesh = trimesh.load(path)
+     volume = trimesh.voxel.Voxel(mesh, 0.5).raw
+     (x, y, z) = map(float, volume.shape)
+     volume = nd.zoom(volume.astype(float), 
+                      (sideLen/x, sideLen/y, sideLen/z),
+                      order=1, 
+                      mode='nearest')
+     volume[np.nonzero(volume)] = 1.0
+     return volume.astype(np.bool)
  
  if __name__ == '__main__':
-     a = testOFFReader()
-     print a
+     path = sys.argv[1]
+     volume = getVolume(path)
+     binaryPlot(volume)
  
Add off file reader with 3d resampling
## Code Before:
import numpy as np


def testOFFReader():
    path = '../sample-data/chair.off'
    raw_data = tuple(open(path, 'r'))
    header = raw_data.strip(' ')[:-1]
    n_vertices, n_faces = header[0], header[1]
        

if __name__ == '__main__':
    a = testOFFReader()
    print a

## Instruction:
Add off file reader with 3d resampling
## Code After:
import trimesh
import sys

import scipy.ndimage as nd
import numpy as np
import matplotlib.pyplot as plt

from stl import mesh
from mpl_toolkits import mplot3d


def getVerticesFaces(path):
    raw_data = tuple(open(path, 'r'))
    header = raw_data[1].split()
    n_vertices = int(header[0])
    n_faces = int(header[1])
    
    vertices = np.asarray([map(float,raw_data[i+2].split()) for i in range(n_vertices)])
    faces = np.asarray([map(int,raw_data[i+2+n_vertices].split()) for i in range(n_faces)]) 
    return vertices, faces

def plot(vertices, faces):
    input_vec = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
    for i, f in enumerate(faces):
        for j in range(3):
            input_vec.vectors[i][j] = vertices[f[j],:]
    figure = plt.figure()
    axes = mplot3d.Axes3D(figure)
    axes.add_collection3d(mplot3d.art3d.Poly3DCollection(input_vec.vectors))
    scale = input_vec.points.flatten(-1)
    axes.auto_scale_xyz(scale, scale, scale)
    plt.show()

def binaryPlot(voxels):
    z,x,y = voxels.nonzero()
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x, y, -z, zdir='z', c= 'red')
    plt.show()

def discretePlot(vertices):
    figure = pyplot.figure()
    axes = mplot3d.Axes3D(figure)
    axes.scatter(vertices.T[0,:],vertices.T[1,:],vertices.T[2,:])
    pyplot.show()

def getVolume(path, sideLen=32):
    mesh = trimesh.load(path)
    volume = trimesh.voxel.Voxel(mesh, 0.5).raw
    (x, y, z) = map(float, volume.shape)
    volume = nd.zoom(volume.astype(float), 
                     (sideLen/x, sideLen/y, sideLen/z),
                     order=1, 
                     mode='nearest')
    volume[np.nonzero(volume)] = 1.0
    return volume.astype(np.bool)

if __name__ == '__main__':
    path = sys.argv[1]
    volume = getVolume(path)
    binaryPlot(volume)
