All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed
invalid enumeranterror (1280) on call toViewer.show()which occurs due to lingering OpenGL errors.
- Fixed a bug with
BufferGeometryIndexing.
- Added
Componentbase class with standardizedwidgetattribute andupdate()method. - Added
BoundComponentclass for components bound to object attributes with automatic value synchronization. - Added new components:
BooleanToggle,ColorPicker,NumberEdit,Container,Tabform.
- Complete restructuring of compas_viewer UI architecture to implement component-based system.
- Replaced dialogs with integrated components:
CameraSettingsDialog→CameraSetting,ObjectSettingDialog→ObjectSetting. - Enhanced existing components: Updated
Slider,TextEdit,Buttonto use new component-based system. - Moved UI elements to dedicated
components/folder. - Refactored
MenuBar,ToolBar,SideDock,MainWindow,StatusBar,ViewPortto use new component system. - Updated
UIclass to use new component architecture. - All UI components now inherit from
Baseclass for consistent structure. - Improved data binding with automatic attribute synchronization.
- Removed deprecated components:
ColorComboBox,ComboBox,DoubleEdit,LineEdit,LabelWidget. - Removed
CameraSettingsDialogandObjectSettingDialog(replaced with integrated components).
- Fixed the bug of missing geometry shader in released package.
- Added ability to add and remove objects in real-time after viewer starts running.
- Added option to drag and drop serialized JSON files of scene and geometries.
- Added shortcut
Delto remove selected objects in scene. - Added
OffscreenBufferContextfor better maintainability on instance rendering pipeline.
- Made
linewidthworking again throughGeometryShader. - Fixed a bug of viewer crashing with empty scene.
- Fixed a bug with updating color in object setting form.
- Added back
BufferObjectandBufferGeometryto create geometry from low-level buffer data.
- Fixed kwargs error when assigning
vertexcolor. - Fixed a bug of mis-matching colors and positions length for
GeometryObjectbuffer data.
- Added
BufferManagerto handle buffer data for all the scene objects. - Added
make_texture_bufferingl.pyfor matrix and settings array.
- Greatly improved performance for scenes with large number of objects.
- All scene objects are rendered once in a combined buffer through single draw call.
- Updated shaders to version OpenGL 330 Core Profile.
- Implemented matrix and settings array as texture buffer instead of uniforms to improve performance.
- Blending of transparent objects is handled in a second draw on top of the opaque objects.
- Removed all low-level buffer related functions from
SceneObjects, which is now handled together byBufferManager. - Removed redundant Shaders:
grid_shader,instance_shader,surface_shaderandarrow_shader. - Removed
paint_instancefromRendereras it handled by a shader flag.
- Added
TextEditto handlenamechange. - Added
DefaultLayoutto handle gernerallayoutsetting to minimal. - Added
ColorDialogto manage color dialog. - Added
SettingLayoutto manage complex layout with config input. - Added
robot.pyexample. - Added
orthooption to view. - Added
vertical_alignandhorizontal_alignoptions toTag. - Added example files in the documentation.
- Fixed
GroupObjectpointcolornot found error with implimentexclude_type_list. - Fixed
Taginconsistent height issue. - Dynamically adjust camera pan delta based on distacne.
- Added
listto accepted types forScene.add. - Added
list[float]to accepted types forCamera.positionandCamera.target. - Added
unittoViewerandConfig. - Added
bounding_boxand_update_bounding_boxtoBufferObject.
- Fixed
opacitybug withBufferObject. - Updated
SceneFormto avoid completely reload when scene objects not changed. - Updated callback to
SceneTree. - Updated
ObjectSettingandCameraSettingto support setting from config. - Updated
Sliderto be able change value withTextEdit
- Added
scripts/treeform.pyexample.
- Fixed issue of
SceneFormcollapsing when new object is selected. - Toggling
showof Group or objects will hide/show all its descendents. - Moved assets related files to
assetsfolder. - Fixed a bug to allow changing
Viewer.renderer.viewbeforeViewer.show(). - Fixed a bug of grid not showing while the scene is empty.
- Removed
is_lockedfromcompas_viewer.scene.ViewerSceneObject.
- Fixed missing shader files.
- Added
compas_viewer.components.dialogcomponent which handle camera setting popup window. - Added
compas_viewer.components.combo_boxcomponent. - Added
ViewComboBoxcomponent handle viewmode change. - Added
compas_viewer.objects.BufferGeometryandcompas_viewer.objects.BufferObject. - Added
clear_sceneaction. - Added
compas_viewer.components.SceneForm. - Added
callbackforcompas_viewer.components.TreeForm. - Added
compas_viewer.scene.ShapeObject. - Added
compas_viewer.commands.capture_viewand corresponding command. - Added default colors to
MeshObject. - Added default colors to
GeometryObject. - Added
object_info_cmdforcompas_viewer.commends. - Added
gridmodetoGridObject. - Added
checkboxtocompas_viewer.components.SceneForm.
- Fixed
actionbug. - Updated
compas_viewer.scene.ViewerSceneto support save/load and switching. - Changed
is_visibleparameters toshowincompas_viewer.scene.ViewerSceneObjectclasses. - Changed
GridObjectto draw direcly inRender. - Fixed
CameraSettingsDialogupdate current position bug. - update
slidercomponent. - Implemented downsampling for window selection to improve performance.
- Made
TreeForminteractive. - Fixed
load_sceneaction bug. - Changed base of shapes to
compas_viewer.scene.ShapeObject. - Changed
FrameObjectto something with just 3 axes. - Restructured
SceneObjectsto accepctitemas kwargs. - Fixed
compas_viewer.components.sliderstep attribute. - Fixed
renderer.viewdistorted init. - Fixed
tagobjectby adding back FreeSans.ttf.
- Added
@viewer.on. - Added
SideDock.
- Added
button,double_editandtreeformcomponents.
- Added
PointcloudObject. - Added
compas_viewer.base.Baseto access viewer singleton. - Added
compas_viewer.singleton.SingletonMetaandcompas_viewer.singleton.Singleton. - Added
compas_viewer.scene.Groupandcompas_viewer.scene.GroupObject. - Added
PolyhedronObject. - Added
compas_viewer.scene.NurbsCurveObject.
- Changed
NurbsSurfaceObjectto use tessellation function ofOCCBrep, show boundary curves instead of control curves. - Renamed all lazy setup functions to
lazy_init. - Fixed camera initialization issue.
- Fixed and brought back
CollectionObject. - Updated objects color settings to align to
pointcolor,linecolor,facecolor. - Updated objects visibility settings to align to
show_points,show_lines,show_faces. - Updated objects drawing settings to align to
linewidth,pointsize. - Updated
PolygonObjectshow faces.
- removed
PyOpenGL-acceleratefrom requirements.txt
- Added singletone
compas_viewer.viewer - Added singletone
compas_viewer.config - Added
compas_viewer.ui.uiandcompas_viewer.components.
- Changed
compas_viewer.layouttocompas_viewer.ui.ui.
- Removed old version of
compas_viewer.viewer.
- Added non-python files to the release.
- Added
*argsin theViewer.addmethod, resolve #85. - Added
TransformationandVisualizationsections for thePropertyform. - Added
Propertyformand its example in the documentation. - Added example
layout/tree_view. - Added functionality of multiple widgets in main viewport.
- Added example
object/scale.py. - Added
RobotModelObjectand its example in the documentation. - Added support to pinch gesture for zooming on touch pads.
- Pin the
PySide6version to6.6.1. - Auto set the camera scale when
zoom_extendis called. - Updated the
Tagexample. - Updated the
RobotModelObjectexample. - Update examples in the documentation.
- Renamed
surfacesintoviewmeshin everyViewerGeometryObject. - Renamed
scene.jsontoviewer.jsonandscene_configtoviewer_config. - Unify color naming. variables that control the colors of geometries are
surfacecolor,linecolor,pointcolor, yet variables that control the colors of meshes arefacecolor,edgecolor,vertexcolor. - Added
ViewerGeometryObjectas the abstract class for all the geometry objects. Other specific geometry objects are inherited from this class. - Changed
DataTypeintoShaderDataType. Resolve to #46. - Added
ViewerSceneas an attribute of theViewerclass. resolve #28. - Bug fix of #73.
- Improved argument passing mechanism in the
Sliderclass. Close #76. - Documentation images and code correction.
- Improved typing hints of
CollectionObject. - Changed to the point object is
show_points = Trueby default. Refer to #73. - Changed from
super(__t, __obj)tosuper()as the new version. - Temporarily removed
rgbawhich is causing blank screen for macos. - Re-enabled
rgbasupport by switching tovec4for color attributes in shader. - Fixed the bug of missing
itemparameter in theViewer.addmethod. - Fixed tag text spacing and alignment issue.
- Fixed mouse selection flickering issue.
- Fixed the issue of zoom on mac.
- Removed
utilitiesfolder.
- Fixed the bug to include
datafolder in the package.
- Added examples in the doc.
- Added
Treeform. - Added basic layout elements:
MenubarLayout,ToolbarLayout,StatusbarLayout,SidedockLayout. - Added Actions: delete_selected, camera_info, selection_info.
- Added basic buildup of
Layout's configurations. The .json template and the configuration classes. Layoutclass basic buildup:Layout,ViewportLayout,WindowLayout.- Added terminal activation of the viewer.
- Added
PyOpenGL_acceleratedependency. - Added repo images.
- Added
installationdocumentation. - Added documentations: index, api, etc. Mockups style is improved.
- Added
DeleteSelectedaction class. - Added
ShaderDataTypeas the data type template for generating the buffer. - Added
NetworkObjectfor the scene objects. - Added
compas_viewer.scene.ViewerSceneObject.LINEWIDTH_SELECTION_INCREMENTALto enhance line width for selection only. - Added
BRepObject,CapsuleObject,ConeObject,CylinderObject,PlaneObject,SphereObject,EllipseObject,TorusObject,PolygonObject,PolylineObject,BoxObject. The geometric resolution is handled by thecompas_viewer.scene.ViewerSceneObject.LINEARDEFLECTION. - Added
VectorObjectfor the scene objects with mesh-based display for better visual effect. - Added "instance" render mode for debugging and geometric analysis.
- Added contents in the
README.md. - Added full support for selection: drag_selection, drag_deselection, multiselect, deselect, select.
- Added
SelectAllaction class. - Added
LookAtaction class. - Added
compas_viewer.Viewer.add_actionfor adding actions to the viewer. - Added
Signalstructure for theActionclass. - Added complete key, mouse and modifier support from
PySide6. - Added
ZoomSelectedandGLInfoclasses as template action classes. - Added
Actionclass. - Added
Controllerclass for the controller. - Added
GridandGridObjectfor the scene objects. - Added
TagObject,LineObjectandPointObjectfor the scene objects. - Added test files for configurations.
- Added doc build, and many doc-building syntax fixes.
- Added
scene.jsonfor storing the scene configurations. Mostly store the default appearance features of the objects. compasrecognizescompas_viewercontext, and map the accordingcompas_viewerobjects to thecompasobjects.- Added two main scene objects:
ViewerSceneObjectandMeshObject.BufferObjectno longer exists but replaced byViewerSceneObject. - Added
addfunction in theViewerclass for adding objects to the scene, which is also the entry for imputing user-defined attributes. - Added and formatted
ShaderandCamera. - Added a
RenderConfigfor configuring the Render object. - Added the
shadersand theShaderclass in the shader folder. - Created the
Camera,metricsandglfunctions and classes (most copied from the view2). - Adjustment of the
ControllerConfigand `ViewerConfig``. - Adjustment of the
Viewer. - Basic
Viewerbuildup with the widgets. - Configurations:
controller_configandviewer_config - Code and File structure diagrams.
- Added
NetworkObject.
- Fixed #64.
- Patch github actions.
- Fix #63.
- Updated the configuration architecture.
- Updated the
delete_selectedaction. - Renamed
NetworkObjecttoGraphObject. See commit: https://github.com/compas-dev/compas/commit/7f7098c11a1a4c3c8c0b527c8f610d10adbba1a6#diff-4e906e478c68aaee46648b7323ed68106084e647748b4e0bcb5fd440c3e162fb. - Updated the
Slider. - Documentation improved.
Timeris moved to utilities.- Updated
BRepObjectto connect the latest OCC package, close #48. - Fixed opacity bug in shaded mode.
- Fixed main page link.
- Fixed issue #17 and avoid using
vertex_xyz. - Update the dependency of
compas. - The
Indexpage. - Typing hints improved, now
compas_vieweronly support Python 3.9+. - Introduce decorator @lru_cache() to reduce duplicate calculations.
- Refactored the
Selectorand the instance_map structure, the main frame rate is higher and selection action is faster. - Fixed the bug of the
Selector, drag selection is now more accurate. - More performative instance map and QObject-based selection architecture.
- Naming of the keys, mouses, and modifiers are changed. The key string which is the same as what it was called in the PySide6.QtCore.Qt, with lowercases and with prefix&underscores removed.
Gridobject inherits fromcompas.data.Data.- Update the compatibility of the
ViewerSceneObjectto the coreSceneObject. - Refactored the
ControllerConfig. - Fix Qt package of
PySide6. - Moved
glfromrenderfolder to theutilitiesfolder. - All color representations are now in
compas.colors.Color. - Reduce the
numpy.arrayrepresentation. Mostly uselistinstead for clarity. - Comments improved and better type hints.
- Fixed issue #200 by adding installation package path.
- Removed
self.objectsfrom theRenderclass.` - Replace the
GridandGridObjectbut byFrameObject, which also hooks theFramein compas.