» Notuiv
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Notuiv

pack behavior GUI
Credits: MESO

about

₪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

boplbopl 05/05/2018 - 01:52

Massive!! and very stylish demo video too!

colorsound 05/05/2018 - 18:36

Thanks a lot and congrats ¡¡

circuitb 07/05/2018 - 14: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/05/2018 - 18: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/05/2018 - 20:58

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

stophl 10/10/2018 - 17: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/10/2018 - 19:18

Same error here. Gave up after a while.

microdee 15/10/2018 - 11: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/10/2018 - 11: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/10/2018 - 17:37

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

stophl 19/10/2018 - 01: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/10/2018 - 13: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/10/2018 - 02: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/10/2018 - 10:44

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

schlonzo 05/01/2019 - 16: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/01/2019 - 20: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/01/2019 - 16: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:

2. 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/01/2019 - 17:07

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

blausand 17/01/2019 - 05: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/01/2019 - 03:53

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

systray27 12/06/2019 - 00: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/06/2019 - 04:11

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

systray27 12/06/2019 - 13:32

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

anonymous user login

Shoutbox

~23h ago

joreg: Need your custom dose of #vvvv training? Join us at our studio in #berlin: vvvv-training-at-the-source

~6d ago

~11d ago

~11d ago

domj: Dev stream: Painting with light with a Vive controller, developing using VL and Schéma. Start at 17:00 https://www.twitch.tv/dominikjancik

~12d ago

joreg: July as it happened: vvvvhat-happened-in-july-2019 #vvvv

~13d ago

levi: @mrboni thanks mrboner. solved it by turning all the lights to strobe mode so framerate drops were actually a relief :P . love

~14d ago

joreg: reminder: this thursday, just before the patching circle, there is a free 2h intro to #vvvv gamma: free-vvvv-intro-workshops-this-summer-in-berlin

~14d ago

remony: this thursday, berlin, join the patching circle! patching-circle

~16d ago

mrboni: @levi - low light? gpu overworked?

~16d ago

levi: Any known issues w/ kinect2 dropping framerate massively lately?turned on today,hours before show and had this nice surprise.anyone ?