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


Credits: igl@ETH Zurich, Alec Jacobson (New York University), Ilya Baran (Disney Research, Zurich), Jovan Popovic (Adobe Systems, Inc.), Olga Sorkine (ETH Zurich), lichterloh. Also makes heavy use of Eigen, CGAL and boost.


Shape-aware blend weight computation for 2D/3D meshes



  • Input can be either triangulated 2D meshes or 3D volumetric meshes
  • Supported control handles: single points, connected bones and cages (of arbitrary topology)
  • Control handles can be translated, scaled and rotated
  • Output can be used in blend skinning shaders for realtime performance
  • Includes forward kinematics solver for rotating bones
  • supports Instancing (incl. Noodles)
  • girlpower, check it out!

This pack comes with several nodes:

  • BoundedBiharmonicWeights: this is where the magic happens
  • ForwardKinematics: a simple forward kinematics solver for rotating bones
  • MatrixMultiplication: mainly used for debugging blend weights (and for now the only DX9 solution)
  • LinearBlendSkinning: a shader for rendering, atm DX11 only

Also included in this pack are previous plugins of mine: triangle, tetgen and mix-(transform) as they are useful helpers here and essential for some examples.

d.o.p.e. is based on research and code from the Interactive Geometry Lab @ ETH Zurich, ie "Bounded Biharmonic Weights for Real-Time Deformations": http://igl.ethz.ch/projects/bbw/


Source Code:




All my code is MIT where possible; always happy about credit to digitalWannabe/lichterloh
All code from libigl is MPL2



  • Pseudo edges; from the original research: linear transform helpers for point handles, which infer point rotations from their translations
  • DX9 version of linear blend skinning shader
  • Solution for normals
  • Dual quaternion skinning shaders for smoother rotation results
  • custom datatype to avoid huge spreadcounts
  • improve RemovRegions (Triangle + TetGen) performance, no good
  • run BoundedBiharmonicWeights on a different process to avoid blocking of vvvv
  • png2poly


v1.2 :

  • added support for instancing (incl. hack for noodles), see 3D girlpower folder
  • updated triangle/tetgen
  • now works in beta (50+)

v1.1 :

  • fixed x64 precision error in girlpower patch

v1.0 :

  • initial release

known bugs:

  • the linear blend skinning shader shows an error on startup, not sure why yet....only applies to alpha versions....
NOTE: All girlpower examples require DX11 (for now!), see the help patch of the BoundedBiharmonicWeights node for a DX9 (CPU-only) version. DX9 shaders coming soon!

Nothing works? Try installing this: https://www.microsoft.com/en-us/download/details.aspx?id=48145


30.01.17 [23:58 UTC] by digitalwannabe | 1360 downloads
v1.2 instancing support (incl. noodles), triangle/tetgen update, check against beta50
Show 2 older revisions

Older Revisions

03.11.16 [00:46 UTC] by digitalwannabe | 616 downloads
v1.1 no changed nodes, only fixed x64 precision errors in girlpower patches
30.10.16 [18:48 UTC] by digitalwannabe | 417 downloads

microdee 31/10/2016 - 17:02

I know I know, I can be annoying at this point but it would be nicer to manage the dependencies with vpm instead of manual copying (in this case the triangle, Tetgen, mix transform and an optional vpack file for girlpower dependencies)
I will try this out shortly

digitalwannabe 31/10/2016 - 22:24

No mate, I know you intend to help me and I know I gotta look into vpm asap as it makes things easier for everybody; just didn't have time yet....next update will be via vpm :)

microdee 01/11/2016 - 00:51

I can help you with any questions you might have! also note vpm can easily deal with copying the right architecture libraries so x86 vvvv won't get confused

dominikKoller 02/11/2016 - 00:02

This is big!

digitalwannabe 09/11/2016 - 14:22

glad you like it :)

CeeYaa 01/12/2016 - 22:37

THX for this amazing Contribution and for the nice vveekend vvorkshop with microdee :-)

Triangle Pin(Segments, Unity) and BoundedBiharmonicWeights
I have some issues with Bones and my Octopus
I got that I need to "Unity" the "Triangle" that "BoundedBiharmonicWeights" can do it'S magic but my Mesh looks weird. When I have more than 4Bones my Mesh get's crazy with Segments and Unity - if I switch of Segments it's ok but bones connect everything.


I can fake it with Alpha but what I didn't get here?

digitalwannabe 05/12/2016 - 16:07

hey ceeyaa,

first: thanks + your welcome ;)

using alpha textures in complex situations definitely is a way to go, also has been suggested to me by the author of the original research; however, what you are trying to achieve should be possible without any alpha tricks. What exactly goes wrong here is hard to tell, there's no real limit to bones other than usability issues, so the number of bones should not matter here. Can you upload your patch so I can have a look?

CeeYaa 05/12/2016 - 17:01


sure I'll send you the patch and assets - it's just a modification of your 2D: 03_
bones.v4p from DOPE/girlpower
OneDriveLink https://1drv.ms/u/s!Ahk1df51ZFJolvVRk9IAFCFHLBSl_g

digitalwannabe 16/12/2016 - 18:50

hey, sorry for the delay....seems like you found a bug in triangle; I can't reproduce it yet, but also I can't fix your patch. Where did you produce the points for the outline of the octopus?

also please be aware that you need to

1) feed triangle the segment points in the order in which they are connected, ie use the bone edge indices spread to getslice your segment points before you feed them to triangle
2) when using multiple segments each of them- in your case there are 3: two with 5 connected points, one with 7-need to have their own slice for the vertices input and the isSegment input of triangle, so use a cons with (in your case) 4 inputs and a isSegment spread with 4 slices!

i'll see if i can find and fix that bug asap....

CeeYaa 10/01/2017 - 15:23

sry for delay too - but I was in wintersleep
I tried your instructions, still weird but I see some improvements - I'll play with it again when I find some time and i'll report if I find an interesting patch behavior
now I need some time to start the new year
I send you how I produced the points - it's the contourPatch from the ImagePack
OneDriveLink https://1drv.ms/u/s!Ahk1df51ZFJol8UIs-QwRmbzlmIfew
cu thx greets

digitalwannabe 31/01/2017 - 01:12

hey @ceeyaa, thanks for the patch, will have a look at it asap!
I couldn't test it yet, but I did found a bug in Triangle with segments sharing the same points...please see if the latest upload solves your problem!

guest 20/06/2017 - 08:21

HI digitalwannabe,

Did you manage to isolate the problem with the reliability of linearskinblending?

I'm having problems with it at the moment where it can be gotten to work and then, restarting with the same working setup, linearblend doesn't compose the mesh no matter how many time I try to reset the plugin.

Admitedly my mesh is highly tesslated, so is this the important factor?

digitalwannabe 20/06/2017 - 12:22

Hi guest,

to be completely honest I've been super busy doing other stuff since I've released dope, so there wasn't time to test/debug it a lot. However, while doing all the help patches I have never experienced what you are describing.
Can you isolate the problem and share that patch?

Also: you can check if the matrix produced by BoundedBiharmonicWeights makes sense by summing up its components (+ spectral on output pin)....this should (almost) match the number of vertices you pass to the BoundedBiharmonicWeights node (+-5%), plus this should come to the same result every time!

I didn't do tesselation +dope yet, but also I don't see how this would affect results, should work fine I suppose, please share a patch if you can!

digitalwannabe 04/11/2017 - 12:46

@guest: as we're doing our first proper work with d.o.p.e. now I also experienced what you are describing and the problem seems to be auto layout in combination with the constant shader- the geometry composed in the IndexedGeometryBufferTriangleList subpatch has normals in it, also vertices are float3 and texcoords float2, but the constant shader does not use normals (which doesn't matter i suppose) and expects float4 for vertices and texcoords- as I understood the auto layout pin on the geometry shader is there to fix this, but it doesn't seem to work all the time.
So to fix it permanently, either make your own copy of a constant shader and change the layout in there, or change the IndexedGeometryBufferTriangleList subpatch to match the layout of the shader you use!

I will include an alternative version of IndexedGeometryBufferTriangleList inthe next release!

guest 06/11/2017 - 16:12

@digitalwannabe, thanks. There's a chance it was something to do with 32bit/64bit version of the plugin too.

neuston 04/04/2019 - 07:40

Is this project abandoned? I clicked into the github link but the page is 404 dead. I attended your NODE17 workshop, which was impressive, and I thought this project was promising.

motzi 05/04/2019 - 18:14

the link to github lacks the last point (.):
try this:

mrboni 14/04/2019 - 17:47

Does this support animating a mesh with blendshapes = eg a rigged model of a character's head in an fbx?

anonymous user login


~26d ago

mediadog: @ggml Yup, lots. Only used in 4.x, haven't tried in 5.x yet: https://www.unrealengine.com/marketplace/en-US/product/simple-udp-tcp-socket-client

~27d ago

ggml: someone has sent udp bytes to unreal ?

~2mth ago

micha_nismus: worked out, thank you very much ! :-)

~2mth ago

joreg: @micha_nismus does this help? https://youtu.be/xkrbT45BgOQ

~2mth ago

micha_nismus: thx joerg. Can anybody help me why i can't see any renderer in gamma? thx :-)

~2mth ago

joreg: @micha_nismus instead of discord, we're using matrix, see: chat

~2mth ago

micha_nismus: searching for a public discord server for vvvv

~2mth ago

joreg: Join us for the 20th #vvvv meetup on January 19th: https://thenodeinstitute.org/event/20-worldwide-vvvv-meetup/

~2mth ago

joreg: @schlonzo re "SDSL support" did you see the Shader wizard? or do you mean something different?