-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inertia visual #326
Merged
Merged
Inertia visual #326
Changes from 17 commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
cc7dee6
Add inertia visual classes
atharva-18 0c10dbf
Add methods to create inertia visual
atharva-18 1c84404
Fix box creation and material
atharva-18 9d687a0
Fix comments
atharva-18 9fd65e0
Fix override
atharva-18 6e444dc
Add Inertia visual test
atharva-18 aa50a7c
Style fixes
atharva-18 491cb61
Add example
atharva-18 ba2be80
Add Windows support
atharva-18 1547997
Remove traces from updateCameras
atharva-18 36e240d
Merge branch 'main' of https://github.com/ignitionrobotics/ign-render…
atharva-18 2673f1b
Rename to visualization_demo
atharva-18 5f935e1
Fix comments
atharva-18 3456a69
Add SetInertial method
atharva-18 4a35a36
Move code to BaseInertiaVisual<T>::SetInertial
atharva-18 64e15b5
Merge branch 'main' of https://github.com/ignitionrobotics/ign-render…
atharva-18 63aabbf
Add Ogre2 destroy method
atharva-18 ca3ac18
Fix CMakeLists in example
atharva-18 8ca07c8
Fix CMakeLists
atharva-18 513d17f
Fix crash and test
atharva-18 2428882
Fix spaces
atharva-18 42a6a41
Set material depth write to false
atharva-18 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) | ||
project(ignition-rendering-visualization-demo) | ||
|
||
find_package(ignition-rendering6) | ||
|
||
if (APPLE OR UNIX) | ||
find_package(GLUT REQUIRED) | ||
include_directories(SYSTEM ${GLUT_INCLUDE_DIRS}) | ||
link_directories(${GLUT_LIBRARY_DIRS}) | ||
|
||
find_package(OpenGL REQUIRED) | ||
include_directories(SYSTEM ${OpenGL_INCLUDE_DIRS}) | ||
link_directories(${OpenGL_LIBRARY_DIRS}) | ||
|
||
set(TARGET_THIRD_PARTY_DEPENDS | ||
${TARGET_THIRD_PARTY_DEPENDS} | ||
${OPENGL_LIBRARIES} | ||
${GLUT_LIBRARIES} | ||
) | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") | ||
endif() | ||
|
||
if (NOT APPLE) | ||
find_package(GLEW REQUIRED) | ||
set(TARGET_THIRD_PARTY_DEPENDS | ||
${TARGET_THIRD_PARTY_DEPENDS} | ||
GLEW::glew) | ||
endif() | ||
|
||
if (WIN32) | ||
find_package(FreeGLUT REQUIRED) | ||
set(TARGET_THIRD_PARTY_DEPENDS ${TARGET_THIRD_PARTY_DEPENDS} FreeGLUT::freeglut) | ||
ahcorde marked this conversation as resolved.
Show resolved
Hide resolved
|
||
endif() | ||
|
||
add_executable(visualization_demo Main.cc GlutWindow.cc) | ||
|
||
target_link_libraries(visualization_demo | ||
${IGNITION-RENDERING_LIBRARIES} | ||
${TARGET_THIRD_PARTY_DEPENDS} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,227 @@ | ||
/* | ||
* Copyright (C) 2021 Open Source Robotics Foundation | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* | ||
*/ | ||
|
||
#if __APPLE__ | ||
#include <OpenGL/gl.h> | ||
#include <OpenGL/OpenGL.h> | ||
#include <GLUT/glut.h> | ||
#elif _WIN32 | ||
#define NOMINMAX | ||
// Must include this before GL/gl.h | ||
#include <windows.h> | ||
#include <GL/glew.h | ||
// OpenGL utilities header file | ||
#include <GL/glu.h> | ||
// OpenGL utilities header file | ||
#include <GL/glut.h> | ||
#include "Wingdi.h" | ||
#else | ||
#include <GL/glew.h> | ||
#include <GL/gl.h> | ||
#include <GL/glut.h> | ||
#endif | ||
|
||
#if !defined(__APPLE__) && !defined(_WIN32) | ||
#include <GL/glx.h> | ||
#endif | ||
|
||
#include <mutex> | ||
|
||
#include <ignition/common/Console.hh> | ||
#include <ignition/rendering/Camera.hh> | ||
#include <ignition/rendering/Image.hh> | ||
#include <ignition/rendering/Scene.hh> | ||
|
||
#include "GlutWindow.hh" | ||
|
||
#define KEY_ESC 27 | ||
#define KEY_TAB 9 | ||
|
||
////////////////////////////////////////////////// | ||
unsigned int imgw = 0; | ||
unsigned int imgh = 0; | ||
|
||
std::vector<ir::CameraPtr> g_cameras; | ||
ir::CameraPtr g_camera; | ||
ir::CameraPtr g_currCamera; | ||
unsigned int g_cameraIndex = 0; | ||
ir::ImagePtr g_image; | ||
|
||
bool g_initContext = false; | ||
|
||
#if __APPLE__ | ||
CGLContextObj g_context; | ||
CGLContextObj g_glutContext; | ||
#elif _WIN32 | ||
HGLRC g_context = 0; | ||
HDC g_display = 0; | ||
HGLRC g_glutContext = 0; | ||
HDC g_glutDisplay = 0; | ||
#else | ||
GLXContext g_context; | ||
Display *g_display; | ||
GLXDrawable g_drawable; | ||
GLXContext g_glutContext; | ||
Display *g_glutDisplay; | ||
GLXDrawable g_glutDrawable; | ||
#endif | ||
|
||
double g_offset = 0.0; | ||
|
||
////////////////////////////////////////////////// | ||
void updateCameras() | ||
{ | ||
double angle = g_offset / 2 * M_PI; | ||
double x = sin(angle) * 3.0 + 3.0; | ||
double y = cos(angle) * 3.0; | ||
for (ir::CameraPtr camera : g_cameras) | ||
{ | ||
camera->SetLocalPosition(x, y, 0.0); | ||
} | ||
|
||
g_offset += 0.0005; | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void displayCB() | ||
{ | ||
#if __APPLE__ | ||
CGLSetCurrentContext(g_context); | ||
#elif _WIN32 | ||
if(!wglMakeCurrent(g_display, g_context)) | ||
{ | ||
std::cerr << "Not able to wglMakeCurrent" << '\n'; | ||
exit(-1); | ||
} | ||
#else | ||
if (g_display) | ||
{ | ||
glXMakeCurrent(g_display, g_drawable, g_context); | ||
} | ||
#endif | ||
|
||
g_cameras[g_cameraIndex]->Capture(*g_image); | ||
|
||
#if __APPLE__ | ||
CGLSetCurrentContext(g_glutContext); | ||
#elif _WIN32 | ||
wglMakeCurrent(g_glutDisplay, g_glutContext); | ||
#else | ||
glXMakeCurrent(g_glutDisplay, g_glutDrawable, g_glutContext); | ||
#endif | ||
|
||
unsigned char *data = g_image->Data<unsigned char>(); | ||
|
||
glClearColor(0.5, 0.5, 0.5, 1); | ||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); | ||
glPixelZoom(1, -1); | ||
glRasterPos2f(-1, 1); | ||
glDrawPixels(imgw, imgh, GL_RGB, GL_UNSIGNED_BYTE, data); | ||
|
||
glutSwapBuffers(); | ||
updateCameras(); | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void idleCB() | ||
{ | ||
glutPostRedisplay(); | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void keyboardCB(unsigned char _key, int, int) | ||
{ | ||
if (_key == KEY_ESC || _key == 'q' || _key == 'Q') | ||
{ | ||
exit(0); | ||
} | ||
else if (_key == KEY_TAB) | ||
{ | ||
g_cameraIndex = (g_cameraIndex + 1) % g_cameras.size(); | ||
} | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void initCamera(ir::CameraPtr _camera) | ||
{ | ||
g_camera = _camera; | ||
imgw = g_camera->ImageWidth(); | ||
imgh = g_camera->ImageHeight(); | ||
ir::Image image = g_camera->CreateImage(); | ||
g_image = std::make_shared<ir::Image>(image); | ||
g_camera->Capture(*g_image); | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void initContext() | ||
{ | ||
glutInitDisplayMode(GLUT_DOUBLE); | ||
glutInitWindowPosition(0, 0); | ||
glutInitWindowSize(imgw, imgh); | ||
glutCreateWindow("Visualization Demo"); | ||
glutDisplayFunc(displayCB); | ||
glutIdleFunc(idleCB); | ||
glutKeyboardFunc(keyboardCB); | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void printUsage() | ||
{ | ||
std::cout << "===============================" << std::endl; | ||
std::cout << " TAB - Switch render engines " << std::endl; | ||
std::cout << " ESC - Exit " << std::endl; | ||
std::cout << "===============================" << std::endl; | ||
} | ||
|
||
////////////////////////////////////////////////// | ||
void run(std::vector<ir::CameraPtr> _cameras) | ||
{ | ||
if (_cameras.empty()) | ||
{ | ||
ignerr << "No cameras found. Scene will not be rendered" << std::endl; | ||
return; | ||
} | ||
|
||
#if __APPLE__ | ||
g_context = CGLGetCurrentContext(); | ||
#elif _WIN32 | ||
g_context = wglGetCurrentContext(); | ||
g_display = wglGetCurrentDC(); | ||
#else | ||
g_context = glXGetCurrentContext(); | ||
g_display = glXGetCurrentDisplay(); | ||
g_drawable = glXGetCurrentDrawable(); | ||
#endif | ||
|
||
g_cameras = _cameras; | ||
initCamera(_cameras[0]); | ||
initContext(); | ||
printUsage(); | ||
|
||
#if __APPLE__ | ||
g_glutContext = CGLGetCurrentContext(); | ||
#elif _WIN32 | ||
g_glutContext = wglGetCurrentContext(); | ||
g_glutDisplay = wglGetCurrentDC(); | ||
#else | ||
g_glutDisplay = glXGetCurrentDisplay(); | ||
g_glutDrawable = glXGetCurrentDrawable(); | ||
g_glutContext = glXGetCurrentContext(); | ||
#endif | ||
|
||
glutMainLoop(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* | ||
* Copyright (C) 2021 Open Source Robotics Foundation | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* | ||
*/ | ||
#ifndef IGNITION_RENDERING_EXAMPLES_VISUALIZATION_DEMO_GLUTWINDOW_HH_ | ||
#define IGNITION_RENDERING_EXAMPLES_VISUALIZATION_DEMO_GLUTWINDOW_HH_ | ||
|
||
#include <vector> | ||
#include "ignition/rendering/RenderTypes.hh" | ||
|
||
namespace ir = ignition::rendering; | ||
|
||
/// \brief Run the demo and render the scene from the cameras | ||
/// \param[in] _cameras Cameras in the scene | ||
void run(std::vector<ir::CameraPtr> _cameras); | ||
|
||
#endif |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was not able to build the demo with these lines as it complains about glew
I had to replace it with:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FIxed in
ca3ac18