- 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 ¢er, 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 ?