Code Monkey home page Code Monkey logo

blockbuilder's People

Contributors

dependabot-preview[bot] avatar guillaumefavelier avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

blockbuilder's Issues

Dependency to plotter

All the elements of the scene have a dependency to plotter.

Is there a way to refactor the code so that the elements can be instantiated without being given a plotter?

Use Qt resources package to organize icons

Create a blockbuilder.qrc resource configuration file then build the resources with:

pyrcc5 -o blockbuilder/icons/resources.py blockbuilder/icons/mne.qrc

Then load the resources in the code with:

from .icons import resources
resources.qInitResources()
icon = QIcon(':/icon.svg')

Add a paint mode

Create a standalone mode (additionally to add mode and delete mode) called paint mode. The selector of this mode modifies the color of it's selection.

This requires a color picker somehow.

Add suppport for library

The goal is to import/reuse previously built set of blocks.
Those sets would be saved in a library.

Placement of the toolbar

The toolbar can be set by default at different locations: left, right, top, bottom

This should be configured in rcParams.

Add issue templates

Issue templates are really useful for user feedbacks (bugs, requests, ...etc). At least basic templates should be added.

Milestone 0.03

Among the goals of the roadmap, the following will be available for the next milestone:

  • Refactor area selection (experimental code)
  • Allow the app to hold it's own event loop
  • Add an option to toggle the block edges visibility
  • Fix OpenGL context creation issue (at Initialize())
  • Disable default VTK interaction
  • Fix bug with coincident topology between grid and blocks
  • Add key bindings to rcParams (at least for camera bindings)
  • Refactor graphics completely and rename into plotter
  • Remove dependency to pyvista
  • Add an area selection toggle
  • Add docstrings and make pydocstyle happy
  • Add directory changes and use one changelog for each release

Add basic help

Add a button in the toolbar that displays a short description of the features with the associated key bindings.

Add a settings menu

Add a way to configure basic app settings at runtime.
Think about the influence on rcParams.

Reset scene does not reset colors in the IHM

Dear Guillaume,
Using the reset button reset the scene and the brush as expected, hela it does not reset the color widget in the IHM which could be misleadeing for the user.

Great project otherwise !

Add support for Windows app

To start the app on Windows, one needs to use the dedicated script file.

From the blockbuilder code source directory:

> scripts\blockbuilder.bat

This needs to be fixed, the user should not require the source code and be able to start the app by just typing:

> blockbuilder

But right now, doing so causes:

C:\anaconda3\envs\Blockbuilder\Scripts\blockbuilder....\python.exe: can't open file 'C:\anaconda3\envs\Blockbuilder\Scripts\blockbuilder': [Errno 2] No such file or directory

Black scene on 0.6.0

Dear Guillaume,

I have installed blockbuilder using pip and forced the vtk version to be 9 (python 3.8.3)
On the current state, the scene is only a black screen.

Additionally, the color picker has a strange behavior as it seems to show a random color (not the one picked) except when the window is not focused, then it shows the right color.

C.

Set the project as an app

The goal is to install the app with pip install blockbuilder and then just call blockbuilder to launch.

This requires #30 and #31

Moving blocksets

First, perform a 3d area selection by click and drag on the 3 axes. At the mouse button release, the selection is registered and is bound to the cursor. The mouse can then freely decide on the new postion using the 3d selection as a preview for the final destination. Finally, click and release to move the blockset.

Make Builder inherits from Plotter

The end gold is to set up the project as an app.

A good way to achieve this is to make Builder inherits from Plotter and Plotter inherits directly from QMainWindow.

That way, one Builder instance contains all the informations needed without the need to use association. It's then easier to maintain and configure.

This change requires #6

Add a way to change the geometry of a block

The basic operation here consists in removing the selected vertex of the block. Its geometry will change accordingly so it won't be a cube anymore but many new shapes are available with this feature.

Roadmap

  • Add a photorealistic mode (graphic quality should then be low, medium and ultra)

  • Follow semantic versioning and update release process

  • Set the project as an app (pip install blockbuilder then just blockbuilder to launch)

  • Show only the current floor (with subgrid/subsample, requires to update the pipeline)

  • Refactor interaction support into a dedicated class

  • Add support for logging

  • Paint mode (default painting color to build mode)

  • Add support for PySide

  • Add a way to load/save a project (all config plus state of block, xml based?)

  • Add a benchmark and show fps

  • Add a basic description of the project (README.md)

  • Add support for pytest

  • Use Qt resources package to organize icons

  • ReDo/UnDo action buttons

  • Refine the documentation (Parameters, Returns)

  • Add a way to control the camera with the mouse right-click

  • Add a way to configure the app settings (based on params?)

  • Add property/setter functions (i.e. Block.origin)

  • Add suppport for library (reuse previously built blockset)

  • Add basic help (short description of features plus key bindings)

  • Add a way to change the geometry of a block (deletion of block vertices -> not block anymore)

  • The selectors are duplicated in the middle when symmetry is on (low priority)

  • Is there a way to improve dependency to Plotter? (all over the place)

  • Move Roadmap into Github Projects

Release process

These are the steps to follow:

  1. Archive all the cards of the Done tab in the Global Roadmap project:

image


  1. Close the corresponding release milestone:

image


  1. Rename the __version__ variable in __init__ and remove the dev suffix e.g. from 0.4.dev0 to 0.4

  1. Create a new list of changes corresponding to the new milestone (e.g. 0.4.md), update the latest.md changelog and publish on master.

  1. Merge master into release:
git checkout release
git merge master
git push origin release

  1. Draft a new release and tag the release branch:

image


  1. Bump the __version__ variable in __init__.py to 0.5.dev0

  1. Create a new milestone Release 0.5

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.