Giter Club home page Giter Club logo

ce3d's People

Contributors

sils avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ce3d's Issues

Create a nice logo in various formats

We need a nice logo at least in the following versions:

  • Low resolution ASCII
  • High resolution ASCII
  • Some real image format

We should integrate it into the doxygen documentation.

Improve UpdateMatrix() functions of transformation classes.

For example the Translation::FinalTranslation class could have a more effective function.
Also it's a good idea to use some boost builtin vector and matrix types to generate the transformation matrices (I think they are also more performant than self-written algorithms).

Determine which model to render

  • make a box around every model
  • determine this box on vector addition
  • redetermine if relevant vector removed (lazy!)
  • do this only for complex models
  • user doesnt need to know this, this is something done by camera base class in cooperation with renderer base class.

Directory structure change

Since the camera and renderer have specialized interfaces from one to another I propose the following directory structure:
src/
output/
____abstract_camera.h/cpp
____abstract_renderer.h/cpp
____console/
______camera/
______renderer/
____opengl/
______camera/
______renderer/
__
...

Provide means to control FPS

I think we should have two possible modes concerning this:

  • Draw at the maximum possible framerate
    Everything that writes something to curses (via Console) will run in this thread.
    If the user changes something it will simply be drawn the next time.
  • Draw at a fixed frame rate
    We would probably have one thread drawing the changes model-wise to CURSES and one thread periodically refreshing the console.
    We can use this asynchronous timer for the refresh operations:
    http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio/tutorial/tuttimer2.html

We would have a mutex that will be locked
a) for refreshing
b) for drawing changes for one model
c) maybe for drawing changes of the whole world through camera position change

Therefore we would not refresh incomplete changes. If the client does not support the given framerate than the real framerate will be lower than the given value in this kind of implementation which is exactly what we want. (And not refresh senselessly since we have the mutex lock.)

The locking mechanism should be on a rather low level so that custom cameras and so on don't have to deal with such things.

Any opinions?

Some tests

Tests for

  • orthogonal transformation
  • translation transformation
  • scale transformation
  • rotation transformation
  • custom transformation
  • point model
  • console
  • keyboard thread
  • boost extensions
  • keyboard state
  • world
  • renderer
  • camera
  • console renderer

NDEBUG

Quote from an early planning email:
"Achso ganz wichtig: Für CMake brauchen wir für den release (also nicht debug) noch nen #define NDEBUG, das is extrem wichtig für die performance von uBLAS, der Matrix/Vektor bibliothek von boost. Damit werden einige algorithmen bis zu 3x schneller (wenn nich noch schneller)."

Make an own API doxyfile

For using the API we don't need the cpp files in the documentation. We also dont need references and code browsing.

Let's make a nice representation of our library to the outside!

Write codechecker rules

Good way to contribute something to codeChecker. Let's implement some of the rules of doc/CC_rules there.

Get a concept for materials

We need a concept for models and materials and how they interact.

Post ideas here! May the discussions begin.

Add virtual functions for event handling.

We should add some virtual functions in classes that do nothing, but the user that inherits this class can override them and add some event functionality.
For example:

class LinearCamera
{
  //...

  // Raised when the matrix stack gets updated and calculated.
  // Here the user can perform his own lazy calculations.
  virtual void OnUpdate() const {};
}

And in implementation he can get this "event":

class OrthogonalCamera
{
  //...

  virtual void OnUpdate() const override
  {
     // Any stuff of code...
  }
}

Change function declaration style

Our data types are long, we have many function declarations that exceed 80 chars.

I pushed a patch that puts the return type and the modifiers before that in an own line.

CE3D::Transformation::OrthogonalProjection(Vector const&) defect

The constructor of CE3D::Transformation::OrthogonalProjection(Vector const&) is not working, the test for CE3D::OrthographicCamera<> fails before the check RequireVectorEquality at OrthographicCamera::SetLookAt(Vector const&) that invokes the projection constructor.
See test for CE3D::OrthographicCamera<> (in file "/CE3D/test/camera/orthographic_camera_test.cpp").

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.