Giter Club home page Giter Club logo

quickvtk's Introduction

QuickVtk

Version VTK Qt

A live QML interpreter with embedded VTK support

1. Overview

QuickVtk is a live QML interpeter with built-in support for the VTK-Framework. You can simply learn or test QML code and develop prototypes in the domain of 2D/3D visualization by accessing VTK in a declarative way. To put it in one sentence: QuickVtk's main purpose is to enable reactive programming for VTK by utilizing the QML engine.

An embedded editor allows you to load, edit and compile QML code. Errors are shown directly in the UI and an embedded type browser gives a quick overview of all the different properties, methods and other information for a given type available in QuickVtk.

2. Screenshots

Different screenshots demonstrate some of QuickVtk's main features like 3D volume rendering, 2D image processing operations and mesh filters from VTK

3. Build Instruction

Documentation on how to build QuickVtk on the supported target platforms. Currently, you'll find only build instructions for macOS. The appropriate documentations for windows and linux will be comming soon.

4. User Guide

See the first three articles on how to use QuickVtk in the user guide section.

5. Current Development

Check out the Issues section which basically serves the purpose of tracking the next steps along the development roadmap.

Currently, some documentation needs to be written and I'm focusing on that until the most important basics are covered. Stay tuned!

6. Contributing

Any contribution is helpful and welcome! There are different ways of how you can contribute to this project and get involved with development:

  • Report an Issue simply by opening an issue here on GitHub with a detailed description if possible
  • Request Features/Enhancements also by opening an issue (tag it with an enhancement label) and provide a brief explanation of the requested feature
  • Open a Pull Request with your changes. Just make sure to create a new branch and reference the related issue to keep things organized

There are no hard rules in terms of coding style and such. Just take a look at some lines of code and that should be enough to discover some recurring patterns which keep the code more or less consistent.

7. Contact

If you're interested in the project, want to give some feedback or simply get in touch feel free to write a mail!

8. License

License

Copyright (c) 2016-2019, Alexander Eduard Szalo All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

quickvtk's People

Contributors

haampie avatar maidamai0 avatar qcring avatar ruisebastiao 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quickvtk's Issues

fix QML_BAD_GUI_RENDER_LOOP

Atm "QML_BAD_GUI_RENDER_LOOP" forces the application to run the UI on the main thread because forwarding QML events to VTK crashes the application.

Picking objects

Hi Q

I am trying to extend your project by introducing pickers. I am thinking something in the line of

Vtk.Viewer {
  Vtk.CellPicker {
    id: picker
    // automatically registered to parent object
  }

  Vtk.AxesActor }
    id: axes
    Component.onCompleted: {
      picker.addPicker(axes) // The actor is assigned to the list of pickable objects
    }
  }
}

How would you recommend distributing the functionality for picking objects between Viewer, Interactor, Renderer?

If you have any input, let me know.

Thanks in advance

make Core a QML module

I noticed all QML types like vtk.actor are registered to qmlengine by qmlRegisterType family functions in c++ code.Have you cansidered to make them a standalone QML module use qmldir so everyone can use it in QML like the native QML types without register it in c++ code.?

code formater tool

I have to disable auto-format function of my code editor when I modify code to keep the code style, a code formatter may help with this.

Clang-tidy is a good choice.

Reusing elements

How would one reuse a single actor in multiple render windows?

Row {
  Vtk.Viewer {
    Vtk.Actor { id: actor }
  }
  Vtk.Viewer {
    // same actor
  }
}

Of course you could instantiate the same actor twice, but I'd like to load it only once.

Maybe something like this?

Vtk.Actor {
  id: actor
  ...
}

Row {
  Vtk.Viewer {
    Vtk.ActorReference {
      actor: actor
    }
  }
  Vtk.Viewer {
    Vtk.ActorReference {
      actor: actor
    }
  }
} 

Broken with VTK 8.2.0 on Linux

I just rebuild the project with VTK 8.2.0 and Qt 5.12.3 on Ubuntu 18.04, and it seems the vtk windows is just 1 white pixel. When I resize it is sometimes shows some weird colored blocks. Do you experience the same on Linux?

Release vtk integration in qml as standalone library

Hi, great work!
QuickVtk is one of the few programs I found allowing to embed vtk into a qml application.

It would be interesting to have a standalone library with only the classes needed to embed vtk inside qt/qml. Do you think it would be possible to separate that part from the core of the application?

Thanks!

Builds but doesn't run

I've followed the build instructions but when I try to build and run in xcode the build succeeds but when it tries to run it appears to fail on line 72 in quickAppEngine.cpp:

auto rootObject = engine->rootObjects().at(0);
"index out of range"

I've tried with a Qt 12, 13 and the latest 14 with the same result. Happy to help you debug this as good as I can but I have limited experience with c++. If you point me in the right direction I might be able to get somewhere.

vtkquick_stacktrace.txt

AddApplicationSources

I use CMake 3.16.12.
During configure project, CMake Error at CMakeLists.txt:107 (AddApplicationSources):
Unknown CMake command "AddApplicationSources". error occurred.

QML errors and broken UI on Qt 5.9.1

Seems like Qt 5.9.1 broke some things in QuickVtk... UI is broken and references to some C++ controllers are missing from the QML side. I'm on it.

Code Editor Formatting

I still haven't figured out the best way of implementing a decent Code Editor in QML...

The QML TextEdit object provides access to a QQuickTextDocument instance, but the docs say that You are not allowed to modify the document.... So my guess is that the QTextCursor API can't be used for text processing. So there's still some research to do..

quickVtkFboOffscreenWindow.cpp:77 no member named TextureObjects

src/Core/Vtk/Internal/quickVtkFboOffscreenWindow.cpp:77:19: error: ‘class quick::Vtk::FboOffscreenWindow’ has no member named ‘TextureObjects’; did you mean ‘NoiseTextureObject’

My environment:
Debian 10
g++ 8.3.0-6. I
VTK-8.20

Are these member variables of the parents class (perhaps only using iOS?)

QML resources not found on Linux

After I installed, the QuickVTK couldn't find file:///home/matt/workspace/QuickVtk/Resources/qml/App/window.qml: File not found

I found this file in QuickVtk/res/qml/App/window.qml, so I made a simlink to get around this for now.

Resizing window on Windows leads to lockup

I compiled and ran QuickVtk on Windows using MSVC17 and Qt5.13 and Vtk8.2 with external module built.
I tried to resize the window which lead to the program locking up. It goes into an infinite loop doing re-layouts.

Add qml examples to menu

Having all examples available from the application menu is more convenient than loading them from the res directory.

Some DLLs not found

When click on QuickVtk.exe, message boxes pop out saying that some dlls are not found, like vtkRenderingExternal-7.1.dll, vtkFiltersTexture-7.1.dll
But I'm sure I have had these DLLs and I have added the path to them to debugging->environment
I build QuickVtk under Windows

Editor - auto-adjust scroll position to text cursor

The editor text cursor can be moved outside of the visible area. The TextEdit component should automatically adjust the scroll position so that the cursor remains visible to the user.

This happens when:

  • navigating lines via arrow keys
  • jump to top (CMD + Up)
  • jump to end (CMD + Down)
  • copy/paste

Rendering issue Qt 5.12.1 + VTK 8.2.0 on macOS 10.14

  • Qt 5.12.1 + VTK 8.2.0 builds are broken on macOS 10.14
  • might be interesting to check out if this error is caused by the updated dependencies (API changes maybe) or the latest macOS version...
  • needs some research and might take a while

Building on Linux

On Linux, the cmake files because the QuickVTK target isn't defined. I commented out the if condition on line 130 and it got it to work.

Also, anyone building on Linux needs to define -DCMAKE_CXX_FLAGS="--std=c++11"

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.