- Page 3D objects (a.k.a. Meshes)
will be supported when TopologicalMesh will support PolyMesh.
make OpenMesh inheritance private.
- Page [TODO] IO
- write IO doc
- 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
a nice class schema
- 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.
TO UPDATE
- Page Plugin System
- check and update
- 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)
- , 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, NonManifoldFaceCommand command)
- , when MultiIndexedGeometry will be operational, will this replace the above ?
- Member Ra::Core::make_shared (Args &&... args)
- Check if we still need that thing...
- 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
- Member Ra::Core::Utils::EnumConverter< EnumBaseType >::EnumConverter (std::initializer_list< std::pair< EnumBaseType, std::string > > pairs)
- think of manage both EnumType and EnumUnderlyingType Eg using EnumUnderlyingType = std::underling_type_t<Enum>; getEnumeratorUnderlying ->EnumUnderlyingType getEnumerator -> Enum
- 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::createCoreMeshFromGeometryData (const Ra::Core::Asset::GeometryData *data)
- replace the copy of all geometry data by reference to original data.
- 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)
find an alternative
check line vs triangle here is a bug
- 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)
- Struct Ra::Engine::Data::TextureParameters
- allow to use another mipmap building function than glGenerateMipmap
- 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.
- Member Ra::Engine::Data::VolumeObject::loadGeometry (Core::Geometry::AbstractVolume *volume, const Core::Aabb &aabb)
- clean tmp hack
- 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
make offset relative to wireframe line width
use globjects.
- 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 ...
- Struct 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::initializeGL () override
- who deletes this light ?
- 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::Headless::CLIRadiumEngineApp::m_glContext
- make privaet and check access
- 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 ?