Recent Releases of vedo

vedo - v2025.5.4

What's Changed

  • Update file_io.py by @zhouzq-thu in https://github.com/marcomusy/vedo/pull/1228
  • Add lazy initialization for normals (#1231) by @CorpsSansOrganes in https://github.com/marcomusy/vedo/pull/1232
  • Fix broken example links in add_legend_box() documentation by @CorpsSansOrganes in https://github.com/marcomusy/vedo/pull/1241
  • Use specialized reader for OME-TIFF files. by @anntzer in https://github.com/marcomusy/vedo/pull/1242
  • Fix trivial typo. by @anntzer in https://github.com/marcomusy/vedo/pull/1247
  • Fix: update implementation of Box with bounds input to internally set X/Y/Z lengths by @dbotwinick in https://github.com/marcomusy/vedo/pull/1250
  • fix: several example urls fixed by @CorpsSansOrganes in https://github.com/marcomusy/vedo/pull/1253

  • general code cleanup with pylint.

  • add utils.compute_hessian()

  • fix issue #1224 for cells coloring in jupyter notebook for k3d

  • add support for STEP files format (needs opencascade lib) #1222

  • fix nan case in scalarbar3d()

  • add .rename() method to set any object name.

  • fix bug #1230 in line.find_index_at_position() by @natabma

  • Add lazy initialization for normals (#1231) by @CorpsSansOrganes

  • add chemistry module to represent molecules and proteins

  • fix to Box class by @dbotwinick

Soft-breaking Changes

Changes that may break existing code whose fixing is trivial:

Hard-breaking Changes

Changes that will break existing code and need active thinking and some work to adapt

  • None

New/Revised Examples

examples/pyplot/plot_fxy0.py examples/volumetric/image_editor.py examples/other/pysr_regression.py examples/other/chemistry1.py tests/issues/issue_1230.py

New Contributors

  • @CorpsSansOrganes made their first contribution in https://github.com/marcomusy/vedo/pull/1232
  • @anntzer made their first contribution in https://github.com/marcomusy/vedo/pull/1242
  • @dbotwinick made their first contribution in https://github.com/marcomusy/vedo/pull/1250

Full Changelog: https://github.com/marcomusy/vedo/compare/v2025.5.3...v2025.5.4

- Python
Published by marcomusy 9 months ago

vedo - v2025.5.3

Changes and Fixes

  • add settings.force_single_precision_points = False in #1137 by @JeffreyWardman and @sean-d-zydex
  • fix Volume masking in #1146 by @ivishalanand
  • fix LegendBox in #1153 by @GerritFischer
  • add mesh.laplacian_diffusion()
  • fix DistanceTool in #1158
  • fix shapes.Plane.normal in #1159 by @smoothumut
  • add Arrow.top_point() and Arrow.base_point() to extract current arrow position #1163 @smoothumut
  • fix Arrow.top_index to produce the correct index value
  • add assembly.Group.objects by @smoothumut
  • add addons.DrawingWidget class for tracing on planar props
  • add Video(..., scale=1) keyword in #1168 by @YongcaiHuang
  • modify legosurface(boundary=True) default in #1166
  • make load functions compatible with pathlib #1176 by @Louis-Pujol
  • fixed broken link to example #1175 by @jo-mueller
  • add documentation to Mesh.boolean() #1173 by @jkunimune
  • raise an error when calling cellnormals before computenormals() #1172 by @jkunimune
  • add documentation warning as computing normals can affect appearence of the mesh #1174 by @jkunimune
  • add documentation about Cube and Box having duplicated vertices to allow defining normals #1171
  • add documentation do address the behaviour of mesh.volume() and mesh.is_closed() wrt duplicated vertices.
  • add plotter.reset_clipping_range() to reset the camera clipping range based on the bounds of the visible actors #1170
  • fix issue with find_cell() in #1095
  • improvements to volume.isosurface_discrete() in #1180 by @snownontrace
  • fix bug on video frame by resetting camera clipping range in #1180 by @snownontrace
  • changes in the scalarbar2d object.
  • fix purging of nan in pyplot.plot()
  • fix line trace to skip first point
  • adjust volume transfer function for transparency @Poisoned
  • fixing axes type 10 by @Poisoned
  • improvements to input/output functionality for Assembly @ttsesm
  • added mesh.remove_all_lines() method
  • added keyword Plane(edge_direction=...) by @smoothumut
  • added isolines(..., n=list()) option to pass specific values.
  • in file_io.screenshot() add fourth channel representing trasparency @miek0tube
  • remove obsolete class CellCenters which is now function object.cell_centers()

Changes from PR:

  • Prevent merging close vertices when converting to Trimesh by @Linus-Foley in https://github.com/marcomusy/vedo/pull/1160
  • Update assembly.py by @smoothumut in https://github.com/marcomusy/vedo/pull/1162
  • Update assembly.py by @smoothumut in https://github.com/marcomusy/vedo/pull/1165
  • raise an error when calling cellnormals before computenormals() by @jkunimune in https://github.com/marcomusy/vedo/pull/1172
  • add documentation to Mesh.boolean() by @jkunimune in https://github.com/marcomusy/vedo/pull/1173
  • fixed broken link to example by @jo-mueller in https://github.com/marcomusy/vedo/pull/1175
  • make load functions compatible with pathlib by @Louis-Pujol in https://github.com/marcomusy/vedo/pull/1176
  • Update volume.py by @Poisoned in https://github.com/marcomusy/vedo/pull/1205
  • Update plotter.py by @Poisoned in https://github.com/marcomusy/vedo/pull/1209

Soft-breaking Changes

Changes that may break existing code whose fixing is trivial:

  • change object.points() to object.points everywhere.
  • change object.cell_centers to object.cell_centers().points everywhere.
  • change Picture() to Image() everywhere.

Hard-breaking Changes

Changes that will break existing code and need active thinking and some work to adapt

  • None

New/Revised Examples

``` examples/advanced/splinedraw2.py examples/volumetric/isosurfaces2.py examples/pyplot/fitcurve2.py

tests/issues/issue1146.py tests/issues/discussion1190.py tests/issues/testsphharm2.py tests/issues/issue_1218.py

tests/snippets/testinteractiveplotxy1.py tests/snippets/testinteractiveplotxy2.py tests/snippets/testelasticpendulum.py ```

New Contributors

  • @Linus-Foley made their first contribution in https://github.com/marcomusy/vedo/pull/1160
  • @smoothumut made their first contribution in https://github.com/marcomusy/vedo/pull/1162
  • @jkunimune made their first contribution in https://github.com/marcomusy/vedo/pull/1172
  • @Poisoned made their first contribution in https://github.com/marcomusy/vedo/pull/1205

Full Changelog: https://github.com/marcomusy/vedo/compare/v2024.5.2...v2025.5.3

- Python
Published by marcomusy about 1 year ago

vedo - 2024.5.2

Changes and Fixes

  • add magic-class example
  • fix bug in IsosurfaceBrowser in #1064
  • add mesh.adjacency_list() and graph_ball() methods by @sergei9838
  • add utils.circle_from_3points() function.
  • add example examples/other/iminuit2.py
  • add rotation=.. to Arrow2D() class
  • improvements to applications.MorphPlotter class
  • add FlyOverSurface class and examples/basic/interaction_modes3.py
  • add mesh.extrude_and_trim_with() method out of #1077
  • fix reset clipping range in thumbnail generation in #1085
  • add mesh.euler_characteristic(), mesh.genus() and mesh.to_reeb_graph() in #1084
  • fix reset_camera() by @sergei9838 and Eric
  • fix handle empty axis for rotation #1113 by @JeffreyWardman
  • fix minor bug in RoundedLine #1104 by @PinkMushroom
  • fix avoid overwriting screenshots with "S" key #1100 by @j042
  • add support for meshlib in https://doc.meshinspector.com/index.html
  • add relevant keyword options to core.probe() method
  • increase precision in writing obj files in #1119 by @ManuGraiph
  • add plotter.freeze() to freeze interaction of current renderer in #1122 by @sergei9838
  • add class addons.ButtonWidget to address issue #1138
  • add typing annotations in submodules

  • allow for dictionary input in Group and Assembly by @JeffreyWardman in https://github.com/marcomusy/vedo/pull/1057

  • allow assembly to correctly index objects by @JeffreyWardman in https://github.com/marcomusy/vedo/pull/1062

  • backwards compatibility in typing with python < 3.11 by @JeffreyWardman in https://github.com/marcomusy/vedo/pull/1093

  • avoid overwriting screenshots with "S" key by @j042 in https://github.com/marcomusy/vedo/pull/1100

  • minor bug in RoundedLine by @PinkMushroom in https://github.com/marcomusy/vedo/pull/1104

  • bugfix: add tolerance to contains by @JeffreyWardman in https://github.com/marcomusy/vedo/pull/1105

  • Mitigate issue #769: don't set backend to '2d' in IPython REPLs by @paulbrodersen in https://github.com/marcomusy/vedo/pull/1108

  • handle empty axis for rotation by @JeffreyWardman in https://github.com/marcomusy/vedo/pull/1113

  • Print position parameter as 'pos' by @adamltyson in https://github.com/marcomusy/vedo/pull/1134

Soft-breaking Changes

Changes that will break existing code whose fixing is trivial:

  • remove concatenate=True keyword from apply_transform() discussed in #1111

Hard-breaking Changes

Changes that will break existing code and need active thinking and work to adapt

  • None

New/Revised Examples

examples/basic/interaction_modes3.py examples/basic/interaction_modes4.py examples/basic/buttons3.py examples/advanced/warp4b.py examples/other/magic-class1.py examples/other/iminuit2.py examples/other/meshlib1.py tests/issues/issue_1077.py

New Contributors

  • @PinkMushroom made their first contribution in https://github.com/marcomusy/vedo/pull/1104
  • @paulbrodersen made their first contribution in https://github.com/marcomusy/vedo/pull/1108
  • @adamltyson made their first contribution in https://github.com/marcomusy/vedo/pull/1134

Full Changelog: https://github.com/marcomusy/vedo/compare/v2024.5.1...v2024.5.2

- Python
Published by marcomusy over 1 year ago

vedo - 2024.5.1

Changes and Fixes

  • fixes to extrude() method thanks to @JeffreyWardman
  • add utils.madcad2vedo conversion as per #976 by @JeffreyWardman
  • add utils.camera_to_dict()
  • add Axes(title_backface_color=...) keyword
  • fix labels() and labels2d()
  • add shapes.plot_scalar() plot a scalar along a line.
  • add support for tetgenpy
  • add transformations.compute_main_axes()
  • add transformations.__call__() to apply a transformation
  • fix small bug in pointcloud.distance_to()
  • add applications.MorphPlotter() to morph a polygonal mesh to a target mesh
  • add smooth_data() to smooth/diffuse data attributes
  • add shapes.Tubes()
  • add utils.Minimizer() class
  • add CellCenters(Points) class
  • add core.apply_transform_from_actor()
  • add add volume.slab()
  • add mesh.generate_random_points() to generate random points onto a surface
  • add tetmesh.generate_random_points() to generate random points in a tet mesh
  • rename integrate_arrays_over_domain() to integrate_data
  • extend volume.operation() to support logic operations as per #1002
  • add pointcloud.relax_point_positions() method
  • add pointcloud.auto_distance() method calculates the distance to the closest point in the same cloud of points.
  • fixed mesh.collapse_edges() after #992
  • add mesh.cut_closed_surface()
  • fix image.clone() in #1011
  • add transformations.TransformInterpolator class
  • add Line.find_index_at_position() finds the index of the line vertex that is closest to a point
  • add visual.LightKit class which provides "natural" lighting from 4 sources.
  • add fast-simplification example by @Louis-Pujol in #992
  • add metadata "shape" to volume.slice_plane() in #1018
  • fix core.mark_boundaries() method
  • add callbacks for cutters in #1020 and examples/volumetric/slice_plane3.py
  • add utils.andrews_curves() function.
  • add transformations.LinearTransform.transpose() method.
  • add pointcloud.generate_segments() to generate a continous line from un-ordered points in 3d
  • fix assembly.__add__() by @j042 in #1036
  • small fix to Ruler3D class.
  • add plotter.render_hidden_lines() method
  • add slot for triangle strips in constructor Mesh([verts, faces, lines, strips]) in #1019
  • internally use "import vedo.vtkclasses as vtki" instead of "vtk" to avoid confusion
  • add join_with_strips() in #1043
  • improvements to shapes.Ellipsoid() and bug fixes in #978 by @daniel-a-diaz
  • improvements to pointcloud.pca_ellipsoid() and bug fixes
  • improvements to pointcloud.pca_ellipse() and bug fixes
  • fix Plotter a toggle keypress
  • fix viz on jupyter notebook as per #994
  • fix mesh.imprint()
  • small fix to applications.Slicer2DPlotter
  • automatically apply the actor transform to an object actor that was moved manually (via eg "InteractorStyleTrackballActor") in #1045 and #1046 by @sergei9838
  • add support to RectilinearGrid and StructuredGrid data (experimental).
  • improvements to RayCastPlotter
  • add visual.scalar_range() to control mesh coloring.
  • fix shapes.Text3D.text() by @gioda
  • add volume.isosurface_discrete() method

Soft Breaking Changes

Changes that can break existing code whose fixing is trivial:

  • change clone2d(scale=...) to clone2d(size=...)
  • remove shapes.StreamLines(object) becomes object.compute_streamlines()
  • split mesh.decimate() into mesh.decimate(), mesh.decimate_pro() and mesh.decimate_binned() as per #992
  • modified core.clean() after #992
  • remove import_window() for obj files and create load_obj() by @zhouzq-thu in #891
  • add smooth_mls_12d(..., n=0) to fix the number of neighbors in the smoothing
  • modified API for mesh.binarize()
  • plotter.add_hover_legend() now returns the id of the callback.
  • removed settings.render_lines_as_tubes and settings.hidden_line_removal, add plotter.render_hidden_lines() method
  • fix close(), close_window() is now obsolete and removed.

Hard Breaking Changes

Changes that will break existing code and need active thinking and work to adapt

  • None

New/Revised Examples

``` examples/basic/slidershsv.py examples/basic/buttons1.py examples/basic/buttons2.py examples/basic/inputbox.py

examples/advanced/warp4b.py examples/advanced/diffusedata.py examples/advanced/movingleast_squares1D.py

examples/volumetric/slabvol.py examples/volumetric/streamlines1.py examples/volumetric/streamlines2.py examples/volumetric/streamlines3.py examples/volumetric/streamlines4.py examples/volumetric/office.py examples/volumetric/sliceplane1.py examples/volumetric/sliceplane3.py examples/volumetric/mesh2volume.py examples/volumetric/readvolume3.py examples/volumetric/rectlgrid1.py examples/volumetric/strucgrid1.py examples/volumetric/app_raycaster.py examples/volumetric/isosurfaces1.py examples/volumetric/isosurfaces2.py

examples/simulations/magfield1.py examples/pyplot/andrewscluster.py

examples/other/madcad1.py examples/other/tetgen1.py examples/other/nelder-mead.py examples/other/fast_simpl.py

tests/issues/issue968.py tests/issues/issue1025.py tests/issues/testforceanim.py tests/snippets/testdiscourse1956.py tests/snippets/testellipsoidmainaxes.py tests/snippets/testcompare_fit1.py ```

New Contributors

  • @daizhirui made their first contribution in https://github.com/marcomusy/vedo/pull/983
  • @JeffreyWardman made their first contribution in https://github.com/marcomusy/vedo/pull/988
  • @PeterMitrano made their first contribution in https://github.com/marcomusy/vedo/pull/1000
  • @Louis-Pujol made their first contribution in https://github.com/marcomusy/vedo/pull/1016

Full Changelog: https://github.com/marcomusy/vedo/compare/v2023.5.0...v2024.5.1

- Python
Published by marcomusy about 2 years ago

vedo - 2023.5.0

Main changes

Major internal refactoring.

Breaking changes

  • rename internal list plt.actors which now become plt.objects
  • rename .points() to property .vertices. Hence: mesh.points() -> mesh.vertices mesh.points(newpoints) -> mesh.vertices = newpoints
  • rename .cell_centers() to property .cell_centers
  • rename .faces() to property .cells
  • rename .lines() to property .lines
  • rename .edges() to property .edges
  • rename .normals() and split it into property .vertex_normals and property .cell_normals
  • rename picture.Picture2D(...) which becomes Image(...).clone2d() (see examples/pyplot/embed_matplotlib.py).
  • rename Volume.probe_points() which becomes points.probe(volume)
  • rename Volume.probe_line() which becomes line.probe(volume)
  • rename Volume.probe_plane() which becomes plane.probe(volume)
  • rename file_io.load_transform(). LinearTransform("file.mat") substitutes it.
  • rename transform_with_landmarks() to align_with_landmarks()
  • rename find_cells_in() to find_cells_in_bounds()
  • rename mesh.is_inside(pt) moved to mesh.contains(pt)
  • rename Slicer2DPlotter moved to application module.Slicer2DPlotter
  • rename and moved method voronoi() to points.generate_voronoi()
  • rename class Ruler to Ruler3D

Other changes

  • improvements in how vtk classes are imported (allow lazy import)
  • improvements to method mesh.clone2d()
  • improvements in Slicer3DPlotter thanks to @daniel-a-diaz in #925
  • improvements in applications.Browser
  • add new vedo.transformations.py module.
  • add plotter.pick_area() thanks to @ZiguoAtGitHub and @RubendeBruin feedback.
  • add texture to npz files thanks to @zhouzq-thu in #918
  • add background radial gradients
  • add utils.line_line_distance() function
  • add utils.segment_segment_distance() function
  • add plotter.initialize_interactor() method
  • add object hinting by hovering mouse (see flag_labels1.py)
  • add colors.lut_color_at(value) the color of the lookup table at value.
  • add .show(..., screenshot="myfile.png") keyword
  • add object.coordinates same as object.vertices
  • add move() to move single points or objects
  • add copy() as alias to clone()
  • add "Roll" to camera dictionary (thanks @baba-yaga )
  • add applications.Slicer3DTwinPlotter thanks to @daniel-a-diaz
  • add radii feature to smooth_mls_2d() by @jo-mueller (now store results in arrays mesh.pointdata['MLSVariance'] and mesh.pointdata['MLSValidPoint'])
  • passing a vtkCamera to show(camera=...) triggers a copy of the input which is therefore not muted by any subsequent interaction (thanks @baba-yaga )

Bug Fixes

  • bug fix in closest_point() thanks to @goncalo-pt
  • bug fix in tformat thanks to @JohnsWor in #913
  • bug fix in windows OS in timers callbacks thanks to @jonaslindemann
  • bug fix to non linear tranforms mode. Now it can be instantiated with a dictionary
  • bug fix in meshlab interface thanks to @JeffreyWardman in #924
  • bug fix changed mp = matplotlib.colormaps[name] in colors.py

New/Revised Examples

examples/basic/buttons.py examples/basic/input_box.py examples/basic/sliders2.py examples/basic/spline_tool.py examples/basic/interaction_modes2.py examples/advanced/timer_callback1.py examples/advanced/timer_callback2.py examples/advanced/warp4a.py examples/advanced/warp4b.py examples/pyplot/embed_matplotlib.py examples/pyplot/plot_fxy2.py examples/simulations/springs_fem.py examples/simulations/lorenz.py examples/volumetric/numpy2volume0.py examples/volumetric/slicer1.py examples/volumetric/tet_astyle.py examples/volumetric/tet_cut1.py examples/volumetric/tet_cut2.py examples/other/flag_labels1.py

- Python
Published by marcomusy over 2 years ago

vedo - 2023.4.6

This release only fixes a bunch of small but annoying bugs in the previous.

- Python
Published by marcomusy over 2 years ago

vedo - 2023.4.5

Main changes

  • Rename module io.py to file_io.py to avoid overriding stlib io.
  • Complete revision of cutter widgets functionality
  • Integration in napari thanks to @jo-mueller

Breaking changes

  • method plotter.add() no more accepts keyword render=True/False. Please use plotter.add().render() explicitly. Same thing for plotter.remove().

Other fixes and improvements

  • added gpu acceleration for CLI volumetric visualization in #832 by @zhang-qiang-github
  • fixes for k3d jupyter backend
  • added plotter.fov(value) (field of view, the so called "fish-eye" effect)
  • fix ploter.get_meshes()
  • fix for plotter.remove(unpack_assemblies=False) method
  • fix for io.import_window() method
  • added cut_with_cookiecutter() to cut 2D contours.
  • fix shapes.NormalLines() class
  • added vedo.interactor_modes module
  • added vedo.interactor_modes.BlenderStyle class
  • added base.pointdata.clear() to remove all associated data
  • added volume.hide_voxels() for visualization
  • added Event.timerid attribute
  • fix to Volume.operation by @DanKrsi
  • fix links in pyplot examples by @androbaza
  • fix screenshot_scale and remove it from settings.
  • allow initializing ScalarBar with a tuple range (min, max)
  • Update API Documentation for Changing Backend by @bhacha
  • Add application.Browser().play() to autoplay a slider
  • Add pad() to padding a Volume with zeros voxels (useful to dilate())
  • Add ProgressBarWidget() to show a progress bar in the rendering window
  • Fix Scalarbar3D logscale and change separator symbol by @XushanLu
  • Fix vedo/interactor_modes.mouse_left_move() by @MiticoDan
  • Added applications.AnimationPlayer class by @mikaeltulldahl
  • fix convex hull in 2D by @ManuGraiph

New/Revised Examples

examples/basic/sliders_range.py examples/basic/interaction_modes.py examples/advanced/timer_callback3.py examples/advanced/warp6.py examples/pyplot/histo_1d_e.py examples/other/tensor_grid2.py examples/simulations/airplane1.py examples/simulations/lorenz.py examples/simulations/gas.py examples/simulations/aspring2_player.py

- Python
Published by marcomusy over 2 years ago

vedo - 2023.4.4

Main changes

  • New API docs
  • added cli functionality with vedo --search-code to inspect the code for keywords
  • method tomesh() changed to generate_mesh()
  • fix for mark_boundaries()
  • use vtkStaticCellLocator instead of vtkCellLocator
  • improved pointcloud.density() function
  • add utils.progressbar()
  • add trame examples
  • add utils.is_ragged() to check if an array is homogeneuos (not ragged)
  • fix shapes.Lines() class
  • add shapes.ThickTube() as per #800
  • add settings.backend_autoclose (default is True) to automatically close Plotter after show() in jupyter notebooks, #802
  • fix k3d backend - remove pinning to 2.7.4 #808
  • in Text2D and Text3D shortcut to symbols are now formatted as :gamma and no more as \gamma
  • fix mesh.stretch() thanks to @mikaeltulldahl in #807
  • fixes to cmap()
  • added mesh.is_manifold() method #813
  • added utils.open3d2vedo() and utils.vedo2open3d converters as per #663
  • added mesh.non_manifold_faces() to detect and (try to) remove non-manifold faces of a triangular mesh #813 #663 and https://github.com/SlicerIGT/SlicerBoneReconstructionPlanner/issues/35
  • added pointcloud.compute_acoplanarity() method
  • add pipeline visualization with syntax any_vedo_obj.pipeline.show() or interactively by clicking an object and pressing y.
  • fixes to Button class
  • in map_points_to_cells() added keyword move in #819 @19kdc3
  • fix flagpost() by creating a new class addons.Flagpost() in #821 @ZiguoAtGitHub
  • add vedo.io.Video(backend='imageio') support for video generation
  • add vedo.io.Video.split_frames() of an already existing video file.
  • add Picture2D class
  • add mesh.slice()
  • added __repr_html__ for all types (thanks to @haesleinhuepf input)
  • added treelib for pipeline representation
  • fixes to dolfin support MeshActor

New/Revised Examples

examples/basic/mousehover0.py examples/advanced/timer_callback0.py examples/simulations/lorenz.py examples/pyplot/embed_matplotlib.py examples/other/trame_ex1.py examples/other/trame_ex2.py examples/other/trame_ex3.py examples/other/make_video.py examples/other/dolfin/ex06_elasticity4.py examples/notebooks/test_types.ipynb examples/notebooks/slider2d.ipynb

- Python
Published by marcomusy almost 3 years ago

vedo - 2023.4.3

Main changes

  • Important fixes for numpy 1.24 @jo-mueller (also relevant to https://github.com/brainglobe/brainrender/issues/226#issue-1536800285 by @FedeClaudi @johnmbarrett )
  • fixed interface to pymeshlab==2022.2.post2
  • fixed #774 intersect_with_line()
  • fixed exporting to x3d for assemblies
  • added support to calarbars into assemblies, thanks to @j042 in #779
  • fix typos #780
  • settings.allow_interaction is now (temporarily) disabled.
  • added example basic/shadow3.py (thanks to @paul0noah in #767)
  • fix on OSX window focusing
  • various fixes for windows OS

  • add VTK_HEXAHEDRON to vedo.vtkclasses by @j042 in https://github.com/marcomusy/vedo/pull/762

  • minor typo fix by @j042 in https://github.com/marcomusy/vedo/pull/780

  • Keep scalarbar(s) in Assembly by @j042 in https://github.com/marcomusy/vedo/pull/779

New Contributors

  • @j042 made their first contribution in https://github.com/marcomusy/vedo/pull/762

New/Revised examples

examples/basic/shadow3.py examples/other/pymeshlab1.py examples/other/pymeshlab2.py

Full Changelog: https://github.com/marcomusy/vedo/compare/v2022.4.2...v2023.4.3

- Python
Published by marcomusy about 3 years ago

vedo - 2022.4.2

Main changes


base.py

  • added basegrid.extract_cells_on_plane()
  • added basegrid.extract_cells_on_sphere()
  • added basegrid.extract_cells_on_cylinder()
  • added count_vertices() method
  • added copy_data_from() method to transfer all cell and point data from an object to another.
  • fixed metadata association

pointcloud.py

  • added cut_with_planes() to cut at once with multiple planes
  • added generate_random_data() for testing purposes
  • renamed vignette() to flagpole()
  • added new flagpost() similar to the above
  • added new property pointcloud.cellcolorsand pointcolors to access and modify colors by RGBA assignment.
  • added compute_camera_distance() to calculate the distance from points to the camera. A pointdata array is created with name 'DistanceToCamera'.
  • added cut_with_scalars() to cut polygonal data with some input scalar data.

mesh.py

  • improved binarize() method thanks to @vfmatzkin
  • added collide_with() to fix crashing of intersect_with() in special cases
  • added check_validity()
  • added method=4 for subdivide()
  • added intersect_with_plane()
  • added boolean(..., method=1)
  • added intersect_with_multiplanes() to generate a set of lines from cutting a mesh in n intervals between a minimum and maximum distance from a plane of given origin and normal.

plotter.py

  • fixed key bindings for uppercase hits.
  • added method add_hint() to generate a pop-up message on hovering an object
  • fix output of template camera when pressing "C"
  • improved move_camera()
  • added key-press R to reset camera viewup to closest orthogonal viewup added corresponding method plotter.reset_viewup()
  • added press . to fly to last clicked point and zoom in

picture.py

  • generate false colors for an image with Picture().cmap()

pyplot.py

  • clicking on a histogram shows the bin value
  • add as2d() method to freeze a plot in 2d canvas, without mouse interaction (experimental)

shapes.py

  • Added support for chinese and japanese chars
  • Added font "ComicMono"
  • added possibility to create a disc sector in Disc(angle_range=...)

tetmesh.py

  • added compute_tets_volume()
  • added check_validity()

volume.py

  • added vtkFlyingEdges3D instead of contouring, which is faster.

Examples

New/Revised

examples/basic/color_mesh_cells1.py examples/basic/color_mesh_cells2.py examples/pyplot/fit_curve.py examples/pyplot/histo_2d_a.py examples/pyplot/histo_2d_b.py examples/other/flag_labels2.py examples/volumetric/image_false_colors.py

- Python
Published by marcomusy about 3 years ago

vedo - 2022.4.1

This version includes various fixes, but the most important thing is that it implements the snake_case naming scheme (instead of camelCase) for all class methods and functions, so e.g. code like this (in vedo==2022.3.1): python mesh = Mesh("bunny.obj") mesh.cutWithPlane() now becomes (in vedo==2022.4.1): python mesh = Mesh("bunny.obj") mesh.cut_with_plane() ##### <---- Check out the docs in case of doubts.

See discussion #705 @jkissi @zhang-qiang-github @XushanLu @Gjacquenot @FedeClaudi @ManuGraiph @infinity77 @lukablagoje @LogWell @Amin-Fakia @nantille


addons.py

  • improved slider callback interface

mesh.py

  • fixed issue #593

volume.py

  • can warp scalars in a volumetric dataset with warp()

New/Revised Examples

examples/pyplot/fill_gap.py examples/basic/sliders_hsv.py examples/volumetric/slicer2.py examples/volumetric/warp_scalars.py examples/other/qt_window3.py

- Python
Published by marcomusy over 3 years ago

vedo - 2022.3.0

Main changes

  • pep8 parsing with pylint and general cleanup of the code.
  • Volume(np_array) does not need array to be transposed anymore. Warning: this may cause flipping of the x-z axes!

applications.py

  • added SplinePlotter object

pointcloud.py

  • bug fix in clone()
  • added labels2D()
  • added logscale for colormapping in method cmap(..., logscale=True)
  • added explicit label formatting for scalarbars, @XushanLu

plotter.py

  • added breakInteraction() to break window interaction and return to the python execution flow

picture.py

  • added class MatplotlibPicture to embed matplotlib figures as 2d objects in the scene.

shapes.py

  • Added text() method to update 3d text on the fly, by @mkerrin
  • Added pcaEllipse() analogous to pcaEllipsoid() for 2D problems.

utils.py

  • added getUV() method to get the texture coordinates of a 3D point

volume.py

  • Volume(np_array) does not need array to be transposed anymore. Warning: this may cause flipping of the x-z axes!
  • added slicePlane(autocrop=False)

Examples

New/Revised

examples/basic/input_box.py examples/basic/pca_ellipse.py examples/advanced/capping_mesh.py examples/volumetric/numpy2volume2.py examples/volumetric/numpy2volume1.py examples/pyplot/fourier_epicycles.py examples/pyplot/histo_pca.py examples/pyplot/histo_1d_b.py examples/other/flag_labels.py examples/other/remesh_tetgen.py examples/other/pymeshlab2.py

- Python
Published by marcomusy over 3 years ago

vedo - 2022.2.3

This release includes various improvements and bug fixes


base.py

  • alignToBoundingBox() change the default behavior to match exactly the target (affine transform) @jsaintauret
  • added getRGBA() to obtain the actual colors from an object as rendered

pointcloud.py

  • addTrail() simplified.

mesh.py

  • isInside(..., returnIds=True) fixed bug

plotter.py

  • added lookAt(plane='xy') to move the camera to face one of the cartesian planes
  • removed plotter.load() as not really necessary and potentially confusing

pyplot.py

  • add legends to Figures thanks to new method addLegend()

shapes.py

  • moved volume.streamLines to shapes.StreamLines

volume.py

  • added mask(vol) to mask the visualization of a volume

Examples

New/Revised

``` examples/basic/shadow2.py examples/basic/deleteMeshPoints.py examples/basic/ssao.py examples/basic/align6.py examples/basic/pca_ellipsoid.py examples/advanced/gyroid.py examples/volumetric/volumeOperations.py examples/volumetric/streamlines1.py

examples/simulations/orbitals.py examples/simulations/magfield1.py examples/simulations/magfield2.py examples/simulations/pendulum_3d.py

examples/pyplot/histo1db.py examples/pyplot/fitPolynomial1.py examples/pyplot/plotextrayaxis.py

examples/other/pygeodesic1.py examples/other/qt_cutter.py ```

Deleted

examples/other/animation1.py examples/other/animation2.py examples/simulations/alien_life.py examples/simulations/cell_colony.py

- Python
Published by marcomusy almost 4 years ago

vedo - 2022.2.0

Main changes

  • New documentation pages based on pdoc3.
  • general cleanup of the examples
  • simplified licence file by splitting fonts and general MIT licence
  • all vedo/texture/* files removed
  • a new syntax is allowed for changing the current renderer: plotter.at(ren_number).show(mymesh) instead of the (still valid): plotter.show(mymesh, at=ren_number)
  • reverted settings to be a simple import instead of a dictionary (because of pdoc3).

pointcloud.py

  • cmap(arrayName=...) -> cmap(name=...)
  • added chamferDistance() of pointclouds (needs to be double checked)
  • added cutWithMesh(self, keep=True) to return an Assembly of the cut & discarded parts.

mesh.py

  • can now recover the edges of a mesh with mymesh.edges()
  • added tetralize() to tetralize any closed surface mesh

plotter.py

  • keyword change show(interactorStyle=...) -> show(mode=...)
  • added function vedo.close() to close the latest Plotter

picture.py

  • remove by default alpha channel so that images become pickable

pyplot.py

  • Full revision of the existing code.
  • can now create an empty Figure object to be later filled.

With it one can easily create elegant plots and histograms like:

Screenshot from 2022-04-05 22-01-50


shapes.py

  • added Rectangle(radius=...) to have a border radius

tetmesh.py

  • added tetralize() to tetralize any closed surface mesh
  • added addQuality() of tets

settings.py

  • new polygonal fonts added: 'Vogue', 'Brachium', 'Dalim', 'Miro', 'Ubuntu'

Examples:

New/Revised

  • examples/basic/mousehover2.py
  • examples/simulations/wave_equation2d.py
  • examples/advanced/interpolateScalar4.py
  • examples/advanced/timer_callback1.py
  • examples/basic/multirenderers.py
  • examples/advanced/spline_draw.py
  • examples/simulations/museum_problem.py
  • examples/volumetric/tet_explode.py
  • examples/volumetric/tetralize_surface.py
  • examples/other/remesh_tetgen.py
  • examples/pyplot/histo_1d_a.py
  • examples/pyplot/histo_1d_b.py
  • examples/pyplot/histo_1d_c.py
  • examples/pyplot/histo_1d_d.py
  • examples/pyplot/histo_2d.py
  • examples/pyplot/histo_pca.py
  • examples/pyplot/histo_manual.py
  • tests/common/test_pyplot.py
  • examples/pyplot/plot_empty.py
  • examples/pyplot/plot_errband.py
  • examples/pyplot/quiver.py

Deleted

  • examples/pyplot/covid19.py
  • examples/pyplot/histo_1D.py
  • examples/pyplot/histo_2D.py
  • moving_least_squares3D.py
  • examples/other/dolfin/curl2d.py
  • examples/other/dolfin/demo_auto-adaptive-poisson.py
  • examples/other/dolfin/demo_cahn-hilliard.py
  • examples/other/dolfin/ex01_show-mesh.py
  • examples/other/dolfin/ft07_navier_stokes_channel.py
  • examples/other/dolfin/ft08_navier_stokes_cylinder.py
  • examples/other/dolfin/meshEditor.py
  • examples/other/dolfin/simple1Dplot.py

- Python
Published by marcomusy almost 4 years ago

vedo - 2022.1.0

Main changes

  • Quite serious bug fixed in closestPoint() method due to a problem in the upstream vtk9.0 vtkStaticCellLocator class. (https://discourse.vtk.org/t/vtkstaticcelllocator-problem-vtk9-0-3/7854/4)

  • internal global variable settings.plotter_instance must become vedo.plotter_instance.

  • vedo.settings is now a dotted dictionary

  • implemented logging module for managing errors and warnings

  • fixed bug to distanceTo() method


applications.py

  • Brower, IsosurfaceBrowser, Slicer2DPlotter and RayCastPlotter are now Plotter derived classes (not functions)
  • improved IsosurfaceBrowser for speed

io.py

  • improved Video.action(cameras=[...]) to interpolate cameras positions

mesh.py

  • faces of a mesh can be reversed individually with reverse(face_list).
  • fixed bug to distanceTo() method

plotter.py

  • fix closeWindow()
  • add show(..., zoom="tight") to automatically zoom in as close as possible when 2D.

picture.py

  • added binarize() method.
  • added invert() method.

pyplot.py

  • name change cornerPlot -> CornerPlot
  • name change cornerHistogram -> CornerHistogram

shapes.py

  • Line.lineColor() overrides mesh.lineColor() to avoid ambiguities.
  • added line.curvature() method and example in docs.
  • added line.tangents() method and example in docs.

volume.py

  • volume.mesh2Volume() function moved to vedo.mesh.binarize()
  • volume.signedDistanceFromPointCloud() function moved to Points.signedDistance
  • legosurface() changed interface

utils.py

  • function has new keyword sortByColumn(invert=False)

New/Revised examples:

examples/basic/align5.py examples/basic/distance2mesh.py examples/pyplot/fourier_epicycles.py examples/other/ellipt_fourier_desc.py examples/volumetric/image_probe.py examples/volumetric/image_mask.py examples/pyplot/histo_3D.py examples/other/napari1.py examples/other/makeVideo.py examples/volumetric/volumeFromMesh.py examples/volumetric/mesh2volume.py

- Python
Published by marcomusy almost 4 years ago

vedo - 2022.0.1

Main changes


colors.py

  • minor fixes

cli.py

New CLI mode to emulate eog for convenient visualization of common format images :

vedo --eog https://corepetfood.com/files/2019/07/kitten-e1568311742288-1440x900.jpg Press: up/down to modify level (or drag mouse) left/right to modify window m to mirror image t to rotate image by 90 deg k to enhance b&w image s to apply gaussian smoothing S to save image as png h to print this help banner


plotter.py

  • added enableErase() enableRenderer() useDepthPeeling(at) methods
  • added addScaleIndicator() to add to the scene an indicator of absolute size of objects (needs settings.useParallelProjection = True)

pointcloud.py

  • added smoothLloyd2D() for smoothing pointclouds in 2D
  • vtkCellLocator seems to have a problem with single cell meshes (#558), fixed using vtkStaticCellLocator which behaves normally

shapes.py

  • added Line().pattern() to create a dashed line with a user defined pattern.
  • fixed bug in Text2D()

New/Revised examples:

examples/basic/shadow2.py

- Python
Published by marcomusy about 4 years ago

vedo - 2021.0.7

Various fixes, requires vtk<9.1.0 while some issues are being fixed.

- Python
Published by marcomusy over 4 years ago

vedo - v2021.0.6

Main changes

  • various fixes

base.py

  • introduced new sintax to set/retrieve a mesh point data array: myobj.pointdata["arrayname"] same for cell/face data: myobj.celldata["arrayname"]

addons.py

  • added kword LegendBox(markers=...)
  • added kword Slider2D(delayed=True) to act upon mouse release

colors.py

  • fixed small bug in colorMap (only affecting systems without matplotlib)

mesh.py

  • fixed problem in geodesic().
  • added tolerance keyword in intersectWithLine(). Also, now returnIds returns [[pt,cellid]]
  • added kword flag to function merge(..., flag=True) to optionally keep track of the original meshes ids

picture.py

  • added .enhance() method.
  • method .tonumpy() reshape to [nx,ny,nchannels] to match matplotlib standard
  • added .append() to stitch images the current to the left or to the top.
  • added .extent() to specify physical extention of an image.

pointcloud.py

  • cluster() renamed to pointcloud.addClustering()
  • added voronoi() function

New/Revised examples:

vedo -r optics_main1 vedo -r optics_main2 vedo -r optics_main3 vedo -r warp4 vedo -r voronoi vedo -r drag_chain vedo -r morphomatics_tube


- Python
Published by marcomusy over 4 years ago

vedo - 2021.0.5

Main changes

  • Added support for ipygany in jupyter notebooks.
  • Command line interface vedo ... should now work on windows 10 too.
  • added skybox environment with show(..., bg="path/to/file.hdr")
  • added (kind of limited) support to wxpython embedding (analogous to Qt, but open-source)
  • updated pymeshlab examples

base.py

  • added .lighting(metallicity=1, roughness=0.1) to include PBR (physics based rendering).
  • method .printInfo() is now simply .print()

addons.py

  • added SplineTool.nodes() to retrieve current node positions.

plotter.py

  • removed global functions closeWindow() ion() ioff()
  • added record() and play() to store and playback camera and all other events
  • keyword interactorStyle becomes now mode

picture.py

  • added flip keyword to flip xy convention
  • added level() and window() methods to control brightness and contrast of a Picture.
  • added smooth() to make gaussian smoothing of a Picture object.
  • added bw() to make a picture black and white
  • added channels keyword to specify rgba channels to use (useful to remove alpha)
  • added pad() to create a padding margin to a picture
  • added median() a median filter that preserves thin lines and corners
  • added frequencyPassFilter() to filter images based on level of detail frequencies
  • added rotateAntiClockWise() to rotate an image (landscape to portrait and viceversa)
  • added tonumpy() and modified() methods.
  • added tiling() to generate tilings from a single picture
  • extract() renamed to select()

pyplot.py

  • added plot(mode="bar")

pointcloud.py

  • added hausdorffDistance() to compute the Hausdorff distance of two point sets or meshes

volume.py

  • added vmin and vmax keywords to share the same mapping across different volumes
  • renamed getDataArray to tonumpy.

cli.py

  • removed bin/vedo and created entry point from vedo/cli.py (command line interface). This works better on windows systems.
  • vedo -r now colorizes the code dump.

New/Revised examples:

  • vedo -r plot_bars
  • vedo -r alien_life
  • vedo -r pendulum_ode
  • vedo -r earth_model
  • vedo -r qt_window2
  • vedo -r spline_tool
  • vedo -r wx_window1
  • vedo -r picture2mesh
  • vedo -r record_play
  • vedo -r pymeshlab1
  • vedo -r pymeshlab2
  • vedo -r volume_sharemap
  • vedo -r multiwindows1

- Python
Published by marcomusy over 4 years ago

vedo - 2021.0.3

Main changes

  • General improvements to the vedo command line
  • colorcet colormaps are directly usable in vedo. Check example basic/mesh_custom.py

  • general tool for free-hand cutting a mesh can be invoked from command line: vedo --edit https://vedo.embl.es/examples/data/porsche.ply

  • added example search by command line e.g.: vedo --search triangle -i (-i to ignore capital letters)

  • added file(s) info dump by command line e.g.: vedo --info some_image.jpg https://vedo.embl.es/examples/data/porsche.ply

  • pressing shift-A toggles antialiasing for the whole rendering window

  • pressing shift-D toggles depth-peeling algorithm for the current renderer

  • antialiasing set by default on vtk9

  • balloon-style flags are disabled because of a bug in vtk9

Consider installing VTK 8.1.2 for better visualisations when possible (unfortunately this slightly older version is no more available for python >=3.8)


base.py

  • corrected bug on diagonalSize() returning a wrong value

addons.py

  • added addSplineTool() to interactively spline points in space
  • added labelRotation in addScalarBar3D
  • added xShiftAlongY keywords in Axes to slide the whole axis position along another axis
  • added xAxisRotation to rotate the whole axis (ticks and labels)
  • addScalarBar3D() can now render categorical data

colors.py

  • fixed small issue in printc to support different terminals

mesh.py

  • computeNormals() is no more changing the nr of mesh points unless featureAngle is specified
    • added keywords: featureAngle=None, consistency=True
  • intersectWithLine() can now return cell ids, not just points

plotter.py

  • improved automatic text management in show("some text")
  • added computeWorldPosition(point2d) to get the 3d point in the scene from a screen 2d point
  • added addSplineTool() to interactively spline points in space
  • small fix in plotter.add() for offscreen mode.
  • added topicture() to render a scene into a Picture object (to crop, mirror etc)

picture.py

  • added FFT and RFFT, added example fft2d.py
  • can save Picture obj to file as jpg or png

pointcloud.py

  • added cutWithBox(), cutWithLine(), cutWithSphere() and cutWithCylinder() methods

shapes.py

  • fixed small bug in Glyph

volume.py

  • added class VolumeSlice for volume-sliced visualization.

utils.py

  • added roundToDigit(x,p), round number x to significant digit

New/Revised examples:

  • vedo -r koch_fractal
  • vedo -r mesh_custom
  • vedo -r fft2d
  • vedo -r lines_intersect
  • vedo -r cutFreeHand
  • vedo -r spline_tool
  • vedo -r legendbox
  • vedo -r read_volume3
  • vedo -r multi_viewer2

- Python
Published by marcomusy almost 5 years ago

vedo - 2021.0.2

vedo 2021.0.2

A new web page is avaialble! check it out at https://vedo.embl.es

  • python2 is no more supported
  • A dangerous bug in mesh.closestPoint(returnIds=True) has been fixed
  • Added interfaces and examples to libraries iminuit and pymeshlab
  • variable datadir changed to dataurl
  • added ipyvtk_simple option for notebooks rendering

base.py

  • method addPos() (obsolete but still valid) renamed to shift()
  • added shortcut to input the opacity with syntax mesh.color("blue", 0.5)
  • arrays with name "Normals" are set as active normals automatically ( @theponpon )
  • added keyword invert in getTransform() ( @Tai-Hsien )
  • added deleteCells() method

addons.py

  • added mesh cutter with planes and spheres in addition to boxes ( @nantille )
  • major revision of the Axes class. with new added feature like axes inversion, free rotations
  • keyword xFlipText disappeared as is now substituted by xLabelRotation
  • Added xyShift to shift the whole cartesian plane along one axis ( @JGarrett7 )
  • Axes can be flipped with their range with xInverted (caveat: this does not at all affect the world coordinate system!)
  • new class LegendBox to show a legend with icons

colors.py

  • vedo is now independent of matplotlib for colormaps
  • added new bootstrap5 color scheme (e.g. c='red1', 'red2', ..., 'red9', or in short: c='r1', 'r2', ..., 'r9') Lower index means darker.
  • added rgb2hex() and hex2rgb() functions
  • fixed bug on printc() and added settings.enablePrintColor. #337

mesh.py

  • fixed bug in splitByConnectivity() ( @jsanchez679 )
  • added method addConnectivity() to add a connectivity array to mesh points
  • added method isClosed() ti return if mesh is watertight (no holes)

plotter.py

  • improved resetcam behaviour
  • passing camera no more empties the passed dictionary (thanks @icemtel )
  • verbose keyword has been removed (as hard to maintain)
  • mouse clicking can now pick Picture not only Mesh
  • revised and improved callback functionality with plotter.addCallback() (see examples mousehighlight, mousehover)
  • new way of creating a callback loop with a timer (thanks @nantille - see examples timer_callback)

picture.py

  • attribute picture.shape holds the shape of the picture in pixels
  • added gif file reader to return a list of Picture objs.
  • added clone() method.

pointcloud.py

  • added fitCircle() to fit a circle to a line in 3D.
  • added a revision of self.densify(). Removed densifyCloud(). #338

pyplot.py

  • a brand new function fit() to perform polynomial fitting to data with error bars in both x and y with correct estimation of error bands via bootstrap method (there are out there soo many wrong scripts in matplotlib!)
  • added pyplot.matrix() to plot numpy matrices (eg. correlation/covariance matrix)
  • various minor fixes

shapes.py

  • Spline can control the easing, the density of points along the line.
  • support for closed splines.
  • Text2D completely rewritten. Can now update it after creation (e.g. mytxt.text("test").color("g"))

volume.py

  • added volume.shade() which can be True or False. Disable by default (was previously enabled) to be used in conjunction with volume.lighting() to create a mesh-like rendering of the volume. (thanks to @nantille for debugging)
  • fixed example interpolateVolume (thanks @rafaelmarch3 )

New/Revised examples:

  • vedo -r colorcubes
  • vedo -r cutter
  • vedo -r spline_ease
  • vedo -r gyroid
  • vedo -r align6
  • vedo -r colormap_list
  • vedo -r bloch
  • vedo -r slicePlane1
  • vedo -r slicePlane2
  • vedo -r pygmsh_cut

  • vedo -r mousehighlight

  • vedo -r mousehover

  • vedo -r line2mesh_quads

  • vedo -r line2mesh_tri

  • vedo -r pointsCutMesh2

  • vedo -r hoverLegend

  • vedo -r iminuit

  • vedo -r pymeshlab1

  • vedo -r timer_callback1

  • vedo -r timer_callback2

  • vedo -r fitCircle

  • vedo -r anim_lines

  • vedo -r earthquake_browser

  • vedo -r np_matrix

  • vedo -r customAxes2

  • vedo -r customAxes3

  • vedo -r glyphs3

  • vedo -r fitPolynomial1

  • vedo -r fitPolynomial2

  • vedo -r histo_gauss

  • vedo -r plot_polar

  • vedo -r densifycloud

  • vedo -r interpolateVolume

- Python
Published by marcomusy almost 5 years ago

vedo - 2020.4.2

Main changes

  • Removed restriction VTK<9. Even so, VTK9 seems significantly slower and unexpected behaviors are still possible.

  • Various minor issues have been fixed.


addons.py:

  • name change addLight() -> Light(). Improved API. Revised example basic/lights.py (thanks to @mit10000 and @theponpon input #249)
  • added size keyword for addScalarBar() to control size in pixels (@RubendeBruin #237)

io.py:

  • added default bitrate specification Video.options="-b:v 8000k" (for ffmpeg) seems to produce much better quality results - tested on linux system only.

plotter.py:

  • modified plotter.addLight()
  • added warning to non-existing camera keywords (@FedeClaudi #244)
  • In rendering window:
    • pressing 3 cycles over predefined set of textures for clicked Mesh objects
    • pressing I picks the color under the mouse (uses colors.pickColor())

shapes.py:

  • added class Brace (see example scatter3.py)
  • can sweep() a Line object to create a surface

New/Revised examples:

vedo -r rgbaImage vedo -r cutWithMesh2 vedo -r scatter3 vedo -r lights vedo -r plot_density4d (thanks to @edmontz) vedo -r app_raycaster vedo -r app_isobrowser

- Python
Published by marcomusy about 5 years ago

vedo - 2020.4.1

New in vedo 2020.4.1

  • Fixed pip problem (hopefully solving issue #185 raised by @RizzerOnGitHub)
  • Typo in readme fixed (thanks to @danielhrisca)
  • Global variable settings.collectable_actors is now obsolete and void.
  • Various minor issues have been fixed too.

addons.py:

  • buildAxes() now admits a header title
  • addScalarBar3D() returns self, use self.scalarbar to access the scalarbar object (e.g for scaling, rotating and repositioning it)
  • makeLUT() renamed to buildLUT() with new examples, which includes indicators for NaN's and out of scale values:


base.py:

  • setTransform() -> applyTransform() accepts now a python or numpy matrix (thanks to @FedeClaudi input)
  • added removePointArray() and removeCellArray() methods
  • added divergence(), vorticity() methods
  • added removePointArray() and removeCellArray() methods (thanks to @Tai-Hsien input)

colors.py:

  • added ask() method to prompt user input from command line
  • added printc(dbg=1) mode to help debugging

io.py:

  • load() method can load and return normal npy or npz numpy data files

mesh.py:

  • clone(deep=True), deep can be False to generate a shallow copy of the obj.

picture.py:

  • polygonize(), create a polygonal Mesh from a Picture by filling regions above a specified threshold

plotter.py:

  • flyTo(), fly camera to the specified point.
  • export(), to export scene.npz

pointscloud.py

  • interpolateDataFrom(), Interpolate over source to port its data onto the current object using various kernels.

pyplot.py:

  • removed directedgraph.clean() because it's just wrong (might marginally affect @DeepaMahm)
  • added whisker() function to generate whisker-style plots


shapes.py:

  • added CSpline class, to generate a Cardinal Spline object.

New examples:

vedo -r interpolateMeshArray vedo -r interpolateScalar1 vedo -r spline_draw vedo -r mesh_lut vedo -r whiskers

- Python
Published by marcomusy over 5 years ago

vedo - 2020.4.0

vedo 2020.4.0

Main changes - mesh and volume data is moved from the package to vedo.embl.es/examples/data https://vedo.embl.es/examples/data/ they are downloaded on the fly and cached - 14 new polygonized 3D fonts are available, making the old vtk default obsolete Font: Bongas Font: Calco Font: Comae Font: Glasgo Font: Inversionz Font: Kanopus Font: LionelOfParis Font: LogoType (supports Russian, Japanese and Chinese chars) Font: Normografo Font: Quikhand Font: SmartCouric Font: Theemim Font: VictorMono

Default font is Normografo, can be changed with e.g. settings.useDefaultFont = "Theemim"

Latex-like syntax is supported in Text() allowing to use Greek and math symbols in axes and plot titles: Type vedo -r fonts to generate the above tables.

addons: - Ruler(): create a 3D ruler to indicate the distance of two points - buildRulerAxes(): a new axis style (7) formed by 3 rulers - many improvements to default axis style 1 - New axis style 11: generates a thin lined square floor

Plotter: - show(..., newplotter=True) -> show(..., new=True) - added methods: render(), resetCamera() and backgroundColor(c1, c2, at) - can now change transparency using arrow keys instead of "m,./" Pressing -+ cycles through available axes styles.

utils: - added resampleArrays() - systemReport() - class dotdict: A dictionary supporting dot notation. - trimesh2vtk() -> trimesh2vedo() (check @YimingXu1213) - vtk2trimesh() -> vedo2trimesh()

io: - can now save and load object transformation to .mat file

mesh and pointclouds: - coloring with pointColors() and cellColors() is merged into method cmap() - meshes can be described by new vignette() and caption() - useBounds() tells the camera to keep inot account mesh when resetting - added gradient() to return the gradient of the input scalar as numpy array

shapes: - convexHull() -> ConvexHull() - added VedoLogo() to generate the 3D logo of the package - major improvements to Text()

examples: - new or updated examples are: vedo -r isolines vedo -r silhouette2 (thanks to @zhouzq-thu ) vedo -r meshquality vedo -r mesh_smoother2 vedo -r vpolyscope (needs pip install polyscope) vedo -r flag_labels vedo -r customAxes vedo -r fonts3d vedo -r scatter2 vedo -r scatter3 vedo -r covid19 vedo -r caption

- Python
Published by marcomusy over 5 years ago

vedo - 2020.3.4

Various improvements - new examples: vedo -r multi_viewer vedo -r clone2d vedo -r plot_density - read files and scenes from dropbox and/or web links - vtkio.py moved to io.py - fixed bug @jsanchez679 in cutWithMesh() - mesh.normalize() does not shift to origin the mesh anymore - improved axes=10 and axes=5 customization - requires vtk<=8.1.2 as vtk-9 seems to have a lot of issues

- Python
Published by marcomusy over 5 years ago

vedo - 2020.3.3

  • fixed bug for obj format writing by @FedeClaudi
  • fixed bug on Text2D justification

- Python
Published by marcomusy over 5 years ago

vedo - 2020.3.1

  • Various improvements and fixes
  • better support for tetrahedral meshes
  • non-blocking example added
  • 3d text supports super/subscripts
  • automatically detect spyder environment

- Python
Published by marcomusy over 5 years ago

vedo - 2020.3.0

General changes: - addPointScalars and addPointVectors now are merged into new addPointArray() method. - addCellScalars and addCellVectors now are merged into new addCellArray() method. - added mesh.isobands() to produce color bands for scalars in a mesh, analogous to isolines() - completely revised addScalarbar and addScalarBar3D which now works also for volumes. - can export a full html page with k3d with exportWindow("page.html")

New application module contains more elaborated and high level functionalities: - Slicer() to generate a Plotter window with slicing planes for the input Volume. - Slicer2d() creates a 2D window with a single balck and white slice of a Volume, which can be oriented arbitrarily in space. - RayCaster() generates a Plotter window for volume rendering using ray casting. - IsosurfaceBrowser() generates a Plotter window for Volume isosurfacing using a slider. - Browser() generates a Plotter window to browse a list of objects using a slider.

In backends module for jupyter notebooks: - Updated k3d interface to add mesh and volumes names in the rendering menu - Improved rendering for lines.

In volume module: - added slicePlane() to slice a volume in arbitrary orientation

- Python
Published by marcomusy almost 6 years ago

vedo - 2020.2.4

  • Minor improvements.
  • API change in smoothMLS2D() and smoothMLS1D()
  • all examples can be run from command line e.g. vtkplotter -ir covid19 or listed with vtkplotter --list

- Python
Published by marcomusy almost 6 years ago

vedo - 2020.2.3

various fixes

- Python
Published by marcomusy almost 6 years ago

vedo - 2020.2.1

  • various bug fixes

- Python
Published by marcomusy almost 6 years ago

vedo - 2020.2.0

  • improved vtkplotter.pyplot submodule
  • background color now defaults to white
  • added Mesh.idLabels() to generate cells and point ID labels
  • methods like rotateX().pos() now operate in left-to-right order (as it should be)
  • Text is split into Text2D and Text (for 3D)

- Python
Published by marcomusy about 6 years ago

vedo - 2020.1.0

  • revised plotting
  • added matplotlib-like syntax as in plot()
  • spherical histograms
  • background color now defaults to white
  • added Mesh.idLabels() to generate cells and point ID labels
  • added new examples and general cleanup
  • circleCI now works for the stable fenics release

- Python
Published by marcomusy about 6 years ago

vedo - 2020.0.2

  • Added shapes Arrow2D and Arrows2D, SphericGrid, CubicGrid
  • completely revised customizable axes=1 type
    • axes can be created for each object independently
  • quiver plots, scatter plots, error bands plots
  • plotting in spherical coordinates
  • Added type '2d' backend to plot static images in notebooks. Available backends: python from vtkplotter import * # embedWindow('2d') # embedWindow('k3d') # embedWindow('itk') # embedWindow('panel') # embedWindow(False)
  • Added wavefront format .OBJ writer

- Python
Published by marcomusy about 6 years ago

vedo - 2020.0.1

  • added type axes=11 (horizontal grid)
  • fix bug by @m-albert on Volume from numpy object
  • fix typos in docs
  • change old fashioned list(zip()) to np.stack()
  • change [0]*len(z) to np.zeros_like(z)
  • add testing directory with circleCI
  • examples and package are now split into two separate repos
  • added possibility to run any example from CLI vtkplotter --run shrink.py or list them all with vtkplotter --list
  • reshuffled methods by splitting actors.py module
  • general improvements and stability
  • some methods are now deprecated: getPoints becomes points() etc.
  • Actor() becomes Mesh()
  • added advanced/centerline.py examples

- Python
Published by marcomusy about 6 years ago

vedo - 2019.4.10

  • added PDV paraview file reading.
  • PDB protein data bank file reader
  • added error bars in plotxy()
  • fast fitting of 2d circles with utils.fitCircle2D()
  • added flag-style pop-up labels for meshes and volumes
  • added settings for resolving polygonal clashes with mesh edges
  • built in set of parametric surfaces in shapes.py module
  • improved plotting2d with error bars
  • added warpMeshToPoint() method
  • improved texture control, can pass texture coords explicitly
  • fix trimesh problem with coloring vertices
  • can use "panel" backend in notebooks

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.9

  • various fixes
  • polar axes type axes=11 added in show()

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.6

  • added new window shape descriptor (in examples/basic/multiwindows.py)
  • Kochanek-Bartel splining
  • polygon extrusion
  • select cells within input bounds

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.5

  • improved histogramming
  • minor bug fixes

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.4

  • added animation module
  • compatible with dolfin 2019, added new examples
  • pygmsh example
  • fixing of qt window opening in notebooks

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.3

  • added new itkwidgets as notebook backend (still incomplete)
  • fixed dangerous bug in utils.cart2spher(x, y, z), which can seriously affect analyses using it.
  • GUI for windows users, including a drag&drop icon
  • new keypress options (lighting/shading), improved response

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.1

  • improved support for trimesh
  • bug fixes
  • export dolfin xml format
  • k3d camera manipulation via vtkCamera obj

- Python
Published by marcomusy over 6 years ago

vedo - 2019.4.0

  • many small improvements and bug fixes
  • export objects and whole rendering scenes to numpy files.
  • visualization of tetrahedral meshes with examples

- Python
Published by marcomusy over 6 years ago

vedo - 2019.3.5

  • trimesh support
  • more volumetric examples and functions
  • i/o revised

- Python
Published by marcomusy over 6 years ago

vedo - 2019.3.4

  • qt fixes
  • tensors visulization
  • minor improvements

- Python
Published by marcomusy over 6 years ago

vedo - 2019.3.3

  • various fixes

- Python
Published by marcomusy over 6 years ago

vedo - 2019.3.1

  • support for jupyter notebooks via K3D
  • full axes customization
  • added new examples and notebooks

- Python
Published by marcomusy over 6 years ago

vedo - 2019.3.0

  • i/o semplification

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.2.2

  • added new examples for dolfin
  • various fixes
  • better lighting options

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.2.1

  • simple shadowing
  • python2 fix
  • 4 new examples
  • added new volumetric functions

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.2.0

  • x3dom for embeeding into web pages
  • closing windows

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.1.6

  • streamlines for dolfin
  • inset rendering
  • new examples added
  • small bug fixes

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.1.5

  • various fixes
  • extended dolfin examples
  • colored glyphs revised
  • mapping point scalars to cells and viceversa
  • automatic versioning via version.py

- Python
Published by marcomusy almost 7 years ago

vedo -

add latex rendering probing points on volumes

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.1.3

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.1.2

- Python
Published by marcomusy almost 7 years ago

vedo - 2019.1.1

dolfin support

- Python
Published by marcomusy almost 7 years ago

vedo -

- Python
Published by marcomusy almost 7 years ago