Radium Engine  1.5.0
Todo List
Page [TODO] IO
write IO doc
Page Plugin System
check and update
Page 3D objects (a.k.a. Meshes)

will be supported when TopologicalMesh will support PolyMesh.

make OpenMesh inheritance private.

Page [deprecated] Component Messenger
check and update
Page [deprecated] Event System
check and update
Page [deprecated] Radium Engine programmer manual
pick relevant part, update and move to corresponding page
Page How to write your own application
write application dev doc, merging ExampleApp and Apps docs.
Page Material management
update snippets that are not available anymore.
Member Ra::Core::Animation::Skeleton::Manipulation
also implement Inverse Kynematics.
Member Ra::Core::Geometry::AttribArrayGeometry::vertexAttribs ()
rename to getAttribManager ?
Class Ra::Core::Geometry::deprecated::TopologicalMesh

rename methods to respect Radium guideline (get/set/is, camelCase)

private inheritance from OpenMesh, and import relevant methods.

Member Ra::Core::Geometry::MultiIndexedGeometry::checkConsistency () const
Implement MultiIndexedGeometry::checkConsistency
Class Ra::Core::Geometry::TopologicalMesh

rename methods to respect Radium guideline (get/set/is, camelCase)

private inheritance from OpenMesh, and import relevant methods.

Member Ra::Core::Geometry::TopologicalMesh::initWithWedge (const Ra::Core::Geometry::MultiIndexedGeometry &mesh, const Ra::Core::Geometry::MultiIndexedGeometry::LayerKeyType &layerKey, NonManifoldFaceCommand command)
and "cross face ?"
Member Ra::Core::Geometry::TopologicalMesh::TopologicalMesh (const Ra::Core::Geometry::MultiIndexedGeometry &mesh, const Ra::Core::Geometry::MultiIndexedGeometry::LayerKeyType &layerKey, NonManifoldFaceCommand command)
, when MultiIndexedGeometry will be operational, will this replace the above ?
Member Ra::Core::Geometry::TopologicalMesh::TopologicalMesh (const Ra::Core::Geometry::MultiIndexedGeometry &mesh, const Ra::Core::Geometry::MultiIndexedGeometry::LayerKeyType &layerKey)
, when MultiIndexedGeometry will be operational, will this replace the above ?
Member Ra::Core::Math::cos (const Vector_ &v1, const Vector_ &v2)
use dot instead
Member Ra::Core::Utils::AttribManager::copyAllAttributes (const AttribManager &m)
allow to copy all attributes, even those with non-standard type
Class Ra::Engine::Data::BlinnPhongMaterial
due to "Material.glsl" interface modification, must test this version with all plugins, apps, ... that uses Radium Renderer
Member Ra::Engine::Data::CoreGeometryDisplayable< T >::loadGeometry (CoreGeometry &&mesh)
add observer mecanism for indices.
Member Ra::Engine::Data::Displayable::getAbstractGeometry () const =0
not sure the displayable must have an abstract geometry ...
Member Ra::Engine::Data::DrawPrimitives::Circle (const Core::Vector3 &center, const Core::Vector3 &normal, Scalar radius, uint segments, const Core::Utils::Color &color)
refer to class typedef instaed of core types/
Member Ra::Engine::Data::DrawPrimitives::QuadStrip (const Core::Vector3 &a, const Core::Vector3 &x, const Core::Vector3 &y, uint quads, const Core::Utils::Color &color)
continue to convert mesh creation and remove call to deprecated Mesh::loadGeometry
Member Ra::Engine::Data::EnvironmentTexture::EnvironmentTexture (const std::string &mapName, bool isSkybox=false)
: if the file given to the constructor does not exist, generates a white envmap ?
Member Ra::Engine::Data::EnvironmentTexture::getEnvironmentTexture ()
Prefilter according to bsdf roughness values ? This will help for envmap lighting but might be wrong for skybox rendering
Member Ra::Engine::Data::Material::getPropertyList () const override

: Validate this proposal

: make the property list modifiable as well

Member Ra::Engine::Data::Mesh::getNumFaces () const override
fix this once we have explicit triangle fan and strip management.
Member Ra::Engine::Data::Mesh::loadGeometry (const Core::Vector3Array &vertices, const std::vector< uint > &indices)

check line vs triangle here is a bug

find an alternative

Class Ra::Engine::Data::MultiIndexedGeometry< T >
Work in progress.
Member Ra::Engine::Data::MultiIndexedGeometry< T >::loadGeometry (T &&mesh) override
HERE
Member Ra::Engine::Data::MultiIndexedGeometry< T >::render (const ShaderProgram *prog) override
implement !
Member Ra::Engine::Data::MultiIndexedGeometry< T >::updateGL_specific_impl () override
implement !
Class Ra::Engine::Data::ShaderConfiguration
: make configuration and program (in the OpenGL sense) be packed. A shader configuration might contains a ShaderProgram after compiling. This will remove the need for ShaderConfigurationFactory as ShaderManager will offer the same services. Actually, there is redundancy between ShaderConfigurationFactory and ShaderProgramManager
Member Ra::Engine::Data::ShaderParameterProvider::getPropertyList () const
: Validate this proposal
Member Ra::Engine::Data::ShaderProgram::addShaderFromSource (Data::ShaderType type, std::unique_ptr< globjects::StaticStringSource > &&source, const std::string &name="", bool fromFile=true)
go private, and update ShaderConfiguration to add from source !
Member Ra::Engine::Data::ShaderProgram::link ()
add other sampler type (or manage all type of sampler automatically)
Member Ra::Engine::Data::SimpleMaterial::m_perVertexColor
make this private ?
Class Ra::Engine::Data::TextureManager
(for Radium-V2) Allow to share the same image data between different instances of a texture. Instances could be differentiated by the sampler parameter and the mip-map availability.
Member Ra::Engine::Data::TextureManager::updatePendingTextures ()
find a better name and description for this method that do not act on pending textures, i.e. textures that do not have a valid OpenGl state.
Member Ra::Engine::Data::TextureParameters::texels
memory allocated for this pointer might be lost at texture deletion as ownership is unclear.
Class Ra::Engine::Data::VaoIndices::IndicesObserver
Add test for Indices observer
Class Ra::Engine::Data::VolumeObject
Right now, a volumeObject define both the geometry (a parallelepiped) and the material (a density grid) This should be modified to handle density grids deleimited by a general geometry.
Class Ra::Engine::Data::VolumetricMaterial
This material does not implement the MaterialGLSL interface. Shader compositing is not allowed.
Class Ra::Engine::Rendering::DebugRender
: port this to a more Radium-style code
Member Ra::Engine::Rendering::DebugRender::initialize ()
FIXED but not tested
Member Ra::Engine::Rendering::ForwardRenderer::renderInternal (const Data::ViewingParameters &renderData) override

use globjects.

make offset relative to wireframe line width

Member Ra::Engine::Rendering::Renderer::doPickingNow (const PickingQuery &query, const Data::ViewingParameters &renderData)
Fixup prepare picking to take pixel position and rendering window, and read depth in it.
Member Ra::Engine::Rendering::Renderer::PickingResult::getDepth () const

fixup for all picking query,

improve picking.

Class Ra::Engine::Scene::CameraComponent
attached camera do not take entity's transformation into account. This prevents, for now, keyframed animation of the Camera from its entity ...
Class Ra::Engine::Scene::Light::Attenuation
for the moment, the attenuation is non physically coherent. make attenuation be quadratic by default
Member Ra::Engine::Scene::Light::LightType
: replace this enum by something extensible as we plan to add new light type by plugins
Member Ra::Engine::Scene::Light::setDirection (const Eigen::Matrix< Scalar, 3, 1 > &)
put this only on directional and spot light sources
Member Ra::Engine::Scene::Light::setPosition (const Eigen::Matrix< Scalar, 3, 1 > &)
put this only on point and spot light sources
Class Ra::Engine::Scene::PointCloudComponent
doc.
Member Ra::Engine::Scene::SkeletonComponent::setXray (bool on) const
the way skeletons will be displayed will be changed.
Member Ra::Gui::BaseApplication::BaseApplication (int &argc, char **argv, QString applicationName="RadiumEngine", QString organizationName="STORM-IRIT")
check optional
Member Ra::Gui::BaseApplication::editSettings ()
implement the editor
Member Ra::Gui::BaseApplication::initialize (const WindowFactory &factory, const glbinding::Version &glVersion={ 4, 1 })

Code updated wrt camera manager, TEST IT !

allow the user to ask for some "standard" systems to be added to the initialized Engine.

Member Ra::Gui::BaseApplication::radiumFrame ()
make rendering one gpu task.
Member Ra::Gui::FlightCameraManipulator::handleWheelEvent (QWheelEvent *event, const Qt::MouseButtons &buttons, const Qt::KeyboardModifiers &modifiers, int key) override
use action.
Class Ra::Gui::Gizmo
There is a lot of duplicated code shared between the different Gizmos (rotate, translate, scale). This is due to the fact that they all have Render Objects in xyz directions, and which can be selected with the same logic. An alternative would be to have an intermediate class , e.g. XYZGizmo which performs all the generic operations (e.g. render object coloring in selectConstraint and mouseMove).
Member Ra::Gui::GizmoManager::handleMouseMoveEvent (QMouseEvent *event, const Qt::MouseButtons &buttons, const Qt::KeyboardModifiers &modifiers, int key, const Core::Asset::Camera &cam)
what about if someone start a motion with a key, and then release it while moving the mouse ?
Member Ra::Gui::TimelineScrollArea::stepChanged (Scalar step)
use keymapping manager here Emitted when zoomed in/out or resized.
Member Ra::Gui::TrackballCameraManipulator::resetCamera () override
get rid of these light stuff
Member Ra::Gui::Viewer::handleMousePressEvent (QMouseEvent *event, Ra::Engine::Rendering::Renderer::PickingResult &result)
something like explained here if under mouse objects grabs the action, just send it to the object so we need to have something like grabber = renderobject(ro id)->getMouseManipulator if(grabber && grabber->handleEvent(event, buttons, modifiers, key){ context = grabber->getContext currentGrabber = grabber (we need to store it for mouse move)
Member Ra::Gui::Viewer::m_renderers
make the following private: Owning pointer to the renderers.
Member Ra::Gui::Viewer::mouseMoveEvent (QMouseEvent *event) override
propagateToParent
Member Ra::Gui::Viewer::mouseReleaseEvent (QMouseEvent *event) override
propagateToParent
Member Ra::Gui::Viewer::startRendering (const Scalar dt)
FIXME : move this outside of the rendering loop. must be done once per renderer ... if there is no light on the renderer, add the head light attached to the camera ...
Member Ra::Gui::Viewer::wheelEvent (QWheelEvent *event) override
propagateToParent
Member Ra::IO::AssimpCameraDataLoader::loadData (const aiScene *scene, std::vector< std::unique_ptr< Core::Asset::Camera >> &data) override
process camera name to feed component name
Class Ra::IO::FileManager< DATA, Binary >
reimplement in IO
Class Ra::IO::OBJFileManager
reimplement in IO
Class Ra::IO::OFFFileManager
reimplement in IO
Member Ra::Plugins::RadiumPluginInterface::getMenu ()=0
Find a better name ?
Member Ra::Plugins::RadiumPluginInterface::getWidget ()=0
Find a better name for this ?