• Home
  • Documentation
  • Forum
  • Blog
  • Users
    • Map
    • Userlist
    • Businesses
    • Userpages
    • Connections
  • Contributions
    • All
    • Store
  • Downloads
    • vvvv beta
    • vvvv beta previews
  • Store

    Show / Hide Table of Contents

    Notuiv

    Author: microdee
    Date: 04 May, 2018
    Category: pack
    Credits:

    MESO

    Description

    1. ₪iv

    Notui is a UI behavior package written entirely in C# providing a robust skeleton for your UI elements. The intention here was to keep VVVV's vast drawing capabilities while eliminating the cobweb of doom usually present while patching UI logic. The result is a mostly dataflow friendly system which separates structure, stateful-logic and rendering. Note also that Notui is a C# library first and Notuiv is its VVVV implementation. This again means all the features of Notui theoretically can be accessed in VL and simply fetched from Nuget.org. This also means that you can patch your own element types and behavior delegates in VL. This is untested yet though.

    tl;dr, get it with vpm

    But get vpm first if you hate vpm though you have github releases: https://github.com/meso-unimpressed/Notuiv/releases :P

    And also it doesn't depend on either mp.essentials nor mp.dx. Yay I guess :P But it requires vvvv beta36+ and vux's DX11 1.1+ but 1.2+ is recommended from github. It doesn't work with beta35.8 or older because how AllowFeedback is changed to a much smarter interface in beta36. But you don't have to think about these if you use vpm ;) .NET 4.7 is required. Make sure your Windows 7+ is updated properly or install it from https://www.microsoft.com/en-US/download/details.aspx?id=56116

    Notui is available through Nuget for Visual Studio (Code) and VL.

    PM> Install-Package Notui
    

    Example:

    title

    The above thing is a girlpower patch demoing a simple application structure with Notuiv inside. This is the patch behind it:

    title

    And expanded:

    title

    As you can see it's relatively simple to set up this 2 draggable windows with stateful content and animated declarative transitions patched 100% in VVVV with Notuiv.

    Features

    • Separate semantics describing UI structure and its stateful realization ** Element Prototypes and their Instances
    • Elements are nestable ** which means you can organize them into parents/children hierarchy and children will inherit their parent's space
    • Hit-testing touches and other pointers are happening in full 3D ** with arbitrary View and Projection matrices, but it won't make your life harder in 2D
    • Separate events for hovering, interacting and the beginning/ending of both. ** You also have full control over how elements are receiving touches, or blocking touches from elements beneath them.
    • Special events for mouse interactions ** Notui also provides you with a Mouse wrapper (same as we're all used to in vvvv)
    • Touch Intersections provide you with both world space and element space coordinates ** Intersections also have their own space which are also provided with Transforms. So you can easily create 3D content on the place of the interaction. With this you can also get the tangential space of the surface of 3D elements at the point of interaction.
    • Interaction Behavior delegate classes written for CLR (C# or VL) attached to elements ** which are executed on them each frame. Currently Notui comes with few but it has an easy API to implement your own, and I also have plans for waay more: ** advanced (picture) stack sliding with inertia in 3D ** value sliders ** mouse wheel scrolling with inertia ** moving to the top on touch (only makes sense in 2D) ** and more to come...
    • Several shapes for hit-testing ** Currently available: ** infinite plane and rectangle ** circle and segment ** planar arbitrary polygon, ** box and sphere ** and more to come...
    • Effortless Fading in and Fading out effects even with Staggering and Declarative transform transitions ** You just feed the present list of your element prototypes into a Notui Context and it'll take care of keeping element instances for fading out which are no longer present among your prototypes. If set then Notui can also automatically apply a Damper transition for the transforms changed from the Prototype.
    • Notui considers touch force ** It uses that to determine if a touch is hovering over an element or actually touching it. This way mouse interaction and touches from windows are dealt with the same semantics, but you can also supply your own touches from any other device which might actually support real force or pointer-screen distance. (like Intous tablets) Also you can do anything else with it yourself ;)
    • Both Prototype elements and element Instances can hold any number of arbitrary attached objects and values ** which can be modified on Instances to keep the side-effects of your behaviors OR interact with external data represented by a Notui element. You can also attach DX11 resources.
    • Multiple and nestable Notui Contexts ** which are the core of this package, managing everything including hit-testing, instantiating and organizing instances. You can have as many of them as you like, you can even attach one to any element and make it act like either "overflow: hidden" in CSS or for multiple viewports. Contextception.
    • Elements are dealt with asynchronously and in parallel ** Running at least 2 times faster on modern Intel i7 CPU's than it would synchronously. Interaction Behavior delegates are also run in this parallel threads.
    • In VVVV prototypes are created in a similar fashion as layers in DX11 ** And fed to Context nodes which are just like Renderer nodes in DX11
    • Opaq (Object Path Query) implementation on nested elements ** In a nutshell it allows nested object query on anything with couple of delegate functions (like XPath for XML) coming with md.stdl. You can also have Regex instead of regular absolute path steps. See help patch of Sift (Notui.Context Opaq) for more info.
    • Notui has XML docs for all of its classes and public API's
    • Notuiv in VVVV has helpful girlpower and help patches for every node*

    *where it makes sense.

    Roadmap:

    • next minor version ** Hittesting arbitrary DX11 geometry ** (De)Serialization of element instances via XML or MessagePack ** More basic interaction behaviors like Toggle buttons, radio buttons ** Maybe VL girlpower. Maybe.
    • plans ** Camera movement with multitouch ** Context Behaviors ** Raymarching distance fields (maybe)

    title

    Repos:

    https://github.com/meso-unimpressed/Notui https://github.com/meso-unimpressed/Notuiv

    The name comes from the fact that this library only handles structural definitions, behavioral patterns, and state-ful element management, but it's not providing ways of drawing those elements. This decision made it possible to use it in a graphics backend agnostic way and maintain complete user experience and artistic freedom.

    Side note: Now for those who want to use Notui outside of VVVV don't get fooled or intimidated by the lines of code count of Notuiv implementation, that amount of boilerplate code is not a Notui specific phenomena . It's an inherent structural issue with how VVVV works. It's a general rule of thumb that if you want to implement a large library solving a big set of problems in a very modular way with lot's of information on their building blocks, VVVV's plugin interfaces requires thousands if not ten-thousands of lines boilerplate to deal with all the conditions a plugin can have. This is 100% solved in VL though.

    Disclaimer on the logo: Notui have nothing to do with Israel's new shequel. That symbol just looks great and resembles an 'n' and a 'u' interlocked, throw in an 'i' and you'll get Notui \o/. But if anybody feels offended by this for any serious reason (like if an Israeli person really feel like their national currency symbol is being abused by random UI libraries for simply aesthetic reasons which has nothing to do with it, or with Israel) I'll immediately change it.

    Made in MESO

    title

    Comments

    Comments are no longer accepted.
    Please create a new topic in the vvvv beta forum to discuss this contribution.
    boplbopl
    04 May, 2018 - 23:52

    Massive!! and very stylish demo video too!

    colorsound
    05 May, 2018 - 16:36

    Thanks a lot and congrats ¡¡

    circuitb
    07 May, 2018 - 12:57

    great one Microdee!! thanks side note : on windows 8.1 seems you need to install Microsoft .NET Framework 4.7.1 :https://www.microsoft.com/en-US/download/details.aspx?id=56116 otherwise you get a System.ValueTuple´3´ error probably related to this AllowFeedback thing since tty ask for a framedelay!

    microdee
    07 May, 2018 - 16:17

    @circuitb: nope I use ValueTuples so Notui requires .NET 4.7. I thought it's coming with windows updates for windows 7+. But good note, I'll add it to the requirements

    alg
    13 May, 2018 - 18:58

    Looks great guys, can't wait to test it.

    stophl
    10 Oct, 2018 - 15:25

    I tried installing Notuiv as suggested via vpm but getting one red node though (which is Context (Notui) ). The exception dialog tells me:


    System.IO.FileLoadException: Could not load file or assembly 'System.Interactive, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

    System : Windows 8 Home Edition, Version: 6.2, Build: 23F0, "" Processor: Intel, Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz, 2400 MHz MMX SSE SSE2 SSE3 SSSE3 64 bits DEP Memory: 8049; free 3701 Display : 1920x1080 pixels, 32 bpp

    I don't wanna spam the comments with stacks and loaded modules, so the full log is here: https://apostrophstoph.de/stuph/vvvv.exe-exception-2018-10-10.log

    After a little bit of searchengining I might have an idea of what's going on, but really no idea of what to do about it. I installed and deleted 50beta37_x64 plus the whole vpm-Notui-routine several times and let ccleaner fix the registry in between, but things didn't change :(

    synth
    14 Oct, 2018 - 17:18

    Same error here. Gave up after a while.

    microdee
    15 Oct, 2018 - 09:33

    hmm I never encountered this exception, ccleaner and registry isn't likely to do anything good for this. Try deleting all *.dll.config files in md.core and in Notuiv and see if that helps.

    schlonzo
    18 Oct, 2018 - 09:54

    unable to get it running :( beta37 + dx11 1.3

    github release pack in packs folder - all nodes red vpm throws error:

    Compilation error: (7,15): error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?) (33,28): error CS0103: The name 'JObject' does not exist in the current context Press any key to exit...

    tgd
    18 Oct, 2018 - 15:37

    might be just unziping vpm with 7zip, like mentioned here vpm

    stophl
    18 Oct, 2018 - 23:22

    Hm, deleted all (==two) *.dll.config files in md.core, but that didn't help. Actually I didn't find any in packs/Notuiv, there's only the nodes folder (and girlpower) and inside that there's the plugins folder, but no *.dll.config files in there..?

    I've tried to install Notuiv (via vpm) on two other systems now: one is win7, the other is a fresh installation of win10 with all win updates. I get the same error on all three systems. So either there's something broke these days because of win-updates / .NET 4.7.1+ or I've missed something pretty basic, which seems to be the more plausible explanation, I must admit. But what? Btw, I used 7zip.

    schlonzo
    19 Oct, 2018 - 11:47

    extracted vpm with 7zip - same error. notuiv works for ne now on beta36 with the github release!

    whoa... this is beautiful massive thanks!

    microdee
    20 Oct, 2018 - 00:02

    @stophl: unfortunately I know as much as you do in this regard. it would be nice to look at your computer via a teamviewer session if possible to see what could cause this.

    please track this issue here: https://github.com/meso-unimpressed/Notuiv/issues/1

    stophl
    20 Oct, 2018 - 08:44

    micodee You're vvvvery welcome to do so. I'm gonna send you an email in a minute. Thanks!

    schlonzo
    05 Jan, 2019 - 14:40

    would love to try the new release but v4 won't start with any version above 0.23 tried with vvvv 36, 37 and 38 on two different w10 machines, one with clean install.

    microdee
    05 Jan, 2019 - 18:12

    in case "vvvv won't start", "vvvv crashes without error message" check the Event Viewer of Windows and in "Windows Logs/Application" see all errors. If one of them mentioning vvvv even better if its source column says ".NET Runtime" see if it says anything about Notui(v). then I can help

    blausand
    16 Jan, 2019 - 14:46

    @microdee Same here. Windows logs two errors:

    1. by ".NET Runtime"
    <E> Anwendung: vvvv.exe
    Frameworkversion: v4.0.30319
    Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
    Ausnahmeinformationen: Ausnahmecode c0000005, Ausnahmeadresse 000000000040B669
    Stapel:
    
    1. it's bubbled up "Application Error":
    <E> Name der fehlerhaften Anwendung: vvvv.exe, Version: 38.1.4003.0, Zeitstempel: 0x5c12b636
    Name des fehlerhaften Moduls: vvvv.exe, Version: 38.1.4003.0, Zeitstempel: 0x5c12b636
    Ausnahmecode: 0xc0000005
    Fehleroffset: 0x000000000000b669
    ID des fehlerhaften Prozesses: 0x2b94
    Startzeit der fehlerhaften Anwendung: 0x01d4ada0c092aaa5
    Pfad der fehlerhaften Anwendung: C:\Prograble\vvvv_50beta38.1_x64\vvvv.exe
    Pfad des fehlerhaften Moduls: C:\Prograble\vvvv_50beta38.1_x64\vvvv.exe
    Berichtskennung: 392de898-f190-4986-a2dc-5ba10f83d9f2
    Vollständiger Name des fehlerhaften Pakets: 
    Anwendungs-ID, die relativ zum fehlerhaften Paket ist
    

    Hope it helps you since the pack looks really promising, man!

    microdee
    16 Jan, 2019 - 15:07

    what's after "Stapel"? according to google translate that seems to be the most important part of the message.

    blausand
    17 Jan, 2019 - 03:17

    Nothing, sadly... There's some WER report following.

    Starting vvvv /logstartup generates a .log containing this line:

    <04:10:56.908> creating AddonHost
    <04:10:57.674> vvvv caused error during startup: Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen.
    

    Which basically means

    At least one type in the assembly could not be loaded. Consult the LoaderExceptions property for details.
    
    microdee
    18 Jan, 2019 - 01:53

    hmmm, just a hunch, can you go to vvvv/packs/Notuiv and delete the "factories" folder, see if it works

    systray27
    11 Jun, 2019 - 22:01

    Hello, same problems here with not VVVV not starting up anymore. Any leads on how to fix this? When I delete the factories folder VVVV indeed does start up. But Notui of course ain't working. Reported this on Github too, see there for details.

    microdee
    12 Jun, 2019 - 02:11

    @systray27: answered to your issue, tl;dr: unzip vpm with 7zip.

    systray27
    12 Jun, 2019 - 11:32

    @microdee: Thanks, I did get it running now. Curse to windows explorer unzipper!

    • Improve this Doc

    © 2020 by vvvv group. Imprint | Privacy Policy.
    Thanks to DocFX for building this website. Analytics by Plausible.

    Back to top