refactored folders and added vispy 3Drender
This commit is contained in:
parent
2729ac5f4a
commit
af36b95e09
@ -6,7 +6,7 @@ import time
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from main import get_discrete_data, get_raw_data
|
from main import get_discrete_data, get_raw_data
|
||||||
from utils.files import output
|
from utils.files import output
|
||||||
from utils.files.input import ScannedObject
|
from utils.files.input import ScannedObject, parse_result_file
|
||||||
|
|
||||||
def check_discrete_data(expected_file: str, actual_file: str, ndigits=7, eps=0.00001, silent: bool = False) -> dict:
|
def check_discrete_data(expected_file: str, actual_file: str, ndigits=7, eps=0.00001, silent: bool = False) -> dict:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
|
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from utils.files.input import ScannedObject
|
||||||
|
|
||||||
def render3D(data:dict):
|
def render3D(obj:ScannedObject):
|
||||||
"""
|
"""
|
||||||
Render a 3D model using matplotlib poly3dcollection
|
Render a 3D model using matplotlib poly3dcollection
|
||||||
:param data: A dict with the vertices and faces
|
:param data: A dict with the vertices and faces
|
||||||
"""
|
"""
|
||||||
fig = plt.figure()
|
fig = plt.figure()
|
||||||
ax = fig.add_subplot(projection='3d')
|
ax = fig.add_subplot(projection='3d')
|
||||||
faces = np.array(data['faces'])
|
faces = np.array(obj.get_faces())
|
||||||
verts = np.array(list(zip(data['x'], data['y'], data['z'])))
|
verts = np.array(obj.get_vertices())
|
||||||
mesh = Poly3DCollection(verts[faces], alpha=0.25, edgecolor='none')
|
mesh = Poly3DCollection(verts[faces], alpha=0.25, edgecolor='none')
|
||||||
ax.add_collection3d(mesh)
|
ax.add_collection3d(mesh)
|
||||||
plt.show()
|
plt.show()
|
||||||
33
utils/graph3D/visplot_render.py
Normal file
33
utils/graph3D/visplot_render.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import numpy as np
|
||||||
|
from vispy import app, scene
|
||||||
|
from vispy.scene.visuals import Mesh
|
||||||
|
from vispy.scene import transforms
|
||||||
|
from vispy.visuals.filters import ShadingFilter, WireframeFilter
|
||||||
|
from utils.files.input import ScannedObject
|
||||||
|
|
||||||
|
|
||||||
|
def render3D(obj:ScannedObject):
|
||||||
|
vertices = np.asarray(obj.get_vertices())
|
||||||
|
faces = np.asarray(obj.get_faces())
|
||||||
|
canvas = scene.SceneCanvas(keys='interactive', bgcolor='white')
|
||||||
|
view = canvas.central_widget.add_view()
|
||||||
|
view.camera = 'arcball'
|
||||||
|
view.camera.depth_value = 1e3
|
||||||
|
mesh = Mesh(vertices, faces, color=(.5, .7, .5, 1))
|
||||||
|
view.add(mesh)
|
||||||
|
wireframe_filter = WireframeFilter(width=0)
|
||||||
|
shading_filter = ShadingFilter(shininess=0)
|
||||||
|
mesh.attach(wireframe_filter)
|
||||||
|
mesh.attach(shading_filter)
|
||||||
|
|
||||||
|
def attach_headlight(view):
|
||||||
|
light_dir = (0, 1, 0, 0)
|
||||||
|
shading_filter.light_dir = light_dir[:3]
|
||||||
|
initial_light_dir = view.camera.transform.imap(light_dir)
|
||||||
|
@view.scene.transform.changed.connect
|
||||||
|
def on_transform_change(event):
|
||||||
|
transform = view.camera.transform
|
||||||
|
shading_filter.light_dir = transform.map(initial_light_dir)[:3]
|
||||||
|
attach_headlight(view)
|
||||||
|
canvas.show()
|
||||||
|
app.run()
|
||||||
Loading…
Reference in New Issue
Block a user