Giter Site home page Giter Site logo

hegelian's Introduction

HEGELIAN

"Helping Everyone Graph Emitted Light from Interactive Artificial Nebulae"

Making the abstract concrete

3D real-time astrophysics simulation visualisation

Sam Geen ([email protected])

=====

See LICENSE.md for license info

This is a severely work-in-progress architecture for visualising RAMSES outputs in 3D.

The current entry point for testing is Examples/example.py

Current functionality:

  • displays uniform cubes with OpenGL + a shader that can ray-trace through 3 channel texture cubes
  • has a rotating camera
  • finds the max/min of the image with a shader and displays the log of the image in float precision
  • a placeholder shader that shows neutral/ionised gas channels
  • a routine that converts RAMSES files into uniform cubes with Pymses

It has some dead/non-functional code that

  • billboards particles to screen (slow / possibly broken)

TODO:

  • Make a much nicer interface to the code
  • Tidy up a lot
  • Add emission/extinction tables for nebulae / galaxies
  • Merge particle / grid output
  • Octree or non-uniform structures (mini-ramses format might help?)
  • In-situ snapshot reading / caching
  • Reference physical units rather than arbitrary code units
  • Optimise heavily
  • 3D stereoscopic images / planetarium view matrix output
  • More camera types (fly-through)
  • Video recording capability
  • Cosmology view / synthetic observations / telescope simulations
  • Optimise camera input controls (e.g. add flag/dt to keyboard controls rather than relying on refresh rate of keyboard)

BRIEF STYLE GUIDE This is not exhaustive and I probably break these myself, but I guess it's useful to have. If you don't know how to do some of this stuff feel free to ask!

  • This is a more or less Object Oriented project (insofar as Python allows/needs OO).
  • Most functionality is provided by objects containing other objects
  • Variables are camel case
  • Objects and methods begin with an upper case letter (MyObject.Method), variables a lower case letter (myVariable)
  • Try to avoid inheritance (Python doesn't really need inheritance for abstract types, but if it helps use that)
  • Try to use composition rather than inheritance to extend functionality wherever possible
  • Stuff like multiple inheritance, inheritance of concrete classes is bad
  • All data in classes is private, and all methods that don't need to be public should be private.
  • A leading underscore means private (e.g. self._camera, self._DoInternalStuffICanBreakLater)
  • Try not to make huge .py files, break them up into separate modules if possible (few objects in 1 module at most)
  • If you have any opinions on documentation and unit tests please let me know, otherwise try to comment every few lines

hegelian's People

Contributors

samgeen avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

tiapac

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.