Code Monkey home page Code Monkey logo

cherish's People

Contributors

vicrucann avatar ymrong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cherish's Issues

Re-define action and mouse icons to be in the same style

Some of the actions do not have corresponding icons, e.g., view modes. Also, it would be nice if the icon style is coherent, i.e., they are not taken from different sources, but rather from a single source; or they are designed specifically for the application.

Option to chose different stroke styles

The initial implementation of the stylus sketching is a simple line strip. Each stroke is represented by a set up points, and then it is rendered by using osg::PrimitiveSet::LINE_STRIP.

Under different style of the stroke it is meant:

  • varying line width (brush size)
  • varying brush type (e.g., pencil, charcoal, brush, etc.)
  • varying color and transparency

loadPhotoFromFile

function _rootScene->loadPhotoFromFile() sometimes causes the program quit unexpectedly.

Add "directional opacity" feature

Stroke opacity decreases with increase of distance from current camera view.

Include this options:

  • directional falloff threshold
  • checkbox for vertical opacity

The widget does not display the scene correctly on Mac

Numerous glitches when running on Mac:

  • The widget border is always set to the minimal size, even when the whole window is maximized; check the viewport set up of viewwidget.h
  • Ray casting is offset; probably, due to the problems with the viewport

One of the probable causes and solutions: redesign of the ViewWidget so that:

  • No composite viewer is used, but a single osgViewer::Viewer.
  • Re-define initializeGL function and set up the OpenGL state there.
  • Re-design onResize() method; it is a probable cause of the glitches. Transfer the viewport set up to the resizeGL() method.

Improve the user interaction look when performing canvas offset

  1. It would be nice to be able to see the old location of the canvas vs. the new location of the canvas.
  2. The normal should rather be displayed as an infinite (?) line so that the user could understand along what they drag the canvas
  3. Indicate the direction of the normal, e.g., using arrow, or fill vs. dashed line

Add UI testing dialogue

Current canvas:

  • Frame line: color, width, opacity
  • Inside quad: color, opacity

Previous canvas:

  • Frame line: color, width, opacity
  • Inside quad: color, opacity

Lines look aliased on Linux

The osg::StateSet options for smoothing don't seem to work on Linux, OpenGL 3.0. Probably, due to the OpenGL version. So, need to check.

Debug error (assert fail) while drawing a stroke and then going out of plane

The current stroke cannot be complete in case when the current canvas is viewed under sharp angle and then at some point the next point to append cannot be projected onto current canvas.

Possible resolution:

  • check if there is intersection between mouse ray and _canvasCurrent
  • if not intersection with plane, then call for stroke completion function and set _strokeCurrent to NULL

Change mouse icon for every action

Each mouse action should accompanied by a change of how mouse looks, otherwise it is difficult to define what mouse mode is currently on without trying to use the mouse.

Current canvas intersections with all other canvases (or at least with a previous canvas) for better readability

When editing 3D spacial location of the current canvas, it is challenging to see its relation towards other canvases, and toward the "previous" canvas in particular. Lines that would show where current and previous canvases intersect would be useful for better visual clues.

As an example, look at the original software implementation; the intersection lines are dashes and there is also a rectangular shape defining the canvas center location:

gui-orig

Transfer the HUD camera content into the entity selector widget

The widget should be able to display two-level entities like so:

Canvas1
|-- Photo1
|-- Photo2
Canvas2
Canvas3
|-- Photo3

The user should be able to select the canvas from this list, and the selected canvas becomes current on the scene as well.

The user should be able to select a photo from the list, and in this case the canvas which contains the selected photo becomes current, and the selected photo becomes current as well.

Canvas center is not updated after a stroke is added

It causes some visual bugs, e.g.:

  • Adding some strokes to the canvas causes the bounding box to offset
  • When applying an offset operator, the canvas normal is not located at the canvas' centroid but at the (0,0)

The older version accounted for the bounding box update of canvas, however after the center was changed, it introduced an offset in ray tracing and plane intersection calculation part of sketching procedure.

Assign stylus buttons to something useful

Initial implementation excludes the usage of stylus buttons (eraser is not counted as a button).

It would be useful to have those buttons assigned to some actions, for example, camera navigation: the lower button could do PAN and the upper button could do ORBIT, while the tablet wheel is already responsible for ZOOM.

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.