What can be brought in to Canvas from a DCC?

PoobyPooby Posts: 122
edited February 2016 in Integrations

Sorry to bombard everyone with questions, but I'll be doing a lot of it I'm afraid .

Can Canvas read Weightmaps and Shapes and envelopes etc?
Its dawning on me that ICE is designed to read all softimage scene data, but Canvas isn't dcc specific, so I'm not so sure how you'd do this kind of thing.

I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

Comments

  • EricTEricT Administrator, Moderator, Fabric Employee Posts: 304 admin

    No you cannot hook up weight maps, shapes, or envelopes from the DCC (Softimage specifically in your case). There are scripted ways around this but some development based on particular use cases may be needed.

    Eric Thivierge
    Kraken Developer
    Kraken Rigging Framework

  • PoobyPooby Posts: 122

    Ok. I suppose I could sneak them in through various means such as converting the data to point positions on a clone mesh.
    I can see why it's not there by default, but it's a big pain as those things form the backbone of my work.
    Does canvas have a way of doing this internally? You can't paint maps in canvas as there is no viewport. Is this something you'd use alembic for?

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • Roy NieterauRoy Nieterau Posts: 258 ✭✭✭
    edited February 2016

    You can actually paint in Canvas' viewport that is also supported in DCCs through the "Manipulation system" that Fabric Engine provides.

    I remember there being some samples in the Canvas package.

    Similarly if your DCC provides a way to retrieve the weights (or anything) as an array than you should be able to connect those in a way. The tricky thing being that most of Maya weight implementation (etc.) stores it in a less easily accessible format on the node.

  • EricTEricT Administrator, Moderator, Fabric Employee Posts: 304 admin
    edited February 2016

    Canvas does have capabilities to paint attributes, it's something that needs some setup for though. Helge and Eric Mootz have done a bunch of work for mesh attributes in the recent daily builds. I'd check out their videos on the vimeo channel as well concerning the attributes.

    Softimage implements Canvas in a different way that it does in Maya. In maya you have the Canvas Op you can just feed data into ports by connections. For Softiamge you have to have the ability to connect these types of things but this isn't provided for the data that Paul wants.

    Eric Thivierge
    Kraken Developer
    Kraken Rigging Framework

  • PoobyPooby Posts: 122
    edited February 2016

    If there was a way of getting ICE data into canvas, everything would all be solved in one fell swoop. Is that possible? maybe not by default, but at all, with some custom hookup?

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • mootzoidmootzoid Fabric Employee Posts: 185 Fabric Employee

    I confirm that, currently, you cannot read/write weight maps and/or ICE data on polygon meshes.

    It would be pretty easy to implement weight map and ICE data support for input polygon meshes, it would roughly work like this:
    when a Softimage mesh gets converted to a Fabric PolygonMesh then the available ICE data (and weight maps) on the Softimage mesh is set as so-called *attributes" on the Fabric mesh. Along with the new set of geometry attribute presets that Helge built just recently you could do amazing things.

    I will file a ticket for this :)

  • PoobyPooby Posts: 122

    That would be awesome. Even if it's just for input, by being able to read ICE attributes, Fabric would have a far more interactive connection to SI.

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • PoobyPooby Posts: 122
    edited February 2016

    I have another related question..
    I'm confident I can bring blendshapes and weightmaps into Canvas via a workaround, (using duplicate meshes with the attributes hiding in the pointpositions like a Trojan Horse) but once they are in.. is there a way of storing them 'permanently' in some kind of unbreakable cache within Canvas so I can delete the sources ?
    Maybe this is what you mean by Geometry Attributes but can they just live somewhere to be called up at any time?

    OR.. Am I barking up the wrong tree and this can all be achieved through Alembic importing? Does Alembic allow shapes and maps etc?

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • PoobyPooby Posts: 122
    edited February 2016

    Or.. could a canvas node be made to read an ICE cache? or Visa versa

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • PoobyPooby Posts: 122

    Just out of interest, This is the kind of thing I'd have to do to get data into canvas.

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • mootzoidmootzoid Fabric Employee Posts: 185 Fabric Employee

    Interesting! I really like your idea of using the point position to store/transfer stuff.

    ... is there a way of storing them 'permanently' in some kind of unbreakable cache within Canvas so I can delete the sources...

    No, there isn't. You will have to cache the data to disk somehow.
    Fabric has several ways to store data to disk.
    I would recommend to take a look a these two things:

    • In the node explorer: "Fabric/Exts/FileIO/" contains presets for reading/writing binary or text data to disk. Cool stuff if you want to write your own custom cache thingy.
    • In the samples: "Samples/Canvas/Alembic/" contains two dozen of samples that demonstrate how to load/save Alembic files using the new high level Alembic presets. The presets are in "Fabric/Compounds/Alembic/".
  • PoobyPooby Posts: 122

    Yes. You can do a lot with point positions. It's effectively having 3 scalar amounts per frame. With a sequence and /or multiple meshes you could store huge amounts.
    I started using alternative ways of storing stuff years ago when I had to transfer data to Lightwave from xsi that was unsupported by caching methods such as Mdd files. Ice is the perfect tool to write them. I guess Fabric would be too.

    Storing to disk is fine. I guess it would just have to look it up once upon loading and then could keep it in Memory as a mesh attribute or variable of some sort?

    I guess for the moment, I can make do with storing it in meshes. It's a cache of sorts anyway and I don't need to wait before I learn to make my own cache stuff.
    It's probably not the most efficient method, but it fits my 'cardboard and sellotape' approach to making things and I can replace it later if needs be.

    I'll take a look at the alembic stuff next week. Thanks for your help.

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • JudahJudah Posts: 64

    I have not used the alembic IO capabilities yet (can't wait!), but we have a similar need and are planning to migrate our system to use alembic files. We store multiple skin weight channels per mesh, similar to uv sets, etc., but due to dcc limitations we save them to disk and load them on demand. It's less than ideal, leaving a lot of room for error. We have to be very careful about topology changes, for instance, due to the possibility of introducing indexing errors. At any rate, I'm looking forward to moving this responsibility to FE and alembic.

  • PoobyPooby Posts: 122

    Exocortex crate can write ICE attributes to Alembic files, so presumably these could be read in canvas?

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • Roy NieterauRoy Nieterau Posts: 258 ✭✭✭

    Exocortex crate can write ICE attributes to Alembic files, so presumably these could be read in canvas?

    It totally depends on "where it writes it to". If it writes it as data on the mesh (e.g. mesh attributes) then Alembic should be able to read it and Fabric Engine able to load it as well.

    I haven't delved much into the Alembic presets. If you can upload a simple Alembic cache made with that we could all have a look at retrieving the data in Canvas. As such we'd also be getting to a good example graph for anyone to use.

  • PoobyPooby Posts: 122
    edited February 2016

    Ok here is an Alembic File. It has a single mesh that has a simple animation of a blendshape blending in and out.

    It also has 2 ICE attributes stored in it. I have loaded it back into Softimage to check the attributes are there and working correctly and its all fine.

    One is a scalar called 'barb' (It was a weightmap)
    One is a vec3 called 'shapey' (It was a blendshape)

    It would be great if anyone can see if they can find these in Canvas. I have had a go, to not avail, but that's because I barely know how to look.

    https://dl.dropboxusercontent.com/u/8221942/CANVAS/testwithWeighmapandShape.abc

    EDIT>> Very exciting news, I'm sure you'll all agree. :) I found them (as below), so now I can bring in any attribute from SI via Alembic.

    [".geom/.selfBnds",".geom/P",".geom/.faceIndices",".geom/.faceCounts",".geom/.arbGeomParams/barb",".geom/.arbGeomParams/shapey"]

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • Roy NieterauRoy Nieterau Posts: 258 ✭✭✭

    That combind with a Canvas example graph would be greatly appreciated for newcomers lookiny for this. Good to hear this technique works. ;)

  • anhungxadieuanhungxadieu Posts: 108
    edited March 2016

    hi @Pooby ,
    How can you export ice attributes and store them into alembic file? i'm not yet do it before so i wonder how to do it.
    thank you!
    edit: Found it! :)

    Thụy Nguyễn
    CG Artist

  • Roy NieterauRoy Nieterau Posts: 258 ✭✭✭

    edit: Found it!

    I think it's a good idea to link where you found it or describe your solution to ensure others can also find it. :)

  • anhungxadieuanhungxadieu Posts: 108

    @Roy Nieterau said:

    edit: Found it!

    I think it's a good idea to link where you found it or describe your solution to ensure others can also find it. :)

    simply using "log values" node before you set that data in ice tree.

    Thụy Nguyễn
    CG Artist

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    Hey guys,

    I did the exercise. Attached is a graph which loads that file and display the two attributes.

    I hope this helps!

    Research Engineer @ Fabric Software

  • PoobyPooby Posts: 122

    Oh! that saves me the work. I was just about to do a video on it.. Which I may do anyway, now I'm in the zone

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • PoobyPooby Posts: 122
    edited March 2016

    and there it is.

    I would love to see a far easier way of bringing in Weights, skinning data, blend-shapes etc into Fabric.
    Although I understand that Fabric Wants to be DCC agnostic, its important to be able to bring data into it beyond meshes UVs and transforms.
    Most people wont want to be painting weights in Fabric, they'd want to do it in the package they are used to. In Softimage, this is relatively doable, because ICE allows you ways of opening doors, but with other DCC's I can imagine it being a brick wall.

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

Sign In or Register to comment.