Giter Club home page Giter Club logo

martin-pr / possumwood Goto Github PK

View Code? Open in Web Editor NEW
281.0 16.0 37.0 371.62 MB

Possumwood is a graph-based procedural authoring tool, in concept not dissimilar to popular CG packages like Houdini, Blender or Maya. It is intended to serve as a sandbox for computer graphics algorithms and libraries, providing a user-friendly and coding-free UI for libraries that would otherwise be inaccessible for an average user.

License: MIT License

Python 0.57% CMake 1.28% C++ 97.88% C 0.04% Shell 0.22%
qt graphics animation nodegraph opengl sandbox cgal glsl

possumwood's People

Contributors

martin-pr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

possumwood's Issues

Crash when loading various OpenGL samples

Many of the OpenGL toolbar buttons, such as: Turntable, Goraud, Phong, Matcap, (and possibly others) crashes the application on an assertion of !key.isDefault().

I glanced at the source to try to understand what's going on, but as far as I can tell, there is no way to set PropertyKey to non-default, so I don't understand the purpose of it.
Unless I'm missing something, the m_index member data is private, the only constructor is a default constructor, and no member functions can modify it, so I don't really know how or where it should have been set.

Built from source, master @ 0ee3e0f
On Linux Mint 20.2, Cinnamon Desktop
NVidia GTX 1660

Here is a full stacktrace from gdb:

#1  0x00007ffff5385859 in __GI_abort () at abort.c:79
#2  0x00007ffff5385729 in __assert_fail_base
    (fmt=0x7ffff551b588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fffda22c8fd "!key.isDefault()", file=0x7fffda22c90e "/home/hans/projects/possumwood/src/plugins/cgal/./property.inl", line=26, function=<optimized out>) at assert.c:92
#3  0x00007ffff5396f36 in __GI___assert_fail
    (assertion=0x7fffda22c8fd "!key.isDefault()", file=0x7fffda22c90e "/home/hans/projects/possumwood/src/plugins/cgal/./property.inl", line=26, function=0x7fffda22c961 "void possumwood::Property<std::array<float, 3>>::set(const possumwood::PropertyKey &, const T &) [T = std::array<float, 3>]") at assert.c:101
#4  0x00007fffda08a7a8 in possumwood::Property<std::array<float, 3ul> >::set(possumwood::PropertyKey const&, std::array<float, 3ul> const&) (this=0x7fffd0c16f60, key=..., value=...)
    at /home/hans/projects/possumwood/src/plugins/cgal/./property.inl:26
#5  0x00007fffda083a70 in (anonymous namespace)::put<std::array<float, 3ul>, (anonymous namespace)::FakeKernel::Vector_3>(possumwood::Property<std::array<float, 3ul> >&, possumwood::PropertyKey const&, (anonymous namespace)::FakeKernel::Vector_3 const&) (prop=warning: RTTI symbol not found for class 'possumwood::Property<std::array<float, 3ul> >'
..., key=..., value=...)
    at /home/hans/projects/possumwood/src/plugins/cgal/nodes/normals_generator.cpp:207
#6  0x00007fffda082b62 in (anonymous namespace)::put<possumwood::Property<std::array<float, 3ul> >, CGAL::internal::In_place_list_iterator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<possumwood::CGALVertex<CGAL::HalfedgeDS_list_types<CGAL::Simple_cartesian<float>, CGAL::I_Polyhedron_derived_items_3<possumwood::CGALPolyhedronItems>, std::allocator<int> > > > >, std::allocator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<possumwood::CGALVertex<CGAL::HalfedgeDS_list_types<CGAL::Simple_cartesian<float>, CGAL::I_Polyhedron_derived_items_3<possumwood::CGALPolyhedronItems>, std::allocator<int> > > > > > > >(std::reference_wrapper<possumwood::Property<std::array<float, 3ul> > >&, CGAL::internal::In_place_list_iterator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<possumwood::CGALVertex<CGAL::HalfedgeDS_list_types<CGAL::Simple_cartesian<float>, CGAL::I_Polyhedron_derived_items_3<possumwood::CGALPolyhedronItems>, std::allocator<int> > > > >, std::allocator<CGAL::HalfedgeDS_in_place_list_vertex<CGAL::I_Polyhedron_vertex<possumwood::CGALVertex<CGAL::HalfedgeDS_list_types<CGAL::Simple_cartesian<float>, CGAL::I_Polyhedron_derived_items_3<possumwood::CGALPolyhedronItems>, std::allocator<int> > > > > > > const&, (anonymous namespace)::FakeKernel::Vector_3 const&)
    (prop=..., target=..., norm=...) at /home/hans/projects/possumwood/src/plugins/cgal/nodes/normals_generator.cpp:202
#7  0x00007fffda0826e9 in CGAL::Polygon_mesh_processing::compute_vertex_normals<CGAL::Polyhedron_3<CGAL::Simple_cartesian<float>, possumwood::CGALPolyhedronItems, CGAL::HalfedgeDS_default, std::allocator<int> >, std::reference_wrapper<possumwood::Property<std::array<float, 3ul> > >, CGAL::Named_function_parameters<(anonymous namespace)::FakeKernel, CGAL::internal_np::geom_traits_t, CGAL::internal_np::No_property> >(CGAL::Polyhedron_3<CGAL::Simple_cartesian<float>, possumwood::CGALPolyhedronItems, CGAL::HalfedgeDS_default, std::allocator<int> > const&, std::reference_wrapper<possumwood::Property<std::array<float, 3ul> > >, CGAL::Named_function_parameters<(anonymous namespace)::FakeKernel, CGAL::internal_np::geom_traits_t, CGAL::internal_np::No_property> const&) (pmesh=..., vnm=..., np=...) at /usr/include/CGAL/Polygon_mesh_processing/compute_normal.h:307
#8  0x00007fffda0823ad in (anonymous namespace)::compute(dependency_graph::Values&) (data=...)
    at /home/hans/projects/possumwood/src/plugins/cgal/nodes/normals_generator.cpp:228
#9  0x00007ffff7efd7fb in std::__invoke_impl<dependency_graph::State, dependency_graph::State (*&)(dependency_graph::Values&), dependency_graph::Values&>(std::__invoke_other, dependency_graph::State (*&)(dependency_graph::Values&), dependency_graph::Values&) (__f=@0x7fffdabdd950: 0x7fffda082050 <(anonymous namespace)::compute(dependency_graph::Values&)>, __args=...)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:60
#10 0x00007ffff7efd76b in _ZSt10__invoke_rIN16dependency_graph5StateERPFS1_RNS0_6ValuesEEJS3_EENSt9enable_ifIXsr6__and_ISt6__not_ISt7is_voidIT_EESt14is_convertibleINSt15__invoke_resultIT0_JDpT1_EE4typeESA_EEE5valueESA_E4typeEOSF_DpOSG_ (__fn=@0x7fffdabdd950: 0x7fffda082050 <(anonymous namespace)::compute(dependency_graph::Values&)>, __args=...)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:141
#11 0x00007ffff7efd63b in std::_Function_handler<dependency_graph::State (dependency_graph::Values&), dependency_graph::State (*)(dependency_graph::Values&)>::_M_invoke(std::_Any_data const&, dependency_graph::Values&) (__functor=..., __args=...) at /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:291
#12 0x00007ffff5a70bc1 in std::function<dependency_graph::State (dependency_graph::Values&)>::operator()(dependency_graph::Values&) const (this=0x7fffdabdd950, __args=...)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:622
#13 0x00007ffff5a6fd1f in dependency_graph::NodeBase::computeOutput(unsigned long) (this=0x7fffd719e2c0, index=3)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/node_base.cpp:237
#14 0x00007ffff5a77c70 in dependency_graph::Port::getData() (this=0x7fffd7133cf0) at /home/hans/projects/possumwood/src/libs/dependency_graph/port.cpp:113
#15 0x00007ffff5a6f7b7 in dependency_graph::NodeBase::computeInput(unsigned long) (this=0x7fffd6e19ec0, index=0)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/node_base.cpp:198
#16 0x00007ffff5a77bf7 in dependency_graph::Port::getData() (this=0x7fffd70c2880) at /home/hans/projects/possumwood/src/libs/dependency_graph/port.cpp:105
#17 0x00007ffff5a6fad7 in dependency_graph::NodeBase::computeOutput(unsigned long) (this=0x7fffd6e19ec0, index=2)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/node_base.cpp:228
#18 0x00007ffff5a77c70 in dependency_graph::Port::getData() (this=0x7fffd70c2920) at /home/hans/projects/possumwood/src/libs/dependency_graph/port.cpp:113
#19 0x00007ffff5a6f7b7 in dependency_graph::NodeBase::computeInput(unsigned long) (this=0x7fffd6e1a340, index=1)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/node_base.cpp:198
#20 0x00007ffff5a77bf7 in dependency_graph::Port::getData() (this=0x7fffd7132210) at /home/hans/projects/possumwood/src/libs/dependency_graph/port.cpp:105
#21 0x00007ffff1b5a5b5 in dependency_graph::Port::get<possumwood::VertexData>() (this=0x7fffd7132210)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/port.inl:21
#22 0x00007ffff1b599cc in dependency_graph::Values::get<possumwood::VertexData>(dependency_graph::InAttr<possumwood::VertexData> const&) const (this=0x7fffd7286928, attr=...)
    at /home/hans/projects/possumwood/src/libs/dependency_graph/values.inl:16
#23 0x00007ffff1b4baa5 in (anonymous namespace)::Drawable::draw() (this=0x7fffd7286920) at /home/hans/projects/possumwood/src/plugins/render/nodes/draw.cpp:128
#24 0x00007ffff7edbb0d in possumwood::Drawable::doDraw(possumwood::ViewportState const&) (this=0x7fffd7286920, viewport=...)
    at /home/hans/projects/possumwood/src/libs/possumwood_sdk/drawable.cpp:41
#25 0x00007ffff7e6d0c9 in possumwood::App::draw(possumwood::ViewportState const&, std::function<void (dependency_graph::NodeBase const&)>) (this=
    0x7ffff244d000, viewport=..., stateChangedCallback=...) at /home/hans/projects/possumwood/src/libs/possumwood_sdk/app.cpp:230
#26 0x00000000005a0179 in Adaptor::draw(possumwood::ViewportState const&) (this=0x7ffff2552480, viewport=...)
    at /home/hans/projects/possumwood/src/apps/possumwood/adaptor.cpp:568
#27 0x00000000005ebf5b in MainWindow::draw(float) (this=0x7fffffffd6a0, dt=2.74980307) at /home/hans/projects/possumwood/src/apps/possumwood/main_window.cpp:449
#28 0x0000000000676ead in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x7fffffffd6a0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffffffa360)
    at moc_main_window.cpp:72
#29 0x00007ffff5fe9300 in QMetaObject::activate(QObject*, int, int, void**) (sender=0x7fffdaccb080, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>)
    at kernel/qobject.cpp:3804
#30 0x000000000067839a in Viewport::render(float) (this=0x7fffdaccb080, _t1=2.74980307) at moc_viewport.cpp:133
#31 0x000000000066f7ee in Viewport::paintGL() (this=0x7fffdaccb080) at /home/hans/projects/possumwood/src/apps/possumwood/viewport.cpp:94
#32 0x00007ffff6a3ae05 in QOpenGLWidgetPrivate::invokeUserPaint() (this=0x7fffdadab780) at ../../include/QtGui/../../src/gui/kernel/qopenglcontext.h:152
#33 0x00007ffff6a182b6 in QWidget::event(QEvent*) (this=0x7fffdaccb080, event=0x7fffffffa820) at kernel/qwidget.cpp:8981
#34 0x00007ffff69d5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffdc241980, receiver=receiver@entry=0x7fffdaccb080, e=e@entry=0x7fffffffa820)
    at kernel/qapplication.cpp:3700
#35 0x00007ffff69df0f0 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd758, receiver=0x7fffdaccb080, e=0x7fffffffa820) at kernel/qapplication.cpp:3446
#36 0x00007ffff5fbd93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffdaccb080, event=0x7fffffffa820) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#37 0x00007ffff6a10f4a in QWidgetPrivate::sendPaintEvent(QRegion const&) (this=this@entry=0x7fffdadab780, toBePainted=...) at kernel/qwidget.cpp:5698
#38 0x00007ffff6a3ac2f in QOpenGLWidget::resizeEvent(QResizeEvent*) (this=0x7fffdaccb080, e=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qsize.h:134
#39 0x00007ffff6a18947 in QWidget::event(QEvent*) (this=0x7fffdaccb080, event=0x7fffffffac10) at kernel/qwidget.cpp:9122
#40 0x00007ffff69d5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffdc241980, receiver=receiver@entry=0x7fffdaccb080, e=e@entry=0x7fffffffac10)
    at kernel/qapplication.cpp:3700
#41 0x00007ffff69df0f0 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd758, receiver=0x7fffdaccb080, e=0x7fffffffac10) at kernel/qapplication.cpp:3446
#42 0x00007ffff5fbd93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffdaccb080, event=0x7fffffffac10) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#43 0x00007ffff6a0fce0 in QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) (this=this@entry=0x7fffdadab780, x=0, y=0, w=<optimized out>, h=<optimized out>, isMove=isMove@entry=true)
    at kernel/qwidget.cpp:7366
#44 0x00007ffff6a10a84 in QWidget::setGeometry(QRect const&) (this=0x7fffdaccb080, r=...) at ../../include/QtCore/../../src/corelib/tools/qrect.h:266
#45 0x00007ffff69f9425 in QWidget::setGeometry(int, int, int, int) (ah=850, aw=799, ay=0, ax=0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qrect.h:184
#46 QWidgetItem::setGeometry(QRect const&) (rect=..., this=0x7fffdacfa2e0) at kernel/qlayoutitem.cpp:505
#47 QWidgetItem::setGeometry(QRect const&) (this=0x7fffdacfa2e0, rect=...) at kernel/qlayoutitem.cpp:451
#48 0x00007ffff69ef23b in QBoxLayout::setGeometry(QRect const&) (this=<optimized out>, r=...) at ../../include/QtCore/../../src/corelib/tools/qrect.h:215
#49 0x00007ffff69f5618 in QLayoutPrivate::doResize(QSize const&) (this=0x7fffdac17400, r=...) at ../../include/QtCore/../../src/corelib/tools/qrect.h:184
#50 0x00007ffff69f6911 in QLayout::widgetEvent(QEvent*) (this=<optimized out>, e=e@entry=0x7fffffffb0f0) at ../../include/QtGui/../../src/gui/kernel/qevent.h:471
#51 0x00007ffff69d5a4a in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffdc241980, receiver=receiver@entry=0x7fffdaddad80, e=e@entry=0x7fffffffb0f0)
    at kernel/qapplication.cpp:3689
#52 0x00007ffff69df0f0 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd758, receiver=0x7fffdaddad80, e=0x7fffffffb0f0) at kernel/qapplication.cpp:3446
#53 0x00007ffff5fbd93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffdaddad80, event=0x7fffffffb0f0) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#54 0x00007ffff6a0fce0 in QWidgetPrivate::setGeometry_sys(int, int, int, int, bool)
    (this=this@entry=0x7fffdadf4800, x=659, y=100, w=<optimized out>, h=<optimized out>, isMove=isMove@entry=true) at kernel/qwidget.cpp:7366
#55 0x00007ffff6a10a84 in QWidget::setGeometry(QRect const&) (this=0x7fffdaddad80, r=...) at ../../include/QtCore/../../src/corelib/tools/qrect.h:266
#56 0x00007ffff6a17b3f in QWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=_o@entry=0x7fffdaddad80, _c=_c@entry=QMetaObject::WriteProperty, _id=_id@entry=3, _a=_a@entry=0x7fffffffb260) at .moc/moc_qwidget.cpp:514
#57 0x00007ffff6a1a203 in QWidget::qt_metacall(QMetaObject::Call, int, void**) (this=0x7fffdaddad80, _c=QMetaObject::WriteProperty, _id=3, _a=0x7fffffffb260) at .moc/moc_qwidget.cpp:610
#58 0x00007ffff5de1c8d in QPropertyAnimationPrivate::updateProperty(QVariant const&) (newValue=..., this=0x7fffd1450540) at animation/qpropertyanimation.cpp:132
#59 QPropertyAnimationPrivate::updateProperty(QVariant const&) (newValue=..., this=0x7fffd1450540) at animation/qpropertyanimation.cpp:116
#60 QPropertyAnimation::updateCurrentValue(QVariant const&) (this=<optimized out>, value=...) at animation/qpropertyanimation.cpp:239
#61 0x00007ffff5dde700 in QVariantAnimationPrivate::setCurrentValueForProgress(double) (this=0x7fffd1450540, progress=<optimized out>)
    at ../../include/QtCore/5.12.8/QtCore/private/../../../../../src/corelib/kernel/qobject_p.h:110
#62 0x00007ffff5ddef20 in QVariantAnimationPrivate::recalculateCurrentInterval(bool) (this=0x7fffd1450540, force=<optimized out>) at animation/qvariantanimation.cpp:269
#63 0x00007ffff5de2667 in QPropertyAnimation::updateState(QAbstractAnimation::State, QAbstractAnimation::State)
    (this=0x7fffd2fef9b0, newState=<optimized out>, oldState=QAbstractAnimation::Stopped) at ../../include/QtCore/../../src/corelib/tools/qarraydata.h:208
#64 0x00007ffff5ddc9bc in QAbstractAnimationPrivate::setState(QAbstractAnimation::State) (newState=QAbstractAnimation::Running, this=0x7fffd1450540)
    at ../../include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:167
#65 QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy) (this=<optimized out>, policy=<optimized out>) at animation/qabstractanimation.cpp:1357
#66 0x00007ffff6aca104 in QWidgetAnimator::animate(QWidget*, QRect const&, bool) (this=this@entry=0x7fffdc2f5da0, widget=<optimized out>, _final_geometry=..., animate=<optimized out>, 
    animate@entry=false) at widgets/qwidgetanimator.cpp:113
#67 0x00007ffff6b04ff0 in QDockAreaLayout::apply(bool) (this=this@entry=0x7fffdc2f5940, animate=animate@entry=false) at widgets/qdockarealayout.cpp:3224
#68 0x00007ffff6b35c35 in QMainWindowLayoutState::apply(bool) (animated=<optimized out>, this=0x7fffdc2f5868) at widgets/qmainwindowlayout.cpp:670
#69 QMainWindowLayout::applyState(QMainWindowLayoutState&, bool) (this=this@entry=0x7fffdc2f5800, newState=..., animate=animate@entry=false) at widgets/qmainwindowlayout.cpp:2709
#70 0x00007ffff6b38b0a in QMainWindowLayout::restoreState(QDataStream&) (this=0x7fffdc2f5800, stream=...) at widgets/qmainwindowlayout.cpp:2733
#71 0x00007ffff6b2c7e9 in QMainWindow::restoreState(QByteArray const&, int) (this=0x7fffffffd6a0, state=..., version=0) at widgets/qmainwindow.h:211
#72 0x00007ffff7e6becc in possumwood::App::loadFile(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> const&) (this=0x7ffff244d000, json=...)
    at /home/hans/projects/possumwood/src/libs/possumwood_sdk/app.cpp:138
#73 0x00007ffff7e6c375 in possumwood::App::loadFile(possumwood::Filepath const&, bool) (this=0x7ffff244d000, filename=..., alterCurrentFilename=false)
    at /home/hans/projects/possumwood/src/libs/possumwood_sdk/app.cpp:160
#74 0x00000000005ed514 in MainWindow::loadFile(boost::filesystem::path const&, bool) (this=0x7fffffffd6a0, filename=..., updateFilename=false)
    at /home/hans/projects/possumwood/src/apps/possumwood/main_window.cpp:618
#75 0x000000000061d1c4 in Toolbar::Toolbar()::$_0::operator()() const (this=0x7fffd6dbf080) at /home/hans/projects/possumwood/src/apps/possumwood/toolbar.cpp:121
#76 0x000000000061d009 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Toolbar::Toolbar()::$_0>::call(Toolbar::Toolbar()::$_0&, void**)
    (f=..., arg=0x7fffffffc640) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:146
#77 0x000000000061cfe1 in QtPrivate::Functor<Toolbar::Toolbar()::$_0, 0>::call<QtPrivate::List<>, void>(Toolbar::Toolbar()::$_0&, void*, void**) (f=..., arg=0x7fffffffc640)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:256
#78 0x000000000061cf6c in QtPrivate::QFunctorSlotObject<Toolbar::Toolbar()::$_0, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
    (which=1, this_=0x7fffd6dbf070, r=0x7fffd6a6e5d0, a=0x7fffffffc640, ret=0x0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:439
#79 0x00007ffff5fe9458 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffc640, r=0x7fffd6a6e5d0, this=0x7fffd6dbf070)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394
#80 QMetaObject::activate(QObject*, int, int, void**) (sender=0x7fffd6a6e5d0, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>)
    at kernel/qobject.cpp:3784
#81 0x00007ffff69cf3e6 in QAction::triggered(bool) (this=this@entry=0x7fffd6a6e5d0, _t1=<optimized out>) at .moc/moc_qaction.cpp:380
#82 0x00007ffff69d1aa2 in QAction::activate(QAction::ActionEvent) (this=0x7fffd6a6e5d0, event=<optimized out>) at kernel/qaction.cpp:1166
#83 0x00007ffff6acbe10 in QAbstractButtonPrivate::click() (this=0x7fffd6acf680) at widgets/qabstractbutton.cpp:397
#84 0x00007ffff6acc035 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) (this=0x7fffd6dbf010, e=0x7fffffffcbe0) at widgets/qabstractbutton.cpp:1011
#85 0x00007ffff6bbf5fe in QToolButton::mouseReleaseEvent(QMouseEvent*) (this=<optimized out>, e=<optimized out>) at widgets/qtoolbutton.cpp:622
#86 0x00007ffff6a182b6 in QWidget::event(QEvent*) (this=0x7fffd6dbf010, event=0x7fffffffcbe0) at kernel/qwidget.cpp:8981
#87 0x00007ffff6acd273 in QAbstractButton::event(QEvent*) (this=this@entry=0x7fffd6dbf010, e=e@entry=0x7fffffffcbe0) at widgets/qabstractbutton.cpp:968
#88 0x00007ffff6bbf6a8 in QToolButton::event(QEvent*) (this=0x7fffd6dbf010, event=0x7fffffffcbe0) at widgets/qtoolbutton.cpp:1001
#89 0x00007ffff69d5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffdc241980, receiver=receiver@entry=0x7fffd6dbf010, e=e@entry=0x7fffffffcbe0)
    at kernel/qapplication.cpp:3700
#90 0x00007ffff69df343 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fffd6dbf010, e=0x7fffffffcbe0) at kernel/qapplication.cpp:3160
#91 0x00007ffff5fbd93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffd6dbf010, event=0x7fffffffcbe0) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#92 0x00007ffff69de457 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
    (receiver=receiver@entry=0x7fffd6dbf010, event=event@entry=0x7fffffffcbe0, alienWidget=alienWidget@entry=0x7fffd6dbf010, nativeWidget=0x7fffffffd6a0, buttonDown=buttonDown@entry=0x7ffff6f058d0 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2646
#93 0x00007ffff6a3435d in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=0x7fffd6e45940, event=0x7fffffffd060) at /usr/include/c++/9/bits/atomic_base.h:413
#94 0x00007ffff6a371ec in QWidgetWindow::event(QEvent*) (event=0x7fffffffd060, this=0x7fffd6e45940) at kernel/qwidgetwindow.cpp:289
#95 QWidgetWindow::event(QEvent*) (this=0x7fffd6e45940, event=0x7fffffffd060) at kernel/qwidgetwindow.cpp:232
#96 0x00007ffff69d5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x7fffdc241980, receiver=receiver@entry=0x7fffd6e45940, e=e@entry=0x7fffffffd060)
    at kernel/qapplication.cpp:3700
#97 0x00007ffff69df0f0 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd758, receiver=0x7fffd6e45940, e=0x7fffffffd060) at kernel/qapplication.cpp:3446
#98 0x00007ffff5fbd93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffd6e45940, event=0x7fffffffd060) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142
#99 0x00007ffff63a67d3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=e@entry=0x7fffd0c11c30) at kernel/qguiapplication.cpp:2107
#100 0x00007ffff63a810b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=e@entry=0x7fffd0c11c30) at kernel/qguiapplication.cpp:1842
#101 0x00007ffff638235b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1151
#102 0x00007fffd839c32e in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at qxcbeventdispatcher.cpp:105
#103 0x00007ffff46aa17d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#104 0x00007ffff46aa400 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#105 0x00007ffff46aa4a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#106 0x00007ffff6015565 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffdacc62b0, flags=...) at kernel/qeventdispatcher_glib.cpp:422
#107 0x00007ffff5fbc4db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd400, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:140
#108 0x00007ffff5fc4246 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:120
#109 0x00000000005de26b in main(int, char**) (argc=1, argv=0x7fffffffdb08) at /home/hans/projects/possumwood/src/apps/possumwood/main.cpp:141

I also tried an install from PPA, and snap, and they all crash from these toolbar buttons.

[Question] How is the iNearVertpos and iFarVertpos calculated?

Hi currently working through implementing a glsl shader using your Infinite Grid tutorial in OpenGL and I want know how the iNearVertpos and iFarVertpos used in possum shaders are calculated.

I dug through possum's source code in background.cpp and as far as I can understand, gluUnproject is being used to calculate the vertices of near and far quads. So I tried to do something similar but I am not getting anything(I am getting quads but the z value of near quad is -ve and trying to check if it's 0 ), can I ask you to check my approach?

Here is the code I used to calculate the vertices of quads:
https://gist.github.com/BhayanakMoth/467236bd665a3f8b8be544373e41b61a

And here is the crux of camera code which I used to update ModelView matrix.
https://gist.github.com/BhayanakMoth/157bb4646f77d74d506e2d1fee85ec5f

If there is any reference on creating the near / far quad that'll help a lot.
Thanks a lot for your time.

Installation error

Hello Professor:
During the installation of possumwood on Ubuntu 18.04 using PPA or Snap, we encountered the following problems. We don't know the reason, and we don't know how to solve these problems. Hope you can help us find a solution when you are free. Questions are as follows:
Warning: configuration file'possumwood.conf' not found!
terminate called after throwing an instance of'std::runtime_error'
what(): Cannot expand path-variable PLUGINS not found
Aborted (core dumped)
Thanks a lot for your time.

application problems

Dear Martin,
We encountered the following errors when using opengl and polymesh. Is our drive version too high? What version are you using?
Errors as follows:
OpenGL version supported by this platform is 4.6.0 NVIDIA 450.80.02
Segmentation fault (core dumped)
Thanks a lot for your time.

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.